From 49c7b7b63a4d7360c9a741879efae321fbc71124 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Mon, 23 Mar 2020 13:32:03 -0700 Subject: [PATCH 01/24] chto --- theory/.basics.c.swp | Bin 0 -> 28672 bytes theory/.covariances_real_binned.c.swo | Bin 0 -> 16384 bytes theory/.covariances_real_binned.c.swp | Bin 0 -> 16384 bytes theory/.halo.c.swn | Bin 0 -> 16384 bytes theory/.halo.c.swo | Bin 0 -> 16384 bytes theory/.halo.c.swp | Bin 0 -> 16384 bytes theory/.redshift_spline.c.swp | Bin 0 -> 77824 bytes theory/IA.c | 2 +- theory/cosmo2D_exact.c | 2 +- theory/halo.c | 1 + theory/redshift.c | 2 +- theory/redshift_spline.c | 3 +- theory/tags | 1948 +++++++++++++++++++++++++ 13 files changed, 1953 insertions(+), 5 deletions(-) create mode 100644 theory/.basics.c.swp create mode 100644 theory/.covariances_real_binned.c.swo create mode 100644 theory/.covariances_real_binned.c.swp create mode 100644 theory/.halo.c.swn create mode 100644 theory/.halo.c.swo create mode 100644 theory/.halo.c.swp create mode 100644 theory/.redshift_spline.c.swp create mode 100644 theory/tags diff --git a/theory/.basics.c.swp b/theory/.basics.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..112cb0d97cb5ce845f7989a3ce0fe61aac8310f2 GIT binary patch literal 28672 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 literal 0 HcmV?d00001 diff --git a/theory/.covariances_real_binned.c.swo b/theory/.covariances_real_binned.c.swo new file mode 100644 index 0000000000000000000000000000000000000000..113cb9e5d5676e8454a72c32f82609d9bb915744 GIT binary patch literal 16384 zcmeHOO^hQ)6>gT_{RxSJga`*zA!2d2du(^xyBpzga+pY~n9XF9WjBY>(Dc}4PqXE2 zr@KAlnc?S>1rCIO1P4GIBSJ1n2*eEuq(})u9QcWZlmjRWCk~u|01JGts@iUQJY?rE zlSS&*eD3aguc}^s{i?d^RnJE4+M|!L3zdd};~vBK_Ko@{fBgE*x#>YmG{h`e84MyA|FYEz0vbDzMs#x*R{rAQHiK?scM=SJO=%#XCsd^5eh{J3R4X z?h9`t2t(ejbQYCXq!kPl3>=PuyNtT))F{sbAHJWx@7}A2%U);~3=|9$3=|9$3=|9$ z3=|9$3=|CfUo(&n&lsOa3r^@(tmyOG=Fb1oM^~pmGAIAHmOri2Uzn5M((-{$zfV_? z)$=bczozA1n3Mlg%iCK1+MN6!TKuklTV4z^2V4z^2V4z^2V4z^2V4z^2V4z^2 zVBkm?@Uft$rLIK_S?vF>=vuyUw_%ilU%b~aeBk$Y8OD9UjWdSv4DiNj!-#+oc>R=N zTm?P>eCs5N0qzEN-eVYldbeTx5%>u3)pr@jbHG=CXMu--I`C281n`Gi-;Wi?nP8~U+7NScP0kK67< zI=0zX6m*%Tbmr@2nr2THjofnhT{tXu?`;OS^U`LaNsN z$8uOzqgrM1xD-W07H#pE;X9MmcWiZbSuco_)MgtTU#)P~i3Y<_8iaikvyhKdO2Q{7 zei}p}i+XsF-DET9r3{G)6~7v#TxyFby1q0TvebukN<;>K;I-7pj=cwrzIkOHraxGwSL`3O^!p4z+!{SSxmlsgx>(f1BPcaLQFW|6ji3!(aRVKV3OnJQJ3nV#}Y6%_bG4JxDCbL)) zpa)f~Tm~tsPV>la#YMvRX6vX`s8SMu|B`SYYEh-=Ju{X#QcEfj1sU<0~d`;O}1ONcNk8l5_#5M{JXNv`tEcYeiQ9B>z5|X}Tk<-0prX1{O!ro0-f2q#|4>1%g2b}A~F#D)2*ALdo z+|A8+boUc^4CWj#px~MAb1!({xu#adM-eIBIhdTM(%f@9=yEmm>lfiRUU=dWcG*(p3E)nXhx|JrXk(z>L!!m5U zGKtgDQe4stK5h2+$E7&k83vebPbSR?Zt$pJ8)<{56sC-@81CaA7v*9;BtwV|$@ZF4 zTPKs0wFvAFrlJcZkp{|;Ra579FrVy?r~2n60*B1c^v~y$^ZE`6CN=LmSq67D-EAsM z>$Ayqo!ppBZonQ*{VJHR*jYQBbsKb`MoLo-#99=j)Y>YB-X|)pQ0NouYjMJdphG}Q)NL$sG#V{K9tlr zCyPFhqG5wBJVaM$u@D^-jcCz^L`jcjaL2+Q0rQsRL3~({h_Ix4oIpCj@ z+zp+>RXNmH`M;{jGC0bn+o(bt71Fpgsn=O=5_i)C7YS74M5B%bGHR00SSL4w+py5F zL)Q-Lc1V3N>xAvL4Y#$)Q}N@{m5VF5Fghm&MtH2gz@t(ra1LDL%6PNwN7R1s%Owjk zAO<(LFImm)1z|)$glBdmsoxiDtmD=fr@GbrRuKl0YN?UEn&mbS8BU(a*d6uOMI>u7 PxT#>)9roHK#*F_0?yV>p literal 0 HcmV?d00001 diff --git a/theory/.covariances_real_binned.c.swp b/theory/.covariances_real_binned.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..2f839c4c62887a2268150a5522c6965e59da5375 GIT binary patch literal 16384 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 PxT#>)9roHK#*F_0_sJ)z literal 0 HcmV?d00001 diff --git a/theory/.halo.c.swn b/theory/.halo.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..d9b444a223c0e491eef5c296f671173fee383b7e GIT binary patch literal 16384 zcmeHN-K!)=6))qui7~5-f)ISEtP;9s`*u&yUE;>;4d}+*T;*OjyK4lKOUYkmI@8_b;WJy?^rQX-f^wFSU!8yB=9R~PoBiph_mOy36{`A9rJN1JwKN~D z`(?%QNg)%TC-w1BUs3{txJWoY%B)DmoJVmXc~H%GArFHYOA9|fKG4=!1}p>j#z0+7 z)-IkQ>!Wa}1bz72BlH9B|J=RFw4*HpmI2FvWxz6E8L$jk1}p=Xf&VK8s>NyYWoUd~ zt2JxC-*M#o&9>~f_2VP$|7zRww*L1=+TUo~=WYF!b^h{!;C%$(W#A>?ao{5G`u&9b4)`VTbKpC`w}Gp` z4zLZJ22KI5ohIZE*a!B2Yrsc_fNoM;IjP7*Rr=czssq2DwFAO-eD%*vK(@x#UHRki4p8P8U%s za%b*^V12MC_MLTqFfG%loJ3<@mOPDiL+8K^niULhdL!Qr9P%VS`PJ$ zk=Uw`#*qRCx++E8fs+MF#YQx9Pg1IFG+x>h4cowb;yOiG(pEp1iN?WGLpp`$c*#~(kv&yzt#IWeimGl^w8#G27)1GS z5Y(l}r}T!%=kPgRQG|z5oIXm&f|Ybq=W!*9yrlc0n$hPpb8z<2a7dNxTN!8hi#?lm z?6w3l7nAG>xMbRSA~;&5C~%${2C@76`pU8}hdGLELwBWkUys5?OHo$XIu0AET1xw5CVV1tq3EOtRRo|ZR2Fq5a$YK#kc3UB zq9vRS{-dHqsCxBkU+YvJ#V$hk1hy%3Eg3a}R>kUCI_6Ulu17Cqv4CiSiMkQyLMwE< zS~b&aMm@FCMi0D#n6CD2*R*+0MJ>Si|2Qg(TE=`y{04j}EsA-)p!(p^%#TC8yX&rW z%2IZK^(|%OICQFb#=BjYb#atOakl3wp{2+cDW_~)=ZW4s^%xZyt!0z}rm%Sv6kwrI zt(%WdWRc-8OUjv;R5(Y4JfvHe3lC&TC&bO7;1S9 zQZo*Sx6^JOE-y#R%k}QEr~XzHh9{F}2p<0D^5+*;rdnC&xE5)m9A%sq z@f-mh5abGV$!RqcW#^{|^(KGVdUm)L-rUtYMOGwYa;Q>@NNw8rWS=67giG%ia^7rL z=rG}ugAcP)Oa!(ck8*$NtF9uC(>g(nB!Z1~-iVE=lE|^(;~xFQl^r_aJQ=eX=H^xG z8$;J>K4a0nj$dq~>df zbM2Xo+8M%jIzt#DQAR@Cq*DE0)JjF&o_F*;W{{v5Gf0kXLv136d2JYz&9w|@KWL?Wa_NvOg3ZiIe3XMtV~n0V zt9|XQ+SE9e2bf{2!lBqiR5-n+y<|ZVqfb6{PU$^!8F(j7Wpp%Y-$?|SK5vs3sjbUU z*6e`oX{yxI3avdso4nIQ?5Nt6l;$}V9@)tUx*mQcEmBda{{P>`fBV+}_5UA#KXv(W zTlcD}x5YAG8L$jk1}p=X0n318z%pPNunbrRECZH-{}BVd=a1?Zkz5pM`y6)Mdr*t} b#VixJ#l`Sg8274}hZ;PmRL?3Y?q~iRZdo$? literal 0 HcmV?d00001 diff --git a/theory/.halo.c.swo b/theory/.halo.c.swo new file mode 100644 index 0000000000000000000000000000000000000000..e729c74fb5e31cd2545784df992fd5fb12df11a7 GIT binary patch literal 16384 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 T!njw(Jk;PhrFvFLaX<6lMtU%N literal 0 HcmV?d00001 diff --git a/theory/.redshift_spline.c.swp b/theory/.redshift_spline.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..3cf41f2b5c1b21593f4ceea470cd0742bed32c02 GIT binary patch literal 77824 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 literal 0 HcmV?d00001 diff --git a/theory/IA.c b/theory/IA.c index a3500266..15e26f0f 100644 --- a/theory/IA.c +++ b/theory/IA.c @@ -801,4 +801,4 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of if (isnan(f1)){f1 = 0.;} // printf("%le %d %d %le\n", l, ni, nj, f1); return f1; -} \ No newline at end of file +} diff --git a/theory/cosmo2D_exact.c b/theory/cosmo2D_exact.c index 777bc3e7..af74cadf 100644 --- a/theory/cosmo2D_exact.c +++ b/theory/cosmo2D_exact.c @@ -683,4 +683,4 @@ double w_gamma_t_nonLimber(int nt, int ni, int nj){ update_nuisance(&N); } return w_vec[N_ggl(ni,nj)*like.Ntheta+nt]; -} \ No newline at end of file +} diff --git a/theory/halo.c b/theory/halo.c index 017ec263..052a89fa 100644 --- a/theory/halo.c +++ b/theory/halo.c @@ -256,6 +256,7 @@ double bias_norm(double a) double massfunc(double m, double a){ return fnu_tinker(nu(m,a),a)*cosmology.rho_crit*cosmology.Omega_m/m/m*dlognudlogm(m); + } diff --git a/theory/redshift.c b/theory/redshift.c index 59c06d9f..48b06e7b 100644 --- a/theory/redshift.c +++ b/theory/redshift.c @@ -1102,4 +1102,4 @@ double p_zspec_clustering(double zs, double zp){ //p(z_{true} | z_{phot}) for l res = interpol2d(table_z,Ntable.N_zs, zmin, zmax,dz,zs,Ntable.N_zp, zmin, zmax,dz,zp,1.0,1.0)/dz; return res; } -*/ \ No newline at end of file +*/ diff --git a/theory/redshift_spline.c b/theory/redshift_spline.c index 5e9dd8c8..0b599699 100644 --- a/theory/redshift_spline.c +++ b/theory/redshift_spline.c @@ -633,7 +633,6 @@ double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned static int zbins = -1; static gsl_spline * photoz_splines[11]; static gsl_interp_accel * photoz_accel[11]; - if (redshift.clustering_photoz == -1){return n_of_z(zz,j);} if ((redshift.clustering_photoz != 4 && recompute_zphot_clustering(N)) || table==0){ update_nuisance(&N); @@ -1149,4 +1148,4 @@ double p_zspec_clustering(double zs, double zp){ //p(z_{true} | z_{phot}) for l res = interpol2d(table_z,Ntable.N_zs, zmin, zmax,dz,zs,Ntable.N_zp, zmin, zmax,dz,zp,1.0,1.0)/dz; return res; } -*/ \ No newline at end of file +*/ diff --git a/theory/tags b/theory/tags new file mode 100644 index 00000000..bd30ef3a --- /dev/null +++ b/theory/tags @@ -0,0 +1,1948 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +A2_ia structs.c /^ double A2_ia; \/\/placeholder param for quadratic,etc IA$/;" m struct:__anon21 file: +A2_ia structs.c /^ double A2_ia[2];$/;" m struct:__anon22 file: +AD_DESdepth baryons.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221},{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277},{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374},{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085},{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961},{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444},{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812},{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035},{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709},{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678},{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197},{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302},{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746},{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846},{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739},{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005},{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935},{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302},{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563},{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942},{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996},{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829},{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221},{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528},{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299},{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896},{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165},{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676},{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103},{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392},{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807},{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311},{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951},{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946},{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043},{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327},{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818},{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309},{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083},{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189},{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588},{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029},{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471},{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898},{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186},{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475},{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508},{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917},{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325},{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403},{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873},{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344},{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527},{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748},{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226},{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097},{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701},{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306},{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911},{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798},{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158},{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518},{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878},{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892},{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021},{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121},{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414},{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638},{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863},{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087},{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283},{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232},{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182},{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131},{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081},{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086},{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192},{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298},{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404},{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527},{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602},{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935},{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267},{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AD_DESdepth baryons2.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AD_LSSTdepth baryons2.h /^ static double AD_LSSTdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AGN_DESdepth baryons.h /^static double AGN_DESdepth[100][11]={{0.992103, 0.9913154, 0.9915626, 0.9922639, 0.9930532, 0.9940195, 0.9952336, 0.996125, 0.9969577, 0.9977286, 0.9984023},{0.9862238, 0.9850474, 0.9853872, 0.9867358, 0.9878644, 0.9892341, 0.9909417, 0.9926103, 0.9941552, 0.9954102, 0.9965004},{0.9792363, 0.9770282, 0.9774568, 0.9789421, 0.9809105, 0.983191, 0.9856612, 0.9879151, 0.9901159, 0.9921596, 0.9940022},{0.9707152, 0.9685157, 0.9688622, 0.9709949, 0.9730114, 0.9756282, 0.9788727, 0.9821772, 0.985299, 0.9879745, 0.9905162},{0.9633447, 0.9610002, 0.9606276, 0.9618652, 0.9639265, 0.966955, 0.9705846, 0.9745577, 0.9786747, 0.9827154, 0.9865062},{0.9559308, 0.9515092, 0.9505406, 0.952549, 0.9552053, 0.9587884, 0.9634037, 0.9684815, 0.9732076, 0.9779229, 0.9824552},{0.9486312, 0.9431001, 0.9412192, 0.9426963, 0.9455684, 0.9491253, 0.9541202, 0.9598931, 0.9660997, 0.9723172, 0.9779563},{0.9419175, 0.9360152, 0.9323581, 0.9332932, 0.9355892, 0.9399028, 0.9456136, 0.9520271, 0.9587386, 0.9656153, 0.972368},{0.9348555, 0.9273062, 0.9227023, 0.9231835, 0.9255543, 0.9297719, 0.9359059, 0.9430856, 0.9508999, 0.9587439, 0.9662732},{0.9270361, 0.9181366, 0.9130682, 0.9132722, 0.9150848, 0.91956, 0.9268135, 0.9342387, 0.9425517, 0.9513753, 0.9604644},{0.9202743, 0.9105997, 0.9037077, 0.903495, 0.9054413, 0.9102093, 0.9167847, 0.9247303, 0.9339236, 0.9435545, 0.9536671},{0.9164651, 0.9040356, 0.8962363, 0.8956205, 0.8982074, 0.9032825, 0.909182, 0.9167981, 0.9260476, 0.9365776, 0.947747},{0.9126702, 0.8978611, 0.8888007, 0.8873102, 0.8894997, 0.8938567, 0.9001338, 0.9087315, 0.9187546, 0.9299116, 0.9417343},{0.9067148, 0.8919746, 0.8813962, 0.8794718, 0.8815581, 0.8857945, 0.8923543, 0.9008221, 0.9111027, 0.9228682, 0.9355676},{0.9019037, 0.8856563, 0.8746283, 0.8726379, 0.8737598, 0.8783998, 0.8843163, 0.8928539, 0.902889, 0.9150131, 0.9286834},{0.8965476, 0.8790511, 0.8673356, 0.8658841, 0.8682718, 0.8722875, 0.8774977, 0.8856364, 0.8964559, 0.9093034, 0.9231976},{0.8890194, 0.8722973, 0.8608868, 0.8589226, 0.8605992, 0.864958, 0.8695043, 0.8775554, 0.8882644, 0.9013454, 0.9162898},{0.8856219, 0.8671239, 0.8554035, 0.8524618, 0.8535533, 0.8579717, 0.8632652, 0.8719683, 0.883448, 0.8968232, 0.9114673},{0.8796482, 0.8616644, 0.8490595, 0.8467956, 0.8484921, 0.8533917, 0.8578507, 0.8660102, 0.8770641, 0.890088, 0.905349},{0.8759122, 0.8578012, 0.8451617, 0.8424477, 0.8427965, 0.8469436, 0.8521275, 0.8606221, 0.8720776, 0.884719, 0.9002302},{0.8704401, 0.8528132, 0.8403681, 0.8366071, 0.8362363, 0.8407242, 0.8460477, 0.8542618, 0.8652815, 0.8786939, 0.8947763},{0.8668882, 0.8474592, 0.8336503, 0.8299787, 0.8307142, 0.8364935, 0.8408385, 0.8486727, 0.8597475, 0.8735452, 0.8902304},{0.8614488, 0.8419818, 0.8279147, 0.8251514, 0.8262472, 0.8315138, 0.8359218, 0.8438909, 0.8549789, 0.8688528, 0.885747},{0.8564946, 0.8364185, 0.8218321, 0.8181942, 0.8200708, 0.8267527, 0.8310587, 0.8389525, 0.8502277, 0.8645266, 0.8815253},{0.8517035, 0.8313884, 0.8172998, 0.8145006, 0.8162872, 0.8233551, 0.8269491, 0.8350095, 0.8464587, 0.8606221, 0.8781826},{0.8494936, 0.8277909, 0.8125864, 0.8092104, 0.8123598, 0.8198974, 0.8229253, 0.8303979, 0.8418359, 0.8561623, 0.8739197},{0.8472725, 0.8233794, 0.8078375, 0.8060666, 0.8089754, 0.8162133, 0.818981, 0.8267332, 0.8388539, 0.8532659, 0.8708769},{0.8424161, 0.8197662, 0.802678, 0.8012019, 0.8050023, 0.8124111, 0.8152152, 0.8233457, 0.8355499, 0.8499477, 0.8681233},{0.8375437, 0.8143921, 0.7962712, 0.7966803, 0.8008442, 0.8084622, 0.8111975, 0.8189556, 0.8312869, 0.8459359, 0.8646289},{0.8348242, 0.8103635, 0.7929938, 0.7930845, 0.7963522, 0.8037351, 0.8072678, 0.8162014, 0.828802, 0.8434311, 0.862133},{0.8286013, 0.8063152, 0.7885883, 0.7885846, 0.7932479, 0.8021005, 0.8045482, 0.8124703, 0.8243256, 0.8397015, 0.8587101},{0.8248232, 0.8014088, 0.785549, 0.7856843, 0.7891623, 0.7990361, 0.801158, 0.8096831, 0.8222979, 0.8371266, 0.8558873},{0.8209558, 0.796842, 0.7822403, 0.7826428, 0.7865069, 0.7966847, 0.7984103, 0.8065706, 0.8194765, 0.8344036, 0.8533596},{0.8177785, 0.7933885, 0.7788667, 0.7795009, 0.7835101, 0.7930686, 0.7952267, 0.8038326, 0.8165379, 0.8313252, 0.8510627},{0.8144434, 0.7892754, 0.7754078, 0.7766766, 0.7804556, 0.788873, 0.7912937, 0.8004868, 0.8138579, 0.8289941, 0.8487277},{0.8113398, 0.7869947, 0.7706193, 0.7730418, 0.7772954, 0.7871535, 0.7903659, 0.7994615, 0.8117925, 0.8263522, 0.8466529},{0.807519, 0.7831047, 0.7689179, 0.7710145, 0.7739416, 0.7840354, 0.7873904, 0.7966763, 0.8097768, 0.8250775, 0.8453153},{0.8056178, 0.7786786, 0.7658294, 0.7683137, 0.7715711, 0.7821307, 0.7854527, 0.7936346, 0.8064268, 0.8226429, 0.8433393},{0.7997935, 0.7768335, 0.7640092, 0.7653897, 0.7686835, 0.7800769, 0.7829013, 0.7919811, 0.8052452, 0.8213145, 0.8417179},{0.7978049, 0.7746143, 0.7606913, 0.7625051, 0.7663874, 0.7780121, 0.7810024, 0.7898876, 0.8030174, 0.8195098, 0.8417193},{0.7947118, 0.7687285, 0.7586973, 0.759595, 0.7641244, 0.7755724, 0.7786703, 0.7876487, 0.8015071, 0.8176121, 0.8386624},{0.7915449, 0.7670919, 0.7569037, 0.7576914, 0.7619174, 0.7731261, 0.7764614, 0.786256, 0.7998805, 0.815803, 0.8362512},{0.7890908, 0.7649145, 0.7554956, 0.7558376, 0.7598519, 0.77084, 0.7748926, 0.7850591, 0.7986741, 0.8149169, 0.8356906},{0.7890914, 0.76202, 0.7539136, 0.7541925, 0.7581733, 0.7688089, 0.7730263, 0.7825859, 0.7961853, 0.8130518, 0.835144},{0.7865675, 0.7575497, 0.7497242, 0.7505677, 0.7554975, 0.7668301, 0.770356, 0.780213, 0.7952075, 0.8120938, 0.8334754},{0.7839286, 0.7542888, 0.7480873, 0.7489287, 0.7527054, 0.764901, 0.7686272, 0.7799228, 0.7945027, 0.8108957, 0.8313088},{0.7824809, 0.7539448, 0.7472213, 0.7468243, 0.7505585, 0.7636022, 0.7685201, 0.7789709, 0.7935072, 0.8090096, 0.829386},{0.7829211, 0.7518782, 0.7458011, 0.7455432, 0.7496429, 0.7633628, 0.7669682, 0.7778496, 0.7918508, 0.8070426, 0.8284923},{0.7776697, 0.7490035, 0.7422249, 0.7451797, 0.7491711, 0.7608673, 0.7648584, 0.7763446, 0.790862, 0.8062019, 0.8278689},{0.7755579, 0.74684, 0.7431664, 0.744137, 0.746392, 0.7605642, 0.7644526, 0.7755978, 0.7892497, 0.8068219, 0.8273529},{0.7740814, 0.7456813, 0.7423201, 0.7421699, 0.7458754, 0.7600856, 0.7637112, 0.7742457, 0.7886106, 0.8051402, 0.8255958},{0.771745, 0.7440503, 0.7408428, 0.7415382, 0.7453227, 0.7589181, 0.7629456, 0.7725004, 0.7862547, 0.802367, 0.823545},{0.7675026, 0.7414568, 0.7402434, 0.7399565, 0.7433241, 0.7585701, 0.7607065, 0.7708857, 0.78529, 0.8023917, 0.8257661},{0.7662192, 0.740942, 0.738118, 0.7385428, 0.7426277, 0.7567146, 0.7605203, 0.7709485, 0.7841347, 0.8021351, 0.8244602},{0.7644159, 0.7410005, 0.7369835, 0.7365558, 0.7401214, 0.7553578, 0.7599978, 0.769746, 0.7842573, 0.8013556, 0.823512},{0.762325, 0.7370022, 0.7358676, 0.7346996, 0.7390625, 0.7542048, 0.7584185, 0.7689477, 0.7835215, 0.8006974, 0.8227227},{0.7605017, 0.7364016, 0.7353092, 0.7348365, 0.739568, 0.75281, 0.7568411, 0.7679746, 0.7825285, 0.7998919, 0.8215617},{0.7586617, 0.7365576, 0.7341471, 0.733297, 0.7385529, 0.7512736, 0.7564789, 0.7672942, 0.7814329, 0.7996141, 0.8206204},{0.7562932, 0.7330796, 0.7325298, 0.7334416, 0.7363112, 0.752183, 0.7569259, 0.766543, 0.7803103, 0.7986286, 0.8210313},{0.7537873, 0.7318043, 0.730541, 0.730761, 0.7355258, 0.7519558, 0.7556298, 0.7644722, 0.7808563, 0.7986674, 0.8213783},{0.751818, 0.7278625, 0.7277702, 0.7297412, 0.7344508, 0.7504618, 0.7538077, 0.7653258, 0.7805655, 0.7984146, 0.8210293},{0.7517044, 0.7303698, 0.7265828, 0.7300685, 0.7337712, 0.75063, 0.7535152, 0.7636599, 0.7784462, 0.7971492, 0.8196614},{0.75117, 0.7301836, 0.7264508, 0.7284014, 0.7333695, 0.7506761, 0.7539025, 0.7642217, 0.7794234, 0.7974139, 0.8193373},{0.7483676, 0.7266786, 0.726667, 0.7279004, 0.7323516, 0.7492683, 0.753254, 0.7642838, 0.7792401, 0.7980284, 0.8192106},{0.7453453, 0.7236045, 0.7263393, 0.7265321, 0.7313968, 0.7479281, 0.7530313, 0.764057, 0.7793401, 0.7980859, 0.8192614},{0.7439653, 0.7246663, 0.7246985, 0.7257892, 0.7313767, 0.7481055, 0.7530295, 0.7636337, 0.7790518, 0.7975254, 0.8193703},{0.7430467, 0.7248894, 0.7220381, 0.7259672, 0.7317682, 0.7502191, 0.7527763, 0.763901, 0.7798862, 0.7961389, 0.8181297},{0.7396655, 0.7232718, 0.7207239, 0.7259052, 0.7293076, 0.7484538, 0.7517135, 0.7634533, 0.7775074, 0.7963108, 0.8178092},{0.7378971, 0.7222773, 0.7203909, 0.7251162, 0.7279422, 0.7468789, 0.7511565, 0.7616375, 0.7776177, 0.7968149, 0.8186243},{0.737942, 0.7202095, 0.7206607, 0.7248869, 0.727697, 0.7467675, 0.7506631, 0.7620319, 0.7776337, 0.7973161, 0.8198154},{0.7374793, 0.719663, 0.7207927, 0.7243456, 0.7281426, 0.7483357, 0.7520627, 0.7618034, 0.7767373, 0.7965735, 0.8196977},{0.7364797, 0.7190809, 0.7188082, 0.7228311, 0.7271766, 0.7481299, 0.7514607, 0.7617219, 0.7777109, 0.7962466, 0.8202257},{0.7358845, 0.7195911, 0.7186004, 0.7219239, 0.7272756, 0.7475118, 0.7512696, 0.7622466, 0.7767385, 0.7969144, 0.8196465},{0.7351944, 0.7187974, 0.7180904, 0.7221018, 0.7278409, 0.7472084, 0.7515757, 0.7608282, 0.7772994, 0.7969976, 0.8190575},{0.7341961, 0.7194245, 0.7173818, 0.7229347, 0.728861, 0.7475807, 0.749999, 0.7613777, 0.7779086, 0.7973539, 0.8192867},{0.7344137, 0.7184855, 0.7168505, 0.7225095, 0.7274305, 0.7475504, 0.7508772, 0.7619759, 0.7780751, 0.7975239, 0.8194472},{0.7348019, 0.7168246, 0.7158289, 0.7203214, 0.7260921, 0.7481479, 0.7511988, 0.7618306, 0.7777631, 0.7963419, 0.8189715},{0.7324423, 0.7160381, 0.7148255, 0.7201405, 0.7265632, 0.748213, 0.7512776, 0.7624254, 0.7775287, 0.7964367, 0.8188323},{0.7293718, 0.7150998, 0.7147379, 0.7205559, 0.7269969, 0.7476776, 0.7518458, 0.7626526, 0.7779854, 0.7968671, 0.8188174},{0.7305337, 0.7158097, 0.7146396, 0.720124, 0.7266174, 0.7469717, 0.7516402, 0.762356, 0.7776841, 0.7966816, 0.8181076},{0.73042, 0.711363, 0.7154516, 0.7198612, 0.7265148, 0.7454599, 0.7509768, 0.7631707, 0.7784504, 0.7957061, 0.818103},{0.7302812, 0.7123786, 0.7162812, 0.7197211, 0.7264223, 0.7439709, 0.7517824, 0.7639198, 0.7785918, 0.7947309, 0.8181126},{0.7293467, 0.7129372, 0.7160781, 0.7196894, 0.7244375, 0.7431136, 0.7522369, 0.7627652, 0.7789955, 0.795407, 0.8189252},{0.7273127, 0.7121906, 0.7156612, 0.7196001, 0.7209297, 0.7431073, 0.7496705, 0.7611526, 0.7808535, 0.796889, 0.8208336},{0.7253215, 0.7110182, 0.7154043, 0.7173358, 0.7187643, 0.7431012, 0.7469224, 0.7628734, 0.7822713, 0.7984409, 0.822686},{0.7243835, 0.7119322, 0.7148134, 0.7176543, 0.7214922, 0.7442718, 0.7482244, 0.7659066, 0.7816321, 0.7994681, 0.8223942},{0.7236563, 0.7114738, 0.7141202, 0.7189519, 0.7246713, 0.745609, 0.7508358, 0.7659929, 0.7812308, 0.8003505, 0.8217469},{0.7228474, 0.7099551, 0.7142246, 0.7203062, 0.7256532, 0.7464872, 0.7526294, 0.7656249, 0.7817272, 0.8001916, 0.8212968},{0.7217921, 0.7072247, 0.7138733, 0.7190738, 0.7245798, 0.7463045, 0.7528913, 0.7656991, 0.7813182, 0.7994181, 0.8212998},{0.7207651, 0.7058379, 0.7134008, 0.7181745, 0.7237527, 0.7461244, 0.7533012, 0.7654463, 0.7809283, 0.7988636, 0.8213025},{0.720137, 0.7058291, 0.7119641, 0.7203029, 0.7239949, 0.7471785, 0.7541694, 0.7646265, 0.7809994, 0.8003384, 0.8223932},{0.7196614, 0.7060545, 0.7103372, 0.7229944, 0.7243321, 0.7486889, 0.7533396, 0.7646284, 0.7814868, 0.8023408, 0.8238794},{0.7192988, 0.7058209, 0.7113554, 0.7229122, 0.7250871, 0.749918, 0.7525965, 0.7651071, 0.7828432, 0.8036629, 0.825114},{0.7195365, 0.704087, 0.7129947, 0.7209238, 0.7248584, 0.7497515, 0.7529109, 0.7656398, 0.7827802, 0.8033529, 0.825138},{0.7197688, 0.704418, 0.7142926, 0.7200552, 0.7246745, 0.7495907, 0.7535406, 0.765686, 0.7828193, 0.803108, 0.8251618},{0.7198048, 0.7069278, 0.7134478, 0.7191617, 0.7235878, 0.7488035, 0.7530055, 0.7659106, 0.7835008, 0.8037166, 0.8255925},{0.7197065, 0.7090744, 0.7130744, 0.7177888, 0.721659, 0.7475887, 0.7533673, 0.7666312, 0.7845605, 0.8045855, 0.8262998},{0.719567, 0.7096464, 0.7124155, 0.7164912, 0.7203929, 0.7464268, 0.7537257, 0.7675817, 0.7853767, 0.8053209, 0.8269853},{0.7176328, 0.7050845, 0.7126353, 0.7182245, 0.7205632, 0.7467906, 0.7535209, 0.7664387, 0.7861449, 0.8047596, 0.8272283},{0.715719, 0.7051204, 0.7128493, 0.7191758, 0.7207285, 0.7471498, 0.7527435, 0.7671566, 0.7864195, 0.8042135, 0.8274643}};$/;" v +AGN_DESdepth baryons2.h /^ static double AGN_DESdepth[100][11]={{0.992103, 0.9913154, 0.9915626, 0.9922639, 0.9930532, 0.9940195, 0.9952336, 0.996125, 0.9969577, 0.9977286, 0.9984023}{0.9862238, 0.9850474, 0.9853872, 0.9867358, 0.9878644, 0.9892341, 0.9909417, 0.9926103, 0.9941552, 0.9954102, 0.9965004}{0.9792363, 0.9770282, 0.9774568, 0.9789421, 0.9809105, 0.983191, 0.9856612, 0.9879151, 0.9901159, 0.9921596, 0.9940022}{0.9707152, 0.9685157, 0.9688622, 0.9709949, 0.9730114, 0.9756282, 0.9788727, 0.9821772, 0.985299, 0.9879745, 0.9905162}{0.9633447, 0.9610002, 0.9606276, 0.9618652, 0.9639265, 0.966955, 0.9705846, 0.9745577, 0.9786747, 0.9827154, 0.9865062}{0.9559308, 0.9515092, 0.9505406, 0.952549, 0.9552053, 0.9587884, 0.9634037, 0.9684815, 0.9732076, 0.9779229, 0.9824552}{0.9486312, 0.9431001, 0.9412192, 0.9426963, 0.9455684, 0.9491253, 0.9541202, 0.9598931, 0.9660997, 0.9723172, 0.9779563}{0.9419175, 0.9360152, 0.9323581, 0.9332932, 0.9355892, 0.9399028, 0.9456136, 0.9520271, 0.9587386, 0.9656153, 0.972368}{0.9348555, 0.9273062, 0.9227023, 0.9231835, 0.9255543, 0.9297719, 0.9359059, 0.9430856, 0.9508999, 0.9587439, 0.9662732}{0.9270361, 0.9181366, 0.9130682, 0.9132722, 0.9150848, 0.91956, 0.9268135, 0.9342387, 0.9425517, 0.9513753, 0.9604644}{0.9202743, 0.9105997, 0.9037077, 0.903495, 0.9054413, 0.9102093, 0.9167847, 0.9247303, 0.9339236, 0.9435545, 0.9536671}{0.9164651, 0.9040356, 0.8962363, 0.8956205, 0.8982074, 0.9032825, 0.909182, 0.9167981, 0.9260476, 0.9365776, 0.947747}{0.9126702, 0.8978611, 0.8888007, 0.8873102, 0.8894997, 0.8938567, 0.9001338, 0.9087315, 0.9187546, 0.9299116, 0.9417343}{0.9067148, 0.8919746, 0.8813962, 0.8794718, 0.8815581, 0.8857945, 0.8923543, 0.9008221, 0.9111027, 0.9228682, 0.9355676}{0.9019037, 0.8856563, 0.8746283, 0.8726379, 0.8737598, 0.8783998, 0.8843163, 0.8928539, 0.902889, 0.9150131, 0.9286834}{0.8965476, 0.8790511, 0.8673356, 0.8658841, 0.8682718, 0.8722875, 0.8774977, 0.8856364, 0.8964559, 0.9093034, 0.9231976}{0.8890194, 0.8722973, 0.8608868, 0.8589226, 0.8605992, 0.864958, 0.8695043, 0.8775554, 0.8882644, 0.9013454, 0.9162898}{0.8856219, 0.8671239, 0.8554035, 0.8524618, 0.8535533, 0.8579717, 0.8632652, 0.8719683, 0.883448, 0.8968232, 0.9114673}{0.8796482, 0.8616644, 0.8490595, 0.8467956, 0.8484921, 0.8533917, 0.8578507, 0.8660102, 0.8770641, 0.890088, 0.905349}{0.8759122, 0.8578012, 0.8451617, 0.8424477, 0.8427965, 0.8469436, 0.8521275, 0.8606221, 0.8720776, 0.884719, 0.9002302}{0.8704401, 0.8528132, 0.8403681, 0.8366071, 0.8362363, 0.8407242, 0.8460477, 0.8542618, 0.8652815, 0.8786939, 0.8947763}{0.8668882, 0.8474592, 0.8336503, 0.8299787, 0.8307142, 0.8364935, 0.8408385, 0.8486727, 0.8597475, 0.8735452, 0.8902304}{0.8614488, 0.8419818, 0.8279147, 0.8251514, 0.8262472, 0.8315138, 0.8359218, 0.8438909, 0.8549789, 0.8688528, 0.885747}{0.8564946, 0.8364185, 0.8218321, 0.8181942, 0.8200708, 0.8267527, 0.8310587, 0.8389525, 0.8502277, 0.8645266, 0.8815253}{0.8517035, 0.8313884, 0.8172998, 0.8145006, 0.8162872, 0.8233551, 0.8269491, 0.8350095, 0.8464587, 0.8606221, 0.8781826}{0.8494936, 0.8277909, 0.8125864, 0.8092104, 0.8123598, 0.8198974, 0.8229253, 0.8303979, 0.8418359, 0.8561623, 0.8739197}{0.8472725, 0.8233794, 0.8078375, 0.8060666, 0.8089754, 0.8162133, 0.818981, 0.8267332, 0.8388539, 0.8532659, 0.8708769}{0.8424161, 0.8197662, 0.802678, 0.8012019, 0.8050023, 0.8124111, 0.8152152, 0.8233457, 0.8355499, 0.8499477, 0.8681233}{0.8375437, 0.8143921, 0.7962712, 0.7966803, 0.8008442, 0.8084622, 0.8111975, 0.8189556, 0.8312869, 0.8459359, 0.8646289}{0.8348242, 0.8103635, 0.7929938, 0.7930845, 0.7963522, 0.8037351, 0.8072678, 0.8162014, 0.828802, 0.8434311, 0.862133}{0.8286013, 0.8063152, 0.7885883, 0.7885846, 0.7932479, 0.8021005, 0.8045482, 0.8124703, 0.8243256, 0.8397015, 0.8587101}{0.8248232, 0.8014088, 0.785549, 0.7856843, 0.7891623, 0.7990361, 0.801158, 0.8096831, 0.8222979, 0.8371266, 0.8558873}{0.8209558, 0.796842, 0.7822403, 0.7826428, 0.7865069, 0.7966847, 0.7984103, 0.8065706, 0.8194765, 0.8344036, 0.8533596}{0.8177785, 0.7933885, 0.7788667, 0.7795009, 0.7835101, 0.7930686, 0.7952267, 0.8038326, 0.8165379, 0.8313252, 0.8510627}{0.8144434, 0.7892754, 0.7754078, 0.7766766, 0.7804556, 0.788873, 0.7912937, 0.8004868, 0.8138579, 0.8289941, 0.8487277}{0.8113398, 0.7869947, 0.7706193, 0.7730418, 0.7772954, 0.7871535, 0.7903659, 0.7994615, 0.8117925, 0.8263522, 0.8466529}{0.807519, 0.7831047, 0.7689179, 0.7710145, 0.7739416, 0.7840354, 0.7873904, 0.7966763, 0.8097768, 0.8250775, 0.8453153}{0.8056178, 0.7786786, 0.7658294, 0.7683137, 0.7715711, 0.7821307, 0.7854527, 0.7936346, 0.8064268, 0.8226429, 0.8433393}{0.7997935, 0.7768335, 0.7640092, 0.7653897, 0.7686835, 0.7800769, 0.7829013, 0.7919811, 0.8052452, 0.8213145, 0.8417179}{0.7978049, 0.7746143, 0.7606913, 0.7625051, 0.7663874, 0.7780121, 0.7810024, 0.7898876, 0.8030174, 0.8195098, 0.8417193}{0.7947118, 0.7687285, 0.7586973, 0.759595, 0.7641244, 0.7755724, 0.7786703, 0.7876487, 0.8015071, 0.8176121, 0.8386624}{0.7915449, 0.7670919, 0.7569037, 0.7576914, 0.7619174, 0.7731261, 0.7764614, 0.786256, 0.7998805, 0.815803, 0.8362512}{0.7890908, 0.7649145, 0.7554956, 0.7558376, 0.7598519, 0.77084, 0.7748926, 0.7850591, 0.7986741, 0.8149169, 0.8356906}{0.7890914, 0.76202, 0.7539136, 0.7541925, 0.7581733, 0.7688089, 0.7730263, 0.7825859, 0.7961853, 0.8130518, 0.835144}{0.7865675, 0.7575497, 0.7497242, 0.7505677, 0.7554975, 0.7668301, 0.770356, 0.780213, 0.7952075, 0.8120938, 0.8334754}{0.7839286, 0.7542888, 0.7480873, 0.7489287, 0.7527054, 0.764901, 0.7686272, 0.7799228, 0.7945027, 0.8108957, 0.8313088}{0.7824809, 0.7539448, 0.7472213, 0.7468243, 0.7505585, 0.7636022, 0.7685201, 0.7789709, 0.7935072, 0.8090096, 0.829386}{0.7829211, 0.7518782, 0.7458011, 0.7455432, 0.7496429, 0.7633628, 0.7669682, 0.7778496, 0.7918508, 0.8070426, 0.8284923}{0.7776697, 0.7490035, 0.7422249, 0.7451797, 0.7491711, 0.7608673, 0.7648584, 0.7763446, 0.790862, 0.8062019, 0.8278689}{0.7755579, 0.74684, 0.7431664, 0.744137, 0.746392, 0.7605642, 0.7644526, 0.7755978, 0.7892497, 0.8068219, 0.8273529}{0.7740814, 0.7456813, 0.7423201, 0.7421699, 0.7458754, 0.7600856, 0.7637112, 0.7742457, 0.7886106, 0.8051402, 0.8255958}{0.771745, 0.7440503, 0.7408428, 0.7415382, 0.7453227, 0.7589181, 0.7629456, 0.7725004, 0.7862547, 0.802367, 0.823545}{0.7675026, 0.7414568, 0.7402434, 0.7399565, 0.7433241, 0.7585701, 0.7607065, 0.7708857, 0.78529, 0.8023917, 0.8257661}{0.7662192, 0.740942, 0.738118, 0.7385428, 0.7426277, 0.7567146, 0.7605203, 0.7709485, 0.7841347, 0.8021351, 0.8244602}{0.7644159, 0.7410005, 0.7369835, 0.7365558, 0.7401214, 0.7553578, 0.7599978, 0.769746, 0.7842573, 0.8013556, 0.823512}{0.762325, 0.7370022, 0.7358676, 0.7346996, 0.7390625, 0.7542048, 0.7584185, 0.7689477, 0.7835215, 0.8006974, 0.8227227}{0.7605017, 0.7364016, 0.7353092, 0.7348365, 0.739568, 0.75281, 0.7568411, 0.7679746, 0.7825285, 0.7998919, 0.8215617}{0.7586617, 0.7365576, 0.7341471, 0.733297, 0.7385529, 0.7512736, 0.7564789, 0.7672942, 0.7814329, 0.7996141, 0.8206204}{0.7562932, 0.7330796, 0.7325298, 0.7334416, 0.7363112, 0.752183, 0.7569259, 0.766543, 0.7803103, 0.7986286, 0.8210313}{0.7537873, 0.7318043, 0.730541, 0.730761, 0.7355258, 0.7519558, 0.7556298, 0.7644722, 0.7808563, 0.7986674, 0.8213783}{0.751818, 0.7278625, 0.7277702, 0.7297412, 0.7344508, 0.7504618, 0.7538077, 0.7653258, 0.7805655, 0.7984146, 0.8210293}{0.7517044, 0.7303698, 0.7265828, 0.7300685, 0.7337712, 0.75063, 0.7535152, 0.7636599, 0.7784462, 0.7971492, 0.8196614}{0.75117, 0.7301836, 0.7264508, 0.7284014, 0.7333695, 0.7506761, 0.7539025, 0.7642217, 0.7794234, 0.7974139, 0.8193373}{0.7483676, 0.7266786, 0.726667, 0.7279004, 0.7323516, 0.7492683, 0.753254, 0.7642838, 0.7792401, 0.7980284, 0.8192106}{0.7453453, 0.7236045, 0.7263393, 0.7265321, 0.7313968, 0.7479281, 0.7530313, 0.764057, 0.7793401, 0.7980859, 0.8192614}{0.7439653, 0.7246663, 0.7246985, 0.7257892, 0.7313767, 0.7481055, 0.7530295, 0.7636337, 0.7790518, 0.7975254, 0.8193703}{0.7430467, 0.7248894, 0.7220381, 0.7259672, 0.7317682, 0.7502191, 0.7527763, 0.763901, 0.7798862, 0.7961389, 0.8181297}{0.7396655, 0.7232718, 0.7207239, 0.7259052, 0.7293076, 0.7484538, 0.7517135, 0.7634533, 0.7775074, 0.7963108, 0.8178092}{0.7378971, 0.7222773, 0.7203909, 0.7251162, 0.7279422, 0.7468789, 0.7511565, 0.7616375, 0.7776177, 0.7968149, 0.8186243}{0.737942, 0.7202095, 0.7206607, 0.7248869, 0.727697, 0.7467675, 0.7506631, 0.7620319, 0.7776337, 0.7973161, 0.8198154}{0.7374793, 0.719663, 0.7207927, 0.7243456, 0.7281426, 0.7483357, 0.7520627, 0.7618034, 0.7767373, 0.7965735, 0.8196977}{0.7364797, 0.7190809, 0.7188082, 0.7228311, 0.7271766, 0.7481299, 0.7514607, 0.7617219, 0.7777109, 0.7962466, 0.8202257}{0.7358845, 0.7195911, 0.7186004, 0.7219239, 0.7272756, 0.7475118, 0.7512696, 0.7622466, 0.7767385, 0.7969144, 0.8196465}{0.7351944, 0.7187974, 0.7180904, 0.7221018, 0.7278409, 0.7472084, 0.7515757, 0.7608282, 0.7772994, 0.7969976, 0.8190575}{0.7341961, 0.7194245, 0.7173818, 0.7229347, 0.728861, 0.7475807, 0.749999, 0.7613777, 0.7779086, 0.7973539, 0.8192867}{0.7344137, 0.7184855, 0.7168505, 0.7225095, 0.7274305, 0.7475504, 0.7508772, 0.7619759, 0.7780751, 0.7975239, 0.8194472}{0.7348019, 0.7168246, 0.7158289, 0.7203214, 0.7260921, 0.7481479, 0.7511988, 0.7618306, 0.7777631, 0.7963419, 0.8189715}{0.7324423, 0.7160381, 0.7148255, 0.7201405, 0.7265632, 0.748213, 0.7512776, 0.7624254, 0.7775287, 0.7964367, 0.8188323}{0.7293718, 0.7150998, 0.7147379, 0.7205559, 0.7269969, 0.7476776, 0.7518458, 0.7626526, 0.7779854, 0.7968671, 0.8188174}{0.7305337, 0.7158097, 0.7146396, 0.720124, 0.7266174, 0.7469717, 0.7516402, 0.762356, 0.7776841, 0.7966816, 0.8181076}{0.73042, 0.711363, 0.7154516, 0.7198612, 0.7265148, 0.7454599, 0.7509768, 0.7631707, 0.7784504, 0.7957061, 0.818103}{0.7302812, 0.7123786, 0.7162812, 0.7197211, 0.7264223, 0.7439709, 0.7517824, 0.7639198, 0.7785918, 0.7947309, 0.8181126}{0.7293467, 0.7129372, 0.7160781, 0.7196894, 0.7244375, 0.7431136, 0.7522369, 0.7627652, 0.7789955, 0.795407, 0.8189252}{0.7273127, 0.7121906, 0.7156612, 0.7196001, 0.7209297, 0.7431073, 0.7496705, 0.7611526, 0.7808535, 0.796889, 0.8208336}{0.7253215, 0.7110182, 0.7154043, 0.7173358, 0.7187643, 0.7431012, 0.7469224, 0.7628734, 0.7822713, 0.7984409, 0.822686}{0.7243835, 0.7119322, 0.7148134, 0.7176543, 0.7214922, 0.7442718, 0.7482244, 0.7659066, 0.7816321, 0.7994681, 0.8223942}{0.7236563, 0.7114738, 0.7141202, 0.7189519, 0.7246713, 0.745609, 0.7508358, 0.7659929, 0.7812308, 0.8003505, 0.8217469}{0.7228474, 0.7099551, 0.7142246, 0.7203062, 0.7256532, 0.7464872, 0.7526294, 0.7656249, 0.7817272, 0.8001916, 0.8212968}{0.7217921, 0.7072247, 0.7138733, 0.7190738, 0.7245798, 0.7463045, 0.7528913, 0.7656991, 0.7813182, 0.7994181, 0.8212998}{0.7207651, 0.7058379, 0.7134008, 0.7181745, 0.7237527, 0.7461244, 0.7533012, 0.7654463, 0.7809283, 0.7988636, 0.8213025}{0.720137, 0.7058291, 0.7119641, 0.7203029, 0.7239949, 0.7471785, 0.7541694, 0.7646265, 0.7809994, 0.8003384, 0.8223932}{0.7196614, 0.7060545, 0.7103372, 0.7229944, 0.7243321, 0.7486889, 0.7533396, 0.7646284, 0.7814868, 0.8023408, 0.8238794}{0.7192988, 0.7058209, 0.7113554, 0.7229122, 0.7250871, 0.749918, 0.7525965, 0.7651071, 0.7828432, 0.8036629, 0.825114}{0.7195365, 0.704087, 0.7129947, 0.7209238, 0.7248584, 0.7497515, 0.7529109, 0.7656398, 0.7827802, 0.8033529, 0.825138}{0.7197688, 0.704418, 0.7142926, 0.7200552, 0.7246745, 0.7495907, 0.7535406, 0.765686, 0.7828193, 0.803108, 0.8251618}{0.7198048, 0.7069278, 0.7134478, 0.7191617, 0.7235878, 0.7488035, 0.7530055, 0.7659106, 0.7835008, 0.8037166, 0.8255925}{0.7197065, 0.7090744, 0.7130744, 0.7177888, 0.721659, 0.7475887, 0.7533673, 0.7666312, 0.7845605, 0.8045855, 0.8262998}{0.719567, 0.7096464, 0.7124155, 0.7164912, 0.7203929, 0.7464268, 0.7537257, 0.7675817, 0.7853767, 0.8053209, 0.8269853}{0.7176328, 0.7050845, 0.7126353, 0.7182245, 0.7205632, 0.7467906, 0.7535209, 0.7664387, 0.7861449, 0.8047596, 0.8272283}{0.715719, 0.7051204, 0.7128493, 0.7191758, 0.7207285, 0.7471498, 0.7527435, 0.7671566, 0.7864195, 0.8042135, 0.8274643}};$/;" v +AGN_LSSTdepth baryons2.h /^ static double AGN_LSSTdepth[100][11]={{0.992103, 0.9915196, 0.9927834, 0.9942885, 0.996125, 0.9975558, 0.9986637, 0.9993038, 0.9997905, 1.000082, 1.000243}{0.9862238, 0.9851566, 0.9870934, 0.9897954, 0.9926103, 0.9950301, 0.9970605, 0.998294, 0.9991604, 0.9996851, 0.9999835}{0.9792363, 0.9772819, 0.9800251, 0.983715, 0.9879151, 0.9917546, 0.9946649, 0.9965207, 0.9980996, 0.998957, 0.9994951}{0.9707152, 0.9685983, 0.97181, 0.976526, 0.9821772, 0.9872062, 0.991804, 0.994685, 0.9968318, 0.9981731, 0.9989713}{0.9633447, 0.9605728, 0.9627785, 0.9677352, 0.9745577, 0.9819462, 0.9878128, 0.9917185, 0.9952281, 0.997067, 0.9982923}{0.9559308, 0.9505149, 0.9538011, 0.9599097, 0.9684815, 0.9767774, 0.984428, 0.9894449, 0.9936349, 0.9961287, 0.9976364}{0.9486312, 0.9413293, 0.943779, 0.9505287, 0.9598931, 0.9709126, 0.9801592, 0.9864344, 0.9920494, 0.9950249, 0.9970036}{0.9419175, 0.9328934, 0.9344102, 0.9411196, 0.9520271, 0.9641233, 0.9750941, 0.9827542, 0.989563, 0.9934365, 0.9958852}{0.9348555, 0.9234021, 0.9239728, 0.9313699, 0.9430856, 0.9567511, 0.9695291, 0.9786604, 0.9870526, 0.9917207, 0.9948763}{0.9270361, 0.9140485, 0.9142566, 0.9210353, 0.9342387, 0.9495219, 0.9639371, 0.9744256, 0.9844463, 0.9900892, 0.9938595}{0.9202743, 0.9049603, 0.9040337, 0.9117534, 0.9247303, 0.941214, 0.9580569, 0.970302, 0.9815209, 0.988067, 0.9924605}{0.9164651, 0.8976822, 0.8967693, 0.9044821, 0.9167981, 0.9344171, 0.9519606, 0.9652558, 0.9785687, 0.9859463, 0.9911251}{0.9126702, 0.8905904, 0.8881422, 0.8952693, 0.9087315, 0.9272926, 0.9470101, 0.9618522, 0.9757849, 0.9840549, 0.9897435}{0.9067148, 0.8836459, 0.8802335, 0.887162, 0.9008221, 0.9203369, 0.94058, 0.9565756, 0.9729853, 0.9821869, 0.9887242}{0.9019037, 0.8769141, 0.8728936, 0.879683, 0.8928539, 0.9121713, 0.9344481, 0.9518312, 0.9692286, 0.9794305, 0.9865335}{0.8965476, 0.869703, 0.8666474, 0.8735892, 0.8856364, 0.9063059, 0.9288704, 0.9468845, 0.9658339, 0.976859, 0.9849691}{0.8890194, 0.8632835, 0.8595867, 0.8658897, 0.8775554, 0.898418, 0.922444, 0.9419283, 0.9623196, 0.9744456, 0.9832684}{0.8856219, 0.8580852, 0.8525157, 0.8592489, 0.8719683, 0.8937875, 0.9178183, 0.9380591, 0.9598091, 0.9726966, 0.9822419}{0.8796482, 0.8518727, 0.8475911, 0.8542887, 0.8660102, 0.8872075, 0.91172, 0.9330346, 0.956512, 0.9703556, 0.9805577}{0.8759122, 0.8483114, 0.8420475, 0.8481219, 0.8606221, 0.881496, 0.907145, 0.9292165, 0.953192, 0.9675395, 0.9785861}{0.8704401, 0.843653, 0.8358935, 0.841786, 0.8542618, 0.8757653, 0.9012216, 0.9237373, 0.9498044, 0.9652245, 0.9769874}{0.8668882, 0.8373235, 0.8299454, 0.8372514, 0.8486727, 0.870687, 0.8966207, 0.919706, 0.947051, 0.9626423, 0.9750335}{0.8614488, 0.8315232, 0.8252057, 0.8324011, 0.8438909, 0.8658197, 0.8925588, 0.9162302, 0.9435155, 0.9596825, 0.9729134}{0.8564946, 0.8257216, 0.8188615, 0.8274856, 0.8389525, 0.8616225, 0.8880519, 0.9118844, 0.9410087, 0.9578911, 0.971732}{0.8517035, 0.8213629, 0.8147526, 0.8240863, 0.8350095, 0.8575494, 0.8850762, 0.9097483, 0.9389957, 0.9559491, 0.9701591}{0.8494936, 0.8167934, 0.8104899, 0.8204752, 0.8303979, 0.8532606, 0.8806777, 0.905544, 0.9356783, 0.9537494, 0.9686444}{0.8472725, 0.8123696, 0.8069158, 0.8167408, 0.8267332, 0.8501723, 0.8777165, 0.9024838, 0.9331436, 0.9513753, 0.9668719}{0.8424161, 0.8072517, 0.8028486, 0.8129522, 0.8233457, 0.8468544, 0.8751071, 0.9003877, 0.9313335, 0.949867, 0.9654712}{0.8375437, 0.8005629, 0.7983719, 0.8090012, 0.8189556, 0.8427438, 0.8714852, 0.8966968, 0.9282256, 0.94735, 0.9637857}{0.8348242, 0.7972574, 0.7942886, 0.8044453, 0.8162014, 0.8400545, 0.8691273, 0.8943694, 0.9260451, 0.9455271, 0.96206}{0.8286013, 0.7930794, 0.7904758, 0.802562, 0.8124703, 0.8363844, 0.8655999, 0.890556, 0.9236707, 0.9435082, 0.9606569}{0.8248232, 0.7891257, 0.7867511, 0.7994691, 0.8096831, 0.8337904, 0.8627303, 0.8882639, 0.9213571, 0.9416422, 0.9590702}{0.8209558, 0.7863038, 0.78397, 0.7969355, 0.8065706, 0.831097, 0.8601758, 0.8860218, 0.9195888, 0.9400176, 0.9578464}{0.8177785, 0.7826637, 0.7807652, 0.7935088, 0.8038326, 0.8278784, 0.8581511, 0.8843856, 0.9180298, 0.9384705, 0.9566754}{0.8144434, 0.7789167, 0.7780309, 0.789117, 0.8004868, 0.825631, 0.8555211, 0.8808573, 0.9149498, 0.936066, 0.9548386}{0.8113398, 0.7747312, 0.7748346, 0.787781, 0.7994615, 0.8228268, 0.8534865, 0.879597, 0.9139413, 0.934675, 0.9536199}{0.807519, 0.7724314, 0.7717547, 0.784676, 0.7966763, 0.8214867, 0.8521686, 0.8780248, 0.912078, 0.933531, 0.9528461}{0.8056178, 0.7686615, 0.7694338, 0.7828105, 0.7936346, 0.8190221, 0.850259, 0.8757921, 0.9102623, 0.9318157, 0.9513094}{0.7997935, 0.7672779, 0.7661737, 0.7806541, 0.7919811, 0.8176434, 0.8486312, 0.8746735, 0.9092709, 0.9306414, 0.9498214}{0.7978049, 0.7637558, 0.7637859, 0.7784504, 0.7898876, 0.8160671, 0.8486185, 0.8748204, 0.9082722, 0.9291703, 0.9485035}{0.7947118, 0.7609468, 0.7612511, 0.7760737, 0.7876487, 0.8138348, 0.8451777, 0.8691365, 0.9058611, 0.9275254, 0.9476355}{0.7915449, 0.7591019, 0.7591196, 0.7737301, 0.786256, 0.8121868, 0.8424576, 0.8680791, 0.9049544, 0.9268173, 0.9466933}{0.7890908, 0.7574507, 0.7570021, 0.7716692, 0.7850591, 0.8112372, 0.8423059, 0.8683975, 0.9048578, 0.9257923, 0.9453416}{0.7890914, 0.7557914, 0.7555125, 0.7696075, 0.7825859, 0.8092886, 0.8414167, 0.8665388, 0.9016697, 0.9228362, 0.9430958}{0.7865675, 0.7515668, 0.7525769, 0.7675839, 0.780213, 0.8082257, 0.8394916, 0.8649517, 0.9001752, 0.9216473, 0.9423598}{0.7839286, 0.7500016, 0.7501955, 0.7654716, 0.7799228, 0.8070978, 0.83758, 0.862604, 0.898614, 0.9201604, 0.9416862}{0.7824809, 0.7489664, 0.7476181, 0.7646252, 0.7789709, 0.8054624, 0.8357463, 0.8615993, 0.8973032, 0.9192046, 0.9408086}{0.7829211, 0.7476047, 0.7465221, 0.7641014, 0.7778496, 0.8030796, 0.8351569, 0.8610114, 0.8965082, 0.9186113, 0.9396594}{0.7776697, 0.744215, 0.7461583, 0.7614626, 0.7763446, 0.8024511, 0.8343864, 0.8600753, 0.8959048, 0.9173585, 0.9392571}{0.7755579, 0.7438414, 0.7443544, 0.7614168, 0.7755978, 0.8029442, 0.8337337, 0.8580511, 0.894911, 0.9160149, 0.9377361}{0.7740814, 0.7435761, 0.7425836, 0.7607851, 0.7742457, 0.8015953, 0.8313252, 0.8569565, 0.8938324, 0.9148055, 0.9369313}{0.771745, 0.7414472, 0.7424734, 0.759749, 0.7725004, 0.7986182, 0.830311, 0.8566471, 0.8928714, 0.9145833, 0.9368977}{0.7675026, 0.7407943, 0.7404621, 0.7591088, 0.7708857, 0.7982796, 0.8320917, 0.8571803, 0.8923658, 0.9141577, 0.9359177}{0.7662192, 0.7394124, 0.739435, 0.7569968, 0.7709485, 0.7980091, 0.8306039, 0.8566707, 0.8911105, 0.9126994, 0.9346015}{0.7644159, 0.7368381, 0.7372753, 0.7563203, 0.769746, 0.7974219, 0.8301468, 0.8548412, 0.8907799, 0.9121983, 0.9339969}{0.762325, 0.7362337, 0.7353433, 0.7550622, 0.7689477, 0.7966361, 0.8288267, 0.8537757, 0.8897759, 0.9112025, 0.9336293}{0.7605017, 0.7358592, 0.7361974, 0.753644, 0.7679746, 0.7958606, 0.8276397, 0.8522095, 0.8876458, 0.9103179, 0.9329298}{0.7586617, 0.7353195, 0.7351128, 0.7520704, 0.7672942, 0.7956587, 0.8265923, 0.8509768, 0.8868444, 0.9090375, 0.9317886}{0.7562932, 0.7332229, 0.7338788, 0.7533833, 0.766543, 0.7949095, 0.8268984, 0.8529421, 0.8874531, 0.90939, 0.9315118}{0.7537873, 0.7299261, 0.7315602, 0.752717, 0.7644722, 0.7944846, 0.8278705, 0.8523677, 0.8870183, 0.908492, 0.931262}{0.751818, 0.7284894, 0.7311927, 0.7511589, 0.7653258, 0.7942252, 0.8267963, 0.850828, 0.8856662, 0.9074291, 0.9306568}{0.7517044, 0.7271398, 0.7305371, 0.7512492, 0.7636599, 0.7930126, 0.8253328, 0.8496329, 0.8854373, 0.9066313, 0.9294785}{0.75117, 0.7270354, 0.7296319, 0.7512603, 0.7642217, 0.7932955, 0.8249566, 0.8491328, 0.8841939, 0.9063922, 0.929266}{0.7483676, 0.7257904, 0.7287962, 0.7498963, 0.7642838, 0.7939637, 0.8249362, 0.8490349, 0.8836263, 0.9058601, 0.9288203}{0.7453453, 0.726688, 0.7273976, 0.7489966, 0.764057, 0.7942232, 0.825064, 0.8486285, 0.8829411, 0.9055854, 0.9285889}{0.7439653, 0.7254591, 0.727417, 0.7491402, 0.7636337, 0.7935078, 0.8248674, 0.8481142, 0.8825654, 0.9061436, 0.9289046}{0.7430467, 0.7234067, 0.7276668, 0.7511685, 0.763901, 0.7921929, 0.8236001, 0.8472021, 0.8830176, 0.9060896, 0.9285298}{0.7396655, 0.7214049, 0.7260425, 0.7487464, 0.7634533, 0.7922734, 0.823276, 0.8474882, 0.8814661, 0.904635, 0.9278236}{0.7378971, 0.7198185, 0.7247848, 0.747789, 0.7616375, 0.7928396, 0.8245372, 0.8467417, 0.8811644, 0.9049055, 0.9272726}{0.737942, 0.7196406, 0.7242101, 0.7475751, 0.7620319, 0.7931614, 0.8248496, 0.8468383, 0.8815496, 0.9046282, 0.9268638}{0.7374793, 0.7199905, 0.7244846, 0.7491341, 0.7618034, 0.7923417, 0.8244535, 0.845921, 0.8803024, 0.9035025, 0.9262676}{0.7364797, 0.7189841, 0.7233538, 0.7488788, 0.7617219, 0.7920431, 0.824903, 0.8463617, 0.881587, 0.9045391, 0.9270277}{0.7358845, 0.718155, 0.722863, 0.7481447, 0.7622466, 0.7924213, 0.8242459, 0.8465934, 0.8812562, 0.9041115, 0.9274337}{0.7351944, 0.7185626, 0.723314, 0.7482011, 0.7608282, 0.7929585, 0.8241865, 0.8463804, 0.8808726, 0.9046967, 0.9280974}{0.7341961, 0.7174673, 0.7246106, 0.7480834, 0.7613777, 0.7932472, 0.824313, 0.8463469, 0.881077, 0.9056801, 0.9292154}{0.7344137, 0.716838, 0.7234613, 0.7481221, 0.7619759, 0.7934313, 0.8242318, 0.8458782, 0.880937, 0.9053229, 0.928261}{0.7348019, 0.7158221, 0.7217037, 0.7489054, 0.7618306, 0.7923442, 0.8236356, 0.8471334, 0.8810111, 0.9059095, 0.9282236}{0.7324423, 0.7145064, 0.7215476, 0.7487461, 0.7624254, 0.7922033, 0.8244278, 0.8465779, 0.8809756, 0.9050046, 0.9274472}{0.7293718, 0.7142729, 0.7220776, 0.7485464, 0.7626526, 0.7927766, 0.8238698, 0.8460895, 0.8803818, 0.9035411, 0.926723}{0.7305337, 0.714287, 0.7218151, 0.7479337, 0.762356, 0.7926517, 0.8233469, 0.8459533, 0.8804614, 0.9046697, 0.9282168}{0.73042, 0.7155048, 0.721635, 0.7463375, 0.7631707, 0.7917591, 0.823286, 0.8468671, 0.8801707, 0.9054607, 0.9283183}{0.7302812, 0.7162711, 0.7216214, 0.7447551, 0.7639198, 0.7908646, 0.8236744, 0.8474554, 0.87987, 0.9063262, 0.9283883}{0.7293467, 0.7160131, 0.7215516, 0.7450098, 0.7627652, 0.7909758, 0.8250768, 0.8476376, 0.8802109, 0.9065192, 0.9285728}{0.7273127, 0.7155035, 0.7188056, 0.7450009, 0.7611526, 0.7924602, 0.8270801, 0.8478032, 0.8801199, 0.9060477, 0.9289197}{0.7253215, 0.7151358, 0.7158667, 0.7441719, 0.7628734, 0.7938972, 0.8276067, 0.8479915, 0.8799621, 0.9059904, 0.929261}{0.7243835, 0.7142869, 0.7168719, 0.7450462, 0.7659066, 0.7948801, 0.8269503, 0.848009, 0.8803806, 0.9064481, 0.9302736}{0.7236563, 0.713651, 0.7196492, 0.7464322, 0.7659929, 0.7957688, 0.8264773, 0.8481682, 0.8809143, 0.9069876, 0.9313564}{0.7228474, 0.7126396, 0.7212131, 0.7477642, 0.7656249, 0.7961976, 0.8266594, 0.848397, 0.8815108, 0.9074949, 0.9318527}{0.7217921, 0.7119635, 0.7201714, 0.7475623, 0.7656991, 0.7955175, 0.826628, 0.8478584, 0.8819059, 0.9078163, 0.9309882}{0.7207651, 0.7116752, 0.7192519, 0.7475117, 0.7654463, 0.7948572, 0.8265554, 0.8483291, 0.8823627, 0.9077377, 0.9301419}{0.720137, 0.7113364, 0.7210096, 0.7487821, 0.7646265, 0.7960574, 0.8276796, 0.8488234, 0.8830053, 0.9087377, 0.9305694}{0.7196614, 0.7098367, 0.721344, 0.7503493, 0.7646284, 0.7979724, 0.8290424, 0.8492641, 0.8836023, 0.9096767, 0.9314584}{0.7192988, 0.7086364, 0.7212678, 0.75048, 0.7651071, 0.7995527, 0.8294006, 0.8502632, 0.884259, 0.9100172, 0.9321913}{0.7195365, 0.7097468, 0.7203179, 0.7502946, 0.7656398, 0.799339, 0.8293713, 0.8524843, 0.8831896, 0.9084545, 0.9322447}{0.7197688, 0.7112571, 0.7201237, 0.7501895, 0.765686, 0.7991343, 0.8304431, 0.8530582, 0.8821564, 0.9081723, 0.9322969}{0.7198048, 0.7123088, 0.7190887, 0.7496487, 0.7659106, 0.7995632, 0.831595, 0.8524543, 0.8822454, 0.9098787, 0.932066}{0.7197065, 0.7119818, 0.7174677, 0.7483609, 0.7666312, 0.8004215, 0.8322738, 0.8518162, 0.8830462, 0.911738, 0.93165}{0.719567, 0.7116724, 0.7159866, 0.7479463, 0.7675817, 0.801236, 0.8320353, 0.8525158, 0.8846396, 0.9126139, 0.9312951}{0.7176328, 0.7117973, 0.7170657, 0.7483202, 0.7664387, 0.8007553, 0.832225, 0.8539687, 0.8856161, 0.9114368, 0.9328651}{0.715719, 0.7120046, 0.7172575, 0.7486892, 0.7671566, 0.800287, 0.8328536, 0.8551811, 0.8865611, 0.9121349, 0.9343992}};$/;" v +A_DESdepth baryons2.h /^ static double A_DESdepth[100][11]={{0.9976184, 0.9980697, 0.9982269, 0.9982621, 0.9983736, 0.9985172, 0.9985371, 0.9985579, 0.9985605, 0.9985448, 0.998529}{0.9963896, 0.9971233, 0.9973514, 0.9974239, 0.9976798, 0.997964, 0.9980294, 0.9981998, 0.9982771, 0.9983021, 0.9983373}{0.9950917, 0.9961214, 0.996472, 0.9967, 0.9970639, 0.9974749, 0.9976593, 0.9979378, 0.9980947, 0.9981248, 0.9981518}{0.993363, 0.9949858, 0.9957156, 0.9961606, 0.9966154, 0.9971354, 0.997414, 0.9976783, 0.9978231, 0.9978608, 0.9979143}{0.9914338, 0.9936385, 0.9946245, 0.99533, 0.9959207, 0.9966952, 0.9969579, 0.9973519, 0.9975943, 0.9976418, 0.9976738}{0.9897566, 0.9921123, 0.9934478, 0.9944718, 0.9952735, 0.9961633, 0.9965947, 0.9970738, 0.9973379, 0.9973696, 0.9974008}{0.9878758, 0.9904882, 0.9921797, 0.9933692, 0.9942795, 0.9953777, 0.9958739, 0.9965094, 0.9968894, 0.9969332, 0.9970926}{0.9859491, 0.9889259, 0.990871, 0.9922574, 0.9933556, 0.9945997, 0.9953287, 0.9960772, 0.9965486, 0.996708, 0.9968527}{0.9845915, 0.9878922, 0.9899617, 0.9915007, 0.9927683, 0.994181, 0.9949642, 0.9957653, 0.9962827, 0.9964251, 0.9966525}{0.9831045, 0.9862902, 0.9886135, 0.9902578, 0.9917444, 0.9933725, 0.994265, 0.995158, 0.9957427, 0.9960133, 0.996328}{0.9816061, 0.9853061, 0.9874837, 0.9892113, 0.9909422, 0.9926317, 0.9935303, 0.994429, 0.9951878, 0.9955343, 0.9959134}{0.9808666, 0.9842914, 0.9864208, 0.988056, 0.9896994, 0.9914284, 0.9926152, 0.9938019, 0.9946269, 0.9950422, 0.9954562}{0.9798476, 0.9833243, 0.9853091, 0.9869896, 0.9889415, 0.9909139, 0.9921867, 0.9934596, 0.9943223, 0.9947329, 0.9951452}{0.9788184, 0.9825783, 0.9841684, 0.9856855, 0.9878417, 0.9900012, 0.9914831, 0.992965, 0.993921, 0.9943492, 0.9947794}{0.9785834, 0.9818118, 0.9832759, 0.9848413, 0.9871088, 0.9893764, 0.9908882, 0.9924035, 0.9934022, 0.9938983, 0.9943945}{0.9776927, 0.9808599, 0.9823572, 0.9839931, 0.9863899, 0.9887868, 0.9902723, 0.9917437, 0.9927485, 0.9933629, 0.9939774}{0.9774097, 0.979902, 0.9814176, 0.9833377, 0.9856893, 0.9880394, 0.9895748, 0.9911834, 0.9922948, 0.9928859, 0.9934761}{0.9772347, 0.9792872, 0.9808271, 0.9826867, 0.9850614, 0.9874412, 0.9890645, 0.9907184, 0.9918405, 0.9924952, 0.9931636}{0.9772113, 0.9790138, 0.9804526, 0.9823074, 0.9845665, 0.9867752, 0.9884503, 0.9902081, 0.9914211, 0.9920829, 0.9927419}{0.9767637, 0.9783787, 0.9798033, 0.9816546, 0.9838937, 0.986159, 0.9879142, 0.9896037, 0.990778, 0.9914565, 0.9921519}{0.9761365, 0.9777183, 0.979278, 0.9812342, 0.983535, 0.9858993, 0.9875888, 0.989051, 0.9901109, 0.9908347, 0.9916095}{0.9755893, 0.9772921, 0.9789185, 0.9806397, 0.98304, 0.9855755, 0.9869999, 0.9884624, 0.9895887, 0.9903597, 0.9911164}{0.9751566, 0.9770757, 0.9784421, 0.9803426, 0.9828696, 0.9853009, 0.9867787, 0.9881292, 0.9891369, 0.9899007, 0.9907442}{0.9748701, 0.9769801, 0.9783743, 0.980097, 0.9825283, 0.9850498, 0.9863085, 0.9875586, 0.9885997, 0.9894432, 0.9903525}{0.974819, 0.9766423, 0.9779198, 0.9792944, 0.9818223, 0.984428, 0.9856668, 0.9868853, 0.9879214, 0.9888354, 0.9897782}{0.9748499, 0.9769692, 0.9774596, 0.9790246, 0.9816558, 0.984085, 0.9852433, 0.9864045, 0.9874809, 0.9884331, 0.9893609}{0.9741777, 0.9762387, 0.9774789, 0.9790393, 0.9813149, 0.9835421, 0.9847425, 0.9859429, 0.9870143, 0.9879235, 0.988833}{0.9738305, 0.9761244, 0.977205, 0.9787501, 0.9809071, 0.9829663, 0.9842073, 0.9854482, 0.9865138, 0.9874237, 0.988317}{0.9733631, 0.9752528, 0.9763431, 0.9784984, 0.9804264, 0.9817944, 0.9830354, 0.9842135, 0.9852492, 0.98612, 0.9868954}{0.9728956, 0.9741888, 0.9760914, 0.9778865, 0.9792545, 0.9806225, 0.9817874, 0.9829488, 0.9839231, 0.9846984, 0.9854738}{0.9724359, 0.9736437, 0.975521, 0.9772377, 0.9786942, 0.9806965, 0.9818579, 0.9827634, 0.9835318, 0.9843028, 0.9850471}{0.9719766, 0.9730674, 0.9748925, 0.9768143, 0.9788165, 0.9808187, 0.9816508, 0.9824121, 0.9831704, 0.9839147, 0.984659}{0.9714701, 0.9725772, 0.9744306, 0.9763565, 0.9783587, 0.9809026, 0.981664, 0.9821244, 0.9825563, 0.9833005, 0.9842908}{0.9709553, 0.9721444, 0.9738746, 0.975857, 0.9784184, 0.9809798, 0.9813513, 0.9814707, 0.9819297, 0.9829279, 0.9839262}{0.9705055, 0.9717152, 0.9733863, 0.9753383, 0.9778998, 0.9802869, 0.9804063, 0.9806371, 0.9814186, 0.9824168, 0.9834913}{0.9700899, 0.9712645, 0.9726369, 0.9745059, 0.9768592, 0.9791884, 0.9794842, 0.9800489, 0.9808303, 0.9819196, 0.9830194}{0.9695845, 0.9707607, 0.9720939, 0.974072, 0.9764012, 0.9784533, 0.979018, 0.979582, 0.9804094, 0.9815092, 0.9824872}{0.9689791, 0.9705401, 0.972174, 0.9743272, 0.9762863, 0.9781229, 0.9786851, 0.97924, 0.9800674, 0.9810046, 0.9818879}{0.9684071, 0.9702105, 0.9720849, 0.9740816, 0.9759182, 0.9778628, 0.9784177, 0.9789726, 0.9795628, 0.9804462, 0.9813326}{0.9678921, 0.9695433, 0.9715385, 0.9736493, 0.9756407, 0.9777224, 0.9782389, 0.9785013, 0.9790741, 0.9799618, 0.9808521}{0.9671807, 0.968715, 0.971013, 0.9733605, 0.9754422, 0.9774862, 0.9777485, 0.9780109, 0.9787159, 0.9796061, 0.980481}{0.9659392, 0.9678623, 0.9704062, 0.9730052, 0.9750305, 0.9769912, 0.9772536, 0.9779142, 0.9786967, 0.979564, 0.9804048}{0.9647542, 0.9670936, 0.9700118, 0.9725696, 0.9745303, 0.9765118, 0.9771866, 0.9778613, 0.978626, 0.9794669, 0.9802679}{0.9640584, 0.9663725, 0.9693244, 0.9720237, 0.9740337, 0.9761669, 0.9768417, 0.9775614, 0.9783478, 0.9790941, 0.979604}{0.9633625, 0.9656391, 0.9687784, 0.9715556, 0.9736888, 0.975822, 0.9765512, 0.9772831, 0.9779203, 0.9784302, 0.9789401}{0.9625335, 0.9648435, 0.9679988, 0.970642, 0.9727933, 0.9750587, 0.9757907, 0.9764344, 0.9769859, 0.9775747, 0.9786612}{0.9616986, 0.964074, 0.9670603, 0.9697463, 0.9720117, 0.9742771, 0.9748949, 0.9754882, 0.9762262, 0.9773127, 0.9783993}{0.9609651, 0.9634603, 0.9665283, 0.9690527, 0.9713218, 0.9740414, 0.9746347, 0.9750131, 0.9756416, 0.976727, 0.9776637}{0.9602494, 0.9630012, 0.9658501, 0.968462, 0.9711816, 0.9739012, 0.9742016, 0.9743721, 0.9749717, 0.9759085, 0.9768453}{0.9596655, 0.9625348, 0.9653975, 0.9678814, 0.970601, 0.9731637, 0.9733342, 0.9736755, 0.9744655, 0.9754023, 0.9764237}{0.9591277, 0.9621613, 0.9647058, 0.9671422, 0.9696796, 0.9722169, 0.9726352, 0.9732786, 0.9740711, 0.9751061, 0.976141}{0.9584713, 0.9616095, 0.9641091, 0.9663204, 0.9688578, 0.9717144, 0.9723578, 0.9729565, 0.9736724, 0.9747073, 0.9756423}{0.9577327, 0.9611085, 0.9634386, 0.9655852, 0.9685139, 0.9715198, 0.9720805, 0.9724773, 0.9731932, 0.9741056, 0.9749938}{0.9571073, 0.9606201, 0.9625911, 0.9650795, 0.9680854, 0.9710179, 0.9714147, 0.9718115, 0.972762, 0.9736502, 0.9745124}{0.9566358, 0.9596218, 0.9617352, 0.9643331, 0.9672405, 0.9700983, 0.9705978, 0.9716158, 0.972569, 0.9734223, 0.974258}{0.9560953, 0.9587038, 0.9609148, 0.9635234, 0.9663813, 0.9692969, 0.970315, 0.9713331, 0.9721815, 0.9730172, 0.9739439}{0.9553825, 0.9577402, 0.960038, 0.9628148, 0.9657599, 0.9687903, 0.9698071, 0.970591, 0.9714008, 0.9723738, 0.9734809}{0.9545911, 0.9567008, 0.9592714, 0.9621514, 0.9651818, 0.9681364, 0.9689203, 0.9697042, 0.9707599, 0.971867, 0.9729563}{0.9533563, 0.9555075, 0.958178, 0.9611702, 0.9642006, 0.9666529, 0.9674368, 0.9684349, 0.9700065, 0.9711136, 0.9720845}{0.9521215, 0.9544142, 0.9571335, 0.960189, 0.9630004, 0.9651693, 0.9659532, 0.9676815, 0.9692531, 0.9703086, 0.9712126}{0.9508867, 0.9533208, 0.9561523, 0.9592078, 0.9615169, 0.9636858, 0.964892, 0.9669281, 0.9684997, 0.9694368, 0.9703408}{0.9496519, 0.9522274, 0.9551711, 0.9578644, 0.9600333, 0.9622022, 0.9641386, 0.9661747, 0.9676609, 0.9685649, 0.9694689}{0.949004, 0.9515985, 0.954549, 0.9569527, 0.9591216, 0.9617826, 0.9638187, 0.9658415, 0.9667149, 0.9676189, 0.9690144}{0.9484488, 0.9510332, 0.9539391, 0.9561313, 0.9583994, 0.9615313, 0.9635673, 0.9648838, 0.9657571, 0.9667602, 0.968626}{0.9478936, 0.9504678, 0.9531177, 0.95531, 0.9581481, 0.9612799, 0.9630834, 0.963926, 0.9647994, 0.9663717, 0.9682375}{0.9473384, 0.9499024, 0.9522964, 0.9547648, 0.9578967, 0.9610285, 0.9621256, 0.9629683, 0.9641175, 0.9659833, 0.9678491}{0.9466995, 0.9492598, 0.951265, 0.9543186, 0.9574504, 0.9605447, 0.9613874, 0.96223, 0.9635276, 0.9653934, 0.9672676}{0.9460134, 0.9482206, 0.9501152, 0.9537625, 0.9568944, 0.95993, 0.9607726, 0.9615479, 0.9628244, 0.9646902, 0.9665775}{0.9453272, 0.9470708, 0.9494897, 0.9532065, 0.9562865, 0.9593152, 0.9601575, 0.9608447, 0.9621212, 0.9639985, 0.9658873}{0.9446411, 0.9459211, 0.9489337, 0.952643, 0.9556718, 0.9587005, 0.9594543, 0.9601415, 0.9614196, 0.9633084, 0.9651972}{0.9439861, 0.9449175, 0.9484586, 0.951922, 0.9549508, 0.9580446, 0.9587318, 0.959419, 0.9606751, 0.9625639, 0.9646064}{0.9434255, 0.944481, 0.9482289, 0.950879, 0.9539077, 0.9572639, 0.9579511, 0.95859, 0.9597657, 0.9616545, 0.9643165}{0.9428648, 0.9442513, 0.9475904, 0.9498359, 0.9529966, 0.9564832, 0.9571704, 0.9576806, 0.9588564, 0.9610566, 0.9640267}{0.9423041, 0.9440216, 0.9465473, 0.9487929, 0.9522158, 0.9557025, 0.9563086, 0.9567713, 0.957947, 0.9607667, 0.9637368}{0.9417435, 0.9437919, 0.9455043, 0.9479485, 0.9514351, 0.9549218, 0.9553993, 0.9558619, 0.9575067, 0.9604768, 0.963447}{0.9409731, 0.9430546, 0.944574, 0.9472335, 0.9507201, 0.9537441, 0.9542067, 0.954711, 0.9572367, 0.9602068, 0.9631872}{0.9401753, 0.942139, 0.9437006, 0.946527, 0.949908, 0.9525146, 0.9529772, 0.9544435, 0.9569693, 0.9599417, 0.9629313}{0.9393775, 0.9412235, 0.9429942, 0.9458205, 0.9486785, 0.951285, 0.9520947, 0.9541761, 0.9567018, 0.9596859, 0.9626755}{0.9385798, 0.9403079, 0.9422877, 0.9448423, 0.9474489, 0.9500555, 0.9518273, 0.9539086, 0.9564404, 0.95943, 0.9624196}{0.9379151, 0.9396054, 0.9416939, 0.9437209, 0.9463275, 0.9492246, 0.951306, 0.9533873, 0.955558, 0.9585477, 0.9617734}{0.9373137, 0.9390551, 0.9411535, 0.9426508, 0.9452574, 0.9485829, 0.9506642, 0.9522947, 0.9543785, 0.9573681, 0.9609419}{0.9367123, 0.9385147, 0.9400841, 0.9415807, 0.944615, 0.9479412, 0.9499371, 0.9511151, 0.9531989, 0.9565361, 0.9601104}{0.9361108, 0.9379743, 0.939014, 0.9406472, 0.9439733, 0.9472994, 0.9487576, 0.9499356, 0.9521304, 0.9557046, 0.9592789}{0.9354948, 0.9373901, 0.937863, 0.9400502, 0.9433763, 0.9465971, 0.9477751, 0.9489531, 0.9512173, 0.9547916, 0.9585109}{0.934863, 0.9363866, 0.936624, 0.9395018, 0.9428279, 0.9458289, 0.9470069, 0.9480419, 0.9502155, 0.9537897, 0.9578119}{0.9342312, 0.9351476, 0.9358999, 0.9389535, 0.9421157, 0.9450607, 0.9462387, 0.9470401, 0.9492137, 0.9530137, 0.9571129}{0.9335995, 0.9339086, 0.9353515, 0.9384025, 0.9413475, 0.9442926, 0.9452653, 0.9460382, 0.9482154, 0.9523147, 0.9564139}{0.9329269, 0.932717, 0.9348311, 0.9376587, 0.9406037, 0.9435548, 0.9443278, 0.9451007, 0.9475372, 0.9516365, 0.9557536}{0.932014, 0.9319639, 0.9344753, 0.9370585, 0.9400036, 0.9429965, 0.9437694, 0.9445432, 0.9469816, 0.9510809, 0.9553211}{0.9311011, 0.9316081, 0.9340148, 0.9364584, 0.9394214, 0.9424382, 0.9432111, 0.9439876, 0.946426, 0.950578, 0.9548885}{0.9301881, 0.9312524, 0.9334147, 0.9358583, 0.938863, 0.9418798, 0.9426543, 0.943432, 0.9458704, 0.9501455, 0.954456}{0.9292752, 0.9308967, 0.9328146, 0.9352879, 0.9383047, 0.9413215, 0.9420987, 0.9428763, 0.9454025, 0.949713, 0.9540235}{0.9286723, 0.9303758, 0.9323097, 0.9341569, 0.9371737, 0.9405202, 0.9412978, 0.9420805, 0.9450013, 0.9493118, 0.9533522}{0.9281224, 0.9298872, 0.9316963, 0.9329282, 0.9360101, 0.9396775, 0.9404551, 0.9416847, 0.9446054, 0.9488626, 0.9526401}{0.9275725, 0.9293986, 0.9304676, 0.9316995, 0.9351673, 0.9388347, 0.9397579, 0.9412889, 0.9442096, 0.9481506, 0.9519281}{0.9270226, 0.92891, 0.9292388, 0.9306572, 0.9343245, 0.9379919, 0.9393621, 0.940893, 0.943661, 0.9474385, 0.951216}{0.926538, 0.9284475, 0.9281569, 0.9298705, 0.9335379, 0.9372015, 0.9387325, 0.9402634, 0.9428267, 0.9466042, 0.950575}{0.9260902, 0.9275606, 0.9271576, 0.9291153, 0.9327827, 0.9364405, 0.9379715, 0.9393893, 0.9419236, 0.9457011, 0.9499739}{0.9256424, 0.9265612, 0.9263906, 0.9283601, 0.932022, 0.9356796, 0.9371952, 0.9384863, 0.9410206, 0.9450855, 0.9493729}{0.9251947, 0.9255619, 0.9256355, 0.9276034, 0.931261, 0.9349186, 0.9362922, 0.9375832, 0.9401971, 0.9444845, 0.9487718}};$/;" v +A_IA_Joachimi IA.c /^double A_IA_Joachimi(double a){$/;" f +A_LF IA.c /^double A_LF(double mag, double a){\/\/ averaged (L\/L_0)^beta over red galaxy LF$/;" f +A_LF_all IA.c /^double A_LF_all(double mag, double a){\/\/ averaged (L\/L_0)^beta over red galaxy LF$/;" f +A_ia structs.c /^ double A_ia;$/;" m struct:input_nuisance_params file: +A_ia structs.c /^ double A_ia; \/\/A IA see Joachimi2012$/;" m struct:__anon21 file: +A_ia structs.c /^ double A_ia[2]; \/\/A IA see Joachimi2012$/;" m struct:__anon22 file: +A_s structs.c /^ double A_s;$/;" m struct:__anon10 file: +A_s structs.c /^ double A_s;$/;" m struct:input_cosmo_params_mpp file: +A_s structs.c /^ double A_s;$/;" m struct:__anon22 file: +A_z structs.c /^ double A_z[10];$/;" m struct:input_nuisance_params_mpp file: +A_z structs.c /^ double A_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA =3)$/;" m struct:__anon21 file: +B1 halo.c /^double B1 (double m,double a){ \/\/b(m,a) based on redshift evolution fits in Tinker et al. paper, no additional normalization$/;" f +B1_model structs.c /^typedef double (*B1_model)(double z, int nz);$/;" t file: +B1_normalized halo.c /^double B1_normalized (double m,double a){ \/\/divide by bias norm only in matter spectra, not in HOD modeling\/cluster analyses$/;" f +B1_nu halo.c /^double B1_nu (double n,double a){$/;" f +BAO BAO.c /^baopara BAO;$/;" v +BAO structs.c /^ int BAO;$/;" m struct:__anon9 file: +C structs.c /^ cosmopara C;$/;" m struct:__anon20 file: +COS_shear_shear_tomo EBfunctions.c /^void COS_shear_shear_tomo(double *E,double *B,int ORDER,double vt_max, double vt_min,int ni, int nj)$/;" f +COV_FILE structs.c /^ char COV_FILE[500]; $/;" m struct:__anon9 file: +CSF_DESdepth baryons2.h /^ static double CSF_DESdepth[100][11]={{0.998183, 0.9983853, 0.998452, 0.9984787, 0.9985515, 0.9986352, 0.9986458, 0.9986549, 0.9986562, 0.9986346, 0.9986083}{0.9980241, 0.9981315, 0.9980876, 0.9980564, 0.9981817, 0.9983176, 0.9983623, 0.9984908, 0.9985419, 0.9985111, 0.9984791}{0.9981029, 0.99795, 0.9978325, 0.9979343, 0.9980838, 0.9982414, 0.9983734, 0.9985295, 0.9985915, 0.9985369, 0.9984688}{0.9981204, 0.9980167, 0.9980872, 0.9981641, 0.9982827, 0.9983431, 0.9984992, 0.9986038, 0.9986193, 0.9985253, 0.9983924}{0.998073, 0.9981888, 0.9982503, 0.9984343, 0.9984852, 0.9985112, 0.9986103, 0.9987254, 0.9987188, 0.998575, 0.9984025}{0.9983572, 0.9983268, 0.9985223, 0.9987815, 0.9988115, 0.9988542, 0.9989739, 0.9989817, 0.9988793, 0.9986832, 0.9984104}{0.9987019, 0.9985092, 0.9988351, 0.9989447, 0.9989894, 0.999053, 0.9990206, 0.9990455, 0.9989408, 0.9986672, 0.9983866}{0.9990963, 0.9990118, 0.9991538, 0.9991888, 0.9992523, 0.9992548, 0.9993182, 0.9993303, 0.9991508, 0.9988703, 0.9985376}{0.9999526, 0.9999876, 0.9999725, 0.9998518, 0.9998445, 0.999795, 0.9997166, 0.9996343, 0.9994124, 0.9990712, 0.9987039}{1.000743, 1.000724, 1.000332, 1.000142, 1.000072, 1.000066, 0.9999631, 0.9998472, 0.9995217, 0.9991411, 0.9987424}{1.001915, 1.001377, 1.000952, 1.000782, 1.000823, 1.000779, 1.000509, 1.000238, 0.9998971, 0.9994853, 0.9989965}{1.003371, 1.002507, 1.00185, 1.001545, 1.001405, 1.001233, 1.000963, 1.000693, 1.000283, 0.9997085, 0.999102}{1.004563, 1.003173, 1.002493, 1.002131, 1.001874, 1.00165, 1.001427, 1.001205, 1.00072, 1.000031, 0.9993408}{1.006098, 1.004279, 1.003112, 1.002672, 1.002737, 1.002795, 1.002281, 1.001767, 1.00116, 1.000462, 0.9997612}{1.007968, 1.005782, 1.00443, 1.003826, 1.003644, 1.003462, 1.002922, 1.002379, 1.001714, 1.000906, 1.000097}{1.009403, 1.007033, 1.005643, 1.004999, 1.004651, 1.004302, 1.003668, 1.002991, 1.002225, 1.001293, 1.00036}{1.011137, 1.008465, 1.007185, 1.006693, 1.005983, 1.005261, 1.004556, 1.003819, 1.002985, 1.001909, 1.000828}{1.012595, 1.009961, 1.008665, 1.007771, 1.007124, 1.006493, 1.005667, 1.004654, 1.003608, 1.002511, 1.00141}{1.014626, 1.012104, 1.010607, 1.009656, 1.00879, 1.007825, 1.006786, 1.005642, 1.004521, 1.00324, 1.001884}{1.016323, 1.014146, 1.012651, 1.011402, 1.010338, 1.009188, 1.008036, 1.006644, 1.005269, 1.003873, 1.002443}{1.018185, 1.016177, 1.014485, 1.013151, 1.012023, 1.010933, 1.00954, 1.007604, 1.005875, 1.004433, 1.002971}{1.020417, 1.018328, 1.016648, 1.015063, 1.013927, 1.012621, 1.010594, 1.00851, 1.006725, 1.005202, 1.003448}{1.022787, 1.020738, 1.018602, 1.01701, 1.01569, 1.014215, 1.012107, 1.009744, 1.007593, 1.005843, 1.00413}{1.025272, 1.022763, 1.020573, 1.019046, 1.017572, 1.015938, 1.01339, 1.010782, 1.008581, 1.006869, 1.004998}{1.027981, 1.024755, 1.02261, 1.020913, 1.019268, 1.017522, 1.014834, 1.012035, 1.009532, 1.007651, 1.005809}{1.030939, 1.027034, 1.024703, 1.023002, 1.021222, 1.019075, 1.01595, 1.012825, 1.010342, 1.008513, 1.006642}{1.033338, 1.02945, 1.027151, 1.025274, 1.022847, 1.020264, 1.017126, 1.013988, 1.011446, 1.009544, 1.007519}{1.036399, 1.031424, 1.029378, 1.027345, 1.024534, 1.021652, 1.01846, 1.015268, 1.012541, 1.010336, 1.008068}{1.038698, 1.033916, 1.031795, 1.02926, 1.026285, 1.02291, 1.019718, 1.016342, 1.013527, 1.011175, 1.008463}{1.040996, 1.0365, 1.03371, 1.030918, 1.027543, 1.024168, 1.020753, 1.017327, 1.014281, 1.011569, 1.008857}{1.043532, 1.038733, 1.035767, 1.033625, 1.030214, 1.026588, 1.023163, 1.019174, 1.015664, 1.012857, 1.009456}{1.046077, 1.040698, 1.03853, 1.036306, 1.03268, 1.029053, 1.024902, 1.020595, 1.016863, 1.013463, 1.010063}{1.048429, 1.043146, 1.041293, 1.038869, 1.035243, 1.031241, 1.026934, 1.022267, 1.018029, 1.014629, 1.011239}{1.050746, 1.045909, 1.043878, 1.041408, 1.037394, 1.033379, 1.028606, 1.023531, 1.019295, 1.015905, 1.012515}{1.053561, 1.048642, 1.046078, 1.043581, 1.039566, 1.035207, 1.030132, 1.025008, 1.020679, 1.017289, 1.013776}{1.056638, 1.050641, 1.048226, 1.045771, 1.041344, 1.03687, 1.031719, 1.026451, 1.022122, 1.018585, 1.015031}{1.059563, 1.052998, 1.050687, 1.047953, 1.043479, 1.03885, 1.033582, 1.028285, 1.023644, 1.02009, 1.016133}{1.062318, 1.055759, 1.053384, 1.050612, 1.045931, 1.041182, 1.035799, 1.030071, 1.02543, 1.021338, 1.017067}{1.065076, 1.058522, 1.055979, 1.053038, 1.048289, 1.043694, 1.037966, 1.032238, 1.026691, 1.022421, 1.018127}{1.067842, 1.061023, 1.058421, 1.05544, 1.050911, 1.04651, 1.040619, 1.033649, 1.028028, 1.023725, 1.019403}{1.070571, 1.06355, 1.060853, 1.058065, 1.053664, 1.049038, 1.042067, 1.035097, 1.029578, 1.025256, 1.020757}{1.073204, 1.066083, 1.063394, 1.060646, 1.055909, 1.050786, 1.043815, 1.037241, 1.0318, 1.027214, 1.022324}{1.075783, 1.068554, 1.066008, 1.062812, 1.057688, 1.0526, 1.04604, 1.03948, 1.033675, 1.028785, 1.023828}{1.077884, 1.071191, 1.068697, 1.064866, 1.059825, 1.05499, 1.04843, 1.04134, 1.035277, 1.030227, 1.024778}{1.079985, 1.074087, 1.070752, 1.067051, 1.062215, 1.05738, 1.050178, 1.042942, 1.036627, 1.031177, 1.025727}{1.082906, 1.076492, 1.072754, 1.069534, 1.064682, 1.059722, 1.052487, 1.044794, 1.038091, 1.032682, 1.027526}{1.085864, 1.078426, 1.075242, 1.071981, 1.067022, 1.062063, 1.054235, 1.046281, 1.039673, 1.034518, 1.029362}{1.088299, 1.081127, 1.078432, 1.074466, 1.069507, 1.064565, 1.056611, 1.048389, 1.041571, 1.036409, 1.03044}{1.090643, 1.084446, 1.080941, 1.076979, 1.072037, 1.067096, 1.058777, 1.050297, 1.043322, 1.037353, 1.031384}{1.093218, 1.086981, 1.08286, 1.079367, 1.074425, 1.069449, 1.060968, 1.05226, 1.04472, 1.038751, 1.032744}{1.095874, 1.088693, 1.085123, 1.081704, 1.076721, 1.071739, 1.062927, 1.053816, 1.046275, 1.040261, 1.034248}{1.098975, 1.091327, 1.087795, 1.084061, 1.079078, 1.074117, 1.065006, 1.055846, 1.04815, 1.042137, 1.035942}{1.102383, 1.09423, 1.090336, 1.086465, 1.081508, 1.076557, 1.067356, 1.057978, 1.050282, 1.044046, 1.037767}{1.105509, 1.097065, 1.093006, 1.088833, 1.083882, 1.079155, 1.069777, 1.060399, 1.052394, 1.046114, 1.039355}{1.108252, 1.100095, 1.095612, 1.091118, 1.086467, 1.081968, 1.072531, 1.062798, 1.054791, 1.047868, 1.040621}{1.111026, 1.103075, 1.098116, 1.093924, 1.089424, 1.084576, 1.074843, 1.065109, 1.056416, 1.049169, 1.042052}{1.113878, 1.106099, 1.101283, 1.097241, 1.092214, 1.086673, 1.076936, 1.066596, 1.057802, 1.050753, 1.043895}{1.116696, 1.109086, 1.104485, 1.099876, 1.094334, 1.088745, 1.078405, 1.068064, 1.059507, 1.052649, 1.045592}{1.119319, 1.111689, 1.107041, 1.102125, 1.096584, 1.090672, 1.080332, 1.070072, 1.061708, 1.05485, 1.046471}{1.121941, 1.114245, 1.109464, 1.104374, 1.098693, 1.092599, 1.082259, 1.072273, 1.063909, 1.056475, 1.04735}{1.124564, 1.116802, 1.111713, 1.106623, 1.10062, 1.094526, 1.084344, 1.074474, 1.06611, 1.057354, 1.048229}{1.127186, 1.119358, 1.113962, 1.10864, 1.102547, 1.096453, 1.086546, 1.076675, 1.067358, 1.058233, 1.049108}{1.130445, 1.122594, 1.116572, 1.111526, 1.105433, 1.09882, 1.08895, 1.079061, 1.068722, 1.059597, 1.05137}{1.133804, 1.125261, 1.119303, 1.114564, 1.108366, 1.101257, 1.091387, 1.080502, 1.070162, 1.061218, 1.053849}{1.137163, 1.127927, 1.12234, 1.117601, 1.110802, 1.103694, 1.093495, 1.081942, 1.071603, 1.063698, 1.056329}{1.140522, 1.130594, 1.125378, 1.120348, 1.113239, 1.10613, 1.094936, 1.083382, 1.073547, 1.066178, 1.058809}{1.143957, 1.133779, 1.12842, 1.122957, 1.115848, 1.108752, 1.097199, 1.085645, 1.075984, 1.068615, 1.060581}{1.147434, 1.136928, 1.131466, 1.125664, 1.118555, 1.111479, 1.099925, 1.088133, 1.078396, 1.071028, 1.061955}{1.150912, 1.139974, 1.134212, 1.12837, 1.121279, 1.114205, 1.10265, 1.090546, 1.080809, 1.072523, 1.063328}{1.15439, 1.143019, 1.136919, 1.131079, 1.124005, 1.116931, 1.105063, 1.092958, 1.083091, 1.073896, 1.064702}{1.157755, 1.14606, 1.139786, 1.133875, 1.126801, 1.119613, 1.107509, 1.095405, 1.084689, 1.075494, 1.066196}{1.160781, 1.149209, 1.143139, 1.136881, 1.129807, 1.122161, 1.110057, 1.097851, 1.086967, 1.077773, 1.068059}{1.163806, 1.152562, 1.146318, 1.139888, 1.132583, 1.124709, 1.112605, 1.10013, 1.089246, 1.079842, 1.069921}{1.166832, 1.155915, 1.149324, 1.142894, 1.135131, 1.127257, 1.114983, 1.102409, 1.091524, 1.081705, 1.071784}{1.169858, 1.159268, 1.15233, 1.145553, 1.137679, 1.129804, 1.117261, 1.104687, 1.093488, 1.083567, 1.073646}{1.173318, 1.162744, 1.155328, 1.148204, 1.140329, 1.131973, 1.119399, 1.106829, 1.095662, 1.085741, 1.075401}{1.176836, 1.165741, 1.158258, 1.150868, 1.142883, 1.134092, 1.121518, 1.109044, 1.097877, 1.08786, 1.077142}{1.180354, 1.168738, 1.160922, 1.153532, 1.145003, 1.136212, 1.123672, 1.111259, 1.100092, 1.089601, 1.078883}{1.183872, 1.171735, 1.163586, 1.155913, 1.147122, 1.138331, 1.125887, 1.113474, 1.102061, 1.091342, 1.080624}{1.187609, 1.175305, 1.166443, 1.158618, 1.149828, 1.141216, 1.128803, 1.116389, 1.10421, 1.093492, 1.082444}{1.191451, 1.178397, 1.16939, 1.161602, 1.152811, 1.144464, 1.132051, 1.118879, 1.106553, 1.095835, 1.0843}{1.195293, 1.181345, 1.172374, 1.164586, 1.156059, 1.147712, 1.135155, 1.121222, 1.108896, 1.097692, 1.086156}{1.199134, 1.184292, 1.175358, 1.167654, 1.159307, 1.15096, 1.137498, 1.123565, 1.111084, 1.099548, 1.088013}{1.202297, 1.186989, 1.178591, 1.171076, 1.162729, 1.153991, 1.140058, 1.126125, 1.113041, 1.101506, 1.089658}{1.204722, 1.190075, 1.182095, 1.174689, 1.166342, 1.156789, 1.142856, 1.128475, 1.115108, 1.103573, 1.091074}{1.207147, 1.19358, 1.18568, 1.178302, 1.169347, 1.159586, 1.145653, 1.130542, 1.117175, 1.105154, 1.092489}{1.209572, 1.197084, 1.189293, 1.181905, 1.172144, 1.162383, 1.147808, 1.132609, 1.119234, 1.10657, 1.093905}{1.21218, 1.200615, 1.192804, 1.184716, 1.174955, 1.165141, 1.149942, 1.134743, 1.120803, 1.108138, 1.095398}{1.215866, 1.204078, 1.195713, 1.187608, 1.177847, 1.167668, 1.15247, 1.137254, 1.123273, 1.110608, 1.097346}{1.219552, 1.206987, 1.198615, 1.1905, 1.180583, 1.170196, 1.154997, 1.139724, 1.125743, 1.112855, 1.099294}{1.223238, 1.209896, 1.201507, 1.193393, 1.183111, 1.172724, 1.157492, 1.142194, 1.128213, 1.114803, 1.101242}{1.226924, 1.212805, 1.204399, 1.196025, 1.185638, 1.175252, 1.159962, 1.144664, 1.130311, 1.116751, 1.10319}{1.230707, 1.216464, 1.207194, 1.198886, 1.188499, 1.177725, 1.162427, 1.147129, 1.132644, 1.119084, 1.104825}{1.234507, 1.219241, 1.209995, 1.201804, 1.19134, 1.180189, 1.164891, 1.149527, 1.135043, 1.121345, 1.106405}{1.238307, 1.222019, 1.212912, 1.204721, 1.193804, 1.182653, 1.167334, 1.151926, 1.137442, 1.122925, 1.107986}{1.242107, 1.224796, 1.21583, 1.207419, 1.196268, 1.185117, 1.169733, 1.154325, 1.139446, 1.124506, 1.109567}{1.245619, 1.227941, 1.219379, 1.210679, 1.199528, 1.188048, 1.172641, 1.157233, 1.141704, 1.126764, 1.111446}{1.24897, 1.231733, 1.223284, 1.214385, 1.203234, 1.191242, 1.175835, 1.159985, 1.144342, 1.129402, 1.113493}{1.25232, 1.235638, 1.227, 1.218091, 1.206453, 1.194437, 1.178969, 1.162623, 1.14698, 1.131478, 1.11554}{1.255671, 1.239543, 1.230707, 1.221663, 1.209647, 1.197631, 1.181607, 1.165261, 1.149463, 1.133525, 1.117587}};$/;" v +CUBE basics.c 33;" d file: +CW_DESdepth baryons.h /^ static double CW_DESdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908},{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265},{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475},{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354},{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506},{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496},{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929},{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479},{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111},{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031},{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421},{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209},{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076},{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891},{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418},{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356},{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317},{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017},{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464},{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602},{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469},{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385},{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714},{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368},{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472},{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319},{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281},{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234},{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573},{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133},{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294},{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309},{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149},{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433},{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688},{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917},{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721},{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077},{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325},{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856},{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351},{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718},{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084},{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432},{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481},{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008},{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007},{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007},{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689},{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518},{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302},{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993},{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683},{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803},{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255},{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707},{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891},{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484},{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059},{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617},{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753},{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889},{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235},{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627},{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019},{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495},{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565},{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635},{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705},{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228},{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445},{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662},{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878},{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718},{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563},{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409},{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354},{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786},{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218},{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665},{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062},{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377},{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693},{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008},{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324},{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843},{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572},{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715},{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857},{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169},{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912},{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655},{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398},{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CW_DESdepth baryons2.h /^ static double CW_DESdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908}{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265}{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475}{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354}{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506}{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496}{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929}{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479}{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111}{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031}{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421}{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209}{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076}{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891}{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418}{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356}{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317}{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017}{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464}{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602}{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469}{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385}{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714}{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368}{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472}{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319}{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281}{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234}{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573}{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133}{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294}{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309}{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149}{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433}{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688}{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917}{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721}{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077}{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325}{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856}{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351}{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718}{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084}{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432}{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481}{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008}{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007}{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007}{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689}{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518}{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302}{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993}{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683}{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803}{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255}{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707}{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891}{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484}{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059}{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617}{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753}{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889}{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235}{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627}{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019}{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495}{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565}{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635}{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705}{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228}{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445}{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662}{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878}{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718}{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563}{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409}{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354}{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786}{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218}{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665}{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062}{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377}{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693}{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008}{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324}{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843}{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572}{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715}{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857}{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169}{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912}{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655}{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398}{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CW_LSSTdepth baryons2.h /^ static double CW_LSSTdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908}{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265}{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475}{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354}{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506}{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496}{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929}{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479}{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111}{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031}{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421}{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209}{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076}{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891}{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418}{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356}{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317}{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017}{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464}{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602}{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469}{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385}{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714}{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368}{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472}{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319}{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281}{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234}{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573}{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133}{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294}{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309}{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149}{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433}{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688}{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917}{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721}{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077}{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325}{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856}{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351}{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718}{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084}{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432}{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481}{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008}{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007}{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007}{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689}{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518}{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302}{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993}{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683}{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803}{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255}{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707}{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891}{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484}{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059}{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617}{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753}{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889}{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235}{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627}{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019}{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495}{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565}{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635}{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705}{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228}{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445}{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662}{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878}{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718}{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563}{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409}{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354}{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786}{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218}{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665}{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062}{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377}{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693}{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008}{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324}{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843}{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572}{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715}{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857}{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169}{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912}{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655}{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398}{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CX_DESdepth baryons.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909},{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438},{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723},{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262},{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663},{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347},{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236},{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965},{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326},{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366},{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495},{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447},{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528},{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727},{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646},{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457},{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913},{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133},{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385},{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654},{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675},{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847},{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869},{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192},{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641},{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144},{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139},{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899},{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257},{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793},{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867},{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259},{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468},{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107},{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558},{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717},{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573},{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268},{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784},{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274},{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637},{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753},{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846},{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582},{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075},{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094},{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828},{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501},{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174},{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664},{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038},{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765},{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784},{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915},{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741},{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638},{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788},{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447},{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106},{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177},{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568},{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959},{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211},{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392},{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573},{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757},{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529},{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363},{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583},{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275},{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966},{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525},{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916},{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796},{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431},{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944},{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388},{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832},{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276},{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345},{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418},{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492},{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671},{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536},{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049},{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738},{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397},{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908},{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419},{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929},{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544},{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533},{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638},{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743},{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847},{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959},{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739},{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822},{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253},{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +CX_DESdepth baryons2.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +CX_LSSTdepth baryons2.h /^ static double CX_LSSTdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +C_FOOTPRINT_FILE structs.c /^ char C_FOOTPRINT_FILE[200]; \/*angular power spectrum of survey footprint, in healpix format *\/$/;" m struct:__anon24 file: +C_GI_JB_nointerp IA.c /^double C_GI_JB_nointerp(double s, int ni, int nj) $/;" f +C_GI_lin_nointerp IA.c /^double C_GI_lin_nointerp(double s, int ni, int nj) $/;" f +C_GI_nointerp IA.c /^double C_GI_nointerp(double s, int ni, int nj) $/;" f +C_II_JB_nointerp IA.c /^double C_II_JB_nointerp(double s, int ni, int nj)$/;" f +C_II_lin_nointerp IA.c /^double C_II_lin_nointerp(double s, int ni, int nj) $/;" f +C_II_nointerp IA.c /^double C_II_nointerp(double s, int ni, int nj) $/;" f +C_ccl_tomo cluster.c /^double C_ccl_tomo(double l, int nz1, int nN1, int nz2, int nN2){$/;" f +C_ccl_tomo clusters_DES.c /^double C_ccl_tomo(double l, int nz1, int nN1, int nz2, int nN2){$/;" f +C_cgl_tomo_nointerp cluster.c /^double C_cgl_tomo_nointerp(double l, int nz, int nN, int zs){$/;" f +C_cgl_tomo_nointerp clusters_DES.c /^double C_cgl_tomo_nointerp(double l, int nz, int nN, int zs){$/;" f +C_cgl_tomo_sys like_fourier.c /^double C_cgl_tomo_sys(double ell_Cluster, int zl,int nN, int zs)$/;" f +C_cgl_tomo_sys like_fourier_HOD.c /^double C_cgl_tomo_sys(double ell_Cluster, int zl,int nN, int zs)$/;" f +C_cl_HOD cosmo2D_fourier.c /^double C_cl_HOD(double l, int ni) \/\/galaxy clustering power spectrum of galaxies in bin ni, using HOD model$/;" f +C_cl_HOD_rm redmagic_real.c /^double C_cl_HOD_rm (double k){$/;" f +C_cl_HOD_rm_1h redmagic_real.c /^double C_cl_HOD_rm_1h (double k){$/;" f +C_cl_HOD_wrapper cosmo2D_real.c /^double C_cl_HOD_wrapper(double l,int ni, int nj){$/;" f +C_cl_RSD cosmo2D_exact.c /^double C_cl_RSD(int l, int ni, int nj){$/;" f +C_cl_RSD_nointerp cosmo2D_fourier.c /^double C_cl_RSD_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_g_rm_tomo covariances_fourier_HOD.c /^double C_cl_g_rm_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_g_tomo cluster.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_g_tomo clusters_DES.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_lin_nointerp cosmo2D_exact.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_mixed cosmo2D_exact_fft.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_mixed cosmo2D_exact_fft_optimize.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_non_Limber cosmo2D_exact.c /^double C_cl_non_Limber(int l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_cl_tomo cosmo2D_fourier.c /^double C_cl_tomo(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxies in bins ni, nj$/;" f +C_cl_tomo_nointerp cosmo2D_fourier.c /^double C_cl_tomo_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gI_JB_nointerp IA.c /^double C_gI_JB_nointerp(double s, int ni, int nj)$/;" f +C_gI_lin_nointerp IA.c /^double C_gI_lin_nointerp(double s, int ni, int nj)$/;" f +C_gI_nointerp IA.c /^double C_gI_nointerp(double s, int ni, int nj)$/;" f +C_ggl_IA IA.c /^double C_ggl_IA(double s, int nl, int ns)$/;" f +C_ggl_IA_tab IA.c /^double C_ggl_IA_tab(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gk CMBxLSS.c /^double C_gk(double l, int ni)$/;" f +C_gk_nointerp CMBxLSS.c /^double C_gk_nointerp(double l, int nl)$/;" f +C_gk_wrapper CMBxLSS.c /^double C_gk_wrapper(double l,int ni, int nj){$/;" f +C_gl_HOD_tomo cosmo2D_fourier.c /^double C_gl_HOD_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_lin_IA_nointerp cosmo2D_exact.c /^double C_gl_lin_IA_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_IA_nointerp cosmo2D_exact_fft.c /^double C_gl_lin_IA_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp cosmo2D_exact.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp cosmo2D_exact_fft.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp_IA cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp_IA(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_mixed cosmo2D_exact_fft.c /^void C_gl_mixed(int L, int LMAX, int nl, int ns, double *Cl, double dev, double tolerance) {$/;" f +C_gl_mixed cosmo2D_exact_fft_optimize.c /^void C_gl_mixed(int L, int LMAX, int nl, int ns, double *Cl, double dev, double tolerance) {$/;" f +C_gl_non_Limber cosmo2D_exact.c /^double C_gl_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_gl_tomo cosmo2D_fourier.c /^double C_gl_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_tomo_HOD_sys like_fourier_HOD.c /^double C_gl_tomo_HOD_sys(double ell,int zl,int zs)$/;" f +C_gl_tomo_all covariances_real.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_all covariances_real_binned.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_nointerp cosmo2D_fourier.c /^double C_gl_tomo_nointerp(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_tomo_sys like_fourier.c /^double C_gl_tomo_sys(double ell,int zl,int zs)$/;" f +C_gl_withIA_non_Limber cosmo2D_exact.c /^double C_gl_withIA_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_kk CMBxLSS.c /^double C_kk(double l)$/;" f +C_kk_nointerp CMBxLSS.c /^double C_kk_nointerp(double l){$/;" f +C_ks CMBxLSS.c /^double C_ks(double l, int ni)$/;" f +C_ks_IA CMBxLSS.c /^double C_ks_IA(double s, int ni)$/;" f +C_ks_nointerp CMBxLSS.c /^double C_ks_nointerp(double l, int ns) {$/;" f +C_ks_wrapper CMBxLSS.c /^double C_ks_wrapper(double l,int ni, int nj){$/;" f +C_magnification_magnification magnification.c /^double C_magnification_magnification(double s) $/;" f +C_magnification_magnification_tomo magnification.c /^double C_magnification_magnification_tomo(double s, int ni, int nj) \/\/shear tomography power spectra$/;" f +C_pos_mag magnification.c /^double C_pos_mag(double s) $/;" f +C_pos_mag_tomo magnification.c /^double C_pos_mag_tomo(double s, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_shear_mag magnification.c /^double C_shear_mag(double s) $/;" f +C_shear_mag_tomo magnification.c /^double C_shear_mag_tomo(double s, int ni, int nj) \/\/shear magnification tomography power spectra$/;" f +C_shear_shear_IA IA.c /^double C_shear_shear_IA(double s, int ni, int nj)$/;" f +C_shear_shear_IA_tab IA.c /^double C_shear_shear_IA_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_shear_tomo cosmo2D_fourier.c /^double C_shear_tomo(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_shear_tomo_nointerp cosmo2D_fourier.c /^double C_shear_tomo_nointerp(double l, int ni, int nj) \/\/shear tomography power spectra of source galaxy bins ni, nj$/;" f +C_shear_tomo_sys like_fourier.c /^double C_shear_tomo_sys(double ell, int z1, int z2)$/;" f +C_shear_tomo_sys like_fourier_HOD.c /^double C_shear_tomo_sys(double ell, int z1, int z2)$/;" f +C_survey_window covariances_3D.c /^double C_survey_window(int l){$/;" f +C_tomo_pointer cosmo2D_exact.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +C_tomo_pointer cosmo2D_fullsky.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +C_tomo_pointer cosmo2D_real.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +Cluster structs.c /^clusterpara Cluster = {.model = "default"};$/;" v +Cmb structs.c /^}Cmb;$/;" t typeref:struct:__anon14 file: +DATA_FILE structs.c /^ char DATA_FILE[500];$/;" m struct:__anon9 file: +DA_ref GRS.c /^ double DA_ref[10];$/;" m struct:__anon7 file: +DA_ref structs.c /^ double DA_ref[10];$/;" m struct:__anon25 file: +DBLIMFV1618_DESdepth baryons2.h /^ static double DBLIMFV1618_DESdepth[100][11]={{0.9955844, 0.9960998, 0.9965749, 0.9971625, 0.997761, 0.9984067, 0.9990535, 0.9994733, 0.999825, 1.000117, 1.000355}{0.9922675, 0.9930631, 0.9938424, 0.9948373, 0.9956659, 0.9965894, 0.9975415, 0.9983624, 0.9990277, 0.9994947, 0.9998518}{0.9886578, 0.9894049, 0.9904721, 0.991601, 0.9929301, 0.994411, 0.9958176, 0.9969436, 0.9979042, 0.9986736, 0.99926}{0.9847318, 0.9855671, 0.9868389, 0.9884524, 0.989842, 0.9915916, 0.9935922, 0.99528, 0.9966298, 0.9976365, 0.9984485}{0.980311, 0.9814526, 0.9830079, 0.9843886, 0.9861742, 0.9884957, 0.9908428, 0.9929679, 0.9948179, 0.9963566, 0.9975241}{0.9764134, 0.9771034, 0.9786551, 0.9804935, 0.9826178, 0.9853975, 0.988396, 0.9910931, 0.9932788, 0.9951406, 0.9965887}{0.9728339, 0.973288, 0.9750771, 0.9766563, 0.9789509, 0.9818696, 0.9852199, 0.9883611, 0.991194, 0.9935994, 0.9953941}{0.9679727, 0.9682349, 0.9697239, 0.9715005, 0.9742285, 0.9781844, 0.9823919, 0.986103, 0.9893109, 0.9920878, 0.9942599}{0.963326, 0.9636855, 0.9654144, 0.9670015, 0.9698057, 0.9738365, 0.9785986, 0.9829725, 0.9869052, 0.9902274, 0.9927868}{0.958617, 0.9582409, 0.9604055, 0.9620948, 0.9647286, 0.969221, 0.9750377, 0.9798319, 0.9842402, 0.9881858, 0.9913752}{0.9551231, 0.9555516, 0.9575387, 0.9584966, 0.9605181, 0.9651654, 0.9711318, 0.9765881, 0.9816515, 0.9860552, 0.9896391}{0.9538386, 0.9528792, 0.9538054, 0.953625, 0.955694, 0.9611013, 0.9672989, 0.9730948, 0.9786531, 0.9839014, 0.9880988}{0.9512626, 0.9495854, 0.9500124, 0.9492055, 0.9512029, 0.9566908, 0.9633507, 0.9699532, 0.9760884, 0.9818304, 0.9864793}{0.9491332, 0.9470204, 0.9461399, 0.9443978, 0.946131, 0.951857, 0.959008, 0.9660971, 0.9730077, 0.9795004, 0.9846447}{0.946289, 0.9438106, 0.9421062, 0.9398676, 0.9410044, 0.9472706, 0.9550122, 0.9627629, 0.9700055, 0.977063, 0.9828314}{0.9436782, 0.9402078, 0.9380014, 0.9355512, 0.9368748, 0.9429674, 0.9508077, 0.9588921, 0.9670627, 0.9747368, 0.9808091}{0.9402291, 0.935493, 0.9333213, 0.9302302, 0.9319584, 0.9396206, 0.9477297, 0.95596, 0.9641792, 0.9721877, 0.9789075}{0.9401049, 0.9334436, 0.9308895, 0.9267183, 0.9281619, 0.9352784, 0.9436096, 0.9521897, 0.9611327, 0.9697285, 0.9769404}{0.9387906, 0.9313598, 0.9281709, 0.9235747, 0.9247889, 0.9321421, 0.9403584, 0.9490645, 0.9581861, 0.9673232, 0.9750712}{0.9371147, 0.9295512, 0.9253938, 0.9202126, 0.920907, 0.9279439, 0.9366936, 0.9458889, 0.95571, 0.965273, 0.9735544}{0.935437, 0.9272289, 0.9217355, 0.915966, 0.9168872, 0.9235832, 0.9324595, 0.9417621, 0.9518031, 0.9623441, 0.9713201}{0.9324077, 0.9243745, 0.9170064, 0.9106709, 0.9121844, 0.9189491, 0.9278263, 0.9377555, 0.9486857, 0.9600431, 0.9693517}{0.9303783, 0.9211518, 0.9127935, 0.9064958, 0.9077307, 0.9143751, 0.9242842, 0.9347957, 0.9458134, 0.9572942, 0.9669808}{0.928306, 0.9173496, 0.9099241, 0.9033526, 0.9048338, 0.912036, 0.9219068, 0.9319006, 0.9425223, 0.9547158, 0.9651926}{0.9270702, 0.9140351, 0.9078047, 0.9009419, 0.9020504, 0.9093781, 0.918168, 0.9278574, 0.939519, 0.9526095, 0.9636299}{0.9260842, 0.9119551, 0.9060824, 0.8974094, 0.8989711, 0.9059992, 0.9146209, 0.9248372, 0.9369688, 0.950238, 0.9616684}{0.9256683, 0.9102669, 0.9030377, 0.8945682, 0.8961605, 0.9028118, 0.9120023, 0.9222567, 0.9345101, 0.9482178, 0.9599146}{0.9227927, 0.9077191, 0.8998419, 0.8917967, 0.8920851, 0.8987947, 0.9083388, 0.9192192, 0.9322057, 0.9464363, 0.9585274}{0.9202546, 0.9048302, 0.8955607, 0.8892403, 0.8902779, 0.8965721, 0.9059191, 0.9165387, 0.9294633, 0.9439645, 0.9567463}{0.915959, 0.9008638, 0.8937619, 0.8867069, 0.8864673, 0.8928097, 0.9036952, 0.9148631, 0.9276178, 0.9423075, 0.9553307}{0.9121354, 0.9001352, 0.891205, 0.8821687, 0.8841225, 0.8908096, 0.9004036, 0.9108275, 0.9237545, 0.9398978, 0.9535091}{0.9114716, 0.8973513, 0.8896719, 0.8819262, 0.8830465, 0.887896, 0.8972732, 0.908592, 0.922487, 0.9384277, 0.9522624}{0.909157, 0.8940289, 0.886738, 0.8774672, 0.8793958, 0.8853946, 0.8950632, 0.9067203, 0.9207982, 0.9367772, 0.9510452}{0.9069455, 0.8926413, 0.8852812, 0.8750364, 0.8764897, 0.8819767, 0.8917696, 0.9042975, 0.9190062, 0.9357212, 0.9499736}{0.9068492, 0.8886185, 0.8837618, 0.8739177, 0.8742, 0.8792702, 0.890115, 0.9027263, 0.9176816, 0.9339272, 0.9481055}{0.9061849, 0.8868313, 0.8807101, 0.8701744, 0.8705721, 0.8769085, 0.8886343, 0.9015411, 0.9159853, 0.9324459, 0.9475689}{0.9031967, 0.8851607, 0.8802786, 0.8665223, 0.8680391, 0.8747694, 0.8866827, 0.8994605, 0.9140859, 0.9306654, 0.9462493}{0.9020141, 0.8824463, 0.8769046, 0.8655578, 0.8670794, 0.8729148, 0.8845852, 0.8969112, 0.9110979, 0.9287666, 0.9446312}{0.8981856, 0.880712, 0.8751719, 0.8628911, 0.8638866, 0.871539, 0.8830488, 0.8948717, 0.9091728, 0.9272567, 0.9434015}{0.8959426, 0.8807256, 0.8699999, 0.8594585, 0.8642123, 0.8679192, 0.8802763, 0.8926815, 0.9076506, 0.9269617, 0.9437135}{0.8926835, 0.8774565, 0.8704504, 0.8569182, 0.8604346, 0.8663957, 0.8786105, 0.8910162, 0.9068521, 0.9252422, 0.9421122}{0.8915833, 0.8780648, 0.8691643, 0.854061, 0.8581613, 0.8644805, 0.8763059, 0.8896711, 0.9053876, 0.9243165, 0.9412614}{0.8927218, 0.8788881, 0.8670695, 0.8526728, 0.8563203, 0.86165, 0.8746434, 0.888715, 0.9047397, 0.9241516, 0.9415444}{0.8915595, 0.8743222, 0.866464, 0.853481, 0.856097, 0.8603081, 0.8735927, 0.886787, 0.9023413, 0.921638, 0.9399549}{0.8879992, 0.8722959, 0.8636491, 0.8507207, 0.8549387, 0.8576908, 0.870829, 0.885008, 0.9025374, 0.9214735, 0.9402183}{0.8877425, 0.8718845, 0.8624849, 0.849845, 0.8531854, 0.8569905, 0.8699589, 0.8850666, 0.9014624, 0.9207403, 0.9396014}{0.8883965, 0.8705365, 0.862052, 0.8485945, 0.8525098, 0.8573473, 0.8698186, 0.8834674, 0.9002948, 0.9195989, 0.9385421}{0.8863439, 0.869663, 0.86117, 0.8478339, 0.8521708, 0.8571615, 0.8681462, 0.8824056, 0.8994113, 0.9188886, 0.9379534}{0.8802031, 0.8650825, 0.8571878, 0.8450302, 0.8482592, 0.8555065, 0.8667893, 0.8815864, 0.8988582, 0.9178376, 0.9371732}{0.8770977, 0.8658527, 0.8564627, 0.8425134, 0.8467321, 0.8546281, 0.8663895, 0.8812413, 0.8972299, 0.9171067, 0.9367172}{0.878009, 0.8652233, 0.8559735, 0.8420416, 0.8463448, 0.8536286, 0.8656577, 0.8793407, 0.8973407, 0.9165085, 0.9367111}{0.8813164, 0.8632066, 0.8560477, 0.8416157, 0.8455368, 0.8522827, 0.863963, 0.8793784, 0.8971503, 0.916183, 0.9370907}{0.8805203, 0.8624783, 0.8556902, 0.8387645, 0.8425457, 0.8511208, 0.8618645, 0.8781581, 0.8966005, 0.9162742, 0.937522}{0.8777952, 0.8609314, 0.854124, 0.8372545, 0.8426774, 0.8496381, 0.8623479, 0.8785055, 0.8949098, 0.9159758, 0.9365223}{0.876193, 0.8610179, 0.853313, 0.8393456, 0.8421815, 0.8488034, 0.8627096, 0.8777389, 0.8943898, 0.9158987, 0.9371131}{0.8747671, 0.8568692, 0.8528209, 0.839048, 0.8412877, 0.8483826, 0.8624651, 0.8777087, 0.8940525, 0.91604, 0.9377235}{0.8722041, 0.8550582, 0.8505596, 0.8374225, 0.8399734, 0.8480649, 0.863887, 0.8774578, 0.8934193, 0.9153852, 0.9367671}{0.8677214, 0.8560732, 0.8486656, 0.8348283, 0.8396434, 0.8478083, 0.8623094, 0.8767438, 0.8942451, 0.9163999, 0.9369343}{0.8700929, 0.8536926, 0.8493626, 0.8359515, 0.8386736, 0.8479403, 0.8613394, 0.8759353, 0.8943656, 0.915414, 0.9376067}{0.8701296, 0.851905, 0.8492775, 0.8332287, 0.8369319, 0.846583, 0.8594836, 0.8751061, 0.8942097, 0.9154086, 0.9377022}{0.8673704, 0.8495802, 0.8476468, 0.8312342, 0.835458, 0.8446999, 0.8589654, 0.8755949, 0.8938939, 0.9154443, 0.9373931}{0.8690551, 0.852522, 0.8478944, 0.8330454, 0.8379877, 0.8464057, 0.8600545, 0.8752148, 0.8931317, 0.9158644, 0.9380164}{0.8712193, 0.8538068, 0.8477909, 0.8336645, 0.8381783, 0.8483309, 0.8597359, 0.8747796, 0.894895, 0.9167998, 0.9369519}{0.8688876, 0.8508712, 0.8473989, 0.8325073, 0.8368238, 0.8456564, 0.8578965, 0.8757631, 0.8945417, 0.9155596, 0.9368791}{0.8653711, 0.8485168, 0.8462271, 0.8316125, 0.835405, 0.8433803, 0.8593053, 0.8757022, 0.8933347, 0.9154987, 0.937497}{0.8641019, 0.8474544, 0.8452654, 0.8326096, 0.8366208, 0.8456251, 0.8599899, 0.8751762, 0.8935458, 0.9165477, 0.9383777}{0.8656234, 0.8472067, 0.843401, 0.8330863, 0.8353278, 0.8469983, 0.8603407, 0.8755885, 0.8944899, 0.9175424, 0.9397142}{0.8606418, 0.8478223, 0.8427042, 0.8324786, 0.8356182, 0.8464294, 0.8603604, 0.8763789, 0.8951638, 0.9165765, 0.9399019}{0.8580248, 0.8452845, 0.8416962, 0.8324872, 0.8351641, 0.8466486, 0.8608696, 0.8759877, 0.8946287, 0.9178001, 0.9407353}{0.8587218, 0.8430849, 0.8418817, 0.8321524, 0.8352527, 0.847495, 0.8597728, 0.876396, 0.8957851, 0.9196846, 0.9421001}{0.8587662, 0.843283, 0.8443722, 0.8322019, 0.8355825, 0.8468347, 0.8610553, 0.8767508, 0.8959606, 0.9200822, 0.942636}{0.8597239, 0.8460516, 0.8411794, 0.8311949, 0.834699, 0.8464301, 0.8612385, 0.8771028, 0.8963025, 0.9207797, 0.94363}{0.8596965, 0.845625, 0.8408308, 0.8302382, 0.83568, 0.8457281, 0.8613516, 0.8773932, 0.8967945, 0.9208035, 0.9434556}{0.8590015, 0.8441738, 0.8410309, 0.8299281, 0.8352509, 0.8455399, 0.8619267, 0.8781003, 0.8963817, 0.9207116, 0.9434003}{0.8581641, 0.8452023, 0.8412846, 0.8284247, 0.8341444, 0.8464989, 0.8628973, 0.8778867, 0.8967191, 0.921639, 0.9444856}{0.8584682, 0.8436317, 0.8421506, 0.8287323, 0.8340816, 0.8485961, 0.8634716, 0.8787992, 0.8982895, 0.923312, 0.9465266}{0.8609338, 0.8441477, 0.841135, 0.8302818, 0.8345128, 0.8500937, 0.8649952, 0.8802009, 0.8984734, 0.9241278, 0.9469371}{0.8597925, 0.8430347, 0.8422167, 0.8305557, 0.8362025, 0.851251, 0.8660977, 0.8802343, 0.8993082, 0.9252982, 0.9475864}{0.8573281, 0.842707, 0.8427332, 0.8321334, 0.83786, 0.8518176, 0.8659608, 0.8811379, 0.9006962, 0.9262862, 0.9484486}{0.8602611, 0.8450314, 0.8421311, 0.8334573, 0.8383657, 0.8512715, 0.8668186, 0.881989, 0.9009701, 0.9260631, 0.9486047}{0.8567769, 0.8447501, 0.8433352, 0.8330852, 0.8378529, 0.850062, 0.8663199, 0.8828638, 0.9020641, 0.9258499, 0.9502527}{0.8532117, 0.8436719, 0.844521, 0.8327272, 0.8373528, 0.8488703, 0.8672066, 0.8839015, 0.9026753, 0.9256259, 0.9518937}{0.851537, 0.8421556, 0.8444687, 0.8320703, 0.8363244, 0.8487939, 0.8684765, 0.8839126, 0.9038385, 0.9270855, 0.9533696}{0.8524644, 0.8418261, 0.844626, 0.8309704, 0.8349382, 0.8502604, 0.8678862, 0.8840288, 0.9066037, 0.9287112, 0.95463}{0.8533726, 0.8441261, 0.8443492, 0.8299888, 0.8344807, 0.8517234, 0.8670582, 0.8864981, 0.9082999, 0.9301788, 0.9558534}{0.854215, 0.8453305, 0.8439982, 0.8319405, 0.8370037, 0.8537057, 0.8687397, 0.8889613, 0.9098107, 0.9327383, 0.9571454}{0.8550178, 0.8439289, 0.8437689, 0.8342414, 0.8397514, 0.855716, 0.8707014, 0.8906045, 0.9115594, 0.935473, 0.9584123}{0.8547256, 0.8429368, 0.8447719, 0.8352076, 0.8414893, 0.8574214, 0.8724622, 0.8924248, 0.9127834, 0.9364394, 0.959658}{0.8517858, 0.8430462, 0.8453479, 0.8334217, 0.8425893, 0.8584931, 0.8747882, 0.8941357, 0.9111869, 0.9355818, 0.960933}{0.8489253, 0.8399635, 0.8454505, 0.8335911, 0.8436386, 0.8595505, 0.8773431, 0.8929462, 0.9105072, 0.9351985, 0.9621935}{0.851006, 0.8394951, 0.8453005, 0.8371611, 0.8439659, 0.8598139, 0.8779405, 0.8927874, 0.9107578, 0.9372807, 0.9633824}{0.8549744, 0.8413572, 0.8456413, 0.8409339, 0.8440683, 0.8597703, 0.8781467, 0.8933327, 0.911505, 0.9397311, 0.964523}{0.8584351, 0.8430425, 0.8475623, 0.8409781, 0.8441501, 0.8600213, 0.8786191, 0.8939897, 0.9133321, 0.9411742, 0.9657064}{0.8592538, 0.8409447, 0.8478702, 0.8406529, 0.8441682, 0.8618561, 0.8797415, 0.8946377, 0.9143056, 0.9414843, 0.9672431}{0.8600558, 0.8413173, 0.8481174, 0.8405378, 0.8443508, 0.8636294, 0.8804015, 0.8955266, 0.9150995, 0.9418963, 0.9687436}{0.8600959, 0.8443014, 0.8481619, 0.8397845, 0.8456442, 0.8651223, 0.8815423, 0.8966487, 0.9167482, 0.9428306, 0.9703945}{0.8596176, 0.8469274, 0.8484116, 0.8386247, 0.8466656, 0.8664336, 0.8826751, 0.8983519, 0.9189626, 0.9434185, 0.9721469}{0.8591924, 0.847807, 0.8479841, 0.8395276, 0.8476919, 0.8676774, 0.88374, 0.9003064, 0.9196001, 0.9445082, 0.9738706}{0.8606048, 0.8460313, 0.847613, 0.8413912, 0.8476883, 0.8668312, 0.8830889, 0.8999325, 0.9208469, 0.9457022, 0.9755158}{0.8620017, 0.8451488, 0.8472498, 0.8423672, 0.8476848, 0.8659955, 0.8829683, 0.9010431, 0.9220717, 0.9468638, 0.977116}};$/;" v +DBLIMFV1618_LSSTdepth baryons2.h /^ static double DBLIMFV1618_LSSTdepth[100][11]={{0.9955844, 0.9964964, 0.9975539, 0.9985496, 0.9994733, 1.000058, 1.0004, 0.9876062, 1.000675, 1.0007, 1.000753}{0.9922675, 0.9935898, 0.9951578, 0.9968793, 0.9983624, 0.9993728, 0.9999633, 0.9949814, 1.000439, 1.000511, 1.000592}{0.9886578, 0.9902096, 0.9923142, 0.9947094, 0.9969436, 0.9985455, 0.9993933, 0.9845381, 1.000167, 1.000301, 1.000429}{0.9847318, 0.9864751, 0.9890178, 0.9921524, 0.99528, 0.9973948, 0.9987294, 0.9945826, 0.9998525, 1.000069, 1.000242}{0.980311, 0.9826038, 0.9852211, 0.9889979, 0.9929679, 0.9961196, 0.9978015, 0.980241, 0.9994373, 0.9997484, 1.000014}{0.9764134, 0.9782651, 0.9815096, 0.986098, 0.9910931, 0.9947797, 0.9970272, 0.9859166, 0.9990649, 0.9994912, 0.9997961}{0.9728339, 0.9745431, 0.9775581, 0.9827589, 0.9883611, 0.9931594, 0.9958913, 0.9813331, 0.9985646, 0.9990967, 0.9995106}{0.9679727, 0.9693075, 0.9728368, 0.97908, 0.986103, 0.9916153, 0.9948632, 0.9771445, 0.9980586, 0.9987382, 0.9992249}{0.963326, 0.9649646, 0.9681144, 0.9750357, 0.9829725, 0.989571, 0.9935654, 0.9769236, 0.9975266, 0.9983412, 0.9989422}{0.958617, 0.9600502, 0.9634569, 0.9704042, 0.9798319, 0.9875311, 0.9922187, 0.9699741, 0.9968927, 0.9978956, 0.998626}{0.9551231, 0.9571294, 0.9590805, 0.9665634, 0.9765881, 0.9852301, 0.9906995, 0.9766001, 0.9961398, 0.9973513, 0.9982187}{0.9538386, 0.9536452, 0.9543487, 0.9623616, 0.9730948, 0.983087, 0.9891627, 0.9672736, 0.995469, 0.9968434, 0.9978621}{0.9512626, 0.9500988, 0.9497455, 0.9581695, 0.9699532, 0.9808322, 0.9878309, 0.9703272, 0.9948317, 0.9963664, 0.9974413}{0.9491332, 0.9465825, 0.9448057, 0.9533483, 0.9660971, 0.9784668, 0.9859957, 0.9649588, 0.9939514, 0.9956808, 0.9969773}{0.946289, 0.9427483, 0.939874, 0.9489443, 0.9627629, 0.9758911, 0.9844067, 0.9632881, 0.9931997, 0.9951759, 0.9965727}{0.9436782, 0.9387327, 0.9354733, 0.944867, 0.9588921, 0.973429, 0.9824528, 0.9598102, 0.9923355, 0.9945511, 0.9961761}{0.9402291, 0.9342747, 0.9304363, 0.9412654, 0.95596, 0.9708786, 0.9807322, 0.9562953, 0.9913796, 0.9938289, 0.9955591}{0.9401049, 0.9320027, 0.9267406, 0.9371492, 0.9521897, 0.9682215, 0.9789276, 0.9591313, 0.9906645, 0.9932752, 0.9952123}{0.9387906, 0.9292917, 0.9237649, 0.9337953, 0.9490645, 0.9658661, 0.9770847, 0.9524468, 0.9896072, 0.992493, 0.9946686}{0.9371147, 0.9271349, 0.9197377, 0.9298613, 0.9458889, 0.9636318, 0.975708, 0.9541976, 0.9888497, 0.9919606, 0.9942675}{0.935437, 0.9236704, 0.9158453, 0.9253543, 0.9417621, 0.9607034, 0.9735296, 0.9473007, 0.9878792, 0.9911844, 0.9937316}{0.9324077, 0.9193619, 0.9109908, 0.9205517, 0.9377555, 0.958428, 0.9715071, 0.9450121, 0.9867414, 0.990217, 0.9930311}{0.9303783, 0.9152606, 0.9064966, 0.9163693, 0.9347957, 0.9555523, 0.9694308, 0.9455919, 0.9857808, 0.9895322, 0.9926238}{0.928306, 0.9121118, 0.9036238, 0.9139829, 0.9319006, 0.9530804, 0.9675416, 0.9348488, 0.9849418, 0.9887319, 0.9919543}{0.9270702, 0.9099544, 0.9006465, 0.9111661, 0.9278574, 0.9506743, 0.9662594, 0.9413029, 0.9838927, 0.9879882, 0.9914423}{0.9260842, 0.9084124, 0.8977612, 0.9076222, 0.9248372, 0.948413, 0.9643636, 0.9386985, 0.9830817, 0.9874597, 0.9910254}{0.9256683, 0.9060172, 0.8946784, 0.9046456, 0.9222567, 0.9462199, 0.9627648, 0.9383828, 0.9822142, 0.9866801, 0.9904238}{0.9227927, 0.9028346, 0.8913756, 0.9006384, 0.9192192, 0.9443166, 0.9615178, 0.935835, 0.9814502, 0.9860094, 0.9898239}{0.9202546, 0.8979567, 0.8892748, 0.8984066, 0.9165387, 0.9418301, 0.9597442, 0.9337827, 0.9805277, 0.9853007, 0.9893384}{0.915959, 0.8959001, 0.8858684, 0.895007, 0.9148631, 0.9399562, 0.9585638, 0.9350322, 0.9794474, 0.9845212, 0.9886552}{0.9121354, 0.89394, 0.8826835, 0.8928628, 0.9108275, 0.9375632, 0.9566778, 0.9288836, 0.9785425, 0.9836227, 0.9880259}{0.9114716, 0.8916637, 0.8820988, 0.8898107, 0.908592, 0.9359496, 0.955689, 0.9286501, 0.9780087, 0.9830626, 0.9875922}{0.909157, 0.8889181, 0.8780498, 0.8871797, 0.9067203, 0.9344194, 0.9543912, 0.9281827, 0.9772126, 0.9824944, 0.9871782}{0.9069455, 0.8873619, 0.8752195, 0.8839748, 0.9042975, 0.9332419, 0.9533909, 0.9288923, 0.9766074, 0.9819563, 0.9867615}{0.9068492, 0.8853508, 0.8735902, 0.8812907, 0.9027263, 0.9314826, 0.9516627, 0.927522, 0.9759973, 0.9813714, 0.9863705}{0.9061849, 0.8825587, 0.8698266, 0.879245, 0.9015411, 0.9298627, 0.9512222, 0.9270758, 0.9754365, 0.9805879, 0.9856024}{0.9031967, 0.882681, 0.8667806, 0.8771975, 0.8994605, 0.9279364, 0.9500267, 0.9275433, 0.9746864, 0.9801484, 0.9853836}{0.9020141, 0.8793107, 0.865912, 0.8752556, 0.8969112, 0.9261062, 0.9485493, 0.9251382, 0.974051, 0.979467, 0.9847906}{0.8981856, 0.8777528, 0.8625893, 0.8738907, 0.8948717, 0.9243469, 0.947552, 0.9255949, 0.9735145, 0.979053, 0.9843172}{0.8959426, 0.8736191, 0.8615724, 0.8699895, 0.8926815, 0.9241726, 0.9477767, 0.9236599, 0.9729977, 0.9783617, 0.9838486}{0.8926835, 0.8722042, 0.8588519, 0.8688832, 0.8910162, 0.92241, 0.9458607, 0.9136247, 0.9726753, 0.9780379, 0.9836017}{0.8915833, 0.8733426, 0.8557892, 0.8667721, 0.8896711, 0.9213172, 0.9456698, 0.9194156, 0.9722815, 0.9777026, 0.9834547}{0.8927218, 0.8704982, 0.8544856, 0.8643086, 0.888715, 0.921075, 0.9455693, 0.9198602, 0.9717634, 0.9773464, 0.9831487}{0.8915595, 0.8692677, 0.8545884, 0.862946, 0.886787, 0.9185283, 0.9440737, 0.9230099, 0.9708269, 0.9759802, 0.9819661}{0.8879992, 0.8666718, 0.8529297, 0.8602384, 0.885008, 0.9182318, 0.9443349, 0.9130408, 0.9710008, 0.975751, 0.9817206}{0.8877425, 0.8648136, 0.8517248, 0.8596628, 0.8850666, 0.9173727, 0.9436412, 0.9183939, 0.970398, 0.9752083, 0.9817891}{0.8883965, 0.864469, 0.8502846, 0.859916, 0.8834674, 0.9161947, 0.9424973, 0.9209022, 0.9699606, 0.9752222, 0.9817975}{0.8863439, 0.8637031, 0.8499739, 0.8594117, 0.8824056, 0.9153679, 0.9420768, 0.9179317, 0.9702067, 0.9751993, 0.9814452}{0.8802031, 0.859688, 0.8465936, 0.8576258, 0.8815864, 0.914518, 0.941444, 0.9162782, 0.9700902, 0.9746539, 0.9813971}{0.8770977, 0.859279, 0.8443851, 0.8568958, 0.8812413, 0.9137149, 0.9411204, 0.909685, 0.9697319, 0.9745838, 0.9811489}{0.878009, 0.8583309, 0.843808, 0.8560877, 0.8793407, 0.9129626, 0.941221, 0.9116856, 0.9694556, 0.9743832, 0.9809027}{0.8813164, 0.8580914, 0.843278, 0.8546929, 0.8793784, 0.9124002, 0.9411448, 0.9166154, 0.9691208, 0.9742201, 0.9808453}{0.8805203, 0.8580805, 0.8402799, 0.853352, 0.8781581, 0.9124085, 0.9418908, 0.9163592, 0.9690263, 0.9747523, 0.9813415}{0.8777952, 0.8565455, 0.839666, 0.8516601, 0.8785055, 0.912228, 0.9407196, 0.9155007, 0.9692157, 0.9743573, 0.9806992}{0.876193, 0.8544719, 0.8405495, 0.8516365, 0.8777389, 0.9122392, 0.9413487, 0.9146357, 0.9696731, 0.9745132, 0.9803672}{0.8747671, 0.8534386, 0.8396716, 0.8512244, 0.8777087, 0.9120465, 0.9412401, 0.9167441, 0.9699931, 0.9741337, 0.9802157}{0.8722041, 0.8512458, 0.8379144, 0.8513386, 0.8774578, 0.9114003, 0.9403764, 0.9204995, 0.9697247, 0.9736957, 0.9800021}{0.8677214, 0.8499092, 0.8369166, 0.8509628, 0.8767438, 0.912441, 0.9404744, 0.9208694, 0.9701016, 0.9735695, 0.9800454}{0.8700929, 0.8496837, 0.8367602, 0.8508439, 0.8759353, 0.9117793, 0.9410732, 0.9214671, 0.9706028, 0.9739108, 0.9800489}{0.8701296, 0.8488589, 0.8342637, 0.8491495, 0.8751061, 0.9112518, 0.9416769, 0.9195969, 0.9708878, 0.9742745, 0.9803852}{0.8673704, 0.848756, 0.8326473, 0.847672, 0.8755949, 0.9113708, 0.9413992, 0.916041, 0.9710794, 0.9745816, 0.9808599}{0.8690551, 0.8490227, 0.835111, 0.8492795, 0.8752148, 0.9117853, 0.9417202, 0.9228708, 0.9713159, 0.9745234, 0.9806478}{0.8712193, 0.8488828, 0.8355214, 0.8512074, 0.8747796, 0.9127129, 0.9405881, 0.9204373, 0.971487, 0.9744877, 0.9802954}{0.8688876, 0.8477654, 0.8340923, 0.8475926, 0.8757631, 0.9119408, 0.9408478, 0.923563, 0.9713168, 0.9741505, 0.980184}{0.8653711, 0.8469047, 0.8330459, 0.8467518, 0.8757022, 0.9113506, 0.9423563, 0.9251137, 0.9716929, 0.9744781, 0.980457}{0.8641019, 0.8458255, 0.8342853, 0.8486433, 0.8751762, 0.9125247, 0.9429622, 0.9312145, 0.9728983, 0.9753744, 0.9811247}{0.8656234, 0.844315, 0.8334702, 0.8499525, 0.8755885, 0.9134901, 0.9438792, 0.9309713, 0.9732302, 0.97618, 0.981374}{0.8606418, 0.8435529, 0.8331102, 0.8490576, 0.8763789, 0.9125633, 0.9437586, 0.926278, 0.9733321, 0.9764325, 0.981583}{0.8580248, 0.8418031, 0.832988, 0.849747, 0.8759877, 0.9133545, 0.9454505, 0.92928, 0.9731016, 0.9768734, 0.9817964}{0.8587218, 0.8410227, 0.8324765, 0.8500405, 0.876396, 0.9154986, 0.9459215, 0.9298826, 0.9732183, 0.9772316, 0.9818062}{0.8587662, 0.8440396, 0.8330193, 0.8497611, 0.8767508, 0.915924, 0.9463655, 0.9222618, 0.9740096, 0.9768873, 0.9811572}{0.8597239, 0.8428865, 0.8321664, 0.849346, 0.8771028, 0.9166279, 0.9474537, 0.9254883, 0.9747477, 0.9784711, 0.9822612}{0.8596965, 0.8412097, 0.8321799, 0.8488446, 0.8773932, 0.9165626, 0.9474008, 0.9294714, 0.9747502, 0.9789968, 0.983116}{0.8590015, 0.8420577, 0.8321508, 0.8490259, 0.8781003, 0.9165738, 0.9474139, 0.9314648, 0.9754839, 0.9800003, 0.9840515}{0.8581641, 0.842805, 0.8306559, 0.8499077, 0.8778867, 0.9173605, 0.9485681, 0.9308449, 0.9772523, 0.9810661, 0.9852286}{0.8584682, 0.8434939, 0.8306051, 0.8519293, 0.8787992, 0.9189754, 0.9505511, 0.9320962, 0.9778285, 0.9812683, 0.9851222}{0.8609338, 0.8419928, 0.8312745, 0.8531595, 0.8802009, 0.919793, 0.950808, 0.9291105, 0.9782375, 0.9827113, 0.9855657}{0.8597925, 0.841816, 0.8320846, 0.8544011, 0.8802343, 0.9210515, 0.9514911, 0.9362289, 0.9793032, 0.9830904, 0.985226}{0.8573281, 0.8440689, 0.8342908, 0.8547669, 0.8811379, 0.9222157, 0.9521391, 0.9416932, 0.979978, 0.9828254, 0.9848064}{0.8602611, 0.8429208, 0.8350043, 0.854485, 0.881989, 0.9218425, 0.9526631, 0.9343993, 0.9805559, 0.9834922, 0.9861694}{0.8567769, 0.8426702, 0.8345876, 0.853192, 0.8828638, 0.9216574, 0.9544537, 0.9356159, 0.9821612, 0.9854006, 0.9871617}{0.8532117, 0.8437692, 0.8341929, 0.8518916, 0.8839015, 0.9214796, 0.955951, 0.9393842, 0.9837341, 0.9870048, 0.988111}{0.851537, 0.8456675, 0.8334168, 0.852885, 0.8839126, 0.922067, 0.9571769, 0.9445605, 0.9846129, 0.987681, 0.9886055}{0.8524644, 0.8460701, 0.8322346, 0.8544285, 0.8840288, 0.9236974, 0.958504, 0.9382298, 0.9848877, 0.9872124, 0.9884955}{0.8533726, 0.846181, 0.8311034, 0.855226, 0.8864981, 0.9252762, 0.9593322, 0.9367911, 0.9849328, 0.9868992, 0.9883872}{0.854215, 0.8448349, 0.8331916, 0.8569448, 0.8889613, 0.9278091, 0.9606193, 0.9356315, 0.9862351, 0.9882336, 0.9904874}{0.8550178, 0.8446216, 0.8355912, 0.8589914, 0.8906045, 0.9304651, 0.9615901, 0.9351448, 0.9878065, 0.9895709, 0.9928715}{0.8547256, 0.8432742, 0.8367022, 0.8605486, 0.8924248, 0.932116, 0.9620921, 0.9415744, 0.9891337, 0.9910205, 0.9946789}{0.8517858, 0.8427519, 0.8369669, 0.8616578, 0.8941357, 0.9313604, 0.9634909, 0.9429488, 0.9907417, 0.9927265, 0.9952631}{0.8489253, 0.8433064, 0.8379293, 0.8630512, 0.8929462, 0.9306267, 0.9653724, 0.9452162, 0.9922174, 0.9937494, 0.995835}{0.851006, 0.8451916, 0.8409718, 0.8636532, 0.8927874, 0.9321154, 0.9668291, 0.9466587, 0.9930477, 0.9949028, 0.9966308}{0.8549744, 0.845507, 0.8411016, 0.863567, 0.8933327, 0.9344586, 0.9679622, 0.9466351, 0.99369, 0.9956707, 0.9974855}{0.8584351, 0.8458352, 0.8411499, 0.8639235, 0.8939897, 0.9364938, 0.9688736, 0.9477748, 0.9943971, 0.9961368, 0.998402}{0.8592538, 0.8461742, 0.8410269, 0.8657847, 0.8946377, 0.936884, 0.9705233, 0.9477459, 0.9949546, 0.9961063, 0.9998183}{0.8600558, 0.8464665, 0.8410461, 0.8674686, 0.8955266, 0.9372591, 0.9721732, 0.9490261, 0.9954355, 0.9965909, 1.001206}{0.8600959, 0.8472568, 0.8403602, 0.8685508, 0.8966487, 0.9377649, 0.9739847, 0.9507411, 0.9967366, 0.9986476, 1.001547}{0.8596176, 0.8475001, 0.841355, 0.8699091, 0.8983519, 0.938363, 0.9758549, 0.9417518, 0.9989672, 1.000516, 1.001181}{0.8591924, 0.8477037, 0.8423429, 0.8710213, 0.9003064, 0.9389669, 0.977177, 0.9441416, 1.001073, 1.001391, 1.000882}{0.8606048, 0.8469562, 0.8434053, 0.8701063, 0.8999325, 0.9401755, 0.9789265, 0.9520442, 1.002162, 1.001586, 1.002855}{0.8620017, 0.8466281, 0.843459, 0.8692032, 0.9010431, 0.9413531, 0.9805075, 0.9629663, 1.003215, 1.002999, 1.004784}};$/;" v +DIFF_A structs.c /^ double DIFF_A; \/\/difference fucntion describing the scale dependent uncertainty in Pdelta for k>0.01$/;" m struct:__anon18 file: +DIFF_n structs.c /^ double DIFF_n; \/\/difference fucntion describing the constant uncertainty in Pdelta for k>0.01$/;" m struct:__anon18 file: +DeltaLin_LD covariances_3D.c /^double DeltaLin_LD(double logk, void * params)$/;" f +Delta_C_gl_reduced_shear_tomo reduced_shear.c /^double Delta_C_gl_reduced_shear_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +Delta_C_reduced_shear_tomo reduced_shear.c /^double Delta_C_reduced_shear_tomo(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +Delta_C_shear_gl_shear_nointerp reduced_shear.c /^double Delta_C_shear_gl_shear_nointerp(double l, int nl, int ns){$/;" f +Delta_C_shear_reduced_shear_nointerp reduced_shear.c /^double Delta_C_shear_reduced_shear_nointerp(double l, int ni, int nj){$/;" f +Delta_LD covariances_3D.c /^double Delta_LD(double logk,void * params)$/;" f +Delta_L_wiggle cosmo3D.c /^double Delta_L_wiggle(double k)$/;" f +Delta_L_wiggle cosmo3D_april7.c /^double Delta_L_wiggle(double k)$/;" f +Delta_NL_Halofit cosmo3D.c /^double Delta_NL_Halofit(double k_NL, double a)$/;" f +Delta_NL_Halofit cosmo3D_april7.c /^double Delta_NL_Halofit(double k_NL, double a)$/;" f +Delta_NL_emu cosmo3D.c /^double Delta_NL_emu(double k_NL,double a)$/;" f +Delta_NL_emu cosmo3D_april7.c /^double Delta_NL_emu(double k_NL,double a)$/;" f +Delta_NL_emu_only cosmo3D.c /^double Delta_NL_emu_only(double k_NL,double a)$/;" f +Delta_NL_emu_only cosmo3D_april7.c /^double Delta_NL_emu_only(double k_NL,double a)$/;" f +Delta_P_reduced_shear reduced_shear.c /^double Delta_P_reduced_shear(double k1, double a){$/;" f +Delta_P_reduced_shear_tab reduced_shear.c /^double Delta_P_reduced_shear_tab(double k, double a){$/;" f +Delta_halofit cosmo3D.c /^void Delta_halofit(double **table_P_NL,double logkmin, double logkmax, double dk, double da)$/;" f +Delta_halofit cosmo3D_april7.c /^void Delta_halofit(double **table_P_NL,double logkmin, double logkmax, double dk, double da)$/;" f +Delta_w_gamma_t_reduced_shear_tomo reduced_shear.c /^double Delta_w_gamma_t_reduced_shear_tomo(double theta,int ni, int nj) \/\/G-G lensing, lens bin ni, source bin nj$/;" f +Delta_xi_pm_reduced_shear_tomo reduced_shear.c /^double Delta_xi_pm_reduced_shear_tomo(int pm, double theta, int ni, int nj) \/\/shear tomography correlation functions$/;" f +EXIT_MISSING_FILE basics.c 20;" d file: +FILE_logPkR structs.c /^ char FILE_logPkR[500];$/;" m struct:__anon26 file: +FMAX basics.c 25;" d file: +FMIN basics.c 26;" d file: +FPT structs.c /^FPTpara FPT ={.k_min = 1.e-4, .k_max =1.e+3, .N = 70, .N_per_dec = 10, .N_AB = 7};$/;" v +FPT_bias_interface pt.c /^void FPT_bias_interface(void){$/;" f +FPT_input pt.c /^void FPT_input(double k[FPT.N], double P[FPT.N]){$/;" f +FPTpara structs.c /^}FPTpara;$/;" t typeref:struct:__anon20 file: +FREE_ARG basics.c 17;" d file: +G02 HOD.c /^double G02 (double k, double a, int nz){\/\/needs to be devided by ngal(nz, a)^2$/;" f +G02_rm redmagic.c /^double G02_rm (double k, double a){\/\/needs to be devided by ngal(nz, a)^2$/;" f +G11 HOD.c /^double G11 (double k, double a, int nz){ \/\/needs to be devided by ngal(nz, a)$/;" f +GM02 HOD.c /^double GM02 (double k, double a, int nz){\/\/needs to be devided by ngal(nz, a)$/;" f +GM02_rm redmagic.c /^double GM02_rm (double k, double a){ \/\/needs to be devided by ngal_rm(nz, a)$/;" f +GRS GRS.c /^GRSpara GRS;$/;" v +GRS structs.c /^ int GRS;$/;" m struct:__anon9 file: +GRS_gal GRS.c /^GRS_galaxy_para GRS_gal;$/;" v +GRS_galaxy_para GRS.c /^} GRS_galaxy_para;$/;" t typeref:struct:__anon8 file: +GRSpara GRS.c /^} GRSpara;$/;" t typeref:struct:__anon7 file: +GRSpara_mt structs.c /^} GRSpara_mt;$/;" t typeref:struct:__anon25 file: +G_taper cosmo2D_exact.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft_optimize.c /^double G_taper(double k){$/;" f +HOD_FILE structs.c /^ char HOD_FILE[500];$/;" m struct:__anon16 file: +HOD_rm structs.c /^ double HOD_rm[5][2];$/;" m struct:__anon23 file: +HSV_shear_shear_tomo covariances_wl.c /^double HSV_shear_shear_tomo(double l1, double l2,int z1, int z2, int z3, int z4){$/;" f +H_ref GRS.c /^ double H_ref[10];$/;" m struct:__anon7 file: +H_ref structs.c /^ double H_ref[10];$/;" m struct:__anon25 file: +Halofit cosmo3D.c /^double Halofit(double k, double amp, double omm, double omv,double w_z, double R_NL, double neff,double Curv, double P_delta_Lin)$/;" f +Halofit cosmo3D_april7.c /^double Halofit(double k, double amp, double omm, double omv,double w_z, double R_NL, double neff,double Curv, double P_delta_Lin)$/;" f +I0j halo.c /^double I0j (int j, double k1, double k2, double k3, double k4,double a){$/;" f +I12_SSC halo.c /^double I12_SSC (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I12_SSC_cm covariances_cluster.c /^double I12_SSC_cm(double k, double a, int nz, int nN){$/;" f +I12_SSC_gg covariances_fourier_HOD.c /^double I12_SSC_gg (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I12_SSC_gm covariances_fourier_HOD.c /^double I12_SSC_gm (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I1j halo.c /^double I1j (int j, double k1, double k2, double k3,double a){$/;" f +IA structs.c /^ int IA;$/;" m struct:__anon9 file: +IA_JB_terms IA.h /^static double IA_JB_terms[500][13] = {{1.000000000E-03, 3.896222290E+03, 6.433348972E-04, -8.002063134E-02, -2.322371876E-01, 1.911325752E-01, -5.722297802E-02, 1.360370548E-01, -4.858843362E-01, -4.859947878E-01, 2.055606300E+03, 2.055606459E+03, 3.896226186E+03},$/;" v +INV_FILE structs.c /^ char INV_FILE[500]; $/;" m struct:__anon9 file: +I_11 halo.c /^double I_11 (double k,double a){\/\/look-up table for I11 integral$/;" f +J0_binned covariances_real_binned.c /^double J0_binned(double l, double tmin, double tmax){$/;" f +J2_binned covariances_real_binned.c /^double J2_binned(double l, double tmin, double tmax){$/;" f +J4_binned covariances_real_binned.c /^double J4_binned(double l, double tmin, double tmax){$/;" f +KE IA.h /^double KE[31] = {0. , -0.018, 0.013, 0.043, 0.091, 0.236, 0.449, 0.667, 0.827, 0.907, 0.916, 0.91 , 0.932, 0.901, 0.835, 0.735, 0.594, 0.427, 0.179, -0.025, -0.226, -0.423, -0.591, -0.754, -0.913, -1.061, -1.181, -1.301, -1.421, -1.541, -1.661};$/;" v +K_CH0 pt.c /^double K_CH0(double k_mpch){$/;" f +K_MPCH pt.c /^double K_MPCH(double k_ch0){$/;" f +Kcorrect_File structs.c /^ char Kcorrect_File[200];$/;" m struct:__anon13 file: +LD_term covariances_3D.c /^double LD_term(double k)$/;" f +LDlin_term covariances_3D.c /^double LDlin_term(double k)$/;" f +LF_P structs.c /^ double LF_P;$/;" m struct:__anon21 file: +LF_P structs.c /^ double LF_P[2];$/;" m struct:__anon22 file: +LF_Q structs.c /^ double LF_Q;$/;" m struct:__anon21 file: +LF_Q structs.c /^ double LF_Q[2];$/;" m struct:__anon22 file: +LF_alpha structs.c /^ double LF_alpha;$/;" m struct:__anon21 file: +LF_alpha structs.c /^ double LF_alpha[2];$/;" m struct:__anon22 file: +LF_coefficients IA.h /^static double LF_coefficients[2][5] = {{-1.,0.,0.,0.,0.},{-1.,0.,0.,0.,0.}};\/\/{Phistat, alpha, Mstar,Q,P} [0][] =red,[1][] = all$/;" v +LF_coefficients_DEEP2 IA.h /^static double LF_coefficients_DEEP2[2][5] = {{1.11e-3,-0.57,-20.34,1.20,-1.15},{0.94e-3,-1.23,-20.70,1.23,-.3}};\/\/P,Q from DEEP2 (B-band), otherwise GAMA$/;" v +LF_coefficients_GAMA IA.h /^static double LF_coefficients_GAMA[2][5] = {{1.11e-3,-0.57,-20.34,1.8,-1.2},{0.94e-3,-1.23,-20.70,0.7,1.8}};\/\/from GAMA survey http:\/\/arxiv.org\/pdf\/1111.0166v2.pdf$/;" v +LF_red_P structs.c /^ double LF_red_P;$/;" m struct:__anon21 file: +LF_red_P structs.c /^ double LF_red_P[2];$/;" m struct:__anon22 file: +LF_red_Q structs.c /^ double LF_red_Q;$/;" m struct:__anon21 file: +LF_red_Q structs.c /^ double LF_red_Q[2];$/;" m struct:__anon22 file: +LF_red_alpha structs.c /^ double LF_red_alpha;$/;" m struct:__anon21 file: +LF_red_alpha structs.c /^ double LF_red_alpha[2];$/;" m struct:__anon22 file: +MASK_FILE structs.c /^ char MASK_FILE[500]; $/;" m struct:__anon9 file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:__anon10 file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:input_cosmo_params file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:input_cosmo_params_mpp file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:__anon22 file: +MG_Sigma cosmo2D_fourier.c /^double MG_Sigma(double a)$/;" f +MGmu structs.c /^ double MGmu;$/;" m struct:__anon10 file: +MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params file: +MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params_mpp file: +MGmu structs.c /^ double MGmu;$/;" m struct:__anon22 file: +MOR structs.c /^ double MOR[10];$/;" m struct:input_nuisance_params_mpp file: +M_abs IA.c /^double M_abs(double mag, double a){ \/\/in h = 1 units, incl. Poggianti 1997 k+e-corrections$/;" f +M_max basics.c /^ double M_max;$/;" m struct:__anon5 file: +M_min basics.c /^ double M_min;$/;" m struct:__anon5 file: +M_nu structs.c /^ double M_nu;$/;" m struct:__anon10 file: +M_nu structs.c /^ double M_nu;$/;" m struct:__anon22 file: +Mobs_x cluster.c /^double Mobs_x(double Nobs, double lgM, double a){$/;" f +N BAO.c /^ int N;$/;" m struct:__anon1 file: +N structs.c /^ int N;$/;" m struct:__anon20 file: +N200_Nbin structs.c /^ int N200_Nbin;$/;" m struct:__anon17 file: +N200_completeness cluster.c /^double N200_completeness(int nz, int nN){$/;" f +N200_completeness clusters_DES.c /^double N200_completeness(int nz, int nN){$/;" f +N200_max structs.c /^ double N200_max;$/;" m struct:__anon17 file: +N200_min structs.c /^ double N200_min;$/;" m struct:__anon17 file: +NG run_covariances_real.c /^int NG = 1;$/;" v +NOSN_DESdepth baryons2.h /^ static double NOSN_DESdepth[100][11]={{0.9990871, 0.9942591, 1.0002, 1.00047, 1.000687, 1.000818, 1.000885, 1.0009, 1.000897, 1.000886, 1.00089}{0.9981768, 1.002662, 0.9998689, 1.000279, 1.000493, 1.000659, 1.000789, 1.000858, 1.000879, 1.000869, 1.000865}{0.9961528, 0.9961901, 0.9987581, 0.9994543, 1.00001, 1.000412, 1.000683, 1.000806, 1.000857, 1.000861, 1.000846}{0.9951525, 1.001664, 0.9986309, 0.9995079, 0.9999267, 1.000239, 1.000615, 1.000766, 1.000805, 1.000801, 1.000796}{0.993446, 1.002933, 0.9979311, 0.9986836, 0.9992639, 0.999744, 1.00019, 1.000453, 1.000597, 1.000689, 1.000716}{0.9916882, 0.9997891, 0.9968021, 0.9979973, 0.9988605, 0.9995087, 1.000066, 1.000403, 1.000608, 1.000742, 1.000784}{0.9902664, 0.9987756, 0.9957517, 0.9969538, 0.9980728, 0.9988666, 0.9996142, 1.000122, 1.000457, 1.000657, 1.000731}{0.9876207, 0.9930046, 0.9937164, 0.9953918, 0.9970428, 0.9983358, 0.9993033, 0.9999552, 1.000359, 1.000627, 1.000727}{0.9856391, 0.9972358, 0.9924927, 0.9942844, 0.9961633, 0.9975275, 0.998842, 0.9996514, 1.000158, 1.000484, 1.000655}{0.9845015, 0.9919567, 0.9913063, 0.9932565, 0.9952277, 0.9969435, 0.9985198, 0.9994114, 0.9999946, 1.000463, 1.000744}{0.9836875, 0.9968837, 0.9909141, 0.9930097, 0.9949309, 0.996506, 0.9980387, 0.9989557, 0.9996413, 1.000268, 1.00064}{0.983795, 0.9922165, 0.9901434, 0.9921195, 0.9941539, 0.9956671, 0.9972383, 0.9983132, 0.9992231, 1.000169, 1.000634}{0.9825931, 0.9921804, 0.9895117, 0.9915154, 0.9937526, 0.9952751, 0.9970092, 0.9982727, 0.9992615, 1.000272, 1.000776}{0.9828572, 0.9923188, 0.9890413, 0.9907743, 0.9926206, 0.9945711, 0.9965121, 0.9979193, 0.9990701, 1.000163, 1.000728}{0.982006, 0.9919958, 0.9889263, 0.9905452, 0.9921124, 0.9941422, 0.9959442, 0.9974835, 0.9987711, 1.000099, 1.000794}{0.9815181, 0.9914807, 0.9893156, 0.9905051, 0.9918294, 0.9939538, 0.9958903, 0.9974026, 0.9988361, 1.00017, 1.00088}{0.9826476, 0.9912253, 0.9898301, 0.9905335, 0.9918535, 0.9937637, 0.9952965, 0.9968238, 0.9983165, 1.000026, 1.000991}{0.9851723, 0.9933035, 0.9899865, 0.9902679, 0.9916198, 0.9935511, 0.9954586, 0.9970029, 0.9985924, 1.000167, 1.001043}{0.9861359, 0.9974315, 0.9908848, 0.9911777, 0.9921975, 0.9936039, 0.9954555, 0.9969814, 0.9985772, 1.00038, 1.001325}{0.9853352, 0.9965792, 0.9917997, 0.9917847, 0.9924436, 0.9940194, 0.9958422, 0.9971039, 0.9987377, 1.000623, 1.001715}{0.9868989, 0.9894565, 0.9911528, 0.9907791, 0.9916185, 0.9931485, 0.9952429, 0.9967724, 0.9985476, 1.000901, 1.001963}{0.9874078, 0.9914928, 0.9923954, 0.9920421, 0.9926693, 0.9941049, 0.9958583, 0.9973405, 0.9988902, 1.001296, 1.00221}{0.9882466, 0.9957506, 0.9920802, 0.9916586, 0.9926923, 0.9945203, 0.9967057, 0.9977028, 0.9989871, 1.001365, 1.002326}{0.9889541, 0.9969507, 0.9928544, 0.9927846, 0.9936595, 0.9956319, 0.9972738, 0.9979735, 0.9991598, 1.001794, 1.00274}{0.9910725, 1.003288, 0.9948164, 0.9938642, 0.9942734, 0.9964796, 0.9976547, 0.9981243, 0.9995704, 1.002299, 1.003171}{0.991612, 1.000572, 0.9948057, 0.9942581, 0.9955301, 0.9973803, 0.9980875, 0.9986429, 1.000166, 1.002888, 1.003762}{0.9927216, 1.004224, 0.9964417, 0.9951001, 0.9962644, 0.9980016, 0.9990285, 0.9997606, 1.001042, 1.003449, 1.004179}{0.9928392, 0.9976285, 0.9966127, 0.9970327, 0.9972163, 0.9986229, 0.9998161, 1.000328, 1.001538, 1.004162, 1.00506}{0.9925588, 1.00339, 0.9975456, 0.9982378, 0.9986629, 1.000427, 1.001189, 1.001226, 1.001917, 1.004633, 1.005666}{0.9929198, 0.9990881, 1.00016, 1.000775, 0.9997344, 1.000605, 1.002179, 1.002231, 1.003046, 1.005883, 1.006658}{0.9912, 1.003587, 0.9995556, 1.000273, 1.001296, 1.002519, 1.003362, 1.002622, 1.003144, 1.006198, 1.00721}{0.9924668, 1.007759, 1.002022, 1.00312, 1.003589, 1.003283, 1.004416, 1.003777, 1.004282, 1.007389, 1.008403}{0.9934106, 1.007199, 1.002722, 1.002611, 1.003473, 1.004939, 1.005968, 1.005308, 1.005608, 1.008855, 1.009679}{0.993293, 1.012248, 1.004564, 1.004376, 1.005435, 1.006937, 1.007651, 1.006757, 1.006961, 1.010253, 1.010575}{0.9950129, 1.009506, 1.005703, 1.007051, 1.007243, 1.008309, 1.008934, 1.007938, 1.008516, 1.01157, 1.011518}{0.9972684, 1.014865, 1.006996, 1.007981, 1.007707, 1.009488, 1.011064, 1.010415, 1.00988, 1.012476, 1.012953}{0.9970944, 1.016503, 1.008368, 1.008679, 1.009433, 1.010268, 1.012856, 1.011721, 1.011109, 1.014025, 1.014322}{0.9985665, 1.01987, 1.009249, 1.010546, 1.011963, 1.012188, 1.014474, 1.013013, 1.01171, 1.015105, 1.01532}{0.9961019, 1.023212, 1.01126, 1.01226, 1.013097, 1.014205, 1.016591, 1.014386, 1.013304, 1.016813, 1.016566}{0.9968482, 1.026479, 1.011902, 1.013923, 1.015675, 1.015361, 1.018142, 1.016058, 1.014993, 1.019136, 1.019121}{0.9983679, 1.015936, 1.016924, 1.014886, 1.017203, 1.017793, 1.020341, 1.017897, 1.016684, 1.019715, 1.019596}{0.9998594, 1.017852, 1.019016, 1.0165, 1.018597, 1.019769, 1.022069, 1.019956, 1.018488, 1.021646, 1.021255}{1.001051, 1.020161, 1.019536, 1.018253, 1.019905, 1.021196, 1.024681, 1.022774, 1.021355, 1.024869, 1.024552}{1.002036, 1.015464, 1.019864, 1.022135, 1.023233, 1.024504, 1.027307, 1.024241, 1.022102, 1.025758, 1.025717}{1.001033, 1.015959, 1.021269, 1.024023, 1.026691, 1.024997, 1.027971, 1.025712, 1.025052, 1.027323, 1.027315}{1.003871, 1.015055, 1.024038, 1.02642, 1.028875, 1.026936, 1.029928, 1.028233, 1.026287, 1.029283, 1.029537}{1.007983, 1.022087, 1.027323, 1.029384, 1.031438, 1.02974, 1.032225, 1.029753, 1.028284, 1.031514, 1.031759}{1.00944, 1.026186, 1.031109, 1.032506, 1.033797, 1.032157, 1.034449, 1.031936, 1.030515, 1.033523, 1.033171}{1.006024, 1.024786, 1.034391, 1.034344, 1.036414, 1.03613, 1.037836, 1.035069, 1.033445, 1.035872, 1.034237}{1.005102, 1.02287, 1.034826, 1.035041, 1.038494, 1.038478, 1.040458, 1.037803, 1.035423, 1.038215, 1.036878}{1.010054, 1.023532, 1.036675, 1.037991, 1.041148, 1.040569, 1.043049, 1.039887, 1.038687, 1.040892, 1.039849}{1.018731, 1.032574, 1.040316, 1.040443, 1.043968, 1.042769, 1.045055, 1.042745, 1.041497, 1.043383, 1.042585}{1.019364, 1.037939, 1.043276, 1.039873, 1.045364, 1.044266, 1.045783, 1.044204, 1.043486, 1.045455, 1.044804}{1.017927, 1.034287, 1.046954, 1.045376, 1.049145, 1.048009, 1.049659, 1.047472, 1.045484, 1.048452, 1.046242}{1.020571, 1.039045, 1.050869, 1.050753, 1.051951, 1.050394, 1.052812, 1.050516, 1.0484, 1.050399, 1.048879}{1.02393, 1.04024, 1.053347, 1.052393, 1.054387, 1.052629, 1.056677, 1.054406, 1.05082, 1.05298, 1.051837}{1.024208, 1.039449, 1.053036, 1.053495, 1.057377, 1.056059, 1.06147, 1.057258, 1.053642, 1.055817, 1.054135}{1.023366, 1.040918, 1.056108, 1.05565, 1.058749, 1.058803, 1.062537, 1.059478, 1.057663, 1.05991, 1.056241}{1.027166, 1.044441, 1.059405, 1.058706, 1.062447, 1.06226, 1.064362, 1.061563, 1.060751, 1.062116, 1.059984}{1.029349, 1.052328, 1.062765, 1.061404, 1.06492, 1.065142, 1.066328, 1.064792, 1.063078, 1.064592, 1.062418}{1.030359, 1.052232, 1.066012, 1.063111, 1.067482, 1.067763, 1.070018, 1.067514, 1.065389, 1.066767, 1.063781}{1.037058, 1.053267, 1.069761, 1.066403, 1.07303, 1.072076, 1.07362, 1.070393, 1.068299, 1.07026, 1.066966}{1.04273, 1.056318, 1.072368, 1.071032, 1.077829, 1.075703, 1.075965, 1.07334, 1.07316, 1.07333, 1.068154}{1.043195, 1.055593, 1.076668, 1.074754, 1.078705, 1.076954, 1.078311, 1.078165, 1.075745, 1.07526, 1.070508}{1.041291, 1.058563, 1.079653, 1.076131, 1.08093, 1.078639, 1.082908, 1.0804, 1.077821, 1.078208, 1.073607}{1.040804, 1.060319, 1.081299, 1.080239, 1.08609, 1.083234, 1.085396, 1.082526, 1.08067, 1.081765, 1.076895}{1.049454, 1.067069, 1.083357, 1.084705, 1.088299, 1.088949, 1.089198, 1.085754, 1.083745, 1.084786, 1.080665}{1.049764, 1.071358, 1.08653, 1.087987, 1.093776, 1.092863, 1.093295, 1.090409, 1.088739, 1.087836, 1.083471}{1.04932, 1.072293, 1.089378, 1.091692, 1.096777, 1.096778, 1.097166, 1.093581, 1.091884, 1.091775, 1.086779}{1.051262, 1.080325, 1.092984, 1.094065, 1.099535, 1.100876, 1.099303, 1.097475, 1.095152, 1.095826, 1.090535}{1.057084, 1.079258, 1.098589, 1.097045, 1.102747, 1.104018, 1.104555, 1.09984, 1.096715, 1.098471, 1.093712}{1.058276, 1.082457, 1.100553, 1.100522, 1.104217, 1.106461, 1.107853, 1.103927, 1.101579, 1.10242, 1.096722}{1.058802, 1.084617, 1.101243, 1.101254, 1.111328, 1.109472, 1.11167, 1.108452, 1.105278, 1.105048, 1.099668}{1.062176, 1.086726, 1.103365, 1.106682, 1.114992, 1.11234, 1.11516, 1.111904, 1.107869, 1.108085, 1.102476}{1.069557, 1.090034, 1.108099, 1.108247, 1.115348, 1.114967, 1.119013, 1.114656, 1.110952, 1.111393, 1.105224}{1.071446, 1.088527, 1.112488, 1.111734, 1.120228, 1.121905, 1.123399, 1.118513, 1.114921, 1.115733, 1.110474}{1.078153, 1.090659, 1.117472, 1.117686, 1.12337, 1.128112, 1.129135, 1.123725, 1.119072, 1.119742, 1.113522}{1.079588, 1.095627, 1.12107, 1.12009, 1.129102, 1.132551, 1.133315, 1.126933, 1.122006, 1.123256, 1.116331}{1.077729, 1.101243, 1.123652, 1.124975, 1.133715, 1.135951, 1.136504, 1.129866, 1.125711, 1.126546, 1.118858}{1.080807, 1.109856, 1.127633, 1.128389, 1.135783, 1.140297, 1.140566, 1.134392, 1.129646, 1.129046, 1.120084}{1.082093, 1.116213, 1.132854, 1.132867, 1.139047, 1.141253, 1.143124, 1.139487, 1.134512, 1.132124, 1.124369}{1.083322, 1.115899, 1.138041, 1.136455, 1.142206, 1.142114, 1.147126, 1.143416, 1.138289, 1.135196, 1.128617}{1.085248, 1.110902, 1.141067, 1.137059, 1.144487, 1.144965, 1.15242, 1.14727, 1.14223, 1.139011, 1.132529}{1.08814, 1.110216, 1.143244, 1.135123, 1.148531, 1.150654, 1.15582, 1.151428, 1.148208, 1.143538, 1.136001}{1.090971, 1.116297, 1.144012, 1.137671, 1.15257, 1.156329, 1.158697, 1.15606, 1.151948, 1.147274, 1.13937}{1.095485, 1.139463, 1.148671, 1.146266, 1.157544, 1.161418, 1.16338, 1.160301, 1.15662, 1.15254, 1.143192}{1.100132, 1.142588, 1.154416, 1.153877, 1.162599, 1.166248, 1.166752, 1.164222, 1.161289, 1.158173, 1.146982}{1.102891, 1.138921, 1.159522, 1.156973, 1.166734, 1.170932, 1.170855, 1.168942, 1.165326, 1.161246, 1.150771}{1.101293, 1.122384, 1.160475, 1.158313, 1.171131, 1.175559, 1.176538, 1.174702, 1.168486, 1.162989, 1.154809}{1.099738, 1.120603, 1.161419, 1.161105, 1.175316, 1.180124, 1.181953, 1.177185, 1.17025, 1.165013, 1.1588}{1.106065, 1.125865, 1.165908, 1.168845, 1.17859, 1.184315, 1.186888, 1.181753, 1.172889, 1.169336, 1.162833}{1.115402, 1.13184, 1.171708, 1.176932, 1.181681, 1.188306, 1.191214, 1.18505, 1.176086, 1.174113, 1.16681}{1.123672, 1.140874, 1.177469, 1.179442, 1.184842, 1.192337, 1.195759, 1.18756, 1.180081, 1.178125, 1.170765}{1.12642, 1.153082, 1.178736, 1.182931, 1.188658, 1.19691, 1.19961, 1.191213, 1.185465, 1.183563, 1.175014}{1.129111, 1.153462, 1.180126, 1.18604, 1.192443, 1.201329, 1.202356, 1.195484, 1.190073, 1.188581, 1.179165}{1.132635, 1.158974, 1.183268, 1.189049, 1.197759, 1.206131, 1.207076, 1.199828, 1.194326, 1.191996, 1.182581}{1.136706, 1.163457, 1.186663, 1.19218, 1.2041, 1.211216, 1.210587, 1.203704, 1.198563, 1.195548, 1.185497}{1.140788, 1.167836, 1.189528, 1.197054, 1.208935, 1.216169, 1.21404, 1.207149, 1.201438, 1.198407, 1.188439}{1.148499, 1.158723, 1.196246, 1.201468, 1.207929, 1.218389, 1.216873, 1.210709, 1.207577, 1.202613, 1.194318}{1.156127, 1.160671, 1.202813, 1.203369, 1.206954, 1.220582, 1.219655, 1.215631, 1.212284, 1.206705, 1.200036}};$/;" v +NOSN_LSSTdepth baryons2.h /^ static double NOSN_LSSTdepth[100][11]={{0.9990871, 1.000133, 1.000617, 1.000833, 1.0009, 1.000886, 1.000867, 0.9878576, 1.000801, 1.000749, 1.000715}{0.9981768, 0.9997068, 1.000381, 1.000694, 1.000858, 1.000872, 1.00083, 0.995508, 1.000724, 1.000658, 1.000609}{0.9961528, 0.998515, 0.9997834, 1.000469, 1.000806, 1.000864, 1.000809, 0.9853735, 1.000659, 1.000574, 1.000512}{0.9951525, 0.998318, 0.9996985, 1.000374, 1.000766, 1.000792, 1.000767, 0.9958565, 1.000612, 1.000501, 1.000417}{0.993446, 0.9975574, 0.9989863, 0.9998395, 1.000453, 1.000683, 1.000686, 0.9820089, 1.00052, 1.000395, 1.000288}{0.9916882, 0.9963793, 0.9984913, 0.9996287, 1.000403, 1.000731, 1.000741, 0.9882319, 1.000511, 1.000341, 1.000209}{0.9902664, 0.9951752, 0.9974713, 0.9990791, 1.000122, 1.000641, 1.000689, 0.984326, 1.000419, 1.000219, 1.000047}{0.9876207, 0.9930928, 0.9963073, 0.998537, 0.9999552, 1.000603, 1.000688, 0.9807855, 1.000394, 1.000149, 0.9999471}{0.9856391, 0.991806, 0.9952112, 0.9978884, 0.9996514, 1.000437, 1.00064, 0.9814614, 1.000424, 1.000146, 0.999886}{0.9845015, 0.9906494, 0.9944239, 0.9972642, 0.9994114, 1.000405, 1.000734, 0.9753778, 1.000478, 1.000127, 0.9998097}{0.9836875, 0.9900916, 0.9940022, 0.9968468, 0.9989557, 1.000183, 1.000632, 0.9831083, 1.0004, 1.000029, 0.9996705}{0.983795, 0.9893234, 0.9932074, 0.9959864, 0.9983132, 1.000079, 1.000639, 0.9746923, 1.000416, 0.9999778, 0.9995571}{0.9825931, 0.9886056, 0.9926158, 0.9956838, 0.9982727, 1.000179, 1.000808, 0.9788524, 1.000534, 0.9999876, 0.9994665}{0.9828572, 0.9882072, 0.9916844, 0.9949662, 0.9979193, 1.00005, 1.000772, 0.9746759, 1.000505, 0.999895, 0.9993012}{0.982006, 0.9880776, 0.9913309, 0.9945153, 0.9974835, 0.9999544, 1.00086, 0.9741422, 1.000599, 0.9999409, 0.9992889}{0.9815181, 0.9884373, 0.9910407, 0.9943767, 0.9974026, 1.000005, 1.000942, 0.9721654, 1.000817, 1.000107, 0.9993313}{0.9826476, 0.9889757, 0.9910631, 0.9940667, 0.9968238, 0.999833, 1.001089, 0.9698492, 1.000833, 1.000015, 0.9991377}{0.9851723, 0.9892497, 0.990923, 0.9939412, 0.9970029, 0.9999958, 1.001127, 0.9741022, 1.001027, 1.000144, 0.9992123}{0.9861359, 0.9900969, 0.9917504, 0.9939761, 0.9969814, 1.000206, 1.00143, 0.9688955, 1.001265, 1.000254, 0.9992284}{0.9853352, 0.9911479, 0.991967, 0.9943914, 0.9971039, 1.000406, 1.001748, 0.9720575, 1.001472, 1.000412, 0.9992497}{0.9868989, 0.9907339, 0.9911542, 0.9935663, 0.9967724, 1.000709, 1.002049, 0.9667217, 1.001722, 1.000525, 0.9992662}{0.9874078, 0.9916053, 0.9923064, 0.9944228, 0.9973405, 1.001121, 1.002273, 0.9661127, 1.001947, 1.000632, 0.9992156}{0.9882466, 0.9914083, 0.9920858, 0.9949594, 0.9977028, 1.001192, 1.002426, 0.9684049, 1.002326, 1.000943, 0.999492}{0.9889541, 0.9919629, 0.9930693, 0.9960131, 0.9979735, 1.001601, 1.002847, 0.9590086, 1.002825, 1.001124, 0.9994251}{0.9910725, 0.9938205, 0.993524, 0.9967187, 0.9981243, 1.002138, 1.003295, 0.9672187, 1.002842, 1.001187, 0.9994669}{0.991612, 0.9939363, 0.9948872, 0.9975624, 0.9986429, 1.002724, 1.003876, 0.9662113, 1.003491, 1.001673, 0.9997522}{0.9927216, 0.9962056, 0.9953699, 0.998195, 0.9997606, 1.00334, 1.00438, 0.967763, 1.004013, 1.002082, 0.9999397}{0.9928392, 0.9958447, 0.9969909, 0.9989061, 1.000328, 1.003979, 1.005187, 0.9665936, 1.004487, 1.002245, 0.9999204}{0.9925588, 0.9964191, 0.99831, 1.000541, 1.001226, 1.004468, 1.005766, 0.9662723, 1.004995, 1.002756, 1.000246}{0.9929198, 0.9985008, 1.000039, 1.000923, 1.002231, 1.005741, 1.00676, 0.9695206, 1.005618, 1.003157, 1.000401}{0.9912, 0.9981561, 1.000803, 1.002813, 1.002622, 1.005994, 1.007395, 0.9651554, 1.006228, 1.003546, 1.000573}{0.9924668, 1.000269, 1.003469, 1.003515, 1.003777, 1.007189, 1.00853, 0.9664472, 1.006758, 1.003809, 1.000871}{0.9934106, 1.000931, 1.003092, 1.005152, 1.005308, 1.008697, 1.009831, 0.9680073, 1.007733, 1.004586, 1.001356}{0.993293, 1.003147, 1.004829, 1.007089, 1.006757, 1.010173, 1.010591, 0.9703638, 1.008414, 1.005229, 1.00179}{0.9950129, 1.003867, 1.00702, 1.008422, 1.007938, 1.011491, 1.011609, 0.9709047, 1.009438, 1.005785, 1.002282}{0.9972684, 1.00496, 1.007619, 1.009809, 1.010415, 1.012453, 1.013104, 0.9721378, 1.010034, 1.006169, 1.002397}{0.9970944, 1.006401, 1.009016, 1.010735, 1.011721, 1.013889, 1.014316, 0.9741831, 1.010775, 1.006835, 1.002882}{0.9985665, 1.007202, 1.011249, 1.012692, 1.013013, 1.015096, 1.015378, 0.9736965, 1.011867, 1.007701, 1.003399}{0.9961019, 1.009568, 1.012648, 1.014693, 1.014386, 1.016856, 1.016559, 0.9758184, 1.012615, 1.008253, 1.003811}{0.9968482, 1.009982, 1.014793, 1.015904, 1.016058, 1.019053, 1.019128, 0.9756584, 1.013912, 1.008949, 1.004244}{0.9983679, 1.013583, 1.016304, 1.018491, 1.017897, 1.019687, 1.019382, 0.9671967, 1.01501, 1.01002, 1.005031}{0.9998594, 1.01827, 1.017812, 1.020196, 1.019956, 1.021583, 1.021843, 0.9752937, 1.016172, 1.01102, 1.005878}{1.001051, 1.018151, 1.019365, 1.021909, 1.022774, 1.024925, 1.024229, 0.9776072, 1.017173, 1.011658, 1.006485}{1.002036, 1.017783, 1.022622, 1.025188, 1.024241, 1.025766, 1.025283, 0.9827887, 1.018356, 1.012125, 1.006535}{1.001033, 1.019387, 1.025426, 1.025554, 1.025712, 1.027246, 1.026993, 0.9737962, 1.01999, 1.013091, 1.0071}{1.003871, 1.021027, 1.02811, 1.027679, 1.028233, 1.029198, 1.029412, 0.9815568, 1.02087, 1.014054, 1.008123}{1.007983, 1.0244, 1.03125, 1.030261, 1.029753, 1.031376, 1.030868, 0.9862401, 1.021954, 1.015295, 1.009288}{1.00944, 1.027845, 1.033481, 1.032627, 1.031936, 1.033571, 1.032446, 0.9848882, 1.023702, 1.016511, 1.010291}{1.006024, 1.029918, 1.035712, 1.036794, 1.035069, 1.035826, 1.033753, 0.9847908, 1.025475, 1.017562, 1.011191}{1.005102, 1.031912, 1.037141, 1.038853, 1.037803, 1.038379, 1.036795, 0.9798027, 1.026571, 1.018606, 1.011782}{1.010054, 1.033527, 1.040046, 1.041124, 1.039887, 1.041018, 1.039254, 0.9838922, 1.027899, 1.019839, 1.012515}{1.018731, 1.036556, 1.042279, 1.043241, 1.042745, 1.043508, 1.041161, 0.9908041, 1.029395, 1.021204, 1.013667}{1.019364, 1.040078, 1.043362, 1.044644, 1.044204, 1.045539, 1.043573, 0.9919914, 1.030891, 1.022785, 1.015269}{1.017927, 1.043549, 1.04769, 1.048502, 1.047472, 1.048418, 1.045024, 0.993035, 1.0331, 1.024348, 1.015807}{1.020571, 1.04638, 1.051798, 1.050779, 1.050516, 1.050744, 1.047556, 0.9940436, 1.03481, 1.025386, 1.016383}{1.02393, 1.048734, 1.053249, 1.053448, 1.054406, 1.053083, 1.049882, 0.9984639, 1.036531, 1.026367, 1.017283}{1.024208, 1.048807, 1.056114, 1.057179, 1.057258, 1.056089, 1.051705, 1.003976, 1.038371, 1.027742, 1.01854}{1.023366, 1.052462, 1.057657, 1.059962, 1.059478, 1.060065, 1.053898, 1.0067, 1.040166, 1.028242, 1.019115}{1.027166, 1.054976, 1.060889, 1.063086, 1.061563, 1.062662, 1.057985, 1.008522, 1.041993, 1.030061, 1.020473}{1.029349, 1.05753, 1.063664, 1.065365, 1.064792, 1.064804, 1.059863, 1.008147, 1.043658, 1.031934, 1.021886}{1.030359, 1.061722, 1.065253, 1.068233, 1.067514, 1.067256, 1.061586, 1.006808, 1.04533, 1.033238, 1.023268}{1.037058, 1.065904, 1.070489, 1.072474, 1.070393, 1.070794, 1.064449, 1.016213, 1.047429, 1.034911, 1.025009}{1.04273, 1.068821, 1.075169, 1.076193, 1.07334, 1.073775, 1.065726, 1.015253, 1.049484, 1.036597, 1.025325}{1.043195, 1.071738, 1.077607, 1.076856, 1.078165, 1.076168, 1.068371, 1.019622, 1.051018, 1.037743, 1.026186}{1.041291, 1.075443, 1.078869, 1.079614, 1.0804, 1.078931, 1.071574, 1.022847, 1.052759, 1.039042, 1.027604}{1.040804, 1.077356, 1.084476, 1.083688, 1.082526, 1.082661, 1.074508, 1.031782, 1.05485, 1.040864, 1.02936}{1.049454, 1.080185, 1.087103, 1.089489, 1.085754, 1.085525, 1.078127, 1.033596, 1.056864, 1.043123, 1.030677}{1.049764, 1.082308, 1.091287, 1.092962, 1.090409, 1.088437, 1.080917, 1.030083, 1.059434, 1.045276, 1.032164}{1.04932, 1.084721, 1.095076, 1.097083, 1.093581, 1.092444, 1.084366, 1.035451, 1.060851, 1.046972, 1.033616}{1.051262, 1.087202, 1.097318, 1.10055, 1.097475, 1.096802, 1.087018, 1.038041, 1.06213, 1.048583, 1.03476}{1.057084, 1.093115, 1.100395, 1.104097, 1.09984, 1.099341, 1.089662, 1.030394, 1.064539, 1.049983, 1.03516}{1.058276, 1.096174, 1.102613, 1.106707, 1.103927, 1.103086, 1.092986, 1.036263, 1.067332, 1.053086, 1.037908}{1.058802, 1.097307, 1.106731, 1.109946, 1.108452, 1.106002, 1.096217, 1.042938, 1.068919, 1.055199, 1.039791}{1.062176, 1.099937, 1.112927, 1.112922, 1.111904, 1.108938, 1.098455, 1.046809, 1.071215, 1.057243, 1.041596}{1.069557, 1.104345, 1.112653, 1.115808, 1.114656, 1.112541, 1.101321, 1.04773, 1.074588, 1.059443, 1.043916}{1.071446, 1.107872, 1.116854, 1.122769, 1.118513, 1.116677, 1.10633, 1.051211, 1.076237, 1.060768, 1.044942}{1.078153, 1.112459, 1.120918, 1.128583, 1.123725, 1.120518, 1.109308, 1.050261, 1.0782, 1.063827, 1.046725}{1.079588, 1.116328, 1.124602, 1.1328, 1.126933, 1.124326, 1.112077, 1.059981, 1.081263, 1.066033, 1.047758}{1.077729, 1.120151, 1.13097, 1.136068, 1.129866, 1.127842, 1.114165, 1.067503, 1.083789, 1.067275, 1.048657}{1.080807, 1.123815, 1.132457, 1.140371, 1.134392, 1.130688, 1.115926, 1.060237, 1.085228, 1.069042, 1.05119}{1.082093, 1.125905, 1.136493, 1.141355, 1.139487, 1.133644, 1.120747, 1.063682, 1.088255, 1.071955, 1.053206}{1.083322, 1.130733, 1.139309, 1.142261, 1.143416, 1.136554, 1.124543, 1.069424, 1.09122, 1.074204, 1.055139}{1.085248, 1.136699, 1.13995, 1.146515, 1.14727, 1.140057, 1.127671, 1.07774, 1.093481, 1.07652, 1.056715}{1.08814, 1.139325, 1.142987, 1.152521, 1.151428, 1.144354, 1.131582, 1.072844, 1.096287, 1.078496, 1.057852}{1.090971, 1.141334, 1.146505, 1.157233, 1.15606, 1.148515, 1.134758, 1.073333, 1.098579, 1.079658, 1.058971}{1.095485, 1.144081, 1.154071, 1.162027, 1.160301, 1.153766, 1.13897, 1.074318, 1.100985, 1.082832, 1.062248}{1.100132, 1.149368, 1.158468, 1.167072, 1.164222, 1.159118, 1.142491, 1.074847, 1.103514, 1.08537, 1.065751}{1.102891, 1.15234, 1.162026, 1.170916, 1.168942, 1.163356, 1.145058, 1.083404, 1.106108, 1.088122, 1.068659}{1.101293, 1.152464, 1.165324, 1.175801, 1.174702, 1.164989, 1.149572, 1.085959, 1.109772, 1.091548, 1.070397}{1.099738, 1.153435, 1.169137, 1.180562, 1.177185, 1.166574, 1.152777, 1.089389, 1.112971, 1.093574, 1.072098}{1.106065, 1.159966, 1.17639, 1.18489, 1.181753, 1.170289, 1.156814, 1.093684, 1.115805, 1.096415, 1.074624}{1.115402, 1.165353, 1.179121, 1.189069, 1.18505, 1.174827, 1.161029, 1.096018, 1.118808, 1.098539, 1.077381}{1.123672, 1.169903, 1.181993, 1.193055, 1.18756, 1.179463, 1.164378, 1.099716, 1.120996, 1.100288, 1.079987}{1.12642, 1.170768, 1.185573, 1.197856, 1.191213, 1.184631, 1.169136, 1.101501, 1.122876, 1.102498, 1.0823}{1.129111, 1.171975, 1.188897, 1.202254, 1.195484, 1.189597, 1.173026, 1.104276, 1.124655, 1.10438, 1.084567}{1.132635, 1.175786, 1.192512, 1.206374, 1.199828, 1.19359, 1.176356, 1.108263, 1.128092, 1.108451, 1.08617}{1.136706, 1.179027, 1.198199, 1.211738, 1.203704, 1.196958, 1.179599, 1.099145, 1.132963, 1.111912, 1.087297}{1.140788, 1.182159, 1.203679, 1.215726, 1.207149, 1.200292, 1.182522, 1.103301, 1.137009, 1.113749, 1.088428}{1.148499, 1.186609, 1.205698, 1.218072, 1.210709, 1.20427, 1.18904, 1.114122, 1.140493, 1.115861, 1.091389}{1.156127, 1.192781, 1.204867, 1.220389, 1.215631, 1.208145, 1.193821, 1.127786, 1.143867, 1.118459, 1.094282}};$/;" v +NOSN_NOZCOOL_DESdepth baryons2.h /^ static double NOSN_NOZCOOL_DESdepth[100][11]={{0.9990932, 0.9997307, 1.00009, 1.000297, 1.000468, 1.000575, 1.000658, 1.000671, 1.000661, 1.000647, 1.000648}{0.9980975, 0.9990149, 0.999616, 0.9999627, 1.000178, 1.000362, 1.000532, 1.00062, 1.000651, 1.000647, 1.000644}{0.9963601, 0.9974836, 0.998541, 0.9991244, 0.9996414, 1.000051, 1.000393, 1.000549, 1.000615, 1.000625, 1.000614}{0.9953192, 0.9971, 0.9984213, 0.9991852, 0.9996231, 0.99997, 1.000394, 1.000542, 1.00057, 1.000565, 1.000571}{0.9937599, 0.9960001, 0.9976407, 0.998287, 0.9989116, 0.9994382, 0.9999653, 1.000241, 1.000358, 1.000424, 1.000467}{0.9921713, 0.9946356, 0.9966645, 0.9977173, 0.9985958, 0.9992668, 0.9998896, 1.000188, 1.000335, 1.000442, 1.000507}{0.9911154, 0.9935284, 0.9958957, 0.9968916, 0.9979616, 0.9987516, 0.9995395, 0.9999772, 1.000199, 1.000331, 1.000425}{0.9892273, 0.9916289, 0.9942042, 0.9954785, 0.9969727, 0.9982097, 0.9992463, 0.9998091, 1.000094, 1.000287, 1.000412}{0.9875901, 0.9902933, 0.9932279, 0.994587, 0.9962778, 0.9975412, 0.9988952, 0.9995868, 0.9999153, 1.000132, 1.000339}{0.9864441, 0.9890053, 0.9921165, 0.9935457, 0.9953473, 0.9969169, 0.9985777, 0.9993526, 0.9997528, 1.000096, 1.000419}{0.9862744, 0.9889519, 0.9921474, 0.9934864, 0.9951067, 0.996562, 0.9982073, 0.9989807, 0.9994138, 0.9998794, 1.000292}{0.9870366, 0.9886583, 0.9916546, 0.9927121, 0.9944819, 0.995919, 0.99757, 0.9984264, 0.9990015, 0.9997248, 1.000243}{0.9866316, 0.9878489, 0.9913512, 0.9922329, 0.9941248, 0.9955518, 0.9973387, 0.9983517, 0.9989693, 0.9997843, 1.000367}{0.9874055, 0.9881245, 0.9911093, 0.9916493, 0.9932264, 0.9950464, 0.9969949, 0.998081, 0.9988064, 0.9996644, 1.000313}{0.9870907, 0.9883318, 0.9912153, 0.9914913, 0.9927513, 0.9946258, 0.9965614, 0.997725, 0.998528, 0.999547, 1.000337}{0.9870452, 0.9886375, 0.992058, 0.9917518, 0.9927952, 0.9946132, 0.9965748, 0.9976923, 0.9985834, 0.999597, 1.000411}{0.9884296, 0.989003, 0.9925122, 0.9915496, 0.9926488, 0.9943623, 0.9961454, 0.9972314, 0.9980928, 0.9993598, 1.000438}{0.9916057, 0.9900805, 0.9932385, 0.9916872, 0.9926477, 0.9941389, 0.9961761, 0.997279, 0.9982197, 0.9994023, 1.00042}{0.993102, 0.9917895, 0.9941895, 0.9923441, 0.9931202, 0.9942561, 0.9962788, 0.9973493, 0.9982181, 0.9995445, 1.000665}{0.9926723, 0.9925039, 0.9953659, 0.9931181, 0.9934366, 0.9945307, 0.9965837, 0.997398, 0.9982583, 0.9996818, 1.000983}{0.9946157, 0.9937734, 0.995055, 0.992286, 0.9926826, 0.9936777, 0.996072, 0.9971158, 0.9980397, 0.9998163, 1.001142}{0.9955081, 0.9943024, 0.9961198, 0.9931735, 0.9934229, 0.9944189, 0.9964892, 0.9975397, 0.9982809, 1.000099, 1.001322}{0.9966049, 0.9947511, 0.9960162, 0.9929157, 0.993561, 0.9947167, 0.9972466, 0.9978881, 0.9983508, 1.000075, 1.001327}{0.9972773, 0.9942682, 0.9968872, 0.9937232, 0.9942379, 0.9956448, 0.9978312, 0.9981555, 0.9984126, 1.000326, 1.001648}{0.9997646, 0.9951153, 0.9987656, 0.9947918, 0.9948994, 0.9964467, 0.9980551, 0.9981272, 0.9986641, 1.000707, 1.002014}{1.000679, 0.99556, 0.9993752, 0.9950629, 0.9959462, 0.9971904, 0.9984795, 0.9986544, 0.999206, 1.001096, 1.002452}{1.002337, 0.9976968, 1.000637, 0.9954684, 0.9964248, 0.9974703, 0.9992472, 0.999601, 0.9998227, 1.001505, 1.00282}{1.002973, 0.9986632, 1.00083, 0.9971455, 0.9971872, 0.9979329, 0.9998502, 0.9999746, 1.000184, 1.002067, 1.003533}{1.002915, 1.000069, 1.001361, 0.9979789, 0.9984166, 0.999409, 1.000985, 1.000775, 1.000457, 1.00235, 1.004005}{1.00257, 0.9991983, 1.003722, 1.000079, 0.9990555, 0.9991723, 1.001801, 1.001619, 1.001369, 1.003302, 1.004785}{1.001088, 1.000795, 1.003551, 0.9996485, 1.000561, 1.000882, 1.002702, 1.00173, 1.001215, 1.00347, 1.005209}{1.002359, 1.001095, 1.005382, 1.001899, 1.002579, 1.001287, 1.003479, 1.002725, 1.002222, 1.004388, 1.006183}{1.003, 1.001773, 1.006223, 1.001165, 1.001938, 1.002606, 1.00492, 1.00413, 1.003275, 1.005593, 1.007326}{1.002988, 1.003312, 1.007635, 1.002329, 1.003181, 1.004101, 1.006218, 1.005293, 1.004356, 1.006719, 1.008063}{1.004337, 1.003205, 1.008787, 1.004814, 1.004653, 1.005224, 1.007217, 1.0061, 1.005676, 1.007766, 1.008795}{1.005919, 1.004181, 1.009157, 1.004883, 1.004648, 1.005927, 1.009051, 1.008281, 1.006665, 1.008355, 1.009968}{1.005442, 1.004771, 1.010597, 1.005081, 1.005647, 1.00633, 1.010413, 1.009271, 1.007629, 1.009597, 1.011191}{1.006389, 1.004999, 1.010828, 1.006327, 1.00801, 1.007905, 1.011677, 1.010167, 1.007809, 1.010381, 1.01196}{1.00343, 1.006927, 1.01232, 1.007628, 1.008513, 1.009356, 1.013218, 1.01107, 1.009045, 1.011715, 1.012947}{1.004678, 1.00934, 1.012807, 1.00854, 1.011239, 1.010243, 1.014392, 1.012382, 1.010455, 1.013763, 1.015208}{1.004989, 1.009385, 1.016603, 1.009363, 1.011862, 1.012088, 1.016063, 1.013803, 1.011686, 1.013963, 1.015482}{1.005869, 1.012763, 1.018104, 1.00985, 1.012466, 1.013391, 1.017277, 1.015405, 1.013173, 1.015533, 1.016875}{1.007674, 1.01602, 1.018264, 1.010856, 1.013115, 1.01412, 1.019377, 1.017875, 1.015649, 1.018389, 1.019802}{1.009024, 1.014881, 1.019279, 1.014545, 1.015857, 1.016538, 1.021314, 1.018697, 1.015906, 1.019044, 1.020639}{1.007104, 1.016244, 1.019031, 1.014656, 1.018565, 1.016679, 1.021618, 1.019809, 1.018523, 1.020057, 1.021911}{1.008424, 1.018716, 1.021031, 1.016431, 1.01996, 1.017921, 1.023024, 1.022006, 1.019364, 1.021579, 1.023732}{1.011152, 1.01884, 1.023647, 1.018601, 1.021587, 1.019929, 1.024905, 1.023053, 1.020945, 1.023412, 1.025626}{1.012067, 1.020046, 1.026239, 1.020926, 1.023121, 1.021834, 1.026463, 1.024745, 1.022795, 1.025149, 1.026947}{1.008652, 1.017388, 1.028336, 1.021937, 1.024833, 1.024902, 1.028951, 1.027025, 1.024948, 1.026739, 1.027648}{1.007377, 1.020061, 1.028849, 1.022146, 1.026115, 1.026397, 1.030898, 1.02923, 1.026323, 1.028846, 1.029825}{1.011355, 1.023812, 1.03015, 1.023414, 1.027964, 1.027816, 1.033015, 1.03077, 1.02916, 1.031056, 1.032362}{1.018771, 1.025361, 1.032436, 1.024718, 1.029983, 1.029602, 1.034632, 1.033134, 1.031398, 1.033017, 1.034727}{1.019358, 1.026515, 1.034719, 1.023818, 1.030478, 1.031079, 1.035115, 1.034163, 1.032879, 1.034614, 1.036581}{1.017122, 1.02742, 1.037724, 1.028072, 1.033334, 1.033829, 1.038257, 1.036879, 1.034362, 1.037117, 1.037593}{1.018583, 1.029911, 1.039772, 1.032201, 1.035829, 1.035219, 1.040382, 1.038744, 1.036388, 1.038629, 1.039802}{1.020594, 1.029713, 1.041078, 1.033443, 1.037495, 1.036671, 1.043134, 1.04185, 1.038274, 1.040766, 1.042347}{1.019591, 1.030845, 1.040644, 1.033568, 1.039265, 1.039623, 1.047514, 1.044277, 1.04063, 1.043125, 1.044244}{1.018306, 1.035253, 1.042526, 1.034602, 1.040492, 1.041525, 1.047947, 1.045835, 1.043877, 1.046394, 1.045776}{1.021931, 1.034614, 1.045083, 1.036486, 1.04311, 1.044093, 1.049218, 1.047479, 1.046383, 1.048161, 1.049058}{1.023456, 1.034401, 1.047134, 1.038101, 1.044908, 1.046281, 1.050631, 1.049824, 1.048232, 1.050153, 1.051167}{1.023277, 1.035306, 1.049181, 1.039497, 1.046855, 1.048355, 1.053298, 1.052096, 1.049908, 1.051758, 1.052199}{1.028796, 1.041277, 1.05281, 1.04274, 1.051192, 1.051934, 1.056691, 1.054368, 1.051984, 1.054428, 1.054722}{1.033892, 1.045781, 1.053944, 1.044568, 1.054291, 1.05445, 1.057954, 1.056383, 1.056223, 1.057055, 1.055605}{1.034017, 1.045687, 1.056453, 1.047106, 1.05497, 1.055159, 1.059609, 1.060529, 1.05826, 1.05844, 1.057597}{1.031904, 1.044902, 1.058536, 1.048274, 1.056318, 1.056326, 1.063401, 1.062109, 1.059609, 1.06082, 1.060202}{1.031053, 1.045362, 1.059791, 1.050957, 1.059593, 1.059909, 1.065124, 1.063466, 1.061791, 1.063773, 1.062851}{1.037227, 1.049213, 1.061046, 1.053349, 1.061104, 1.064594, 1.068452, 1.066382, 1.064452, 1.066028, 1.066031}{1.036695, 1.05255, 1.062305, 1.055988, 1.065435, 1.06767, 1.071435, 1.069878, 1.068644, 1.068624, 1.068415}{1.036028, 1.050456, 1.063861, 1.058892, 1.067556, 1.070901, 1.074494, 1.072822, 1.071113, 1.072017, 1.071253}{1.037309, 1.050255, 1.066365, 1.060485, 1.069591, 1.074316, 1.076468, 1.075815, 1.073701, 1.075475, 1.074498}{1.040511, 1.051939, 1.070887, 1.062721, 1.07218, 1.076544, 1.080701, 1.077451, 1.07473, 1.077636, 1.077279}{1.042104, 1.054964, 1.070958, 1.063811, 1.072852, 1.078514, 1.082845, 1.080218, 1.078482, 1.080578, 1.079828}{1.042628, 1.056844, 1.071134, 1.064989, 1.078297, 1.080331, 1.085342, 1.083739, 1.081504, 1.082799, 1.082273}{1.044806, 1.059755, 1.072768, 1.068877, 1.080959, 1.082243, 1.088248, 1.086884, 1.08364, 1.085347, 1.084551}{1.049816, 1.062614, 1.075773, 1.069639, 1.081204, 1.084694, 1.091862, 1.089072, 1.08621, 1.088088, 1.086757}{1.051474, 1.061548, 1.079081, 1.071259, 1.083711, 1.090229, 1.094829, 1.092006, 1.089552, 1.091374, 1.091228}{1.055308, 1.06502, 1.08281, 1.075223, 1.087038, 1.094914, 1.099431, 1.09645, 1.092751, 1.09466, 1.093754}{1.056096, 1.065105, 1.08543, 1.077417, 1.091462, 1.098158, 1.102788, 1.098817, 1.094822, 1.097447, 1.096122}{1.054801, 1.067159, 1.087099, 1.080829, 1.094749, 1.10067, 1.10518, 1.100931, 1.097707, 1.100083, 1.098252}{1.055591, 1.07149, 1.089306, 1.082985, 1.096116, 1.104133, 1.108713, 1.104792, 1.100998, 1.102098, 1.099142}{1.055832, 1.07592, 1.093371, 1.086172, 1.097439, 1.104705, 1.110471, 1.108526, 1.104728, 1.104538, 1.102912}{1.056058, 1.075877, 1.097423, 1.088426, 1.098691, 1.105201, 1.113404, 1.111529, 1.107656, 1.106973, 1.106654}{1.056802, 1.07458, 1.09911, 1.088221, 1.100444, 1.10751, 1.117658, 1.114434, 1.110944, 1.110149, 1.109968}{1.058263, 1.074981, 1.099587, 1.086278, 1.103826, 1.112395, 1.120258, 1.117719, 1.116054, 1.113685, 1.112715}{1.059694, 1.080116, 1.099282, 1.088447, 1.107238, 1.117268, 1.122386, 1.121693, 1.119044, 1.116634, 1.11538}{1.062822, 1.08144, 1.103175, 1.094686, 1.111301, 1.120798, 1.125631, 1.125125, 1.122746, 1.121333, 1.118755}{1.066134, 1.081248, 1.108034, 1.10027, 1.115396, 1.123986, 1.128326, 1.128246, 1.126601, 1.126396, 1.122154}{1.068097, 1.081561, 1.111848, 1.1027, 1.118398, 1.127229, 1.131551, 1.132112, 1.130113, 1.129045, 1.125511}{1.066944, 1.082484, 1.112707, 1.103432, 1.121576, 1.130809, 1.136313, 1.136954, 1.132493, 1.130091, 1.128985}{1.065822, 1.080405, 1.113466, 1.105403, 1.12465, 1.134341, 1.14097, 1.138824, 1.133681, 1.131501, 1.132418}{1.071168, 1.084485, 1.116019, 1.111435, 1.127525, 1.137501, 1.14466, 1.141698, 1.135688, 1.1352, 1.135831}{1.078982, 1.090705, 1.119341, 1.11787, 1.130365, 1.140475, 1.147286, 1.144004, 1.138242, 1.13927, 1.139178}{1.085763, 1.095858, 1.123347, 1.120002, 1.132818, 1.143439, 1.150102, 1.146083, 1.141563, 1.142661, 1.14247}{1.08716, 1.095782, 1.12374, 1.121561, 1.13502, 1.146586, 1.153225, 1.149449, 1.145577, 1.147036, 1.145824}{1.088528, 1.09546, 1.124206, 1.123185, 1.137253, 1.149627, 1.155892, 1.152636, 1.149195, 1.151073, 1.1491}{1.090355, 1.09795, 1.125889, 1.124543, 1.141169, 1.153037, 1.159585, 1.156119, 1.152732, 1.15379, 1.151929}{1.092484, 1.101343, 1.127871, 1.125796, 1.145903, 1.156714, 1.162547, 1.15938, 1.15629, 1.156595, 1.154451}{1.094652, 1.103853, 1.129288, 1.129583, 1.149447, 1.160297, 1.165454, 1.16226, 1.158585, 1.158962, 1.157003}{1.100106, 1.104015, 1.134086, 1.132102, 1.147288, 1.161998, 1.16723, 1.164076, 1.163772, 1.162346, 1.162344}{1.1055, 1.107, 1.138777, 1.132675, 1.145194, 1.16368, 1.168649, 1.168244, 1.167699, 1.165638, 1.167539}};$/;" v +NOSN_NOZCOOL_LSSTdepth baryons2.h /^ static double NOSN_NOZCOOL_LSSTdepth[100][11]={{0.9990932, 1.000037, 1.000413, 1.000594, 1.000671, 1.000648, 1.000621, 0.9876143, 1.00053, 1.000488, 1.000551}{0.9980975, 0.9994798, 1.000067, 1.000404, 1.00062, 1.000651, 1.000605, 0.9952854, 1.000477, 1.00042, 1.000476}{0.9963601, 0.9983342, 0.9994288, 1.000124, 1.000549, 1.000627, 1.000575, 0.9851494, 1.000407, 1.000332, 1.000381}{0.9953192, 0.998142, 0.9993872, 1.00011, 1.000542, 1.000555, 1.000534, 0.9956293, 1.000356, 1.000257, 1.000297}{0.9937599, 0.99732, 0.9986126, 0.9995503, 1.000241, 1.000415, 1.000431, 0.9817626, 1.000239, 1.000129, 1.000158}{0.9921713, 0.9962858, 0.9982109, 0.9994034, 1.000188, 1.000424, 1.000458, 0.9879599, 1.000209, 1.000058, 1.000066}{0.9911154, 0.9953738, 0.9973884, 0.9989713, 0.9999772, 1.000312, 1.000376, 0.98403, 1.000093, 0.9999156, 0.9998925}{0.9892273, 0.9936663, 0.9962902, 0.9984263, 0.9998091, 1.000257, 1.000367, 0.9804841, 1.000058, 0.9998378, 0.9997967}{0.9875901, 0.992653, 0.9954145, 0.9979101, 0.9995868, 1.000079, 1.000312, 0.981148, 1.000076, 0.9998235, 0.9997369}{0.9864441, 0.9915756, 0.994618, 0.9972548, 0.9993526, 1.000029, 1.000396, 0.9750485, 1.000105, 0.9997854, 0.999651}{0.9862744, 0.9914979, 0.9943161, 0.996916, 0.9989807, 0.9997837, 1.000271, 0.9827588, 1.000012, 0.9996734, 0.9995114}{0.9870366, 0.9910257, 0.9936423, 0.9962546, 0.9984264, 0.9996239, 1.000235, 0.9743181, 1.000005, 0.9996082, 0.9994025}{0.9866316, 0.9907024, 0.9931555, 0.99596, 0.9983517, 0.9996737, 1.000388, 0.978462, 1.0001, 0.9995935, 0.9992941}{0.9874055, 0.9905731, 0.9924124, 0.9954431, 0.998081, 0.9995339, 1.000339, 0.9742556, 1.000029, 0.9994638, 0.9991052}{0.9870907, 0.9906827, 0.9921013, 0.9950337, 0.997725, 0.9993856, 1.000375, 0.9736721, 1.00009, 0.9994902, 0.9990927}{0.9870452, 0.9915293, 0.9921575, 0.9950575, 0.9976923, 0.9994081, 1.00045, 0.9716816, 1.000289, 0.9996359, 0.9991256}{0.9884296, 0.9920653, 0.9919683, 0.9947191, 0.9972314, 0.9991454, 1.00051, 0.9693083, 1.000251, 0.9995067, 0.9989221}{0.9916057, 0.9929316, 0.9921183, 0.9945611, 0.997279, 0.9991946, 1.000482, 0.9735041, 1.000398, 0.9996031, 0.9989778}{0.993102, 0.9938858, 0.9927917, 0.9946629, 0.9973493, 0.9993377, 1.000741, 0.9682576, 1.000601, 0.999684, 0.9989826}{0.9926723, 0.9952612, 0.9931459, 0.9949568, 0.997398, 0.9994208, 1.000993, 0.97137, 1.000765, 0.9998065, 0.9989889}{0.9946157, 0.9951786, 0.992438, 0.9941562, 0.9971158, 0.999576, 1.001198, 0.9659507, 1.00095, 0.9998807, 0.9989965}{0.9955081, 0.9959513, 0.9932398, 0.9947996, 0.9975397, 0.999876, 1.001355, 0.965289, 1.00112, 0.9999389, 0.9989184}{0.9966049, 0.9960215, 0.993175, 0.9952255, 0.9978881, 0.9998499, 1.001407, 0.9675173, 1.001444, 1.000192, 0.9991652}{0.9972773, 0.9966165, 0.9938362, 0.9961405, 0.9981555, 1.00008, 1.001739, 0.9580586, 1.00188, 1.000343, 0.9990903}{0.9997646, 0.9984608, 0.9943528, 0.9967738, 0.9981272, 1.000471, 1.002123, 0.9662139, 1.001874, 1.000377, 0.9991236}{1.000679, 0.9992718, 0.9955051, 0.9974769, 0.9986544, 1.000862, 1.002552, 0.9651163, 1.002424, 1.000787, 0.9993625}{1.002337, 1.001317, 0.9956231, 0.9978213, 0.999601, 1.001293, 1.003007, 0.9666041, 1.002893, 1.001154, 0.9995507}{1.002973, 1.001047, 0.9971016, 0.9983434, 0.9999746, 1.001784, 1.003664, 0.9653454, 1.003285, 1.001274, 0.9995057}{1.002915, 1.00124, 0.9981138, 0.9996738, 1.000775, 1.002084, 1.004101, 0.9649043, 1.003713, 1.001736, 0.999817}{1.00257, 1.003072, 0.9994358, 0.9997031, 1.001619, 1.003032, 1.004915, 0.9680672, 1.004274, 1.002092, 0.999943}{1.001088, 1.003228, 1.000203, 1.00135, 1.00173, 1.003136, 1.005425, 0.9636002, 1.004781, 1.002389, 1.000069}{1.002359, 1.004786, 1.002591, 1.001735, 1.002725, 1.004054, 1.006364, 0.9647887, 1.005223, 1.002598, 1.00033}{1.003, 1.005623, 1.001652, 1.003049, 1.00413, 1.00528, 1.007524, 0.9662195, 1.006102, 1.003317, 1.000805}{1.002988, 1.007324, 1.002659, 1.004539, 1.005293, 1.006464, 1.008126, 0.9684548, 1.006702, 1.003891, 1.00121}{1.004337, 1.008106, 1.004641, 1.00564, 1.0061, 1.007514, 1.008951, 0.9688631, 1.007595, 1.004364, 1.001654}{1.005919, 1.008433, 1.004616, 1.006573, 1.008281, 1.008136, 1.01021, 0.9699803, 1.00813, 1.004685, 1.001734}{1.005442, 1.010094, 1.005327, 1.007081, 1.009271, 1.00925, 1.011282, 0.9719006, 1.008741, 1.005269, 1.002176}{1.006389, 1.010229, 1.007251, 1.00871, 1.010167, 1.010139, 1.012129, 0.9712407, 1.009706, 1.006078, 1.002663}{1.00343, 1.012024, 1.008054, 1.010145, 1.01107, 1.01149, 1.013068, 0.9732133, 1.010352, 1.006538, 1.003007}{1.004678, 1.012433, 1.01002, 1.011061, 1.012382, 1.013437, 1.015352, 0.9729627, 1.011626, 1.007174, 1.003426}{1.004989, 1.01487, 1.011007, 1.013021, 1.013803, 1.0137, 1.015425, 0.964316, 1.012531, 1.008109, 1.004145}{1.005869, 1.018673, 1.01142, 1.014119, 1.015405, 1.015178, 1.017575, 0.9721775, 1.013525, 1.009001, 1.004919}{1.007674, 1.018423, 1.012426, 1.015196, 1.017875, 1.018132, 1.019677, 0.9743341, 1.014406, 1.009562, 1.005475}{1.009024, 1.018794, 1.015222, 1.017588, 1.018697, 1.018758, 1.020436, 0.9793086, 1.015418, 1.009919, 1.005462}{1.007104, 1.01894, 1.016921, 1.017625, 1.019809, 1.019719, 1.021819, 0.9701857, 1.016936, 1.010794, 1.005998}{1.008424, 1.019776, 1.018834, 1.019023, 1.022006, 1.021169, 1.023869, 0.9777835, 1.01772, 1.01165, 1.006998}{1.011152, 1.022651, 1.021045, 1.020959, 1.023053, 1.022937, 1.025119, 0.9823042, 1.018639, 1.012779, 1.008117}{1.012067, 1.024809, 1.022414, 1.022782, 1.024745, 1.024805, 1.026514, 0.9806786, 1.020123, 1.013851, 1.009025}{1.008652, 1.025694, 1.023804, 1.025986, 1.027025, 1.026348, 1.027458, 0.9803116, 1.021731, 1.014785, 1.009903}{1.007377, 1.027654, 1.024554, 1.027211, 1.02923, 1.028572, 1.03002, 0.9751308, 1.022731, 1.015719, 1.010419}{1.011355, 1.028783, 1.026081, 1.028918, 1.03077, 1.030798, 1.032156, 0.9790564, 1.023886, 1.016806, 1.011083}{1.018771, 1.030728, 1.02769, 1.03064, 1.033134, 1.032698, 1.033794, 0.9857493, 1.025175, 1.018077, 1.012172}{1.019358, 1.033466, 1.027894, 1.031985, 1.034163, 1.034237, 1.03584, 0.9866904, 1.02651, 1.019535, 1.013676}{1.017122, 1.03627, 1.031155, 1.034756, 1.036879, 1.036644, 1.036864, 0.9875245, 1.028465, 1.020936, 1.014142}{1.018583, 1.037476, 1.034492, 1.03618, 1.038744, 1.038512, 1.039042, 0.9882411, 1.030026, 1.021865, 1.014659}{1.020594, 1.038398, 1.035635, 1.03798, 1.04185, 1.040384, 1.041018, 0.9923397, 1.03155, 1.022732, 1.015511}{1.019591, 1.038483, 1.037036, 1.041256, 1.044277, 1.042883, 1.042517, 0.9976133, 1.033127, 1.023975, 1.016735}{1.018306, 1.040945, 1.03816, 1.043159, 1.045835, 1.046068, 1.044171, 1.000118, 1.034763, 1.024413, 1.01726}{1.021931, 1.04269, 1.040375, 1.045442, 1.047479, 1.048181, 1.047801, 1.001744, 1.036447, 1.026055, 1.018499}{1.023456, 1.044057, 1.042165, 1.047185, 1.049824, 1.049831, 1.04946, 1.00108, 1.037908, 1.027742, 1.019812}{1.023277, 1.046808, 1.043658, 1.049385, 1.052096, 1.051631, 1.050774, 0.999445, 1.039363, 1.028912, 1.021116}{1.028796, 1.050701, 1.047795, 1.052968, 1.054368, 1.054324, 1.053149, 1.008611, 1.041261, 1.030435, 1.022741}{1.033892, 1.05248, 1.050386, 1.055544, 1.056383, 1.056869, 1.054115, 1.007262, 1.042963, 1.031972, 1.022998}{1.034017, 1.054064, 1.052061, 1.05573, 1.060529, 1.058683, 1.056372, 1.011311, 1.044382, 1.032999, 1.023786}{1.031904, 1.056268, 1.053048, 1.057871, 1.062109, 1.060811, 1.05908, 1.014318, 1.045954, 1.03417, 1.02512}{1.031053, 1.057813, 1.056412, 1.061005, 1.063466, 1.063948, 1.06152, 1.022828, 1.047804, 1.03581, 1.02679}{1.037227, 1.059797, 1.057991, 1.06576, 1.066382, 1.066071, 1.064552, 1.024318, 1.049634, 1.03789, 1.028013}{1.036695, 1.060907, 1.061259, 1.068499, 1.069878, 1.068493, 1.06691, 1.020601, 1.051938, 1.039838, 1.029414}{1.036028, 1.061312, 1.064123, 1.071816, 1.072822, 1.071935, 1.069958, 1.025681, 1.053181, 1.041425, 1.030776}{1.037309, 1.062822, 1.065452, 1.074763, 1.075815, 1.075658, 1.072227, 1.028005, 1.054289, 1.042911, 1.031843}{1.040511, 1.06773, 1.068043, 1.077379, 1.077451, 1.077704, 1.074458, 1.019975, 1.056354, 1.044137, 1.032215}{1.042104, 1.068918, 1.068894, 1.07948, 1.080218, 1.080492, 1.077287, 1.025454, 1.058916, 1.04696, 1.0348}{1.042628, 1.069361, 1.072234, 1.0813, 1.083739, 1.082843, 1.080034, 1.031873, 1.060323, 1.048892, 1.036563}{1.044806, 1.070967, 1.076694, 1.083502, 1.086884, 1.085338, 1.081887, 1.03548, 1.062384, 1.050774, 1.038284}{1.049816, 1.073989, 1.076395, 1.086184, 1.089072, 1.088344, 1.084264, 1.03602, 1.065429, 1.052852, 1.040528}{1.051474, 1.076954, 1.078431, 1.091689, 1.092006, 1.091444, 1.088537, 1.039157, 1.066814, 1.053967, 1.041442}{1.055308, 1.079989, 1.081711, 1.095955, 1.09645, 1.094525, 1.090996, 1.037951, 1.068657, 1.056898, 1.043147}{1.056096, 1.082917, 1.084842, 1.099182, 1.098817, 1.097552, 1.093394, 1.047308, 1.071392, 1.058861, 1.044092}{1.054801, 1.08571, 1.089301, 1.101611, 1.100931, 1.100314, 1.095161, 1.054408, 1.073553, 1.06, 1.044882}{1.055591, 1.087661, 1.090193, 1.105097, 1.104792, 1.102618, 1.096574, 1.046989, 1.07487, 1.061718, 1.04729}{1.055832, 1.089271, 1.092637, 1.105672, 1.108526, 1.104969, 1.100804, 1.049911, 1.077571, 1.064436, 1.049135}{1.056058, 1.093036, 1.093804, 1.106182, 1.111529, 1.107282, 1.104124, 1.055208, 1.080213, 1.066514, 1.050901}{1.056802, 1.097886, 1.093474, 1.109619, 1.114434, 1.110048, 1.106704, 1.062971, 1.082292, 1.068585, 1.052341}{1.058263, 1.098924, 1.096016, 1.114775, 1.117719, 1.113419, 1.109789, 1.057891, 1.084833, 1.070265, 1.053379}{1.059694, 1.09936, 1.099008, 1.11873, 1.121693, 1.116684, 1.112553, 1.058158, 1.086884, 1.071224, 1.054401}{1.062822, 1.100532, 1.104609, 1.121919, 1.125125, 1.121342, 1.116304, 1.058872, 1.089137, 1.074197, 1.057549}{1.066134, 1.105001, 1.10819, 1.125237, 1.128246, 1.126163, 1.119458, 1.059187, 1.091525, 1.076647, 1.060923}{1.068097, 1.107293, 1.11096, 1.128128, 1.132112, 1.129842, 1.121742, 1.067273, 1.09394, 1.079232, 1.063708}{1.066944, 1.107243, 1.113279, 1.131901, 1.136954, 1.130829, 1.125618, 1.069448, 1.097234, 1.082294, 1.065324}{1.065822, 1.108093, 1.116045, 1.135687, 1.138824, 1.131787, 1.128341, 1.0726, 1.100112, 1.084119, 1.066905}{1.071168, 1.113102, 1.121745, 1.139069, 1.141698, 1.134846, 1.131731, 1.076427, 1.102583, 1.086666, 1.069277}{1.078982, 1.116184, 1.124304, 1.142172, 1.144004, 1.138716, 1.135293, 1.078372, 1.105177, 1.088596, 1.071871}{1.085763, 1.118644, 1.126692, 1.144837, 1.146083, 1.142634, 1.138196, 1.081629, 1.107114, 1.090214, 1.074321}{1.08716, 1.118608, 1.128568, 1.148124, 1.149449, 1.146814, 1.141942, 1.083031, 1.108795, 1.092312, 1.076484}{1.088528, 1.119001, 1.13049, 1.151206, 1.152636, 1.15083, 1.145214, 1.08554, 1.110394, 1.094117, 1.078604}{1.090355, 1.120961, 1.13223, 1.154428, 1.156119, 1.154026, 1.148118, 1.089037, 1.113539, 1.097909, 1.080069}{1.092484, 1.122862, 1.136563, 1.158297, 1.15938, 1.156694, 1.150914, 1.079617, 1.117951, 1.101147, 1.081067}{1.094652, 1.124753, 1.140716, 1.16137, 1.16226, 1.159336, 1.153484, 1.083246, 1.121664, 1.102907, 1.082074}{1.100106, 1.128934, 1.141157, 1.16316, 1.164076, 1.162552, 1.159378, 1.093504, 1.124769, 1.104848, 1.08491}{1.1055, 1.133324, 1.139391, 1.164925, 1.168244, 1.165685, 1.163696, 1.106596, 1.127776, 1.107192, 1.087681}};$/;" v +NOZCOOL_DESdepth baryons2.h /^ static double NOZCOOL_DESdepth[100][11]={{0.9985162, 0.9990644, 0.9993579, 0.9995421, 0.9997053, 0.9998427, 0.9999944, 1.000087, 1.000175, 1.000267, 1.000372}{0.9970993, 0.9980107, 0.9985687, 0.9989136, 0.9991069, 0.9992959, 0.9995091, 0.9996959, 0.9998575, 0.9999883, 1.000126}{0.9950728, 0.9963094, 0.9974101, 0.9979237, 0.9983466, 0.9986569, 0.9989661, 0.9991912, 0.9993935, 0.9995899, 0.9998028}{0.9937125, 0.9956226, 0.9969145, 0.9974468, 0.9976517, 0.9978492, 0.9982503, 0.9985379, 0.9987925, 0.999043, 0.9993391}{0.9919158, 0.994528, 0.9962646, 0.9965589, 0.9967023, 0.9969155, 0.9973193, 0.9976493, 0.9979785, 0.9983675, 0.9987863}{0.9908396, 0.9932565, 0.9951334, 0.9955348, 0.9957161, 0.9959677, 0.9964353, 0.9968486, 0.9972767, 0.9977793, 0.9983069}{0.9898224, 0.9922295, 0.9944029, 0.9946013, 0.9946397, 0.9947687, 0.995288, 0.9957687, 0.996299, 0.9969168, 0.9975582}{0.9882405, 0.9903662, 0.9925999, 0.9928451, 0.9931362, 0.9936194, 0.9943632, 0.994969, 0.9955513, 0.9962386, 0.9970125}{0.986594, 0.9891451, 0.9916765, 0.9917387, 0.9919326, 0.9922781, 0.993195, 0.9938432, 0.9944853, 0.9952641, 0.9961774}{0.9853322, 0.9875564, 0.9903588, 0.9904053, 0.9905252, 0.9909504, 0.992071, 0.9927582, 0.9934578, 0.9944114, 0.9955736}{0.9852575, 0.9879425, 0.9908382, 0.9903315, 0.9898735, 0.9899787, 0.9908723, 0.9914434, 0.9921364, 0.993182, 0.9944747}{0.9867572, 0.9883332, 0.9907473, 0.9895409, 0.988803, 0.9888349, 0.9895824, 0.9900832, 0.9907996, 0.9920814, 0.9936176}{0.9873684, 0.9882472, 0.9909266, 0.989082, 0.9878972, 0.987532, 0.9881744, 0.9888371, 0.9896698, 0.9911389, 0.9928493}{0.9881402, 0.9888719, 0.9907953, 0.988039, 0.9861927, 0.9858615, 0.9867193, 0.9874445, 0.9884321, 0.9900055, 0.991881}{0.987737, 0.9891748, 0.9904644, 0.9871633, 0.9847933, 0.9843788, 0.9853035, 0.986053, 0.9870345, 0.9887432, 0.990842}{0.9880309, 0.9892342, 0.9908377, 0.9870621, 0.9842894, 0.9833656, 0.9840967, 0.9847325, 0.9857942, 0.9875223, 0.9896919}{0.9884873, 0.9886889, 0.990319, 0.9856597, 0.983124, 0.98286, 0.9833624, 0.9837856, 0.984587, 0.9863045, 0.9887344}{0.9919616, 0.9903213, 0.9907753, 0.9851736, 0.9822748, 0.9814339, 0.9819891, 0.9822979, 0.983162, 0.9849718, 0.9875529}{0.9934404, 0.9923502, 0.9915889, 0.9856351, 0.9825537, 0.981076, 0.981229, 0.9813613, 0.9820003, 0.9838461, 0.9865873}{0.9944291, 0.9935311, 0.9922774, 0.9855407, 0.9818977, 0.9799404, 0.9801995, 0.9801362, 0.9808505, 0.982842, 0.98585}{0.996577, 0.9947131, 0.9919242, 0.9847322, 0.9807258, 0.9782983, 0.9787142, 0.9785738, 0.9791164, 0.9813252, 0.9845004}{0.997682, 0.9947723, 0.9914161, 0.9841598, 0.9798615, 0.9769809, 0.9770553, 0.9770143, 0.9776809, 0.9801065, 0.9833457}{0.9987193, 0.9952593, 0.9903264, 0.98262, 0.9780844, 0.9752269, 0.975983, 0.9759595, 0.9764026, 0.9785811, 0.9818796}{0.9996153, 0.9938562, 0.9905781, 0.9832832, 0.9784028, 0.9756175, 0.9759095, 0.9750916, 0.9747335, 0.9770267, 0.9807955}{1.002914, 0.9939896, 0.9920983, 0.984037, 0.9783325, 0.9754057, 0.9746416, 0.9731114, 0.9731749, 0.9759066, 0.9798493}{1.003968, 0.9945215, 0.9933578, 0.9838683, 0.978137, 0.9746065, 0.9734195, 0.9721727, 0.9722981, 0.9748579, 0.9788411}{1.007205, 0.9966487, 0.9941175, 0.9835255, 0.9774195, 0.9736171, 0.9729576, 0.9715268, 0.971268, 0.9738143, 0.9777378}{1.007593, 0.9975114, 0.9937038, 0.9841525, 0.9766054, 0.9723215, 0.9715795, 0.9702312, 0.9701166, 0.9728055, 0.9768661}{1.00782, 0.9984328, 0.9925589, 0.9843937, 0.9773429, 0.972332, 0.9712519, 0.9692422, 0.9684839, 0.9710837, 0.9755986}{1.006533, 0.9972628, 0.9938418, 0.9846264, 0.9763594, 0.970736, 0.9703358, 0.9684283, 0.9676625, 0.9703246, 0.9747926}{1.004952, 0.9994252, 0.9944492, 0.984126, 0.9769289, 0.9709816, 0.9696007, 0.9668545, 0.9657094, 0.9688982, 0.9736288}{1.007813, 0.9988501, 0.995617, 0.9860078, 0.9777349, 0.9699878, 0.9680203, 0.9654909, 0.9650138, 0.9681599, 0.9729108}{1.007853, 0.999249, 0.9963074, 0.9843464, 0.9762384, 0.9692748, 0.9674548, 0.9652589, 0.9646714, 0.9675583, 0.9723471}{1.008918, 1.00082, 0.997517, 0.9843173, 0.9753821, 0.9680706, 0.966301, 0.9644855, 0.9640122, 0.9670309, 0.9715}{1.011195, 0.9998062, 0.9981152, 0.9866823, 0.9753643, 0.9674792, 0.9659485, 0.9639022, 0.9635993, 0.9658278, 0.9701581}{1.013934, 1.000423, 0.997397, 0.984814, 0.9739777, 0.966796, 0.9661019, 0.9641685, 0.9628787, 0.9649573, 0.9700329}{1.013319, 1.001739, 0.9989523, 0.983553, 0.9734384, 0.9661499, 0.9654904, 0.9631569, 0.9617932, 0.9639543, 0.9692221}{1.01471, 1.002655, 0.9980797, 0.9844851, 0.9746326, 0.9658918, 0.9648742, 0.962065, 0.9599568, 0.9625816, 0.967891}{1.011097, 1.003437, 0.9981863, 0.9840528, 0.9731489, 0.9656473, 0.9645417, 0.9610852, 0.9590204, 0.9616272, 0.9670088}{1.011059, 1.005733, 0.9962771, 0.9828813, 0.9752031, 0.9637087, 0.9636278, 0.9604747, 0.9584192, 0.9620867, 0.9677138}{1.011036, 1.00573, 0.9998546, 0.9829705, 0.9741465, 0.9638714, 0.9634038, 0.9596795, 0.9581339, 0.9606145, 0.9661521}{1.012653, 1.009607, 1.000176, 0.9820662, 0.9732633, 0.9632056, 0.9619135, 0.9588123, 0.9574557, 0.9601509, 0.9654584}{1.015843, 1.013236, 0.9988285, 0.9819978, 0.9721729, 0.9613253, 0.9610875, 0.9590447, 0.9577155, 0.9605762, 0.9660072}{1.017574, 1.010435, 1.000642, 0.9852431, 0.9737283, 0.9617113, 0.9616824, 0.9583844, 0.9558063, 0.9580579, 0.9639769}{1.015156, 1.011009, 0.9987591, 0.9841751, 0.9745118, 0.9596979, 0.9592429, 0.956586, 0.9559982, 0.9574621, 0.9643424}{1.017355, 1.013185, 1.00003, 0.9846669, 0.9744451, 0.9601955, 0.959263, 0.9572932, 0.955226, 0.957112, 0.9640402}{1.021455, 1.012966, 1.002112, 0.9856953, 0.9750474, 0.9617738, 0.9598925, 0.9563804, 0.9548751, 0.9566919, 0.963339}{1.022833, 1.013593, 1.00388, 0.9867078, 0.9750369, 0.9620354, 0.9590325, 0.9562649, 0.9550488, 0.9566952, 0.9629691}{1.017776, 1.009473, 1.000804, 0.985495, 0.9729502, 0.9621015, 0.9587166, 0.9561235, 0.9550321, 0.9556714, 0.9617872}{1.016993, 1.01255, 1.001388, 0.9842783, 0.9728529, 0.9624398, 0.9593321, 0.9565325, 0.9534359, 0.955196, 0.9616464}{1.021291, 1.014474, 1.002319, 0.9845629, 0.9733022, 0.9622155, 0.9592815, 0.9549487, 0.9542785, 0.955175, 0.9621235}{1.02839, 1.014252, 1.003914, 0.984927, 0.9732694, 0.9615744, 0.9582911, 0.9555994, 0.9546729, 0.9552485, 0.9627008}{1.029594, 1.015875, 1.00578, 0.9837407, 0.971926, 0.9619916, 0.9563833, 0.9541938, 0.9538676, 0.954732, 0.9623523}{1.026929, 1.015773, 1.006922, 0.9844801, 0.9739179, 0.9604086, 0.9571339, 0.9553898, 0.9534214, 0.9550716, 0.9615871}{1.02785, 1.017125, 1.007398, 0.9877, 0.9740863, 0.9599283, 0.9580908, 0.9552597, 0.9528844, 0.9549449, 0.9622197}{1.029602, 1.015459, 1.007761, 0.9875783, 0.9735245, 0.9602751, 0.9586909, 0.9559302, 0.9526041, 0.9549958, 0.962705}{1.028605, 1.015621, 1.006126, 0.9855812, 0.972145, 0.9607636, 0.9610921, 0.9560013, 0.952296, 0.9543719, 0.9615884}{1.023619, 1.018435, 1.006291, 0.9843351, 0.9732153, 0.9600715, 0.95888, 0.9551185, 0.9532176, 0.9548984, 0.9614093}{1.028113, 1.017376, 1.008004, 0.9862378, 0.9728082, 0.9611857, 0.958235, 0.9545875, 0.9533419, 0.9542957, 0.9621708}{1.031442, 1.01711, 1.009068, 0.9853701, 0.972491, 0.9610766, 0.9567596, 0.9537858, 0.9533641, 0.9543147, 0.9619876}{1.031846, 1.017011, 1.009128, 0.9846738, 0.972553, 0.960306, 0.9565212, 0.9547602, 0.9530834, 0.9541428, 0.9612105}{1.034721, 1.021538, 1.010139, 0.9864801, 0.9764235, 0.9630388, 0.9589067, 0.9546113, 0.9523325, 0.9547786, 0.9623269}{1.039817, 1.02403, 1.013546, 0.988059, 0.9766506, 0.9642363, 0.9576677, 0.9538687, 0.9546199, 0.9553228, 0.9608834}{1.040318, 1.02347, 1.013975, 0.9881292, 0.9758269, 0.9611548, 0.9555345, 0.95516, 0.9537122, 0.9539323, 0.9603208}{1.039086, 1.021462, 1.013074, 0.9874348, 0.9745491, 0.9588746, 0.9570904, 0.9545224, 0.952572, 0.9537245, 0.9605266}{1.039347, 1.021479, 1.011726, 0.987986, 0.9756054, 0.9613854, 0.9575611, 0.9542247, 0.9527828, 0.9546288, 0.9611754}{1.042359, 1.023181, 1.01183, 0.9899553, 0.9749262, 0.9627809, 0.9586035, 0.9549351, 0.9532447, 0.9551744, 0.962374}{1.039938, 1.025484, 1.011274, 0.9904495, 0.9760652, 0.9624664, 0.9587732, 0.9557692, 0.9549663, 0.954448, 0.9624818}{1.038618, 1.021526, 1.010333, 0.9901791, 0.9754086, 0.9630167, 0.9591042, 0.9556274, 0.9544001, 0.9552607, 0.9630166}{1.039901, 1.020376, 1.010862, 0.9897712, 0.9755941, 0.9640722, 0.9577071, 0.9559872, 0.9548593, 0.9564936, 0.9639997}{1.042537, 1.021756, 1.015831, 0.9913366, 0.9770893, 0.9631477, 0.9593874, 0.9559218, 0.9542642, 0.956536, 0.9645226}{1.045302, 1.026582, 1.013542, 0.9909095, 0.9754694, 0.9624461, 0.9593555, 0.9560332, 0.9544481, 0.9570892, 0.964739}{1.046158, 1.026896, 1.011926, 0.989853, 0.9771835, 0.9619866, 0.9592484, 0.9561304, 0.9549889, 0.956874, 0.964707}{1.04737, 1.025562, 1.012045, 0.9903921, 0.9773395, 0.9618694, 0.9594663, 0.9570025, 0.9544491, 0.9567664, 0.9646614}{1.05017, 1.026887, 1.013581, 0.9891053, 0.976177, 0.9623594, 0.9609238, 0.9565615, 0.9542702, 0.9570743, 0.9648962}{1.050222, 1.025043, 1.015344, 0.9897984, 0.9775507, 0.9648207, 0.9615102, 0.9570051, 0.9549605, 0.9578077, 0.9662057}{1.055358, 1.026808, 1.014808, 0.992461, 0.977413, 0.9670813, 0.9633097, 0.9584976, 0.9557212, 0.9585014, 0.9666203}{1.055463, 1.025035, 1.016677, 0.993659, 0.9789638, 0.9680791, 0.9640518, 0.9586206, 0.9561442, 0.959116, 0.9672319}{1.052408, 1.026225, 1.018109, 0.9955378, 0.9800576, 0.9680957, 0.9638478, 0.9591144, 0.9568174, 0.9595814, 0.9675984}{1.054237, 1.029072, 1.017813, 0.9962823, 0.980173, 0.9681865, 0.9647693, 0.9599681, 0.9571648, 0.9591004, 0.9664384}{1.051992, 1.032305, 1.020061, 0.9974165, 0.9805999, 0.9666221, 0.9638092, 0.9601328, 0.9582195, 0.9585504, 0.967709}{1.049696, 1.032578, 1.022311, 0.9981032, 0.9810223, 0.965064, 0.9638867, 0.9609473, 0.9586289, 0.9580151, 0.9690011}{1.049315, 1.03111, 1.022535, 0.9966761, 0.9797312, 0.964697, 0.9646015, 0.9612701, 0.9592017, 0.959046, 0.9699821}{1.051575, 1.02982, 1.021906, 0.9931754, 0.9782448, 0.9659697, 0.9644143, 0.961625, 0.9611419, 0.9602187, 0.9705462}{1.053787, 1.032149, 1.020418, 0.9916076, 0.977664, 0.9672393, 0.9640416, 0.9631359, 0.9621616, 0.9611456, 0.9710939}{1.055293, 1.03449, 1.021068, 0.9939127, 0.97963, 0.9689292, 0.9655532, 0.9646643, 0.9636764, 0.9628055, 0.9718896}{1.056627, 1.032407, 1.022368, 0.996367, 0.9817577, 0.9706393, 0.9667906, 0.965995, 0.9652165, 0.9646262, 0.9727044}{1.057181, 1.030171, 1.024005, 0.9971503, 0.9829886, 0.971854, 0.9677207, 0.9677855, 0.96561, 0.9650222, 0.973626}{1.055894, 1.029149, 1.025455, 0.9960848, 0.983776, 0.971941, 0.9696919, 0.9695928, 0.9634336, 0.9638083, 0.974868}{1.054641, 1.0262, 1.026315, 0.9962362, 0.9843789, 0.9720269, 0.9721161, 0.9678344, 0.9621792, 0.9631379, 0.9760954}{1.058582, 1.027279, 1.026296, 1.00106, 0.984228, 0.972757, 0.973251, 0.9667037, 0.9621212, 0.9648972, 0.9766942}{1.064506, 1.03142, 1.02664, 1.006234, 0.9840228, 0.9737227, 0.9725318, 0.9665401, 0.9626362, 0.9669355, 0.9770426}{1.069863, 1.035123, 1.029287, 1.005706, 0.9842786, 0.974534, 0.9719435, 0.9667118, 0.9641131, 0.967839, 0.9775261}{1.072323, 1.033089, 1.030083, 1.004506, 0.98421, 0.9745901, 0.9720882, 0.9670179, 0.9648756, 0.9680838, 0.9787793}{1.074733, 1.032798, 1.030693, 1.004003, 0.9841396, 0.9746445, 0.9722395, 0.9676153, 0.9653134, 0.9684033, 0.9800037}{1.07657, 1.036, 1.02984, 1.003633, 0.985048, 0.975239, 0.9730104, 0.9685157, 0.9662992, 0.9688383, 0.9810842}{1.078007, 1.038705, 1.029073, 1.003137, 0.9865985, 0.9762019, 0.9738803, 0.9696762, 0.9677161, 0.9688345, 0.9820666}{1.079447, 1.039095, 1.028435, 1.004042, 0.9876231, 0.9771067, 0.9746908, 0.9708228, 0.9677277, 0.9692905, 0.9830406}{1.082143, 1.036817, 1.030899, 1.005277, 0.9867491, 0.9761215, 0.9738076, 0.9701971, 0.9680568, 0.9702355, 0.9842918}{1.084809, 1.036158, 1.033308, 1.005479, 0.9859003, 0.9751485, 0.9732687, 0.9704482, 0.9685983, 0.9711548, 0.9855087}};$/;" v +NOZCOOL_LSSTdepth baryons2.h /^ static double NOZCOOL_LSSTdepth[100][11]={{0.9985162, 0.9993199, 0.9996571, 0.9998762, 1.000087, 1.000241, 1.00038, 0.9874492, 1.000462, 1.000488, 1.00046}{0.9970993, 0.9984401, 0.9989939, 0.9993586, 0.9996959, 0.9999431, 1.000153, 0.9949615, 1.00031, 1.000359, 1.000341}{0.9950728, 0.99721, 0.9981701, 0.9987224, 0.9991912, 0.9995433, 0.9998399, 0.9846464, 1.000114, 1.000191, 1.000194}{0.9937125, 0.9966709, 0.9975228, 0.9979819, 0.9985379, 0.9989512, 0.9994389, 0.9948458, 0.999882, 1.000008, 1.000024}{0.9919158, 0.9959686, 0.9966212, 0.9970025, 0.9976493, 0.9982821, 0.9988827, 0.9806759, 0.9995501, 0.9997314, 0.9997935}{0.9908396, 0.9948345, 0.9956238, 0.9960762, 0.9968486, 0.9976437, 0.9984712, 0.9865558, 0.999293, 0.9995258, 0.9995978}{0.9898224, 0.99401, 0.9945421, 0.9949367, 0.9957687, 0.9967637, 0.9977366, 0.982157, 0.9988613, 0.9991635, 0.9993019}{0.9882405, 0.9922166, 0.9929743, 0.9937787, 0.994969, 0.9960629, 0.9972459, 0.978283, 0.9985713, 0.9989311, 0.9990848}{0.986594, 0.9913207, 0.9917721, 0.992527, 0.9938432, 0.9950308, 0.9964767, 0.9783639, 0.998175, 0.9986206, 0.9988349}{0.9853322, 0.9900269, 0.9905117, 0.9911784, 0.9927582, 0.9941696, 0.9958919, 0.9718012, 0.9977971, 0.9983026, 0.998551}{0.9852575, 0.9904499, 0.990037, 0.9901812, 0.9914434, 0.9928794, 0.9948794, 0.9787572, 0.9971972, 0.9978555, 0.9981859}{0.9867572, 0.9904557, 0.989066, 0.9889866, 0.9900832, 0.9917823, 0.9940398, 0.9697994, 0.9967743, 0.9975004, 0.9978911}{0.9873684, 0.9906982, 0.9883353, 0.9876831, 0.9888371, 0.9907717, 0.993391, 0.9732644, 0.9963714, 0.9971622, 0.9975519}{0.9881402, 0.9908483, 0.9869491, 0.9860357, 0.9874445, 0.9896232, 0.9924168, 0.9683841, 0.9957739, 0.9966497, 0.9971271}{0.987737, 0.9906847, 0.9857763, 0.9846044, 0.986053, 0.9883215, 0.9914632, 0.9670286, 0.995217, 0.9962539, 0.9967728}{0.9880309, 0.9910657, 0.9853666, 0.9836066, 0.9847325, 0.9870404, 0.990341, 0.9640813, 0.994678, 0.9958439, 0.9964686}{0.9884873, 0.9906692, 0.9840317, 0.9829504, 0.9837856, 0.9858287, 0.9894533, 0.9609623, 0.9939795, 0.9952772, 0.9959316}{0.9919616, 0.9915383, 0.9835159, 0.9815206, 0.9822979, 0.9844123, 0.988367, 0.9642947, 0.9935292, 0.994905, 0.9956661}{0.9934404, 0.9923538, 0.9839765, 0.981107, 0.9813613, 0.9833332, 0.9873757, 0.9580669, 0.9928409, 0.9943645, 0.9952478}{0.9944291, 0.9935623, 0.9834114, 0.9800262, 0.9801362, 0.9822469, 0.9866614, 0.9603001, 0.9923265, 0.9939572, 0.9948483}{0.996577, 0.9933128, 0.9825157, 0.9783815, 0.9785738, 0.9807441, 0.9853593, 0.9538213, 0.9916133, 0.9933573, 0.9943931}{0.997682, 0.992858, 0.9818592, 0.9769319, 0.9770143, 0.9795312, 0.9841554, 0.9519718, 0.990742, 0.9925918, 0.9937674}{0.9987193, 0.9920142, 0.9800928, 0.9753789, 0.9759595, 0.9779916, 0.9828346, 0.9530831, 0.9902123, 0.992243, 0.9935628}{0.9996153, 0.9919084, 0.9805486, 0.9757808, 0.9750916, 0.9764748, 0.9817168, 0.9427015, 0.9896394, 0.991564, 0.992905}{1.002914, 0.9932457, 0.9807569, 0.9752506, 0.9731114, 0.9752077, 0.9809059, 0.9495139, 0.9886526, 0.9908806, 0.9924141}{1.003968, 0.9946131, 0.9807655, 0.9743576, 0.9721727, 0.9742344, 0.979863, 0.9473183, 0.9882312, 0.9906286, 0.9921536}{1.007205, 0.9963517, 0.979899, 0.9734813, 0.9715268, 0.973173, 0.9788626, 0.9474735, 0.9876233, 0.9900349, 0.991619}{1.007593, 0.9957046, 0.9799985, 0.9721485, 0.9702312, 0.9720828, 0.9780195, 0.9450699, 0.987008, 0.9894733, 0.9911047}{1.00782, 0.9941261, 0.9807009, 0.9720978, 0.9692422, 0.9703686, 0.9767853, 0.9433714, 0.9862637, 0.9888998, 0.9906875}{1.006533, 0.9951073, 0.9801574, 0.9706531, 0.9684283, 0.9695173, 0.9760786, 0.945038, 0.9854631, 0.988282, 0.9900844}{1.004952, 0.9959865, 0.9803008, 0.9708512, 0.9668545, 0.968086, 0.9749072, 0.9393259, 0.9848721, 0.9876886, 0.9896585}{1.007813, 0.9966355, 0.9818564, 0.9695861, 0.9654909, 0.9673063, 0.9742953, 0.9391832, 0.9843706, 0.9871884, 0.9892326}{1.007853, 0.9976079, 0.9800757, 0.968779, 0.9652589, 0.9667657, 0.9736807, 0.9390965, 0.9838304, 0.9868302, 0.9889526}{1.008918, 0.9990359, 0.9794961, 0.9677053, 0.9644855, 0.9662629, 0.9728099, 0.9400211, 0.9833621, 0.9864586, 0.9886374}{1.011195, 0.999334, 0.9805823, 0.9671512, 0.9639022, 0.965076, 0.9716026, 0.9389532, 0.9829867, 0.986046, 0.9883251}{1.013934, 0.9986785, 0.9789239, 0.9666393, 0.9641685, 0.9641444, 0.9715395, 0.938708, 0.9824371, 0.9853178, 0.9875976}{1.013319, 1.000708, 0.9780864, 0.966023, 0.9631569, 0.9630151, 0.9707446, 0.9393768, 0.9818889, 0.9850299, 0.9873902}{1.01471, 1.000278, 0.9792829, 0.9656863, 0.962065, 0.9618008, 0.9695537, 0.937209, 0.9813453, 0.9844607, 0.9869117}{1.011097, 1.000528, 0.9780283, 0.9654215, 0.9610852, 0.9606573, 0.9687878, 0.9376981, 0.9807241, 0.9840203, 0.9863908}{1.011059, 0.9990288, 0.9788302, 0.9633743, 0.9604747, 0.9611269, 0.9693995, 0.9359455, 0.9805237, 0.983746, 0.9861102}{1.011036, 1.000926, 0.978727, 0.9639701, 0.9596795, 0.9597121, 0.9674848, 0.9259711, 0.9801115, 0.9832935, 0.9858232}{1.012653, 1.004785, 0.9777527, 0.9628619, 0.9588123, 0.9591652, 0.9675828, 0.9318586, 0.9796135, 0.9829572, 0.9857003}{1.015843, 1.002287, 0.9775878, 0.9612766, 0.9590447, 0.9596434, 0.9675261, 0.9321616, 0.9791708, 0.9827951, 0.9855385}{1.017574, 1.003227, 0.9793081, 0.9616984, 0.9583844, 0.9571156, 0.9656276, 0.9353347, 0.9784472, 0.9815157, 0.9843095}{1.015156, 1.002167, 0.979435, 0.9595758, 0.956586, 0.9564438, 0.9660953, 0.9254839, 0.9786653, 0.9814136, 0.9838968}{1.017355, 1.002074, 0.9799997, 0.9601522, 0.9572932, 0.955854, 0.9657789, 0.9310073, 0.9781804, 0.9810376, 0.9839653}{1.021455, 1.00448, 0.9810138, 0.9614073, 0.9563804, 0.9554556, 0.9648322, 0.9335285, 0.9776868, 0.9809792, 0.9840233}{1.022833, 1.00612, 0.9810048, 0.9614203, 0.9562649, 0.955536, 0.9644665, 0.9302552, 0.9775705, 0.9807373, 0.9835995}{1.017776, 1.002813, 0.9792473, 0.9614963, 0.9561235, 0.954613, 0.9635121, 0.9284942, 0.9774587, 0.9803217, 0.9835903}{1.016993, 1.004005, 0.978376, 0.9617543, 0.9565325, 0.9541365, 0.963653, 0.9219057, 0.9769133, 0.9800094, 0.9831575}{1.021291, 1.004533, 0.9787566, 0.9616252, 0.9549487, 0.9539803, 0.9640606, 0.9239504, 0.9764562, 0.9796404, 0.9828183}{1.02839, 1.006059, 0.9791597, 0.9608969, 0.9555994, 0.9539092, 0.9639278, 0.9287523, 0.9761035, 0.9795477, 0.9828007}{1.029594, 1.008264, 0.9776505, 0.9609838, 0.9541938, 0.9533617, 0.9639591, 0.9281905, 0.9762188, 0.9802046, 0.9832507}{1.026929, 1.008804, 0.9789738, 0.9591675, 0.9553898, 0.953705, 0.9630997, 0.9273589, 0.9760983, 0.9796644, 0.9826217}{1.02785, 1.008667, 0.9810391, 0.9595553, 0.9552597, 0.953811, 0.9636742, 0.9265427, 0.9762879, 0.9797274, 0.9822286}{1.029602, 1.008801, 0.980483, 0.959915, 0.9559302, 0.9535515, 0.9635221, 0.9286339, 0.9764812, 0.9794029, 0.9821287}{1.028605, 1.007625, 0.9784428, 0.9608316, 0.9560013, 0.9530213, 0.962465, 0.932202, 0.9762432, 0.9791735, 0.9821997}{1.023619, 1.0084, 0.9787098, 0.9600468, 0.9551185, 0.9535613, 0.9622385, 0.9327011, 0.9765626, 0.9786984, 0.9817197}{1.028113, 1.009256, 0.9794145, 0.9609337, 0.9545875, 0.9531586, 0.9630493, 0.933073, 0.9768383, 0.9789369, 0.9817176}{1.031442, 1.009784, 0.978626, 0.9601284, 0.9537858, 0.9527918, 0.9630911, 0.9307449, 0.9768656, 0.9792126, 0.982014}{1.031846, 1.010975, 0.9780981, 0.9595175, 0.9547602, 0.9528452, 0.9624962, 0.9267575, 0.9768006, 0.9794244, 0.9823625}{1.034721, 1.012259, 0.9816676, 0.9622278, 0.9546113, 0.9534055, 0.9631066, 0.9336411, 0.9769339, 0.9794329, 0.9822986}{1.039817, 1.015246, 0.9824731, 0.9634446, 0.9538687, 0.953919, 0.9616176, 0.9310289, 0.9768846, 0.9792332, 0.9817447}{1.040318, 1.015946, 0.9819715, 0.9593572, 0.95516, 0.9530122, 0.9614582, 0.9337959, 0.9764135, 0.9786549, 0.9813617}{1.039086, 1.015692, 0.9812026, 0.9585729, 0.9545224, 0.9523986, 0.9625912, 0.9350186, 0.9765392, 0.978743, 0.981431}{1.039347, 1.014336, 0.9821791, 0.9605821, 0.9542247, 0.9534305, 0.9629488, 0.9409949, 0.977561, 0.9796078, 0.9820379}{1.042359, 1.014647, 0.9822299, 0.9620208, 0.9549351, 0.9539315, 0.9638115, 0.9405081, 0.9774193, 0.9801564, 0.9821217}{1.039938, 1.014013, 0.9829194, 0.9615642, 0.9557692, 0.9531659, 0.9636821, 0.9354796, 0.9775012, 0.980321, 0.9822331}{1.038618, 1.012467, 0.9826992, 0.9624067, 0.9556274, 0.9536834, 0.9649098, 0.9382652, 0.9770355, 0.9806881, 0.9823173}{1.039901, 1.011869, 0.9823861, 0.9627528, 0.9559872, 0.9551187, 0.9650901, 0.9386059, 0.9769432, 0.9809651, 0.9821653}{1.042537, 1.017418, 0.9840228, 0.962281, 0.9559218, 0.9550822, 0.9653225, 0.930566, 0.9777942, 0.9804523, 0.9813815}{1.045302, 1.017381, 0.98295, 0.9616636, 0.9560332, 0.9556033, 0.9656143, 0.9333537, 0.9779253, 0.9816836, 0.9824145}{1.046158, 1.015088, 0.9832853, 0.9613835, 0.9561304, 0.9554722, 0.9657529, 0.9373935, 0.977739, 0.982089, 0.9831181}{1.04737, 1.015096, 0.9842274, 0.9613325, 0.9570025, 0.9553063, 0.9655962, 0.9391774, 0.9783349, 0.9829557, 0.9838875}{1.05017, 1.017282, 0.9826442, 0.962061, 0.9565615, 0.9556187, 0.9660889, 0.9379413, 0.9798245, 0.9837376, 0.9849096}{1.050222, 1.018862, 0.9836964, 0.9644561, 0.9570051, 0.9562964, 0.9673368, 0.9387344, 0.9795581, 0.983479, 0.9845019}{1.055358, 1.017657, 0.9845542, 0.9664191, 0.9584976, 0.9569137, 0.9676457, 0.9354232, 0.9797357, 0.9846132, 0.9847975}{1.055463, 1.018658, 0.9857205, 0.9672627, 0.9586206, 0.9576056, 0.968065, 0.9422771, 0.9805815, 0.984794, 0.9845066}{1.052408, 1.021715, 0.9876617, 0.9672086, 0.9591144, 0.958063, 0.9680936, 0.9475803, 0.9809042, 0.9844674, 0.9841287}{1.054237, 1.021042, 0.9877085, 0.9674651, 0.9599681, 0.9577122, 0.9677878, 0.9396882, 0.9808161, 0.9849296, 0.9851453}{1.051992, 1.022105, 0.9885813, 0.9658383, 0.9601328, 0.9572092, 0.9692205, 0.939815, 0.9821269, 0.986376, 0.9860347}{1.049696, 1.024174, 0.988841, 0.9642063, 0.9609473, 0.9567115, 0.9699689, 0.9431092, 0.9834154, 0.9877397, 0.98689}{1.049315, 1.026725, 0.9873781, 0.9646773, 0.9612701, 0.9569111, 0.9701702, 0.9481807, 0.984082, 0.9883223, 0.9871981}{1.051575, 1.02644, 0.9857126, 0.9660213, 0.961625, 0.9580635, 0.9707893, 0.9416428, 0.9842517, 0.9878443, 0.986771}{1.053787, 1.025793, 0.9843327, 0.9667484, 0.9631359, 0.9591795, 0.9716798, 0.9399593, 0.9842567, 0.9873621, 0.9863503}{1.055293, 1.02414, 0.9865509, 0.9682756, 0.9646643, 0.9608635, 0.9725993, 0.9387312, 0.9848, 0.9882398, 0.9880793}{1.056627, 1.025326, 0.9883634, 0.9700771, 0.965995, 0.9626176, 0.9733135, 0.93754, 0.9854771, 0.9893576, 0.9900981}{1.057181, 1.025045, 0.9893146, 0.9709947, 0.9677855, 0.9635238, 0.9739312, 0.943105, 0.9864695, 0.9905412, 0.9916137}{1.055894, 1.025171, 0.9895612, 0.9710926, 0.9695928, 0.9623864, 0.9753066, 0.9441631, 0.9880546, 0.9917978, 0.992056}{1.054641, 1.026476, 0.9902312, 0.9716382, 0.9678344, 0.961282, 0.9763976, 0.9464226, 0.9894396, 0.9926233, 0.9924889}{1.058582, 1.030195, 0.9942636, 0.9729459, 0.9667037, 0.9623805, 0.976953, 0.9478522, 0.9900457, 0.9935202, 0.9932949}{1.064506, 1.030492, 0.9939504, 0.9739569, 0.9665401, 0.9643248, 0.9773992, 0.9476329, 0.9905059, 0.994016, 0.994215}{1.069863, 1.030688, 0.993482, 0.9739905, 0.9667118, 0.9660056, 0.978241, 0.9485114, 0.9910109, 0.9941908, 0.9951512}{1.072323, 1.031027, 0.9929482, 0.9740593, 0.9670179, 0.9662763, 0.979611, 0.9478492, 0.9911848, 0.993771, 0.9963523}{1.074733, 1.031742, 0.9928806, 0.97413, 0.9676153, 0.9665363, 0.9808272, 0.9485173, 0.991303, 0.9941296, 0.9975291}{1.07657, 1.032332, 0.9926923, 0.9747803, 0.9685157, 0.9666481, 0.9819303, 0.9496551, 0.9920617, 0.9959633, 0.997648}{1.078007, 1.031588, 0.9939244, 0.9757996, 0.9696762, 0.966661, 0.982994, 0.9398754, 0.9935651, 0.9976868, 0.9970559}{1.079447, 1.030863, 0.9951221, 0.9766038, 0.9708228, 0.9666954, 0.9838529, 0.9414697, 0.9952446, 0.998519, 0.9965344}{1.082143, 1.031599, 0.9954156, 0.9755674, 0.9701971, 0.9676287, 0.985209, 0.9487696, 0.9957888, 0.9982953, 0.9980869}{1.084809, 1.033819, 0.9945537, 0.9745444, 0.9704482, 0.9685379, 0.9863066, 0.9592831, 0.9963144, 0.9993805, 0.9996036}};$/;" v +NR_END basics.c 16;" d file: +N_AB structs.c /^ int N_AB;$/;" m struct:__anon20 file: +N_DS basics.c /^ int N_DS;$/;" m struct:__anon6 file: +N_IA structs.c /^ int N_IA;$/;" m struct:__anon20 file: +N_N200 cluster.c /^double N_N200(int nz, int nN){$/;" f +N_N200 clusters_DES.c /^double N_N200(int nz, int nN){$/;" f +N_S2 basics.c /^ int N_S2;$/;" m struct:__anon6 file: +N_a basics.c /^ int N_a ;$/;" m struct:__anon6 file: +N_a_halo basics.c /^ int N_a_halo;$/;" m struct:__anon6 file: +N_cgl redshift.c /^int N_cgl(int zc, int zs){$/;" f +N_cgl redshift_spline.c /^int N_cgl(int zc, int zs){$/;" f +N_cluster_MOR structs.c /^ int N_cluster_MOR;$/;" m struct:__anon21 file: +N_cluster_selection structs.c /^ int N_cluster_selection;$/;" m struct:__anon21 file: +N_ell basics.c /^ int N_ell;$/;" m struct:__anon6 file: +N_ggl redshift.c /^int N_ggl(int zl, int zs){$/;" f +N_ggl redshift_spline.c /^int N_ggl(int zl, int zs){$/;" f +N_k GRS.c /^ int N_k;$/;" m struct:__anon7 file: +N_k structs.c /^ int N_k;$/;" m struct:__anon25 file: +N_k_3d basics.c /^ int N_k_3d;$/;" m struct:__anon6 file: +N_k_lin basics.c /^ int N_k_lin;$/;" m struct:__anon6 file: +N_k_nlin basics.c /^ int N_k_nlin;$/;" m struct:__anon6 file: +N_max structs.c /^ double N_max[10];$/;" m struct:__anon17 file: +N_min structs.c /^ double N_min[10];$/;" m struct:__anon17 file: +N_mu GRS.c /^ int N_mu;$/;" m struct:__anon7 file: +N_mu structs.c /^ int N_mu;$/;" m struct:__anon25 file: +N_norm basics.c /^ int N_norm;$/;" m struct:__anon6 file: +N_per_dec structs.c /^ int N_per_dec;$/;" m struct:__anon20 file: +N_r_3d basics.c /^ int N_r_3d;$/;" m struct:__anon6 file: +N_shear redshift.c /^int N_shear (int z1, int z2){ \/\/find shear tomography bin number N_shear of tomography combination (z1,z2)$/;" f +N_shear redshift_spline.c /^int N_shear (int z1, int z2){ \/\/find shear tomography bin number N_shear of tomography combination (z1,z2)$/;" f +N_t structs.c /^ int N_t;$/;" m struct:__anon25 file: +N_theta basics.c /^ int N_theta;$/;" m struct:__anon6 file: +N_thetaH basics.c /^ int N_thetaH;$/;" m struct:__anon6 file: +N_z GRS.c /^ int N_z;$/;" m struct:__anon7 file: +N_z structs.c /^ int N_z;$/;" m struct:__anon25 file: +Nabins structs.c /^ int Nabins;$/;" m struct:__anon26 file: +Ncl structs.c /^ int Ncl;$/;" m struct:__anon9 file: +Ncos structs.c /^ int Ncos;$/;" m struct:__anon9 file: +Ndata structs.c /^ int Ndata;$/;" m struct:__anon9 file: +Nkbins structs.c /^ int Nkbins;$/;" m struct:__anon26 file: +Ntab basics.c /^}Ntab;$/;" t typeref:struct:__anon6 file: +Ntable basics.c /^Ntab Ntable = {$/;" v +Ntheta structs.c /^ int Ntheta;$/;" m struct:__anon9 file: +ORDER basics.c /^ int ORDER ;$/;" m struct:cos file: +Omega_m structs.c /^ double Omega_m; \/* matter density parameter *\/$/;" m struct:__anon10 file: +Omega_m structs.c /^ double Omega_m; \/* matter density parameter *\/$/;" m struct:__anon22 file: +Omega_nu structs.c /^ double Omega_nu; \/\/density parameter of massive neutrinos; Omega_m = Omega_cdm+ Omega_nu + omb$/;" m struct:__anon10 file: +Omega_nu structs.c /^ double Omega_nu; \/\/density parameter of massive neutrinos; Omega_m = Omega_cdm+ Omega_nu + omb$/;" m struct:__anon22 file: +Omega_v structs.c /^ double Omega_v; \/* cosmogical constant parameter *\/$/;" m struct:__anon10 file: +Omega_v structs.c /^ double Omega_v; \/* cosmogical constant parameter *\/$/;" m struct:__anon22 file: +POW4 basics.c 35;" d file: +PT_AB pt.h /^static double PT_AB[7][70]={{-2.1024937749e-14, -3.3317686284e-14, -5.2794957251e-14, -8.3644863773e-14, -1.3249669417e-13, -2.0981691528e-13, -3.3209178755e-13, -5.2522570327e-13, -8.2967929846e-13, -1.3081263591e-12, -2.0564134478e-12, -3.2179083906e-12, -4.9992198442e-12, -7.6785847041e-12, -1.1581497781e-11, -1.6958530617e-11, -2.3611953877e-11, -2.9932339654e-11, -3.0665502589e-11, -1.2193571997e-11, 5.6424473650e-11, 2.3824909004e-10, 6.4779725600e-10, 1.4645539607e-09, 2.9114043576e-09, 5.1592167002e-09, 8.2173165203e-09, 1.2174298554e-08, 1.7622105574e-08, 2.4351547758e-08, 3.0565723812e-08, 3.5651871841e-08, 3.9290301006e-08, 4.1030836495e-08, 4.1101396653e-08, 3.8922483438e-08, 3.4779227303e-08, 2.9804812529e-08, 2.4598062581e-08, 1.9623372501e-08, 1.5172466295e-08, 1.1402215546e-08, 8.3508292331e-09, 5.9742563095e-09, 4.1838702398e-09, 2.8738474167e-09, 1.9395131170e-09, 1.2880603209e-09, 8.4292324310e-10, 5.4423247230e-10, 3.4705142937e-10, 2.1879856446e-10, 1.3649181356e-10, 8.4316379645e-11, 5.1608877176e-11, 3.1321023265e-11, 1.8852550922e-11, 1.1248155893e-11, 6.6590240823e-12, 3.9234803101e-12, 2.3037328204e-12, 1.3482727449e-12, 7.8685472652e-13, 4.5809370308e-13, 2.6611893572e-13, 1.5449594605e-13, 9.0336081778e-14, 4.9964739555e-14, 3.0704285651e-14, 2.1664808656e-14},$/;" v +PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d2$/;" f +PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate PT_AB[0] - Pd1d2$/;" f +PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d3$/;" f +PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate PT_AB[5]$/;" f +PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[2]$/;" f +PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate PT_AB[2]$/;" f +PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[1]$/;" f +PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate PT_AB[1]$/;" f +PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[3]$/;" f +PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate PT_AB[3]$/;" f +PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[4]$/;" f +PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate PT_AB[4]$/;" f +PT_sigma4 pt.c /^double PT_sigma4(double k_coverH0){$/;" f +P_2_s_max basics.c /^ double P_2_s_max;$/;" m struct:__anon5 file: +P_2_s_min basics.c /^ double P_2_s_min;$/;" m struct:__anon5 file: +P_DW GRS.c /^double P_DW(double k, double mu, double a){$/;" f +P_II IA.c /^double P_II (double k, double a){$/;" f +P_II_JB IA.c /^double P_II_JB(double k, double a){$/;" f +P_II_lin IA.c /^double P_II_lin (double k, double a){$/;" f +P_cm cluster.c /^double P_cm(double k,double a,int nz,int nN){$/;" f +P_cm clusters_DES.c /^double P_cm(double k,double a,int nz,int nN){$/;" f +P_cm_1h cluster.c /^double P_cm_1h(double k, double a,int nz, int nN){ $/;" f +P_cm_1h clusters_DES.c /^double P_cm_1h(double k, double a,int nz, int nN){ $/;" f +P_cm_offcentering cluster.c /^double P_cm_offcentering(double k, double M, double a){$/;" f +P_cm_offcentering clusters_DES.c /^double P_cm_offcentering(double k, double M, double a){$/;" f +P_dI IA.c /^double P_dI (double k, double a){$/;" f +P_dI_JB IA.c /^double P_dI_JB(double k, double a){$/;" f +P_dI_lin IA.c /^double P_dI_lin (double k, double a){$/;" f +P_g GRS.c /^double P_g(double k, double mu, int nz){$/;" f +P_gg HOD.c /^double P_gg (double k, double a,int nz){ \/\/galaxy-galaxy power spectrum based on HOD model in bin nz$/;" f +P_gg_2h_excl_old redmagic_real.c /^double P_gg_2h_excl_old(double k,double r, double a){$/;" f +P_gg_rm redmagic.c /^double P_gg_rm(double k,double a)$/;" f +P_gg_rm_1h redmagic_real.c /^double P_gg_rm_1h(double k,double a)$/;" f +P_gm HOD.c /^double P_gm (double k, double a,int nz){\/\/galaxy-matter power spectrum based on HOD model in bin nz$/;" f +P_gm_rm redmagic.c /^double P_gm_rm(double k,double a)$/;" f +P_obs GRS.c /^double P_obs(double k_ref, double mu_ref, int nz){$/;" f +P_shot GRS.c /^ double P_shot[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon8 file: +Pdelta cosmo3D.c /^double Pdelta(double k_NL,double a)$/;" f +Pdelta cosmo3D_april7.c /^double Pdelta(double k_NL,double a)$/;" f +Pdelta_halo halo.c /^double Pdelta_halo(double k,double a)$/;" f +PkRatio_baryons cosmo3D.c /^double PkRatio_baryons(double kintern,double a){$/;" f +Planck15_BAO_H070p6_JLA_w0wa structs.c /^ int Planck15_BAO_H070p6_JLA_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_BAO_Riess18_Pantheon_w0wa structs.c /^ int Planck18_BAO_Riess18_Pantheon_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_BAO_w0wa structs.c /^ int Planck18_BAO_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_w0 structs.c /^ int Planck18_w0; \/\/CH$/;" m struct:__anon9 file: +Plin_FILE structs.c /^ char Plin_FILE[200];$/;" m struct:__anon20 file: +Psi_IA cosmo2D_exact.c /^double Psi_IA(double k, int l,int ni){$/;" f +Psi_L cosmo2D_exact.c /^double Psi_L(double k, int l,int ni){$/;" f +Psi_L_withIA cosmo2D_exact.c /^double Psi_L_withIA(double k, int l,int ni){$/;" f +Psi_Mag cosmo2D_exact.c /^double Psi_Mag(double k, int l,int ni){$/;" f +Psi_RSD cosmo2D_exact.c /^double Psi_RSD(double k, int l,int ni){$/;" f +Psi_RSD_z cosmo2D_exact.c /^double Psi_RSD_z(double z,void *params){$/;" f +Psi_cl cosmo2D_exact.c /^double Psi_cl(double k, int l,int ni){$/;" f +Psi_cl_noRSD cosmo2D_exact.c /^double Psi_cl_noRSD(double k, int l,int ni){$/;" f +Psi_cl_withMag cosmo2D_exact.c /^double Psi_cl_withMag(double k, int l,int ni){$/;" f +REF_DESdepth baryons2.h /^ static double REF_DESdepth[100][11]={{0.9982078, 0.9988084, 0.9991498, 0.9993733, 0.9995794, 0.9997605, 0.9999366, 1.000044, 1.00013, 1.000206, 1.000294}{0.9967595, 0.9977036, 0.9982948, 0.9986681, 0.9989189, 0.9991699, 0.999433, 0.9996469, 0.9998105, 0.9999263, 1.000047}{0.995063, 0.9962777, 0.9972576, 0.9977254, 0.998157, 0.9985699, 0.9989623, 0.9992228, 0.9994224, 0.9995861, 0.9997618}{0.9938044, 0.9954887, 0.9966119, 0.997171, 0.9974698, 0.9978125, 0.9983279, 0.9986575, 0.9988887, 0.9990844, 0.9993328}{0.9918995, 0.9940481, 0.9955113, 0.9958726, 0.9962351, 0.9967239, 0.9973062, 0.997746, 0.9980988, 0.9984424, 0.9988192}{0.9898503, 0.99227, 0.9940609, 0.9947371, 0.9952273, 0.9958193, 0.9965095, 0.9970515, 0.9974832, 0.9979133, 0.9983789}{0.9891261, 0.9914425, 0.9933891, 0.9937368, 0.9941262, 0.9946724, 0.9954798, 0.9961321, 0.9966942, 0.9972252, 0.9977932}{0.9861897, 0.9889024, 0.9910983, 0.9916751, 0.9924663, 0.9935071, 0.99457, 0.9953781, 0.99598, 0.9965693, 0.9972496}{0.9844806, 0.9874232, 0.9898614, 0.9902618, 0.9910488, 0.9920482, 0.9933918, 0.9943038, 0.9949977, 0.9956623, 0.9964715}{0.9825256, 0.9853705, 0.9882854, 0.9887327, 0.9894381, 0.9906952, 0.9923263, 0.9932846, 0.9940228, 0.9948318, 0.9959015}{0.9817826, 0.9853115, 0.9882109, 0.9881524, 0.9884929, 0.9895935, 0.9911485, 0.9921431, 0.9929477, 0.9938593, 0.9950633}{0.9817923, 0.9848562, 0.987456, 0.9867569, 0.986971, 0.9882228, 0.9898003, 0.990865, 0.9917934, 0.9929649, 0.9943922}{0.9811865, 0.9839547, 0.9866827, 0.9857108, 0.9859496, 0.9870478, 0.9886427, 0.9899116, 0.9909118, 0.9921867, 0.9937192}{0.9813639, 0.9843038, 0.9859963, 0.9843826, 0.9842291, 0.9855468, 0.9874055, 0.9887599, 0.9898602, 0.9911157, 0.9927511}{0.9809085, 0.9835303, 0.9847539, 0.9829164, 0.9824923, 0.9840722, 0.9860504, 0.9875124, 0.9886328, 0.9900105, 0.9918601}{0.980137, 0.9831501, 0.9849281, 0.9827134, 0.981977, 0.9831863, 0.9849481, 0.9862915, 0.9875176, 0.9889609, 0.9909221}{0.9805551, 0.982238, 0.9837619, 0.9809037, 0.9806324, 0.9825576, 0.9841863, 0.9854853, 0.986561, 0.9879765, 0.9901993}{0.9828982, 0.9830594, 0.9841008, 0.9803361, 0.9795725, 0.9812096, 0.9830082, 0.984325, 0.9854776, 0.9868992, 0.9891783}{0.9839676, 0.9836668, 0.9841833, 0.9802963, 0.9795387, 0.980742, 0.9823969, 0.9836023, 0.9846299, 0.9860223, 0.9883962}{0.9834811, 0.9839509, 0.9843682, 0.9799633, 0.9788332, 0.9798499, 0.98166, 0.9827703, 0.9838113, 0.9852463, 0.9878232}{0.984081, 0.9843808, 0.9835737, 0.9787695, 0.9775818, 0.9784003, 0.9803133, 0.9814438, 0.9824031, 0.984006, 0.986702}{0.9845384, 0.9846243, 0.9831966, 0.9782049, 0.9765861, 0.9772188, 0.9789295, 0.9802153, 0.9812701, 0.9830308, 0.9858087}{0.9847272, 0.9842089, 0.9817058, 0.9764629, 0.9749427, 0.9757334, 0.9781222, 0.9793863, 0.980261, 0.9818546, 0.9846975}{0.9853631, 0.9830642, 0.9815592, 0.9765538, 0.9751842, 0.9763307, 0.9782419, 0.9788453, 0.9790921, 0.9807244, 0.983835}{0.9871172, 0.9825211, 0.9823469, 0.9770259, 0.9751231, 0.9760311, 0.977205, 0.977427, 0.978061, 0.979918, 0.9831395}{0.9877497, 0.9826206, 0.9830771, 0.9767486, 0.9750254, 0.9755523, 0.9763785, 0.9768173, 0.9775327, 0.9792397, 0.9825333}{0.9895307, 0.9841835, 0.9834299, 0.9762413, 0.9745912, 0.9749564, 0.9762535, 0.9766894, 0.9770861, 0.9785486, 0.9816995}{0.9887858, 0.9839579, 0.9824012, 0.9765109, 0.9738251, 0.9738905, 0.9753092, 0.9758701, 0.9763958, 0.9779472, 0.9813001}{0.9881283, 0.9837458, 0.9807308, 0.977016, 0.974779, 0.9743717, 0.9754877, 0.9753441, 0.9751261, 0.9765595, 0.9802897}{0.9853197, 0.9809827, 0.9818703, 0.9772899, 0.9735979, 0.9729947, 0.9751584, 0.9752735, 0.9750154, 0.9764155, 0.9800261}{0.9845638, 0.9831415, 0.9821555, 0.9769221, 0.974234, 0.973456, 0.9746359, 0.9740029, 0.9735637, 0.9753006, 0.9791411}{0.9855414, 0.9831168, 0.9833463, 0.9787173, 0.9753331, 0.9728377, 0.9735961, 0.973329, 0.9734643, 0.9752079, 0.979026}{0.9851899, 0.9824767, 0.9831662, 0.9767925, 0.9739144, 0.9727663, 0.9737799, 0.9738804, 0.9737785, 0.9749672, 0.9787516}{0.9858364, 0.983272, 0.9838825, 0.9768962, 0.9737043, 0.9723896, 0.9733132, 0.9736414, 0.9736539, 0.9749019, 0.9783544}{0.9862906, 0.9819465, 0.9847195, 0.9793542, 0.9739544, 0.9722645, 0.9735325, 0.9737823, 0.9738563, 0.9743622, 0.9775253}{0.9883937, 0.9824947, 0.9841233, 0.9777095, 0.972888, 0.9720131, 0.9740794, 0.974648, 0.9737943, 0.9742215, 0.9780104}{0.9874947, 0.9829327, 0.9862202, 0.9770941, 0.9725615, 0.9717252, 0.9742391, 0.9744133, 0.9735861, 0.973797, 0.9774978}{0.9882609, 0.9828651, 0.9851776, 0.9778015, 0.9738775, 0.9718996, 0.9741788, 0.9741021, 0.9725683, 0.9731448, 0.9768}{0.9851385, 0.9837092, 0.9858575, 0.9780416, 0.9731358, 0.9726248, 0.9747692, 0.9739035, 0.9723659, 0.972968, 0.9764829}{0.9841316, 0.9847504, 0.9837993, 0.9770417, 0.9754381, 0.971362, 0.9745164, 0.9740448, 0.9726, 0.9739863, 0.9778946}{0.983513, 0.9847935, 0.9876622, 0.9770921, 0.9748777, 0.9720348, 0.9750527, 0.9741457, 0.9727409, 0.9727983, 0.976597}{0.9849846, 0.9883796, 0.9879583, 0.9766709, 0.974495, 0.9722888, 0.9747666, 0.974043, 0.9727298, 0.9729051, 0.9764078}{0.9883069, 0.9910055, 0.9864332, 0.9771399, 0.9739305, 0.9716937, 0.9748926, 0.9751357, 0.9739619, 0.974325, 0.9779066}{0.9898101, 0.9886006, 0.9874459, 0.9808849, 0.9751131, 0.9726374, 0.975761, 0.9751216, 0.9730728, 0.9729546, 0.9768678}{0.9866966, 0.9887357, 0.9856221, 0.9793, 0.9771261, 0.9713566, 0.9742823, 0.9743943, 0.9741159, 0.9732325, 0.9776744}{0.9882051, 0.9906379, 0.9865251, 0.9806259, 0.9777542, 0.9726851, 0.9753291, 0.9760501, 0.974415, 0.9736514, 0.9782361}{0.9918996, 0.9905403, 0.9888629, 0.9827115, 0.9790636, 0.9751467, 0.9769219, 0.9761743, 0.9749974, 0.9740748, 0.9785113}{0.9932803, 0.9910721, 0.9916642, 0.9849824, 0.9798598, 0.9763211, 0.9769416, 0.9769847, 0.9759598, 0.974693, 0.97872}{0.9864006, 0.9859275, 0.9898863, 0.9839219, 0.9788869, 0.9774526, 0.9777047, 0.9779596, 0.977091, 0.9747476, 0.9782739}{0.9844782, 0.989468, 0.989883, 0.9825584, 0.980071, 0.9782017, 0.9788979, 0.9792069, 0.9766567, 0.9750565, 0.9789213}{0.9887189, 0.9915613, 0.9904921, 0.9844311, 0.9810985, 0.9784409, 0.9796898, 0.9789606, 0.9784765, 0.9757904, 0.9801025}{0.9964677, 0.9911094, 0.9926313, 0.9852824, 0.981452, 0.9785646, 0.980004, 0.9807238, 0.9797672, 0.9766809, 0.9813287}{0.9973305, 0.9925814, 0.9950134, 0.9835698, 0.9805144, 0.979864, 0.9791032, 0.9803145, 0.9800422, 0.9774057, 0.9817879}{0.9939193, 0.9926112, 0.9962748, 0.9845644, 0.9834438, 0.9795095, 0.9809313, 0.9823062, 0.9802256, 0.9786247, 0.9819909}{0.9948249, 0.9949281, 0.9967011, 0.9896423, 0.9846354, 0.9802378, 0.9831409, 0.9834455, 0.9811989, 0.9791594, 0.9834584}{0.9968838, 0.9925028, 0.9973631, 0.990466, 0.9852525, 0.981804, 0.9852264, 0.9858862, 0.9820301, 0.9802206, 0.9847984}{0.9961331, 0.991351, 0.9957874, 0.989461, 0.9852107, 0.9835424, 0.9892506, 0.9873676, 0.9831706, 0.9810975, 0.9847439}{0.9931804, 0.995314, 0.9974382, 0.9901767, 0.9864199, 0.9840457, 0.9878104, 0.9871055, 0.9848942, 0.9829706, 0.9859707}{0.9956228, 0.9939249, 0.9995066, 0.9909737, 0.9869588, 0.9861744, 0.987978, 0.9875545, 0.9868444, 0.9833533, 0.9877245}{0.9969946, 0.9929688, 1.000341, 0.9904092, 0.9878781, 0.9872233, 0.987726, 0.9887005, 0.9874857, 0.9841192, 0.9883671}{0.9968832, 0.9929812, 1.000703, 0.9907517, 0.9892725, 0.9877625, 0.9892224, 0.9903245, 0.9881732, 0.9848278, 0.9883445}{1.000205, 0.998554, 1.003009, 0.9939113, 0.9941664, 0.9916811, 0.9925626, 0.9918005, 0.9891785, 0.986771, 0.9900683}{1.005439, 1.00152, 1.005321, 0.9965998, 0.9960018, 0.99466, 0.992672, 0.9918959, 0.9918485, 0.988073, 0.9899859}{1.005273, 1.000306, 1.006701, 0.9977315, 0.9964428, 0.9933257, 0.9919794, 0.9943348, 0.9923243, 0.9877652, 0.9904243}{1.00299, 0.9982998, 1.006901, 0.9986127, 0.9963315, 0.9922318, 0.994651, 0.99515, 0.9924164, 0.988855, 0.9916367}{1.002636, 0.999916, 1.006797, 1.000547, 0.9981943, 0.9952592, 0.9965034, 0.9961136, 0.994079, 0.9913496, 0.9936047}{1.008934, 1.003478, 1.006737, 1.00211, 0.9984048, 0.9989444, 0.9986466, 0.9976907, 0.9954397, 0.9926156, 0.9956131}{1.004897, 1.005637, 1.007581, 1.004123, 1.002279, 1.001113, 1.000582, 1.000084, 0.9988064, 0.9933797, 0.9967787}{1.00282, 1.002288, 1.007998, 1.005999, 1.002937, 1.003407, 1.002114, 1.000998, 0.9996443, 0.995665, 0.9984982}{1.004709, 0.9999008, 1.009414, 1.006121, 1.003806, 1.005558, 1.001435, 1.003021, 1.001316, 0.9981931, 1.000649}{1.006509, 1.001096, 1.014305, 1.008146, 1.006601, 1.005716, 1.005622, 1.004271, 1.001447, 0.9990798, 1.002109}{1.008904, 1.00467, 1.012268, 1.00935, 1.006829, 1.006996, 1.006992, 1.005497, 1.002973, 1.001278, 1.003471}{1.009921, 1.00667, 1.011874, 1.00884, 1.010598, 1.007371, 1.007725, 1.006885, 1.005466, 1.002083, 1.004668}{1.011855, 1.007533, 1.01315, 1.010938, 1.011394, 1.007955, 1.009256, 1.009908, 1.006003, 1.003276, 1.005689}{1.015776, 1.008195, 1.016149, 1.010227, 1.010545, 1.009922, 1.013039, 1.010551, 1.007107, 1.004873, 1.00671}{1.016167, 1.00633, 1.017776, 1.011981, 1.014573, 1.015303, 1.014483, 1.012089, 1.009363, 1.006761, 1.009579}{1.020287, 1.0095, 1.019729, 1.015646, 1.015218, 1.018454, 1.017444, 1.015106, 1.011029, 1.00911, 1.010722}{1.019762, 1.009409, 1.021045, 1.016998, 1.018354, 1.020945, 1.020244, 1.01678, 1.012627, 1.011276, 1.012356}{1.017614, 1.010675, 1.022173, 1.020563, 1.02158, 1.023332, 1.022291, 1.018456, 1.015067, 1.013306, 1.014034}{1.023091, 1.014478, 1.02461, 1.023362, 1.023337, 1.025972, 1.024956, 1.021595, 1.017375, 1.013996, 1.013931}{1.019825, 1.016952, 1.028625, 1.02601, 1.024378, 1.025472, 1.025492, 1.023882, 1.019881, 1.014233, 1.016373}{1.016425, 1.017938, 1.032612, 1.0278, 1.025366, 1.024919, 1.02727, 1.025887, 1.021348, 1.014473, 1.018811}{1.015468, 1.016081, 1.03389, 1.026632, 1.025896, 1.025774, 1.02978, 1.027256, 1.022839, 1.016912, 1.020966}{1.017877, 1.01434, 1.033869, 1.022915, 1.027488, 1.028604, 1.03046, 1.02858, 1.026162, 1.020267, 1.022747}{1.020235, 1.0186, 1.032796, 1.023553, 1.029237, 1.031426, 1.030807, 1.031147, 1.02877, 1.022848, 1.024476}{1.022609, 1.023233, 1.033287, 1.029038, 1.031934, 1.034877, 1.034015, 1.034349, 1.032337, 1.025901, 1.026741}{1.024905, 1.021272, 1.03438, 1.033878, 1.034708, 1.03833, 1.03669, 1.037387, 1.035656, 1.029185, 1.029032}{1.026287, 1.019159, 1.037462, 1.035379, 1.037363, 1.041395, 1.039458, 1.041068, 1.037344, 1.030832, 1.031256}{1.025563, 1.019403, 1.039071, 1.035464, 1.040017, 1.043712, 1.043629, 1.045037, 1.03696, 1.031081, 1.033462}{1.024858, 1.017638, 1.040283, 1.036962, 1.04246, 1.045999, 1.047993, 1.044694, 1.036955, 1.031668, 1.035643}{1.028414, 1.019229, 1.042935, 1.043347, 1.044338, 1.048852, 1.051365, 1.045637, 1.037875, 1.034536, 1.037208}{1.033596, 1.023853, 1.046574, 1.050145, 1.046205, 1.051882, 1.052522, 1.046673, 1.039319, 1.037834, 1.038512}{1.038198, 1.028381, 1.050852, 1.051317, 1.048024, 1.054619, 1.053779, 1.047809, 1.04202, 1.039685, 1.039999}{1.039802, 1.028253, 1.050579, 1.051607, 1.048131, 1.056021, 1.055831, 1.050568, 1.045366, 1.041141, 1.042621}{1.041373, 1.028205, 1.05036, 1.051767, 1.048347, 1.057376, 1.057987, 1.053213, 1.047282, 1.042605, 1.045181}{1.043933, 1.030848, 1.050867, 1.051931, 1.051425, 1.059592, 1.060782, 1.055088, 1.049082, 1.044399, 1.047398}{1.047149, 1.034615, 1.051555, 1.052299, 1.055695, 1.062402, 1.061834, 1.056714, 1.051343, 1.046011, 1.049379}{1.050326, 1.037681, 1.052095, 1.055507, 1.058734, 1.065096, 1.062833, 1.058523, 1.052619, 1.047618, 1.051355}{1.054323, 1.036568, 1.058281, 1.058277, 1.05884, 1.064546, 1.062904, 1.059543, 1.055223, 1.05035, 1.05435}{1.058276, 1.036664, 1.064327, 1.059719, 1.058945, 1.064002, 1.063684, 1.061614, 1.057568, 1.053009, 1.057264}};$/;" v +REF_LSSTdepth baryons2.h /^ static double REF_LSSTdepth[100][11]={{0.9982078, 0.9991043, 0.9995127, 0.9997994, 1.000044, 1.000184, 1.000317, 0.9874216, 1.000395, 1.000408, 1.000417}{0.9967595, 0.9981594, 0.9987783, 0.9992446, 0.9996469, 0.9998868, 1.000091, 0.9949377, 1.000243, 1.000275, 1.000294}{0.995063, 0.9970795, 0.9979635, 0.9986531, 0.9992228, 0.9995476, 0.9998117, 0.9846446, 1.000053, 1.000107, 1.000143}{0.9938044, 0.9963914, 0.9972789, 0.9979784, 0.9986575, 0.9990041, 0.9994527, 0.9948853, 0.9998461, 0.9999354, 0.9999809}{0.9918995, 0.9952624, 0.9960386, 0.9968492, 0.997746, 0.9983657, 0.9989392, 0.9807702, 0.9995469, 0.9996751, 0.9997488}{0.9898503, 0.9937676, 0.9949984, 0.9959744, 0.9970515, 0.9977944, 0.9985632, 0.9866732, 0.9993071, 0.9994759, 0.999565}{0.9891261, 0.993034, 0.9938302, 0.9949078, 0.9961321, 0.9970906, 0.9979899, 0.9824023, 0.9989539, 0.9991566, 0.999278}{0.9861897, 0.9907243, 0.992074, 0.9937323, 0.9953781, 0.9964132, 0.9975103, 0.9785508, 0.9986757, 0.9989274, 0.9990623}{0.9844806, 0.9895307, 0.9905597, 0.9924078, 0.9943038, 0.9954475, 0.9968022, 0.9787016, 0.9983289, 0.9986525, 0.9988297}{0.9825256, 0.9879619, 0.9891459, 0.9910269, 0.9932846, 0.9946088, 0.9962738, 0.9722342, 0.9980399, 0.9983969, 0.9985905}{0.9817826, 0.9878584, 0.9882217, 0.9899506, 0.9921431, 0.9935717, 0.9955217, 0.9793946, 0.9975763, 0.9980267, 0.9982583}{0.9817923, 0.9872001, 0.9867566, 0.9885434, 0.990865, 0.9926879, 0.9948465, 0.97055, 0.9972148, 0.9976981, 0.9979586}{0.9811865, 0.9865026, 0.9856695, 0.9874123, 0.9899116, 0.9918602, 0.9943102, 0.974126, 0.9968933, 0.9974194, 0.9976664}{0.9813639, 0.9861046, 0.9841354, 0.9859326, 0.9887599, 0.9907821, 0.9933456, 0.9692926, 0.9963427, 0.9969316, 0.9972482}{0.9809085, 0.9849628, 0.9825019, 0.9845066, 0.9875124, 0.9896356, 0.9925582, 0.9681031, 0.9959153, 0.9966293, 0.9969635}{0.980137, 0.9851108, 0.982034, 0.983652, 0.9862915, 0.9885158, 0.9916677, 0.9654058, 0.9955644, 0.996348, 0.9967151}{0.9805551, 0.9841274, 0.9804611, 0.9828785, 0.9854853, 0.9875476, 0.9909956, 0.9624717, 0.9950078, 0.9958538, 0.9962143}{0.9828982, 0.984657, 0.9797221, 0.9815595, 0.984325, 0.9864223, 0.9900788, 0.9659668, 0.9946747, 0.9955767, 0.9960042}{0.9839676, 0.9847052, 0.979799, 0.9810748, 0.9836023, 0.9855776, 0.9893003, 0.9599655, 0.9941611, 0.9951514, 0.9956506}{0.9834811, 0.9852823, 0.9790683, 0.9802601, 0.9827703, 0.9847262, 0.988768, 0.9623549, 0.9937833, 0.9948718, 0.9953484}{0.984081, 0.984706, 0.9779634, 0.9787824, 0.9814438, 0.9835132, 0.9876904, 0.9561341, 0.9933242, 0.9944607, 0.9949963}{0.9845384, 0.9843957, 0.9771986, 0.9774976, 0.9802153, 0.9825357, 0.9867775, 0.9546632, 0.9927619, 0.9939015, 0.9944526}{0.9847272, 0.9830622, 0.9753838, 0.976214, 0.9793863, 0.9813439, 0.9858087, 0.9559979, 0.9923096, 0.9935787, 0.9942653}{0.9853631, 0.9827405, 0.9755821, 0.9767625, 0.9788453, 0.9802602, 0.9849166, 0.9458354, 0.9920257, 0.9931734, 0.9938047}{0.9871172, 0.9834219, 0.9755364, 0.9762698, 0.977427, 0.9793465, 0.9843887, 0.953037, 0.9913394, 0.9927017, 0.9934449}{0.9877497, 0.9841457, 0.9757297, 0.9756932, 0.9768173, 0.9787218, 0.9837673, 0.9511438, 0.9911922, 0.9926109, 0.99324}{0.9895307, 0.9853645, 0.9748275, 0.9752094, 0.9766894, 0.9780451, 0.9830636, 0.9517126, 0.9908757, 0.9922494, 0.9928404}{0.9887858, 0.9841064, 0.9748938, 0.9741601, 0.9758701, 0.977343, 0.9827134, 0.9496578, 0.9905065, 0.9918285, 0.9924108}{0.9881283, 0.981796, 0.9758076, 0.9745808, 0.9753441, 0.9759611, 0.9817286, 0.9482086, 0.9900496, 0.9915523, 0.9922009}{0.9853197, 0.9823725, 0.975086, 0.9734294, 0.9752735, 0.9757626, 0.9815637, 0.9503432, 0.9896452, 0.9911947, 0.9917558}{0.9845638, 0.9829938, 0.9753847, 0.9738348, 0.9740029, 0.9746372, 0.9806893, 0.9449496, 0.9892915, 0.990817, 0.9914177}{0.9855414, 0.9837356, 0.9769328, 0.9729929, 0.973329, 0.9745157, 0.9806681, 0.9451855, 0.9890569, 0.9904908, 0.9911325}{0.9851899, 0.9835141, 0.9751861, 0.9728858, 0.9738804, 0.9743512, 0.9803975, 0.9455409, 0.988938, 0.9904295, 0.9910112}{0.9858364, 0.9845354, 0.9750206, 0.9725771, 0.9736414, 0.9742979, 0.979995, 0.9468434, 0.9886851, 0.9902102, 0.9907873}{0.9862906, 0.9847965, 0.9762795, 0.9724872, 0.9737823, 0.9737839, 0.9792787, 0.9461523, 0.9886846, 0.9900881, 0.9906569}{0.9883937, 0.9843237, 0.9748143, 0.9724171, 0.974648, 0.9736289, 0.9798556, 0.9464824, 0.9885188, 0.9896864, 0.9900954}{0.9874947, 0.9866415, 0.9743995, 0.9722202, 0.9744133, 0.9731045, 0.9793093, 0.9473874, 0.988428, 0.9897307, 0.990135}{0.9882609, 0.9858771, 0.9755057, 0.9723509, 0.9741021, 0.9726155, 0.9786876, 0.9457013, 0.9883064, 0.9893952, 0.9897182}{0.9851385, 0.9866713, 0.9749816, 0.9730629, 0.9739035, 0.9723352, 0.9785558, 0.9467224, 0.9879867, 0.9891663, 0.9894275}{0.9841316, 0.9848948, 0.9760075, 0.9717127, 0.9740448, 0.9733208, 0.979916, 0.9455417, 0.988251, 0.9892419, 0.9893347}{0.983513, 0.9873405, 0.976163, 0.9727908, 0.9741457, 0.9721798, 0.978255, 0.9358058, 0.9881964, 0.9891057, 0.9892077}{0.9849846, 0.9908577, 0.9756373, 0.9727445, 0.974043, 0.9722047, 0.9789611, 0.9422937, 0.9880744, 0.989054, 0.9892492}{0.9883069, 0.9883403, 0.9760455, 0.9723483, 0.9751357, 0.9737062, 0.9797825, 0.9433043, 0.9880072, 0.9890883, 0.9892951}{0.9898101, 0.9884368, 0.9775343, 0.9732942, 0.9751216, 0.9723242, 0.9788769, 0.9472377, 0.9878233, 0.9882651, 0.988442}{0.9866966, 0.9868491, 0.9781455, 0.9719042, 0.9743943, 0.9725226, 0.9797542, 0.9374623, 0.9885482, 0.9885729, 0.9882992}{0.9882051, 0.9868159, 0.9795319, 0.9733809, 0.9760501, 0.9728149, 0.9802669, 0.9436187, 0.9884062, 0.9884896, 0.9885763}{0.9918996, 0.9890747, 0.981556, 0.9755317, 0.9761743, 0.9732223, 0.9801484, 0.9469035, 0.9883703, 0.9887731, 0.9888745}{0.9932803, 0.9913747, 0.9822203, 0.9764482, 0.9769847, 0.9739442, 0.9805246, 0.9443979, 0.9890379, 0.9890781, 0.9888204}{0.9864006, 0.9888439, 0.9812313, 0.9776317, 0.9779596, 0.9740357, 0.9802918, 0.9431882, 0.9894703, 0.9890507, 0.9890261}{0.9844782, 0.9901298, 0.9811238, 0.9782541, 0.9792069, 0.9744143, 0.9812292, 0.9369446, 0.9893145, 0.9892467, 0.9889148}{0.9887189, 0.9902357, 0.9827969, 0.9786875, 0.9789606, 0.9750377, 0.982149, 0.939669, 0.9894294, 0.9894547, 0.9888439}{0.9964677, 0.9917858, 0.9831353, 0.9788616, 0.9807238, 0.9758166, 0.9828136, 0.9451476, 0.9897359, 0.9897485, 0.9890643}{0.9973305, 0.9947087, 0.9818743, 0.9798543, 0.9803145, 0.9765669, 0.9835558, 0.9452509, 0.9904668, 0.9907484, 0.9898924}{0.9939193, 0.9963087, 0.9838438, 0.9792928, 0.9823062, 0.9777884, 0.9836752, 0.945154, 0.9908905, 0.9906564, 0.9893694}{0.9948249, 0.9959453, 0.9872947, 0.9808466, 0.9834455, 0.9785582, 0.9850349, 0.9448988, 0.9914235, 0.990872, 0.9891497}{0.9968838, 0.9954014, 0.9875517, 0.9824671, 0.9858862, 0.9792722, 0.9856832, 0.9476018, 0.9921158, 0.9909538, 0.9892405}{0.9961331, 0.9941574, 0.9870134, 0.9847234, 0.9873676, 0.9804053, 0.9855296, 0.9519994, 0.9927105, 0.991144, 0.9894513}{0.9931804, 0.9965044, 0.9880109, 0.9851529, 0.9871055, 0.9822257, 0.98668, 0.9531521, 0.9935964, 0.9911694, 0.9894715}{0.9956228, 0.9972431, 0.9887402, 0.9869513, 0.9875545, 0.9827955, 0.9884539, 0.9539092, 0.9942227, 0.9917899, 0.9898263}{0.9969946, 0.9976968, 0.9886596, 0.9872747, 0.9887005, 0.9832126, 0.9891634, 0.9521528, 0.9947793, 0.9925792, 0.9904276}{0.9968832, 0.9992262, 0.9896617, 0.9880668, 0.9903245, 0.9841352, 0.9893197, 0.9490494, 0.9954093, 0.993163, 0.9911195}{1.000205, 1.001703, 0.9942536, 0.9919321, 0.9918005, 0.9861198, 0.9906318, 0.9569145, 0.9962277, 0.9937458, 0.9915756}{1.005439, 1.004264, 0.9964391, 0.9949824, 0.9918959, 0.9874058, 0.9905489, 0.9552121, 0.9970091, 0.9939808, 0.9911338}{1.005273, 1.004912, 0.9971225, 0.9924779, 0.9943348, 0.9874584, 0.9912514, 0.9587467, 0.9972272, 0.9939546, 0.9910913}{1.00299, 1.006121, 0.9978319, 0.992786, 0.99515, 0.9882024, 0.9932996, 0.9608899, 0.9980421, 0.9945856, 0.9915981}{1.002636, 1.005866, 0.9996024, 0.9955207, 0.9961136, 0.9909407, 0.9948554, 0.9680077, 0.9996529, 0.9958524, 0.9925729}{1.008934, 1.006561, 1.000077, 0.9992422, 0.9976907, 0.9921246, 0.9964948, 0.968063, 0.9999556, 0.9967075, 0.992875}{1.004897, 1.006931, 1.002802, 1.00105, 1.000084, 0.9927921, 0.9974565, 0.9636098, 1.00082, 0.9976187, 0.9932774}{1.00282, 1.005915, 1.004473, 1.003388, 1.000998, 0.9949153, 0.9997534, 0.9672625, 1.000955, 0.998384, 0.9937634}{1.004709, 1.00608, 1.004169, 1.004704, 1.003021, 0.9977534, 1.000953, 0.968335, 1.001293, 0.9991645, 0.9940423}{1.006509, 1.011506, 1.007208, 1.005588, 1.004271, 0.9985346, 1.002103, 0.9609824, 1.002859, 0.9992149, 0.9935282}{1.008904, 1.012019, 1.007882, 1.007077, 1.005497, 1.000612, 1.003643, 0.9648787, 1.003739, 1.00106, 0.9950233}{1.009921, 1.01111, 1.009598, 1.007353, 1.006885, 1.001655, 1.005098, 0.9698536, 1.004261, 1.002029, 0.9959245}{1.011855, 1.011649, 1.01215, 1.00819, 1.009908, 1.002713, 1.005779, 0.9723075, 1.00544, 1.003152, 0.9968097}{1.015776, 1.015191, 1.010325, 1.01057, 1.010551, 1.00454, 1.006907, 0.9720035, 1.007481, 1.004185, 0.9980894}{1.016167, 1.016519, 1.013516, 1.015811, 1.012089, 1.006303, 1.009751, 0.973885, 1.008265, 1.004871, 0.9984197}{1.020287, 1.018003, 1.015278, 1.018237, 1.015106, 1.008473, 1.010823, 0.971397, 1.009018, 1.006571, 0.998984}{1.019762, 1.019554, 1.017205, 1.020879, 1.01678, 1.010953, 1.01245, 0.9793489, 1.010546, 1.007164, 0.9988465}{1.017614, 1.021373, 1.021595, 1.023115, 1.018456, 1.013108, 1.013544, 0.9855952, 1.011573, 1.007078, 0.9986754}{1.023091, 1.0234, 1.023052, 1.02577, 1.021595, 1.013988, 1.014191, 0.9780828, 1.012098, 1.007761, 1.000084}{1.019825, 1.025778, 1.025081, 1.025233, 1.023882, 1.014234, 1.016927, 0.9797057, 1.014327, 1.010032, 1.001438}{1.016425, 1.029477, 1.025941, 1.024653, 1.025887, 1.014462, 1.018958, 0.9840251, 1.016515, 1.011878, 1.002743}{1.015468, 1.033829, 1.02464, 1.026607, 1.027256, 1.015954, 1.02047, 0.9900778, 1.017666, 1.013015, 1.003488}{1.017877, 1.034325, 1.025498, 1.029594, 1.02858, 1.019166, 1.022443, 0.9838246, 1.018299, 1.013142, 1.003492}{1.020235, 1.034297, 1.026881, 1.031598, 1.031147, 1.022276, 1.023821, 0.9826274, 1.018732, 1.013135, 1.003496}{1.022609, 1.032276, 1.031549, 1.034812, 1.034349, 1.025449, 1.026249, 0.9823068, 1.020148, 1.014899, 1.005451}{1.024905, 1.033281, 1.033956, 1.038427, 1.037387, 1.028582, 1.028316, 0.9819125, 1.021772, 1.016242, 1.007654}{1.026287, 1.033264, 1.035693, 1.040992, 1.041068, 1.030855, 1.029708, 0.9888371, 1.023328, 1.017771, 1.00948}{1.025563, 1.033874, 1.037493, 1.043442, 1.045037, 1.031091, 1.032165, 0.990489, 1.025357, 1.019936, 1.010562}{1.024858, 1.035394, 1.039794, 1.046153, 1.044694, 1.031322, 1.03435, 0.9930428, 1.027185, 1.021348, 1.011622}{1.028414, 1.040168, 1.045601, 1.049501, 1.045637, 1.03365, 1.035997, 0.9955058, 1.028442, 1.022991, 1.013032}{1.033596, 1.043543, 1.047216, 1.052671, 1.046673, 1.036787, 1.037467, 0.9965548, 1.029591, 1.023962, 1.014529}{1.038198, 1.046315, 1.048603, 1.054443, 1.047809, 1.039648, 1.039227, 0.9987871, 1.030639, 1.024504, 1.015946}{1.039802, 1.046045, 1.048785, 1.055922, 1.050568, 1.041041, 1.042122, 0.9991462, 1.0315, 1.024635, 1.017216}{1.041373, 1.045831, 1.048879, 1.057387, 1.053213, 1.042378, 1.044573, 1.000585, 1.032251, 1.02528, 1.018461}{1.043933, 1.047907, 1.049365, 1.05988, 1.055088, 1.043829, 1.046774, 1.003151, 1.033801, 1.02794, 1.018954}{1.047149, 1.048585, 1.053167, 1.062842, 1.056714, 1.045368, 1.048957, 0.9938638, 1.03642, 1.03036, 1.018933}{1.050326, 1.04923, 1.056828, 1.064625, 1.058523, 1.04691, 1.051077, 0.9965755, 1.038969, 1.031508, 1.018955}{1.054323, 1.052198, 1.058431, 1.064047, 1.059543, 1.04952, 1.054357, 1.004993, 1.040357, 1.031897, 1.020721}{1.058276, 1.057851, 1.058529, 1.063477, 1.061614, 1.052063, 1.05669, 1.016709, 1.041702, 1.033344, 1.022447}};$/;" v +Rmin_bias structs.c /^ double Rmin_bias;$/;" m struct:__anon9 file: +Rmin_shear structs.c /^ double Rmin_shear;$/;" m struct:__anon9 file: +SN_WFIRST structs.c /^ int SN_WFIRST;$/;" m struct:__anon9 file: +SQR basics.c 31;" d file: +SRD structs.c /^ int SRD;$/;" m struct:__anon9 file: +SVD_inversion basics.c /^void SVD_inversion(gsl_matrix *cov, gsl_matrix *inverseSVD,int Nmatrix)$/;" f +T baryons.c /^ const gsl_interp2d_type *T = gsl_interp2d_bilinear;$/;" m struct:__anon2 file: +T_lin_minus_COSEBIS EBfunctions.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_minus_COSEBIS coefficients.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_minus_integrand_COSEBIS EBfunctions.c /^double T_lin_minus_integrand_COSEBIS(double t, void *params)$/;" f +T_lin_minus_integrand_COSEBIS coefficients.c /^double T_lin_minus_integrand_COSEBIS(double t, void *params)$/;" f +T_lin_plus_COSEBIS EBfunctions.c /^double T_lin_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_plus_COSEBIS coefficients.c /^double T_lin_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_COSEBIS EBfunctions.c /^double T_log_minus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_COSEBIS coefficients.c /^double T_log_minus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_integrand_COSEBIS EBfunctions.c /^double T_log_minus_integrand_COSEBIS(double theta, void *params)$/;" f +T_log_minus_integrand_COSEBIS coefficients.c /^double T_log_minus_integrand_COSEBIS(double theta, void *params)$/;" f +T_log_plus_COSEBIS EBfunctions.c /^double T_log_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_plus_COSEBIS coefficients.c /^double T_log_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_minus_MAP EBfunctions.c /^double T_minus_MAP(double x)$/;" f +T_plus_MAP EBfunctions.c /^double T_plus_MAP(double x)$/;" f +Tsqr_EH_no_wiggle GRS.c /^double Tsqr_EH_no_wiggle(double khoverMPC)$/;" f +Tsqr_EH_wiggle cosmo3D.c /^double Tsqr_EH_wiggle(double khoverMPC)$/;" f +Tsqr_EH_wiggle cosmo3D_april7.c /^double Tsqr_EH_wiggle(double khoverMPC)$/;" f +V_z GRS.c /^ double V_z[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon7 file: +V_z structs.c /^ double V_z[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon25 file: +W1 EBfunctions.c /^double W1(double theta_1, double zeta_1, double zeta_2)$/;" f +W2 EBfunctions.c /^double W2(double theta_2, double zeta_3, double zeta_4)$/;" f +WDENS_DESdepth baryons2.h /^ static double WDENS_DESdepth[100][11]={{0.9972338, 0.9974389, 1.006422, 1.01724, 1.013021, 0.9980901, 1.014312, 1.013636, 1.011537, 1.008746, 0.9997192}{0.9951338, 0.9953619, 1.004796, 1.024475, 1.00954, 0.9961141, 1.010157, 1.015429, 1.01255, 1.005533, 0.9986751}{0.9925948, 0.9927007, 0.9978023, 1.001818, 1.000219, 0.9936098, 1.001294, 1.000507, 1.000221, 1.000229, 0.9974306}{0.9895258, 0.9895355, 0.998317, 1.019976, 1.00199, 0.9902966, 1.004874, 1.016551, 1.015008, 1.004005, 0.9957554}{0.9862037, 0.9865193, 0.9872215, 0.9872463, 0.9867653, 0.9865722, 0.9884763, 0.9896828, 0.9909988, 0.9923567, 0.9937011}{0.9834725, 0.9832317, 0.991236, 1.007238, 0.9911511, 0.9830933, 0.9942489, 1.003996, 1.004708, 0.997656, 0.9916568}{0.9803354, 0.979933, 0.9835221, 0.9852476, 0.9846109, 0.9787664, 0.9871239, 0.9879037, 0.9893922, 0.9911551, 0.9890365}{0.9775395, 0.9767691, 0.9810244, 0.9872505, 0.9805906, 0.9744996, 0.984082, 0.9883787, 0.9890244, 0.987938, 0.9862713}{0.9733028, 0.9725999, 0.9730672, 0.9735015, 0.9734103, 0.9692833, 0.9769227, 0.9802942, 0.9827959, 0.9839282, 0.9828091}{0.9697291, 0.9682972, 0.9748565, 0.9782002, 0.9723261, 0.9636317, 0.9763095, 0.9779516, 0.9802037, 0.9827038, 0.9795323}{0.9665725, 0.9657642, 0.9709779, 0.9786856, 0.9662657, 0.9585076, 0.9717106, 0.9813333, 0.9816692, 0.9772705, 0.9754677}{0.9657998, 0.9637117, 0.9648262, 0.9612885, 0.9558639, 0.9545226, 0.9573789, 0.9598319, 0.9634173, 0.96792, 0.9718322}{0.9647774, 0.9616523, 0.960518, 0.9504998, 0.9503328, 0.9486646, 0.9578204, 0.9717107, 0.9729349, 0.9686304, 0.9680291}{0.962986, 0.9594039, 0.957095, 0.9493917, 0.9447939, 0.9427955, 0.9467726, 0.9499581, 0.9542349, 0.9594406, 0.96412}{0.9612126, 0.9568124, 0.9534836, 0.9448395, 0.9404694, 0.9376641, 0.9421248, 0.950767, 0.957365, 0.958304, 0.9593663}{0.9587544, 0.9538013, 0.9502151, 0.9420716, 0.9354283, 0.9326943, 0.9367219, 0.9424867, 0.9479384, 0.9530448, 0.9550657}{0.9555223, 0.9494487, 0.9491897, 0.9428298, 0.9319309, 0.9289601, 0.9367157, 0.9409216, 0.9420951, 0.9455567, 0.9502505}{0.9568958, 0.9482908, 0.9446062, 0.937518, 0.9271739, 0.924128, 0.9293768, 0.9329761, 0.9371418, 0.9420203, 0.9460282}{0.9556908, 0.9463423, 0.9440375, 0.9286342, 0.9220644, 0.9204639, 0.9229272, 0.9242681, 0.9273937, 0.9335713, 0.9413353}{0.9540391, 0.9448173, 0.9364888, 0.9356021, 0.9253511, 0.9153287, 0.9188359, 0.9214217, 0.9305966, 0.9338653, 0.9371537}{0.9522286, 0.9426345, 0.9355344, 0.9218012, 0.9129469, 0.9106046, 0.9119635, 0.9137805, 0.917548, 0.9236795, 0.9324008}{0.9507305, 0.928471, 0.9305378, 0.9161486, 0.9080564, 0.9055273, 0.9054044, 0.9074973, 0.9121534, 0.9190762, 0.9283259}{0.9485568, 0.9351777, 0.9254334, 0.9112753, 0.9030937, 0.9002722, 0.900817, 0.903129, 0.9073871, 0.9139792, 0.923304}{0.9472804, 0.9358771, 0.9231966, 0.9084594, 0.900332, 0.8974985, 0.8973356, 0.8987836, 0.9026301, 0.9096127, 0.9194672}{0.9468401, 0.931369, 0.9209969, 0.9062339, 0.897229, 0.8943278, 0.892597, 0.8935068, 0.8979384, 0.9055135, 0.9157756}{0.9451038, 0.9276504, 0.9195291, 0.902876, 0.8944665, 0.891229, 0.888959, 0.8900421, 0.8944089, 0.9011988, 0.9112739}{0.9455943, 0.9276041, 0.9167475, 0.9003116, 0.8914873, 0.8872851, 0.8852095, 0.8861346, 0.8903794, 0.8974042, 0.9077878}{0.9433964, 0.9233265, 0.9134735, 0.8975138, 0.8876412, 0.8834397, 0.8810147, 0.8823546, 0.8870495, 0.8942645, 0.9050268}{0.9416778, 0.9175398, 0.9094109, 0.895036, 0.8850475, 0.8799706, 0.8776923, 0.8788563, 0.8831934, 0.8902015, 0.9012498}{0.9388582, 0.9200164, 0.9068525, 0.8924205, 0.8819283, 0.8762768, 0.8747678, 0.8761322, 0.8801892, 0.8869032, 0.8978679}{0.9346578, 0.9197857, 0.9051454, 0.8889021, 0.8799035, 0.8743922, 0.8715897, 0.8718192, 0.8752713, 0.882996, 0.8944457}{0.9332683, 0.915444, 0.9026113, 0.8874209, 0.8775858, 0.8714802, 0.867933, 0.8683239, 0.8723484, 0.8795266, 0.8911153}{0.9321852, 0.9112604, 0.901414, 0.8849621, 0.8751876, 0.8688705, 0.8654776, 0.8662349, 0.8705542, 0.8775796, 0.889271}{0.9305858, 0.9089065, 0.8997457, 0.8820642, 0.8722297, 0.8652786, 0.8619503, 0.8633009, 0.8677915, 0.8751097, 0.8865951}{0.930415, 0.9080172, 0.8977707, 0.8809356, 0.8696984, 0.862575, 0.8596161, 0.8609262, 0.8656879, 0.8722566, 0.883685}{0.9294416, 0.9061092, 0.8954841, 0.8776691, 0.8658581, 0.8602409, 0.8579719, 0.8594121, 0.8632036, 0.8695809, 0.8814153}{0.9281726, 0.9051198, 0.8948082, 0.8747237, 0.8637384, 0.8577528, 0.8553266, 0.8565799, 0.8607771, 0.8675575, 0.8795124}{0.9270042, 0.9022401, 0.8918676, 0.8734006, 0.8622867, 0.8561217, 0.8530442, 0.8536707, 0.8572964, 0.8645122, 0.8767084}{0.9231036, 0.9022498, 0.8900585, 0.8703212, 0.859683, 0.8542955, 0.8511646, 0.8513196, 0.8549858, 0.8625388, 0.8749042}{0.9212382, 0.9006938, 0.8865323, 0.8681495, 0.8582821, 0.8508267, 0.8483132, 0.8488852, 0.8529099, 0.8609986, 0.8743959}{0.9191016, 0.8820475, 0.8875001, 0.8650688, 0.855116, 0.8498837, 0.8466664, 0.8468575, 0.8520504, 0.8597863, 0.8717385}{0.9182098, 0.8990474, 0.8859892, 0.8627416, 0.8530525, 0.8477678, 0.8436862, 0.8455165, 0.8506309, 0.8579942, 0.8695223}{0.9186195, 0.8981197, 0.8837517, 0.8611437, 0.8508201, 0.8438125, 0.8417816, 0.8437737, 0.8488226, 0.8565584, 0.8684941}{0.918364, 0.8951777, 0.8828757, 0.8605755, 0.8505781, 0.8418088, 0.8391179, 0.8406754, 0.8459697, 0.8546402, 0.8670416}{0.9156784, 0.8902863, 0.8801778, 0.8585505, 0.8485543, 0.8395674, 0.8373599, 0.8396981, 0.8458765, 0.8534505, 0.8658023}{0.915476, 0.8869569, 0.8790404, 0.8574831, 0.8474765, 0.8392178, 0.8369748, 0.8392229, 0.8447217, 0.8518093, 0.8637355}{0.916519, 0.8944455, 0.8789403, 0.8567707, 0.8468317, 0.8394456, 0.8360357, 0.8376014, 0.8433008, 0.8500137, 0.8617974}{0.9164008, 0.8909759, 0.8789282, 0.8555186, 0.8453615, 0.8384486, 0.8338246, 0.8363106, 0.8422087, 0.8489887, 0.8612059}{0.9101122, 0.8854868, 0.8734379, 0.8531082, 0.8427319, 0.8377125, 0.8326973, 0.8351732, 0.8410635, 0.8473314, 0.86018}{0.9075168, 0.8791368, 0.8737456, 0.8515539, 0.8414798, 0.8372402, 0.8321837, 0.8343479, 0.8390514, 0.8464871, 0.8591512}{0.9085852, 0.8900539, 0.8738174, 0.8507798, 0.8410904, 0.83662, 0.8315897, 0.8329533, 0.8390076, 0.8454298, 0.8580187}{0.9115042, 0.8867549, 0.8737988, 0.8504367, 0.8404137, 0.8355649, 0.8305241, 0.8326828, 0.8383074, 0.8443366, 0.8570646}{0.9105355, 0.8855797, 0.8736367, 0.8486018, 0.8377495, 0.8337658, 0.8278074, 0.8306468, 0.8370497, 0.8438976, 0.8573141}{0.90684, 0.8772053, 0.8725727, 0.8470414, 0.8385263, 0.8323304, 0.8280139, 0.8308007, 0.8355813, 0.8429648, 0.8556392}{0.9055302, 0.8763878, 0.8716179, 0.8482288, 0.8380762, 0.8308424, 0.8273709, 0.8292452, 0.8346027, 0.8422048, 0.8551799}{0.9049799, 0.8798425, 0.8708113, 0.8478773, 0.8367668, 0.830038, 0.8265402, 0.8284877, 0.8337395, 0.841658, 0.8550562}{0.9030678, 0.8788749, 0.8688741, 0.8462515, 0.835278, 0.8304903, 0.8262389, 0.8276013, 0.8326942, 0.8406456, 0.854121}{0.9001154, 0.8799876, 0.8676909, 0.8430141, 0.8355767, 0.8289789, 0.8252431, 0.8272766, 0.8327967, 0.8402437, 0.8524176}{0.9018876, 0.8795441, 0.868175, 0.844654, 0.8330022, 0.8301258, 0.8255632, 0.8269703, 0.832182, 0.8398155, 0.8526049}{0.9015856, 0.8784589, 0.8672965, 0.8416501, 0.8319622, 0.8295962, 0.8240521, 0.8254856, 0.832693, 0.8396707, 0.8525658}{0.899404, 0.8720236, 0.8650798, 0.8401873, 0.8310365, 0.8276119, 0.8228833, 0.8262704, 0.8319215, 0.8390761, 0.8518921}{0.9020292, 0.8761056, 0.8656747, 0.8409499, 0.8324235, 0.828663, 0.8235511, 0.824616, 0.8297871, 0.8384807, 0.8514602}{0.9029079, 0.8739084, 0.8658609, 0.8410125, 0.83342, 0.8288509, 0.8220855, 0.8236859, 0.8314848, 0.8388933, 0.8506449}{0.9002211, 0.8762723, 0.8661646, 0.8402459, 0.8317427, 0.8260402, 0.8206748, 0.8254091, 0.8311548, 0.8377175, 0.8500944}{0.8970065, 0.8702784, 0.8650183, 0.8387776, 0.8305303, 0.8242224, 0.822524, 0.8247388, 0.8300517, 0.8372047, 0.8499035}{0.8962027, 0.8726964, 0.8630807, 0.8393606, 0.8318856, 0.826507, 0.8219763, 0.8240683, 0.8300253, 0.8375051, 0.8500307}{0.898363, 0.8730105, 0.8623962, 0.839955, 0.8296696, 0.8281425, 0.8227684, 0.8252118, 0.8313266, 0.8373734, 0.8497759}{0.894462, 0.8744138, 0.8609277, 0.8402535, 0.8304465, 0.8266881, 0.8224801, 0.8256451, 0.83067, 0.836659, 0.8493387}{0.8920797, 0.8741642, 0.8603218, 0.8404027, 0.8292612, 0.8262997, 0.8227866, 0.8245859, 0.8300578, 0.8368906, 0.8500402}{0.8924723, 0.8656003, 0.8608397, 0.8394844, 0.8290267, 0.8269601, 0.8215661, 0.8245315, 0.8302057, 0.8377862, 0.8512941}{0.8931899, 0.8680789, 0.8630492, 0.8394652, 0.8300505, 0.8259709, 0.8224027, 0.8246308, 0.8301444, 0.8379594, 0.851072}{0.8947188, 0.8689181, 0.860642, 0.8389805, 0.8293121, 0.8255205, 0.8222435, 0.8246973, 0.8304845, 0.8378562, 0.8521134}{0.8957418, 0.8674813, 0.8600458, 0.8376158, 0.8291955, 0.8253027, 0.8228469, 0.8256585, 0.8296472, 0.8385119, 0.8517738}{0.8960273, 0.8648998, 0.8598126, 0.8371228, 0.8292624, 0.8248044, 0.8233105, 0.8244815, 0.8299137, 0.8384917, 0.8511587}{0.8956199, 0.8693579, 0.8599083, 0.8368586, 0.8291666, 0.8240585, 0.8224305, 0.8247206, 0.8302459, 0.8386201, 0.8513459}{0.8954545, 0.8678176, 0.8588648, 0.8369673, 0.8293692, 0.8257379, 0.8238959, 0.825981, 0.8311353, 0.839014, 0.8528721}{0.8985468, 0.8621182, 0.858748, 0.8367444, 0.8281018, 0.8275909, 0.8255452, 0.8269902, 0.8309701, 0.8387667, 0.8521589}{0.8974612, 0.8653649, 0.8592178, 0.8366379, 0.8293774, 0.8283749, 0.8260416, 0.8267197, 0.8312468, 0.8390581, 0.8521504}{0.8946291, 0.8674493, 0.8594531, 0.838044, 0.8305005, 0.8280644, 0.8255183, 0.827205, 0.831951, 0.839648, 0.8525481}{0.8978102, 0.8671841, 0.8586132, 0.8385979, 0.8304562, 0.8272381, 0.8254817, 0.8272479, 0.8317846, 0.8390951, 0.8514716}{0.894488, 0.8675555, 0.8600347, 0.8386434, 0.8302141, 0.8263628, 0.8251575, 0.8278226, 0.8329483, 0.8386072, 0.8519602}{0.8910802, 0.8670869, 0.8614568, 0.8385474, 0.8299882, 0.8255095, 0.8256518, 0.8287963, 0.8334567, 0.8381308, 0.85247}{0.889489, 0.8636133, 0.8614457, 0.8378287, 0.8290196, 0.8251092, 0.8260496, 0.8288555, 0.8340577, 0.8389332, 0.8536043}{0.8903986, 0.8597167, 0.8613851, 0.8365182, 0.8276148, 0.8253257, 0.8252317, 0.8287328, 0.8359488, 0.8402594, 0.8555944}{0.8912892, 0.8646115, 0.8608553, 0.8353417, 0.8268029, 0.8255416, 0.8243259, 0.8303099, 0.8371276, 0.8417008, 0.8575257}{0.8923228, 0.8712664, 0.8608285, 0.8352425, 0.82898, 0.8272837, 0.8261169, 0.8325613, 0.8369182, 0.8433729, 0.8576098}{0.893346, 0.8687787, 0.8610381, 0.8358753, 0.8314912, 0.8292351, 0.8280215, 0.8327371, 0.837044, 0.845006, 0.8573785}{0.8932936, 0.8574788, 0.8612063, 0.83697, 0.8328183, 0.8303354, 0.8290653, 0.8331872, 0.8378505, 0.8450769, 0.8573694}{0.8906562, 0.8431971, 0.8621244, 0.8361743, 0.8331432, 0.8294362, 0.8303174, 0.8347623, 0.8372994, 0.8442194, 0.8579027}{0.8880899, 0.8566016, 0.8626405, 0.8361494, 0.8332275, 0.8285492, 0.8322102, 0.834336, 0.8367221, 0.8436896, 0.8584296}{0.8893091, 0.8593396, 0.8609608, 0.8399912, 0.8329686, 0.8287473, 0.8330032, 0.8338229, 0.8373848, 0.8452905, 0.8596364}{0.8919749, 0.8591232, 0.8589308, 0.8442036, 0.8328874, 0.8293569, 0.8325636, 0.8343327, 0.8385892, 0.8473205, 0.8610812}{0.8943888, 0.8626474, 0.8602593, 0.8437211, 0.8331256, 0.830006, 0.8323629, 0.835086, 0.8398662, 0.8487562, 0.8622984}{0.895515, 0.8718445, 0.8605246, 0.8416263, 0.8334014, 0.8309165, 0.8325883, 0.8347197, 0.8393176, 0.8494644, 0.8624328}{0.8966178, 0.8661007, 0.8605959, 0.8409439, 0.833716, 0.8317966, 0.832326, 0.8343072, 0.8395518, 0.8500982, 0.8625641}{0.8965551, 0.862054, 0.859649, 0.8405448, 0.8341873, 0.8321716, 0.8323448, 0.8351083, 0.8407576, 0.849916, 0.8633689}{0.8957007, 0.8627521, 0.8591843, 0.8397894, 0.8345156, 0.8322074, 0.8336886, 0.8365516, 0.8421978, 0.8494599, 0.864632}{0.8949243, 0.8682215, 0.8585678, 0.8399593, 0.8346705, 0.8322553, 0.8350016, 0.8377627, 0.8419021, 0.8498372, 0.8658799}{0.8967478, 0.8539803, 0.8584849, 0.8404111, 0.8346538, 0.8328279, 0.8346755, 0.8361235, 0.8424174, 0.8511638, 0.8673111}{0.8985515, 0.8575454, 0.8584028, 0.8406008, 0.8346376, 0.8333934, 0.8333796, 0.8365658, 0.8432352, 0.8524543, 0.8687035}};$/;" v +WDENS_LSSTdepth baryons2.h /^ static double WDENS_LSSTdepth[100][11]={{0.9972338, 1.006271, 1.017278, 1.011789, 1.013636, 0.9993548, 1.009459, 0.9952393, 1.006372, 1.006988, 1.000568}{0.9951338, 0.9945817, 1.014789, 1.007987, 1.015429, 0.9980698, 1.009951, 1.000394, 1.004437, 1.007366, 1.000326}{0.9925948, 0.9947268, 1.003147, 0.9996293, 1.000507, 0.9965074, 1.000925, 0.986367, 1.001587, 1.001936, 1.000053}{0.9895258, 0.9981572, 1.006818, 1.001994, 1.016551, 0.9944339, 1.013794, 1.001182, 1.004783, 1.011116, 0.9996954}{0.9862037, 0.9854796, 0.9871395, 0.9873571, 0.9896828, 0.991931, 0.9943073, 0.9777439, 0.9977054, 0.998645, 0.9992613}{0.9834725, 0.9916454, 0.9966927, 0.9914137, 1.003996, 0.989412, 1.007901, 0.9901617, 1.002253, 1.008391, 0.9988115}{0.9803354, 0.9805492, 0.9856581, 0.9848628, 0.9879037, 0.9862129, 0.9940652, 0.9808548, 0.998128, 0.9994171, 0.998322}{0.9775395, 0.9803637, 0.983581, 0.9811127, 0.9883787, 0.9830059, 0.9936201, 0.9755077, 0.9969779, 1.000464, 0.9976562}{0.9733028, 0.9713436, 0.9723216, 0.9743469, 0.9802942, 0.9789445, 0.9888187, 0.9732922, 0.9951407, 0.9984066, 0.9969569}{0.9697291, 0.9738909, 0.9791189, 0.972203, 0.9779516, 0.9749352, 0.987515, 0.9677444, 0.9949967, 0.9977478, 0.9962515}{0.9665725, 0.9703569, 0.9703745, 0.9678138, 0.9813333, 0.970189, 0.987085, 0.9712213, 0.9920687, 0.9979967, 0.9953408}{0.9657998, 0.9643596, 0.9597383, 0.9555459, 0.9598319, 0.9660306, 0.9750048, 0.9573257, 0.9884214, 0.9924905, 0.9944404}{0.9647774, 0.9618158, 0.94903, 0.9548645, 0.9717107, 0.9614315, 0.9805747, 0.961407, 0.9879633, 0.995338, 0.9935461}{0.962986, 0.9568258, 0.9462142, 0.9445362, 0.9499581, 0.9570879, 0.9675835, 0.9511521, 0.9837143, 0.9889635, 0.9926374}{0.9612126, 0.9550758, 0.9408017, 0.9399285, 0.950767, 0.9516226, 0.9717068, 0.9506935, 0.9837247, 0.9926034, 0.9912957}{0.9587544, 0.951211, 0.9382509, 0.935019, 0.9424867, 0.9470245, 0.961184, 0.9428286, 0.9782031, 0.9846513, 0.9901854}{0.9555223, 0.9497012, 0.9375809, 0.9342509, 0.9409216, 0.941734, 0.9566768, 0.9378061, 0.9783159, 0.9874931, 0.9887742}{0.9568958, 0.9452013, 0.9321031, 0.9277318, 0.9329761, 0.9369138, 0.9549442, 0.9402386, 0.9764262, 0.9854654, 0.9878223}{0.9556908, 0.9473096, 0.9247791, 0.9222599, 0.9242681, 0.9318977, 0.9449727, 0.92767, 0.971097, 0.9802958, 0.9864836}{0.9540391, 0.9400831, 0.9263064, 0.9177731, 0.9214217, 0.9272697, 0.9495746, 0.9298307, 0.9682071, 0.9770035, 0.9850166}{0.9522286, 0.9374437, 0.9169418, 0.9112399, 0.9137805, 0.9217816, 0.9361994, 0.9179112, 0.9652238, 0.9754882, 0.9833489}{0.9507305, 0.9320953, 0.9115003, 0.9054, 0.9074973, 0.9175047, 0.9317314, 0.9133616, 0.9620399, 0.972763, 0.981755}{0.9485568, 0.927406, 0.9065496, 0.9003814, 0.903129, 0.9123091, 0.9271014, 0.9113985, 0.9588802, 0.9704032, 0.9801559}{0.9472804, 0.9249142, 0.9037427, 0.8975107, 0.8987836, 0.9080808, 0.9230716, 0.8990826, 0.956382, 0.9684421, 0.9787869}{0.9468401, 0.9231564, 0.9008471, 0.8939758, 0.8935068, 0.9037052, 0.9197081, 0.9032432, 0.9536988, 0.966268, 0.9772036}{0.9451038, 0.9222442, 0.8981473, 0.890751, 0.8900421, 0.8996301, 0.9151436, 0.8986531, 0.9509862, 0.9643841, 0.9759062}{0.9455943, 0.9191482, 0.8951334, 0.8868522, 0.8861346, 0.8956883, 0.9119351, 0.8965235, 0.9482784, 0.9619004, 0.9741256}{0.9433964, 0.9145364, 0.8920157, 0.8829071, 0.8823546, 0.8923828, 0.9093639, 0.8928238, 0.9463535, 0.9604609, 0.9728516}{0.9416778, 0.9105783, 0.8895284, 0.8794816, 0.8788563, 0.8884174, 0.9053722, 0.8883035, 0.9430189, 0.9578061, 0.9710902}{0.9388582, 0.908596, 0.8865872, 0.8759686, 0.8761322, 0.8849236, 0.902345, 0.8878267, 0.9404622, 0.9558494, 0.9694463}{0.9346578, 0.9076713, 0.883887, 0.8739386, 0.8718192, 0.8810595, 0.8987948, 0.8801953, 0.9377676, 0.9533683, 0.9678523}{0.9332683, 0.9033068, 0.8820004, 0.870756, 0.8683239, 0.8774577, 0.8958493, 0.878252, 0.9354707, 0.9514703, 0.9662154}{0.9321852, 0.9035516, 0.8795437, 0.868047, 0.8662349, 0.8755969, 0.8936455, 0.8761735, 0.9331367, 0.9497346, 0.964853}{0.9305858, 0.9010728, 0.8767285, 0.8645869, 0.8633009, 0.8731261, 0.8910628, 0.8753199, 0.9312162, 0.9479454, 0.9635884}{0.930415, 0.8982301, 0.8748152, 0.8619513, 0.8609262, 0.8703345, 0.8881608, 0.8723231, 0.9288056, 0.9458793, 0.9618829}{0.9294416, 0.8979679, 0.8711278, 0.8597348, 0.8594121, 0.8675413, 0.8859658, 0.870498, 0.9269598, 0.9440326, 0.9604821}{0.9281726, 0.8954026, 0.8685386, 0.8572847, 0.8565799, 0.8654707, 0.8841475, 0.8699473, 0.9250735, 0.9426729, 0.959405}{0.9270042, 0.8928564, 0.8672965, 0.8554517, 0.8536707, 0.8625308, 0.881542, 0.8661485, 0.9230597, 0.9409967, 0.9579149}{0.9231036, 0.8924117, 0.8642735, 0.8536557, 0.8513196, 0.8603141, 0.879765, 0.8656976, 0.9215289, 0.9393574, 0.9562028}{0.9212382, 0.8890477, 0.862647, 0.8499999, 0.8488852, 0.8589365, 0.8792143, 0.8634344, 0.9202043, 0.9376509, 0.9548188}{0.9191016, 0.8810333, 0.8597475, 0.8494381, 0.8468575, 0.8575113, 0.8762551, 0.8516413, 0.9178711, 0.9359438, 0.9537725}{0.9182098, 0.8859042, 0.8572966, 0.8467774, 0.8455165, 0.8560304, 0.8739676, 0.8554977, 0.916536, 0.9349067, 0.9527242}{0.9186195, 0.8844729, 0.8554496, 0.8433969, 0.8437737, 0.8544428, 0.8731333, 0.8559498, 0.9158098, 0.9338172, 0.9514801}{0.918364, 0.8820378, 0.8552259, 0.8412691, 0.8406754, 0.8525259, 0.8713831, 0.8572149, 0.9130352, 0.9313985, 0.9497046}{0.9156784, 0.877708, 0.853349, 0.8388898, 0.8396981, 0.8513141, 0.870022, 0.84692, 0.9116537, 0.9298377, 0.9484935}{0.915476, 0.8775765, 0.8522815, 0.8388923, 0.8392229, 0.849648, 0.868217, 0.8513915, 0.9106164, 0.9284808, 0.9478214}{0.916519, 0.8792325, 0.8515472, 0.8387631, 0.8376014, 0.8479392, 0.866667, 0.8532641, 0.9095863, 0.9277017, 0.9470829}{0.9164008, 0.8804776, 0.8500297, 0.8375012, 0.8363106, 0.8467389, 0.8656863, 0.8489277, 0.9083319, 0.9267336, 0.945637}{0.9101122, 0.8731475, 0.8475486, 0.8367388, 0.8351732, 0.8452497, 0.8647215, 0.8467792, 0.9074136, 0.9254793, 0.9453751}{0.9075168, 0.876197, 0.8458939, 0.8361931, 0.8343479, 0.8442522, 0.8637108, 0.8400775, 0.9068659, 0.9247206, 0.9442492}{0.9085852, 0.8713008, 0.845204, 0.8355745, 0.8329533, 0.8431905, 0.8625771, 0.841645, 0.9058751, 0.9233722, 0.9432897}{0.9115042, 0.8715315, 0.8449833, 0.8345249, 0.8326828, 0.8420615, 0.8618906, 0.8458771, 0.9045348, 0.9225926, 0.942641}{0.9105355, 0.8704217, 0.8424293, 0.832571, 0.8306468, 0.841504, 0.8621738, 0.8446095, 0.9039006, 0.9220701, 0.941789}{0.90684, 0.8689523, 0.8421946, 0.8310658, 0.8308007, 0.8406354, 0.8603148, 0.8432494, 0.9028704, 0.9214112, 0.9412364}{0.9055302, 0.8682836, 0.8427867, 0.8300964, 0.8292452, 0.8399862, 0.8600839, 0.841584, 0.9027532, 0.9210411, 0.9404967}{0.9049799, 0.8679777, 0.8421045, 0.8293409, 0.8284877, 0.8392357, 0.8593104, 0.8430245, 0.9020694, 0.919769, 0.9396961}{0.9030678, 0.8645042, 0.8397865, 0.8296105, 0.8276013, 0.8381281, 0.8583874, 0.845373, 0.9005734, 0.9187231, 0.9390712}{0.9001154, 0.8644887, 0.8389573, 0.8280658, 0.8272766, 0.8378099, 0.8567296, 0.8450011, 0.9003683, 0.9181991, 0.9385597}{0.9018876, 0.8659494, 0.8382749, 0.8294766, 0.8269703, 0.8376529, 0.8570054, 0.8455743, 0.9004348, 0.9181687, 0.9383327}{0.9015856, 0.8643896, 0.8356183, 0.8283524, 0.8254856, 0.8373034, 0.8575521, 0.8431381, 0.900072, 0.9177268, 0.938194}{0.899404, 0.8642227, 0.8348285, 0.8266266, 0.8262704, 0.8367118, 0.8563092, 0.8389972, 0.8993156, 0.9170615, 0.9377789}{0.9020292, 0.8656654, 0.8360794, 0.8276313, 0.824616, 0.8361067, 0.8559224, 0.844511, 0.8988371, 0.9159877, 0.9363449}{0.9029079, 0.8694127, 0.8366995, 0.8278091, 0.8236859, 0.8365054, 0.8550019, 0.8411257, 0.8977385, 0.9160445, 0.9365071}{0.9002211, 0.8664809, 0.8355865, 0.8243219, 0.8254091, 0.8356305, 0.8544776, 0.8433227, 0.8973618, 0.9153139, 0.9362618}{0.8970065, 0.8664581, 0.8341463, 0.823958, 0.8247388, 0.8348127, 0.8551064, 0.8444707, 0.8971141, 0.915004, 0.9359078}{0.8962027, 0.865898, 0.8356239, 0.8255552, 0.8240683, 0.8351946, 0.8549329, 0.8486611, 0.8974617, 0.9152738, 0.9357989}{0.898363, 0.8642024, 0.8341975, 0.8272151, 0.8252118, 0.8350883, 0.8544552, 0.8475446, 0.8971631, 0.9154899, 0.9355865}{0.894462, 0.8645576, 0.8343752, 0.8254557, 0.8256451, 0.8344227, 0.8538451, 0.842647, 0.8961499, 0.9146506, 0.9352703}{0.8920797, 0.8602925, 0.8342056, 0.8257229, 0.8245859, 0.8345098, 0.855211, 0.84546, 0.8957683, 0.9148631, 0.9352574}{0.8924723, 0.8627885, 0.8328946, 0.8258418, 0.8245315, 0.835237, 0.8555809, 0.8463064, 0.8960212, 0.9148914, 0.9352316}{0.8931899, 0.8652932, 0.8340562, 0.8251651, 0.8246308, 0.8355237, 0.8552686, 0.8377125, 0.8957832, 0.9140364, 0.934294}{0.8947188, 0.8614258, 0.8334818, 0.8247836, 0.8246973, 0.8354684, 0.8562308, 0.83993, 0.8966686, 0.9154543, 0.9351948}{0.8957418, 0.8630386, 0.8327734, 0.8246349, 0.8256585, 0.8358198, 0.855689, 0.8433064, 0.8959988, 0.9148332, 0.9354402}{0.8960273, 0.8645773, 0.8325724, 0.8244852, 0.8244815, 0.8361757, 0.8551948, 0.8451039, 0.8959614, 0.9152288, 0.9358883}{0.8956199, 0.8648824, 0.8327062, 0.82372, 0.8247206, 0.8362609, 0.8558997, 0.844215, 0.8972301, 0.9162763, 0.9369489}{0.8954545, 0.859483, 0.832789, 0.8254415, 0.825981, 0.8365764, 0.8570276, 0.8445204, 0.8964392, 0.9157914, 0.9360872}{0.8985468, 0.8589045, 0.8318332, 0.8272866, 0.8269902, 0.8362154, 0.8559557, 0.8416299, 0.8971218, 0.9166339, 0.9362995}{0.8974612, 0.8682729, 0.8320233, 0.8279022, 0.8267197, 0.8365853, 0.8563817, 0.8480778, 0.8975377, 0.9166548, 0.936047}{0.8946291, 0.8592858, 0.8338438, 0.8275321, 0.827205, 0.8372375, 0.8566397, 0.8524896, 0.8974668, 0.9159341, 0.9357451}{0.8978102, 0.8588545, 0.8339327, 0.8268596, 0.8272479, 0.8367653, 0.8560471, 0.8458864, 0.897599, 0.9164134, 0.9368359}{0.894488, 0.8666314, 0.8338763, 0.8259586, 0.8278226, 0.8363236, 0.8565561, 0.8460519, 0.8977697, 0.9175276, 0.937307}{0.8910802, 0.8687767, 0.8336264, 0.8250644, 0.8287963, 0.8358898, 0.8570409, 0.8485947, 0.8979326, 0.9184319, 0.9377487}{0.889489, 0.8675763, 0.8328944, 0.8253047, 0.8288555, 0.8361926, 0.8582034, 0.8529573, 0.8987127, 0.9187281, 0.9378683}{0.8903986, 0.8669655, 0.8315886, 0.8255331, 0.8287328, 0.8375008, 0.8603226, 0.847452, 0.8993945, 0.9182954, 0.9375537}{0.8912892, 0.8631745, 0.8303341, 0.825396, 0.8303099, 0.8387677, 0.8614863, 0.8463377, 0.8997505, 0.9180018, 0.9372437}{0.8923228, 0.8567316, 0.8309814, 0.8270741, 0.8325613, 0.8403298, 0.8613541, 0.8450372, 0.9004158, 0.918417, 0.9386702}{0.893346, 0.860419, 0.8331487, 0.8291203, 0.8327371, 0.8419174, 0.861198, 0.8437776, 0.9012209, 0.9193418, 0.9403296}{0.8932936, 0.8677784, 0.8344311, 0.8300715, 0.8331872, 0.8428077, 0.8615214, 0.8484518, 0.901673, 0.9202545, 0.9414823}{0.8906562, 0.8702472, 0.8344379, 0.8291239, 0.8347623, 0.842022, 0.8620863, 0.8492678, 0.9016141, 0.9209615, 0.9415225}{0.8880899, 0.8709544, 0.8347162, 0.8287851, 0.834336, 0.8412594, 0.8626887, 0.8513323, 0.9017541, 0.9215679, 0.9415621}{0.8893091, 0.8700213, 0.8379101, 0.8297037, 0.8338229, 0.8424471, 0.8639839, 0.8521808, 0.9030222, 0.9228588, 0.9423338}{0.8919749, 0.8672151, 0.8377732, 0.8303331, 0.8343327, 0.8443845, 0.8652869, 0.8517624, 0.9044366, 0.9236899, 0.9433549}{0.8943888, 0.8634071, 0.8372898, 0.8305006, 0.835086, 0.8461313, 0.8655137, 0.85253, 0.9054952, 0.9239943, 0.9442575}{0.895515, 0.8711914, 0.8365762, 0.8314501, 0.8347197, 0.8468605, 0.8656199, 0.8526041, 0.9052723, 0.9233075, 0.9447107}{0.8966178, 0.8713527, 0.8368139, 0.8322529, 0.8343072, 0.8475613, 0.8668255, 0.853656, 0.9050355, 0.9235026, 0.9451549}{0.8965551, 0.8722581, 0.8364777, 0.8321871, 0.8351083, 0.8475939, 0.8684019, 0.8545585, 0.9054423, 0.9246706, 0.9452729}{0.8957007, 0.871135, 0.8367266, 0.8322249, 0.8365516, 0.8471776, 0.8697112, 0.8453763, 0.9063965, 0.9260671, 0.9451704}{0.8949243, 0.8673968, 0.836975, 0.832827, 0.8377627, 0.8468079, 0.8703119, 0.8464493, 0.9075865, 0.927097, 0.9451106}{0.8967478, 0.869858, 0.8372199, 0.8334276, 0.8361235, 0.8481101, 0.8718104, 0.853118, 0.9084389, 0.9272213, 0.9466787}{0.8985515, 0.8680867, 0.8371722, 0.8340202, 0.8365658, 0.8493786, 0.8730797, 0.8624535, 0.9092636, 0.9278993, 0.9482106}};$/;" v +WML1V848_DESdepth baryons2.h /^ static double WML1V848_DESdepth[100][11]={{0.9970392, 0.9975931, 0.997977, 0.9983605, 0.9987271, 0.9990848, 0.9994573, 0.9997007, 0.9999077, 1.000088, 1.000264}{0.9948117, 0.9956671, 0.9963203, 0.9969678, 0.9974229, 0.9978947, 0.9984132, 0.9988713, 0.9992453, 0.9995182, 0.9997682}{0.9921357, 0.9931357, 0.9942234, 0.9950028, 0.9957743, 0.9964928, 0.9972102, 0.9977897, 0.9982927, 0.9987203, 0.9991223}{0.9898314, 0.9911962, 0.9925038, 0.9934636, 0.9940936, 0.9947708, 0.9957275, 0.9965462, 0.9972167, 0.9977601, 0.9983134}{0.9870729, 0.9891006, 0.9907072, 0.9913181, 0.9919214, 0.9926945, 0.9937745, 0.9947935, 0.995728, 0.9965819, 0.9973901}{0.9846757, 0.9862884, 0.9878746, 0.9887583, 0.9895138, 0.9904875, 0.9918865, 0.9932175, 0.9943561, 0.9954239, 0.9964372}{0.9830389, 0.9843331, 0.9859357, 0.9865114, 0.9872209, 0.9880629, 0.989581, 0.9911042, 0.99256, 0.9939001, 0.995136}{0.9800863, 0.9808457, 0.9823745, 0.9830716, 0.984091, 0.9855515, 0.9875325, 0.9893856, 0.9910296, 0.9925402, 0.9939996}{0.9770531, 0.9780165, 0.9797259, 0.9803442, 0.9813835, 0.9827494, 0.9850494, 0.9871325, 0.9890266, 0.990749, 0.9924325}{0.97391, 0.97443, 0.9764857, 0.9771409, 0.9780647, 0.9796719, 0.9824752, 0.9847477, 0.9868556, 0.9889066, 0.991044}{0.97212, 0.9730871, 0.9752848, 0.9754647, 0.9757502, 0.97703, 0.9796866, 0.9821102, 0.9844442, 0.9867162, 0.9891293}{0.972215, 0.9716024, 0.9731634, 0.9725562, 0.9728872, 0.9743822, 0.9769828, 0.979475, 0.9820385, 0.9847966, 0.9876076}{0.9712759, 0.970031, 0.9714597, 0.9700807, 0.9700051, 0.9712152, 0.9739705, 0.9770035, 0.9799174, 0.982947, 0.9859857}{0.9706842, 0.9689184, 0.96923, 0.9668176, 0.9663415, 0.9677062, 0.9708234, 0.9740919, 0.9774143, 0.9807624, 0.9841085}{0.9683175, 0.9667778, 0.9666703, 0.963974, 0.9630873, 0.9646347, 0.9681155, 0.9717057, 0.9750638, 0.9785562, 0.982161}{0.9670261, 0.9648746, 0.9649677, 0.9619224, 0.9606722, 0.9618365, 0.9652085, 0.9688126, 0.9725227, 0.9761803, 0.9799559}{0.9657353, 0.962401, 0.962414, 0.9584587, 0.9574927, 0.9600846, 0.9633811, 0.9668875, 0.9704064, 0.9740498, 0.9781608}{0.9668908, 0.9618262, 0.9609797, 0.9560997, 0.9550755, 0.9569353, 0.9602286, 0.9637727, 0.9675886, 0.9715454, 0.9759758}{0.9663036, 0.9616437, 0.959808, 0.9546515, 0.953556, 0.9550963, 0.9581378, 0.9616029, 0.96535, 0.9694146, 0.9740414}{0.965708, 0.9610329, 0.9583487, 0.9527575, 0.9511651, 0.9523569, 0.9556664, 0.9592723, 0.9632796, 0.9675073, 0.9724048}{0.9654688, 0.9600311, 0.956273, 0.9499036, 0.9484809, 0.9493414, 0.9528922, 0.9564838, 0.9603881, 0.9648597, 0.969991}{0.9643263, 0.9585383, 0.9535929, 0.9468317, 0.9455119, 0.9462105, 0.949486, 0.9532627, 0.9575728, 0.9624858, 0.9678749}{0.9634797, 0.957136, 0.9504027, 0.9433425, 0.9417248, 0.9428409, 0.9471496, 0.9511671, 0.955215, 0.9599421, 0.9654366}{0.9631898, 0.9543345, 0.9491991, 0.9423114, 0.9408084, 0.9423873, 0.9458758, 0.9489155, 0.9522708, 0.9574097, 0.9634193}{0.9638125, 0.952609, 0.9484423, 0.9412612, 0.9395082, 0.9410472, 0.9432582, 0.9457844, 0.9498402, 0.9554096, 0.9616296}{0.9636967, 0.9515452, 0.9480037, 0.9396021, 0.9382456, 0.9389836, 0.9407902, 0.9437229, 0.9479733, 0.9533215, 0.9595875}{0.9648847, 0.9517629, 0.9466681, 0.937672, 0.9362816, 0.9372537, 0.9394841, 0.9421614, 0.9461768, 0.9515121, 0.9577569}{0.9631904, 0.9512569, 0.9447374, 0.9365076, 0.9340571, 0.9347461, 0.9368622, 0.9399099, 0.944233, 0.9498304, 0.9562966}{0.9616413, 0.9494015, 0.9414348, 0.935351, 0.9335882, 0.9335825, 0.9354289, 0.9378835, 0.9417378, 0.9472967, 0.9542695}{0.9582933, 0.9467741, 0.9414433, 0.9342724, 0.9314037, 0.9310184, 0.9335443, 0.9364289, 0.9404146, 0.9460666, 0.9528443}{0.9561402, 0.947518, 0.940379, 0.9319677, 0.9306818, 0.9305001, 0.9317581, 0.933746, 0.9374806, 0.94398, 0.9510096}{0.9570488, 0.9455538, 0.9405435, 0.9328543, 0.9303707, 0.9288544, 0.9294848, 0.9317805, 0.9362288, 0.9424699, 0.949471}{0.9559987, 0.944332, 0.9393351, 0.9298331, 0.928145, 0.927409, 0.9282599, 0.9311463, 0.9357967, 0.9416708, 0.9484922}{0.9557386, 0.9441697, 0.9389014, 0.9285227, 0.9265968, 0.9253666, 0.9263948, 0.9297523, 0.9346726, 0.9407759, 0.9471326}{0.9567354, 0.941671, 0.9381272, 0.9290872, 0.9255839, 0.9243793, 0.9254901, 0.9288299, 0.9338847, 0.9389658, 0.9450791}{0.9577858, 0.9412254, 0.9361433, 0.9268413, 0.9234806, 0.9229445, 0.9248548, 0.9284947, 0.9326489, 0.9378106, 0.9445497}{0.9556589, 0.9400991, 0.9368149, 0.9246908, 0.9222685, 0.9217014, 0.9237517, 0.9269441, 0.931145, 0.9363146, 0.9433628}{0.9549707, 0.9397401, 0.9350492, 0.9245474, 0.9222553, 0.9208683, 0.9226029, 0.9255539, 0.9290899, 0.9346125, 0.9413112}{0.9508334, 0.939407, 0.9344868, 0.923258, 0.9203465, 0.9205429, 0.9218768, 0.9241516, 0.9278605, 0.9334696, 0.9401713}{0.9486547, 0.9400697, 0.9310559, 0.9209634, 0.9214254, 0.918306, 0.9204006, 0.9229874, 0.9268798, 0.9332796, 0.9403177}{0.9472794, 0.939182, 0.9336051, 0.9200109, 0.9196214, 0.9179907, 0.9197675, 0.9220499, 0.9266924, 0.9321292, 0.9386928}{0.9478831, 0.9427022, 0.932742, 0.9184681, 0.9181256, 0.9167813, 0.9179532, 0.9211411, 0.9260019, 0.9313332, 0.9376114}{0.9499345, 0.9446529, 0.9302455, 0.9175769, 0.9166057, 0.9144056, 0.9168467, 0.9209425, 0.9256706, 0.9309653, 0.9375125}{0.9497879, 0.9409953, 0.9307359, 0.9197866, 0.9181812, 0.9145707, 0.9167786, 0.9198936, 0.9237144, 0.9285376, 0.9361474}{0.9463748, 0.9392215, 0.9286103, 0.9182348, 0.9177306, 0.9126423, 0.9146165, 0.9186691, 0.9246083, 0.9289922, 0.9365509}{0.9479624, 0.9398907, 0.9288369, 0.9176427, 0.9171831, 0.9133864, 0.9150023, 0.9197557, 0.9244717, 0.9286806, 0.9358511}{0.9507689, 0.9390223, 0.9296237, 0.917771, 0.9181291, 0.9150526, 0.9156154, 0.918986, 0.9238955, 0.9278552, 0.9348614}{0.9493206, 0.9394259, 0.9301938, 0.9186847, 0.9190115, 0.9149453, 0.9144737, 0.9184624, 0.9235085, 0.9274841, 0.934845}{0.9444401, 0.9348484, 0.9272013, 0.9169804, 0.9154774, 0.9148158, 0.9143336, 0.9186511, 0.9237124, 0.926358, 0.9336375}{0.9419169, 0.9365224, 0.9274294, 0.9155061, 0.9155139, 0.914962, 0.9146022, 0.9186447, 0.9220451, 0.9260006, 0.933247}{0.9444433, 0.9373599, 0.9272826, 0.9157708, 0.9159408, 0.91472, 0.9144222, 0.9174322, 0.9233077, 0.9260121, 0.9336338}{0.9502015, 0.9360602, 0.9277261, 0.9157591, 0.9158388, 0.9140829, 0.9138212, 0.918706, 0.9239036, 0.9262599, 0.9343867}{0.9496284, 0.9357593, 0.9294583, 0.9138879, 0.9142896, 0.913862, 0.9121655, 0.9173369, 0.9230843, 0.926151, 0.9343375}{0.9473885, 0.9351938, 0.9292098, 0.9144483, 0.9155497, 0.9130657, 0.9134567, 0.9187202, 0.922786, 0.9264135, 0.9335318}{0.9471748, 0.9366234, 0.9291995, 0.9165861, 0.915893, 0.9129955, 0.9144999, 0.9185869, 0.9223874, 0.9265326, 0.9345391}{0.9471946, 0.9340412, 0.9289174, 0.9165125, 0.9156047, 0.9133853, 0.9148996, 0.9192597, 0.922598, 0.9269379, 0.935377}{0.9453373, 0.9324458, 0.9270648, 0.9148914, 0.914626, 0.9137758, 0.9172494, 0.9199323, 0.9226871, 0.926463, 0.9341555}{0.9420546, 0.9357128, 0.9269811, 0.9130464, 0.9154091, 0.9133938, 0.9154202, 0.919154, 0.9236539, 0.9276465, 0.9341394}{0.9443194, 0.9331332, 0.9279635, 0.9149067, 0.914496, 0.9145555, 0.9148831, 0.918679, 0.9243795, 0.9270291, 0.9353131}{0.9456869, 0.93228, 0.9283255, 0.9132153, 0.9142398, 0.9142403, 0.9136225, 0.918915, 0.9244142, 0.9273102, 0.9354442}{0.9454156, 0.9311172, 0.9276817, 0.9124797, 0.9143317, 0.913304, 0.914529, 0.9197757, 0.9243815, 0.9275017, 0.9348033}{0.9475738, 0.9342518, 0.9290254, 0.9141502, 0.9178057, 0.9166383, 0.9163101, 0.9197301, 0.9240914, 0.9286519, 0.9359522}{0.9516091, 0.9363382, 0.9311274, 0.9160437, 0.91852, 0.9181331, 0.915651, 0.9197164, 0.9271023, 0.9296957, 0.9349786}{0.9505581, 0.935079, 0.9317691, 0.916086, 0.9170652, 0.9150877, 0.9140423, 0.9217199, 0.9265345, 0.9278992, 0.9346397}{0.9482168, 0.9334489, 0.9308826, 0.9152012, 0.9159054, 0.9129918, 0.9163271, 0.9214341, 0.9252422, 0.9275857, 0.9351313}{0.9484337, 0.932355, 0.9292795, 0.9164403, 0.918005, 0.9161462, 0.9171679, 0.9214396, 0.9258519, 0.92904, 0.9363473}{0.9506312, 0.933936, 0.9274679, 0.9175813, 0.9176676, 0.9181491, 0.9181221, 0.9222208, 0.9269787, 0.9306697, 0.9374874}{0.947038, 0.9359714, 0.9287319, 0.9179841, 0.9187449, 0.9181632, 0.9186168, 0.9235543, 0.92914, 0.9300917, 0.9377724}{0.9449881, 0.9319428, 0.9281543, 0.9184246, 0.9182925, 0.9192399, 0.9195192, 0.9236725, 0.9289149, 0.9313171, 0.9386411}{0.9457191, 0.9302922, 0.9284206, 0.918373, 0.9187099, 0.9208603, 0.9182124, 0.9245208, 0.9298732, 0.9330262, 0.9399597}{0.9468992, 0.9311482, 0.932161, 0.9197499, 0.9200385, 0.9198425, 0.9204164, 0.9249559, 0.9296854, 0.9333574, 0.9405571}{0.950285, 0.9349218, 0.9308759, 0.9192835, 0.919148, 0.9201484, 0.9215016, 0.9258256, 0.9301136, 0.9344728, 0.9414055}{0.9510497, 0.9354583, 0.9298604, 0.9180108, 0.9212179, 0.9199437, 0.9216632, 0.9258582, 0.9310775, 0.9348003, 0.9416705}{0.9513465, 0.9346862, 0.9300341, 0.9186008, 0.9213527, 0.9200392, 0.9220988, 0.9273183, 0.931396, 0.9352558, 0.9419094}{0.9526739, 0.9358481, 0.9312959, 0.9173978, 0.9205213, 0.9212097, 0.9242404, 0.9279678, 0.9321919, 0.9362009, 0.9426845}{0.9522766, 0.9334551, 0.9318716, 0.9183362, 0.9232891, 0.9241852, 0.9250098, 0.9287124, 0.9332582, 0.9370669, 0.9448662}{0.9572666, 0.9345793, 0.9316705, 0.9212714, 0.9219559, 0.9270277, 0.9274971, 0.9309508, 0.9345271, 0.9386748, 0.9451547}{0.9574857, 0.9336203, 0.9331297, 0.9209006, 0.924695, 0.9284939, 0.928863, 0.9315931, 0.9356205, 0.9398404, 0.945789}{0.9548918, 0.9342064, 0.9340071, 0.9236672, 0.9270179, 0.9288247, 0.9290899, 0.9327458, 0.9368035, 0.9407086, 0.9466531}{0.9576965, 0.936751, 0.9347219, 0.9250986, 0.9269262, 0.9291064, 0.9308548, 0.9340176, 0.9372078, 0.940339, 0.9465032}{0.9543055, 0.9378318, 0.93705, 0.9257654, 0.9276255, 0.9281094, 0.9306433, 0.9351136, 0.9389319, 0.9402672, 0.9476979}{0.9508365, 0.9372717, 0.9393555, 0.9263819, 0.9283129, 0.9271118, 0.9315651, 0.9365355, 0.9398839, 0.9401954, 0.9488933}{0.9499821, 0.9360954, 0.9401409, 0.9257206, 0.9276859, 0.9277012, 0.9335681, 0.9373389, 0.9411373, 0.9417657, 0.9502541}{0.9527301, 0.9362857, 0.9411247, 0.9234283, 0.9270226, 0.9305049, 0.9339275, 0.9382652, 0.9441687, 0.94425, 0.9518477}{0.9554205, 0.9396653, 0.9410113, 0.922766, 0.9273693, 0.933302, 0.9339344, 0.9407162, 0.9462214, 0.9462634, 0.9533943}{0.9566737, 0.941513, 0.9398476, 0.9255551, 0.929359, 0.935575, 0.9360503, 0.9434216, 0.9479185, 0.9476923, 0.9547836}{0.9576406, 0.9382003, 0.9388326, 0.9282704, 0.9313106, 0.9376867, 0.9382606, 0.9450466, 0.9493853, 0.9491155, 0.9561069}{0.9581294, 0.9354136, 0.9403756, 0.9290089, 0.9332258, 0.9393005, 0.9400294, 0.9470072, 0.9496844, 0.9500458, 0.9574117}{0.9575027, 0.9358109, 0.9421964, 0.9279334, 0.9355979, 0.9398054, 0.9424494, 0.949177, 0.9479492, 0.9502722, 0.9587566}{0.9568933, 0.9345598, 0.9433498, 0.928985, 0.9375052, 0.9403037, 0.9452938, 0.9477922, 0.9476671, 0.9506937, 0.9600862}{0.9599127, 0.9359527, 0.9429503, 0.93345, 0.9377947, 0.9418666, 0.9473159, 0.9475032, 0.9487449, 0.9530504, 0.9612817}{0.9643178, 0.9390306, 0.9427459, 0.9379421, 0.9380359, 0.9438138, 0.9474261, 0.9483445, 0.950276, 0.9558903, 0.9624051}{0.9681064, 0.9414213, 0.944877, 0.9380165, 0.9389121, 0.9455543, 0.9476659, 0.9494571, 0.9524155, 0.9573615, 0.9635539}{0.9686769, 0.9388517, 0.9455434, 0.9375172, 0.9390541, 0.9463353, 0.9485559, 0.9505193, 0.954011, 0.9576431, 0.9649612}{0.9692355, 0.9388615, 0.9460935, 0.937392, 0.9392519, 0.9470903, 0.9493989, 0.9518142, 0.9547855, 0.9580036, 0.9663353}{0.9709858, 0.9418594, 0.9463171, 0.9372731, 0.9413231, 0.9485296, 0.9510249, 0.9527232, 0.9562651, 0.9587559, 0.9678792}{0.9735361, 0.9446552, 0.9469549, 0.9371297, 0.9442612, 0.9504391, 0.9515554, 0.9540775, 0.9584673, 0.9592247, 0.9695379}{0.9760155, 0.9456231, 0.9471309, 0.9394138, 0.9463356, 0.9522659, 0.9520504, 0.9559476, 0.9588494, 0.960167, 0.971171}{0.9775189, 0.9438397, 0.9489713, 0.9415379, 0.9459299, 0.9516997, 0.9521857, 0.9570571, 0.9594661, 0.9614542, 0.9727978}{0.9790059, 0.9440606, 0.9507698, 0.9424893, 0.9455372, 0.9511406, 0.9531246, 0.957568, 0.960284, 0.9627067, 0.9743799}};$/;" v +WML1V848_LSSTdepth baryons2.h /^ static double WML1V848_LSSTdepth[100][11]={{0.9970392, 0.9979198, 0.9986086, 0.9991673, 0.9997007, 1.000043, 1.000313, 0.9875152, 1.000576, 1.000614, 1.000633}{0.9948117, 0.9961314, 0.9971472, 0.998054, 0.9988713, 0.9994329, 0.999873, 0.9948805, 1.000333, 1.000419, 1.000467}{0.9921357, 0.993992, 0.9954314, 0.9966449, 0.9977897, 0.9986318, 0.9992496, 0.9843808, 1.000017, 1.000184, 1.000286}{0.9898314, 0.9921995, 0.9937283, 0.9950566, 0.9965462, 0.9975864, 0.9985782, 0.994397, 0.9996787, 0.9999325, 1.000075}{0.9870729, 0.9903902, 0.9915978, 0.9929277, 0.9947935, 0.996417, 0.9976405, 0.9800051, 0.9991974, 0.9995563, 0.9997881}{0.9846757, 0.9875773, 0.9891354, 0.9908171, 0.9932175, 0.995169, 0.9968292, 0.9856296, 0.9987885, 0.9992762, 0.9995599}{0.9830389, 0.9855695, 0.9867284, 0.9885094, 0.9911042, 0.9935994, 0.9955717, 0.9808959, 0.9981592, 0.998787, 0.9992014}{0.9800863, 0.982052, 0.9835769, 0.9859728, 0.9893856, 0.992217, 0.9945342, 0.9766525, 0.9975889, 0.9983834, 0.9988775}{0.9770531, 0.9794036, 0.9807287, 0.9833647, 0.9871325, 0.990299, 0.9931104, 0.9762601, 0.9969039, 0.9978756, 0.9985189}{0.97391, 0.9762332, 0.9776861, 0.9802421, 0.9847477, 0.9884643, 0.9917692, 0.9692546, 0.996207, 0.9973862, 0.9981594}{0.97212, 0.9749129, 0.9754416, 0.9776618, 0.9821102, 0.9861559, 0.9900383, 0.9756666, 0.995274, 0.9967095, 0.9976557}{0.972215, 0.9729308, 0.9726161, 0.9749109, 0.979475, 0.9842495, 0.9885114, 0.9662404, 0.9944765, 0.9961013, 0.9972079}{0.9712759, 0.9714102, 0.9698427, 0.9718337, 0.9770035, 0.9822873, 0.9871361, 0.9691932, 0.9937696, 0.9955842, 0.9967579}{0.9706842, 0.969519, 0.9663657, 0.9683574, 0.9740919, 0.9800877, 0.9852462, 0.9637089, 0.9927639, 0.9948092, 0.9962144}{0.9683175, 0.9670535, 0.9632721, 0.9654121, 0.9717057, 0.9778299, 0.9834657, 0.961756, 0.991736, 0.9940844, 0.9956321}{0.9670261, 0.9653532, 0.9608465, 0.9627145, 0.9688126, 0.9753483, 0.981318, 0.9580547, 0.9906765, 0.9933225, 0.995155}{0.9657353, 0.9629997, 0.9575878, 0.9607441, 0.9668875, 0.9732511, 0.9796277, 0.9543855, 0.9895307, 0.99247, 0.9944284}{0.9668908, 0.9618924, 0.9552656, 0.9576445, 0.9637727, 0.9706126, 0.9776115, 0.95699, 0.9886168, 0.9917534, 0.993954}{0.9663036, 0.9607848, 0.9539143, 0.9557081, 0.9616029, 0.9685431, 0.9756547, 0.9500753, 0.9873073, 0.9907922, 0.9932837}{0.965708, 0.9599223, 0.9515174, 0.9530916, 0.9592723, 0.9665403, 0.9741139, 0.9515868, 0.9863226, 0.9900697, 0.9926839}{0.9654688, 0.9579432, 0.9489443, 0.9500498, 0.9564838, 0.9639206, 0.9717318, 0.9444129, 0.9850462, 0.9890124, 0.9919221}{0.9643263, 0.9554803, 0.9460292, 0.9467728, 0.9532627, 0.9615427, 0.9695506, 0.9418428, 0.9835864, 0.9877993, 0.9910318}{0.9634797, 0.9525961, 0.9421897, 0.9437082, 0.9511671, 0.9589595, 0.967337, 0.9421393, 0.9823499, 0.9869104, 0.9904769}{0.9631898, 0.951069, 0.9412745, 0.9431729, 0.9489155, 0.956494, 0.9652339, 0.9311249, 0.9812238, 0.985923, 0.989677}{0.9638125, 0.9502132, 0.9397773, 0.9414971, 0.9457844, 0.9543136, 0.9636643, 0.9371402, 0.979742, 0.9848471, 0.988918}{0.9636967, 0.9498648, 0.93875, 0.9392767, 0.9437229, 0.9523427, 0.9615733, 0.9342832, 0.9787601, 0.9842039, 0.9883878}{0.9648847, 0.9494356, 0.9364228, 0.9377017, 0.9421614, 0.9504846, 0.9598932, 0.9337732, 0.9775785, 0.983102, 0.9875121}{0.9631904, 0.9474002, 0.9350023, 0.9351207, 0.9399099, 0.9486882, 0.9584955, 0.9309304, 0.9765664, 0.9822862, 0.9867877}{0.9616413, 0.9433162, 0.9343856, 0.9339468, 0.9378835, 0.9461798, 0.9564877, 0.9285279, 0.9751147, 0.9811207, 0.9860312}{0.9582933, 0.9431832, 0.9325507, 0.9315267, 0.9364289, 0.9448418, 0.9551884, 0.9294985, 0.97369, 0.9800983, 0.9851551}{0.9561402, 0.9424033, 0.9312108, 0.9308796, 0.933746, 0.9427588, 0.9532716, 0.9231664, 0.9725018, 0.9790292, 0.9844566}{0.9570488, 0.9419682, 0.9314431, 0.9289834, 0.9317805, 0.9412062, 0.9519504, 0.9225336, 0.9716289, 0.9782521, 0.9837916}{0.9559987, 0.9410642, 0.9288928, 0.927427, 0.9311463, 0.94053, 0.9507842, 0.9217477, 0.9704886, 0.9774667, 0.9831816}{0.9557386, 0.940776, 0.927314, 0.9255761, 0.9297523, 0.9396791, 0.9493861, 0.9220549, 0.9695739, 0.9767041, 0.9826072}{0.9567354, 0.9395551, 0.9271662, 0.9245625, 0.9288299, 0.9379127, 0.9474806, 0.9204072, 0.9685568, 0.9757869, 0.981925}{0.9577858, 0.9376476, 0.9248342, 0.9232955, 0.9284947, 0.9366803, 0.9470103, 0.9197586, 0.9676762, 0.974776, 0.9809341}{0.9556589, 0.9385003, 0.9232787, 0.9221356, 0.9269441, 0.9350936, 0.9459012, 0.9202058, 0.9669911, 0.9743832, 0.9806167}{0.9549707, 0.937037, 0.9232841, 0.9212187, 0.9255539, 0.9335915, 0.9439593, 0.9172482, 0.9657762, 0.9732628, 0.9797141}{0.9508334, 0.9367814, 0.9213539, 0.9208155, 0.9241516, 0.9322623, 0.9429546, 0.9174984, 0.9648575, 0.972517, 0.9789002}{0.9486547, 0.9338305, 0.9211816, 0.9184382, 0.9229874, 0.9321257, 0.9430327, 0.9155468, 0.9644386, 0.9719238, 0.9782749}{0.9472794, 0.9348011, 0.9201636, 0.9184815, 0.9220499, 0.9309625, 0.9411311, 0.9052294, 0.9634534, 0.9709777, 0.9777253}{0.9478831, 0.9372684, 0.9184122, 0.9169179, 0.9211411, 0.9302145, 0.9405305, 0.9105485, 0.9626741, 0.9704073, 0.9773739}{0.9499345, 0.9336282, 0.9173639, 0.9149051, 0.9209425, 0.9298515, 0.9401369, 0.9110077, 0.9621337, 0.9700096, 0.977017}{0.9497879, 0.9334277, 0.9190789, 0.915037, 0.9198936, 0.927344, 0.9387737, 0.9135771, 0.9605765, 0.9683385, 0.9756508}{0.9463748, 0.9313291, 0.9183273, 0.9129686, 0.9186691, 0.9276173, 0.9391896, 0.9036109, 0.9603829, 0.9678176, 0.9750362}{0.9479624, 0.9303924, 0.9179103, 0.9138733, 0.9197557, 0.9273337, 0.9383763, 0.908708, 0.9597741, 0.9671159, 0.9748985}{0.9507689, 0.9316937, 0.9181941, 0.9151826, 0.918986, 0.9266258, 0.9372658, 0.9112388, 0.9592264, 0.9669088, 0.9747483}{0.9493206, 0.9321452, 0.9194114, 0.9148486, 0.9184624, 0.9261247, 0.9372538, 0.9078886, 0.9590255, 0.9666741, 0.9741059}{0.9444401, 0.9287014, 0.9166036, 0.914714, 0.9186511, 0.9251117, 0.9362423, 0.9060716, 0.9585009, 0.9660736, 0.9740841}{0.9419169, 0.9293465, 0.9155779, 0.914875, 0.9186447, 0.9247285, 0.9360808, 0.8994049, 0.9581142, 0.9658063, 0.9735593}{0.9444433, 0.9289819, 0.9159095, 0.9146468, 0.9174322, 0.9246967, 0.9363762, 0.9013411, 0.9575755, 0.9652189, 0.973038}{0.9502015, 0.9285688, 0.9159202, 0.9140289, 0.918706, 0.9247879, 0.9364654, 0.9058411, 0.9569905, 0.9649009, 0.9727421}{0.9496284, 0.9306449, 0.9142654, 0.9135932, 0.9173369, 0.9246591, 0.9367487, 0.9055193, 0.9572227, 0.9653463, 0.9728612}{0.9473885, 0.9303466, 0.915131, 0.9126607, 0.9187202, 0.9249504, 0.9358342, 0.9046676, 0.9569043, 0.9650067, 0.9724233}{0.9471748, 0.9294677, 0.9165779, 0.9133378, 0.9185869, 0.9252768, 0.9368851, 0.9039816, 0.9571854, 0.9651143, 0.9720855}{0.9471946, 0.9286136, 0.9161992, 0.9136572, 0.9192597, 0.9253356, 0.9369065, 0.905933, 0.9572982, 0.9645977, 0.971763}{0.9453373, 0.927041, 0.9146366, 0.9144944, 0.9199323, 0.9250156, 0.9356335, 0.9090679, 0.9568674, 0.964059, 0.9713569}{0.9420546, 0.927651, 0.9145908, 0.9140257, 0.919154, 0.9262002, 0.9355725, 0.9097974, 0.9574682, 0.9637696, 0.971223}{0.9443194, 0.927856, 0.9149061, 0.9149628, 0.918679, 0.9258956, 0.9368104, 0.9105123, 0.9577357, 0.9639568, 0.9710556}{0.9456869, 0.9276078, 0.9135551, 0.9139741, 0.918915, 0.9256757, 0.9371588, 0.9081061, 0.9578134, 0.9641512, 0.9712493}{0.9454156, 0.9277846, 0.9133378, 0.9135593, 0.9197757, 0.9261285, 0.9364031, 0.9042071, 0.9578241, 0.9643667, 0.971627}{0.9475738, 0.929384, 0.916489, 0.9166731, 0.9197301, 0.927288, 0.9373291, 0.9113301, 0.9579884, 0.9641851, 0.9713939}{0.9516091, 0.9312638, 0.9176771, 0.9181152, 0.9197164, 0.9283121, 0.9362998, 0.9087854, 0.9578033, 0.9639649, 0.9708112}{0.9505581, 0.9318419, 0.9168601, 0.9141663, 0.9217199, 0.9270537, 0.9361898, 0.9117585, 0.9573987, 0.9635233, 0.9704862}{0.9482168, 0.9313315, 0.9157629, 0.9137674, 0.9214341, 0.9261208, 0.9377482, 0.9131065, 0.9576796, 0.9638711, 0.9706542}{0.9484337, 0.9297207, 0.9177807, 0.916361, 0.9214396, 0.9276765, 0.9383354, 0.9187891, 0.9588879, 0.9649242, 0.9713324}{0.9506312, 0.9285905, 0.9178047, 0.9183692, 0.9222208, 0.9292762, 0.9392137, 0.9184441, 0.9586626, 0.9653529, 0.9711778}{0.947038, 0.9290517, 0.9183621, 0.9180853, 0.9235543, 0.9288717, 0.9393212, 0.9135954, 0.9584433, 0.9652427, 0.9711252}{0.9449881, 0.9282397, 0.9185611, 0.9195425, 0.9236725, 0.9297854, 0.9408519, 0.916309, 0.9581486, 0.9654438, 0.9711903}{0.9457191, 0.9271806, 0.9182159, 0.9203114, 0.9245208, 0.9317411, 0.9411297, 0.9168925, 0.9583041, 0.9656685, 0.9711006}{0.9468992, 0.9313336, 0.9198834, 0.9198678, 0.9249559, 0.9320369, 0.9416299, 0.9094083, 0.9590856, 0.9652044, 0.9702878}{0.950285, 0.9317481, 0.9192521, 0.9203126, 0.9258256, 0.9331017, 0.9425534, 0.9123907, 0.9595835, 0.9667789, 0.9713466}{0.9510497, 0.9304829, 0.9196572, 0.9202679, 0.9258582, 0.9335059, 0.9428847, 0.9163901, 0.9595926, 0.9672847, 0.9721615}{0.9513465, 0.9308385, 0.9206724, 0.9204553, 0.9273183, 0.93398, 0.9429485, 0.9182523, 0.9602908, 0.9682025, 0.9729606}{0.9526739, 0.9325726, 0.919085, 0.9218396, 0.9279678, 0.9350118, 0.9438447, 0.9173742, 0.9618521, 0.969014, 0.9738431}{0.9522766, 0.9328599, 0.9212496, 0.9247333, 0.9287124, 0.9357661, 0.9459111, 0.9183325, 0.9616242, 0.9686991, 0.9733874}{0.9572666, 0.9320339, 0.9216406, 0.9272315, 0.9309508, 0.937153, 0.9460217, 0.9152949, 0.9619184, 0.9697697, 0.9736699}{0.9574857, 0.9327605, 0.9222004, 0.9285867, 0.9315931, 0.9386626, 0.9465908, 0.9223341, 0.9628432, 0.9702044, 0.9736174}{0.9548918, 0.9350988, 0.9261399, 0.9288785, 0.9327458, 0.9396298, 0.9472451, 0.9275498, 0.9633052, 0.9700881, 0.9735258}{0.9576965, 0.9353376, 0.9259831, 0.9294515, 0.9340176, 0.9391891, 0.9476201, 0.9201269, 0.9631882, 0.9702708, 0.9744106}{0.9543055, 0.9359226, 0.9266732, 0.9284194, 0.9351136, 0.9391216, 0.9489538, 0.9207806, 0.9647231, 0.9722375, 0.9753934}{0.9508365, 0.9380586, 0.9272912, 0.9273632, 0.9365355, 0.9390632, 0.9497767, 0.9246308, 0.9662343, 0.9738743, 0.9763434}{0.9499821, 0.941159, 0.9265189, 0.9289207, 0.9373389, 0.9400434, 0.950633, 0.9301156, 0.9671262, 0.9745022, 0.9767011}{0.9527301, 0.9423933, 0.9257488, 0.9318802, 0.9382652, 0.9424387, 0.9523846, 0.9236471, 0.9673312, 0.9738204, 0.9762634}{0.9554205, 0.9432422, 0.9252075, 0.9337685, 0.9407162, 0.9447582, 0.9536205, 0.9218949, 0.9673068, 0.9732089, 0.9758326}{0.9566737, 0.9401193, 0.9276609, 0.9357073, 0.9434216, 0.9462885, 0.9550756, 0.9211188, 0.9680461, 0.9740837, 0.9775496}{0.9576406, 0.9391858, 0.9293604, 0.9379154, 0.9450466, 0.9476587, 0.9562842, 0.9204846, 0.9689767, 0.9752068, 0.9795568}{0.9581294, 0.9380263, 0.9302098, 0.9394521, 0.9470072, 0.9486915, 0.9571617, 0.926442, 0.9700554, 0.9765311, 0.9811258}{0.9575027, 0.9389596, 0.9315122, 0.9399841, 0.949177, 0.9489274, 0.9586548, 0.9274249, 0.9716846, 0.9781964, 0.9817819}{0.9568933, 0.9406414, 0.9335716, 0.9409557, 0.9477922, 0.9491567, 0.9599628, 0.9294556, 0.9731844, 0.9792226, 0.9824241}{0.9599127, 0.9433659, 0.9374604, 0.9431253, 0.9475032, 0.9511726, 0.9612169, 0.9308592, 0.9739893, 0.9801535, 0.9832619}{0.9643178, 0.9431744, 0.9376761, 0.9451546, 0.9483445, 0.9538778, 0.9623569, 0.9309547, 0.9745826, 0.9806557, 0.9841472}{0.9681064, 0.9430054, 0.937765, 0.9459974, 0.9494571, 0.9562027, 0.9631826, 0.9322192, 0.975195, 0.9809249, 0.9850644}{0.9686769, 0.943387, 0.9376381, 0.9468115, 0.9505193, 0.9564951, 0.9647355, 0.9321229, 0.9757395, 0.9809493, 0.9863263}{0.9692355, 0.9440071, 0.9377633, 0.9475907, 0.9518142, 0.9567762, 0.9663967, 0.9331159, 0.9762165, 0.9814405, 0.9875627}{0.9709858, 0.9450217, 0.9378513, 0.9490791, 0.9527232, 0.9571615, 0.968195, 0.9347782, 0.9772574, 0.9831155, 0.9877373}{0.9735361, 0.945629, 0.9405044, 0.9510897, 0.9540775, 0.9576195, 0.9699934, 0.9255431, 0.9790006, 0.9846471, 0.9871971}{0.9760155, 0.9462115, 0.9430631, 0.9522209, 0.9559476, 0.9580898, 0.9713158, 0.9275036, 0.9806776, 0.9854241, 0.9867228}{0.9775189, 0.9472253, 0.9440727, 0.9516237, 0.9570571, 0.9593424, 0.9730925, 0.935162, 0.9812234, 0.9855069, 0.988186}{0.9790059, 0.9489067, 0.9437509, 0.9510343, 0.957568, 0.9605622, 0.974574, 0.9459074, 0.9817519, 0.9867061, 0.9896156}};$/;" v +WML4_DESdepth baryons2.h /^ static double WML4_DESdepth[100][11]={{0.9983986, 0.9989664, 0.9993156, 0.9995302, 0.9997236, 0.9999125, 1.000115, 1.000233, 1.000335, 1.000429, 1.000524}{0.9969909, 0.9978816, 0.998461, 0.9988056, 0.998998, 0.9992254, 0.9995073, 0.9997395, 0.9999257, 1.000063, 1.000191}{0.9951235, 0.996298, 0.9973827, 0.997861, 0.9982392, 0.9985818, 0.9989552, 0.9992213, 0.9994423, 0.9996345, 0.9998173}{0.9938421, 0.995446, 0.9966955, 0.9972041, 0.997371, 0.9975925, 0.998099, 0.9984605, 0.9987447, 0.9989859, 0.99925}{0.9921554, 0.9942834, 0.9959309, 0.9961785, 0.9962451, 0.9964912, 0.9970228, 0.9974624, 0.997864, 0.9982747, 0.9986644}{0.9905067, 0.9925761, 0.9944337, 0.994841, 0.9949743, 0.99533, 0.9959689, 0.9965227, 0.9970215, 0.9975377, 0.9980303}{0.9898139, 0.9917389, 0.9938864, 0.9940029, 0.9939147, 0.9940881, 0.9947698, 0.9953797, 0.9959866, 0.9966158, 0.9972145}{0.9874131, 0.9893068, 0.9916437, 0.9918626, 0.9920858, 0.9927129, 0.9936432, 0.9944306, 0.9951371, 0.99587, 0.9965933}{0.9854304, 0.9876882, 0.9904584, 0.9905338, 0.9906635, 0.9910822, 0.9922456, 0.993141, 0.9939583, 0.9947852, 0.9956232}{0.9839085, 0.9858928, 0.9891452, 0.9891669, 0.989054, 0.9895461, 0.990957, 0.991899, 0.9927729, 0.9937643, 0.9948354}{0.9832935, 0.9859463, 0.9893889, 0.9887871, 0.9880143, 0.9881586, 0.9894405, 0.9903845, 0.9913375, 0.9924637, 0.9936791}{0.9846329, 0.9860921, 0.9889477, 0.9875714, 0.986508, 0.9867253, 0.9879463, 0.9889038, 0.9899565, 0.9913586, 0.9928125}{0.9843232, 0.9852905, 0.9884654, 0.9865993, 0.9853614, 0.9853035, 0.9864698, 0.9876057, 0.9887756, 0.9903158, 0.9918774}{0.9847978, 0.9856636, 0.9878566, 0.985209, 0.9833006, 0.9833299, 0.9846756, 0.9858946, 0.9872382, 0.988912, 0.9906292}{0.9839745, 0.985, 0.986857, 0.9838827, 0.9815769, 0.9816583, 0.9831938, 0.984632, 0.9860614, 0.9878544, 0.9896704}{0.9837695, 0.984847, 0.9871005, 0.9836899, 0.9808863, 0.9804085, 0.9817306, 0.9830355, 0.9845847, 0.9864029, 0.9882931}{0.9843012, 0.9837687, 0.9862948, 0.9821431, 0.9795198, 0.9797561, 0.9808819, 0.982089, 0.9834323, 0.9852299, 0.9873353}{0.9865355, 0.9844721, 0.9866228, 0.9813018, 0.978193, 0.9780855, 0.9793208, 0.9804623, 0.981948, 0.9838417, 0.986093}{0.9877234, 0.9860759, 0.9873702, 0.9816629, 0.9783131, 0.9775839, 0.9785348, 0.9794836, 0.9807557, 0.9827142, 0.9850608}{0.9881039, 0.9865576, 0.9873894, 0.9810892, 0.9773136, 0.9762543, 0.9773053, 0.9782429, 0.9796876, 0.9817469, 0.9842798}{0.9891804, 0.9872011, 0.9868691, 0.9798924, 0.9759915, 0.9745617, 0.975706, 0.9765553, 0.9778766, 0.9801885, 0.9827719}{0.9899388, 0.9873115, 0.9861452, 0.9789961, 0.9746056, 0.9726646, 0.9736487, 0.9747051, 0.976252, 0.9788771, 0.981531}{0.9904738, 0.9872933, 0.984784, 0.9771258, 0.9726114, 0.9709545, 0.9727542, 0.9737909, 0.9750367, 0.9773882, 0.9800933}{0.9914324, 0.9856948, 0.9848406, 0.9774742, 0.9729141, 0.9713488, 0.9725171, 0.972779, 0.9732965, 0.9758181, 0.9789006}{0.9936982, 0.9854896, 0.9859946, 0.9778191, 0.9725914, 0.9710959, 0.9712621, 0.9708525, 0.9718698, 0.9748406, 0.9779691}{0.9947946, 0.9855746, 0.9870115, 0.9774971, 0.9722926, 0.9702134, 0.9699295, 0.9699037, 0.9710764, 0.9737788, 0.9768527}{0.9977208, 0.9872383, 0.9872599, 0.9767143, 0.9715675, 0.9694043, 0.9695314, 0.9693459, 0.9700647, 0.9727514, 0.9758467}{0.997013, 0.9873145, 0.986514, 0.9769461, 0.9704307, 0.9680109, 0.9681842, 0.9681161, 0.969077, 0.9718811, 0.9750234}{0.9966228, 0.9870838, 0.9844498, 0.9773596, 0.9714805, 0.9683842, 0.9678766, 0.9669515, 0.9672704, 0.9700191, 0.9736639}{0.9947252, 0.9851803, 0.9857993, 0.9775143, 0.9700579, 0.9665798, 0.9670263, 0.9663355, 0.9665638, 0.9693399, 0.9728739}{0.9932631, 0.9871046, 0.9859975, 0.976386, 0.9702111, 0.9668365, 0.9661118, 0.9645408, 0.9646251, 0.9681441, 0.9719571}{0.994671, 0.9867007, 0.9872252, 0.9783268, 0.971233, 0.9659778, 0.9647627, 0.9635677, 0.9643336, 0.9677281, 0.9713655}{0.9947239, 0.9862021, 0.9868608, 0.9761252, 0.9694974, 0.9655893, 0.9643306, 0.9635337, 0.9643446, 0.9673271, 0.9708781}{0.9949733, 0.9876426, 0.9875029, 0.9760895, 0.9689051, 0.9647323, 0.963494, 0.962958, 0.963973, 0.966998, 0.9699965}{0.9967782, 0.9860801, 0.9882865, 0.9783414, 0.9687822, 0.9644656, 0.9632826, 0.9627917, 0.9637717, 0.9658832, 0.9686939}{0.9994424, 0.9864525, 0.9873777, 0.9764147, 0.9672398, 0.9639487, 0.963559, 0.9630826, 0.9630981, 0.9653368, 0.9689328}{0.9992118, 0.9866825, 0.9883931, 0.9751299, 0.9669662, 0.9634311, 0.9631483, 0.9622876, 0.9623048, 0.9643981, 0.9678829}{0.9992797, 0.9868364, 0.9876374, 0.9761395, 0.9678879, 0.9634027, 0.962685, 0.9614169, 0.9606786, 0.9632698, 0.9666052}{0.9963969, 0.9878704, 0.9878896, 0.975599, 0.9666669, 0.9637586, 0.9627802, 0.9606985, 0.9600067, 0.9625717, 0.9659328}{0.9946392, 0.9886907, 0.9856171, 0.9749157, 0.9691292, 0.9620394, 0.961991, 0.96033, 0.9599257, 0.9637299, 0.9669001}{0.9947089, 0.9894395, 0.9898318, 0.9749772, 0.9676055, 0.9625549, 0.9621919, 0.960082, 0.9601403, 0.9622154, 0.9653036}{0.9960996, 0.9932705, 0.9901502, 0.973865, 0.9670196, 0.9624037, 0.9612294, 0.9594528, 0.9595454, 0.9618744, 0.9646205}{0.9982112, 0.9959942, 0.988517, 0.9741928, 0.9665161, 0.9610511, 0.9604456, 0.9600277, 0.9600989, 0.9625042, 0.965366}{0.9997833, 0.9929329, 0.989851, 0.9775086, 0.9678866, 0.961412, 0.9617436, 0.9598793, 0.9583155, 0.9597905, 0.9636436}{0.9974384, 0.992543, 0.9877878, 0.9762506, 0.9689226, 0.9598685, 0.9595199, 0.9581328, 0.9587366, 0.9601042, 0.9644709}{1.000171, 0.9945216, 0.9887222, 0.9764675, 0.9689248, 0.9612354, 0.9601539, 0.9594724, 0.9588048, 0.9602523, 0.9643992}{1.004265, 0.9945873, 0.9905752, 0.9775395, 0.9701425, 0.9634591, 0.9612419, 0.9591407, 0.9587473, 0.9599663, 0.9638121}{1.004095, 0.9965193, 0.992616, 0.979348, 0.9710007, 0.9635644, 0.9606973, 0.9590975, 0.9588299, 0.9598748, 0.9636333}{0.9986327, 0.9913541, 0.9903923, 0.978434, 0.9681756, 0.9645863, 0.9611698, 0.9596289, 0.9594244, 0.9595072, 0.9630475}{0.996177, 0.994196, 0.9906632, 0.9766148, 0.9693924, 0.9648966, 0.9617544, 0.9601991, 0.9585121, 0.9597247, 0.9631882}{1.000188, 0.9962912, 0.991277, 0.9778189, 0.9701213, 0.9647644, 0.9619428, 0.9592871, 0.9600304, 0.9600001, 0.9639181}{1.008464, 0.9955666, 0.9929804, 0.9782539, 0.9701631, 0.9647249, 0.9616636, 0.9606577, 0.9607494, 0.9603246, 0.9647448}{1.009028, 0.9961992, 0.9949036, 0.9768919, 0.9690606, 0.9660173, 0.9606571, 0.9597666, 0.9602915, 0.9602742, 0.9643467}{1.006501, 0.9961563, 0.9963688, 0.9781769, 0.9717794, 0.9646804, 0.9617992, 0.9613202, 0.9601634, 0.9607897, 0.9640466}{1.007846, 0.9986295, 0.9968965, 0.9819135, 0.9718363, 0.964814, 0.9634945, 0.9619275, 0.9602781, 0.9611968, 0.9654135}{1.009587, 0.996492, 0.9971639, 0.9818393, 0.9718274, 0.9659084, 0.964896, 0.9634331, 0.9606312, 0.961871, 0.9662631}{1.007779, 0.9952463, 0.9953611, 0.9806839, 0.9715911, 0.9669605, 0.968099, 0.9641122, 0.9608586, 0.9616062, 0.9647454}{1.004874, 0.9992861, 0.9950964, 0.9804874, 0.972467, 0.9671765, 0.9664414, 0.9636624, 0.9623854, 0.9633097, 0.9658546}{1.008263, 0.9968918, 0.9974396, 0.9816271, 0.9722506, 0.9686122, 0.9660945, 0.9636758, 0.9637495, 0.9634619, 0.9673074}{1.009949, 0.9954779, 0.9985309, 0.9803317, 0.9723816, 0.9688909, 0.9652569, 0.9641596, 0.96427, 0.9638931, 0.967417}{1.0096, 0.9959438, 0.9986108, 0.9800743, 0.9731664, 0.9687921, 0.9662088, 0.9654712, 0.9645419, 0.9641586, 0.9667937}{1.013731, 1.001141, 1.000264, 0.9830344, 0.9778709, 0.972429, 0.9686769, 0.9660567, 0.9648586, 0.9657487, 0.9683113}{1.019104, 1.004, 1.003242, 0.9852063, 0.979559, 0.9748082, 0.9685622, 0.9661239, 0.9674026, 0.9665168, 0.967463}{1.018382, 1.002796, 1.003915, 0.9861481, 0.9785615, 0.9720784, 0.9669327, 0.9678023, 0.9668726, 0.9653117, 0.967108}{1.015763, 1.001138, 1.003446, 0.985532, 0.9772619, 0.9700269, 0.9691292, 0.9679181, 0.9662641, 0.965613, 0.9676872}{1.015827, 1.001717, 1.002461, 0.9867215, 0.9790639, 0.973325, 0.9707091, 0.9685904, 0.9674036, 0.9676107, 0.9692985}{1.020854, 1.004455, 1.00151, 0.9891268, 0.9796601, 0.9757263, 0.9723708, 0.9693687, 0.9677591, 0.9688333, 0.9710914}{1.017125, 1.006491, 1.002465, 0.9900221, 0.981653, 0.9771902, 0.9738132, 0.9711282, 0.9707643, 0.9684426, 0.9715497}{1.014863, 1.002083, 1.002106, 0.9904973, 0.9817381, 0.9787801, 0.9747164, 0.9716209, 0.9706414, 0.9698795, 0.9723612}{1.016181, 1.000676, 1.003029, 0.9904004, 0.982276, 0.9801509, 0.9735447, 0.9728874, 0.9717394, 0.9717409, 0.973656}{1.018655, 1.002384, 1.008482, 0.9923046, 0.9844349, 0.9797292, 0.9769432, 0.9736587, 0.9715291, 0.9722036, 0.9746421}{1.022332, 1.006642, 1.006291, 0.9923232, 0.9835687, 0.9798394, 0.9778035, 0.9745319, 0.972484, 0.974316, 0.9758413}{1.022183, 1.007374, 1.004609, 0.9913631, 0.986122, 0.9795638, 0.9778707, 0.9749117, 0.9743488, 0.9744456, 0.9762732}{1.022924, 1.006957, 1.004924, 0.9925899, 0.9863593, 0.979678, 0.9784788, 0.9772295, 0.9742693, 0.974745, 0.9763693}{1.02726, 1.008387, 1.007218, 0.9914631, 0.9852468, 0.9809967, 0.9815857, 0.9774554, 0.974796, 0.9755493, 0.9767516}{1.027223, 1.006644, 1.009664, 0.9925711, 0.9882488, 0.9849774, 0.9822146, 0.9782525, 0.9762262, 0.9765696, 0.9792238}{1.031308, 1.008128, 1.01024, 0.996251, 0.9885573, 0.988209, 0.9846921, 0.9805265, 0.9775237, 0.9786097, 0.9800696}{1.030314, 1.00746, 1.011706, 0.9970018, 0.9914787, 0.99023, 0.9865187, 0.9816488, 0.9788554, 0.9802845, 0.9810414}{1.026941, 1.008971, 1.012745, 0.9998924, 0.9939918, 0.9915204, 0.9877454, 0.9829351, 0.9804604, 0.9814716, 0.9819602}{1.030255, 1.012461, 1.014295, 1.001751, 0.994867, 0.9932462, 0.9897579, 0.9846764, 0.9812911, 0.9811884, 0.9816907}{1.028132, 1.014841, 1.017393, 1.003981, 0.9962263, 0.9921483, 0.9896025, 0.9861388, 0.9829975, 0.9811008, 0.9833191}{1.025926, 1.01536, 1.020473, 1.005624, 0.9975438, 0.9910203, 0.9907191, 0.9875087, 0.9839239, 0.9810163, 0.9849493}{1.025128, 1.013904, 1.021411, 1.004636, 0.997251, 0.9913929, 0.992657, 0.9882496, 0.9850657, 0.9825651, 0.9864353}{1.026265, 1.012408, 1.021224, 1.001094, 0.9974531, 0.9938544, 0.992802, 0.9890401, 0.9878787, 0.9846432, 0.9877335}{1.027379, 1.01481, 1.020045, 1.000752, 0.9982408, 0.99631, 0.9926248, 0.9912243, 0.9895909, 0.9863036, 0.9889936}{1.029046, 1.018388, 1.020669, 1.004672, 0.9997263, 0.9985818, 0.9950014, 0.99452, 0.9923493, 0.9887094, 0.9906154}{1.030751, 1.016675, 1.02192, 1.008081, 1.001137, 1.000751, 0.9978195, 0.9970704, 0.9949792, 0.9913083, 0.9922524}{1.031485, 1.014423, 1.024261, 1.008653, 1.002966, 1.002751, 1.000471, 0.9999383, 0.9960467, 0.9922626, 0.9937966}{1.029934, 1.013329, 1.025685, 1.008105, 1.005499, 1.004465, 1.003627, 1.002781, 0.9947713, 0.991472, 0.9952164}{1.028424, 1.011195, 1.026631, 1.009366, 1.007737, 1.006156, 1.006943, 1.00173, 0.9939577, 0.9911421, 0.9966195}{1.032363, 1.013328, 1.027655, 1.014141, 1.008326, 1.007825, 1.008964, 1.001721, 0.9936308, 0.993838, 0.9976855}{1.038384, 1.01783, 1.029263, 1.018938, 1.008634, 1.009463, 1.009277, 1.001641, 0.9939363, 0.9971328, 0.9986041}{1.04359, 1.021623, 1.0321, 1.019086, 1.009508, 1.011006, 1.009776, 1.001605, 0.9965405, 0.9986476, 0.9996429}{1.044557, 1.019917, 1.032632, 1.019457, 1.010402, 1.012173, 1.010946, 1.003028, 0.9992201, 0.9989373, 1.001434}{1.045504, 1.018812, 1.033129, 1.020009, 1.011296, 1.013302, 1.011908, 1.005149, 1.000368, 0.9993305, 1.003183}{1.047153, 1.020903, 1.033471, 1.02045, 1.013486, 1.015031, 1.013754, 1.006435, 1.001632, 1.000278, 1.004761}{1.049272, 1.024042, 1.033857, 1.020824, 1.016479, 1.017176, 1.014284, 1.007637, 1.003538, 1.000899, 1.006223}{1.051371, 1.026212, 1.034142, 1.02296, 1.01867, 1.01922, 1.014766, 1.009194, 1.004032, 1.001832, 1.007672}{1.054316, 1.025977, 1.037268, 1.024391, 1.018866, 1.018246, 1.014597, 1.010264, 1.005271, 1.003799, 1.00952}{1.05723, 1.025871, 1.040323, 1.025156, 1.019058, 1.017283, 1.015406, 1.011236, 1.006647, 1.005712, 1.011317}};$/;" v +WML4_LSSTdepth baryons2.h /^ static double WML4_LSSTdepth[100][11]={{0.9983986, 0.9992681, 0.9996594, 0.9999571, 1.000233, 1.000405, 1.000544, 0.987675, 1.000669, 1.000707, 1.00075}{0.9969909, 0.9983232, 0.998879, 0.9993083, 0.9997395, 1.00002, 1.000234, 0.9951152, 1.000458, 1.000527, 1.000588}{0.9951235, 0.9971783, 0.9980691, 0.998661, 0.9992213, 0.9995944, 0.9998635, 0.9847404, 1.000203, 1.000313, 1.000414}{0.9938421, 0.9964473, 0.997249, 0.997758, 0.9984605, 0.9988969, 0.9993748, 0.994885, 0.9999286, 1.000101, 1.00023}{0.9921554, 0.9956365, 0.9961884, 0.9966065, 0.9974624, 0.998195, 0.9987786, 0.9806839, 0.9995568, 0.9997829, 0.9999713}{0.9905067, 0.9941317, 0.9948934, 0.9954758, 0.9965227, 0.9974085, 0.998214, 0.9864251, 0.9991837, 0.9994943, 0.9997185}{0.9898139, 0.9934838, 0.9938406, 0.9943091, 0.9953797, 0.9964683, 0.9974142, 0.981966, 0.998701, 0.9990937, 0.9994105}{0.9874131, 0.9912397, 0.9919402, 0.9929094, 0.9944306, 0.9957065, 0.9968386, 0.9780176, 0.9983334, 0.9988002, 0.9991479}{0.9854304, 0.9900425, 0.9905097, 0.9913979, 0.993141, 0.9945681, 0.9959365, 0.977966, 0.9978026, 0.9983617, 0.9988035}{0.9839085, 0.9887302, 0.9891053, 0.989833, 0.991899, 0.9935396, 0.9951785, 0.9712859, 0.9973173, 0.9979763, 0.9984945}{0.9832935, 0.9888866, 0.9882789, 0.9884564, 0.9903845, 0.9921751, 0.9940926, 0.9781225, 0.996592, 0.9974059, 0.9980371}{0.9846329, 0.988568, 0.9868807, 0.9869736, 0.9889038, 0.991075, 0.9932179, 0.9690637, 0.9960209, 0.9969197, 0.9976414}{0.9843232, 0.9881386, 0.9857745, 0.9855816, 0.9876057, 0.9899843, 0.9924038, 0.9723832, 0.995492, 0.9964869, 0.9972337}{0.9847978, 0.9878061, 0.984035, 0.98361, 0.9858946, 0.9885658, 0.9911493, 0.9672684, 0.994672, 0.9957881, 0.9967054}{0.9839745, 0.9868899, 0.9824786, 0.9820112, 0.984632, 0.9874946, 0.9902476, 0.9658623, 0.994004, 0.9952951, 0.9962569}{0.9837695, 0.9870937, 0.9819182, 0.9808008, 0.9830355, 0.9859887, 0.9888923, 0.9627194, 0.9932686, 0.9946938, 0.9958193}{0.9843012, 0.9863819, 0.9804311, 0.9799715, 0.982089, 0.9848128, 0.9879915, 0.9595173, 0.9924323, 0.993997, 0.9951723}{0.9865355, 0.986939, 0.9794516, 0.9783162, 0.9804623, 0.9833652, 0.9867992, 0.9626941, 0.9918197, 0.9934681, 0.9947817}{0.9877234, 0.9876808, 0.9797337, 0.977775, 0.9794836, 0.9822726, 0.9857481, 0.9563743, 0.990979, 0.9927607, 0.9942174}{0.9881039, 0.9881631, 0.9787722, 0.9764768, 0.9782429, 0.981237, 0.9849683, 0.9584266, 0.9902266, 0.9921401, 0.9936497}{0.9891804, 0.9877695, 0.9776402, 0.9747906, 0.9765553, 0.9797159, 0.9834787, 0.9517585, 0.9893001, 0.9913113, 0.9929993}{0.9899388, 0.9870356, 0.9765496, 0.9727809, 0.9747051, 0.9783872, 0.9822157, 0.9497835, 0.9882074, 0.9903119, 0.9921906}{0.9904738, 0.9858984, 0.9744696, 0.9713162, 0.9737909, 0.9769043, 0.9808622, 0.9507764, 0.9874634, 0.9897202, 0.9917773}{0.9914324, 0.9856372, 0.9747967, 0.9716488, 0.972779, 0.9753856, 0.9796209, 0.9402773, 0.9867296, 0.9889145, 0.9910436}{0.9936982, 0.9866737, 0.9746129, 0.9711295, 0.9708525, 0.9742867, 0.9787875, 0.946916, 0.9855125, 0.9880037, 0.9903677}{0.9947946, 0.987761, 0.9745795, 0.9701138, 0.9699037, 0.973294, 0.9776399, 0.9446171, 0.9849118, 0.9875335, 0.989882}{0.9977208, 0.9889544, 0.9734689, 0.9694224, 0.9693459, 0.97226, 0.9767071, 0.9446648, 0.9840152, 0.986623, 0.9890788}{0.997013, 0.9879481, 0.9732514, 0.9680205, 0.9681161, 0.971305, 0.9758836, 0.9421526, 0.983289, 0.9859592, 0.9884355}{0.9966228, 0.9851883, 0.974224, 0.9682637, 0.9669515, 0.9694617, 0.9745717, 0.940366, 0.9822946, 0.9850679, 0.9877964}{0.9947252, 0.9861628, 0.9733096, 0.9666675, 0.9663355, 0.9687011, 0.9738368, 0.9418295, 0.9811877, 0.9841846, 0.986954}{0.9932631, 0.986641, 0.9729707, 0.9668777, 0.9645408, 0.9674761, 0.972844, 0.9359928, 0.980324, 0.9833443, 0.9863276}{0.994671, 0.9873867, 0.9745261, 0.96573, 0.9635677, 0.9670688, 0.9723315, 0.9358382, 0.9797145, 0.982707, 0.9857308}{0.9947239, 0.9872472, 0.9725187, 0.9652224, 0.9635337, 0.9667498, 0.9717361, 0.9355558, 0.9789467, 0.9820589, 0.9851668}{0.9949733, 0.9882056, 0.9721005, 0.9644802, 0.962958, 0.9664906, 0.9707792, 0.936246, 0.9781834, 0.9813974, 0.9845678}{0.9967782, 0.9883195, 0.9729847, 0.9641658, 0.9627917, 0.9653783, 0.9695972, 0.9351613, 0.9776883, 0.9808091, 0.9840591}{0.9994424, 0.9875353, 0.9711888, 0.9638646, 0.9630826, 0.9647732, 0.9698094, 0.9348167, 0.9768638, 0.979777, 0.9830007}{0.9992118, 0.9888877, 0.9704526, 0.9633614, 0.9622876, 0.9637574, 0.9687612, 0.9353233, 0.976349, 0.9794477, 0.982754}{0.9992797, 0.9884247, 0.9715393, 0.9632439, 0.9614169, 0.962821, 0.967578, 0.9329576, 0.9754139, 0.9783903, 0.9817915}{0.9963969, 0.9888422, 0.9703017, 0.9635588, 0.9606985, 0.961964, 0.9669675, 0.9333661, 0.9745671, 0.9777172, 0.9810996}{0.9946392, 0.9868271, 0.9715337, 0.9617432, 0.96033, 0.9630811, 0.967829, 0.9315756, 0.974246, 0.9772822, 0.9805589}{0.9947089, 0.9894819, 0.9711938, 0.9626703, 0.960082, 0.9617452, 0.9658361, 0.9214298, 0.9736996, 0.9766406, 0.9799842}{0.9960996, 0.9932368, 0.9700829, 0.9621165, 0.9594528, 0.9613162, 0.9658638, 0.9273016, 0.9730566, 0.9760887, 0.9796057}{0.9982112, 0.9903972, 0.9705574, 0.9609271, 0.9600277, 0.9620568, 0.9660564, 0.9276816, 0.9724632, 0.9756787, 0.979245}{0.9997833, 0.9908214, 0.9721558, 0.9614201, 0.9598793, 0.9592666, 0.9644269, 0.9308412, 0.9715784, 0.9741813, 0.977801}{0.9974384, 0.9890444, 0.9723553, 0.9598636, 0.9581328, 0.9594034, 0.9653327, 0.9208707, 0.9716861, 0.9738793, 0.9772094}{1.000171, 0.9887447, 0.972801, 0.9612072, 0.9594724, 0.9594437, 0.9650264, 0.9262148, 0.9709778, 0.973254, 0.9769718}{1.004265, 0.9914263, 0.9739821, 0.9630165, 0.9591407, 0.9592657, 0.9641522, 0.9287025, 0.9704399, 0.9729909, 0.9766255}{1.004095, 0.993153, 0.9751194, 0.9629771, 0.9590975, 0.9591792, 0.9639812, 0.9256325, 0.9705727, 0.9726264, 0.9757665}{0.9986327, 0.9900132, 0.9730054, 0.964057, 0.9596289, 0.9588618, 0.963607, 0.9240969, 0.9703218, 0.9720449, 0.9757018}{0.996177, 0.9914308, 0.9724767, 0.9641764, 0.9601991, 0.9590851, 0.9639952, 0.9173791, 0.9697397, 0.9717309, 0.9751588}{1.000188, 0.9915778, 0.9736978, 0.9642004, 0.9592871, 0.959368, 0.9643968, 0.9194946, 0.9692474, 0.9712036, 0.9746166}{1.008464, 0.9928455, 0.9739184, 0.9640931, 0.9606577, 0.9595075, 0.9645529, 0.9243251, 0.9688475, 0.9709256, 0.9743338}{1.009028, 0.9951333, 0.9725258, 0.9650728, 0.9597666, 0.9595037, 0.9646267, 0.9241889, 0.9691841, 0.9715758, 0.9746436}{1.006501, 0.9962312, 0.9744682, 0.9634985, 0.9613202, 0.9600431, 0.9642569, 0.9233131, 0.9689575, 0.9707809, 0.9735458}{1.007846, 0.9962033, 0.9767818, 0.9645677, 0.9619275, 0.9606131, 0.9654622, 0.9226141, 0.9690195, 0.9705605, 0.9729812}{1.009587, 0.9956521, 0.9762167, 0.9656636, 0.9634331, 0.9609561, 0.9653864, 0.9246349, 0.9692858, 0.9701981, 0.9726759}{1.007779, 0.994308, 0.9755503, 0.9671958, 0.9641122, 0.96101, 0.9639545, 0.9284738, 0.9693484, 0.9697539, 0.9722091}{1.004874, 0.994984, 0.9760235, 0.9673439, 0.9636624, 0.962665, 0.9649441, 0.9291115, 0.9695973, 0.9692581, 0.97196}{1.008263, 0.9955774, 0.9764309, 0.9684387, 0.9636758, 0.9629973, 0.9664084, 0.9295386, 0.9697095, 0.9693311, 0.9717266}{1.009949, 0.9964955, 0.9755665, 0.9680629, 0.9641596, 0.9631001, 0.9666041, 0.9272615, 0.9697589, 0.9694563, 0.9718103}{1.0096, 0.9979054, 0.9759632, 0.9682539, 0.9654712, 0.9636423, 0.9661467, 0.9234798, 0.9698047, 0.9695454, 0.9720027}{1.013731, 0.9996976, 0.9803596, 0.9717412, 0.9660567, 0.9652471, 0.9670577, 0.9306512, 0.9699281, 0.9692974, 0.9715145}{1.019104, 1.002436, 0.9822559, 0.9741451, 0.9661239, 0.9660108, 0.9662045, 0.9284388, 0.9698876, 0.9689723, 0.9707642}{1.018382, 1.003081, 0.9821332, 0.9703349, 0.9678023, 0.9652288, 0.9661974, 0.9313771, 0.9693609, 0.9681567, 0.970242}{1.015763, 1.003212, 0.9812189, 0.9699068, 0.9679181, 0.9651232, 0.9678184, 0.9327652, 0.9696238, 0.9683589, 0.9702291}{1.015827, 1.002335, 0.9828394, 0.9727754, 0.9685904, 0.9673037, 0.9687707, 0.938952, 0.9710864, 0.9695199, 0.9707972}{1.020854, 1.002045, 0.9838684, 0.9752288, 0.9693687, 0.9684539, 0.970199, 0.9386964, 0.9705742, 0.969586, 0.9706434}{1.017125, 1.002117, 0.9852514, 0.9765193, 0.9711282, 0.9680486, 0.9704288, 0.9339646, 0.9705026, 0.9695235, 0.9702131}{1.014863, 1.001146, 0.9856916, 0.9781516, 0.9716209, 0.9691872, 0.971966, 0.9368098, 0.9700877, 0.9698154, 0.9700601}{1.016181, 1.000725, 0.9855246, 0.9787813, 0.9728874, 0.9714065, 0.9723151, 0.937329, 0.9701143, 0.9701782, 0.9699192}{1.018655, 1.006787, 0.9878953, 0.9790376, 0.9736587, 0.9717699, 0.9730835, 0.9297519, 0.9709852, 0.9694766, 0.9689024}{1.022332, 1.006815, 0.9874612, 0.979308, 0.9745319, 0.9737625, 0.9743991, 0.9330689, 0.9711734, 0.9706593, 0.969552}{1.022183, 1.004923, 0.9882978, 0.9791752, 0.9749117, 0.9741759, 0.9748422, 0.9372993, 0.9712631, 0.9711863, 0.970136}{1.022924, 1.004912, 0.9899054, 0.9793776, 0.9772295, 0.9743581, 0.9747907, 0.9390903, 0.9718891, 0.972034, 0.9708796}{1.02726, 1.007651, 0.9879516, 0.9811192, 0.9774554, 0.9753509, 0.9753777, 0.9381374, 0.9731737, 0.9727909, 0.9717976}{1.027223, 1.009732, 0.9902681, 0.9849628, 0.9782525, 0.9762404, 0.9777071, 0.9393682, 0.9731461, 0.9724024, 0.9711185}{1.031308, 1.009708, 0.991835, 0.9876356, 0.9805265, 0.9780184, 0.9784212, 0.9361752, 0.9732354, 0.9735231, 0.9711316}{1.030314, 1.010934, 0.9933165, 0.9894935, 0.9816488, 0.9800099, 0.9792288, 0.943186, 0.9742521, 0.9736424, 0.9706676}{1.026941, 1.013155, 0.997087, 0.9907328, 0.9829351, 0.9813869, 0.9797817, 0.9489379, 0.9747533, 0.9731594, 0.9701356}{1.030255, 1.01436, 0.9976974, 0.9925228, 0.9846764, 0.9810962, 0.9801869, 0.9409341, 0.9746499, 0.9729954, 0.9708032}{1.028132, 1.016012, 0.9996111, 0.9913716, 0.9861388, 0.9810113, 0.9820408, 0.9414586, 0.9763857, 0.974791, 0.9716557}{1.025926, 1.018865, 1.000724, 0.9901928, 0.9875087, 0.9809323, 0.9830811, 0.94512, 0.9781015, 0.9763176, 0.9724818}{1.025128, 1.021783, 0.9996842, 0.9916556, 0.9882496, 0.9817307, 0.9837249, 0.9507583, 0.9787851, 0.9769332, 0.9727561}{1.026265, 1.021913, 0.9994158, 0.994255, 0.9890401, 0.9837246, 0.985202, 0.9444201, 0.9787159, 0.9763819, 0.9722883}{1.027379, 1.021733, 0.9995559, 0.9958385, 0.9912243, 0.9856553, 0.986594, 0.9428792, 0.9785231, 0.9759195, 0.9718273}{1.029046, 1.020133, 1.002711, 0.9978132, 0.99452, 0.9880899, 0.9884274, 0.9417962, 0.9791302, 0.9767883, 0.9731906}{1.030751, 1.021283, 1.003919, 1.000098, 0.9970704, 0.9905716, 0.9897944, 0.9407056, 0.9799051, 0.9776017, 0.9748042}{1.031485, 1.021247, 1.004605, 1.002277, 0.9999383, 0.9921008, 0.9904394, 0.9466117, 0.9809235, 0.9786749, 0.9760901}{1.029934, 1.021617, 1.006157, 1.00409, 1.002781, 0.9913479, 0.9920353, 0.9477132, 0.9827003, 0.9803216, 0.9767037}{1.028424, 1.022954, 1.008346, 1.006111, 1.00173, 0.9906168, 0.9934982, 0.9497803, 0.9842774, 0.9812397, 0.9773041}{1.032363, 1.026914, 1.012538, 1.008143, 1.001721, 0.992678, 0.9946634, 0.9517037, 0.9847646, 0.9820554, 0.9778266}{1.038384, 1.028403, 1.012751, 1.009857, 1.001641, 0.9958134, 0.9957468, 0.9519303, 0.9849812, 0.9823698, 0.9783039}{1.04359, 1.029398, 1.012992, 1.010748, 1.001605, 0.9984989, 0.9970944, 0.9532135, 0.9853579, 0.9823497, 0.9788609}{1.044557, 1.029141, 1.013648, 1.011981, 1.003028, 0.9987787, 0.9990978, 0.9526694, 0.9857686, 0.9817369, 0.9799438}{1.045504, 1.029648, 1.014423, 1.013132, 1.005149, 0.999048, 1.000553, 0.9534185, 0.9860753, 0.9819461, 0.9810048}{1.047153, 1.031383, 1.015156, 1.0148, 1.006435, 0.9995112, 1.001989, 0.9552283, 0.9867247, 0.9836389, 0.9809806}{1.049272, 1.031771, 1.017766, 1.017065, 1.007637, 1.000108, 1.003614, 0.9459683, 0.9881726, 0.9851331, 0.9802301}{1.051371, 1.032133, 1.020266, 1.018293, 1.009194, 1.000727, 1.005089, 0.9481393, 0.9897469, 0.9856812, 0.9795496}{1.054316, 1.033536, 1.02116, 1.01727, 1.010264, 1.002613, 1.007148, 0.9557918, 0.9906798, 0.985769, 0.9806732}{1.05723, 1.0364, 1.021298, 1.016261, 1.011236, 1.004451, 1.008704, 0.966594, 0.9915818, 0.9869429, 0.981771}};$/;" v +W_HOD cosmo2D_fourier.c /^double W_HOD(double a, double nz){$/;" f +W_RSD cosmo2D_fourier.c /^double W_RSD(double l, double a0, double a1, double nz){$/;" f +W_calc_j0 EBfunctions.c /^double W_calc_j0(double ell,int ORDER,double max,double min)$/;" f +W_calc_j2 EBfunctions.c /^double W_calc_j2(double ell,int ORDER,double max,double min)$/;" f +W_cluster cluster.c /^double W_cluster(double a, double nz,double nN){$/;" f +W_cluster clusters_DES.c /^double W_cluster(double a, double nz,double nN){$/;" f +W_gal cosmo2D_fourier.c /^double W_gal(double a, double nz){$/;" f +W_k CMBxLSS.c /^double W_k(double a, double fK){$/;" f +W_kappa cosmo2D_fourier.c /^double W_kappa(double a, double fK, double nz){$/;" f +W_mag cosmo2D_fourier.c /^double W_mag(double a, double fK, double nz){$/;" f +W_rm covariances_fourier_HOD.c /^double W_rm(double a, double nz){$/;" f +W_source IA.c /^double W_source(double a, double nz){$/;" f +Y_minus EBfunctions.c /^void Y_minus(double x, double eta, double *ym)$/;" f +Y_plus EBfunctions.c /^void Y_plus(double x, double eta, double *yp)$/;" f +Z1 redshift.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z1 redshift_spline.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z2 redshift.c /^int Z2(int Nbin){ \/\/ find z2 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z2 redshift_spline.c /^int Z2(int Nbin){ \/\/ find z2 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +ZC redshift.c /^int ZC(int Nbin){$/;" f +ZC redshift_spline.c /^int ZC(int Nbin){$/;" f +ZL redshift.c /^int ZL(int Nbin){$/;" f +ZL redshift_spline.c /^int ZL(int Nbin){$/;" f +ZS redshift.c /^int ZS(int Nbin){$/;" f +ZS redshift_spline.c /^int ZS(int Nbin){$/;" f +ZSC redshift.c /^int ZSC(int Nbin){$/;" f +ZSC redshift_spline.c /^int ZSC(int Nbin){$/;" f +Z_SPLINE_TYPE redshift_spline.c 2;" d file: +Z_minus EBfunctions.c /^double Z_minus(double vartheta,double *array)$/;" f +Z_plus EBfunctions.c /^double Z_plus(double vartheta, double *array)$/;" f +a inv_cov.py /^a = np.sort(LA.eigvals(cor))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cor))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cor))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a_chi cosmo3D.c /^double a_chi(double chi1){$/;" f +a_chi cosmo3D_april7.c /^double a_chi(double chi1){$/;" f +a_max_emu cosmo3D.c 14;" d file: +a_max_emu cosmo3D_april7.c 14;" d file: +a_min basics.c /^ double a_min;$/;" m struct:__anon5 file: +a_min_emu cosmo3D.c 15;" d file: +a_min_emu cosmo3D_april7.c 15;" d file: +aglob structs.c /^ double aglob;$/;" m struct:__anon19 file: +alpha structs.c /^ double alpha;$/;" m struct:input_HOD_params file: +alpha_c covariances_3D.c /^double alpha_c(double k1x,double k1y,double k2x,double k2y) {$/;" f +alpha_s structs.c /^ double alpha_s; \/* running of spectral index of initial power spectrum *\/$/;" m struct:__anon10 file: +alpha_s structs.c /^ double alpha_s; \/* running of spectral index of initial power spectrum *\/$/;" m struct:__anon22 file: +amax_lens redshift.c /^double amax_lens(int i){$/;" f +amax_lens redshift_spline.c /^double amax_lens(int i){$/;" f +amax_source redshift.c /^double amax_source(int i){$/;" f +amax_source redshift_spline.c /^double amax_source(int i){$/;" f +amax_source_IA redshift.c /^double amax_source_IA(int i){$/;" f +amax_source_IA redshift_spline.c /^double amax_source_IA(int i){$/;" f +amin_lens redshift.c /^double amin_lens(int i){$/;" f +amin_lens redshift_spline.c /^double amin_lens(int i){$/;" f +amin_source redshift.c /^double amin_source(int i){$/;" f +amin_source redshift_spline.c /^double amin_source(int i){$/;" f +arcmin basics.c /^ double arcmin;$/;" m struct:__anon3 file: +area structs.c /^ double area;\/* survey_area in deg^2. *\/$/;" m struct:__anon13 file: +area_conversion_factor structs.c /^ double area_conversion_factor; \/*factor from deg^2 to radian^2: 60*60*constants.arcmin*constants.arcmin *\/$/;" m struct:__anon13 file: +arrayFromDoublePointer pt.c /^PyObject * arrayFromDoublePointer(int n, double *x)$/;" f +b inv_cov.py /^b = np.sort(LA.eigvals(cov))$/;" v +b patch_cov_HOD.py /^b = np.sort(LA.eigvals(cov))$/;" v +b patch_cov_Rmin.py /^b = np.sort(LA.eigvals(cov))$/;" v +b structs.c /^ double b[10]; \/* linear galaxy bias paramter in clustering bin i*\/$/;" m struct:__anon15 file: +b1_function structs.c /^ B1_model b1_function;$/;" m struct:__anon15 file: +b1_growth_scaling HOD.c /^double b1_growth_scaling(double z, int ni){$/;" f +b1_per_bin HOD.c /^double b1_per_bin(double z, int ni){$/;" f +b1_per_bin_evolv HOD.c /^double b1_per_bin_evolv(double z, int ni){$/;" f +b1_per_bin_pass_evolv HOD.c /^double b1_per_bin_pass_evolv(double z, int ni){$/;" f +b1_powerlaw HOD.c /^double b1_powerlaw(double z, int ni){$/;" f +b2 structs.c /^ double b2[10]; \/* quadratic bias parameter for redshift bin i *\/$/;" m struct:__anon15 file: +b2_from_b1 HOD.c /^double b2_from_b1(double b1){$/;" f +b3nl_from_b1 HOD.c /^double b3nl_from_b1 (double b1){$/;" f +b_a structs.c /^ double b_a; \/\/assembly bias$/;" m struct:__anon16 file: +b_cluster cluster.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f +b_cluster clusters_DES.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f +b_g GRS.c /^ double b_g[10];$/;" m struct:__anon8 file: +b_g_fid GRS.c /^ double b_g_fid[10]; \/\/ fiducial input values=center for prior calculation$/;" m struct:__anon8 file: +b_lin covariances_3D.c /^double b_lin (double k1x, double k1y, double k2x, double k2y, double a)$/;" f +b_lin_cov covariances_3D.c /^double b_lin_cov(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +b_lin_cov_mu covariances_3D.c /^double b_lin_cov_mu(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +b_lin_mu covariances_3D.c /^double b_lin_mu(double k1,double k2, double m, double a){$/;" f +b_mag structs.c /^ double b_mag[10]; \/*amplitude of magnification bias, b_mag[i] = 5*s[i]+beta[i] -2 *\/$/;" m struct:__anon15 file: +b_mt structs.c /^ double b_mt[10][2];$/;" m struct:__anon25 file: +b_ngmatched halo.c /^double b_ngmatched(double a, double n_cmv){$/;" f +b_source halo.c /^double b_source(double a){ \/\/lookup table for b1 of source galaxies$/;" f +baopara BAO.c /^}baopara;$/;" t typeref:struct:__anon1 file: +bary structs.c /^barypara bary ={.isPkbary=0};$/;" v +baryons structs.c /^ char baryons[300];$/;" m struct:__anon18 file: +baryons structs.c /^ int baryons;$/;" m struct:__anon9 file: +barypara structs.c /^}barypara;$/;" t typeref:struct:__anon26 file: +beam_SPT CMBxLSS.c /^double beam_SPT(double l){$/;" f +beta_c covariances_3D.c /^double beta_c(double k1x,double k1y,double k2x,double k2y)$/;" f +beta_ia structs.c /^ double beta_ia;$/;" m struct:input_nuisance_params file: +beta_ia structs.c /^ double beta_ia; \/\/beta IA see Joachimi2012$/;" m struct:__anon21 file: +beta_ia structs.c /^ double beta_ia[2]; \/\/beta IA see Joachimi2012$/;" m struct:__anon22 file: +bgal HOD.c /^double bgal(int nz,double a){$/;" f +bgal_a covariances_fourier.c /^double bgal_a(double a, double nz){$/;" f +bgal_a covariances_fourier_SSC.c /^double bgal_a(double a, double nz){$/;" f +bgal_rm redmagic.c /^double bgal_rm(double a){$/;" f +bgal_z HOD.c /^double bgal_z(double z, int ni){ \/\/bias evolution within redshift bin, used by clustering\/G-G-lensing routines without HOD modeling$/;" f +bi_1h covariances_3D.c /^double bi_1h(double k1,double k2, double k3, double a)$/;" f +bi_3D_reduced_shear_angle_weighted reduced_shear.c /^double bi_3D_reduced_shear_angle_weighted(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +bi_eff_mu reduced_shear.c /^double bi_eff_mu(double k1,double k2, double mu, double a){$/;" f +bi_tree_nl reduced_shear.c /^double bi_tree_nl (double k1x, double k1y, double k2x, double k2y, double a)$/;" f +bias structs.c /^ double bias[10];$/;" m struct:input_nuisance_params file: +bias structs.c /^ double bias[10];$/;" m struct:input_nuisance_params_mpp file: +bias structs.c /^ int bias;$/;" m struct:__anon9 file: +bias2 structs.c /^ double bias2[10];$/;" m struct:input_nuisance_params_mpp file: +bias_norm halo.c /^double bias_norm(double a)$/;" f +bias_norm_integrand halo.c /^double bias_norm_integrand (double n,void * params){$/;" f +bias_zphot_clustering redshift.c /^double bias_zphot_clustering (double z, int nz){$/;" f +bias_zphot_clustering redshift_spline.c /^double bias_zphot_clustering (double z, int nz){$/;" f +bias_zphot_clustering structs.c /^ double bias_zphot_clustering[10];$/;" m struct:__anon21 file: +bias_zphot_clustering structs.c /^ double bias_zphot_clustering[10][2];$/;" m struct:__anon22 file: +bias_zphot_magnification structs.c /^ double bias_zphot_magnification[10];$/;" m struct:__anon21 file: +bias_zphot_magnification structs.c /^ double bias_zphot_magnification[10][2];$/;" m struct:__anon22 file: +bias_zphot_shear redshift.c /^double bias_zphot_shear (double z, int nz){$/;" f +bias_zphot_shear redshift_spline.c /^double bias_zphot_shear (double z, int nz){$/;" f +bias_zphot_shear structs.c /^ double bias_zphot_shear[10];$/;" m struct:__anon21 file: +bias_zphot_shear structs.c /^ double bias_zphot_shear[10][2];$/;" m struct:__anon22 file: +bin_cov_NG_cl_cl_tomo covariances_real.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_cl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real_binned.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bs2 structs.c /^ double bs2[10]; \/* leading order tidal bias for redshift bin i *\/$/;" m struct:__anon15 file: +bs2_from_b1 HOD.c /^double bs2_from_b1 (double b1){$/;" f +c1rhocrit_ia structs.c /^ double c1rhocrit_ia;$/;" m struct:__anon21 file: +cNG covariances_fourier.c /^int cNG = 1;$/;" v +c_g structs.c /^ double c_g;$/;" m struct:input_HOD_params file: +cdgamma basics.c /^void cdgamma(fftw_complex x, fftw_complex *res)$/;" f +cg structs.c /^ double cg; \/\/galaxy concentration$/;" m struct:__anon16 file: +cg structs.c /^ double cg[10];$/;" m struct:__anon15 file: +cg_rm structs.c /^ double cg_rm[2];$/;" m struct:__anon23 file: +cgl_Npowerspectra structs.c /^ int cgl_Npowerspectra;\/\/ number of cluster-lensing tomography combinations$/;" m struct:__anon11 file: +check_LF IA.c /^int check_LF(void){ \/\/return 1 if combination of all + red galaxy LF parameters is unphysical, i.e. if f_red > 1 for some z < redshift.shear_zdistrpar_zmax$/;" f +chi cosmo3D.c /^double chi(double a)$/;" f +chi cosmo3D_april7.c /^double chi(double a)$/;" f +clphotoz structs.c /^ int clphotoz;$/;" m struct:__anon9 file: +clusterCC structs.c /^ int clusterCC;$/;" m struct:__anon9 file: +clusterCG structs.c /^ int clusterCG;$/;" m struct:__anon9 file: +clusterMobs structs.c /^ int clusterMobs;$/;" m struct:__anon9 file: +clusterN structs.c /^ int clusterN;$/;" m struct:__anon9 file: +clusterWL structs.c /^ int clusterWL;$/;" m struct:__anon9 file: +cluster_MOR structs.c /^ double cluster_MOR[10];$/;" m struct:__anon21 file: +cluster_Mobs_N_pivot structs.c /^ double cluster_Mobs_N_pivot;$/;" m struct:__anon21 file: +cluster_Mobs_N_pivot structs.c /^ double cluster_Mobs_N_pivot[2];$/;" m struct:__anon22 file: +cluster_Mobs_alpha structs.c /^ double cluster_Mobs_alpha;$/;" m struct:__anon21 file: +cluster_Mobs_alpha structs.c /^ double cluster_Mobs_alpha[2];$/;" m struct:__anon22 file: +cluster_Mobs_beta structs.c /^ double cluster_Mobs_beta;$/;" m struct:__anon21 file: +cluster_Mobs_beta structs.c /^ double cluster_Mobs_beta[2];$/;" m struct:__anon22 file: +cluster_Mobs_lgM0 structs.c /^ double cluster_Mobs_lgM0;$/;" m struct:__anon21 file: +cluster_Mobs_lgM0 structs.c /^ double cluster_Mobs_lgM0[2];$/;" m struct:__anon22 file: +cluster_Mobs_lgN0 structs.c /^ double cluster_Mobs_lgN0;$/;" m struct:__anon21 file: +cluster_Mobs_lgN0 structs.c /^ double cluster_Mobs_lgN0[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma structs.c /^ double cluster_Mobs_sigma;$/;" m struct:__anon21 file: +cluster_Mobs_sigma structs.c /^ double cluster_Mobs_sigma[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma0 structs.c /^ double cluster_Mobs_sigma0;$/;" m struct:__anon21 file: +cluster_Mobs_sigma0 structs.c /^ double cluster_Mobs_sigma0[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma_qm structs.c /^ double cluster_Mobs_sigma_qm;$/;" m struct:__anon21 file: +cluster_Mobs_sigma_qm structs.c /^ double cluster_Mobs_sigma_qm[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma_qz structs.c /^ double cluster_Mobs_sigma_qz;$/;" m struct:__anon21 file: +cluster_Mobs_sigma_qz structs.c /^ double cluster_Mobs_sigma_qz[2];$/;" m struct:__anon22 file: +cluster_Nbin structs.c /^ int cluster_Nbin; \/\/ number of cluster redshift bins$/;" m struct:__anon11 file: +cluster_c structs.c /^ double cluster_c[4];$/;" m struct:input_nuisance_params file: +cluster_centering_M_pivot structs.c /^ double cluster_centering_M_pivot;$/;" m struct:__anon21 file: +cluster_centering_M_pivot structs.c /^ double cluster_centering_M_pivot[2];$/;" m struct:__anon22 file: +cluster_centering_alpha structs.c /^ double cluster_centering_alpha;$/;" m struct:__anon21 file: +cluster_centering_alpha structs.c /^ double cluster_centering_alpha[2];$/;" m struct:__anon22 file: +cluster_centering_f0 structs.c /^ double cluster_centering_f0;$/;" m struct:__anon21 file: +cluster_centering_f0 structs.c /^ double cluster_centering_f0[2];$/;" m struct:__anon22 file: +cluster_centering_sigma structs.c /^ double cluster_centering_sigma;$/;" m struct:__anon21 file: +cluster_centering_sigma structs.c /^ double cluster_centering_sigma[2];$/;" m struct:__anon22 file: +cluster_cg_Npowerspectra structs.c /^ int cluster_cg_Npowerspectra;\/\/ number of cluster-lensing tomography combinations$/;" m struct:__anon11 file: +cluster_completeness structs.c /^ double cluster_completeness[10];$/;" m struct:__anon21 file: +cluster_completeness structs.c /^ double cluster_completeness[2];$/;" m struct:__anon22 file: +cluster_selection structs.c /^ double cluster_selection[10];$/;" m struct:__anon21 file: +cluster_zmax structs.c /^ double cluster_zmax[10];$/;" m struct:__anon11 file: +cluster_zmin structs.c /^ double cluster_zmin[10];$/;" m struct:__anon11 file: +clustering_Nbin structs.c /^ int clustering_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +clustering_Npowerspectra structs.c /^ int clustering_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +clustering_REDSHIFT_FILE structs.c /^ char clustering_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +clustering_histogram_zbins structs.c /^ int clustering_histogram_zbins;$/;" m struct:__anon12 file: +clustering_photoz structs.c /^ int clustering_photoz;$/;" m struct:__anon12 file: +clustering_zdistrpar_zmax structs.c /^ double clustering_zdistrpar_zmax;$/;" m struct:__anon12 file: +clustering_zdistrpar_zmin structs.c /^ double clustering_zdistrpar_zmin;$/;" m struct:__anon12 file: +clustering_zmax structs.c /^ double clustering_zmax[10]; $/;" m struct:__anon11 file: +clustering_zmin structs.c /^ double clustering_zmin[10];$/;" m struct:__anon11 file: +clusterpara structs.c /^} clusterpara;$/;" t typeref:struct:__anon17 file: +cmb structs.c /^Cmb cmb;$/;" v +compute_data_vector like_fourier.c /^void compute_data_vector(char *details,double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double MGSigma, double MGmu, double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +compute_data_vector like_fourier_HOD.c /^void compute_data_vector(char *details,double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double HOD_Mc, double HOD_sigmaM,double HOD_M1,double HOD_M0, double HOD_alpha,double HOD_fc, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +con basics.c /^}con;$/;" t typeref:struct:__anon3 file: +conc halo.c /^double conc(double m, double a)$/;" f +constants basics.c /^con constants = {$/;" v +cor inv_cov.py /^cor = np.zeros((ndata,ndata))$/;" v +cor patch_cov_HOD.py /^cor = np.zeros((ndata,ndata))$/;" v +cor patch_cov_Rmin.py /^cor = np.zeros((ndata,ndata))$/;" v +cos basics.c /^struct cos{$/;" s file: +cosmax structs.c /^ double cosmax;$/;" m struct:__anon9 file: +cosmology structs.c /^cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0};$/;" v +cosmopara structs.c /^}cosmopara;$/;" t typeref:struct:__anon10 file: +count_rows init.c /^int count_rows(char* filename,const char delimiter){$/;" f +count_rows init_basic.c /^int count_rows(char* filename,const char delimiter){$/;" f +cov inv_cov.py /^cov = np.zeros((ndata,ndata))$/;" v +cov patch_cov_HOD.py /^cov = cov+covNG$/;" v +cov patch_cov_HOD.py /^cov = np.zeros((ndata,ndata))$/;" v +cov patch_cov_Rmin.py /^cov = np.zeros((ndata,ndata))$/;" v +covNG patch_cov_HOD.py /^covNG = np.zeros((ndata,ndata))$/;" v +cov_G_cgl_cgl covariances_cluster.c /^double cov_G_cgl_cgl(double l, double delta_l,int nzc1,int nN1, int nzs1, int nzc2, int nN2, int nzs2){$/;" f +cov_G_cl_cgl covariances_cluster.c /^double cov_G_cl_cgl (double l, double delta_l,int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_G_cl_cgl_HOD covariances_fourier_HOD.c /^double cov_G_cl_cgl_HOD (double l, double delta_l,int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_G_cl_cl_real covariances_real.c /^double cov_G_cl_cl_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_real_binned covariances_real_binned.c /^double cov_G_cl_cl_real_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4){$/;" f +cov_G_cl_cl_real_nonoise covariances_real.c /^double cov_G_cl_cl_real_nonoise(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_real_rebin covariances_real.c /^double cov_G_cl_cl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo covariances_fourier.c /^double cov_G_cl_cl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo covariances_fourier_SSC.c /^double cov_G_cl_cl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_cl_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real covariances_real.c /^double cov_G_cl_gl_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real_binned covariances_real_binned.c /^double cov_G_cl_gl_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real_rebin covariances_real.c /^double cov_G_cl_gl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_tomo covariances_fourier.c /^double cov_G_cl_gl_tomo(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_gl_tomo covariances_fourier_SSC.c /^double cov_G_cl_gl_tomo(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_gl_tomo_HOD(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_no_shot_noise_binned covariances_real_binned.c /^double cov_G_cl_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_shear_real covariances_real.c /^double cov_G_cl_shear_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_real_binned covariances_real_binned.c /^double cov_G_cl_shear_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_real_rebin covariances_real.c /^double cov_G_cl_shear_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_tomo covariances_fourier.c /^double cov_G_cl_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_shear_tomo covariances_fourier_SSC.c /^double cov_G_cl_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_shear_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gg_gk covariances_CMBxLSS_fourier.c /^double cov_G_gg_gk(double l, double delta_l, int n1, int n2, int n3){$/;" f +cov_G_gg_kk covariances_CMBxLSS_fourier.c /^double cov_G_gg_kk(double l, double delta_l, int n1, int n2){$/;" f +cov_G_gg_ks covariances_CMBxLSS_fourier.c /^double cov_G_gg_ks(double l, double delta_l, int n1, int n2, int zs){$/;" f +cov_G_ggl_cgl covariances_cluster.c /^double cov_G_ggl_cgl (double l, double delta_l,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_G_ggl_cgl_HOD covariances_fourier_HOD.c /^double cov_G_ggl_cgl_HOD (double l, double delta_l,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_G_ggl_no_shot_noise covariances_real.c /^double cov_G_ggl_no_shot_noise(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gk_gk covariances_CMBxLSS_fourier.c /^double cov_G_gk_gk(double l, double delta_l, int n1, int n3){$/;" f +cov_G_gk_gs covariances_CMBxLSS_fourier.c /^double cov_G_gk_gs(double l, double delta_l, int zl1, int zl2, int zs){$/;" f +cov_G_gk_kk covariances_CMBxLSS_fourier.c /^double cov_G_gk_kk(double l, double delta_l, int zl){$/;" f +cov_G_gk_ks covariances_CMBxLSS_fourier.c /^double cov_G_gk_ks(double l, double delta_l, int zl, int zs){$/;" f +cov_G_gk_ss covariances_CMBxLSS_fourier.c /^double cov_G_gk_ss(double l, double delta_l, int zl, int zs1, int zs2){$/;" f +cov_G_gl_gl_real covariances_real.c /^double cov_G_gl_gl_real(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gl_gl_real_binned covariances_real_binned.c /^double cov_G_gl_gl_real_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4){$/;" f +cov_G_gl_gl_real_rebin covariances_real.c /^double cov_G_gl_gl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gl_gl_tomo covariances_fourier.c /^double cov_G_gl_gl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_gl_tomo covariances_fourier_SSC.c /^double cov_G_gl_gl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_gl_gl_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_no_shot_noise_binned covariances_real_binned.c /^double cov_G_gl_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_gl_shear_real covariances_real.c /^double cov_G_gl_shear_real(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_real_binned covariances_real_binned.c /^double cov_G_gl_shear_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_real_rebin covariances_real.c /^double cov_G_gl_shear_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int zl,int zs, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_tomo covariances_fourier.c /^double cov_G_gl_shear_tomo(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gl_shear_tomo covariances_fourier_SSC.c /^double cov_G_gl_shear_tomo(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_G_gl_shear_tomo_HOD(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gs_kk covariances_CMBxLSS_fourier.c /^double cov_G_gs_kk(double l, double delta_l, int zl, int zs){$/;" f +cov_G_gs_ks covariances_CMBxLSS_fourier.c /^double cov_G_gs_ks(double l, double delta_l, int zl, int zs1, int zs2){$/;" f +cov_G_kk_kk covariances_CMBxLSS_fourier.c /^double cov_G_kk_kk(double l, double delta_l){$/;" f +cov_G_kk_ks covariances_CMBxLSS_fourier.c /^double cov_G_kk_ks(double l, double delta_l, int zs){$/;" f +cov_G_kk_ss covariances_CMBxLSS_fourier.c /^double cov_G_kk_ss(double l, double delta_l, int z1, int z2){$/;" f +cov_G_ks_ks covariances_CMBxLSS_fourier.c /^double cov_G_ks_ks(double l, double delta_l, int z1, int z3){$/;" f +cov_G_ks_ss covariances_CMBxLSS_fourier.c /^double cov_G_ks_ss(double l, double delta_l, int z1, int z2, int z3){$/;" f +cov_G_shear_binned covariances_real_binned.c /^double cov_G_shear_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_G_shear_cgl covariances_cluster.c /^double cov_G_shear_cgl (double l, double delta_l,int nzs1,int nzs2, int nzc, int nN, int nzs3){$/;" f +cov_G_shear_no_shot_noise covariances_real.c /^double cov_G_shear_no_shot_noise(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_no_shot_noise_binned covariances_real_binned.c /^double cov_G_shear_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_rebin covariances_real.c /^double cov_G_shear_rebin(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){ \/\/now without shotnoise!$/;" f +cov_G_shear_shear_real covariances_real.c /^double cov_G_shear_shear_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_shear_tomo covariances_fourier.c /^double cov_G_shear_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_shear_shear_tomo covariances_fourier_SSC.c /^double cov_G_shear_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_shear_shotnoise covariances_real.c /^double cov_G_shear_shotnoise(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_cgl_cgl covariances_cluster.c /^double cov_NG_cgl_cgl(double l1,double l2,int nzc1,int nN1, int nzs1, int nzc2, int nN2, int nzs2){$/;" f +cov_NG_cl_cgl covariances_cluster.c /^double cov_NG_cl_cgl (double l1,double l2, int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_NG_cl_cgl_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cgl_HOD (double l1,double l2, int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_NG_cl_cl_real covariances_real.c /^double cov_NG_cl_cl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_real_binned covariances_real_binned.c /^double cov_NG_cl_cl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_cl_tomo covariances_fourier.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cl_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_gl_real covariances_real.c /^double cov_NG_cl_gl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f +cov_NG_cl_gl_real_binned covariances_real_binned.c /^double cov_NG_cl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_gl_tomo covariances_fourier.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_gl_tomo_HOD(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_shear_real covariances_real.c /^double cov_NG_cl_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_NG_cl_shear_real_binned covariances_real_binned.c /^double cov_NG_cl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_cl_shear_tomo covariances_fourier.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_cl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_shear_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_gg_gk covariances_CMBxLSS_fourier.c /^double cov_NG_gg_gk(double l1, double l2, int n1, int n2, int n3){$/;" f +cov_NG_gg_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gg_kk(double l1,double l2, int n1, int n2){$/;" f +cov_NG_gg_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gg_ks(double l1,double l2, int n1, int n2, int zs){$/;" f +cov_NG_ggl_cgl covariances_cluster.c /^double cov_NG_ggl_cgl (double l1,double l2,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_NG_ggl_cgl_HOD covariances_fourier_HOD.c /^double cov_NG_ggl_cgl_HOD (double l1,double l2,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_NG_gk_gk covariances_CMBxLSS_fourier.c /^double cov_NG_gk_gk(double l1,double l2, int n1, int n2){$/;" f +cov_NG_gk_gs covariances_CMBxLSS_fourier.c /^double cov_NG_gk_gs(double l1,double l2, int zl1, int zl2, int zs){$/;" f +cov_NG_gk_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gk_kk(double l1,double l2, int zl){$/;" f +cov_NG_gk_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ks(double l1,double l2, int zl, int zs){$/;" f +cov_NG_gk_ss covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ss(double l1,double l2, int zl, int zs1, int zs2){$/;" f +cov_NG_gl_gl_real covariances_real.c /^double cov_NG_gl_gl_real(double theta1, double theta2, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_real_binned covariances_real_binned.c /^double cov_NG_gl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_gl_gl_tomo covariances_fourier.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_gl_tomo_HOD(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_shear_real covariances_real.c /^double cov_NG_gl_shear_real(double theta1, double theta2, int z1l,int z1s, int z3, int z4, int pm){$/;" f +cov_NG_gl_shear_real_binned covariances_real_binned.c /^double cov_NG_gl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_gl_shear_tomo covariances_fourier.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_shear_tomo_HOD(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gs_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gs_kk(double l1,double l2, int zl, int zs){$/;" f +cov_NG_gs_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gs_ks(double l1,double l2, int zl, int zs1, int zs2){$/;" f +cov_NG_kk_kk covariances_CMBxLSS_fourier.c /^double cov_NG_kk_kk(double l1,double l2){$/;" f +cov_NG_kk_ks covariances_CMBxLSS_fourier.c /^double cov_NG_kk_ks(double l1,double l2, int zs){$/;" f +cov_NG_kk_ss covariances_CMBxLSS_fourier.c /^double cov_NG_kk_ss(double l1,double l2, int z1, int z2){$/;" f +cov_NG_ks_ks covariances_CMBxLSS_fourier.c /^double cov_NG_ks_ks(double l1,double l2, int z1, int z2){$/;" f +cov_NG_ks_ss covariances_CMBxLSS_fourier.c /^double cov_NG_ks_ss(double l1,double l2, int z1, int z2, int z3){$/;" f +cov_NG_shear_cgl covariances_cluster.c /^double cov_NG_shear_cgl (double l1,double l2,int nzs1,int nzs2, int nzc, int nN, int nzs3){$/;" f +cov_NG_shear_rebin covariances_real.c /^double cov_NG_shear_rebin(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_real covariances_real.c /^double cov_NG_shear_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm1, int pm2){ \/\/pm1 = pm2 = 1 for C++, pm1=pm2 = 0 for C--, pm1 = 1, pm2 = 0 for C+-$/;" f +cov_NG_shear_shear_real_binned covariances_real_binned.c /^double cov_NG_shear_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_tomo covariances_fourier.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_shear_shear_tomo covariances_fourier_SSC.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_N_N covariances_cluster.c /^double cov_N_N(int nzc1,int nN1, int nzc2, int nN2){$/;" f +cov_cgl_N covariances_cluster.c /^double cov_cgl_N(double l,int nzc1,int nN1, int nzs,int nzc2, int nN2){$/;" f +cov_cl_N covariances_cluster.c /^double cov_cl_N(double l,int nl1,int nl2, int nzc, int nN){$/;" f +cov_cl_N_HOD covariances_fourier_HOD.c /^double cov_cl_N_HOD(double l,int nl1,int nl2, int nzc, int nN){$/;" f +cov_ggl_N covariances_cluster.c /^double cov_ggl_N(double l,int nzl,int nzs, int nzc, int nN){$/;" f +cov_ggl_N_HOD covariances_fourier_HOD.c /^double cov_ggl_N_HOD(double l,int nzl,int nzs, int nzc, int nN){$/;" f +cov_shear_N covariances_cluster.c /^double cov_shear_N(double l,int ns1,int ns2, int nzc, int nN){$/;" f +coverH0 structs.c /^ double coverH0; \/\/units for comoving distances - speeds up code$/;" m struct:__anon10 file: +covfile inv_cov.py /^covfile = np.genfromtxt(infile)$/;" v +covfile patch_cov_HOD.py /^covfile = np.genfromtxt(infile)$/;" v +covfile patch_cov_HOD.py /^covfile = np.genfromtxt(infileG)$/;" v +covfile patch_cov_Rmin.py /^covfile = np.genfromtxt(infile)$/;" v +covpar structs.c /^} covpar;$/;" t typeref:struct:__anon24 file: +covparams structs.c /^covpar covparams;$/;" v +create_Tm_COSEBIs_table EBfunctions.c /^void create_Tm_COSEBIs_table(double vt_max,double vt_min,char *filename2,int table_Tm_COSEBIs,int N_ORDER)$/;" f +create_Ztable_lin EBfunctions.c /^void create_Ztable_lin(double vt_max,double vt_min,double thetarad,char *filename,int table_Nring_z)$/;" f +create_Ztable_log EBfunctions.c /^void create_Ztable_log(double vt_max,double vt_min,double thetarad,char *filename,int table_Nring_z)$/;" f +create_double_matrix basics.c /^double **create_double_matrix(long nrl, long nrh, long ncl, long nch)$/;" f +create_double_vector basics.c /^double *create_double_vector(long nl, long nh)$/;" f +cubearg basics.c /^static double cubearg;$/;" v file: +dN200_dchi cluster.c /^double dN200_dchi (double a, int nN){$/;" f +dN200_dchi clusters_DES.c /^double dN200_dchi (double a, int nN){$/;" f +dV_cluster cluster.c /^double dV_cluster(double z, void* params){ \/\/placeholder routine, factor in selection function for actual analaysis$/;" f +dV_cluster clusters_DES.c /^double dV_cluster(double z, void* params){ \/\/placeholder routine, factor in selection function for actual analaysis$/;" f +darg basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +data BAO.c /^ double data[10];$/;" m struct:__anon1 file: +data_read init.c /^double data_read(int READ, int ci)$/;" f +data_read init_basic.c /^double data_read(int READ, int ci)$/;" f +datav GRS.c /^ double* datav;$/;" m struct:__anon7 file: +datav structs.c /^ double** datav;$/;" m struct:__anon25 file: +dchi_da cosmo2D_fourier.c /^double dchi_da(double a){$/;" f +delP_SSC covariances_3D.c /^double delP_SSC(double k, double a){$/;" f +delP_SSC_cm covariances_cluster.c /^double delP_SSC_cm(double k, double a, double nz, double nN){$/;" f +delPgg_SSC covariances_fourier_HOD.c /^double delPgg_SSC(double k, double a){$/;" f +delPgm_SSC covariances_fourier_HOD.c /^double delPgm_SSC(double k, double a){$/;" f +delPlin_SSC covariances_3D.c /^double delPlin_SSC(double k, double a){$/;" f +delta_Delta halo.c /^double delta_Delta(double a)$/;" f +delta_c halo.c /^double delta_c(double a) \/*set to 1.686 for consistency with Tinker mass & bias definition *\/$/;" f +determine_emu_cosmo_calib cosmo3D.c /^void determine_emu_cosmo_calib(double *COSMO_emu, int *calibflag)$/;" f +determine_emu_cosmo_calib cosmo3D_april7.c /^void determine_emu_cosmo_calib(double *COSMO_emu, int *calibflag)$/;" f +dist_BAO BAO.c /^double dist_BAO(double z){$/;" f +dlognudlogm halo.c /^double dlognudlogm(double m)$/;" f +do_matrix_mult_invcov external_prior.c /^double do_matrix_mult_invcov(int n_param, double invcov[n_param][n_param], double param_diff[n_param]) $/;" f +error basics.c /^void error(char *s)$/;" f +eta_ia structs.c /^ double eta_ia;$/;" m struct:input_nuisance_params file: +eta_ia structs.c /^ double eta_ia; \/\/eta_other IA see Joachimi2012$/;" m struct:__anon21 file: +eta_ia structs.c /^ double eta_ia[2]; \/\/eta_other IA see Joachimi2012$/;" m struct:__anon22 file: +eta_ia_highz structs.c /^ double eta_ia_highz;$/;" m struct:input_nuisance_params file: +eta_ia_highz structs.c /^ double eta_ia_highz; \/\/uncertainty in high z evolution$/;" m struct:__anon21 file: +eta_ia_highz structs.c /^ double eta_ia_highz[2]; \/\/additional uncertainty at high z$/;" m struct:__anon22 file: +example_Cl examples.c /^void example_Cl (){$/;" f +example_Cov examples.c /^void example_Cov(){$/;" f +example_pdelta examples.c /^void example_pdelta(){$/;" f +example_w_HOD examples.c /^void example_w_HOD(){ \/\/examples for angular correlation functions using HOD model$/;" f +example_wtheta examples.c /^void example_wtheta(){ \/\/angular 2PT functions using linear bias + non-linear matter power spectrum$/;" f +ext_data structs.c /^ char ext_data[500];$/;" m struct:__anon9 file: +f inv_cov.py /^f = open(outfile, "w")$/;" v +f patch_cov_HOD.py /^f = open(outfile, "w")$/;" v +f patch_cov_Rmin.py /^f = open(outfile, "w")$/;" v +f patch_cov_Rmin.py /^f = open(outfilebase, "w")$/;" v +fA_blue structs.c /^ double fA_blue; \/\/fractional IA amplitude of blue galaxies compared to red $/;" m struct:__anon21 file: +f_K cosmo3D.c /^double f_K(double chi)$/;" f +f_K cosmo3D_april7.c /^double f_K(double chi)$/;" f +f_NL structs.c /^ double f_NL; $/;" m struct:__anon10 file: +f_NL structs.c /^ double f_NL; $/;" m struct:__anon22 file: +f_a GRS.c /^double f_a(double a){$/;" f +f_c HOD.c /^double f_c(int nz){$/;" f +f_c structs.c /^ double f_c;$/;" m struct:input_HOD_params file: +f_chi_for_Psi_cl cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_sh cosmo2D_exact_fft.c /^void f_chi_for_Psi_sh(double* chi_ar, int Nchi, double* f_chi_ar, int ns) {$/;" f +f_chi_for_Psi_sh cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh(double* chi_ar, int Nchi, double* f_chi_ar, int ns) {$/;" f +f_chi_for_Psi_sh_IA cosmo2D_exact_fft.c /^void f_chi_for_Psi_sh_IA(double* chi_ar, int Nchi, double* f_chi_IA_ar, int ns) {$/;" f +f_chi_for_Psi_sh_IA cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh_IA(double* chi_ar, int Nchi, double* f_chi_IA_ar, int ns) {$/;" f +f_growth cosmo2D_exact.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft_optimize.c /^double f_growth(double z){$/;" f +f_red_LF IA.c /^double f_red_LF(double mag, double a){$/;" f +f_rsd cosmo2D_fourier.c /^double f_rsd (double aa){$/;" f +f_sky GRS.c /^ double f_sky; $/;" m struct:__anon7 file: +f_sky structs.c /^ double f_sky; $/;" m struct:__anon25 file: +f_tinker halo.c /^double f_tinker(double n, double a_in)$/;" f +fc structs.c /^ double fc; \/\/central occupation$/;" m struct:__anon16 file: +fc_rm structs.c /^ double fc_rm[2];$/;" m struct:__anon23 file: +filename structs.c /^ char filename[200]; \/* output file name prefix *\/$/;" m struct:__anon24 file: +fill_class_parameters cosmo3D.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f +fill_class_parameters cosmo3D_april7.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f +filter_cov patch_cov_HOD.py /^def filter_cov(cov,mask):$/;" f +filter_cov patch_cov_Rmin.py /^def filter_cov(cov,mask):$/;" f +filter_cov_fourier covariances_real.c /^void filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +filter_cov_fourier covariances_real_binned.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +flat_prior structs.c /^flat_priorpara flat_prior;$/;" v +flat_priorpara structs.c /^}flat_priorpara;$/;" t typeref:struct:__anon23 file: +fnu_tinker halo.c /^double fnu_tinker(double n, double a)$/;" f +fraction_Pdelta_baryon_from_sims_DES baryons.c /^double fraction_Pdelta_baryon_from_sims_DES(double k,double z)$/;" f +fraction_Pdelta_baryon_from_spline_DES baryons.c /^double fraction_Pdelta_baryon_from_spline_DES(double k,double z)$/;" f +fred structs.c /^ double fred[10];$/;" m struct:__anon21 file: +free_baryon_spline_interpolation_to_TNG100 baryons.c /^void free_baryon_spline_interpolation_to_TNG100(){$/;" f +free_class_structs cosmo3D.c /^void free_class_structs( $/;" f +free_class_structs cosmo3D_april7.c /^void free_class_structs( $/;" f +free_double_matrix basics.c /^void free_double_matrix(double **m, long nrl, long nrh, long ncl, long nch)$/;" f +free_double_vector basics.c /^void free_double_vector(double *v, long nl, long nh)$/;" f +fs_2 covariances_3D.c /^double fs_2(double k1x, double k1y, double k2x, double k2y)$/;" f +fs_2 reduced_shear.c /^double fs_2(double k1x, double k1y, double k2x, double k2y)$/;" f +fs_3 covariances_3D.c /^double fs_3(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y)$/;" f +fsat HOD.c /^double fsat(int nz,double a){$/;" f +fsat_rm redmagic.c /^double fsat_rm(double a){$/;" f +func_for_growfac cosmo3D.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f +func_for_growfac cosmo3D_april7.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f +fwhm structs.c /^ double fwhm; \/\/ beam fwhm in rad$/;" m struct:__anon14 file: +g_bg redshift.c /^double g_bg (double a, int nzlens){$/;" f +g_bg redshift_spline.c /^double g_bg (double a, int nzlens){$/;" f +g_cmb redshift.c /^double g_cmb (double a){$/;" f +g_cmb redshift_spline.c /^double g_cmb (double a){$/;" f +g_lens redshift.c /^double g_lens(double a, int zbin) \/\/ for *lens* tomography bin zbin$/;" f +g_lens redshift_spline.c /^double g_lens(double a, int zbin) \/\/ for *lens* tomography bin zbin$/;" f +g_tomo redshift.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zbin$/;" f +g_tomo redshift_spline.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zbin$/;" f +galpara structs.c /^}galpara;$/;" t typeref:struct:__anon15 file: +galsample structs.c /^ char galsample[256];$/;" m struct:__anon13 file: +gbias structs.c /^galpara gbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.bs2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.b1_function = &bgal_z, .b_mag ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; \/\/default: point to old bgal_z routin$/;" v +get_FPT_bias pt.c /^void get_FPT_bias(void){$/;" f +get_FPT_bias_command_line pt.c /^void get_FPT_bias_command_line(void){$/;" f +get_N_ell like_fourier.c /^int get_N_ell(void){$/;" f +get_N_ggl like_fourier.c /^int get_N_ggl(void){$/;" f +get_N_tomo_clustering like_fourier.c /^int get_N_tomo_clustering(void){$/;" f +get_N_tomo_shear like_fourier.c /^int get_N_tomo_shear(void){$/;" f +get_class_As cosmo3D.c /^ double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){$/;" f +get_class_As cosmo3D_april7.c /^ double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){$/;" f +get_class_s8 cosmo3D.c /^double get_class_s8(struct file_content *fc, int *status){$/;" f +get_class_s8 cosmo3D_april7.c /^double get_class_s8(struct file_content *fc, int *status){$/;" f +ggl_Npowerspectra structs.c /^ int ggl_Npowerspectra;\/\/ number of ggl tomography combinations$/;" m struct:__anon11 file: +ggl_efficiency redshift.c /^double ggl_efficiency(int zl, int zs){$/;" f +ggl_efficiency redshift_spline.c /^double ggl_efficiency(int zl, int zs){$/;" f +ggl_overlap_cut structs.c /^ double ggl_overlap_cut;$/;" m struct:__anon13 file: +gk structs.c /^ int gk;$/;" m struct:__anon9 file: +global structs.c /^globalpara global;$/;" v +global_baryon_spline baryons.c /^spline_interpolator global_baryon_spline;$/;" v +globalpara structs.c /^}globalpara;$/;" t typeref:struct:__anon19 file: +grid_values baryons.c /^ double *grid_values;$/;" m struct:__anon2 file: +growfac cosmo3D.c /^double growfac(double a)$/;" f +growfac cosmo3D_april7.c /^double growfac(double a)$/;" f +growfac_from_class cosmo3D.c /^double growfac_from_class(double a){$/;" f +grsbias structs.c /^ double grsbias[7];$/;" m struct:input_nuisance_params_grs file: +grskstar structs.c /^ double grskstar;$/;" m struct:input_nuisance_params_grs file: +grspshot structs.c /^ double grspshot;$/;" m struct:input_nuisance_params_grs file: +grssigmap structs.c /^ double grssigmap[7];$/;" m struct:input_nuisance_params_grs file: +grssigmaz structs.c /^ double grssigmaz;$/;" m struct:input_nuisance_params_grs file: +gs_2 covariances_3D.c /^double gs_2(double k1x, double k1y,double k2x, double k2y)$/;" f +h0 structs.c /^ double h0; \/\/Hubble constant$/;" m struct:__anon10 file: +h0 structs.c /^ double h0;$/;" m struct:input_cosmo_params file: +h0 structs.c /^ double h0;$/;" m struct:input_cosmo_params_mpp file: +h0 structs.c /^ double h0; \/\/Hubble constant$/;" m struct:__anon22 file: +h0_max_emu cosmo3D.c 23;" d file: +h0_max_emu cosmo3D_april7.c 23;" d file: +h0_min_emu cosmo3D.c 24;" d file: +h0_min_emu cosmo3D_april7.c 24;" d file: +hankel_kernel_FT basics.c /^void hankel_kernel_FT(double x, fftw_complex *res, double *arg, int argc)$/;" f +high basics.c /^ double high;$/;" m struct:__anon4 file: +hod structs.c /^ double hod[10][6]; \/*HOD[i] contains HOD parameters of galaxies in clustering bin i, following 5 parameter model of Zehavi et al. 2011 + modification of concentration parameter*\/$/;" m struct:__anon15 file: +hod structs.c /^ double hod[5];$/;" m struct:__anon16 file: +hoverh0 cosmo3D.c /^static inline double hoverh0(double a){$/;" f file: +hoverh0 cosmo3D_april7.c /^static inline double hoverh0(double a){$/;" f file: +infile inv_cov.py /^infile = 'Euclid_Y6_cov_combi_incl_clusters'$/;" v +infile patch_cov_HOD.py /^infile = '..\/cov\/RMIN01_cov_combi_LSST_Ntomo10'$/;" v +infile patch_cov_Rmin.py /^infile = '..\/cov\/RMIN01_cov_combi_LSST_Ntomo10'$/;" v +infileG patch_cov_HOD.py /^infileG = '..\/cov\/cov_G_HOD'$/;" v +init_BAO_BOSS BAO.c /^void init_BAO_BOSS(){$/;" f +init_BAO_DES BAO.c /^void init_BAO_DES(){$/;" f +init_BAO_LSST BAO.c /^void init_BAO_LSST(){$/;" f +init_BAO_WFIRST BAO.c /^void init_BAO_WFIRST(){$/;" f +init_BAO_WFIRST_spectro BAO.c /^void init_BAO_WFIRST_spectro(){$/;" f +init_DES examples.c /^void init_DES(){$/;" f +init_HOD_rm init.c /^void init_HOD_rm(){$/;" f +init_HOD_rm init_basic.c /^void init_HOD_rm(){$/;" f +init_IA init.c /^void init_IA(char *model,char *lumfct)$/;" f +init_IA init_basic.c /^void init_IA(char *model,char *lumfct)$/;" f +init_IA_mpp init_mpp.c /^void init_IA_mpp(int N)$/;" f +init_Pdelta init.c /^void init_Pdelta(char *model,double nexp,double A_factor)$/;" f +init_Pdelta init_basic.c /^void init_Pdelta(char *model,double nexp,double A_factor)$/;" f +init_analysis_choices init_LSST_SRD.c /^void init_analysis_choices()$/;" f +init_bary init_baryon.c /^void init_bary(char *scenario){$/;" f +init_baryon_spline_interpolation_to_TNG100 baryons.c /^void init_baryon_spline_interpolation_to_TNG100(){$/;" f +init_baryons init.c /^void init_baryons()$/;" f +init_baryons init_basic.c /^void init_baryons()$/;" f +init_binning_fourier init.c /^void init_binning_fourier(int Ncl, double lmin, double lmax, double lmax_shear, double Rmin_bias, int cluster_rich_Nbin)$/;" f +init_binning_fourier init_basic.c /^void init_binning_fourier(int Ncl, double lmin, double lmax, double lmax_shear, double Rmin_bias, int cluster_rich_Nbin, int Ntomo)$/;" f +init_binning_mpp init_mpp.c /^void init_binning_mpp(int Ntheta,double theta_min_arcmin, double theta_max_arcmin){$/;" f +init_binning_real init.c /^void init_binning_real(int Nt, double min, double max)$/;" f +init_binning_real init_basic.c /^void init_binning_real(int Nt, double min, double max)$/;" f +init_clphotoz_LSST_gold init.c /^void init_clphotoz_LSST_gold()$/;" f +init_clphotoz_LSST_gold init_basic.c /^void init_clphotoz_LSST_gold()$/;" f +init_clphotoz_benchmark init.c /^void init_clphotoz_benchmark()$/;" f +init_clphotoz_benchmark init_basic.c /^void init_clphotoz_benchmark()$/;" f +init_clphotoz_cmass init.c /^void init_clphotoz_cmass()$/;" f +init_clphotoz_cmass init_basic.c /^void init_clphotoz_cmass()$/;" f +init_clphotoz_redmagic init.c /^void init_clphotoz_redmagic()$/;" f +init_clphotoz_redmagic init_basic.c /^void init_clphotoz_redmagic()$/;" f +init_clphotoz_source init.c /^void init_clphotoz_source()$/;" f +init_clphotoz_source init_basic.c /^void init_clphotoz_source()$/;" f +init_clusters init_basic.c /^void init_clusters()$/;" f +init_cmb init.c /^void init_cmb(char * cmbName) {$/;" f +init_cmb init_basic.c /^void init_cmb(char * cmbName) {$/;" f +init_cosmo init.c /^void init_cosmo()$/;" f +init_cosmo init_basic.c /^void init_cosmo()$/;" f +init_cosmo_runmode init.c /^void init_cosmo_runmode(char *runmode)$/;" f +init_cosmo_runmode init_basic.c /^void init_cosmo_runmode(char *runmode)$/;" f +init_data_inv init.c /^void init_data_inv(char *INV_FILE, char *DATA_FILE)$/;" f +init_data_inv init_basic.c /^void init_data_inv(char *INV_FILE, char *DATA_FILE)$/;" f +init_data_real init.c /^void init_data_real(char *COV_FILE, char *MASK_FILE, char *DATA_FILE)$/;" f +init_data_real init_basic.c /^void init_data_real(char *COV_FILE, char *MASK_FILE, char *DATA_FILE)$/;" f +init_galaxies init.c /^void init_galaxies(char *SOURCE_ZFILE, char *LENS_ZFILE, char *lensphotoz, char *sourcephotoz, char *galsample)$/;" f +init_galaxies init_basic.c /^void init_galaxies(char *SOURCE_ZFILE, char *LENS_ZFILE, char *lensphotoz, char *sourcephotoz, char *galsample)$/;" f +init_ggl_tomo init_mpp.c /^void init_ggl_tomo(){$/;" f +init_lens_sample init.c /^void init_lens_sample(char *lensphotoz, char *galsample)$/;" f +init_lens_sample init_LSST_SRD.c /^void init_lens_sample(char *lensphotoz)$/;" f +init_lens_sample init_basic.c /^void init_lens_sample(char *lensphotoz, char *galsample)$/;" f +init_lens_sample_ init.c /^void init_lens_sample_()$/;" f +init_lens_sample_ init_basic.c /^void init_lens_sample_()$/;" f +init_lens_sample_mpp init_mpp.c /^void init_lens_sample_mpp(char *multihisto_file, int Ntomo, double *b1, double *b2, double ggl_cut)$/;" f +init_priors init.c /^void init_priors(char *cosmoPrior1, char *cosmoPrior2, char *cosmoPrior3, char *cosmoPrior4)$/;" f +init_priors init_basic.c /^void init_priors(char *cosmoPrior1, char *cosmoPrior2, char *cosmoPrior3, char *cosmoPrior4)$/;" f +init_probes init.c /^void init_probes(char *probes)$/;" f +init_probes init_basic.c /^void init_probes(char *probes)$/;" f +init_probes_5x2pt init_mpp.c /^void init_probes_5x2pt(char *probes)$/;" f +init_probes_real init.c /^void init_probes_real(char *probes)$/;" f +init_probes_real init_basic.c /^void init_probes_real(char *probes)$/;" f +init_probes_real_mpp init_mpp.c /^void init_probes_real_mpp(char *probes)$/;" f +init_source_sample init.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample init_LSST_SRD.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample init_basic.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample_ init.c /^void init_source_sample_()$/;" f +init_source_sample_ init_basic.c /^void init_source_sample_()$/;" f +init_source_sample_mpp init_mpp.c /^void init_source_sample_mpp(char *multihisto_file, int Ntomo)$/;" f +init_survey init.c /^void init_survey(char *surveyname)$/;" f +init_survey init_basic.c /^void init_survey(char *surveyname)$/;" f +init_survey_mpp init_mpp.c /^void init_survey_mpp(char *surveyname, double area, double sigma_e){$/;" f +init_wlphotoz_stage3 init.c /^void init_wlphotoz_stage3()$/;" f +init_wlphotoz_stage3 init_basic.c /^void init_wlphotoz_stage3()$/;" f +init_wlphotoz_stage4 init.c /^void init_wlphotoz_stage4()$/;" f +init_wlphotoz_stage4 init_basic.c /^void init_wlphotoz_stage4()$/;" f +inner_I0j halo.c /^double inner_I0j (double logm, void *para){$/;" f +inner_I1j halo.c /^double inner_I1j (double logm, void *para){$/;" f +inner_P_bin covariances_3D.c /^double inner_P_bin(double theta, void *params){$/;" f +inner_SSC_gg covariances_fourier_HOD.c /^double inner_SSC_gg (double logm, void *para){$/;" f +inner_SSC_gm covariances_fourier_HOD.c /^double inner_SSC_gm (double logm, void *para){$/;" f +inner_project_tri_1h_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_1h_cov_shear_shear_tomo(double a, void *params)$/;" f +inner_project_tri_2h_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_2h_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_cl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_cl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_cl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_gl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_shear_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gg_gk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_gk(double a,void *params)$/;" f +inner_project_tri_cov_gg_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_kk(double a,void *params)$/;" f +inner_project_tri_cov_gg_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_ks(double a,void *params)$/;" f +inner_project_tri_cov_gk_gk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_gk(double a,void *params)$/;" f +inner_project_tri_cov_gk_gs covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_gs(double a, void *params)$/;" f +inner_project_tri_cov_gk_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_kk(double a, void *params)$/;" f +inner_project_tri_cov_gk_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_ks(double a, void *params)$/;" f +inner_project_tri_cov_gk_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_ss(double a, void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo covariances_fourier.c /^double inner_project_tri_cov_gl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_gl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_gl_gl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_gl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_gl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_gl_shear_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gs_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gs_kk(double a,void *params)$/;" f +inner_project_tri_cov_gs_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gs_ks(double a,void *params)$/;" f +inner_project_tri_cov_kk_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_kk(double a,void *params)$/;" f +inner_project_tri_cov_kk_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_ks(double a,void *params)$/;" f +inner_project_tri_cov_kk_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_ss(double a,void *params)$/;" f +inner_project_tri_cov_ks_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_ks_ks(double a,void *params)$/;" f +inner_project_tri_cov_ks_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_ks_ss(double a,void *params)$/;" f +inner_project_tri_cov_shear_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_shear_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_lin_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_lin_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_tri_lin_cov covariances_3D.c /^double inner_tri_lin_cov(double theta, void *params){$/;" f +input_HOD_params structs.c /^typedef struct input_HOD_params {$/;" s file: +input_HOD_params structs.c /^} input_HOD_params;$/;" t typeref:struct:input_HOD_params file: +input_cosmo_params structs.c /^typedef struct input_cosmo_params {$/;" s file: +input_cosmo_params structs.c /^} input_cosmo_params;$/;" t typeref:struct:input_cosmo_params file: +input_cosmo_params_mpp structs.c /^typedef struct input_cosmo_params_mpp {$/;" s file: +input_cosmo_params_mpp structs.c /^} input_cosmo_params_mpp;$/;" t typeref:struct:input_cosmo_params_mpp file: +input_nuisance_params structs.c /^typedef struct input_nuisance_params {$/;" s file: +input_nuisance_params structs.c /^} input_nuisance_params;$/;" t typeref:struct:input_nuisance_params file: +input_nuisance_params_grs structs.c /^typedef struct input_nuisance_params_grs {$/;" s file: +input_nuisance_params_grs structs.c /^} input_nuisance_params_grs;$/;" t typeref:struct:input_nuisance_params_grs file: +input_nuisance_params_mpp structs.c /^typedef struct input_nuisance_params_mpp {$/;" s file: +input_nuisance_params_mpp structs.c /^} input_nuisance_params_mpp;$/;" t typeref:struct:input_nuisance_params_mpp file: +insane basics.c /^ double insane;$/;" m struct:__anon4 file: +int2_for_cov_NG_cl_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_cl_cl covariances_real.c /^double int2_for_cov_NG_cl_cl(double l2,void *params){$/;" f +int2_for_cov_NG_cl_gl covariances_real.c /^double int2_for_cov_NG_cl_gl(double l2,void *params){$/;" f +int2_for_cov_NG_cl_gl_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_gl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_cl_shear covariances_real.c /^double int2_for_cov_NG_cl_shear(double l2,void *params){$/;" f +int2_for_cov_NG_cl_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_shear_binned(double l2,void *params){$/;" f +int2_for_cov_NG_gl_binned covariances_real_binned.c /^double int2_for_cov_NG_gl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_gl_gl covariances_real.c /^double int2_for_cov_NG_gl_gl(double l2,void *params){$/;" f +int2_for_cov_NG_gl_shear covariances_real.c /^double int2_for_cov_NG_gl_shear(double l2,void *params){$/;" f +int2_for_cov_NG_gl_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_gl_shear_binned(double l2,void *params){$/;" f +int2_for_cov_NG_shear covariances_real.c /^double int2_for_cov_NG_shear(double l2,void *params){$/;" f +int2_for_cov_NG_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_shear_binned(double l2,void *params){$/;" f +int2_for_wreal redmagic_real.c /^double int2_for_wreal(double z2,void *params)$/;" f +int_Delta_P_reduced_shear_dk2 reduced_shear.c /^double int_Delta_P_reduced_shear_dk2(double logk2, void *params){$/;" f +int_G11 HOD.c /^double int_G11 (double logm, void *para){$/;" f +int_GM02 HOD.c /^double int_GM02 (double logm, void *para){$/;" f +int_GM02_rm redmagic.c /^double int_GM02_rm (double logm, void *para){$/;" f +int_I04_cmcm covariances_cluster.c /^double int_I04_cmcm (double lgM, void *para){$/;" f +int_I04_mmcm covariances_cluster.c /^double int_I04_mmcm (double lgM, void *para){$/;" f +int_I12_cm covariances_cluster.c /^double int_I12_cm (double lgM, void *para){$/;" f +int_M_Mobs cluster.c /^double int_M_Mobs(double lgM, void* params){$/;" f +int_M_Mobs clusters_DES.c /^double int_M_Mobs(double lgM, void* params){$/;" f +int_P_cm_1h cluster.c /^double int_P_cm_1h(double lgM, void *params){$/;" f +int_P_cm_1h clusters_DES.c /^double int_P_cm_1h(double lgM, void *params){$/;" f +int_P_gg_2h_excl redmagic_real.c /^double int_P_gg_2h_excl(double lgM, void *para){$/;" f +int_b_Mobs cluster.c /^double int_b_Mobs(double lgM, void* params){$/;" f +int_b_Mobs clusters_DES.c /^double int_b_Mobs(double lgM, void* params){$/;" f +int_b_lin covariances_3D.c /^double int_b_lin(double theta, void *params){$/;" f +int_b_lin_mu covariances_3D.c /^double int_b_lin_mu(double m, void *params){$/;" f +int_bgal HOD.c /^double int_bgal (double m, void *params){$/;" f +int_bgal_rm redmagic.c /^double int_bgal_rm (double m, void *params){$/;" f +int_bi_reduced_shear_phi reduced_shear.c /^double int_bi_reduced_shear_phi(double phi, void *params){$/;" f +int_cov_N_N covariances_cluster.c /^double int_cov_N_N(double a, void *params)$/;" f +int_cur cosmo3D.c /^double int_cur(double lnk, void *args) \/\/tak12 A5$/;" f +int_cur cosmo3D_april7.c /^double int_cur(double lnk, void *args) \/\/tak12 A5$/;" f +int_da_n_Mobs cluster.c /^double int_da_n_Mobs(double a, void* params){$/;" f +int_da_n_Mobs clusters_DES.c /^double int_da_n_Mobs(double a, void* params){$/;" f +int_for_C_GI IA.c /^double int_for_C_GI(double a, void *params)$/;" f +int_for_C_GI_JB IA.c /^double int_for_C_GI_JB(double a, void *params)$/;" f +int_for_C_GI_lin IA.c /^double int_for_C_GI_lin(double a, void *params)$/;" f +int_for_C_II IA.c /^double int_for_C_II(double a, void *params)$/;" f +int_for_C_II_JB IA.c /^double int_for_C_II_JB(double a, void *params)$/;" f +int_for_C_II_lin IA.c /^double int_for_C_II_lin(double a, void *params)$/;" f +int_for_C_Mag_nonLimber cosmo2D_exact.c /^double int_for_C_Mag_nonLimber (double lk, void *params){$/;" f +int_for_C_ccl_tomo cluster.c /^double int_for_C_ccl_tomo(double a, void *params){$/;" f +int_for_C_ccl_tomo clusters_DES.c /^double int_for_C_ccl_tomo(double a, void *params){$/;" f +int_for_C_cgl_tomo cluster.c /^double int_for_C_cgl_tomo(double a, void *params)$/;" f +int_for_C_cgl_tomo clusters_DES.c /^double int_for_C_cgl_tomo(double a, void *params)$/;" f +int_for_C_cl_HOD cosmo2D_fourier.c /^double int_for_C_cl_HOD(double a, void *params)$/;" f +int_for_C_cl_HOD_rm_1h redmagic_real.c /^double int_for_C_cl_HOD_rm_1h(double a, void *params)$/;" f +int_for_C_cl_RSD cosmo2D_exact.c /^double int_for_C_cl_RSD (double klog, void *params){$/;" f +int_for_C_cl_g_rm_tomo covariances_fourier_HOD.c /^double int_for_C_cl_g_rm_tomo(double a, void *params){$/;" f +int_for_C_cl_g_tomo cluster.c /^double int_for_C_cl_g_tomo(double a, void *params){$/;" f +int_for_C_cl_g_tomo clusters_DES.c /^double int_for_C_cl_g_tomo(double a, void *params){$/;" f +int_for_C_cl_lin cosmo2D_exact.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_nonLimber cosmo2D_exact.c /^double int_for_C_cl_nonLimber (double lk, void *params){$/;" f +int_for_C_cl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_cl_nonLimber_tomo (double k, void *params){$/;" f +int_for_C_cl_tomo cosmo2D_fourier.c /^double int_for_C_cl_tomo(double a, void *params)$/;" f +int_for_C_cl_tomo_RSD cosmo2D_fourier.c /^double int_for_C_cl_tomo_RSD(double k, void *params)$/;" f +int_for_C_cl_tomo_b2 cosmo2D_fourier.c /^double int_for_C_cl_tomo_b2(double a, void *params)$/;" f +int_for_C_gI IA.c /^double int_for_C_gI(double a, void *params)$/;" f +int_for_C_gI_JB IA.c /^double int_for_C_gI_JB(double a, void *params)$/;" f +int_for_C_gI_lin IA.c /^double int_for_C_gI_lin(double a, void *params)$/;" f +int_for_C_ggl_IA IA.c /^double int_for_C_ggl_IA(double a, void *params)$/;" f +int_for_C_ggl_IA_Az IA.c /^double int_for_C_ggl_IA_Az(double a, void *params)$/;" f +int_for_C_ggl_IA_Az_b2 IA.c /^double int_for_C_ggl_IA_Az_b2(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp IA.c /^double int_for_C_ggl_IA_mpp(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_b2 IA.c /^double int_for_C_ggl_IA_mpp_b2(double a, void *params)$/;" f +int_for_C_gk CMBxLSS.c /^double int_for_C_gk(double a, void *params)$/;" f +int_for_C_gk_b2 CMBxLSS.c /^double int_for_C_gk_b2(double a, void *params)$/;" f +int_for_C_gl_HOD_tomo cosmo2D_fourier.c /^double int_for_C_gl_HOD_tomo(double a, void *params)$/;" f +int_for_C_gl_IA_lin cosmo2D_exact.c /^double int_for_C_gl_IA_lin(double a, void *params)$/;" f +int_for_C_gl_IA_lin cosmo2D_exact_fft.c /^double int_for_C_gl_IA_lin(double a, void *params)$/;" f +int_for_C_gl_lin cosmo2D_exact.c /^double int_for_C_gl_lin(double a, void *params)$/;" f +int_for_C_gl_lin cosmo2D_exact_fft.c /^double int_for_C_gl_lin(double a, void *params)$/;" f +int_for_C_gl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin(double a, void *params)$/;" f +int_for_C_gl_lin_IA cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin_IA(double a, void *params)$/;" f +int_for_C_gl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_gl_onlyIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_onlyIA_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_gl_tomo cosmo2D_fourier.c /^double int_for_C_gl_tomo(double a, void *params) \/\/ Add RSD$/;" f +int_for_C_gl_tomo_b2 cosmo2D_fourier.c /^double int_for_C_gl_tomo_b2(double a, void *params)$/;" f +int_for_C_gl_withIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_withIA_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_kk CMBxLSS.c /^double int_for_C_kk(double a, void *params){$/;" f +int_for_C_ks CMBxLSS.c /^double int_for_C_ks(double a, void *params)$/;" f +int_for_C_ks_IA CMBxLSS.c /^double int_for_C_ks_IA(double a, void *params)$/;" f +int_for_C_ks_IA_Az CMBxLSS.c /^double int_for_C_ks_IA_Az(double a, void *params)$/;" f +int_for_C_magnification_magnification magnification.c /^double int_for_C_magnification_magnification(double a, void *params)$/;" f +int_for_C_position_magnification magnification.c /^double int_for_C_position_magnification(double a, void *params)$/;" f +int_for_C_shear_magnification magnification.c /^double int_for_C_shear_magnification(double a, void *params)$/;" f +int_for_C_shear_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_shear_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_shear_shear_IA IA.c /^double int_for_C_shear_shear_IA(double a, void *params)$/;" f +int_for_C_shear_shear_IA_Az IA.c /^double int_for_C_shear_shear_IA_Az(double a, void *params)$/;" f +int_for_C_shear_shear_IA_mpp IA.c /^double int_for_C_shear_shear_IA_mpp(double a, void *params)$/;" f +int_for_C_shear_tomo cosmo2D_fourier.c /^double int_for_C_shear_tomo(double a, void *params)$/;" f +int_for_Delta_C_gl_reduced_shear reduced_shear.c /^double int_for_Delta_C_gl_reduced_shear(double a, void *params){$/;" f +int_for_Delta_C_shear_reduced_shear reduced_shear.c /^double int_for_Delta_C_shear_reduced_shear(double a, void *params){$/;" f +int_for_G02 HOD.c /^double int_for_G02 (double logm, void *para){$/;" f +int_for_G02_rm redmagic.c /^double int_for_G02_rm (double logm, void *para){$/;" f +int_for_HSV_shear_shear_tomo covariances_wl.c /^double int_for_HSV_shear_shear_tomo(double a, void *params){$/;" f +int_for_Psi_IA cosmo2D_exact.c /^double int_for_Psi_IA(double z, void *params){$/;" f +int_for_Psi_L cosmo2D_exact.c /^double int_for_Psi_L(double z, void *params){$/;" f +int_for_Psi_L_withIA cosmo2D_exact.c /^double int_for_Psi_L_withIA(double z, void *params){$/;" f +int_for_Psi_Mag cosmo2D_exact.c /^double int_for_Psi_Mag (double z, void *params){$/;" f +int_for_Psi_RSD cosmo2D_exact.c /^double int_for_Psi_RSD(double z, void *params){$/;" f +int_for_Psi_cl cosmo2D_exact.c /^double int_for_Psi_cl (double z, void *params){$/;" f +int_for_Psi_cl_noRSD cosmo2D_exact.c /^double int_for_Psi_cl_noRSD (double z, void *params){$/;" f +int_for_Psi_cl_withMag cosmo2D_exact.c /^double int_for_Psi_cl_withMag (double z, void *params){$/;" f +int_for_b_ngmatched halo.c /^double int_for_b_ngmatched (double logm, void *para){$/;" f +int_for_chi cosmo3D.c /^double int_for_chi(double a, void * args){$/;" f +int_for_chi cosmo3D_april7.c /^double int_for_chi(double a, void * args){$/;" f +int_for_cov_G_cl_binned covariances_real_binned.c /^double int_for_cov_G_cl_binned(double l, void *params){$/;" f +int_for_cov_G_cl_cl covariances_real.c /^double int_for_cov_G_cl_cl(double l, void *params){$/;" f +int_for_cov_G_cl_gl covariances_real.c /^double int_for_cov_G_cl_gl(double l, void *params){$/;" f +int_for_cov_G_cl_gl_binned covariances_real_binned.c /^double int_for_cov_G_cl_gl_binned(double l, void *params){$/;" f +int_for_cov_G_cl_shear covariances_real.c /^double int_for_cov_G_cl_shear(double l, void *params){$/;" f +int_for_cov_G_cl_shear_binned covariances_real_binned.c /^double int_for_cov_G_cl_shear_binned(double l, void *params){$/;" f +int_for_cov_G_gl_binned covariances_real_binned.c /^double int_for_cov_G_gl_binned(double l, void *params){$/;" f +int_for_cov_G_gl_gl covariances_real.c /^double int_for_cov_G_gl_gl(double l, void *params){$/;" f +int_for_cov_G_gl_shear covariances_real.c /^double int_for_cov_G_gl_shear(double l, void *params){$/;" f +int_for_cov_G_gl_shear_binned covariances_real_binned.c /^double int_for_cov_G_gl_shear_binned(double l, void *params){$/;" f +int_for_cov_G_shear covariances_real.c /^double int_for_cov_G_shear(double l, void *params){$/;" f +int_for_cov_G_shear_binned covariances_real_binned.c /^double int_for_cov_G_shear_binned(double l, void *params){$/;" f +int_for_cov_G_shear_nonoise covariances_real.c /^double int_for_cov_G_shear_nonoise(double l, void *params){ \/\/no mixed term!$/;" f +int_for_cov_NG_cl_binned covariances_real_binned.c /^double int_for_cov_NG_cl_binned(double l1, void *params){$/;" f +int_for_cov_NG_cl_cl covariances_real.c /^double int_for_cov_NG_cl_cl(double l1, void *params){$/;" f +int_for_cov_NG_cl_gl covariances_real.c /^double int_for_cov_NG_cl_gl(double l1, void *params){$/;" f +int_for_cov_NG_cl_gl_binned covariances_real_binned.c /^double int_for_cov_NG_cl_gl_binned(double l1, void *params){$/;" f +int_for_cov_NG_cl_shear covariances_real.c /^double int_for_cov_NG_cl_shear(double l1, void *params){$/;" f +int_for_cov_NG_cl_shear_binned covariances_real_binned.c /^double int_for_cov_NG_cl_shear_binned(double l1, void *params){$/;" f +int_for_cov_NG_gl_binned covariances_real_binned.c /^double int_for_cov_NG_gl_binned(double l1, void *params){$/;" f +int_for_cov_NG_gl_gl covariances_real.c /^double int_for_cov_NG_gl_gl(double l1, void *params){$/;" f +int_for_cov_NG_gl_shear covariances_real.c /^double int_for_cov_NG_gl_shear(double l1, void *params){$/;" f +int_for_cov_NG_gl_shear_binned covariances_real_binned.c /^double int_for_cov_NG_gl_shear_binned(double l1, void *params){$/;" f +int_for_cov_NG_shear covariances_real.c /^double int_for_cov_NG_shear(double l1, void *params){$/;" f +int_for_cov_NG_shear_binned covariances_real_binned.c /^double int_for_cov_NG_shear_binned(double l1, void *params){$/;" f +int_for_g_lens redshift.c /^double int_for_g_lens(double aprime,void *params)$/;" f +int_for_g_lens redshift_spline.c /^double int_for_g_lens(double aprime,void *params)$/;" f +int_for_g_tomo redshift.c /^double int_for_g_tomo(double aprime,void *params)$/;" f +int_for_g_tomo redshift_spline.c /^double int_for_g_tomo(double aprime,void *params)$/;" f +int_for_ggl_efficiency redshift.c /^double int_for_ggl_efficiency(double z, void *params){$/;" f +int_for_ggl_efficiency redshift_spline.c /^double int_for_ggl_efficiency(double z, void *params){$/;" f +int_for_ngmatched halo.c /^double int_for_ngmatched (double logm, void *para){$/;" f +int_for_sigma_r_sqr cosmo3D.c /^double int_for_sigma_r_sqr(double k, void * args)$/;" f +int_for_sigma_r_sqr cosmo3D_april7.c /^double int_for_sigma_r_sqr(double k, void * args)$/;" f +int_for_variance covariances_3D.c /^double int_for_variance (double logk, void *params){$/;" f +int_for_w cosmo2D_real.c /^double int_for_w(double l, void *params){$/;" f +int_for_wreal redmagic_real.c /^double int_for_wreal(double z1,void *params)$/;" f +int_for_xi_gg redmagic_real.c /^double int_for_xi_gg (double k, void *params){$/;" f +int_for_xi_gg_1h redmagic_real.c /^double int_for_xi_gg_1h (double k, void *params){$/;" f +int_for_xi_nl redmagic_real.c /^double int_for_xi_nl (double k, void *params){$/;" f +int_for_zmean redshift.c /^double int_for_zmean(double z, void *params){$/;" f +int_for_zmean redshift_spline.c /^double int_for_zmean(double z, void *params){$/;" f +int_for_zmean_source redshift.c /^double int_for_zmean_source(double z, void *params){$/;" f +int_for_zmean_source redshift_spline.c /^double int_for_zmean_source(double z, void *params){$/;" f +int_fsat HOD.c /^double int_fsat (double m, void *params){$/;" f +int_fsat_rm redmagic.c /^double int_fsat_rm (double m, void *params){$/;" f +int_gsl_integrate_cov_precision basics.c /^double int_gsl_integrate_cov_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_high_precision basics.c /^double int_gsl_integrate_high_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_insane_precision basics.c /^double int_gsl_integrate_insane_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_low_precision basics.c /^double int_gsl_integrate_low_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_medium_precision basics.c /^double int_gsl_integrate_medium_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_mc_rm redmagic.c /^double int_mc_rm (double m, void *params){$/;" f +int_mmean HOD.c /^double int_mmean (double m, void *params){$/;" f +int_mmean_rm redmagic.c /^double int_mmean_rm (double m, void *params){$/;" f +int_n_Mobs cluster.c /^double int_n_Mobs(double lgM, void* params){$/;" f +int_n_Mobs clusters_DES.c /^double int_n_Mobs(double lgM, void* params){$/;" f +int_nc_rm redmagic.c /^double int_nc_rm (double m, void *params){$/;" f +int_neff cosmo3D.c /^double int_neff(double lnk, void *args) \/\/tak12 A5$/;" f +int_neff cosmo3D_april7.c /^double int_neff(double lnk, void *args) \/\/tak12 A5$/;" f +int_ngal HOD.c /^double int_ngal (double m, void *params){$/;" f +int_ngal_rm redmagic.c /^double int_ngal_rm (double m, void *params){$/;" f +int_nlens redshift.c /^double int_nlens(double z, void* param){$/;" f +int_nlens redshift_spline.c /^double int_nlens(double z, void* param){$/;" f +int_nsource redshift.c /^double int_nsource(double z, void* param){$/;" f +int_nsource redshift_spline.c /^double int_nsource(double z, void* param){$/;" f +int_rho_nfw halo.c /^double int_rho_nfw(double r, void *params){\/\/Fourier kernel * NFW profile, integrand for u_nfw $/;" f +int_sig_R_knl cosmo3D.c /^double int_sig_R_knl(double lnk, void *args) \/\/ tak12 A4$/;" f +int_sig_R_knl cosmo3D_april7.c /^double int_sig_R_knl(double lnk, void *args) \/\/ tak12 A4$/;" f +int_vector basics.c /^int *int_vector(long nl, long nh)$/;" f +integrand1_minus EBfunctions.c /^double integrand1_minus(double theta1, void *params)$/;" f +integrand1_plus EBfunctions.c /^double integrand1_plus(double theta1, void *params)$/;" f +integrand2_minus EBfunctions.c /^double integrand2_minus(double theta2, void *params)$/;" f +integrand2_plus EBfunctions.c /^double integrand2_plus(double theta2, void *params)$/;" f +integrand_Tm_log_shear_shear EBfunctions.c /^double integrand_Tm_log_shear_shear(double vartheta, void *p)$/;" f +integrand_Tp_log_shear_shear EBfunctions.c /^double integrand_Tp_log_shear_shear(double vartheta, void *p)$/;" f +integrand_j0_Tfunc EBfunctions.c /^double integrand_j0_Tfunc(double vartheta, void *params)$/;" f +integrand_j2_Tfunc EBfunctions.c /^double integrand_j2_Tfunc(double vartheta, void *params)$/;" f +interpol basics.c /^double interpol(double *f, int n, double a, double b, double dx, double x, double lower, double upper)$/;" f +interpol2d basics.c /^double interpol2d(double **f,$/;" f +interpol2d_fitslope basics.c /^double interpol2d_fitslope(double **f,$/;" f +interpol_fitslope basics.c /^double interpol_fitslope(double *f, int n, double a, double b, double dx, double x, double lower)$/;" f +inv inv_cov.py /^inv = LA.inv(cov)$/;" v +inv inv_cov.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov)$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov)$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +invcov_mask init.c /^double invcov_mask(int READ, int ci, int cj)$/;" f +invcov_mask init_basic.c /^double invcov_mask(int READ, int ci, int cj)$/;" f +invcov_read init.c /^double invcov_read(int READ, int ci, int cj)$/;" f +invcov_read init_basic.c /^double invcov_read(int READ, int ci, int cj)$/;" f +invert_matrix_colesky basics.c /^void invert_matrix_colesky(gsl_matrix *A)$/;" f +isPkbary structs.c /^ int isPkbary; \/\/ if isPkbary=1$/;" m struct:__anon26 file: +k GRS.c /^ double* k;$/;" m struct:__anon7 file: +k structs.c /^ double* k;$/;" m struct:__anon25 file: +k_max GRS.c /^ double k_max; \/\/in h\/Mpc$/;" m struct:__anon7 file: +k_max structs.c /^ double k_max; \/\/in h\/Mpc$/;" m struct:__anon25 file: +k_max structs.c /^ double k_max;$/;" m struct:__anon20 file: +k_max_cH0 basics.c /^ double k_max_cH0;$/;" m struct:__anon5 file: +k_max_mpc basics.c /^ double k_max_mpc;$/;" m struct:__anon5 file: +k_max_mpc_class basics.c /^ double k_max_mpc_class;$/;" m struct:__anon5 file: +k_min GRS.c /^ double k_min; \/\/ in h\/Mpc$/;" m struct:__anon7 file: +k_min structs.c /^ double k_min; \/\/ in h\/Mpc$/;" m struct:__anon25 file: +k_min structs.c /^ double k_min;$/;" m struct:__anon20 file: +k_min_cH0 basics.c /^ double k_min_cH0;$/;" m struct:__anon5 file: +k_min_mpc basics.c /^ double k_min_mpc;$/;" m struct:__anon5 file: +k_star GRS.c /^ double k_star; \/\/in h\/Mpc$/;" m struct:__anon7 file: +k_star structs.c /^ double k_star; \/\/in h\/Mpc$/;" m struct:__anon25 file: +kappa_reconstruction_noise covariances_CMBxLSS_fourier.c /^double kappa_reconstruction_noise(double l){$/;" f +kk structs.c /^ int kk;$/;" m struct:__anon9 file: +ks structs.c /^ int ks;$/;" m struct:__anon9 file: +l_max structs.c /^ double l_max;$/;" m struct:__anon17 file: +l_min structs.c /^ double l_min;$/;" m struct:__anon17 file: +lbin structs.c /^ int lbin;$/;" m struct:__anon17 file: +lens_z_bias structs.c /^ double lens_z_bias[10];$/;" m struct:input_nuisance_params file: +lens_z_bias structs.c /^ double lens_z_bias[10];$/;" m struct:input_nuisance_params_mpp file: +lens_z_s structs.c /^ double lens_z_s;$/;" m struct:input_nuisance_params file: +lensphotoz structs.c /^ char lensphotoz[256];$/;" m struct:__anon13 file: +lf structs.c /^ double lf[6];$/;" m struct:input_nuisance_params file: +lgM0 structs.c /^ double lgM0;$/;" m struct:input_HOD_params file: +lgM1 structs.c /^ double lgM1;$/;" m struct:input_HOD_params file: +lgM_obs cluster.c /^double lgM_obs(double N200, double a){$/;" f +lgM_obs clusters_DES.c /^double lgM_obs(double N200, double a){$/;" f +lgMmax cluster.c /^double lgMmax(double a,int nN){\/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_max) for general scatter distribution$/;" f +lgMmax clusters_DES.c /^double lgMmax(double a,int nN){\/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_max) for general scatter distribution $/;" f +lgMmin cluster.c /^double lgMmin(double a,int nN){ \/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_min) for general scatter distribution$/;" f +lgMmin clusters_DES.c /^double lgMmin(double a,int nN){ \/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_min) for general scatter distribution $/;" f +lgMmin structs.c /^ double lgMmin[10];$/;" m struct:input_HOD_params file: +lgN200_model cluster.c /^double lgN200_model(double M, double a){$/;" f +lightspeed basics.c /^ double lightspeed;$/;" m struct:__anon3 file: +like structs.c /^likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0};$/;" v +likepara structs.c /^}likepara;$/;" t typeref:struct:__anon9 file: +lim basics.c /^}lim;$/;" t typeref:struct:__anon5 file: +limits basics.c /^lim limits = {$/;" v +line_count basics.c /^int line_count(char *filename)$/;" f +ll structs.c /^ char ll[8]; \/* Calculate position-position components *\/$/;" m struct:__anon24 file: +lmax structs.c /^ double lmax; \/* ell max *\/$/;" m struct:__anon24 file: +lmax structs.c /^ double lmax;$/;" m struct:__anon9 file: +lmax_kappacmb structs.c /^ double lmax_kappacmb;$/;" m struct:__anon9 file: +lmax_shear structs.c /^ double lmax_shear;$/;" m struct:__anon9 file: +lmin structs.c /^ double lmin; \/* ell min *\/$/;" m struct:__anon24 file: +lmin structs.c /^ double lmin;$/;" m struct:__anon9 file: +ln2 basics.c /^ double ln2; $/;" m struct:__anon3 file: +logG GRS.c /^double logG(double loga,void * params){$/;" f +log_L_BAO external_prior.c /^double log_L_BAO()$/;" f +log_L_Planck15_BAO_H070p6_JLA_w0wa external_prior.c /^double log_L_Planck15_BAO_H070p6_JLA_w0wa()$/;" f +log_L_Planck15_BAO_w0wa external_prior.c /^double log_L_Planck15_BAO_w0wa()$/;" f +log_L_Planck18_BAO_Riess18_Pantheon_w0wa external_prior.c /^double log_L_Planck18_BAO_Riess18_Pantheon_w0wa()$/;" f +log_L_Planck18_BAO_w0wa external_prior.c /^double log_L_Planck18_BAO_w0wa()$/;" f +log_L_Planck18_w0 external_prior.c /^double log_L_Planck18_w0()$/;" f +log_L_SN_WFIRST_w0wa external_prior.c /^double log_L_SN_WFIRST_w0wa()$/;" f +log_L_clphotoz external_prior.c /^double log_L_clphotoz()$/;" f +log_L_clusterMobs external_prior.c /^double log_L_clusterMobs()$/;" f +log_L_ia external_prior.c /^ double log_L_ia()$/;" f +log_L_shear_calib external_prior.c /^double log_L_shear_calib()$/;" f +log_L_wlphotoz external_prior.c /^double log_L_wlphotoz()$/;" f +log_like_f_red external_prior.c /^double log_like_f_red(){ \/\/use f_red in each tomography bin to constrain LF parameters, assuming 10% uncertainty in f_red measurement; evaluated at bin center to avoid cosmology dependence$/;" f +log_like_wrapper like_fourier.c /^double log_like_wrapper(input_cosmo_params ic, input_nuisance_params in)$/;" f +log_multi_like like_fourier.c /^double log_multi_like(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double MGSigma, double MGmu, double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +log_multi_like like_fourier_HOD.c /^double log_multi_like(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double HOD_Mc, double HOD_sigmaM,double HOD_M1,double HOD_M0, double HOD_alpha,double HOD_fc, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +long_vector basics.c /^long *long_vector(long nl, long nh)$/;" f +low basics.c /^ double low;$/;" m struct:__anon4 file: +ls structs.c /^ char ls[8]; \/* Calculate shear-position components *\/$/;" m struct:__anon24 file: +m_Delta halo.c /^double m_Delta(double r, double a){$/;" f +m_lambda structs.c /^ double m_lambda[6];$/;" m struct:input_nuisance_params file: +m_lim structs.c /^ double m_lim;$/;" m struct:__anon13 file: +magnification_Nbin structs.c /^ int magnification_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +magnification_Npowerspectra structs.c /^ int magnification_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +magnification_REDSHIFT_FILE structs.c /^ char magnification_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +magnification_histogram_zbins structs.c /^ int magnification_histogram_zbins;$/;" m struct:__anon12 file: +magnification_photoz structs.c /^ int magnification_photoz;$/;" m struct:__anon12 file: +magnification_zdistrpar_zmax structs.c /^ double magnification_zdistrpar_zmax;$/;" m struct:__anon12 file: +magnification_zdistrpar_zmin structs.c /^ double magnification_zdistrpar_zmin;$/;" m struct:__anon12 file: +magnification_zmax structs.c /^ double magnification_zmax[10]; $/;" m struct:__anon11 file: +magnification_zmin structs.c /^ double magnification_zmin[10];$/;" m struct:__anon11 file: +main compute_covariances_fourier.c /^int main(int argc, char** argv)$/;" f +main compute_covariances_fourier_HOD.c /^int main(int argc, char** argv)$/;" f +main compute_covariances_fourier_HSC.c /^ int main(int argc, char** argv)$/;" f +main examples.c /^int main(void){$/;" f +main like_fourier.c /^ int main(void)$/;" f +main like_fourier_HOD.c /^ int main(void)$/;" f +main tests.c /^int main(){$/;" f +mask init.c /^double mask(int READ, int ci)$/;" f +mask init_basic.c /^double mask(int READ, int ci)$/;" f +mask patch_cov_HOD.py /^mask =np.genfromtxt(maskfile)$/;" v +mask patch_cov_Rmin.py /^mask =np.genfromtxt(maskfile)$/;" v +maskfile patch_cov_HOD.py /^maskfile = '..\/cov\/maskRmin_0.1'$/;" v +maskfile patch_cov_Rmin.py /^maskfile = '..\/cov\/maskRmin_10'$/;" v +mass_norm halo.c /^double mass_norm(double a)$/;" f +mass_norm_integrand halo.c /^double mass_norm_integrand(double n, void * params) \/\/ inner integral$/;" f +massfunc halo.c /^double massfunc(double m, double a){$/;" f +max_g_tomo redshift.c /^double max_g_tomo(int zs){$/;" f +max_g_tomo redshift_spline.c /^double max_g_tomo(int zs){$/;" f +maxarg1 basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +maxarg2 basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +mc_rm redmagic.c /^double mc_rm(double a){$/;" f +medium basics.c /^ double medium;$/;" m struct:__anon4 file: +mmean HOD.c /^double mmean(int nz,double a){$/;" f +mmean_rm redmagic.c /^double mmean_rm(double a){$/;" f +model structs.c /^ char model[256];$/;" m struct:__anon17 file: +model_para_redmagic structs.c /^} model_para_redmagic;$/;" t typeref:struct:__anon16 file: +mu GRS.c /^ double* mu;$/;" m struct:__anon7 file: +mu structs.c /^ double* mu;$/;" m struct:__anon25 file: +n0 structs.c /^ double n0;$/;" m struct:__anon16 file: +n2pt inv_cov.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2pt patch_cov_HOD.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2pt patch_cov_Rmin.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2ptcl inv_cov.py /^n2ptcl=n2pt+ncluster$/;" v +n2ptcl patch_cov_HOD.py /^n2ptcl=n2pt+ncluster$/;" v +n2ptcl patch_cov_Rmin.py /^n2ptcl=n2pt+ncluster$/;" v +n_N200 cluster.c /^double n_N200 (int nz, int nN){$/;" f +n_N200 clusters_DES.c /^double n_N200 (int nz, int nN){$/;" f +n_all_LF IA.c /^double n_all_LF(double mag, double a){$/;" f +n_c HOD.c /^double n_c(double mh, double a, int nz){$/;" f +n_c_Reddick redmagic.c /^double n_c_Reddick(double mh){$/;" f +n_c_rm redmagic.c /^double n_c_rm(double mh){$/;" f +n_c_tab redmagic.c /^double n_c_tab(double mh){$/;" f +n_g GRS.c /^ double n_g[10]; \/\/ in (h\/Mpc)^3$/;" m struct:__anon8 file: +n_gal structs.c /^ double n_gal;\/* galaxy density per arcmin^2 *\/$/;" m struct:__anon13 file: +n_gal_conversion_factor structs.c /^ double n_gal_conversion_factor; \/*factor from n_gal\/arcmin^2 to n_gal\/radian^2: 1.0\/constants.arcmin\/constants.arcmin *\/$/;" m struct:__anon13 file: +n_hod structs.c /^ double n_hod[10];$/;" m struct:__anon15 file: +n_lens structs.c /^ double n_lens;\/* lens galaxy density per arcmin^2 *\/$/;" m struct:__anon13 file: +n_lens structs.c /^ double n_lens[10];$/;" m struct:__anon11 file: +n_mt structs.c /^ double n_mt[10][2]; \/\/ in (h\/Mpc)^3$/;" m struct:__anon25 file: +n_of_z redshift_spline.c /^double n_of_z(double z, int nz){$/;" f +n_s HOD.c /^double n_s(double mh, double a, int nz){$/;" f +n_s structs.c /^ double n_s;$/;" m struct:input_cosmo_params file: +n_s structs.c /^ double n_s;$/;" m struct:input_cosmo_params_mpp file: +n_s_Reddick redmagic.c /^double n_s_Reddick(double mh){$/;" f +n_s_cmv halo.c /^double n_s_cmv (double a){$/;" f +n_s_rm redmagic.c /^double n_s_rm(double mh){$/;" f +n_s_tab redmagic.c /^double n_s_tab(double mh){$/;" f +n_source structs.c /^ double n_source[10];$/;" m struct:__anon11 file: +n_spec structs.c /^ double n_spec; \/* spectral index of initial power spectrum *\/$/;" m struct:__anon10 file: +n_spec structs.c /^ double n_spec; \/* spectral index of initial power spectrum *\/$/;" m struct:__anon22 file: +name structs.c /^ char name[500]; $/;" m struct:__anon13 file: +name structs.c /^ char name[500];$/;" m struct:__anon14 file: +ncl inv_cov.py /^ncl=25$/;" v +ncl patch_cov_HOD.py /^ncl=25$/;" v +ncl patch_cov_Rmin.py /^ncl=25$/;" v +ncl structs.c /^ int ncl;\/* number of ell bins *\/$/;" m struct:__anon24 file: +ncluster inv_cov.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +ncluster patch_cov_HOD.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +ncluster patch_cov_Rmin.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +nclusterN_WL inv_cov.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +nclusterN_WL patch_cov_HOD.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +nclusterN_WL patch_cov_Rmin.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +ndata inv_cov.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ndata patch_cov_HOD.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ndata patch_cov_Rmin.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ng structs.c /^ int ng;\/* ng covariance? *\/$/;" m struct:__anon24 file: +ngal HOD.c /^double ngal(int nz,double a){$/;" f +ngal_rm redmagic.c /^double ngal_rm(double a){$/;" f +nggl inv_cov.py /^nggl = 9$/;" v +nggl patch_cov_HOD.py /^nggl = 24$/;" v +nggl patch_cov_Rmin.py /^nggl = 24$/;" v +ni basics.c /^ int ni ;$/;" m struct:cos file: +nj basics.c /^ int nj ;$/;" m struct:cos file: +nlens inv_cov.py /^nlens = 3$/;" v +nlens patch_cov_HOD.py /^nlens = 4$/;" v +nlens patch_cov_Rmin.py /^nlens = 4$/;" v +nlens redshift.c /^double nlens(int j) \/\/returns n_gal for clustering tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nlens redshift_spline.c /^double nlens(int j) \/\/returns n_gal for clustering tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nonlin_scale cosmo3D.c /^void nonlin_scale(double amp, double *R_NL, double *neff, double *Curv)$/;" f +nonlin_scale cosmo3D_april7.c /^void nonlin_scale(double amp, double *R_NL, double *neff, double *Curv)$/;" f +nonlinear_scale_computation cosmo3D.c /^double nonlinear_scale_computation(double a)$/;" f +nonlinear_scale_computation cosmo3D_april7.c /^double nonlinear_scale_computation(double a)$/;" f +norm_for_zmean redshift_spline.c /^double norm_for_zmean(double z, void *params){$/;" f +norm_z_cluster cluster.c /^double norm_z_cluster(int nz){$/;" f +norm_z_cluster clusters_DES.c /^double norm_z_cluster(int nz){$/;" f +normalization EBfunctions.c /^void normalization(int vartheta_max,int vt_min,double *store)$/;" f +normalization coefficients.c /^void normalization(int vartheta_max,int vt_min,double *store)$/;" f +ns_max_emu cosmo3D.c 25;" d file: +ns_max_emu cosmo3D_april7.c 25;" d file: +ns_min_emu cosmo3D.c 26;" d file: +ns_min_emu cosmo3D_april7.c 26;" d file: +nshear inv_cov.py /^nshear = 15$/;" v +nshear patch_cov_HOD.py /^nshear = 55$/;" v +nshear patch_cov_Rmin.py /^nshear = 55$/;" v +nsource redshift.c /^double nsource(int j) \/\/returns n_gal for shear tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nsource redshift_spline.c /^double nsource(int j) \/\/returns n_gal for shear tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +ntheta structs.c /^ int ntheta;\/* number of theta bins *\/$/;" m struct:__anon24 file: +nu halo.c /^double nu(double m, double a){$/;" f +nuisance structs.c /^nuisancepara nuisance ={.c1rhocrit_ia = 0.0134,$/;" v +nuisancepara structs.c /^nuisancepara;$/;" t typeref:struct:__anon21 file: +nulogm_a1 halo.c /^double nulogm_a1(double lgm,void * params)$/;" f +number_of_cluster_bins init_LSST_SRD.c /^double number_of_cluster_bins(){$/;" f +omb structs.c /^ double omb; \/\/Omega baryon$/;" m struct:__anon10 file: +omb structs.c /^ double omb; \/\/Omega baryon$/;" m struct:__anon22 file: +ombhh_max_emu cosmo3D.c 19;" d file: +ombhh_max_emu cosmo3D_april7.c 19;" d file: +ombhh_min_emu cosmo3D.c 20;" d file: +ombhh_min_emu cosmo3D_april7.c 20;" d file: +omega_a cosmo3D.c /^void omega_a(double aa,double *om_m,double *om_v)$/;" f +omega_a cosmo3D_april7.c /^void omega_a(double aa,double *om_m,double *om_v)$/;" f +omega_b structs.c /^ double omega_b;$/;" m struct:input_cosmo_params file: +omega_b structs.c /^ double omega_b;$/;" m struct:input_cosmo_params_mpp file: +omega_m structs.c /^ double omega_m;$/;" m struct:input_cosmo_params file: +omega_m structs.c /^ double omega_m;$/;" m struct:input_cosmo_params_mpp file: +omega_nuh2 structs.c /^ double omega_nuh2;$/;" m struct:input_cosmo_params_mpp file: +omhh_max_emu cosmo3D.c 17;" d file: +omhh_max_emu cosmo3D_april7.c 17;" d file: +omhh_min_emu cosmo3D.c 18;" d file: +omhh_min_emu cosmo3D_april7.c 18;" d file: +omv_vareos cosmo3D.c /^double omv_vareos(double a)$/;" f +omv_vareos cosmo3D_april7.c /^double omv_vareos(double a)$/;" f +oneplusz0_ia structs.c /^ double oneplusz0_ia; \/\/oneplusz0-ia MegaZ$/;" m struct:__anon21 file: +onuhh_max_emu cosmo3D.c 31;" d file: +onuhh_max_emu cosmo3D_april7.c 31;" d file: +onuhh_min_emu cosmo3D.c 32;" d file: +onuhh_min_emu cosmo3D_april7.c 32;" d file: +outdir structs.c /^ char outdir[200]; \/* output directory *\/$/;" m struct:__anon24 file: +outfile inv_cov.py /^outfile = infile+"_2pt_clusterN_clusterWL_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_2pt_inv" $/;" v +outfile inv_cov.py /^outfile = infile+"_clusterN_clusterWL_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_clusterN_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_clustering_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_ggl_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_shear_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_2pt_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clusterN_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clustering_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_ggl_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_shear_inv"$/;" v +outfile patch_cov_HOD.py /^outfile =outfilebase+"_2pt_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_2pt_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clusterN_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clustering_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_ggl_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_shear_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile =outfilebase+"_2pt_clusterN_clusterWL_inv"$/;" v +outfilebase patch_cov_HOD.py /^outfilebase = '..\/cov\/cov_combi_LSST_HOD_Ntomo10'$/;" v +outfilebase patch_cov_Rmin.py /^outfilebase = '..\/cov\/cov_combi_LSST_Rmin10'$/;" v +p_1h halo.c /^double p_1h(double k, double a)$/;" f +p_2h halo.c /^double p_2h(double k, double a)$/;" f +p_class cosmo3D.c /^double p_class(double k_coverh0,double a, int NL, int *status){$/;" f +p_class cosmo3D_april7.c /^double p_class(double k_coverh0,double a, int NL, int *status){$/;" f +p_lin cosmo3D.c /^double p_lin(double k,double a)$/;" f +p_lin cosmo3D_april7.c /^double p_lin(double k,double a)$/;" f +parameterization structs.c /^ int parameterization; \/\/Zehavi, Reddick, histo$/;" m struct:__anon16 file: +path structs.c /^ char path[200];$/;" m struct:__anon20 file: +pathLensRecNoise structs.c /^ char * pathLensRecNoise; \/\/ path to precomputed noise on reconstructed kappa$/;" m struct:__anon14 file: +pdeltapara structs.c /^}pdeltapara;$/;" t typeref:struct:__anon18 file: +pdeltaparams structs.c /^pdeltapara pdeltaparams = {.runmode = "Halofit", .DIFF_n = 0., .DIFF_A = 0.};$/;" v +pf_histo redshift.c /^double pf_histo(double z, void *params) \/\/return pf(z) based on redshift file with one redshift distribution$/;" f +pf_histo redshift_spline.c /^double pf_histo(double z, void *params) \/\/return pf(z) based on redshift file with one redshift distribution$/;" f +pf_histo_n redshift.c /^double pf_histo_n(double z, void *params) \/\/return pf(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.clustering_Nbin-1][i]$/;" f +pf_histo_n redshift_spline.c /^double pf_histo_n(double z, void *params) \/\/return pf(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.clustering_Nbin-1][i]$/;" f +pf_photoz redshift.c /^double pf_photoz(double zz,int j) \/\/returns n(ztrue, j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +pf_photoz redshift_spline.c /^double pf_photoz(double zz,int j) \/\/returns n(ztrue, j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +pi basics.c /^ double pi; $/;" m struct:__anon3 file: +pi_sqr basics.c /^ double pi_sqr; $/;" m struct:__anon3 file: +pos_pos structs.c /^ int pos_pos;$/;" m struct:__anon9 file: +pow4arg basics.c /^static double pow4arg;$/;" v file: +pre basics.c /^}pre;$/;" t typeref:struct:__anon4 file: +precision basics.c /^pre precision= {$/;" v +precond inv_cov.py /^precond = 1.e-7$/;" v +precond patch_cov_HOD.py /^precond = 1.e-7$/;" v +precond patch_cov_Rmin.py /^precond = 1.e-7$/;" v +print_zdistr examples.c /^void print_zdistr(){$/;" f +prior structs.c /^priorpara prior = {.shear_calibration_m = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}},$/;" v +priorpara structs.c /^}priorpara;$/;" t typeref:struct:__anon22 file: +probes structs.c /^ char probes[500];$/;" m struct:__anon9 file: +project_cov_cgl_N covariances_cluster.c /^double project_cov_cgl_N(double a,void *params)$/;" f +project_cov_cl_N covariances_cluster.c /^double project_cov_cl_N(double a,void *params)$/;" f +project_cov_cl_N_HOD covariances_fourier_HOD.c /^double project_cov_cl_N_HOD(double a,void *params)$/;" f +project_cov_ggl_N covariances_cluster.c /^double project_cov_ggl_N(double a,void *params)$/;" f +project_cov_ggl_N_HOD covariances_fourier_HOD.c /^double project_cov_ggl_N_HOD(double a,void *params)$/;" f +project_cov_shear_N covariances_cluster.c /^double project_cov_shear_N(double a,void *params)$/;" f +project_tri_1h_cov_shear_shear_tomo covariances_wl.c /^double project_tri_1h_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_2h_cov_shear_shear_tomo covariances_wl.c /^double project_tri_2h_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_cgl_cgl covariances_cluster.c /^double project_tri_cgl_cgl(double a,void *params)$/;" f +project_tri_cl_cgl covariances_cluster.c /^double project_tri_cl_cgl(double a,void *params)$/;" f +project_tri_cl_cgl_HOD covariances_fourier_HOD.c /^double project_tri_cl_cgl_HOD(double a,void *params)$/;" f +project_tri_ggl_cgl covariances_cluster.c /^double project_tri_ggl_cgl(double a,void *params)$/;" f +project_tri_ggl_cgl_HOD covariances_fourier_HOD.c /^double project_tri_ggl_cgl_HOD(double a,void *params)$/;" f +project_tri_lin_cov_shear_shear_tomo covariances_wl.c /^double project_tri_lin_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_shear_cgl covariances_cluster.c /^double project_tri_shear_cgl(double a,void *params)$/;" f +r_Delta halo.c /^double r_Delta(double m, double a) \/\/calculate r_Delta in c\/H0 given m in (solar masses\/h)$/;" f +r_s halo.c /^double r_s(double m, double a)$/;" f +radius halo.c /^double radius(double m)$/;" f +rcorr structs.c /^ double rcorr[10];$/;" m struct:__anon15 file: +recompute_DESclusters recompute.c /^int recompute_DESclusters(cosmopara C, nuisancepara N){$/;" f +recompute_Delta recompute.c /^int recompute_Delta(cosmopara C){ \/\/rules for recomputing early time power spectrum Delta_L$/;" f +recompute_IA recompute.c /^int recompute_IA(nuisancepara N){$/;" f +recompute_PkRatio recompute.c /^int recompute_PkRatio(barypara B){$/;" f +recompute_clustering recompute.c /^int recompute_clustering(cosmopara C, galpara G, nuisancepara N, int i, int j){$/;" f +recompute_clusters recompute.c /^int recompute_clusters(cosmopara C, nuisancepara N){$/;" f +recompute_cosmo3D recompute.c /^int recompute_cosmo3D(cosmopara C){$/;" f +recompute_expansion recompute.c /^int recompute_expansion(cosmopara C){ \/\/rules for recomputing growth factor & comoving distance$/;" f +recompute_galaxies recompute.c /^int recompute_galaxies(galpara G, int i){$/;" f +recompute_ggl recompute.c /^int recompute_ggl(cosmopara C, galpara G, nuisancepara N, int i){$/;" f +recompute_ii recompute.c /^int recompute_ii(cosmopara C, nuisancepara N){$/;" f +recompute_shear recompute.c /^int recompute_shear(cosmopara C, nuisancepara N){$/;" f +recompute_zphot_clustering recompute.c /^int recompute_zphot_clustering(nuisancepara N){$/;" f +recompute_zphot_magnification recompute.c /^int recompute_zphot_magnification(nuisancepara N){$/;" f +recompute_zphot_shear recompute.c /^int recompute_zphot_shear(nuisancepara N){$/;" f +redm structs.c /^model_para_redmagic redm;$/;" v +redshift structs.c /^redshiftpara redshift;$/;" v +redshiftpara structs.c /^}redshiftpara;$/;" t typeref:struct:__anon12 file: +relax_shear_priors external_prior.c /^void relax_shear_priors()$/;" f +reset_cov_tables structs.c /^ int reset_cov_tables;$/;" m struct:__anon19 file: +rglob structs.c /^ double rglob;$/;" m struct:__anon19 file: +rho_Delta halo.c /^double rho_Delta(double a) \/\/virial density in solar masses\/h\/(H0\/c)^3$/;" f +rho_crit structs.c /^ double rho_crit; \/* = 3 H_0^2\/(8 pi G), critical comoving density *\/$/;" m struct:__anon10 file: +roots EBfunctions.c /^void roots(int vartheta_max,int vt_min,double store[20][21])$/;" f +roots coefficients.c /^void roots(int vartheta_max,int vt_min,double store[20][21])$/;" f +run_class cosmo3D.c /^int run_class($/;" f +run_class cosmo3D_april7.c /^int run_class($/;" f +run_cov_N_N compute_covariances_fourier.c /^void run_cov_N_N (char *OUTFILE, char *PATH, int nzc1, int nzc2,int start)$/;" f +run_cov_N_N compute_covariances_fourier_HSC.c /^void run_cov_N_N (char *OUTFILE, char *PATH, int nzc1, int nzc2,int start)$/;" f +run_cov_cgl_N compute_covariances_fourier.c /^void run_cov_cgl_N (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int nzc2, int start)$/;" f +run_cov_cgl_N compute_covariances_fourier_HSC.c /^void run_cov_cgl_N (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int nzc2, int start)$/;" f +run_cov_cgl_cgl compute_covariances_fourier.c /^void run_cov_cgl_cgl (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int start)$/;" f +run_cov_cgl_cgl compute_covariances_fourier_HSC.c /^void run_cov_cgl_cgl (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int start)$/;" f +run_cov_cgl_cgl_all compute_covariances_fourier.c /^void run_cov_cgl_cgl_all (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster)$/;" f +run_cov_cgl_cgl_all compute_covariances_fourier_HSC.c /^void run_cov_cgl_cgl_all (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster)$/;" f +run_cov_cl_N compute_covariances_fourier.c /^void run_cov_cl_N (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_N compute_covariances_fourier_HSC.c /^void run_cov_cl_N (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_N_HOD compute_covariances_fourier_HOD.c /^void run_cov_cl_N_HOD (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_cgl compute_covariances_fourier.c /^void run_cov_cl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_cl_cgl compute_covariances_fourier_HSC.c /^void run_cov_cl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_cl_cgl_HOD compute_covariances_fourier_HOD.c /^void run_cov_cl_cgl_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_clustering compute_covariances_fourier.c /^void run_cov_clustering(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering compute_covariances_fourier_HSC.c /^void run_cov_clustering(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl compute_covariances_fourier.c /^void run_cov_clustering_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl compute_covariances_fourier_HSC.c /^void run_cov_clustering_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_shear compute_covariances_fourier.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear compute_covariances_fourier_HSC.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl compute_covariances_fourier.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl compute_covariances_fourier_HSC.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_N compute_covariances_fourier.c /^void run_cov_ggl_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_N compute_covariances_fourier_HSC.c /^void run_cov_ggl_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_N_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_N_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_cgl compute_covariances_fourier.c /^void run_cov_ggl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_cgl compute_covariances_fourier_HSC.c /^void run_cov_ggl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_cgl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_cgl_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_shear compute_covariances_fourier.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear compute_covariances_fourier_HSC.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_shear_N compute_covariances_fourier.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_shear_N compute_covariances_fourier_HSC.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_shear_cgl compute_covariances_fourier.c /^void run_cov_shear_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_shear_cgl compute_covariances_fourier_HSC.c /^void run_cov_shear_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_shear_shear compute_covariances_fourier.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f +run_cov_shear_shear compute_covariances_fourier_HSC.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +runmode structs.c /^ char runmode[300];$/;" m struct:__anon18 file: +s8_max_emu cosmo3D.c 21;" d file: +s8_max_emu cosmo3D_april7.c 21;" d file: +s8_min_emu cosmo3D.c 22;" d file: +s8_min_emu cosmo3D_april7.c 22;" d file: +scatter_lgM_obs cluster.c /^double scatter_lgM_obs(double N200, double a){$/;" f +scatter_lgM_obs clusters_DES.c /^double scatter_lgM_obs(double N200, double a){$/;" f +scatter_lgN200_model_mz cluster.c /^double scatter_lgN200_model_mz(double M, double a){$/;" f +scenario structs.c /^ char scenario[100]; \/\/available options: mb2, illustris, eagle, HzAGN, TNG100, owls_AGN, owls_DBLIMFV1618, owls_NOSN, owls_NOSN_NOZCOOL, owls_NOZCOOL, owls_REF, owls_WDENS, owls_WML1V848, owls_WML4$/;" m struct:__anon26 file: +selection structs.c /^ double selection[10];$/;" m struct:input_nuisance_params_mpp file: +sensitivity structs.c /^ double sensitivity; \/\/ white noise level in muK*rad$/;" m struct:__anon14 file: +set_HOD HOD.c /^void set_HOD(int n){ \/\/n >=0: set HOD parameters in redshift bin n; n = -1: unset HOD parameters (code then uses linear bias + non-linear matter power spectrum instead of halo model)$/;" f +set_HOD_redmagic parameters.c /^void set_HOD_redmagic()$/;" f +set_HOD_redmagic_priors external_prior.c /^void set_HOD_redmagic_priors()$/;" f +set_HOD_rm like_fourier_HOD.c /^int set_HOD_rm(double HOD_Mc, double HOD_sigmaM, double HOD_M1, double HOD_M0, double HOD_alpha, double HOD_fc, double HOD_cg){$/;" f +set_LF_DEEP2 IA.c /^void set_LF_DEEP2(void){$/;" f +set_LF_GAMA IA.c /^void set_LF_GAMA(void){$/;" f +set_b1_priors_mpp priors_mpp.c /^void set_b1_priors_mpp(double b1_min, double b1_max)$/;" f +set_b2_priors_mpp priors_mpp.c /^void set_b2_priors_mpp(double b2_min, double b2_max)$/;" f +set_bary_parameters_to_HzAGN parameters_bary.c /^void set_bary_parameters_to_HzAGN()$/;" f +set_bary_parameters_to_TNG100 parameters_bary.c /^void set_bary_parameters_to_TNG100()$/;" f +set_bary_parameters_to_eagle parameters_bary.c /^void set_bary_parameters_to_eagle()$/;" f +set_bary_parameters_to_illustris parameters_bary.c /^void set_bary_parameters_to_illustris()$/;" f +set_bary_parameters_to_mb2 parameters_bary.c /^void set_bary_parameters_to_mb2()$/;" f +set_bary_parameters_to_owls_AGN parameters_bary.c /^void set_bary_parameters_to_owls_AGN()$/;" f +set_bary_parameters_to_owls_DBLIMFV1618 parameters_bary.c /^void set_bary_parameters_to_owls_DBLIMFV1618()$/;" f +set_bary_parameters_to_owls_NOSN parameters_bary.c /^void set_bary_parameters_to_owls_NOSN()$/;" f +set_bary_parameters_to_owls_NOSN_NOZCOOL parameters_bary.c /^void set_bary_parameters_to_owls_NOSN_NOZCOOL()$/;" f +set_bary_parameters_to_owls_NOZCOOL parameters_bary.c /^void set_bary_parameters_to_owls_NOZCOOL()$/;" f +set_bary_parameters_to_owls_REF parameters_bary.c /^void set_bary_parameters_to_owls_REF()$/;" f +set_bary_parameters_to_owls_WDENS parameters_bary.c /^void set_bary_parameters_to_owls_WDENS()$/;" f +set_bary_parameters_to_owls_WML1V848 parameters_bary.c /^void set_bary_parameters_to_owls_WML1V848()$/;" f +set_bary_parameters_to_owls_WML4 parameters_bary.c /^void set_bary_parameters_to_owls_WML4()$/;" f +set_baryon_priors external_prior.c /^void set_baryon_priors()$/;" f +set_clphotoz_priors_LSST_SRD external_prior.c /^void set_clphotoz_priors_LSST_SRD()$/;" f +set_clphotoz_priors_LSST_gold external_prior.c /^void set_clphotoz_priors_LSST_gold()$/;" f +set_clphotoz_priors_benchmark external_prior.c /^void set_clphotoz_priors_benchmark()$/;" f +set_clphotoz_priors_cmass external_prior.c /^void set_clphotoz_priors_cmass()$/;" f +set_clphotoz_priors_mpp priors_mpp.c /^void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_b_photoz_l){$/;" f +set_clphotoz_priors_redmagic external_prior.c /^void set_clphotoz_priors_redmagic()$/;" f +set_clphotoz_priors_source external_prior.c /^void set_clphotoz_priors_source()$/;" f +set_clusterMobs_priors external_prior.c /^void set_clusterMobs_priors()$/;" f +set_clusters_DES init_basic.c /^void set_clusters_DES(){$/;" f +set_clusters_LSST init_basic.c /^void set_clusters_LSST(){$/;" f +set_cmb_actpol init.c /^void set_cmb_actpol() {$/;" f +set_cmb_actpol init_basic.c /^void set_cmb_actpol() {$/;" f +set_cmb_advact init.c /^void set_cmb_advact() {$/;" f +set_cmb_advact init_basic.c /^void set_cmb_advact() {$/;" f +set_cmb_cmbs4 init.c /^void set_cmb_cmbs4() {$/;" f +set_cmb_cmbs4 init_basic.c /^void set_cmb_cmbs4() {$/;" f +set_cosmological_parameters_to_ parameters.c /^void set_cosmological_parameters_to_(char *cosmofile, int output)$/;" f +set_cosmological_parameters_to_BCC parameters.c /^void set_cosmological_parameters_to_BCC()$/;" f +set_cosmological_parameters_to_CFHTLens_cov parameters.c /^void set_cosmological_parameters_to_CFHTLens_cov()$/;" f +set_cosmological_parameters_to_Coyote parameters.c /^void set_cosmological_parameters_to_Coyote()$/;" f +set_cosmological_parameters_to_Joe parameters.c /^void set_cosmological_parameters_to_Joe()$/;" f +set_cosmological_parameters_to_MICE parameters.c /^void set_cosmological_parameters_to_MICE()$/;" f +set_cosmological_parameters_to_MILLENIUM parameters.c /^void set_cosmological_parameters_to_MILLENIUM()$/;" f +set_cosmological_parameters_to_OWLS parameters.c /^void set_cosmological_parameters_to_OWLS()$/;" f +set_cosmological_parameters_to_Planck_15_TT_TE_EE_lowP parameters.c /^void set_cosmological_parameters_to_Planck_15_TT_TE_EE_lowP()$/;" f +set_cosmological_parameters_to_Planck_WP parameters.c /^void set_cosmological_parameters_to_Planck_WP()$/;" f +set_cosmological_parameters_to_SATO parameters.c /^void set_cosmological_parameters_to_SATO()$/;" f +set_cosmological_parameters_to_WMAP_7years_BAO_SN parameters.c /^void set_cosmological_parameters_to_WMAP_7years_BAO_SN()$/;" f +set_cosmological_parameters_to_chincilla parameters.c /^void set_cosmological_parameters_to_chincilla()$/;" f +set_cosmology_params like_fourier.c /^int set_cosmology_params(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0)$/;" f +set_cosmology_params like_fourier_HOD.c /^int set_cosmology_params(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0)$/;" f +set_cov_parameters_to_ parameters.c /^void set_cov_parameters_to_(char *covparamfile, int output)$/;" f +set_data_cgl like_fourier.c /^void set_data_cgl(double *ell_Cluster, double *data, int start)$/;" f +set_data_cgl like_fourier_HOD.c /^void set_data_cgl(double *ell_Cluster, double *data, int start)$/;" f +set_data_cluster_N like_fourier.c /^void set_data_cluster_N(double *data, int start){$/;" f +set_data_cluster_N like_fourier_HOD.c /^void set_data_cluster_N(double *data, int start){$/;" f +set_data_clustering like_fourier.c /^void set_data_clustering(int Ncl, double *ell, double *data, int start){$/;" f +set_data_clustering_HOD like_fourier_HOD.c /^void set_data_clustering_HOD(int Ncl, double *ell, double *data, int start){$/;" f +set_data_ggl like_fourier.c /^void set_data_ggl(int Ncl, double *ell, double *data, int start)$/;" f +set_data_ggl_HOD like_fourier_HOD.c /^void set_data_ggl_HOD(int Ncl, double *ell, double *data, int start)$/;" f +set_data_shear like_fourier.c /^void set_data_shear(int Ncl, double *ell, double *data, int start)$/;" f +set_data_shear like_fourier_HOD.c /^void set_data_shear(int Ncl, double *ell, double *data, int start)$/;" f +set_equal_tomo_bins init.c /^void set_equal_tomo_bins(int Ntomo)$/;" f +set_equal_tomo_bins init_LSST_SRD.c /^void set_equal_tomo_bins()$/;" f +set_equal_tomo_bins init_basic.c /^void set_equal_tomo_bins()$/;" f +set_galaxies_CMASS init.c /^void set_galaxies_CMASS(double density)$/;" f +set_galaxies_CMASS init_basic.c /^void set_galaxies_CMASS(double density)$/;" f +set_galaxies_DES init.c /^void set_galaxies_DES(double density)$/;" f +set_galaxies_DES init_basic.c /^void set_galaxies_DES(double density)$/;" f +set_galaxies_DES_SV init.c /^void set_galaxies_DES_SV(double density)$/;" f +set_galaxies_DES_SV init_basic.c /^void set_galaxies_DES_SV(double density)$/;" f +set_galaxies_DES_Y1 init.c /^void set_galaxies_DES_Y1(void)$/;" f +set_galaxies_DES_Y1 init_basic.c /^void set_galaxies_DES_Y1(void)$/;" f +set_galaxies_LSST init.c /^void set_galaxies_LSST(double density)$/;" f +set_galaxies_LSST init_basic.c /^void set_galaxies_LSST(double density)$/;" f +set_galaxies_LSST_gold init.c /^void set_galaxies_LSST_gold(double density)$/;" f +set_galaxies_LSST_gold init_basic.c /^void set_galaxies_LSST_gold(double density)$/;" f +set_galaxies_LSST_like init.c /^void set_galaxies_LSST_like(double density)$/;" f +set_galaxies_LSST_like init_basic.c /^void set_galaxies_LSST_like(double density)$/;" f +set_galaxies_benchmark_DES init.c /^void set_galaxies_benchmark_DES()$/;" f +set_galaxies_benchmark_DES init_basic.c /^void set_galaxies_benchmark_DES()$/;" f +set_galaxies_benchmark_LSST init.c /^void set_galaxies_benchmark_LSST()$/;" f +set_galaxies_benchmark_LSST init_basic.c /^void set_galaxies_benchmark_LSST()$/;" f +set_galaxies_source init.c /^void set_galaxies_source(void)$/;" f +set_galaxies_source init_basic.c /^void set_galaxies_source(void)$/;" f +set_ia_priors external_prior.c /^void set_ia_priors()$/;" f +set_ia_priors_mpp priors_mpp.c /^void set_ia_priors_mpp(double A_min, double A_max)$/;" f +set_lin_bias_priors external_prior.c /^void set_lin_bias_priors()$/;" f +set_nuisance_cluster_Mobs like_fourier.c /^int set_nuisance_cluster_Mobs(double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +set_nuisance_cluster_Mobs like_fourier_HOD.c /^int set_nuisance_cluster_Mobs(double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +set_nuisance_clustering_photoz like_fourier.c /^int set_nuisance_clustering_photoz(double CP1,double CP2,double CP3,double CP4,double CP5,double CP6,double CP7,double CP8,double CP9,double CP10,double CPS1)$/;" f +set_nuisance_clustering_photoz like_fourier_HOD.c /^int set_nuisance_clustering_photoz(double CP1,double CP2,double CP3,double CP4,double CP5,double CP6,double CP7,double CP8,double CP9,double CP10,double CPS1)$/;" f +set_nuisance_gbias like_fourier.c /^int set_nuisance_gbias(double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10)$/;" f +set_nuisance_ia like_fourier.c /^int set_nuisance_ia(double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q)$/;" f +set_nuisance_ia like_fourier_HOD.c /^int set_nuisance_ia(double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q)$/;" f +set_nuisance_shear_calib like_fourier.c /^void set_nuisance_shear_calib(double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10)$/;" f +set_nuisance_shear_calib like_fourier_HOD.c /^void set_nuisance_shear_calib(double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10)$/;" f +set_nuisance_shear_photoz like_fourier.c /^int set_nuisance_shear_photoz(double SP1,double SP2,double SP3,double SP4,double SP5,double SP6,double SP7,double SP8,double SP9,double SP10,double SPS1)$/;" f +set_nuisance_shear_photoz like_fourier_HOD.c /^int set_nuisance_shear_photoz(double SP1,double SP2,double SP3,double SP4,double SP5,double SP6,double SP7,double SP8,double SP9,double SP10,double SPS1)$/;" f +set_prior_cosmology external_prior.c /^void set_prior_cosmology()$/;" f +set_shear_priors_mpp priors_mpp.c /^void set_shear_priors_mpp(double *mean_m,double *sigma_m)$/;" f +set_shear_priors_stage3 external_prior.c /^void set_shear_priors_stage3()$/;" f +set_shear_priors_stage4 external_prior.c /^void set_shear_priors_stage4()$/;" f +set_survey_parameters_to_ parameters.c /^void set_survey_parameters_to_(char *surveyfile, int output)$/;" f +set_survey_parameters_to_CFHTLS parameters.c /^void set_survey_parameters_to_CFHTLS()$/;" f +set_survey_parameters_to_DES parameters.c /^void set_survey_parameters_to_DES()$/;" f +set_survey_parameters_to_DES_BCC_noise parameters.c /^void set_survey_parameters_to_DES_BCC_noise()$/;" f +set_survey_parameters_to_DES_BCC_nonoise parameters.c /^void set_survey_parameters_to_DES_BCC_nonoise()$/;" f +set_survey_parameters_to_DES_SV parameters.c /^void set_survey_parameters_to_DES_SV()$/;" f +set_survey_parameters_to_DES_Y1 parameters.c /^void set_survey_parameters_to_DES_Y1()$/;" f +set_survey_parameters_to_Euclid parameters.c /^void set_survey_parameters_to_Euclid()$/;" f +set_survey_parameters_to_HSC parameters.c /^void set_survey_parameters_to_HSC()$/;" f +set_survey_parameters_to_LSST parameters.c /^void set_survey_parameters_to_LSST()$/;" f +set_survey_parameters_to_LSST_Tully_Fisher parameters.c /^void set_survey_parameters_to_LSST_Tully_Fisher()$/;" f +set_survey_parameters_to_WFIRST parameters.c /^void set_survey_parameters_to_WFIRST() \/\/ according to WFIRST AFTA report April 2015$/;" f +set_survey_parameters_to_WFIRST_Tully_Fisher parameters.c /^void set_survey_parameters_to_WFIRST_Tully_Fisher()$/;" f +set_survey_parameters_to_WFIRST_extended parameters.c /^void set_survey_parameters_to_WFIRST_extended()$/;" f +set_survey_parameters_to_largeULDB parameters.c /^void set_survey_parameters_to_largeULDB()$/;" f +set_survey_parameters_to_mediumULDB parameters.c /^void set_survey_parameters_to_mediumULDB()$/;" f +set_survey_parameters_to_smallULDB parameters.c /^void set_survey_parameters_to_smallULDB()$/;" f +set_wlphotoz_priors_SV external_prior.c /^void set_wlphotoz_priors_SV()$/;" f +set_wlphotoz_priors_mpp priors_mpp.c /^void set_wlphotoz_priors_mpp(double *bias_photoz_s,double *sigma_b_photoz_s){$/;" f +set_wlphotoz_priors_stage3 external_prior.c /^void set_wlphotoz_priors_stage3()$/;" f +set_wlphotoz_priors_stage4 external_prior.c /^void set_wlphotoz_priors_stage4()$/;" f +setup_numpy pt.c /^void setup_numpy(){$/;" f +sglob structs.c /^ double sglob;$/;" m struct:__anon19 file: +shear_Nbin structs.c /^ int shear_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +shear_Npowerspectra structs.c /^ int shear_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +shear_REDSHIFT_FILE structs.c /^ char shear_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +shear_calibration_m structs.c /^ double shear_calibration_m[10];$/;" m struct:__anon21 file: +shear_calibration_m structs.c /^ double shear_calibration_m[10][2];$/;" m struct:__anon22 file: +shear_histogram_zbins structs.c /^ int shear_histogram_zbins;$/;" m struct:__anon12 file: +shear_m structs.c /^ double shear_m[10];$/;" m struct:input_nuisance_params file: +shear_m structs.c /^ double shear_m[10];$/;" m struct:input_nuisance_params_mpp file: +shear_photoz structs.c /^ int shear_photoz;$/;" m struct:__anon12 file: +shear_pos structs.c /^ int shear_pos;$/;" m struct:__anon9 file: +shear_shear structs.c /^ int shear_shear;$/;" m struct:__anon9 file: +shear_zdistrpar_zmax structs.c /^ double shear_zdistrpar_zmax;$/;" m struct:__anon12 file: +shear_zdistrpar_zmin structs.c /^ double shear_zdistrpar_zmin;$/;" m struct:__anon12 file: +shear_zmax structs.c /^ double shear_zmax[10]; \/\/ code needs modification if more than 10 zbins$/;" m struct:__anon11 file: +shear_zmin structs.c /^ double shear_zmin[10];$/;" m struct:__anon11 file: +shearcalib structs.c /^ int shearcalib;$/;" m struct:__anon9 file: +sigma BAO.c /^ double sigma[10];$/;" m struct:__anon1 file: +sigma2 halo.c /^double sigma2(double m)$/;" f +sigma2_integrand halo.c /^double sigma2_integrand(double x, void * params) \/\/ inner integral$/;" f +sigma_8 structs.c /^ double sigma_8; \/* power spectrum normalization *\/$/;" m struct:__anon10 file: +sigma_8 structs.c /^ double sigma_8;$/;" m struct:input_cosmo_params file: +sigma_8 structs.c /^ double sigma_8;$/;" m struct:input_cosmo_params_mpp file: +sigma_8 structs.c /^ double sigma_8; \/* power spectrum normalization *\/$/;" m struct:__anon22 file: +sigma_e structs.c /^ double sigma_e;\/* rms inrinsic ellipticity noise*\/$/;" m struct:__anon13 file: +sigma_lgMin structs.c /^ double sigma_lgMin;$/;" m struct:input_HOD_params file: +sigma_p GRS.c /^ double sigma_p[10]; \/\/ in km\/s$/;" m struct:__anon8 file: +sigma_p structs.c /^ double sigma_p; \/\/ in km\/s$/;" m struct:__anon25 file: +sigma_p_fid GRS.c /^ double sigma_p_fid[10]; \/\/ in km\/s, fiducial input values=center for prior calculation$/;" m struct:__anon8 file: +sigma_p_fid_sigma GRS.c /^ double sigma_p_fid_sigma; \/\/ in km\/s, sigma for prior calculation$/;" m struct:__anon8 file: +sigma_r_sqr cosmo3D.c /^double sigma_r_sqr() $/;" f +sigma_r_sqr cosmo3D_april7.c /^double sigma_r_sqr() $/;" f +sigma_z GRS.c /^ double sigma_z[10]; \/\/ fractional accuracy$/;" m struct:__anon8 file: +sigma_z structs.c /^ double sigma_z; \/\/ fractional accuracy$/;" m struct:__anon25 file: +sigma_zphot_clustering redshift.c /^double sigma_zphot_clustering (double z, int nz){$/;" f +sigma_zphot_clustering redshift_spline.c /^double sigma_zphot_clustering (double z, int nz){$/;" f +sigma_zphot_clustering structs.c /^ double sigma_zphot_clustering[10];$/;" m struct:__anon21 file: +sigma_zphot_clustering structs.c /^ double sigma_zphot_clustering[10][2];$/;" m struct:__anon22 file: +sigma_zphot_magnification structs.c /^ double sigma_zphot_magnification[10];$/;" m struct:__anon21 file: +sigma_zphot_magnification structs.c /^ double sigma_zphot_magnification[10][2];$/;" m struct:__anon22 file: +sigma_zphot_shear redshift.c /^double sigma_zphot_shear (double z, int nz){$/;" f +sigma_zphot_shear redshift_spline.c /^double sigma_zphot_shear (double z, int nz){$/;" f +sigma_zphot_shear structs.c /^ double sigma_zphot_shear[10];$/;" m struct:__anon21 file: +sigma_zphot_shear structs.c /^ double sigma_zphot_shear[10][2];$/;" m struct:__anon22 file: +source_z_bias structs.c /^ double source_z_bias[10];$/;" m struct:input_nuisance_params file: +source_z_bias structs.c /^ double source_z_bias[10];$/;" m struct:input_nuisance_params_mpp file: +source_z_s structs.c /^ double source_z_s;$/;" m struct:input_nuisance_params file: +sourcephotoz structs.c /^ char sourcephotoz[256];$/;" m struct:__anon13 file: +spline baryons.c /^ gsl_spline2d *spline;$/;" m struct:__anon2 file: +spline_interpolator baryons.c /^} spline_interpolator;$/;" t typeref:struct:__anon2 file: +sqrarg basics.c /^static double sqrarg;$/;" v file: +ss structs.c /^ char ss[8]; \/* Calculate shear-shear components *\/$/;" m struct:__anon24 file: +sum_variance_healpix covariances_3D.c /^double sum_variance_healpix(double a){$/;" f +sur structs.c /^}sur;$/;" t typeref:struct:__anon13 file: +survey structs.c /^sur survey = {.area_conversion_factor = 60.0*60.0*2.90888208665721580e-4*2.90888208665721580e-4, .n_gal_conversion_factor = 1.0\/2.90888208665721580e-4\/2.90888208665721580e-4,.ggl_overlap_cut = 1.};$/;" v +survey_variance covariances_3D.c /^double survey_variance (double a, double fsky){$/;" f +surveystage structs.c /^ int surveystage;$/;" m struct:__anon13 file: +t_lin covariances_3D.c /^double t_lin(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y, double a)$/;" f +tab_AB structs.c /^ double **tab_AB;$/;" m struct:__anon20 file: +tab_IA structs.c /^ double **tab_IA;$/;" m struct:__anon20 file: +test_kmax redshift.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f +test_kmax redshift_spline.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f +test_zoverlap redshift.c /^int test_zoverlap(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap redshift_spline.c /^int test_zoverlap(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_c redshift.c /^int test_zoverlap_c(int zc, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_c redshift_spline.c /^int test_zoverlap_c(int zc, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_cov redshift.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_cov redshift_spline.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +theta structs.c /^ double *theta;$/;" m struct:__anon9 file: +tmax structs.c /^ double tmax; \/* Theta max (arcmin) *\/$/;" m struct:__anon24 file: +tmin structs.c /^ double tmin; \/* Theta min (arcmin) *\/$/;" m struct:__anon24 file: +tomo structs.c /^tomopara tomo = {.n_source = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},.n_lens = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}};$/;" v +tomopara structs.c /^}tomopara;$/;" t typeref:struct:__anon11 file: +tri_1h covariances_3D.c /^double tri_1h(double k1, double k2, double k3, double k4,double a)$/;" f +tri_1h_cmcm covariances_cluster.c /^double tri_1h_cmcm (double k1, double k2, double a,int nzc,int nN1, int nN2){\/\/cmcm 1-halo term$/;" f +tri_1h_cov covariances_3D.c /^double tri_1h_cov(double k1, double k2, double a){$/;" f +tri_1h_mmcm covariances_cluster.c /^double tri_1h_mmcm(double k1, double k2, double a,int nzc,int nN){ \/\/mmcm 1-halo term$/;" f +tri_2h covariances_3D.c /^double tri_2h (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_13 covariances_3D.c /^double tri_2h_13 (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_13_cov covariances_3D.c /^double tri_2h_13_cov (double k1,double k2,double a){$/;" f +tri_2h_22 covariances_3D.c /^double tri_2h_22 (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_22_cov covariances_3D.c /^double tri_2h_22_cov (double k1, double k2, double a){$/;" f +tri_2h_cov covariances_3D.c /^double tri_2h_cov (double k1,double k2,double a){$/;" f +tri_3h_cov covariances_3D.c /^double tri_3h_cov(double k1, double k2, double a){$/;" f +tri_4h_cov covariances_3D.c /^double tri_4h_cov(double k1, double k2, double a){$/;" f +tri_matter_cov covariances_3D.c /^double tri_matter_cov(double k1, double k2, double a){$/;" f +tri_multih_cov covariances_3D.c /^double tri_multih_cov(double k1, double k2, double a){$/;" f +twopi basics.c /^ double twopi; $/;" m struct:__anon3 file: +twopoint_via_hankel cosmo2D_real.c /^void twopoint_via_hankel(double **xi, double *logthetamin, double *logthetamax, C_tomo_pointer C_tomo, int ni, int nj, int N_Bessel){$/;" f +u_g HOD.c /^double u_g(double k, double m, double a,int nz)\/\/ Fourier transformed normalized galaxy density profile, NFW with rescaled concentraion so far$/;" f +u_g_rm redmagic.c /^double u_g_rm(double k, double m, double a)\/\/ Fourier transformed normalized galaxy density profile, NFW with rescaled concentraion so far$/;" f +u_nfw halo.c /^double u_nfw(double c, double k, double m, double a){$/;" f +u_nfw_c halo.c /^double u_nfw_c(double c,double k, double m, double aa){\/\/ analytic FT of NFW profile, from Cooray & Sheth 01$/;" f +update_PkRatio recompute.c /^void update_PkRatio(barypara *B){$/;" f +update_cosmopara recompute.c /^void update_cosmopara (cosmopara *C){$/;" f +update_galpara recompute.c /^void update_galpara (galpara *G){$/;" f +update_nuisance recompute.c /^void update_nuisance (nuisancepara *N){$/;" f +var GRS.c /^ double* var;$/;" m struct:__anon7 file: +var structs.c /^ double** var;$/;" m struct:__anon25 file: +vt_bin_max basics.c /^ double vt_bin_max;$/;" m struct:cos file: +vt_bin_min basics.c /^ double vt_bin_min;$/;" m struct:cos file: +vt_max basics.c /^ double vt_max;$/;" m struct:cos file: +vt_min basics.c /^ double vt_min;$/;" m struct:cos file: +vtmax structs.c /^ double vtmax;$/;" m struct:__anon9 file: +vtmin structs.c /^ double vtmin;$/;" m struct:__anon9 file: +w0 structs.c /^ double w0; \/\/time dependent Dark energy parametrization zero order$/;" m struct:__anon10 file: +w0 structs.c /^ double w0;$/;" m struct:input_cosmo_params file: +w0 structs.c /^ double w0;$/;" m struct:input_cosmo_params_mpp file: +w0 structs.c /^ double w0; \/\/time dependent Dark energy parametrization zero order$/;" m struct:__anon22 file: +w_clustering_HOD cosmo2D_real.c /^double w_clustering_HOD(double theta, int ni) \/\/ HOD based galaxy clustering 2PCF galaxies in bin ni$/;" f +w_clustering_HOD_RM redmagic_real.c /^double w_clustering_HOD_RM(double theta)$/;" f +w_clustering_HOD_rm redmagic_real.c /^double w_clustering_HOD_rm(double theta){$/;" f +w_clustering_HOD_rm_1h redmagic_real.c /^double w_clustering_HOD_rm_1h(double theta)$/;" f +w_clustering_HOD_rm_max redmagic_real.c /^double w_clustering_HOD_rm_max(double theta){$/;" f +w_clustering_HOD_rm_tomo redmagic_real.c /^double w_clustering_HOD_rm_tomo(double theta, int nz)$/;" f +w_clustering_tomo cosmo2D_real.c /^double w_clustering_tomo(double theta, int ni, int nj) \/\/ galaxy clustering tomography 2PCF galaxies in bins ni, nj$/;" f +w_gamma_t_HOD_tomo cosmo2D_real.c /^double w_gamma_t_HOD_tomo(double theta,int ni, int nj) \/\/G-G lensing with HOD model, lens bin ni, source bin nj$/;" f +w_gamma_t_fullsky cosmo2D_fullsky.c /^double w_gamma_t_fullsky(int nt, int ni, int nj){$/;" f +w_gamma_t_nonLimber cosmo2D_exact.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f +w_gamma_t_nonLimber cosmo2D_exact_fft.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f +w_gamma_t_nonLimber cosmo2D_exact_fft_optimize.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f +w_gamma_t_tomo cosmo2D_real.c /^double w_gamma_t_tomo(double theta,int ni, int nj) \/\/G-G lensing, lens bin ni, source bin nj$/;" f +w_gk_SPT CMBxLSS.c /^double w_gk_SPT(double theta, int ni) \/\/ galaxies (ni) x CMB kappa$/;" f +w_ks_SPT CMBxLSS.c /^double w_ks_SPT(double theta, int ni){ \/\/ CMB kappa x shear (ni)$/;" f +w_mask covariances_real_binned.c /^double w_mask(double theta_min){$/;" f +w_max_emu cosmo3D.c 27;" d file: +w_max_emu cosmo3D_april7.c 27;" d file: +w_min_emu cosmo3D.c 28;" d file: +w_min_emu cosmo3D_april7.c 28;" d file: +w_real redmagic_real.c /^double w_real(double theta){$/;" f +w_tomo_exact cosmo2D_real.c /^double w_tomo_exact(int nt, int ni, int nj){$/;" f +w_tomo_fullsky cosmo2D_fullsky.c /^double w_tomo_fullsky(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft_optimize.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_via_hankel_HOD_rm redmagic_real.c /^void w_via_hankel_HOD_rm(double **xi, double *logthetamin, double *logthetamax)$/;" f +w_via_hankel_HOD_rm_1h redmagic_real.c /^void w_via_hankel_HOD_rm_1h(double **xi, double *logthetamin, double *logthetamax)$/;" f +w_via_hankel_HOD_rm_tomo redmagic_real.c /^void w_via_hankel_HOD_rm_tomo(double **xi, double *logthetamin, double *logthetamax, int nz)$/;" f +wa structs.c /^ double wa; \/\/time dependent Dark energy parametrization first order$/;" m struct:__anon10 file: +wa structs.c /^ double wa;$/;" m struct:input_cosmo_params file: +wa structs.c /^ double wa;$/;" m struct:input_cosmo_params_mpp file: +wa structs.c /^ double wa; \/\/time dependent Dark energy parametrization first order$/;" m struct:__anon22 file: +wa_max_emu cosmo3D.c 29;" d file: +wa_max_emu cosmo3D_april7.c 29;" d file: +wa_min_emu cosmo3D.c 30;" d file: +wa_min_emu cosmo3D_april7.c 30;" d file: +wlphotoz structs.c /^ int wlphotoz;$/;" m struct:__anon9 file: +write_gglensing_zbins redshift.c /^void write_gglensing_zbins(char *surveyname){$/;" f +write_gglensing_zbins redshift_spline.c /^void write_gglensing_zbins(char *surveyname){$/;" f +write_plin pt.c /^void write_plin(char *filebase){$/;" f +xJ2 covariances_real_binned.c /^double xJ2 (double x, void *params){$/;" f +xJ4 covariances_real_binned.c /^double xJ4 (double x, void *params){$/;" f +xacc baryons.c /^ gsl_interp_accel *xacc;$/;" m struct:__anon2 file: +xi_3d_rmax basics.c /^ double xi_3d_rmax;$/;" m struct:__anon5 file: +xi_3d_rmin basics.c /^ double xi_3d_rmin;$/;" m struct:__anon5 file: +xi_gg redmagic_real.c /^double xi_gg (double R_mpc, double a){ \/\/ 3D gg correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_gg_1h redmagic_real.c /^double xi_gg_1h (double R_mpc, double a){ \/\/ 3D gg correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_magnification_magnification_tomo magnification.c /^double xi_magnification_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_nl redmagic_real.c /^double xi_nl (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_nl2 redmagic_real.c /^double xi_nl2 (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_pm_fullsky cosmo2D_fullsky.c /^double xi_pm_fullsky(int pm, int nt, int ni, int nj) \/\/shear tomography correlation functions$/;" f +xi_pm_rebin cosmo2D_real.c /^double xi_pm_rebin(int pm, double thetamin_i, double thetamax_i, int ni,int nj){$/;" f +xi_pm_tomo cosmo2D_real.c /^double xi_pm_tomo(int pm, double theta, int ni, int nj) \/\/shear tomography correlation functions$/;" f +xi_position_magnification_tomo magnification.c /^double xi_position_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_shear_magnification_tomo magnification.c /^double xi_shear_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_via_hankel_magnification_magnification_tomo magnification.c /^void xi_via_hankel_magnification_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_position_magnification_tomo magnification.c /^void xi_via_hankel_position_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_shear_magnification_tomo magnification.c /^void xi_via_hankel_shear_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_theta_max basics.c /^ double xi_via_hankel_theta_max;$/;" m struct:__anon5 file: +xi_via_hankel_theta_min basics.c /^ double xi_via_hankel_theta_min;$/;" m struct:__anon5 file: +xipm_via_hankel cosmo2D_real.c /^void xipm_via_hankel(double **xi, double *logthetamin, double *logthetamax, C_tomo_pointer C_tomo,int ni, int nj)$/;" f +yacc baryons.c /^ gsl_interp_accel *yacc;$/;" m struct:__anon2 file: +z BAO.c /^ double z[10];$/;" m struct:__anon1 file: +z GRS.c /^ double z[10];$/;" m struct:__anon7 file: +z structs.c /^ double z[10];$/;" m struct:__anon25 file: +z_bins structs.c /^ double z_bins[50];$/;" m struct:__anon26 file: +zdistr_cluster cluster.c /^double zdistr_cluster(double z, int nz, int nN){ \/\/simplfied selection function, disregards evolution of N-M relation + mass function within redshift bin$/;" f +zdistr_cluster clusters_DES.c /^double zdistr_cluster(double z, int nz, int nN){ \/\/simplfied selection function, disregards evolution of N-M relation + mass function within redshift bin$/;" f +zdistr_histo_1 redshift.c /^double zdistr_histo_1(double z, void *params) \/\/return nz(z) based on redshift file with one redshift distribution$/;" f +zdistr_histo_1 redshift_spline.c /^double zdistr_histo_1(double z, void *params) \/\/return nz(z) based on redshift file with one redshift distribution$/;" f +zdistr_histo_n redshift.c /^double zdistr_histo_n(double z, void *params) \/\/ return nz(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.shear_Nbin-1][i]$/;" f +zdistr_histo_n redshift_spline.c /^double zdistr_histo_n(double z, void *params) \/\/ return nz(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.shear_Nbin-1][i]$/;" f +zdistr_photoz redshift.c /^double zdistr_photoz(double zz,int j) \/\/returns n(ztrue | j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +zdistr_photoz redshift_spline.c /^double zdistr_photoz(double zz,int j) \/\/returns n(ztrue | j), works only with binned distributions; j>= 0 -> tomography bin j$/;" f +zmean redshift.c /^double zmean(int j){ \/\/mean true redshift of galaxies in tomography bin j$/;" f +zmean redshift_spline.c /^double zmean(int j){ \/\/mean true redshift of galaxies in tomography bin j$/;" f +zmean_source redshift.c /^double zmean_source(int j){ \/\/mean true redshift of source galaxies in tomography bin j$/;" f +zmean_source redshift_spline.c /^double zmean_source(int j){ \/\/mean true redshift of source galaxies in tomography bin j$/;" f From 09487372cbd3b52cf1ff05b4550c0f8ffbc7a699 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Mon, 22 Jun 2020 13:43:43 -0700 Subject: [PATCH 02/24] fix non limber segmentation fault --- theory/cosmo2D_exact_fft.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/theory/cosmo2D_exact_fft.c b/theory/cosmo2D_exact_fft.c index 76b01a35..c4fa3c2d 100644 --- a/theory/cosmo2D_exact_fft.c +++ b/theory/cosmo2D_exact_fft.c @@ -296,6 +296,10 @@ void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double i_block++; L = i_block*Nell_block -1 ; dev = Cl[L]/C_cl_tomo_nointerp((double)L,ni,nj)-1.; + if(L>=LMAX){ + printf("L>Lmax\n"); + break; + } // printf("ni,L,Cl[L],dev=%d %d %e %e\n",ni,L,Cl[L],dev); // printf("i_block: %d\n", i_block); } @@ -935,4 +939,4 @@ double w_gamma_t_nonLimber(int nt, int ni, int nj){ } return w_vec[N_ggl(ni,nj)*like.Ntheta+nt]; } -*/ \ No newline at end of file +*/ From 5d66ed9089a6cf234def5c2c1229adcafecf5c04 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Tue, 23 Jun 2020 11:10:36 -0700 Subject: [PATCH 03/24] add new class and modify halo.c to handle neutrino properly --- theory/.cosmo3D.c.swo | Bin 0 -> 16384 bytes theory/.cosmo3D_new.c.swo | Bin 0 -> 16384 bytes theory/.halo.c.swm | Bin 0 -> 36864 bytes theory/cosmo3D.c | 211 ++++++++++++++++++++++++-------------- theory/halo.c | 4 +- 5 files changed, 138 insertions(+), 77 deletions(-) create mode 100644 theory/.cosmo3D.c.swo create mode 100644 theory/.cosmo3D_new.c.swo create mode 100644 theory/.halo.c.swm diff --git a/theory/.cosmo3D.c.swo b/theory/.cosmo3D.c.swo new file mode 100644 index 0000000000000000000000000000000000000000..c0c455717396ebfdde3a73598f4b2debd7c7797a GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/theory/.halo.c.swm b/theory/.halo.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..8bd47cf5fa1ce855ffa0667edb8cdfcaf9fdccc8 GIT binary patch literal 36864 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 XAqV@*8jOp%9!R=l5Ja=+`_%selj)LF literal 0 HcmV?d00001 diff --git a/theory/cosmo3D.c b/theory/cosmo3D.c index c19b61fd..f84ca9d9 100644 --- a/theory/cosmo3D.c +++ b/theory/cosmo3D.c @@ -533,7 +533,7 @@ double get_class_s8(struct file_content *fc, int *status){ if (k_max_old >0){ sprintf(fc->value[position_kmax],"%e",k_max_old); } - return sp.sigma8; + return *nl.sigma8; } double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){ @@ -562,11 +562,11 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/sp.sigma8,2.); + A_s_guess*=pow(sigma8/(*nl.sigma8),2.); printf("A_s_guess=%e\n",A_s_guess); sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/sp.sigma8,2.); + A_s_guess*=pow(sigma8/(*nl.sigma8),2.); printf("A_s_guess=%e\n",A_s_guess); if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); @@ -606,7 +606,7 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[6],"%e",cosmology.h0); } strcpy(fc->name[7],"Omega_cdm"); - sprintf(fc->value[7],"%e",cosmology.Omega_m-cosmology.Omega_nu-cosmology.omb); + sprintf(fc->value[7],"%e",cosmology.Omega_m-cosmology.Omega_nu-cosmology.omb);//I don't think I need to subtract out the ultrarelativistic neutrinos. I think the energy density of that is not part of omega_m strcpy(fc->name[8],"Omega_b"); sprintf(fc->value[8],"%e",cosmology.omb); @@ -672,99 +672,160 @@ void fprint_parser(struct file_content * fc,int parser_length){ fprintf(stderr, "%d %s %s\n",i, fc->name[i],fc->value[i]); } } -double p_class(double k_coverh0,double a, int NL, int *status){ +double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ static cosmopara C; static double **table_P_L = 0; static double **table_P_NL = 0; + static double **table_P_L_c = 0; + static double **table_P_NL_c = 0; static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; static int class_status = 0; double val,klog; - if (recompute_cosmo3D(C)){ - if (table_P_L ==0){ - table_P_L = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - da = (1. - limits.a_min)/(Ntable.N_a-1.); - logkmin = log(limits.k_min_mpc*cosmology.coverH0); - logkmax = log(limits.k_max_mpc_class*cosmology.coverH0); - dk = (logkmax-logkmin)/(Ntable.N_k_nlin-1.); - } - //allocate CLASS structures - struct background ba; // for cosmological background - struct thermo th; // for thermodynamics - struct perturbs pt; // for source functions - struct transfers tr; // for transfer functions - struct primordial pm; // for primordial spectra - struct spectra sp; // for output spectra - struct nonlinear nl; // for non-linear spectra - struct lensing le; - struct output op; + if (recompute_cosmo3D(C)){ + if (table_P_L ==0){ + table_P_L = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_L_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_NL_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + da = (1. - limits.a_min)/(Ntable.N_a-1.); + logkmin = log(limits.k_min_mpc*cosmology.coverH0); + logkmax = log(limits.k_max_mpc_class*cosmology.coverH0); + dk = (logkmax-logkmin)/(Ntable.N_k_nlin-1.); + } + //allocate CLASS structures + struct background ba; // for cosmological background + struct thermo th; // for thermodynamics + struct perturbs pt; // for source functions + struct transfers tr; // for transfer functions + struct primordial pm; // for primordial spectra + struct spectra sp; // for output spectra + struct nonlinear nl; // for non-linear spectra + struct lensing le; + struct output op; + + ErrorMsg errmsg; // for error messages + + struct file_content fc; + int parser_length = 30; + if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ + fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); + *status = 1; + return 0.; + } + for (int i =0; i < parser_length; i++){ + strcpy(fc.name[i]," "); + strcpy(fc.value[i]," "); + } - ErrorMsg errmsg; // for error messages + *status = fill_class_parameters(&fc,parser_length); - struct file_content fc; - int parser_length = 30; - if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ - fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); - *status = 1; - return 0.; - } - for (int i =0; i < parser_length; i++){ - strcpy(fc.name[i]," "); - strcpy(fc.value[i]," "); - } + if(*status>0) return 1; + *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if(*status>0) { + fprint_parser(&fc,parser_length); + parser_free(&fc); + return 1; + } + parser_free(&fc); + double aa,norm, k_class,Pk,ic, Pk_c; + int i,j,s; + aa = limits.a_min; + if (cosmology.A_s){ + norm = 3.*log(cosmology.h0/cosmology.coverH0); + cosmology.sigma_8 = (*nl.sigma8); + } + else{ + norm = log(pow(cosmology.sigma_8/(*nl.sigma8),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); + } + //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); + if (*status ==0){ + for (i=0; i0) return 1; - *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - if(*status>0) { - fprint_parser(&fc,parser_length); - parser_free(&fc); - return 1; - } - parser_free(&fc); - double aa,norm, k_class,Pk,ic; - int i,j,s; - aa = limits.a_min; - if (cosmology.A_s){ - norm = 3.*log(cosmology.h0/cosmology.coverH0); - cosmology.sigma_8 = sp.sigma8; - } - else{ - norm = log(pow(cosmology.sigma_8/sp.sigma8,2.)*pow(cosmology.h0/cosmology.coverH0,3.)); - } - //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); - if (*status ==0){ + int i,j; + if (a >= 0.99999){a =0.99999;} + if (recompute_cosmo3D(C)){ + update_cosmopara(&C); + if (table_P_Lz!=0) free_double_matrix(table_P_Lz,0, Ntable.N_a-1, 0, Ntable.N_k_lin-1); + table_P_Lz = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_lin-1); + grow0=growfac(1.); + da = (1. - limits.a_min)/(Ntable.N_a-1.); + aa = limits.a_min; for (i=0; i1.0) aa=1.0; + amp=growfac(aa)/grow0; + ampsqr=amp*amp; + + logkmin = log(limits.k_min_mpc); + logkmax = log(limits.k_max_mpc); + dk = (logkmax - logkmin)/(Ntable.N_k_lin-1.); klog = logkmin; - for (j=0; j exp(logkmax)) return 0.0; + klog = log(k/cosmology.coverH0); + val = interpol2d(table_P_Lz, Ntable.N_a, limits.a_min, 1., da, a, Ntable.N_k_lin, logkmin, logkmax, dk, klog, 3.0+cosmology.n_spec, 0.0); + if(isnan(val) || (k==0)) return 0.0; + return 2.0*constants.pi_sqr*exp(val)/k/k/k; } // linear power spectrum routine with k in units H_0/c; used in covariances.c for beat coupling and in halo.c -double p_lin(double k,double a) +double p_lin_cdm_b(double k,double a) { static cosmopara C; static double **table_P_Lz = 0; static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; int status; - if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) return p_class(k,a,0, &status); + if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) return p_class(k,a,0, 1, &status); double amp,ampsqr,grow0,aa,klog,val; @@ -1449,7 +1510,7 @@ double Pdelta(double k_NL,double a) case 1: pdelta=2.0*constants.pi_sqr*Delta_NL_emu(kintern,a)/k_NL/k_NL/k_NL; break; case 2: pdelta=2.0*constants.pi_sqr*Delta_NL_emu_only(kintern,a)/k_NL/k_NL/k_NL; break; case 3: pdelta=p_lin(k_NL,a); break; - case 4: pdelta=p_class(k_NL,a,1, &status); break; + case 4: pdelta=p_class(k_NL,a,1,0,&status); break; case 5: k_nonlin=nonlinear_scale_computation(a); if (kintern<0.01) pdelta=2.0*constants.pi_sqr*Delta_NL_Halofit(kintern,a)/k_NL/k_NL/k_NL; else{ diff --git a/theory/halo.c b/theory/halo.c index 052a89fa..643d1f1e 100644 --- a/theory/halo.c +++ b/theory/halo.c @@ -67,7 +67,7 @@ double r_s(double m, double a) double radius(double m) { - return pow(3./4.*m/(M_PI*cosmology.rho_crit*cosmology.Omega_m),1./3.); + return pow(3./4.*m/(M_PI*cosmology.rho_crit*(cosmology.Omega_m-cosmology.Omega_nu)),1./3.); } /*++++++++++++++++++++++++++++++++++++++++* @@ -79,7 +79,7 @@ double sigma2_integrand(double x, void * params) // inner integral double *array = (double*)params; double k= x/array[0]; //refactored FT of spherical top-hat to avoid numerica divergence of 1/x - return p_lin(k,1.0)*pow(3.*gsl_sf_bessel_j1(x)/array[0],2.)/(array[0]*2.*M_PI*M_PI); + return p_lin_cdm_b(k,1.0)*pow(3.*gsl_sf_bessel_j1(x)/array[0],2.)/(array[0]*2.*M_PI*M_PI); } double sigma2(double m) { From 3497bcc8edd3f359dfaf80d713d2fcb7cb1e57ba Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Tue, 23 Jun 2020 11:10:49 -0700 Subject: [PATCH 04/24] add new class and modify halo.c to handle neutrino properly --- class/.gitignore | 16 + class/CPU | 427 ++ class/CPU.py | 622 +++ class/Makefile | 409 +- class/README.md | 118 + .../Calc2D/CalculationClass.py | 187 + .../Calc2D/DataGeneration.py | 91 + .../Calc2D/DataPropagation.py | 37 + class/RealSpaceInterface/Calc2D/Database.py | 58 + .../Calc2D/TransferFunction.py | 64 + class/RealSpaceInterface/Calc2D/__init__.py | 0 class/RealSpaceInterface/Calc2D/rFourier.py | 21 + class/RealSpaceInterface/README | 18 + .../RealSpaceInterface/colormap_converter.py | 34 + class/RealSpaceInterface/config.py | 23 + class/RealSpaceInterface/requirements.txt | 7 + .../RealSpaceInterface/static/css/custom.css | 189 + .../static/css/timeline.css | 28 + .../static/favicon-16x16.png | Bin 0 -> 1012 bytes .../static/favicon-32x32.png | Bin 0 -> 2688 bytes .../static/fonts/open-iconic/.gitignore | 1 + .../static/fonts/open-iconic/FONT-LICENSE | 86 + .../static/fonts/open-iconic/ICON-LICENSE | 21 + .../static/fonts/open-iconic/README.md | 114 + .../static/fonts/open-iconic/bower.json | 21 + .../font/css/open-iconic-bootstrap.css | 952 ++++ .../font/css/open-iconic-bootstrap.less | 960 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../font/css/open-iconic-bootstrap.scss | 958 ++++ .../font/css/open-iconic-bootstrap.styl | 954 ++++ .../font/css/open-iconic-foundation.css | 1395 +++++ .../font/css/open-iconic-foundation.less | 1397 +++++ .../font/css/open-iconic-foundation.min.css | 1 + .../font/css/open-iconic-foundation.scss | 1398 +++++ .../font/css/open-iconic-foundation.styl | 1392 +++++ .../open-iconic/font/css/open-iconic.css | 511 ++ .../open-iconic/font/css/open-iconic.less | 962 ++++ .../open-iconic/font/css/open-iconic.min.css | 1 + .../open-iconic/font/css/open-iconic.scss | 963 ++++ .../open-iconic/font/css/open-iconic.styl | 733 +++ .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes .../static/fonts/open-iconic/package.json | 36 + .../RealSpaceInterface/static/images/cmap.png | Bin 0 -> 279 bytes .../images/colormaps/Default/default.png | Bin 0 -> 498 bytes .../images/colormaps/Diverging/RdYlBu.png | Bin 0 -> 266 bytes .../images/colormaps/Diverging/Spectral.png | Bin 0 -> 262 bytes .../images/colormaps/Diverging/seismic.png | Bin 0 -> 139 bytes .../images/colormaps/Miscellaneous/jet.png | Bin 0 -> 174 bytes .../images/colormaps/Uniform/inferno.png | Bin 0 -> 297 bytes .../static/images/colormaps/Uniform/magma.png | Bin 0 -> 292 bytes .../images/colormaps/Uniform/plasma.png | Bin 0 -> 278 bytes .../images/colormaps/Uniform/viridis.png | Bin 0 -> 279 bytes class/RealSpaceInterface/static/js/.Rhistory | 0 class/RealSpaceInterface/static/js/RSI.js | 1756 ++++++ class/RealSpaceInterface/static/js/gif.js | 3 + .../static/js/gif.worker.js | 3 + .../static/js/gridLayout.js | 61 + .../static/js/jquery.flot.axislabels.js | 466 ++ .../RealSpaceInterface/static/js/paramGui.js | 397 ++ .../static/js/parameterConfig.js | 153 + .../static/js/playerPanel.js | 190 + .../static/js/redshiftModal.js | 253 + .../static/js/simulation.js | 874 +++ .../static/js/simulationList.js | 337 ++ .../static/js/sockjs.min.js | 28 + .../static/threejs/Detector.js | 66 + .../static/threejs/controls/OrbitControls.js | 706 +++ .../static/threejs/libs/stats.min.js | 6 + .../templates/AlreadySimulatedModal.html | 19 + .../templates/ExceptionModal.html | 18 + .../templates/GifExportModal.html | 81 + .../RealSpaceInterface/templates/Header.html | 183 + .../templates/ImageExportModal.html | 49 + .../templates/ProgressModal.html | 28 + class/RealSpaceInterface/templates/RSI.html | 180 + .../templates/RedshiftModal.html | 57 + .../templates/SimulationList.html | 19 + class/RealSpaceInterface/templates/index.html | 14 + class/RealSpaceInterface/tornadoserver.py | 248 + class/bbn/sBBN_2017.dat | 542 ++ class/bbn/sBBN_2017_marcucci.dat | 543 ++ class/cl_permille.pre | 7 + class/cl_ref.pre | 82 + class/cpp/ClassEngine.cc | 721 +++ class/cpp/ClassEngine.hh | 188 + class/cpp/Engine.cc | 70 + class/cpp/Engine.hh | 76 + class/cpp/Makefile | 28 + class/cpp/README | 11 + class/cpp/testKlass.cc | 71 + class/doc/README | 13 + class/doc/input/chap2.md | 108 + class/doc/input/chap3.md | 517 ++ class/doc/input/doxyconf | 2362 ++++++++ class/doc/input/doxygen.sty | 506 ++ class/doc/input/intro.md | 211 + class/doc/input/latex/class.aux | 19 + class/doc/input/latex/class.log | 336 ++ class/doc/input/latex/class.pdf | Bin 0 -> 191829 bytes class/doc/input/latex/class.synctex.gz | Bin 0 -> 80218 bytes class/doc/input/latex/class.tex | 605 +++ class/doc/input/make1.sh | 5 + class/doc/input/make2.sh | 10 + class/doc/input/mod.md | 40 + class/doc/manual/CLASS_MANUAL.pdf | Bin 0 -> 1555738 bytes class/explanatory.ini | 1020 ++-- class/external_Pk/Pk_example.dat | 1401 +++++ class/external_Pk/Pk_example_w_tensors.dat | 1401 +++++ class/external_Pk/README.md | 101 + class/external_Pk/generate_Pk_example.py | 56 + .../generate_Pk_example_w_tensors.py | 60 + class/hyrec/Alpha_inf.dat | 4000 ++++++++++++++ class/hyrec/Makefile | 19 + class/hyrec/R_inf.dat | 100 + class/hyrec/helium.c | 185 + class/hyrec/helium.h | 14 + class/hyrec/history.c | 469 ++ class/hyrec/history.h | 98 + class/hyrec/hydrogen.c | 834 +++ class/hyrec/hydrogen.h | 116 + class/hyrec/hyrec.c | 76 + class/hyrec/hyrec.h | 14 + class/hyrec/hyrectools.c | 172 + class/hyrec/hyrectools.h | 15 + class/hyrec/input.dat | 8 + class/hyrec/two_photon_tables.dat | 311 ++ class/include/arrays.h | 7 + class/include/background.h | 109 +- class/include/common.h | 450 +- class/include/dei_rkck.h | 0 class/include/evolver_ndf15.h | 0 class/include/evolver_rkck.h | 0 class/include/growTable.h | 0 class/include/hyperspherical.h | 0 class/include/input.h | 30 +- class/include/lensing.h | 0 class/include/nonlinear.h | 680 ++- class/include/output.h | 29 +- class/include/perturbations.h | 256 +- class/include/precision_macros.h | 45 + class/include/precisions.h | 498 ++ class/include/primordial.h | 0 class/include/quadrature.h | 12 + class/include/sparse.h | 0 class/include/spectra.h | 281 +- class/include/thermodynamics.h | 90 +- class/include/transfer.h | 64 +- class/include/trigonometric_integrals.h | 33 + class/main/class.c | 137 +- class/myevolution.dat | 46 + class/myselection.dat | 11 + class/notebooks/Growth_with_w.ipynb | 386 ++ class/notebooks/Thomas_PPF.ipynb | 432 ++ class/notebooks/cl_ST.ipynb | 215 + class/notebooks/cltt_terms.ipynb | 167 + class/notebooks/distances.ipynb | 169 + class/notebooks/many_times.ipynb | 342 ++ class/notebooks/neutrinohierarchy.ipynb | 189 + class/notebooks/one_k.ipynb | 223 + class/notebooks/one_time.ipynb | 321 ++ class/notebooks/thermo.ipynb | 147 + class/notebooks/varying_neff.ipynb | 270 + class/notebooks/varying_pann.ipynb | 225 + class/notebooks/warmup.ipynb | 163 + class/pk_ref.pre | 82 + class/plot_CLASS_output.m | 186 + class/psd_FD_single.dat | 100 + class/python/README | 15 + class/python/autosetup.py | 52 + class/python/cclassy.pxd | 461 ++ class/python/classy.pyx | 2120 ++++++++ class/python/extract_errors.py | 51 + class/python/interface_generator.py | 486 ++ class/python/setup.py | 53 + class/python/test_class.py | 548 ++ class/scripts/cl_ST.py | 159 + class/scripts/cltt_terms.py | 111 + class/scripts/distances.py | 81 + class/scripts/many_times.py | 265 + class/scripts/neutrinohierarchy.py | 118 + class/scripts/one_k.py | 173 + class/scripts/one_time.py | 246 + class/scripts/thermo.py | 83 + class/scripts/varying_neff.py | 203 + class/scripts/varying_pann.py | 174 + class/scripts/warmup.py | 93 + class/source/background.c | 912 +++- class/source/input.c | 1592 ++++-- class/source/lensing.c | 40 +- class/source/nonlinear.c | 4828 +++++++++++++++-- class/source/output.c | 627 +-- class/source/perturbations.c | 2708 +++++++-- class/source/primordial.c | 26 +- class/source/spectra.c | 4076 ++++---------- class/source/thermodynamics.c | 966 +++- class/source/transfer.c | 1164 ++-- class/test/chi2.c | 310 ++ class/test/custom_lensing.c | 247 + class/test/test_2D_quadrature.c | 33 + class/test/test_background.c | 58 + class/test/test_bessel.c | 85 + class/test/test_degeneracy.c | 710 +++ class/test/test_hyperspherical.c | 157 + class/test/test_loops.c | 212 + class/test/test_loops_omp.c | 311 ++ class/test/test_nonlinear.c | 150 + class/test/test_optimize.c | 641 +++ class/test/test_optimize_1D.c | 595 ++ class/test/test_pbc.c | 196 + class/test/test_perturbations.c | 101 + class/test/test_spectra.c | 125 + class/test/test_thermodynamics.c | 134 + class/test/test_timing.c | 155 + class/test/test_transfer.c | 170 + class/test/test_trg.c | 122 + class/tools/arrays.c | 85 +- class/tools/dei_rkck.c | 0 class/tools/evolver_ndf15.c | 10 + class/tools/evolver_rkck.c | 0 class/tools/growTable.c | 0 class/tools/hyperspherical.c | 0 class/tools/parser.c | 41 +- class/tools/quadrature.c | 54 + class/tools/sparse.c | 0 class/tools/trigonometric_integrals.c | 100 + 229 files changed, 65716 insertions(+), 7397 deletions(-) create mode 100644 class/.gitignore create mode 100755 class/CPU create mode 100755 class/CPU.py mode change 100644 => 100755 class/Makefile create mode 100644 class/README.md create mode 100644 class/RealSpaceInterface/Calc2D/CalculationClass.py create mode 100644 class/RealSpaceInterface/Calc2D/DataGeneration.py create mode 100644 class/RealSpaceInterface/Calc2D/DataPropagation.py create mode 100644 class/RealSpaceInterface/Calc2D/Database.py create mode 100644 class/RealSpaceInterface/Calc2D/TransferFunction.py create mode 100644 class/RealSpaceInterface/Calc2D/__init__.py create mode 100644 class/RealSpaceInterface/Calc2D/rFourier.py create mode 100644 class/RealSpaceInterface/README create mode 100644 class/RealSpaceInterface/colormap_converter.py create mode 100644 class/RealSpaceInterface/config.py create mode 100644 class/RealSpaceInterface/requirements.txt create mode 100644 class/RealSpaceInterface/static/css/custom.css create mode 100644 class/RealSpaceInterface/static/css/timeline.css create mode 100644 class/RealSpaceInterface/static/favicon-16x16.png create mode 100644 class/RealSpaceInterface/static/favicon-32x32.png create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/.gitignore create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/FONT-LICENSE create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/ICON-LICENSE create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/README.md create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/bower.json create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.otf create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.svg create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff create mode 100644 class/RealSpaceInterface/static/fonts/open-iconic/package.json create mode 100644 class/RealSpaceInterface/static/images/cmap.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Default/default.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Diverging/seismic.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Miscellaneous/jet.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Uniform/plasma.png create mode 100644 class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png create mode 100644 class/RealSpaceInterface/static/js/.Rhistory create mode 100644 class/RealSpaceInterface/static/js/RSI.js create mode 100644 class/RealSpaceInterface/static/js/gif.js create mode 100644 class/RealSpaceInterface/static/js/gif.worker.js create mode 100644 class/RealSpaceInterface/static/js/gridLayout.js create mode 100644 class/RealSpaceInterface/static/js/jquery.flot.axislabels.js create mode 100644 class/RealSpaceInterface/static/js/paramGui.js create mode 100644 class/RealSpaceInterface/static/js/parameterConfig.js create mode 100644 class/RealSpaceInterface/static/js/playerPanel.js create mode 100644 class/RealSpaceInterface/static/js/redshiftModal.js create mode 100644 class/RealSpaceInterface/static/js/simulation.js create mode 100644 class/RealSpaceInterface/static/js/simulationList.js create mode 100644 class/RealSpaceInterface/static/js/sockjs.min.js create mode 100644 class/RealSpaceInterface/static/threejs/Detector.js create mode 100644 class/RealSpaceInterface/static/threejs/controls/OrbitControls.js create mode 100644 class/RealSpaceInterface/static/threejs/libs/stats.min.js create mode 100644 class/RealSpaceInterface/templates/AlreadySimulatedModal.html create mode 100644 class/RealSpaceInterface/templates/ExceptionModal.html create mode 100644 class/RealSpaceInterface/templates/GifExportModal.html create mode 100644 class/RealSpaceInterface/templates/Header.html create mode 100644 class/RealSpaceInterface/templates/ImageExportModal.html create mode 100644 class/RealSpaceInterface/templates/ProgressModal.html create mode 100644 class/RealSpaceInterface/templates/RSI.html create mode 100644 class/RealSpaceInterface/templates/RedshiftModal.html create mode 100644 class/RealSpaceInterface/templates/SimulationList.html create mode 100644 class/RealSpaceInterface/templates/index.html create mode 100644 class/RealSpaceInterface/tornadoserver.py create mode 100644 class/bbn/sBBN_2017.dat create mode 100644 class/bbn/sBBN_2017_marcucci.dat create mode 100644 class/cl_permille.pre create mode 100644 class/cl_ref.pre create mode 100644 class/cpp/ClassEngine.cc create mode 100644 class/cpp/ClassEngine.hh create mode 100644 class/cpp/Engine.cc create mode 100644 class/cpp/Engine.hh create mode 100644 class/cpp/Makefile create mode 100644 class/cpp/README create mode 100644 class/cpp/testKlass.cc create mode 100644 class/doc/README create mode 100644 class/doc/input/chap2.md create mode 100644 class/doc/input/chap3.md create mode 100644 class/doc/input/doxyconf create mode 100644 class/doc/input/doxygen.sty create mode 100644 class/doc/input/intro.md create mode 100644 class/doc/input/latex/class.aux create mode 100644 class/doc/input/latex/class.log create mode 100644 class/doc/input/latex/class.pdf create mode 100644 class/doc/input/latex/class.synctex.gz create mode 100644 class/doc/input/latex/class.tex create mode 100755 class/doc/input/make1.sh create mode 100755 class/doc/input/make2.sh create mode 100644 class/doc/input/mod.md create mode 100644 class/doc/manual/CLASS_MANUAL.pdf mode change 100644 => 100755 class/explanatory.ini create mode 100644 class/external_Pk/Pk_example.dat create mode 100644 class/external_Pk/Pk_example_w_tensors.dat create mode 100644 class/external_Pk/README.md create mode 100755 class/external_Pk/generate_Pk_example.py create mode 100755 class/external_Pk/generate_Pk_example_w_tensors.py create mode 100644 class/hyrec/Alpha_inf.dat create mode 100644 class/hyrec/Makefile create mode 100644 class/hyrec/R_inf.dat create mode 100644 class/hyrec/helium.c create mode 100644 class/hyrec/helium.h create mode 100644 class/hyrec/history.c create mode 100644 class/hyrec/history.h create mode 100644 class/hyrec/hydrogen.c create mode 100644 class/hyrec/hydrogen.h create mode 100644 class/hyrec/hyrec.c create mode 100644 class/hyrec/hyrec.h create mode 100644 class/hyrec/hyrectools.c create mode 100644 class/hyrec/hyrectools.h create mode 100644 class/hyrec/input.dat create mode 100644 class/hyrec/two_photon_tables.dat mode change 100644 => 100755 class/include/arrays.h mode change 100644 => 100755 class/include/background.h mode change 100644 => 100755 class/include/dei_rkck.h mode change 100644 => 100755 class/include/evolver_ndf15.h mode change 100644 => 100755 class/include/evolver_rkck.h mode change 100644 => 100755 class/include/growTable.h mode change 100644 => 100755 class/include/hyperspherical.h mode change 100644 => 100755 class/include/input.h mode change 100644 => 100755 class/include/lensing.h mode change 100644 => 100755 class/include/nonlinear.h mode change 100644 => 100755 class/include/output.h create mode 100644 class/include/precision_macros.h create mode 100644 class/include/precisions.h mode change 100644 => 100755 class/include/primordial.h mode change 100644 => 100755 class/include/sparse.h mode change 100644 => 100755 class/include/spectra.h mode change 100644 => 100755 class/include/transfer.h create mode 100644 class/include/trigonometric_integrals.h mode change 100644 => 100755 class/main/class.c create mode 100644 class/myevolution.dat create mode 100644 class/myselection.dat create mode 100644 class/notebooks/Growth_with_w.ipynb create mode 100644 class/notebooks/Thomas_PPF.ipynb create mode 100644 class/notebooks/cl_ST.ipynb create mode 100644 class/notebooks/cltt_terms.ipynb create mode 100644 class/notebooks/distances.ipynb create mode 100644 class/notebooks/many_times.ipynb create mode 100644 class/notebooks/neutrinohierarchy.ipynb create mode 100644 class/notebooks/one_k.ipynb create mode 100644 class/notebooks/one_time.ipynb create mode 100644 class/notebooks/thermo.ipynb create mode 100644 class/notebooks/varying_neff.ipynb create mode 100644 class/notebooks/varying_pann.ipynb create mode 100644 class/notebooks/warmup.ipynb create mode 100644 class/pk_ref.pre create mode 100644 class/plot_CLASS_output.m create mode 100644 class/psd_FD_single.dat create mode 100644 class/python/README create mode 100644 class/python/autosetup.py create mode 100644 class/python/cclassy.pxd create mode 100644 class/python/classy.pyx create mode 100644 class/python/extract_errors.py create mode 100644 class/python/interface_generator.py create mode 100644 class/python/setup.py create mode 100644 class/python/test_class.py create mode 100644 class/scripts/cl_ST.py create mode 100644 class/scripts/cltt_terms.py create mode 100644 class/scripts/distances.py create mode 100644 class/scripts/many_times.py create mode 100644 class/scripts/neutrinohierarchy.py create mode 100644 class/scripts/one_k.py create mode 100644 class/scripts/one_time.py create mode 100644 class/scripts/thermo.py create mode 100644 class/scripts/varying_neff.py create mode 100644 class/scripts/varying_pann.py create mode 100644 class/scripts/warmup.py mode change 100644 => 100755 class/source/background.c mode change 100644 => 100755 class/source/lensing.c mode change 100644 => 100755 class/source/nonlinear.c mode change 100644 => 100755 class/source/output.c mode change 100644 => 100755 class/source/primordial.c mode change 100644 => 100755 class/source/spectra.c mode change 100644 => 100755 class/source/transfer.c create mode 100755 class/test/chi2.c create mode 100755 class/test/custom_lensing.c create mode 100644 class/test/test_2D_quadrature.c create mode 100755 class/test/test_background.c create mode 100755 class/test/test_bessel.c create mode 100755 class/test/test_degeneracy.c create mode 100644 class/test/test_hyperspherical.c create mode 100755 class/test/test_loops.c create mode 100644 class/test/test_loops_omp.c create mode 100755 class/test/test_nonlinear.c create mode 100755 class/test/test_optimize.c create mode 100755 class/test/test_optimize_1D.c create mode 100755 class/test/test_pbc.c create mode 100755 class/test/test_perturbations.c create mode 100755 class/test/test_spectra.c create mode 100755 class/test/test_thermodynamics.c create mode 100755 class/test/test_timing.c create mode 100755 class/test/test_transfer.c create mode 100755 class/test/test_trg.c mode change 100644 => 100755 class/tools/arrays.c mode change 100644 => 100755 class/tools/dei_rkck.c mode change 100644 => 100755 class/tools/evolver_ndf15.c mode change 100644 => 100755 class/tools/evolver_rkck.c mode change 100644 => 100755 class/tools/growTable.c mode change 100644 => 100755 class/tools/hyperspherical.c mode change 100644 => 100755 class/tools/sparse.c create mode 100644 class/tools/trigonometric_integrals.c diff --git a/class/.gitignore b/class/.gitignore new file mode 100644 index 00000000..bf5fbf37 --- /dev/null +++ b/class/.gitignore @@ -0,0 +1,16 @@ +output/ +*~ +build/ +class +*.prof +*.ini +libclass.a +*out +python/classy.c +*.pyc +python/build/ +*.dSYM +RealSpaceInterface/cache/ +.DS_Store +doc/manual/html +doc/manual/latex diff --git a/class/CPU b/class/CPU new file mode 100755 index 00000000..d12c8e54 --- /dev/null +++ b/class/CPU @@ -0,0 +1,427 @@ +################################################################### +# +# CPU, a CLASS Plotting Utility +# v1.3 +# Benjamin Audren, 07.11.2011 +# +# This is a small python program aimed to gain time when comparing two +# spectra, i.e. from CAMB and CLASS, or a non-linear spectrum to a +# linear one. It is designed to be used in a command line fashion, not +# being restricted to your CLASS directory, though it recognized mainly +# CLASS output format. Far from perfect, or complete, it could use any +# suggestion for enhancing it, just to avoid losing time on useless +# matters for others. Be warned that, when comparing with other +# format, the following is assumed: there are no empty line (especially +# at the end of file). Gnuplot comment lines (starting with a # are +# allowed). This issue will cause a non-very descriptive error in CPU, +# any suggestion for testing it is welcome. Example of use: To +# superimpose two different spectra and see their global shape : python +# CPU output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat To precisely compare +# the non-linear contribution of one-loop w.r.t. to TRG method: python +# CPU -i output/lcdm_1l_z1_pk.dat output/lcdm_1l_z1_pk_nl_density.dat +# output/lcdm_trg_pk_nl_density.dat The documentation available with +# --help should cover any question. +################################################################### + +from scipy import * +from scipy import interpolate +import numpy as np +import os,sys,string,io,subprocess +import argparse + +# parser for input arguments + +parser = argparse.ArgumentParser(description='CPU, a CLASS Plotting Utility, specify wether you want to superimpose, divide or interpolate different files, and behold!', + epilog='''A standard usage would be, for instance : + python CPU output/test_1l_pk.dat output/test_1l_pk_nl_density.dat -i 0 + python CPU output/wmap_cl.dat output/planck_cl.dat''', +formatter_class=argparse.RawDescriptionHelpFormatter) +parser.add_argument('files', metavar='Files', + type=str, nargs='*', + help='the relative path of the desired file to plot\nfrom the root directory of CLASS') +parser.add_argument('-d, --divide', + dest='merging',action='store_const',const='blend_against',default='blend_together', + help='divide the spectra from different files. The k-values must be strictly identical (default: plot every graph on the same plot)') +parser.add_argument('-i, --interpolate',metavar='index', + nargs='?',dest='interp',const=True,default=False, + help='interpolate the spectra on each set of k-values if different. Use to compare two (or more) graphs with different k-values. If nothing more is specified, it will plot both index in gnuplot. Otherwise, just add -i 0 to plot only the first one.') +parser.add_argument('-t', metavar='pk, cl_lin,etc...', + help='specify the file type (whether pk or cl (if not specified, cl==cl_lin, other choices are cl_log and cl_ll for log linear), only needed if your file name does not already contain one of these keywords...') +parser.add_argument('-colnum',metavar='2, 3, ...', + help='specify the column you want to plot. By default, column is 2: you are plotting TT spectrum') +parser.add_argument('-x, --x11',metavar='gnuplot terminal', + dest='term',action='store_const',const='x11',default='aqua', + help='if your version of gnuplot does not support the aqua terminal, it will pick instead the x11 one, for crappier displays') +parser.add_argument('-p, --print', + dest='printfile',action='store_true',default=False, + help='print the graph directly in a .png file') +parser.add_argument('-r, --repeat', + dest='repeat',action='store_true',default=False, + help='repeat the step for all redshifts with same base name, whatever the desired action') +parser.add_argument('-c, --cleaning',metavar='path', + nargs='?',dest='cleaning',const=True,default=False, + help='remove all .plt files in the current directory (if none specified) : keep your folders clean !') + +# Remove all .plt, interp and divided files generated in output/ +# By default, will clean current directory. + +def clean(path): + pattern1,pattern2,pattern3='.plt','_interp.dat','_divided.dat' + path+="/" + print 'Cleaning {0} directory from .plt files ...'.format(path) + i=0 + for each in os.listdir(path): + if ( (each.rfind(pattern1)!=-1) or (each.rfind(pattern2)!=-1) or (each.rfind(pattern3)!=-1) ): + name= "{0}{1}".format(path,each) + print ' deleting {0}'.format(name) + if os.remove(name)!= None: + break + i+=1 + if i==0: + print ' ==> Already as clean as possible' + else: + print ' ==> Done' + +# Errors ########################### +def error_format(): + print " Hum... have you really provided a .dat file ?" + print " We apologise for the inconvenience, but CPU is exiting now" + exit() + +def error_type(): + print " Spectrum type unrecognized or unsupported yet, sorry!" + print " Please try the -t command in addition to your previous call" + print " We apologise for the inconvenience" + exit() + +def error_number_of_files(): + print " You specified a wrong number of files for the operation you demanded, maybe you do not want to divide only one file, for instance ?" + print " We apologise for the inconvenience" + exit() +#################################### + +# Subfunction called to write on the gnuplot script file the proper file names. + +def printstring(names): + print_file=names[0].rstrip(".dat") + print_file+=".ps" + print_string="set terminal po enhanced color\nset output '{0}'\nreplot".format(print_file) + print '{0} has been generated'.format(print_file) + return print_string + +# Subfunction called to write the most of the gnuplot script file according to options. + +def headers_plot_file(spectrum_type,names,plot_line,term): + tmp=open(names[0],"r") + + # printing option + if ((args.printfile is True) and (plot_line is not False)): + print_string=printstring(names) + else: + print_string="" + + # for interpolation: index choice option + if plot_line is True: + if args.interp is not True: + if args.interp is not False: + index_string=" index {0} ".format(args.interp) + else: + index_string=" " + else: + index_string=" " + + # if args colnum not specified, put it to 2, + if args.colnum is None: + args.colnum=2 + + + if spectrum_type=='cl_lin': + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u 1:{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set xlabel 'l'\nset ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset xr [2:]\nset format y '%.0t*10^{%T}'\nset key right\nset title 'CLASS output'\n"+plot_string+print_string + elif spectrum_type=='cl_log': + for line in tmp: + if line.rfind('multipoles')!=-1: + lmax= line.split(None)[-1] + break + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u 1:{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set logscale x\nset xr [2:{0}]\n".format(lmax)+"set xlabel 'l'\nset format y '%.0t*10^{%T}'\n"+"set ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset key left\nset title 'CLASS output'\n"+plot_string+print_string + elif spectrum_type=='cl_ll': + for line in tmp: + if line.rfind('multipoles')!=-1: + lmax= line.split()[-1] + break + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u (sqrt($1)):{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string=plot_string+"\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set xlabel 'l'\nset ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset key right\nset title 'CLASS output'\nset xtics ('2' (2),'100' (100), '500' (500), '1000' (1000), '1500' (1500), '2000' (2000),'2500' (2500))"+"\nset format y '%.0t*10^{%T}'\n"+"set xr [2:{0}]\n".format(lmax)+plot_string+print_string + elif spectrum_type=='pk': + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}w l,".format(index_string) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string="" + for line in tmp: + if line.rfind('redshift')!=-1: + z= line.split("=")[1] + z= z.rstrip("\n") + break + else: + z= 'I have no idea' + return "set terminal {0} enhanced\n".format(term)+"set logscale\nset xlabel 'k (h/Mpc)'\nset ylabel 'P_k (Mpc/h)^3'\nset key right\nset title 'Power spectrum at z={0}'\n".format(z)+plot_string+print_string + else: + return None + tmp.close() + +# Print all asked files one next to the other (default operation if files with different k values) +def blend_together(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + if gnuplot_file==names[0]: + error_format() + print ' creating {0}'.format(gnuplot_file) + plotfile = open(gnuplot_file, "w") + plotfile.write(headers_plot_file(spectrum_type, names,True,term)) + plotfile.close() + _plot(gnuplot_file) + +# Print all asked files with respect to the same k (or anything) values, all y-data being divided by the y data of the first file. +# Only valid if the k values are exactly the same (values and number of values). +def blend_against(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + data_file=names[0].replace(".dat","_divided.dat") + if gnuplot_file==names[0]: + error_format() + print ' creating {0} and {1}'.format(gnuplot_file,data_file) + string=['' for rows in range(10000)] + imax=0 + datafile=open(data_file,"w") + for name in names: + i=0 + tmp=open(name,"r") + for line in tmp: + if ((line.find('#')==-1) and (line.rfind('000000')==-1)): + string[i]=string[i]+line.rstrip("\n")+"\t" + if i>imax: + imax=i + i+=1 + tmp.close() + for i in range(imax): + datafile.write(string[i]+"\n") + plotfile = open(gnuplot_file,"w") + plotfile.write(headers_plot_file(spectrum_type,names,False,term)) + plot_string='unset logscale\nplot ' + x_base=1 + field_base=2 + field=2 + size=len(names) + for i in range(size): + field+=2 + plot_string+="'{0}' u {1}:(${2}/${3}) w l,".format(data_file,x_base,field,field_base) + plot_string=plot_string.rstrip(',') + plot_string+="\n" + plotfile.write(plot_string) + plotfile.close() + datafile.close() + _plot(gnuplot_file) + +# If k values are different, an interpolation is done and outputs a data file. For a two files case: +# File 1 contains ( k1 | P1(k1) ), File 2 ( k2 | P2(k2) ). The data file created will contain: +# k1 | P1(k1) | P2(k1)_interp +#(blank space for gnuplot using index 0, etc) +# k2 | P1(k2)_interp | P2(k2) +def blend_against_interp(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + data_file=names[0].replace(".dat","_interp.dat") + if gnuplot_file==names[0]: + error_format() + print ' creating {0} and {1}'.format(gnuplot_file,data_file) + plotfile = open(gnuplot_file,"w") + l=0 + jmax=[0 for col in range(10)] + lmax=0 + kmax=10000000 + kmin=0 + spam = np.array([[[0 for col in range(10)] for row in range(10000)] for depth in range(2)],dtype=float) + for name in names: + currentfile = open(name,"r") + print ' reading {0}..'.format(name) + j=0 + for line in currentfile: + if (line.find('#')==-1): + line=line.split() + spam[0,j,l]=float(line[0]) + spam[1,j,l]=float(line[1]) + j+=1 + jmax[l]=j + if spam[0,jmax[l]-1,l]<=kmax: + kmax=spam[0,jmax[l]-1,l] + if spam[0,0,l]>=kmin: + kmin=spam[0,0,l] + l+=1 + currentfile.close() + lmax=l + lower_bound=[0 for col in range(10)] + upper_bound=[0 for col in range(10)] + #determining the upper and lower bound for each file, to only do interpolation + for l in range (lmax): + for j in range (jmax[l]): + if ((spam[0,j,l]=kmin)): + lower_bound[l]=j+1 + if (spam[0,j,l]<=kmax): + upper_bound[l]=j + print ' -> done' + + #creating the new data file + curves=[np.array for row in range(lmax)] + interpolated=[np.array for row in range(lmax)] + for l in range (lmax): + x=spam[0,lower_bound[l]:upper_bound[l],l] + y=spam[1,lower_bound[l]:upper_bound[l],l] + curves[l]=interpolate.splrep(x,y) + + datafile = open(data_file,"w") + for l in range (lmax): + for ll in range(lmax): + if ll==l: + interpolated[ll]=spam[1,lower_bound[l]:upper_bound[l],l] + else: + x2=spam[0,lower_bound[l]:upper_bound[l],l] + interpolated[ll]=interpolate.splev(x2,curves[ll],der=0) + for j in range(upper_bound[l]-lower_bound[l]-2): + data_string='' + for ll in range(lmax): + data_string=data_string+str((interpolated[ll])[j+1])+"\t" + datafile.write(str(spam[0,j+lower_bound[l]+1,l])+"\t"+data_string+"\n") + datafile.write("\n\n") + datafile.close() + + # if index chosen + if args.interp is not True: + index_string_interp=" index {0}".format(args.interp) + else: + index_string_interp="" + plotfile = open(gnuplot_file,"w") + plotfile.write(headers_plot_file(spectrum_type,names,False,term)) + plotfile.write("unset logscale \n") + if args.t in ['cl_log', 'pk']: + plotfile.write("set logscale x\n") + plotfile.write("set xr [{0}:{1}]\n".format(kmin,kmax)) + #plotfile.write("set yr [-0.001:0.005]\n") + plot_string="plot " + for l in range(lmax-1): + plot_string+="'{0}' {1} u 1:(${2}/$2-1) w l,".format(data_file,index_string_interp,l+3) + plot_string=plot_string.rstrip(",") + plot_string=plot_string+"\n" + plotfile.write(plot_string) + + if (args.printfile is True): + plotfile.write(printstring(names)) + + plotfile.close() + _plot(gnuplot_file) + +# Launch session of gnuplot with generated gnuplot script file +def _plot(gnuplot_file): + os.system("gnuplot -persist '{0}'".format(gnuplot_file)) + + +####################################################### +################## MAIN PART ########################## +####################################################### + +print '~~~ CPU, a CLASS Plotting Utility ~~~' +args = parser.parse_args() + +# check if the user want to clean its directory first +if args.cleaning is not False: + if args.cleaning is not True: + clean(args.cleaning) + else: + clean(os.getcwd()) + exit() + +# if there are no argument in the input, print usage +if len(args.files)==0: + parser.print_usage() + exit() + +# if the first file name contains cl or pk, infer the type of desired spectrum +if ((args.files[0].rfind('cl')!=-1) and (args.t is None)): + spectrum_type='cl_lin' + args.t = 'cl_lin' +elif args.files[0].rfind('pk')!=-1: + spectrum_type='pk' + args.t = 'pk' +elif args.t is not None: + spectrum_type=args.t +else: + error_type() + +# repeater +temp_path=args.files[0].split("/") +if len(temp_path)> 1: + path=temp_path[-2] +else: + path=os.getcwd() +list_file=['' for i in range(len(args.files)*10)] +if (temp_path[-1].rfind("z")!=-1 and args.repeat is True): + root_name=temp_path[-1].split("z")[-2] + for any in range (0,len(args.files)): + extension_name=args.files[any].split("/")[-1].split("_")[-1] + i=0 + for each in os.listdir(path): + if (("z" in each) and (each.split("z")[-2]==root_name) and (each.split("_")[-1]==extension_name)): + if len(temp_path)>1: + list_file[any+len(args.files)*i]=temp_path[-2]+"/"+each + else: + list_file[any+len(args.files)*i]=each + i+=1 + if args.repeat is True: + repeat_len=i-1 + else: + repeat_len=0 +else: + for any in range(0,len(args.files)): + list_file[any]=args.files[any] + repeat_len=0 + + +# actual computation +for i in range(0,repeat_len+1): + local_files=['' for k in range(len(args.files))] + for j in range(0,len(args.files)): + local_files[j]=list_file[j+len(args.files)*i] + if args.interp is False: + if args.merging=='blend_together': + blend_together(local_files,spectrum_type,args.term) + else: + if len(local_files)<2: + error_number_of_files() + else: + blend_against(local_files,spectrum_type,args.term) + else: + print '**interpolating (please wait)' + blend_against_interp(local_files,spectrum_type,args.term) + +exit() diff --git a/class/CPU.py b/class/CPU.py new file mode 100755 index 00000000..df6afed0 --- /dev/null +++ b/class/CPU.py @@ -0,0 +1,622 @@ +#!/usr/bin/env python +""" +.. module:: CPU + :synopsis: CPU, a CLASS Plotting Utility +.. moduleauthor:: Benjamin Audren +.. credits:: Benjamin Audren, Jesus Torrado +.. version:: 2.0 + +This is a small python program aimed to gain time when comparing two spectra, +e.g. from CAMB and CLASS, or a non-linear spectrum to a linear one. + +It is designed to be used in a command line fashion, not being restricted to +your CLASS directory, though it recognizes mainly CLASS output format. Far from +perfect, or complete, it could use any suggestion for enhancing it, +just to avoid losing time on useless matters for others. + +Be warned that, when comparing with other format, the following is assumed: +there are no empty line (especially at the end of file). Gnuplot comment lines +(starting with a # are allowed). This issue will cause a non-very descriptive +error in CPU, any suggestion for testing it is welcome. + +Example of use: +- To superimpose two different spectra and see their global shape : +python CPU.py output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat +- To see in details their ratio: +python CPU.py output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat -r + +The "PlanckScale" is taken with permission from Jesus Torrado's: +cosmo_mini_toolbox, available under GPLv3 at +https://github.com/JesusTorrado/cosmo_mini_toolbox + +""" + +from __future__ import unicode_literals, print_function + +# System imports +import os +import sys +import argparse + +# Numerics +import numpy as np +from numpy import ma +from scipy.interpolate import InterpolatedUnivariateSpline +from math import floor + +# Plotting +import matplotlib.pyplot as plt +from matplotlib import scale as mscale +from matplotlib.transforms import Transform +from matplotlib.ticker import FixedLocator + + +def CPU_parser(): + parser = argparse.ArgumentParser( + description=( + 'CPU, a CLASS Plotting Utility, specify wether you want\n' + 'to superimpose, or plot the ratio of different files.'), + epilog=( + 'A standard usage would be, for instance:\n' + 'python CPU.py output/test_pk.dat output/test_pk_nl_density.dat' + ' -r\npython CPU.py output/wmap_cl.dat output/planck_cl.dat'), + formatter_class=argparse.RawDescriptionHelpFormatter) + + parser.add_argument( + 'files', type=str, nargs='*', help='Files to plot') + parser.add_argument('-r', '--ratio', dest='ratio', action='store_true', + help='Plot the ratio of the spectra') + parser.add_argument('-y', '--y-axis', dest='y_axis', nargs='+', + help='specify the fields you want to plot.') + parser.add_argument('-x', '--x-axis', dest='x_axis', type=str, + help='specify the field to be used on the x-axis') + parser.add_argument('--scale', type=str, + choices=['lin', 'loglog', 'loglin', 'george'], + help='Specify the scale to use for the plot') + parser.add_argument('--xlim', dest='xlim', nargs='+', type=float, + default=[], help='Specify the x range') + parser.add_argument('--ylim', dest='ylim', nargs='+', type=float, + default=[], help='Specify the y range') + parser.add_argument( + '-p, --print', + dest='printfile', default='', + help=('print the graph directly in a file. If no name is specified, it' + 'uses the name of the first input file')) + parser.add_argument( + '--repeat', + dest='repeat', action='store_true', default=False, + help='repeat the step for all redshifts with same base name') + return parser + + +def plot_CLASS_output(files, x_axis, y_axis, ratio=False, printing='', + output_name='', extension='', x_variable='', + scale='lin', xlim=[], ylim=[]): + """ + Load the data to numpy arrays, write all the commands for plotting to a + Python script for further refinment, and display them. + + Inspired heavily by the matlab version by Thomas Tram + + Parameters + ---------- + files : list + List of files to plot + x-axis : string + name of the column to use as the x coordinate + y-axis : list, str + List of items to plot, which should match the way they appear in the + file, for instance: ['TT', 'BB] + + Keyword Arguments + ----------------- + ratio : bool + If set to yes, plots the ratio of the files, taking as a reference the + first one + output_name : str + Specify a different name for the produced figure (by default, it takes + the name of the first file, and replace the .dat by .pdf) + extension : str + + """ + # Define the python script name, and the pdf path + python_script_path = os.path.splitext(files[0])[0]+'.py' + + # The variable text will contain all the lines to be printed in the end to + # the python script path, joined with newline characters. Beware of the + # indentation. + text = ['import matplotlib.pyplot as plt', + 'import numpy as np', + 'import itertools', ''] + + # Load all the graphs + data = [] + for data_file in files: + data.append(np.loadtxt(data_file)) + + # Create the full_path_files list, that contains the absolute path, so that + # the future python script can import them directly. + full_path_files = [os.path.abspath(elem) for elem in files] + + text += ['files = %s' % full_path_files] + text += ['data = []', + 'for data_file in files:', + ' data.append(np.loadtxt(data_file))'] + + # Recover the base name of the files, everything before the dot + roots = [elem.split(os.path.sep)[-1].split('.')[0] for elem in files] + text += ['roots = [%s]' % ', '.join(["'%s'" % root for root in roots])] + + # Create the figure and ax objects + fig, ax = plt.subplots() + text += ['', 'fig, ax = plt.subplots()'] + + # if ratio is not set, then simply plot them all + original_y_axis = y_axis + legend = [] + if not ratio: + for index, curve in enumerate(data): + # Recover the number of columns in the first file, as well as their + # title. + num_columns, names, tex_names = extract_headers(files[index]) + + text += ['', 'index, curve = %i, data[%i]' % (index, index)] + # Check if everything is in order + if num_columns == 2: + y_axis = [names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis = [original_y_axis] + else: + y_axis = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis: + selected.extend( + [name for name in names if name.find(elem) != -1 and + name not in selected]) + if not y_axis: + selected = names[1:] + y_axis = selected + + # Decide for the x_axis, by default the index will be set to zero + x_index = 0 + if x_axis: + for index_name, name in enumerate(names): + if name.find(x_axis) != -1: + x_index = index_name + break + # Store to text + text += ['y_axis = %s' % selected] + text += ['tex_names = %s' % [elem for (elem, name) in + zip(tex_names, names) if name in selected]] + text += ["x_axis = '%s'" % tex_names[x_index]] + text += ["ylim = %s" % ylim] + text += ["xlim = %s" % xlim] + + for selec in y_axis: + index_selec = names.index(selec) + plot_line = 'ax.' + if scale == 'lin': + plot_line += 'plot(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.plot(curve[:, x_index], curve[:, index_selec]) + elif scale == 'loglog': + plot_line += 'loglog(curve[:, %i], abs(curve[:, %i]))' % ( + x_index, index_selec) + ax.loglog(curve[:, x_index], abs(curve[:, index_selec])) + elif scale == 'loglin': + plot_line += 'semilogx(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.semilogx(curve[:, x_index], curve[:, index_selec]) + elif scale == 'george': + plot_line += 'plot(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.plot(curve[:, x_index], curve[:, index_selec]) + ax.set_xscale('planck') + text += [plot_line] + + legend.extend([roots[index]+': '+elem for elem in y_axis]) + + ax.legend(legend, loc='best') + text += ["", + "ax.legend([root+': '+elem for (root, elem) in", + " itertools.product(roots, y_axis)], loc='best')", + ""] + else: + ref = data[0] + num_columns, ref_curve_names, ref_tex_names = extract_headers(files[0]) + # Check if everything is in order + if num_columns == 2: + y_axis_ref = [ref_curve_names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis_ref = [original_y_axis] + else: + y_axis_ref = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis_ref: + selected.extend([name for name in ref_curve_names if name.find(elem) != -1 and + name not in selected]) + y_axis_ref = selected + + # Decide for the x_axis, by default the index will be set to zero + x_index_ref = 0 + if x_axis: + for index_name, name in enumerate(ref_curve_names): + if name.find(x_axis) != -1: + x_index_ref = index_name + break + + for idx in range(1, len(data)): + current = data[idx] + num_columns, names, tex_names = extract_headers(files[idx]) + + # Check if everything is in order + if num_columns == 2: + y_axis = [names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis = [original_y_axis] + else: + y_axis = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis: + selected.extend([name for name in names if name.find(elem) != -1 and + name not in selected]) + y_axis = selected + + text += ['y_axis = %s' % selected] + text += ['tex_names = %s' % [elem for (elem, name) in + zip(tex_names, names) if name in selected]] + + # Decide for the x_axis, by default the index will be set to zero + x_index = 0 + if x_axis: + for index_name, name in enumerate(names): + if name.find(x_axis) != -1: + x_index = index_name + break + + text += ["x_axis = '%s'" % tex_names[x_index]] + for selec in y_axis: + # Do the interpolation + axis = ref[:, x_index_ref] + reference = ref[:, ref_curve_names.index(selec)] + #plt.loglog(current[:, x_index], current[:, names.index(selec)]) + #plt.show() + #interpolated = splrep(current[:, x_index], + #current[:, names.index(selec)]) + interpolated = InterpolatedUnivariateSpline(current[:, x_index], + current[:, names.index(selec)]) + if scale == 'lin': + #ax.plot(axis, splev(ref[:, x_index_ref], + #interpolated)/reference-1) + ax.plot(axis, interpolated(ref[:, x_index_ref])/reference-1) + elif scale == 'loglin': + #ax.semilogx(axis, splev(ref[:, x_index_ref], + #interpolated)/reference-1) + ax.semilogx(axis, interpolated(ref[:, x_index_ref])/reference-1) + elif scale == 'loglog': + raise InputError( + "loglog plot is not available for ratios") + + if 'TT' in names: + ax.set_xlabel('$\ell$', fontsize=16) + text += ["ax.set_xlabel('$\ell$', fontsize=16)"] + elif 'P' in names: + ax.set_xlabel('$k$ [$h$/Mpc]', fontsize=16) + text += ["ax.set_xlabel('$k$ [$h$/Mpc]', fontsize=16)"] + else: + ax.set_xlabel(tex_names[x_index], fontsize=16) + text += ["ax.set_xlabel('%s', fontsize=16)" % tex_names[x_index]] + if xlim: + if len(xlim) > 1: + ax.set_xlim(xlim) + text += ["ax.set_xlim(xlim)"] + else: + ax.set_xlim(xlim[0]) + text += ["ax.set_xlim(xlim[0])"] + ax.set_ylim() + text += ["ax.set_ylim()"] + if ylim: + if len(ylim) > 1: + ax.set_ylim(ylim) + text += ["ax.set_ylim(ylim)"] + else: + ax.set_ylim(ylim[0]) + text += ["ax.set_ylim(ylim[0])"] + text += ['plt.show()'] + plt.show() + + # If the use wants to print the figure to a file + if printing: + fig.savefig(printing) + text += ["fig.savefig('%s')" % printing] + + # Write to the python file all the issued commands. You can then reproduce + # the plot by running "python output/something_cl.dat.py" + with open(python_script_path, 'w') as python_script: + print('Creating a python script to reproduce the figure') + print('--> stored in %s' % python_script_path) + python_script.write('\n'.join(text)) + + # If the use wants to print the figure to a file + if printing: + fig.savefig(printing) + + +class FormatError(Exception): + """Format not recognised""" + pass + + +class TypeError(Exception): + """Spectrum type not recognised""" + pass + + +class NumberOfFilesError(Exception): + """Invalid number of files""" + pass + + +class InputError(Exception): + """Incompatible input requirements""" + pass + + +def replace_scale(string): + """ + This assumes that the string starts with "(.)", which will be replaced by + (8piG/3) + + >>> print replace_scale('(.)toto') + >>> '(8\\pi G/3)toto' + """ + string_list = list(string) + string_list.pop(1) + string_list[1:1] = list('8\\pi G/3') + return ''.join(string_list) + + +def process_long_names(long_names): + """ + Given the names extracted from the header, return two arrays, one with the + short version, and one tex version + + >>> names, tex_names = process_long_names(['(.)toto', 'proper time [Gyr]']) + >>> print names + >>> ['toto', 'proper time'] + >>> print tex_names + >>> ['(8\\pi G/3)toto, 'proper time [Gyr]'] + + """ + names = [] + tex_names = [] + # First pass, to remove the leading scales + for name in long_names: + # This can happen in the background file + if name.startswith('(.)', 0): + temp_name = name[3:] + names.append(temp_name) + tex_names.append(replace_scale(name)) + # Otherwise, we simply + else: + names.append(name) + tex_names.append(name) + + # Finally, remove any extra spacing + names = [''.join(elem.split()) for elem in names] + return names, tex_names + + +def extract_headers(header_path): + with open(header_path, 'r') as header_file: + header = [line for line in header_file if line[0] == '#'] + header = header[-1] + + # Count the number of columns in the file, and recover their name. Thanks + # Thomas Tram for the trick + indices = [i+1 for i in range(len(header)) if + header.startswith(':', i)] + num_columns = len(indices) + long_names = [header[indices[i]:indices[(i+1)]-3].strip() if i < num_columns-1 + else header[indices[i]:].strip() + for i in range(num_columns)] + + # Process long_names further to handle special cases, and extract names, + # which will correspond to the tags specified in "y_axis". + names, tex_names = process_long_names(long_names) + + return num_columns, names, tex_names + + +def main(): + print('~~~ Running CPU, a CLASS Plotting Utility ~~~') + parser = CPU_parser() + # Parse the command line arguments + args = parser.parse_args() + + # if there are no argument in the input, print usage + if len(args.files) == 0: + parser.print_usage() + return + + # if the first file name contains cl or pk, infer the type of desired + # spectrum + if not args.y_axis: + if args.files[0].rfind('cl') != -1: + scale = 'loglog' + elif args.files[0].rfind('pk') != -1: + scale = 'loglog' + else: + scale = 'lin' + args.y_axis = [] + else: + scale = '' + if not args.scale: + if scale: + args.scale = scale + else: + args.scale = 'lin' + + # Remove extra spacing in the y_axis list + args.y_axis = [''.join(elem.split()) for elem in args.y_axis] + # If ratio is asked, but only one file was passed in argument, politely + # complain + if args.ratio: + if len(args.files) < 2: + raise NumberOfFilesError( + "If you want me to compute a ratio between two files, " + "I strongly encourage you to give me at least two of them.") + # actual plotting. By default, a simple superposition of the graph is + # performed. If asked to be divided, the ratio is shown - whether a need + # for interpolation arises or not. + if args.ratio and args.scale == 'loglog': + print("Defaulting to loglin scale") + args.scale = 'loglin' + + plot_CLASS_output(args.files, args.x_axis, args.y_axis, + ratio=args.ratio, printing=args.printfile, + scale=args.scale, xlim=args.xlim, ylim=args.ylim) + + +# Helper code from cosmo_mini_toolbox, by Jesus Torrado, available fully at +# https://github.com/JesusTorrado/cosmo_mini_toolbox, to use the log then +# linear scale for the multipole axis when plotting Cl. +nonpos = "mask" +change = 50.0 +factor = 500. + + +def _mask_nonpos(a): + """ + Return a Numpy masked array where all non-positive 1 are + masked. If there are no non-positive, the original array + is returned. + """ + mask = a <= 0.0 + if mask.any(): + return ma.MaskedArray(a, mask=mask) + return a + + +def _clip_smaller_than_one(a): + a[a <= 0.0] = 1e-300 + return a + + +class PlanckScale(mscale.ScaleBase): + """ + Scale used by the Planck collaboration to plot Temperature power spectra: + base-10 logarithmic up to l=50, and linear from there on. + + Care is taken so non-positive values are not plotted. + """ + name = 'planck' + + def __init__(self, axis, **kwargs): + pass + + def set_default_locators_and_formatters(self, axis): + axis.set_major_locator( + FixedLocator( + np.concatenate((np.array([2, 10, change]), + np.arange(500, 2500, 500))))) + axis.set_minor_locator( + FixedLocator( + np.concatenate((np.arange(2, 10), + np.arange(10, 50, 10), + np.arange(floor(change/100), 2500, 100))))) + + def get_transform(self): + """ + Return a :class:`~matplotlib.transforms.Transform` instance + appropriate for the given logarithm base. + """ + return self.PlanckTransform(nonpos) + + def limit_range_for_scale(self, vmin, vmax, minpos): + """ + Limit the domain to positive values. + """ + return (vmin <= 0.0 and minpos or vmin, + vmax <= 0.0 and minpos or vmax) + + class PlanckTransform(Transform): + input_dims = 1 + output_dims = 1 + is_separable = True + has_inverse = True + + def __init__(self, nonpos): + Transform.__init__(self) + if nonpos == 'mask': + self._handle_nonpos = _mask_nonpos + else: + self._handle_nonpos = _clip_nonpos + + def transform_non_affine(self, a): + lower = a[np.where(a<=change)] + greater = a[np.where(a> change)] + if lower.size: + lower = self._handle_nonpos(lower * 10.0)/10.0 + if isinstance(lower, ma.MaskedArray): + lower = ma.log10(lower) + else: + lower = np.log10(lower) + lower = factor*lower + if greater.size: + greater = (factor*np.log10(change) + (greater-change)) + # Only low + if not(greater.size): + return lower + # Only high + if not(lower.size): + return greater + return np.concatenate((lower, greater)) + + def inverted(self): + return PlanckScale.InvertedPlanckTransform() + + class InvertedPlanckTransform(Transform): + input_dims = 1 + output_dims = 1 + is_separable = True + has_inverse = True + + def transform_non_affine(self, a): + lower = a[np.where(a<=factor*np.log10(change))] + greater = a[np.where(a> factor*np.log10(change))] + if lower.size: + if isinstance(lower, ma.MaskedArray): + lower = ma.power(10.0, lower/float(factor)) + else: + lower = np.power(10.0, lower/float(factor)) + if greater.size: + greater = (greater + change - factor*np.log10(change)) + # Only low + if not(greater.size): + return lower + # Only high + if not(lower.size): + return greater + return np.concatenate((lower, greater)) + + def inverted(self): + return PlanckTransform() + +# Finished. Register the scale! +mscale.register_scale(PlanckScale) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/class/Makefile b/class/Makefile old mode 100644 new mode 100755 index 6bddd5a0..8ebcdc57 --- a/class/Makefile +++ b/class/Makefile @@ -1,203 +1,206 @@ -#Some Makefile for CLASS. -#Julien Lesgourgues, 28.11.2011 - -MDIR := $(shell pwd) -WRKDIR = $(MDIR)/build - -.base: - if ! [ -e $(WRKDIR) ]; then mkdir $(WRKDIR) ; mkdir $(WRKDIR)/lib; fi; - touch build/.base - -vpath %.c source:tools:main:test -vpath %.o build -vpath .base build - -######################################################## -###### LINES TO ADAPT TO YOUR PLATEFORM ################ -######################################################## - -# your C compiler: -CC = gcc -#CC = icc -#CC = pgcc - -# your tool for creating static libraries: -AR = ar rv - -# (OPT) your python interpreter -PYTHON = python - -# your optimization flag -OPTFLAG = -O3 -ffast-math #-march=native -#OPTFLAG = -Ofast -ffast-math #-march=native -#OPTFLAG = -fast - -# your openmp flag (comment for compiling without openmp) -# OMPFLAG = -fopenmp -# OMPFLAG = -mp -mp=nonuma -mp=allcores -g -# OMPFLAG = -openmp - -# all other compilation flags -CCFLAG = -g -fPIC -LDFLAG = -g -fPIC - -# leave blank to compile without HyRec, or put path to HyRec directory -# (with no slash at the end: e.g. hyrec or ../hyrec) -#HYREC = hyrec - -######################################################## -###### IN PRINCIPLE THE REST SHOULD BE LEFT UNCHANGED ## -######################################################## - -# pass current working directory to the code -CCFLAG += -D__CLASSDIR__='"$(MDIR)"' - -# where to find include files *.h -INCLUDES = -I../include - -# automatically add external programs if needed. First, initialize to blank. -EXTERNAL = - -# Try to automatically avoid an error 'error: can't combine user with ...' -# which sometimes happens with brewed Python on OSX: -CFGFILE=$(shell $(PYTHON) -c "import sys; print(sys.prefix+'/lib/'+'python'+'.'.join(['%i' % e for e in sys.version_info[0:2]])+'/distutils/distutils.cfg')") -PYTHONPREFIX=$(shell grep -s "prefix" $(CFGFILE)) -ifeq ($(PYTHONPREFIX),) -PYTHONFLAGS=--user -else -PYTHONFLAGS= -endif - -# eventually update flags for including HyRec -ifneq ($(HYREC),) -vpath %.c $(HYREC) -CCFLAG += -DHYREC -#LDFLAGS += -DHYREC -INCLUDES += -I../hyrec -EXTERNAL += hyrectools.o helium.o hydrogen.o history.o -endif - -%.o: %.c .base - cd $(WRKDIR);$(CC) $(OPTFLAG) $(OMPFLAG) $(CCFLAG) $(INCLUDES) -c ../$< -o $*.o - -TOOLS = growTable.o dei_rkck.o sparse.o evolver_rkck.o evolver_ndf15.o arrays.o parser.o quadrature.o hyperspherical.o common.o - -SOURCE = input.o background.o thermodynamics.o perturbations.o primordial.o nonlinear.o transfer.o spectra.o lensing.o - -INPUT = input.o - -PRECISION = precision.o - -BACKGROUND = background.o - -THERMO = thermodynamics.o - -PERTURBATIONS = perturbations.o - -TRANSFER = transfer.o - -PRIMORDIAL = primordial.o - -SPECTRA = spectra.o - -NONLINEAR = nonlinear.o - -LENSING = lensing.o - -OUTPUT = output.o - -CLASS = class.o - -TEST_LOOPS = test_loops.o - -TEST_LOOPS_OMP = test_loops_omp.o - -TEST_DEGENERACY = test_degeneracy.o - -TEST_TRANSFER = test_transfer.o - -TEST_NONLINEAR = test_nonlinear.o - -TEST_PERTURBATIONS = test_perturbations.o - -TEST_THERMODYNAMICS = test_thermodynamics.o - -TEST_BACKGROUND = test_background.o - -TEST_SIGMA = test_sigma.o - -TEST_HYPERSPHERICAL = test_hyperspherical.o - -TEST_STEPHANE = test_stephane.o - -C_TOOLS = $(addprefix tools/, $(addsuffix .c,$(basename $(TOOLS)))) -C_SOURCE = $(addprefix source/, $(addsuffix .c,$(basename $(SOURCE) $(OUTPUT)))) -C_TEST = $(addprefix test/, $(addsuffix .c,$(basename $(TEST_DEGENERACY) $(TEST_LOOPS) $(TEST_TRANSFER) $(TEST_NONLINEAR) $(TEST_PERTURBATIONS) $(TEST_THERMODYNAMICS)))) -C_MAIN = $(addprefix main/, $(addsuffix .c,$(basename $(CLASS)))) -C_ALL = $(C_MAIN) $(C_TOOLS) $(C_SOURCE) -H_ALL = $(addprefix include/, common.h svnversion.h $(addsuffix .h, $(basename $(notdir $(C_ALL))))) -PRE_ALL = cl_ref.pre clt_permille.pre -INI_ALL = explanatory.ini lcdm.ini -MISC_FILES = Makefile CPU psd_FD_single.dat myselection.dat myevolution.dat README bbn/sBBN.dat external_Pk/* cpp -PYTHON_FILES = python/classy.pyx python/setup.py python/cclassy.pxd python/test_class.py - - - - -all: libclass.a -#all: class - -# libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) -# $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) - -libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) - $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) - -class: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o class $(addprefix build/,$(notdir $^)) -lm - -test_sigma: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_SIGMA) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_sigma $(addprefix build/,$(notdir $^)) -lm - -test_loops: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_loops_omp: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS_OMP) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_stephane: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_STEPHANE) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_degeneracy: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_DEGENERACY) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_transfer: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_TRANSFER) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_nonlinear: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_NONLINEAR) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_perturbations: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_PERTURBATIONS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_thermodynamics: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_THERMODYNAMICS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_background: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_BACKGROUND) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_hyperspherical: $(TOOLS) $(TEST_HYPERSPHERICAL) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_hyperspherical $(addprefix build/,$(notdir $^)) -lm - - -tar: $(C_ALL) $(C_TEST) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) - tar czvf class.tar.gz $(C_ALL) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) - -classy: libclass.a python/classy.pyx python/cclassy.pxd - cd python; export CC=$(CC); $(PYTHON) setup.py install $(PYTHONFLAGS) - -clean: .base - rm -rf $(WRKDIR); - rm -f libclass.a - rm -f $(MDIR)/python/classy.c - rm -rf $(MDIR)/python/build +#Some Makefile for CLASS. +#Julien Lesgourgues, 28.11.2011 + +MDIR := $(shell pwd) +WRKDIR = $(MDIR)/build + +.base: + if ! [ -e $(WRKDIR) ]; then mkdir $(WRKDIR) ; mkdir $(WRKDIR)/lib; fi; + touch build/.base + +vpath %.c source:tools:main:test +vpath %.o build +vpath .base build + +######################################################## +###### LINES TO ADAPT TO YOUR PLATEFORM ################ +######################################################## + +# your C compiler: +CC = gcc +#CC = icc +#CC = pgcc + +# your tool for creating static libraries: +AR = ar rv + +# Your python interpreter. +# In order to use Python 3, you can manually +# substitute python3 to python in the line below, or you can simply +# add a compilation option on the terminal command line: +# "PYTHON=python3 make all" (THanks to Marius Millea for pyhton3 +# compatibility) +PYTHON ?= python + +# your optimization flag +OPTFLAG = -O4 -ffast-math #-march=native +#OPTFLAG = -Ofast -ffast-math #-march=native +#OPTFLAG = -fast + +# your openmp flag (comment for compiling without openmp) +#OMPFLAG = -fopenmp +#OMPFLAG = -mp -mp=nonuma -mp=allcores -g +#OMPFLAG = -openmp + +# all other compilation flags +CCFLAG = -g -fPIC +LDFLAG = -g -fPIC + +# leave blank to compile without HyRec, or put path to HyRec directory +# (with no slash at the end: e.g. hyrec or ../hyrec) +HYREC = hyrec + +######################################################## +###### IN PRINCIPLE THE REST SHOULD BE LEFT UNCHANGED ## +######################################################## + +# pass current working directory to the code +CCFLAG += -D__CLASSDIR__='"$(MDIR)"' + +# where to find include files *.h +INCLUDES = -I../include + +# automatically add external programs if needed. First, initialize to blank. +EXTERNAL = + +# eventually update flags for including HyRec +ifneq ($(HYREC),) +vpath %.c $(HYREC) +CCFLAG += -DHYREC +#LDFLAGS += -DHYREC +INCLUDES += -I../hyrec +EXTERNAL += hyrectools.o helium.o hydrogen.o history.o +endif + +%.o: %.c .base + cd $(WRKDIR);$(CC) $(OPTFLAG) $(OMPFLAG) $(CCFLAG) $(INCLUDES) -c ../$< -o $*.o + +TOOLS = growTable.o dei_rkck.o sparse.o evolver_rkck.o evolver_ndf15.o arrays.o parser.o quadrature.o hyperspherical.o common.o trigonometric_integrals.o + +SOURCE = input.o background.o thermodynamics.o perturbations.o primordial.o nonlinear.o transfer.o spectra.o lensing.o + +INPUT = input.o + +PRECISION = precision.o + +BACKGROUND = background.o + +THERMO = thermodynamics.o + +PERTURBATIONS = perturbations.o + +TRANSFER = transfer.o + +PRIMORDIAL = primordial.o + +SPECTRA = spectra.o + +NONLINEAR = nonlinear.o + +LENSING = lensing.o + +OUTPUT = output.o + +CLASS = class.o + +TEST_LOOPS = test_loops.o + +TEST_LOOPS_OMP = test_loops_omp.o + +TEST_DEGENERACY = test_degeneracy.o + +TEST_SPECTRA = test_spectra.o + +TEST_TRANSFER = test_transfer.o + +TEST_NONLINEAR = test_nonlinear.o + +TEST_PERTURBATIONS = test_perturbations.o + +TEST_THERMODYNAMICS = test_thermodynamics.o + +TEST_BACKGROUND = test_background.o + +TEST_SIGMA = test_sigma.o + +TEST_HYPERSPHERICAL = test_hyperspherical.o + +TEST_STEPHANE = test_stephane.o + +C_TOOLS = $(addprefix tools/, $(addsuffix .c,$(basename $(TOOLS)))) +C_SOURCE = $(addprefix source/, $(addsuffix .c,$(basename $(SOURCE) $(OUTPUT)))) +C_TEST = $(addprefix test/, $(addsuffix .c,$(basename $(TEST_DEGENERACY) $(TEST_LOOPS) $(TEST_TRANSFER) $(TEST_NONLINEAR) $(TEST_PERTURBATIONS) $(TEST_THERMODYNAMICS)))) +C_MAIN = $(addprefix main/, $(addsuffix .c,$(basename $(CLASS)))) +C_ALL = $(C_MAIN) $(C_TOOLS) $(C_SOURCE) +H_ALL = $(addprefix include/, common.h svnversion.h $(addsuffix .h, $(basename $(notdir $(C_ALL))))) +PRE_ALL = cl_ref.pre clt_permille.pre +INI_ALL = explanatory.ini lcdm.ini +MISC_FILES = Makefile CPU psd_FD_single.dat myselection.dat myevolution.dat README bbn/sBBN.dat external_Pk/* cpp +PYTHON_FILES = python/classy.pyx python/setup.py python/cclassy.pxd python/test_class.py + +all: libclass.a + +#libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) +# $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) +libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) + + + +class: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o class $(addprefix build/,$(notdir $^)) -lm + +test_sigma: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_SIGMA) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_sigma $(addprefix build/,$(notdir $^)) -lm + +test_loops: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_loops_omp: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS_OMP) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_stephane: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_STEPHANE) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_degeneracy: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_DEGENERACY) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_spectra: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_SPECTRA) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_transfer: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_TRANSFER) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_nonlinear: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_NONLINEAR) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_perturbations: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_PERTURBATIONS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_thermodynamics: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_THERMODYNAMICS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_background: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_BACKGROUND) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_hyperspherical: $(TOOLS) $(TEST_HYPERSPHERICAL) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_hyperspherical $(addprefix build/,$(notdir $^)) -lm + + +tar: $(C_ALL) $(C_TEST) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + tar czvf class.tar.gz $(C_ALL) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + +classy: libclass.a python/classy.pyx python/cclassy.pxd +ifdef OMPFLAG + cp python/setup.py python/autosetup.py +else + grep -v "lgomp" python/setup.py > python/autosetup.py +endif + cd python; export CC=$(CC); $(PYTHON) autosetup.py install || $(PYTHON) autosetup.py install --user + rm python/autosetup.py + +clean: .base + rm -rf $(WRKDIR); + rm -f libclass.a + rm -f $(MDIR)/python/classy.c + rm -rf $(MDIR)/python/build diff --git a/class/README.md b/class/README.md new file mode 100644 index 00000000..0307968e --- /dev/null +++ b/class/README.md @@ -0,0 +1,118 @@ +CLASS: Cosmic Linear Anisotropy Solving System {#mainpage} +============================================== + +Authors: Julien Lesgourgues and Thomas Tram + +with several major inputs from other people, especially Benjamin +Audren, Simon Prunet, Jesus Torrado, Miguel Zumalacarregui, Francesco +Montanari, etc. + +For download and information, see http://class-code.net + + +Compiling CLASS and getting started +----------------------------------- + +(the information below can also be found on the webpage, just below +the download button) + +Download the code from the webpage and unpack the archive (tar -zxvf +class_vx.y.z.tar.gz), or clone it from +https://github.com/lesgourg/class_public. Go to the class directory +(cd class/ or class_public/ or class_vx.y.z/) and compile (make clean; +make class). You can usually speed up compilation with the option -j: +make -j class. If the first compilation attempt fails, you may need to +open the Makefile and adapt the name of the compiler (default: gcc), +of the optimization flag (default: -O4 -ffast-math) and of the OpenMP +flag (default: -fopenmp; this flag is facultative, you are free to +compile without OpenMP if you don't want parallel execution; note that +you need the version 4.2 or higher of gcc to be able to compile with +-fopenmp). Many more details on the CLASS compilation are given on the +wiki page + +https://github.com/lesgourg/class_public/wiki/Installation + +(in particular, for compiling on Mac >= 10.9 despite of the clang +incompatibility with OpenMP). + +To check that the code runs, type: + + ./class explanatory.ini + +The explanatory.ini file is THE reference input file, containing and +explaining the use of all possible input parameters. We recommend to +read it, to keep it unchanged (for future reference), and to create +for your own purposes some shorter input files, containing only the +input lines which are useful for you. Input files must have a *.ini +extension. + +If you want to play with the precision/speed of the code, you can use +one of the provided precision files (e.g. cl_permille.pre) or modify +one of them, and run with two input files, for instance: + + ./class test.ini cl_permille.pre + +The files *.pre are suppposed to specify the precision parameters for +which you don't want to keep default values. If you find it more +convenient, you can pass these precision parameter values in your *.ini +file instead of an additional *.pre file. + +The automatically-generated documentation is located in + + doc/manual/html/index.html + doc/manual/CLASS_manual.pdf + +On top of that, if you wish to modify the code, you will find lots of +comments directly in the files. + +Python +------ + +To use CLASS from python, or ipython notebooks, or from the Monte +Python parameter extraction code, you need to compile not only the +code, but also its python wrapper. This can be done by typing just +'make' instead of 'make class' (or for speeding up: 'make -j'). More +details on the wrapper and its compilation are found on the wiki page + +https://github.com/lesgourg/class_public/wiki + +Plotting utility +---------------- + +Since version 2.3, the package includes an improved plotting script +called CPU.py (Class Plotting Utility), written by Benjamin Audren and +Jesus Torrado. It can plot the Cl's, the P(k) or any other CLASS +output, for one or several models, as well as their ratio or percentage +difference. The syntax and list of available options is obtained by +typing 'pyhton CPU.py -h'. There is a similar script for MATLAB, +written by Thomas Tram. To use it, once in MATLAB, type 'help +plot_CLASS_output.m' + +Developing the code +-------------------- + +If you want to develop the code, we suggest that you download it from +the github webpage + +https://github.com/lesgourg/class_public + +rather than from class-code.net. Then you will enjoy all the feature +of git repositories. You can even develop your own branch and get it +merged to the public distribution. For related instructions, check + +https://github.com/lesgourg/class_public/wiki/Public-Contributing + +Using the code +-------------- + +You can use CLASS freely, provided that in your publications, you cite +at least the paper `CLASS II: Approximation schemes `. Feel free to cite more CLASS papers! + +Support +------- + +To get support, please open a new issue on the + +https://github.com/lesgourg/class_public + +webpage! diff --git a/class/RealSpaceInterface/Calc2D/CalculationClass.py b/class/RealSpaceInterface/Calc2D/CalculationClass.py new file mode 100644 index 00000000..0a6b5bb4 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/CalculationClass.py @@ -0,0 +1,187 @@ +import os +import logging + +import cv2 +import numpy as np + +from classy import Class + +from Calc2D.TransferFunction import ComputeTransferFunctionList +from Calc2D.DataGeneration import GenerateGaussianData, GenerateSIData +from Calc2D.DataPropagation import PropagateDatawithList +from Calc2D.rFourier import * +from Calc2D.Database import Database +from collections import namedtuple + +import config + +ClSpectrum = namedtuple("Cls", ["l", "tCl"]) +PkSpectrum = namedtuple("Pkh", ["kh", "Pkh"]) + +def normalize(real): + """ + Given the `real` data, i.e. either a 2d array or a flattened 1d array + of the relative density perturbations, normalize its values as follows: + + The client expects the values to be in the interval of [-1, 1]. + Take a symmetric interval around a `real` value of 0 and linearly + map it to the required interval [-1, 1]. + """ + minimum, maximum = real.min(), real.max() + bound = max(abs(maximum), abs(minimum)) + result = real / bound + return result + +class Calculation(object): + def __init__(self, + kbins, + resolution = 200, + gauge="newtonian", + kperdecade=200, + P_k_max=100, + evolver=1): + # also sets `endshape` through setter + self.resolution = resolution + self.gauge = gauge + self.evolver = evolver + self.P_k_max = P_k_max + self.kperdecade = kperdecade + + self.redshift = None # to be set later + self.size = None # to be set later + + self.krange = np.logspace(-4, 1, kbins) + + @property + def resolution(self): + return self._resolution + + @resolution.setter + def resolution(self, resolution): + self._resolution = resolution + self.endshape = (resolution, resolution) + + def getData(self, redshiftindex): + FValuenew = PropagateDatawithList( + k=self.k, + FValue=self.FValue, + zredindex=redshiftindex, + transferFunctionlist=self.TransferFunctionList) + + Valuenew = dict() + FValue_abs = np.abs(self.FValue) + _min, _max = FValue_abs.min(), FValue_abs.max() + dimensions = (self.endshape[0] / 2, self.endshape[1]) + for quantity, FT in FValuenew.items(): + FT_abs = np.abs(FT) + FT_normalized = cv2.resize(FT_abs, dimensions).ravel() + FT_normalized = (FT_normalized - _min) / (_max - _min) + real = realInverseFourier(FT.reshape(self.FValue.shape)) + # real = cv2.resize(real, self.endshape).ravel() + real = real.ravel() + + minimum, maximum = real.min(), real.max() + Valuenew[quantity] = normalize(real) + + return Valuenew, FValuenew, (minimum, maximum) + + + def getInitialData(self): + # for odd values of self._resolution, this is necessary + Value = cv2.resize(realInverseFourier(self.FValue), self.endshape) + + minimum, maximum = Value.min(), Value.max() + Value = normalize(Value) + + assert Value.size == self.resolution ** 2 + + return Value.ravel(), cv2.resize( + (np.abs(self.FValue) - np.abs(self.FValue).min()) / + (np.abs(self.FValue).max() - np.abs(self.FValue).min()), + (self.endshape[0] / 2, self.endshape[1])).ravel(), (minimum, + maximum) + + def getTransferData(self, redshiftindex): + return {field: transfer_function[redshiftindex](self.krange) for field, transfer_function in self.TransferFunctionList.items()}, self.krange + + def setCosmologialParameters(self, cosmologicalParameters): + self.cosmologicalParameters = cosmologicalParameters + + # Calculate transfer functions + self.TransferFunctionList = ComputeTransferFunctionList(self.cosmologicalParameters, self.redshift) + # Calculate Cl's + self.tCl, self.mPk = self.calculate_spectra(self.cosmologicalParameters) + + def calculate_spectra(self, cosmo_params, force_recalc=False): + settings = cosmo_params.copy() + settings.update({ + "output": "tCl,mPk", + "evolver": "1", + "gauge": "newtonian", + "P_k_max_1/Mpc": 10, + }) + + database = Database(config.DATABASE_DIR, "spectra.dat") + + if settings in database and not force_recalc: + data = database[settings] + ell = data["ell"] + tt = data["tt"] + kh = data["kh"] + Pkh = data["Pkh"] + self.z_rec = data["z_rec"] + else: + cosmo = Class() + cosmo.set(settings) + cosmo.compute() + # Cl's + data = cosmo.raw_cl() + ell = data["ell"] + tt = data["tt"] + # Matter spectrum + k = np.logspace(-3, 1, config.MATTER_SPECTRUM_CLIENT_SAMPLES_PER_DECADE * 4) + Pk = np.vectorize(cosmo.pk)(k, 0) + kh = k * cosmo.h() + Pkh = Pk / cosmo.h()**3 + # Get redshift of decoupling + z_rec = cosmo.get_current_derived_parameters(['z_rec'])['z_rec'] + self.z_rec = z_rec + # Store to database + database[settings] = { + "ell": data["ell"], + "tt": data["tt"], + + "kh": k, + "Pkh": Pk, + + "z_rec": z_rec, + } + + return ClSpectrum(ell[2:], tt[2:]), PkSpectrum(kh, Pkh) + + @property + def z_dec(self): + if self.z_rec is None: + raise ValueError("z_rec hasn't been computed yet") + return self.z_rec + + def setInitialConditions(self, + A=1, + sigma=2, + initialDataType="SI", + SIlimit=None, + SI_ns=0.96): + logging.info("Generating Initial Condition") + + if initialDataType == "Gaussian": + self.ValueE, self.FValue, self.k, self.kxE, self.kyE = GenerateGaussianData( + sigma, self.size, self.resolution) + elif initialDataType == "SI": + self.ValueE, self.FValue, self.k, self.kxE, self.kyE = GenerateSIData( + A, + self.size, + self.resolution, + limit=SIlimit, + ns=SI_ns) + else: + logging.warn("initialDataType " + str(initialDataType) + " not found") diff --git a/class/RealSpaceInterface/Calc2D/DataGeneration.py b/class/RealSpaceInterface/Calc2D/DataGeneration.py new file mode 100644 index 00000000..7e2c2b44 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/DataGeneration.py @@ -0,0 +1,91 @@ +import logging + +import numpy as np +import cv2 + +from Calc2D.rFourier import realFourier, realInverseFourier + +def GenerateGaussianData(sigma, size, points, A=1): + xr = np.linspace(-size / 2.0, size / 2.0, points) + yr = np.linspace(-size / 2.0, size / 2.0, points) + step = xr[1] - xr[0] + x, y = np.meshgrid( + xr, yr, indexing='ij', sparse=True) # indexing is important + del xr, yr + + #use the more easy formula + Value = A * np.exp(-(x**2 + y**2) / (2 * sigma**2)) + + kx, ky, FValue = realFourier(step, Value) + kxr, kyr = np.meshgrid(kx, ky, indexing='ij', sparse=True) + + k = np.sqrt(kxr**2 + kyr**2) + del kxr, kyr + + kx = (min(kx), max(kx)) #just return the extremal values to save memory + ky = (min(ky), max(ky)) + + ValueE = (Value.min(), Value.max()) + + return ValueE, FValue, k, kx, ky + +def GenerateSIData(A, size, points, limit=None, ns=0.96): + xr = np.linspace(-size / 2.0, size / 2.0, points) + yr = np.linspace(-size / 2.0, size / 2.0, points) + step = xr[1] - xr[0] + + x, y = np.meshgrid( + xr, yr, indexing='ij', sparse=True) # indexing is important + del xr, yr + Value = 0 * x + 0 * y + + kx, ky, FValue = realFourier(step, Value) #FValue==0 + + kxr, kyr = np.meshgrid(kx, ky, indexing='ij', sparse=True) + + k = np.sqrt(kxr**2 + kyr**2) + del kxr, kyr + + if limit == None: + + ktilde = k.flatten() + ktilde[np.argmin(k)] = 10**9 #just let the background be arbitrary low + ktilde = ktilde.reshape(k.shape) + + FValue = np.random.normal( + loc=0, + scale=np.sqrt(A / ktilde**( + 2 - (ns - 1) * 2. / 3.)) / np.sqrt(2)) + np.random.normal( + loc=0, + scale=np.sqrt(A / ktilde** + (2 - (ns - 1) * 2. / 3.)) / np.sqrt(2)) * 1j + + elif type(limit) == list or type(limit) == tuple: + + iunder, junder = np.where(k < limit[1]) + + for t in range(len(iunder)): + + if k[iunder[t]][junder[t]] > limit[0] and k[iunder[t]][junder[t]] > 0: + + FValue[iunder[t]][junder[t]] = np.random.normal( + loc=0, + scale=np.sqrt(A / k[iunder[t]][junder[t]]** + (2 - (ns - 1) * 2. / 3.)) / + np.sqrt(2)) + np.random.normal( + loc=0, + scale=np.sqrt(A / k[iunder[t]][junder[t]]** + (2 - + (ns - 1) * 2. / 3.)) / np.sqrt(2)) * 1j + + else: + raise ValueError("limit must be None or tuple or list") + + Value = realInverseFourier(FValue) + + kx = (min(kx), max(kx)) + ky = (min(ky), max(ky)) + + ValueE = (Value.min(), Value.max()) + + return ValueE, FValue, k, kx, ky diff --git a/class/RealSpaceInterface/Calc2D/DataPropagation.py b/class/RealSpaceInterface/Calc2D/DataPropagation.py new file mode 100644 index 00000000..83bca8e8 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/DataPropagation.py @@ -0,0 +1,37 @@ +import numpy as np +#uses one dimensional interpolation +def PropagateDatawithListOld(k,FValue,zredindex,transferFunctionlist): + return (transferFunctionlist[zredindex](k.ravel()) * FValue.ravel()).reshape(FValue.shape) + +def PropagateDatawithList(k, FValue, zredindex, transferFunctionlist): + result = {} + for field, transfer_function in transferFunctionlist.items(): + result[field] = (transfer_function[zredindex](k.ravel()) * FValue.ravel()).reshape(FValue.shape) + return result + +#module with uses two dimensional interpolation and propagates all data at once (fastest but high memory consumption) +def PropagateAllData(k,FValue,allzred,transferFunction): + + allFValue = np.ones((len(allzred),FValue.shape[0],FValue.shape[1]),dtype=complex) + + for kxindex in range(FValue.shape[0]): + allFValue[:,kxindex,:] = transferFunction(allzred,k[kxindex])*FValue[kxindex] + + + return allFValue + + +#module with uses 2 dimensional interpolation (slowest but can be useful if the set of redshift changes very often) +def PropagateData(k,FValue,zred,transferFunction): + + FValuenew = np.ones(FValue.shape,dtype=complex) + + for kxindex in range(FValue.shape[0]): + allFValue[kxindex,:] = transferFunction(zred,k[kxindex])*FValue[kxindex] + + + return allFValue + + + + diff --git a/class/RealSpaceInterface/Calc2D/Database.py b/class/RealSpaceInterface/Calc2D/Database.py new file mode 100644 index 00000000..bc8f006c --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/Database.py @@ -0,0 +1,58 @@ +import pickle +import os +import logging +import uuid + +class Database: + def __init__(self, directory, db_file="database.dat"): + self.directory = directory + self.db_file = db_file + + if not os.path.isdir(directory): + raise ValueError("'{}' is not a directory!".format(directory)) + + self.db_path = os.path.join(directory, db_file) + if not os.path.exists(self.db_path): + logging.info("No database found; Creating one at {}.".format(self.db_path)) + with open(self.db_path, "w") as f: + pickle.dump(dict(), f) + + self.db = self.__read_database() + + def __read_database(self): + with open(self.db_path) as f: + return pickle.load(f) + + def __write_database(self): + with open(self.db_path, "w") as f: + pickle.dump(self.db, f) + + def __create_file(self, data): + filename = str(uuid.uuid4()) + with open(os.path.join(self.directory, filename), "w") as f: + pickle.dump(data, f) + return filename + + def __get_frozen_key(self, key): + return frozenset(key.items()) + + def __getitem__(self, key): + frozen_key = self.__get_frozen_key(key) + if frozen_key in self.db: + filename = self.db[frozen_key] + with open(os.path.join(self.directory, filename)) as f: + return pickle.load(f) + else: + raise KeyError("No data for key: {}".format(key)) + + def __setitem__(self, key, data): + frozen_key = self.__get_frozen_key(key) + self.db[frozen_key] = self.__create_file(data) + self.__write_database() + + def __contains__(self, key): + """ + Return whether `self` contains a record + for the given `key`. + """ + return self.__get_frozen_key(key) in self.db \ No newline at end of file diff --git a/class/RealSpaceInterface/Calc2D/TransferFunction.py b/class/RealSpaceInterface/Calc2D/TransferFunction.py new file mode 100644 index 00000000..8747f007 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/TransferFunction.py @@ -0,0 +1,64 @@ +import os.path +import pickle +import uuid +import numpy as np +from scipy.interpolate import InterpolatedUnivariateSpline, RectBivariateSpline +import sys +import logging + +from classy import Class + +import Calc2D.Database as Database +import config + +TRANSFER_QUANTITIES = ["d_g", "d_ur", "d_cdm", "d_b", "d_g/4 + psi"] + +def ComputeTransferData(settings, redshift): + database_key = settings.copy() + database_key.update({'redshift': tuple(redshift)}) + + database = Database.Database(config.DATABASE_DIR) + if database_key in database: + return database[database_key], redshift + else: + cosmo = Class() + cosmo.set(settings) + cosmo.compute() + + outputData = [cosmo.get_transfer(z) for z in redshift] + # Calculate d_g/4+psi + for transfer_function_dict in outputData: + transfer_function_dict["d_g/4 + psi"] = transfer_function_dict["d_g"]/4 + transfer_function_dict["psi"] + # Now filter the relevant fields + fields = TRANSFER_QUANTITIES + ["k (h/Mpc)"] + outputData = [{field: outputData[i][field] for field in fields} for i in range(len(redshift))] + + database[database_key] = outputData + return outputData, redshift + + +def ComputeTransferFunctionList(cosmologicalParameters, redshift, kperdecade=200, P_k_max=100): + class_settings = cosmologicalParameters.copy() + class_settings.update({ + "output": "mTk", + "gauge": "newtonian", + "evolver": "1", + "P_k_max_h/Mpc": P_k_max, + "k_per_decade_for_pk": kperdecade, + "z_max_pk": str(max(redshift)), + }) + + data_dict, redshift = ComputeTransferData(class_settings, redshift) + transfer_functions = {field: [] for field in TRANSFER_QUANTITIES} + + + for i in range(len(redshift)): + k_data = data_dict[0]["k (h/Mpc)"] * cosmologicalParameters["h"] #in order to get k [1/Mpc] + k_data_zero = np.concatenate(([0.0], k_data)) + for field in TRANSFER_QUANTITIES: + data = data_dict[i][field] / data_dict[i][field][0] + data_zero = np.concatenate(([1.0], data)) + interpolated_func = InterpolatedUnivariateSpline(k_data_zero, data_zero) + transfer_functions[field].append(interpolated_func) + + return transfer_functions diff --git a/class/RealSpaceInterface/Calc2D/__init__.py b/class/RealSpaceInterface/Calc2D/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/class/RealSpaceInterface/Calc2D/rFourier.py b/class/RealSpaceInterface/Calc2D/rFourier.py new file mode 100644 index 00000000..b8a54378 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/rFourier.py @@ -0,0 +1,21 @@ +import numpy as np +import numpy.fft as fft + +def realFourier(step, Value): + FValue = np.fft.fftshift( + np.fft.rfft2(Value), axes=(0)) #shifting only the x axes + + kx = np.fft.fftshift(np.fft.fftfreq(Value.shape[0], d=step)) * 2 * np.pi + ky = np.fft.rfftfreq(Value.shape[0], d=step) * 2 * np.pi + + return kx, ky, FValue + +def realInverseFourier(FValue): + return np.fft.irfft2(np.fft.ifftshift( + FValue, axes=(0))) #shifting only on the x axes + + +def realInverseAllFourier(allFValue): + return np.fft.irfftn( + np.fft.ifftshift(allFValue, axes=(1)), + axes=(1, 2)) #shifting only on the x axes diff --git a/class/RealSpaceInterface/README b/class/RealSpaceInterface/README new file mode 100644 index 00000000..4fc84d3e --- /dev/null +++ b/class/RealSpaceInterface/README @@ -0,0 +1,18 @@ +For installation of python packages, run + + pip install -r requirements.txt + +Launch the application with + + python tornadoserver.py + +Then in any browser open the URL + + http://localhost:7777 + +------------------------------------------------------------ + +Cache files are located in cache/, so to clear the cache, run + + rm cache/* + diff --git a/class/RealSpaceInterface/colormap_converter.py b/class/RealSpaceInterface/colormap_converter.py new file mode 100644 index 00000000..2c18b21d --- /dev/null +++ b/class/RealSpaceInterface/colormap_converter.py @@ -0,0 +1,34 @@ +import matplotlib.cm as cm +import matplotlib.pyplot as plt +import numpy as np +from PIL import Image +import os + +OUTPUT_DIR = os.path.join("static", "images", "colormaps") +WIDTH = 512 + +def create_image(cmap, width): + values = np.linspace(0, 1, width) + colors = cmap(values).reshape((1, width, 4)) + image = Image.fromarray(np.uint8(255 * colors)) + return image + +cmap_names = {} +cmap_names['Uniform'] = [ + 'viridis', 'plasma', 'inferno', 'magma'] +cmap_names['Diverging'] = [ + 'seismic', 'RdYlBu', 'Spectral' + ] +cmap_names['Miscellaneous'] = ['jet'] + +if __name__ == "__main__": + for category in cmap_names: + category_dir = os.path.join(OUTPUT_DIR, category) + if not os.path.exists(category_dir): + os.mkdir(category_dir) + for name in cmap_names[category]: + result = create_image(plt.get_cmap(name), width=WIDTH) + output_path = os.path.join(category_dir, "{}.png".format(name)) + print(output_path) + result.save(output_path) + diff --git a/class/RealSpaceInterface/config.py b/class/RealSpaceInterface/config.py new file mode 100644 index 00000000..90e91691 --- /dev/null +++ b/class/RealSpaceInterface/config.py @@ -0,0 +1,23 @@ +import os + +# Default port number to listen on. Can be overriden by passing a port number +# as the first command line argument, e.g. `python tornadoserver.py 1234` +PORT = 7777 + +# Directory to store previously computed transfer functions, spectra etc. in +DATABASE_DIR = "cache" + +# Maximum number of thread pool workers (only required for multi-user usage) +MAX_THREADPOOL_WORKERS = 8 + +# Path of colormap directory relative to the static directory from which +# tornado serves static files +COLORMAP_PATH = os.path.join("images", "colormaps") + +# number of sample points for the transfer function that is displayed +# in the client +TRANSFER_FUNCTION_CLIENT_SAMPLES = 400 + +# number of sample points for the matter spectrum that is displayed +# in the client per decade +MATTER_SPECTRUM_CLIENT_SAMPLES_PER_DECADE = 40 diff --git a/class/RealSpaceInterface/requirements.txt b/class/RealSpaceInterface/requirements.txt new file mode 100644 index 00000000..2f2dc9a6 --- /dev/null +++ b/class/RealSpaceInterface/requirements.txt @@ -0,0 +1,7 @@ +futures>=3.0.2 +numpy>=1.8.2 +scipy>=0.14.0 +tornado>=4.0.2 +opencv-python +# Building the Python bindings of CLASS requires Cython +Cython diff --git a/class/RealSpaceInterface/static/css/custom.css b/class/RealSpaceInterface/static/css/custom.css new file mode 100644 index 00000000..872a731b --- /dev/null +++ b/class/RealSpaceInterface/static/css/custom.css @@ -0,0 +1,189 @@ +body { + margin: 0; + overflow: hidden; +} + +.activityIndicator-active, .activityIndicator-inactive { + border-radius: 50%; + width: 20px; + height: 20px; + display: inline-block; + vertical-align: sub; +} + +.activityIndicator-active { + border: 3px solid #f3f3f3; + border-top: 3px solid #3498db; + animation: spin 2s linear infinite; +} + +.activityIndicator-inactive { + border: 3px solid #444; + display: none; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +td.color-circle-container { + vertical-align: middle; +} + +.color-circle { + width: 24px; + height: 24px; + border-radius: 50%; + margin: auto; +} + +.popover { + max-width: 100%; +} + +.modal { + overflow-y: scroll; +} + +/* PLOTS */ + +#plotWindowContainer { + position: absolute; + top: 50px; + left: 0px; + overflow: hidden; +} + +#plotWindowWrapper { + min-width: 550px; + border-radius: 3px; +} + +.plotWindowWrapperHidden { +} + +.plotWindowWrapperVisible { + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; +} + +.plotWindowHidden, .plotWindowVisible { + overflow-x: hidden; + background-color: rgba(255, 255, 255, 0.8); +} + +.plotWindowHidden { + display: none; + margin: 0px; +} + +.plotWindowVisible { + display: block; + min-height: 200px; +} + +.plotWindowVisible:not(:last-child) { + margin-bottom: 10px; +} + +#plotWindowToggle { + width: 100%; +} + +/* END PLOTS */ + +#aboutLink { + position: absolute; + padding: 5px; + right: 0; + bottom: 0; + text-align: right; + vertical-align: bottom; + border-top-left-radius: 3px; +} + +#statusBar { + position: absolute; + bottom: 0; + left: 0; + padding: 5px; + border-top-right-radius: 3px; +} + +#statusBar p { + margin: 0; + vertical-align: bottom; +} + +.status-bar-item { + display: inline-block; +} + +/* */ +#simulationTable td { + text-align: center; + vertical-align: middle; +} + +#simulationTable th { + text-align: center; + border: none; +} + +.visible-checkbox { + vertical-align: middle; +} + +/* .cmap-preview, .cmap-preview-button { */ +/* } */ + +.cmap-preview { + width: 64px; + height: inherit; + margin-left: 1em; +} + +/* .cmap-preview-button { */ +/* height: 1em; */ +/* vertical-align: middle; */ +/* } */ + +#colormap-selector-button-placeholder { + width: 64px; + display: inline-block; +} + +.colormap-selector-item { + display: flex; + justify-content: space-between; +} + +.scrollable-menu { + height: auto; + max-height: 200px; + overflow-x: hidden; +} + + +/* FIX DAT.GUI */ +.dg .c input[type=text] { + line-height:normal; +} + +.dg .c div { + box-sizing: content-box; +} + +/* END FIX */ + + +#exceptionModalMessage { + white-space: pre; +} + +.modal-lg { + max-width: 900px; +} diff --git a/class/RealSpaceInterface/static/css/timeline.css b/class/RealSpaceInterface/static/css/timeline.css new file mode 100644 index 00000000..e87f469e --- /dev/null +++ b/class/RealSpaceInterface/static/css/timeline.css @@ -0,0 +1,28 @@ +.player { + width: 25%; + border-radius: 2px; + margin-top: 6px; +} + +.timeline { + height: 12px; + /*background: linear-gradient(to right, red 0%, red 20%, green 20%);*/ + border-radius: 8px; + /* horizontal vertical blur spread color */ + /* box-shadow: inset 2px 2px 20px -5px #333; */ + cursor: pointer; +} + +.scrubber { + width: 18px; + height: 18px; + border-radius: 50%; + float: left; + cursor: pointer; + background: linear-gradient(to bottom, hsl(134, 61%, 45%), hsl(134, 61%, 35%)); + box-shadow: 0px 2px 10px 2px #333; +} + +.scrubber:hover { + background: linear-gradient(to bottom, hsl(134, 61%, 65%), hsl(134, 61%, 55%)); +} diff --git a/class/RealSpaceInterface/static/favicon-16x16.png b/class/RealSpaceInterface/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..b1eaa217dc906ac5232794f7fe6a9f3308dfd909 GIT binary patch literal 1012 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?e4&pI!O;}u*Gx}YiH3I|F4^J1z5R22Q=TGMehch%h{C{T7%#XP>-G&>5IRr#R zHGL;93UivWD(gz@?p$$?*sqMgIQBT1?_uHAD!s_QfwW2(q`9-7SzK57tP-TT#~|%X>g-={`L=JDzu<2?&;Qh)n3%6o^a|?dE7!+4gBg8t3Oo zR;{*xUvF4d^;{L#rDp8>;F;=R@>(d{aoUv)u5V{s|Fm#XkkDU0F~`(F`a{m64d;x_ zA9)tL6uWMm*gQM#%)0-5k%>oMH?QBI7QMQsYkJ@mfkdvuEG-R5TyN$2qyr{u#h$4KsDNbL>^S_E2V`#+j)+uNYlK#eP{;I|XjyFKB(Zu}S6qr}Ht& zVfPe|URHdz%Kulc+%7IIp{Q7$_X2l+%H*_`Eb~aLuqv)B+2mHTtMQ%rf|U~^#HPe{ z#6%PyJh$PlaM(HfXE(xhno13t{zfd=dbDOkuif2-%MzyqFV(0oG-V8TDrDQq>9$)% z%UzB6&M{@ZpUTHF`wnl`^|{c}*;dN>R3NkdFVo{Q7t*g6a=$M;_4~+YvBj=}YgPM% zlcP1I8Xx-v^qQwM`*LtS@LKY2ZSpPK6}HO*UKK7jTb3o8c%kHwq(5KzjpNJWY?7Y; z(dOeym-)V~PG_}9=G3;3RqF%8JeJs)*>-1Fo^2NJdoJ2>jbp3(o)w0A|J)a;oM~)q zQ|P~vDd+2U&o48&a-YY8NVOlyDw3;2_Wx^2-GBaf<-`*y6Mj8-x*&s@Ez>PrLO%V+ z^MB8-U1IQ-`Zvom!tK-LPnzO)g#`-gEfxxMn>ctnPGh!zTF<^NX4=BD=1stCp<3b^ zQIe8al4_M)lnSI6j0_AdbPddO4J|{AjI9hUtqjez4UDV|4306#Zbs3No1c=IR*9*> Xz!IWC`^3F7Kn)C@u6{1-oD!M004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rd1``((30v+_I{*L)gh@m}R9M3;*GbPM=T!&r z-&5nA?>qMJ+TESB-F7;5Y@&qVWD&6eWy1nitl05A{4LlZ!53hKgaivBAtg8o2)l#b zc<64o+wC6wPItbyMi!MtNhLi}J^xeZKb#Zp_-R{9>||aJkCfv+{g}EH7KP#ELef?i zNBio(x+?n7fBX5(U-_G((oxL+?fA#j*e7S-6$H2Tp7`sdtv~B=ea84RLc`gc{C&nh zJUzBN`xDl$vYSdGl}c)njFkOc|8imYa-|W`2K{!Y#ky_Ov!HqOmJe)H?T3Ce+DQU~ zxN$W8+B?I_pN}fl(=)?#XFuV+apiCG#?M}G^ql-LqyM0HpZU-D~J8PJoddo z5U6uD*CZQDiOg7n28G&4CD95Rky2b+m!kw6--;lmw{T`qHfWND!9zFgE$(rEosFJzdxkbrwOXV}V@@*m&NZQOS~9OY?%wFr3@ER&c#GfdbN|bI z>H&i%LjGJEDza0uQ^{7Tww1XwH0{Wt6{{sG>t5e_JhEA=rA2Am?WugQSd z-{e-#SG|o#gD2{8!n#kDQH_;VUmUjLLvO!7kPB+HLT)0mr;^!3J-bn#amrD~)r{kW zNlP{La&_pFdggJm_T+kNeuwHiL=&bd*N5EhH@3;8^W>#$`dE7KP?gLy<)LDETU_Kn zc|WORxk{^)>S>HzhN=1WL+$Hh_EUB(>zYAC2s}?&9av|%FUryf+sKDWVK!`CopKmc z#k`X8$64*xXz5Q6&)k`O>p``)Ufts29m(nk*VLaTt}k{Xb6YdHRFfQOUYqdlgsSDq zmRZ%k4`L$pYeJ=MBXtvrw1N)bMa-8KClPPXc)dcO-)8)il+7_;k0oyP?Uqxs&zAO^ zoy3`-k=2Fpbfq1|j1$_HQNk!@zv1|t{u!gs?TsJ0*=xMrZw(`!R-8oy#1Y#b;|C-= zc6V59k654ZtP#8Wv-kC5yJe)<N9WM+c#xd)bWyM9!*L&>k@o~kpcj24KeeG*| z66=Pu9kYU~edX;#WkPvxCV9FL0_{o0t%7tzI`6c0`6}llCMEp=<$>jH>Z@$&dfK|4 z@}lHX!9~Ttm%(K*u&Hue1<{V)OyYNET?D}EBYvDRSgT*%SO2!pB;g<;U6anpPbm&~ zHsVFYoj|k`hM!CFGq9I*mhr1a8%w8s%K=GmHr- zqK>}rP8mf^OX4lVN0Q+K&F-q^`jp9(VcYQ_S-CaXxR%lje7fa-W>d@ATU4VC^o#4< zM|#NJhUr4mqzS{6;~q(19w;Zox{qf8Euj&za|eTO>0devt$Owjt5?`u(N+_6duCSi z;fA7Nn60hbM04>rb;c5lW#=ikdQ4+UbJ*+X*^j$}^OD1q362`tsCz=C#WaqbwwLZ)q;thKCBb3K8w1jkqXkVQ@y3Mnf`fz`fh6hx zrOU2YZPZ;7l|pEwp|z^nR=ut*)87mEGre@}q*vND!L#kqH|rx&JyOr^vWci0^1!vg z_>BCFY9R6RKwC2ThP>#8x6{K;#N$hn8TF8ItX<#oRqtC(sBAYU9k_UH+CTNipz=nq zGs|C=mF4yo_3|}}eL~CgiWWDMPBm=+i7OApdmm~wn#~QWK7%P~LGK%SPbv3UzDYT? z+#V1Wl>3B=u+xiLy}b~jTgyhDNupNS#L9F* z`!=f~HL5_?DJ${WEt}*$dS_jwy%+SJku2@yOSgNi>-kzXd1zS&tWM_oR zs%d2rKkajpvT9nZKX9qh+SCj8E)zC4l%eu6YD}`F{j}`%g+M02(@bcC z#6c}g9|(hQXfkpBT$C&nb!yXesr!R|$H`U0rs3g^Cj~Fp`)p1+-t4Z~TnucoQ>Xd2 z9w#f4e5Gh>O&dA@>$;2cIg*%REOB)y9Y1t+^vpO8s^Y4t+m#KD}+oBZ)XDi+!{5 z+%VdSP}C{)KpfR>r(9X{Jm+c2$D6LNn>uvaFnUC&O!hw%MU~6ttDS46=dx@m!lpQ& z$h+PhXOt~%H{2v14YlL%n}^D(d|{f;9p`I#e&3yb<1d@mt>K?<2o8vB{=T(x@b*Gb(7mf4;=J2 z?(_?PG3NGy%L%_PdAJ(dlzqc&>F%g-ob2S$+>MOGq+3oZOCK(`R#mEKVr|_cs{gPH zqG`L!ue9W~#M^-+W%e57z@{4dvU=dMoQvDSV$jMGzFrVQ05UK!I4v+XEipM%GBY|cIXW>nD=;!TFfhgd9kT!c03~!qSaf7zbY(hiZ)9m^ uc>ppnF*q$SHZ3tZR5CL +``` + +#### Using Open Iconic's SVG Sprite + +Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack. + +Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `` *tag and a unique class name for each different icon in the* `` *tag.* + +``` + + + +``` + +Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `` tag with equal width and height dimensions. + +``` +.icon { + width: 16px; + height: 16px; +} +``` + +Coloring icons is even easier. All you need to do is set the `fill` rule on the `` tag. + +``` +.icon-account-login { + fill: #f00; +} +``` + +To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/). + +#### Using Open Iconic's Icon Font... + + +##### …with Bootstrap + +You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}` + + +``` + +``` + + +``` + +``` + +##### …with Foundation + +You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}` + +``` + +``` + + +``` + +``` + +##### …on its own + +You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}` + +``` + +``` + +``` + +``` + + +## License + +### Icons + +All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT). + +### Fonts + +All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web). diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/bower.json b/class/RealSpaceInterface/static/fonts/open-iconic/bower.json new file mode 100644 index 00000000..fbf96616 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/bower.json @@ -0,0 +1,21 @@ +{ + "name": "open-iconic", + "description": "An open source icon set in SVG, webfont and raster formats", + "version": "1.1.1", + "license": [ + "MIT", + "OFL-1.1" + ], + "homepage": "https://useiconic.com/open", + "repository": { + "type": "git", + "url": "git://github.com/iconic/open-iconic.git" + }, + "main": [ + "./sprite/open-iconic.min.svg" + ], + "ignore": [ + "*.json", + "*.md" + ] +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css new file mode 100644 index 00000000..56c4e5f3 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css @@ -0,0 +1,952 @@ +/* Bootstrap */ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi { + position: relative; + top: 1px; + display: inline-block; + speak:none; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.oi:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; +} + +.oi.oi-align-center:before { + text-align: center; +} + +.oi.oi-align-left:before { + text-align: left; +} + +.oi.oi-align-right:before { + text-align: right; +} + + +.oi.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.oi.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +.oi.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + +.oi-account-login:before { + content:'\e000'; +} + +.oi-account-logout:before { + content:'\e001'; +} + +.oi-action-redo:before { + content:'\e002'; +} + +.oi-action-undo:before { + content:'\e003'; +} + +.oi-align-center:before { + content:'\e004'; +} + +.oi-align-left:before { + content:'\e005'; +} + +.oi-align-right:before { + content:'\e006'; +} + +.oi-aperture:before { + content:'\e007'; +} + +.oi-arrow-bottom:before { + content:'\e008'; +} + +.oi-arrow-circle-bottom:before { + content:'\e009'; +} + +.oi-arrow-circle-left:before { + content:'\e00a'; +} + +.oi-arrow-circle-right:before { + content:'\e00b'; +} + +.oi-arrow-circle-top:before { + content:'\e00c'; +} + +.oi-arrow-left:before { + content:'\e00d'; +} + +.oi-arrow-right:before { + content:'\e00e'; +} + +.oi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.oi-arrow-thick-left:before { + content:'\e010'; +} + +.oi-arrow-thick-right:before { + content:'\e011'; +} + +.oi-arrow-thick-top:before { + content:'\e012'; +} + +.oi-arrow-top:before { + content:'\e013'; +} + +.oi-audio-spectrum:before { + content:'\e014'; +} + +.oi-audio:before { + content:'\e015'; +} + +.oi-badge:before { + content:'\e016'; +} + +.oi-ban:before { + content:'\e017'; +} + +.oi-bar-chart:before { + content:'\e018'; +} + +.oi-basket:before { + content:'\e019'; +} + +.oi-battery-empty:before { + content:'\e01a'; +} + +.oi-battery-full:before { + content:'\e01b'; +} + +.oi-beaker:before { + content:'\e01c'; +} + +.oi-bell:before { + content:'\e01d'; +} + +.oi-bluetooth:before { + content:'\e01e'; +} + +.oi-bold:before { + content:'\e01f'; +} + +.oi-bolt:before { + content:'\e020'; +} + +.oi-book:before { + content:'\e021'; +} + +.oi-bookmark:before { + content:'\e022'; +} + +.oi-box:before { + content:'\e023'; +} + +.oi-briefcase:before { + content:'\e024'; +} + +.oi-british-pound:before { + content:'\e025'; +} + +.oi-browser:before { + content:'\e026'; +} + +.oi-brush:before { + content:'\e027'; +} + +.oi-bug:before { + content:'\e028'; +} + +.oi-bullhorn:before { + content:'\e029'; +} + +.oi-calculator:before { + content:'\e02a'; +} + +.oi-calendar:before { + content:'\e02b'; +} + +.oi-camera-slr:before { + content:'\e02c'; +} + +.oi-caret-bottom:before { + content:'\e02d'; +} + +.oi-caret-left:before { + content:'\e02e'; +} + +.oi-caret-right:before { + content:'\e02f'; +} + +.oi-caret-top:before { + content:'\e030'; +} + +.oi-cart:before { + content:'\e031'; +} + +.oi-chat:before { + content:'\e032'; +} + +.oi-check:before { + content:'\e033'; +} + +.oi-chevron-bottom:before { + content:'\e034'; +} + +.oi-chevron-left:before { + content:'\e035'; +} + +.oi-chevron-right:before { + content:'\e036'; +} + +.oi-chevron-top:before { + content:'\e037'; +} + +.oi-circle-check:before { + content:'\e038'; +} + +.oi-circle-x:before { + content:'\e039'; +} + +.oi-clipboard:before { + content:'\e03a'; +} + +.oi-clock:before { + content:'\e03b'; +} + +.oi-cloud-download:before { + content:'\e03c'; +} + +.oi-cloud-upload:before { + content:'\e03d'; +} + +.oi-cloud:before { + content:'\e03e'; +} + +.oi-cloudy:before { + content:'\e03f'; +} + +.oi-code:before { + content:'\e040'; +} + +.oi-cog:before { + content:'\e041'; +} + +.oi-collapse-down:before { + content:'\e042'; +} + +.oi-collapse-left:before { + content:'\e043'; +} + +.oi-collapse-right:before { + content:'\e044'; +} + +.oi-collapse-up:before { + content:'\e045'; +} + +.oi-command:before { + content:'\e046'; +} + +.oi-comment-square:before { + content:'\e047'; +} + +.oi-compass:before { + content:'\e048'; +} + +.oi-contrast:before { + content:'\e049'; +} + +.oi-copywriting:before { + content:'\e04a'; +} + +.oi-credit-card:before { + content:'\e04b'; +} + +.oi-crop:before { + content:'\e04c'; +} + +.oi-dashboard:before { + content:'\e04d'; +} + +.oi-data-transfer-download:before { + content:'\e04e'; +} + +.oi-data-transfer-upload:before { + content:'\e04f'; +} + +.oi-delete:before { + content:'\e050'; +} + +.oi-dial:before { + content:'\e051'; +} + +.oi-document:before { + content:'\e052'; +} + +.oi-dollar:before { + content:'\e053'; +} + +.oi-double-quote-sans-left:before { + content:'\e054'; +} + +.oi-double-quote-sans-right:before { + content:'\e055'; +} + +.oi-double-quote-serif-left:before { + content:'\e056'; +} + +.oi-double-quote-serif-right:before { + content:'\e057'; +} + +.oi-droplet:before { + content:'\e058'; +} + +.oi-eject:before { + content:'\e059'; +} + +.oi-elevator:before { + content:'\e05a'; +} + +.oi-ellipses:before { + content:'\e05b'; +} + +.oi-envelope-closed:before { + content:'\e05c'; +} + +.oi-envelope-open:before { + content:'\e05d'; +} + +.oi-euro:before { + content:'\e05e'; +} + +.oi-excerpt:before { + content:'\e05f'; +} + +.oi-expand-down:before { + content:'\e060'; +} + +.oi-expand-left:before { + content:'\e061'; +} + +.oi-expand-right:before { + content:'\e062'; +} + +.oi-expand-up:before { + content:'\e063'; +} + +.oi-external-link:before { + content:'\e064'; +} + +.oi-eye:before { + content:'\e065'; +} + +.oi-eyedropper:before { + content:'\e066'; +} + +.oi-file:before { + content:'\e067'; +} + +.oi-fire:before { + content:'\e068'; +} + +.oi-flag:before { + content:'\e069'; +} + +.oi-flash:before { + content:'\e06a'; +} + +.oi-folder:before { + content:'\e06b'; +} + +.oi-fork:before { + content:'\e06c'; +} + +.oi-fullscreen-enter:before { + content:'\e06d'; +} + +.oi-fullscreen-exit:before { + content:'\e06e'; +} + +.oi-globe:before { + content:'\e06f'; +} + +.oi-graph:before { + content:'\e070'; +} + +.oi-grid-four-up:before { + content:'\e071'; +} + +.oi-grid-three-up:before { + content:'\e072'; +} + +.oi-grid-two-up:before { + content:'\e073'; +} + +.oi-hard-drive:before { + content:'\e074'; +} + +.oi-header:before { + content:'\e075'; +} + +.oi-headphones:before { + content:'\e076'; +} + +.oi-heart:before { + content:'\e077'; +} + +.oi-home:before { + content:'\e078'; +} + +.oi-image:before { + content:'\e079'; +} + +.oi-inbox:before { + content:'\e07a'; +} + +.oi-infinity:before { + content:'\e07b'; +} + +.oi-info:before { + content:'\e07c'; +} + +.oi-italic:before { + content:'\e07d'; +} + +.oi-justify-center:before { + content:'\e07e'; +} + +.oi-justify-left:before { + content:'\e07f'; +} + +.oi-justify-right:before { + content:'\e080'; +} + +.oi-key:before { + content:'\e081'; +} + +.oi-laptop:before { + content:'\e082'; +} + +.oi-layers:before { + content:'\e083'; +} + +.oi-lightbulb:before { + content:'\e084'; +} + +.oi-link-broken:before { + content:'\e085'; +} + +.oi-link-intact:before { + content:'\e086'; +} + +.oi-list-rich:before { + content:'\e087'; +} + +.oi-list:before { + content:'\e088'; +} + +.oi-location:before { + content:'\e089'; +} + +.oi-lock-locked:before { + content:'\e08a'; +} + +.oi-lock-unlocked:before { + content:'\e08b'; +} + +.oi-loop-circular:before { + content:'\e08c'; +} + +.oi-loop-square:before { + content:'\e08d'; +} + +.oi-loop:before { + content:'\e08e'; +} + +.oi-magnifying-glass:before { + content:'\e08f'; +} + +.oi-map-marker:before { + content:'\e090'; +} + +.oi-map:before { + content:'\e091'; +} + +.oi-media-pause:before { + content:'\e092'; +} + +.oi-media-play:before { + content:'\e093'; +} + +.oi-media-record:before { + content:'\e094'; +} + +.oi-media-skip-backward:before { + content:'\e095'; +} + +.oi-media-skip-forward:before { + content:'\e096'; +} + +.oi-media-step-backward:before { + content:'\e097'; +} + +.oi-media-step-forward:before { + content:'\e098'; +} + +.oi-media-stop:before { + content:'\e099'; +} + +.oi-medical-cross:before { + content:'\e09a'; +} + +.oi-menu:before { + content:'\e09b'; +} + +.oi-microphone:before { + content:'\e09c'; +} + +.oi-minus:before { + content:'\e09d'; +} + +.oi-monitor:before { + content:'\e09e'; +} + +.oi-moon:before { + content:'\e09f'; +} + +.oi-move:before { + content:'\e0a0'; +} + +.oi-musical-note:before { + content:'\e0a1'; +} + +.oi-paperclip:before { + content:'\e0a2'; +} + +.oi-pencil:before { + content:'\e0a3'; +} + +.oi-people:before { + content:'\e0a4'; +} + +.oi-person:before { + content:'\e0a5'; +} + +.oi-phone:before { + content:'\e0a6'; +} + +.oi-pie-chart:before { + content:'\e0a7'; +} + +.oi-pin:before { + content:'\e0a8'; +} + +.oi-play-circle:before { + content:'\e0a9'; +} + +.oi-plus:before { + content:'\e0aa'; +} + +.oi-power-standby:before { + content:'\e0ab'; +} + +.oi-print:before { + content:'\e0ac'; +} + +.oi-project:before { + content:'\e0ad'; +} + +.oi-pulse:before { + content:'\e0ae'; +} + +.oi-puzzle-piece:before { + content:'\e0af'; +} + +.oi-question-mark:before { + content:'\e0b0'; +} + +.oi-rain:before { + content:'\e0b1'; +} + +.oi-random:before { + content:'\e0b2'; +} + +.oi-reload:before { + content:'\e0b3'; +} + +.oi-resize-both:before { + content:'\e0b4'; +} + +.oi-resize-height:before { + content:'\e0b5'; +} + +.oi-resize-width:before { + content:'\e0b6'; +} + +.oi-rss-alt:before { + content:'\e0b7'; +} + +.oi-rss:before { + content:'\e0b8'; +} + +.oi-script:before { + content:'\e0b9'; +} + +.oi-share-boxed:before { + content:'\e0ba'; +} + +.oi-share:before { + content:'\e0bb'; +} + +.oi-shield:before { + content:'\e0bc'; +} + +.oi-signal:before { + content:'\e0bd'; +} + +.oi-signpost:before { + content:'\e0be'; +} + +.oi-sort-ascending:before { + content:'\e0bf'; +} + +.oi-sort-descending:before { + content:'\e0c0'; +} + +.oi-spreadsheet:before { + content:'\e0c1'; +} + +.oi-star:before { + content:'\e0c2'; +} + +.oi-sun:before { + content:'\e0c3'; +} + +.oi-tablet:before { + content:'\e0c4'; +} + +.oi-tag:before { + content:'\e0c5'; +} + +.oi-tags:before { + content:'\e0c6'; +} + +.oi-target:before { + content:'\e0c7'; +} + +.oi-task:before { + content:'\e0c8'; +} + +.oi-terminal:before { + content:'\e0c9'; +} + +.oi-text:before { + content:'\e0ca'; +} + +.oi-thumb-down:before { + content:'\e0cb'; +} + +.oi-thumb-up:before { + content:'\e0cc'; +} + +.oi-timer:before { + content:'\e0cd'; +} + +.oi-transfer:before { + content:'\e0ce'; +} + +.oi-trash:before { + content:'\e0cf'; +} + +.oi-underline:before { + content:'\e0d0'; +} + +.oi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.oi-vertical-align-center:before { + content:'\e0d2'; +} + +.oi-vertical-align-top:before { + content:'\e0d3'; +} + +.oi-video:before { + content:'\e0d4'; +} + +.oi-volume-high:before { + content:'\e0d5'; +} + +.oi-volume-low:before { + content:'\e0d6'; +} + +.oi-volume-off:before { + content:'\e0d7'; +} + +.oi-warning:before { + content:'\e0d8'; +} + +.oi-wifi:before { + content:'\e0d9'; +} + +.oi-wrench:before { + content:'\e0da'; +} + +.oi-x:before { + content:'\e0db'; +} + +.oi-yen:before { + content:'\e0dc'; +} + +.oi-zoom-in:before { + content:'\e0dd'; +} + +.oi-zoom-out:before { + content:'\e0de'; +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less new file mode 100644 index 00000000..fc3fe341 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less @@ -0,0 +1,960 @@ +/* Bootstrap */ + +/* Override Bootstrap default variable */ +//@icon-font-path: "../fonts/"; + +@font-face { + font-family: 'Icons'; + src: ~"url('@{icon-font-path}open-iconic.eot')"; + src: ~"url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype')", + ~"url('@{icon-font-path}open-iconic.woff') format('woff')", + ~"url('@{icon-font-path}open-iconic.ttf') format('truetype')", + ~"url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg')"; + font-weight: normal; + font-style: normal; +} + +// Catchall baseclass +.oi { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-center:before { + text-align: center; + } + + &.oi-align-left:before { + text-align: left; + } + + &.oi-align-right:before { + text-align: right; + } + + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + + +.oi-account-login:before { + content:"\e000"; +} + +.oi-account-logout:before { + content:"\e001"; +} + +.oi-action-redo:before { + content:"\e002"; +} + +.oi-action-undo:before { + content:"\e003"; +} + +.oi-align-center:before { + content:"\e004"; +} + +.oi-align-left:before { + content:"\e005"; +} + +.oi-align-right:before { + content:"\e006"; +} + +.oi-aperture:before { + content:"\e007"; +} + +.oi-arrow-bottom:before { + content:"\e008"; +} + +.oi-arrow-circle-bottom:before { + content:"\e009"; +} + +.oi-arrow-circle-left:before { + content:"\e00a"; +} + +.oi-arrow-circle-right:before { + content:"\e00b"; +} + +.oi-arrow-circle-top:before { + content:"\e00c"; +} + +.oi-arrow-left:before { + content:"\e00d"; +} + +.oi-arrow-right:before { + content:"\e00e"; +} + +.oi-arrow-thick-bottom:before { + content:"\e00f"; +} + +.oi-arrow-thick-left:before { + content:"\e010"; +} + +.oi-arrow-thick-right:before { + content:"\e011"; +} + +.oi-arrow-thick-top:before { + content:"\e012"; +} + +.oi-arrow-top:before { + content:"\e013"; +} + +.oi-audio-spectrum:before { + content:"\e014"; +} + +.oi-audio:before { + content:"\e015"; +} + +.oi-badge:before { + content:"\e016"; +} + +.oi-ban:before { + content:"\e017"; +} + +.oi-bar-chart:before { + content:"\e018"; +} + +.oi-basket:before { + content:"\e019"; +} + +.oi-battery-empty:before { + content:"\e01a"; +} + +.oi-battery-full:before { + content:"\e01b"; +} + +.oi-beaker:before { + content:"\e01c"; +} + +.oi-bell:before { + content:"\e01d"; +} + +.oi-bluetooth:before { + content:"\e01e"; +} + +.oi-bold:before { + content:"\e01f"; +} + +.oi-bolt:before { + content:"\e020"; +} + +.oi-book:before { + content:"\e021"; +} + +.oi-bookmark:before { + content:"\e022"; +} + +.oi-box:before { + content:"\e023"; +} + +.oi-briefcase:before { + content:"\e024"; +} + +.oi-british-pound:before { + content:"\e025"; +} + +.oi-browser:before { + content:"\e026"; +} + +.oi-brush:before { + content:"\e027"; +} + +.oi-bug:before { + content:"\e028"; +} + +.oi-bullhorn:before { + content:"\e029"; +} + +.oi-calculator:before { + content:"\e02a"; +} + +.oi-calendar:before { + content:"\e02b"; +} + +.oi-camera-slr:before { + content:"\e02c"; +} + +.oi-caret-bottom:before { + content:"\e02d"; +} + +.oi-caret-left:before { + content:"\e02e"; +} + +.oi-caret-right:before { + content:"\e02f"; +} + +.oi-caret-top:before { + content:"\e030"; +} + +.oi-cart:before { + content:"\e031"; +} + +.oi-chat:before { + content:"\e032"; +} + +.oi-check:before { + content:"\e033"; +} + +.oi-chevron-bottom:before { + content:"\e034"; +} + +.oi-chevron-left:before { + content:"\e035"; +} + +.oi-chevron-right:before { + content:"\e036"; +} + +.oi-chevron-top:before { + content:"\e037"; +} + +.oi-circle-check:before { + content:"\e038"; +} + +.oi-circle-x:before { + content:"\e039"; +} + +.oi-clipboard:before { + content:"\e03a"; +} + +.oi-clock:before { + content:"\e03b"; +} + +.oi-cloud-download:before { + content:"\e03c"; +} + +.oi-cloud-upload:before { + content:"\e03d"; +} + +.oi-cloud:before { + content:"\e03e"; +} + +.oi-cloudy:before { + content:"\e03f"; +} + +.oi-code:before { + content:"\e040"; +} + +.oi-cog:before { + content:"\e041"; +} + +.oi-collapse-down:before { + content:"\e042"; +} + +.oi-collapse-left:before { + content:"\e043"; +} + +.oi-collapse-right:before { + content:"\e044"; +} + +.oi-collapse-up:before { + content:"\e045"; +} + +.oi-command:before { + content:"\e046"; +} + +.oi-comment-square:before { + content:"\e047"; +} + +.oi-compass:before { + content:"\e048"; +} + +.oi-contrast:before { + content:"\e049"; +} + +.oi-copywriting:before { + content:"\e04a"; +} + +.oi-credit-card:before { + content:"\e04b"; +} + +.oi-crop:before { + content:"\e04c"; +} + +.oi-dashboard:before { + content:"\e04d"; +} + +.oi-data-transfer-download:before { + content:"\e04e"; +} + +.oi-data-transfer-upload:before { + content:"\e04f"; +} + +.oi-delete:before { + content:"\e050"; +} + +.oi-dial:before { + content:"\e051"; +} + +.oi-document:before { + content:"\e052"; +} + +.oi-dollar:before { + content:"\e053"; +} + +.oi-double-quote-sans-left:before { + content:"\e054"; +} + +.oi-double-quote-sans-right:before { + content:"\e055"; +} + +.oi-double-quote-serif-left:before { + content:"\e056"; +} + +.oi-double-quote-serif-right:before { + content:"\e057"; +} + +.oi-droplet:before { + content:"\e058"; +} + +.oi-eject:before { + content:"\e059"; +} + +.oi-elevator:before { + content:"\e05a"; +} + +.oi-ellipses:before { + content:"\e05b"; +} + +.oi-envelope-closed:before { + content:"\e05c"; +} + +.oi-envelope-open:before { + content:"\e05d"; +} + +.oi-euro:before { + content:"\e05e"; +} + +.oi-excerpt:before { + content:"\e05f"; +} + +.oi-expand-down:before { + content:"\e060"; +} + +.oi-expand-left:before { + content:"\e061"; +} + +.oi-expand-right:before { + content:"\e062"; +} + +.oi-expand-up:before { + content:"\e063"; +} + +.oi-external-link:before { + content:"\e064"; +} + +.oi-eye:before { + content:"\e065"; +} + +.oi-eyedropper:before { + content:"\e066"; +} + +.oi-file:before { + content:"\e067"; +} + +.oi-fire:before { + content:"\e068"; +} + +.oi-flag:before { + content:"\e069"; +} + +.oi-flash:before { + content:"\e06a"; +} + +.oi-folder:before { + content:"\e06b"; +} + +.oi-fork:before { + content:"\e06c"; +} + +.oi-fullscreen-enter:before { + content:"\e06d"; +} + +.oi-fullscreen-exit:before { + content:"\e06e"; +} + +.oi-globe:before { + content:"\e06f"; +} + +.oi-graph:before { + content:"\e070"; +} + +.oi-grid-four-up:before { + content:"\e071"; +} + +.oi-grid-three-up:before { + content:"\e072"; +} + +.oi-grid-two-up:before { + content:"\e073"; +} + +.oi-hard-drive:before { + content:"\e074"; +} + +.oi-header:before { + content:"\e075"; +} + +.oi-headphones:before { + content:"\e076"; +} + +.oi-heart:before { + content:"\e077"; +} + +.oi-home:before { + content:"\e078"; +} + +.oi-image:before { + content:"\e079"; +} + +.oi-inbox:before { + content:"\e07a"; +} + +.oi-infinity:before { + content:"\e07b"; +} + +.oi-info:before { + content:"\e07c"; +} + +.oi-italic:before { + content:"\e07d"; +} + +.oi-justify-center:before { + content:"\e07e"; +} + +.oi-justify-left:before { + content:"\e07f"; +} + +.oi-justify-right:before { + content:"\e080"; +} + +.oi-key:before { + content:"\e081"; +} + +.oi-laptop:before { + content:"\e082"; +} + +.oi-layers:before { + content:"\e083"; +} + +.oi-lightbulb:before { + content:"\e084"; +} + +.oi-link-broken:before { + content:"\e085"; +} + +.oi-link-intact:before { + content:"\e086"; +} + +.oi-list-rich:before { + content:"\e087"; +} + +.oi-list:before { + content:"\e088"; +} + +.oi-location:before { + content:"\e089"; +} + +.oi-lock-locked:before { + content:"\e08a"; +} + +.oi-lock-unlocked:before { + content:"\e08b"; +} + +.oi-loop-circular:before { + content:"\e08c"; +} + +.oi-loop-square:before { + content:"\e08d"; +} + +.oi-loop:before { + content:"\e08e"; +} + +.oi-magnifying-glass:before { + content:"\e08f"; +} + +.oi-map-marker:before { + content:"\e090"; +} + +.oi-map:before { + content:"\e091"; +} + +.oi-media-pause:before { + content:"\e092"; +} + +.oi-media-play:before { + content:"\e093"; +} + +.oi-media-record:before { + content:"\e094"; +} + +.oi-media-skip-backward:before { + content:"\e095"; +} + +.oi-media-skip-forward:before { + content:"\e096"; +} + +.oi-media-step-backward:before { + content:"\e097"; +} + +.oi-media-step-forward:before { + content:"\e098"; +} + +.oi-media-stop:before { + content:"\e099"; +} + +.oi-medical-cross:before { + content:"\e09a"; +} + +.oi-menu:before { + content:"\e09b"; +} + +.oi-microphone:before { + content:"\e09c"; +} + +.oi-minus:before { + content:"\e09d"; +} + +.oi-monitor:before { + content:"\e09e"; +} + +.oi-moon:before { + content:"\e09f"; +} + +.oi-move:before { + content:"\e0a0"; +} + +.oi-musical-note:before { + content:"\e0a1"; +} + +.oi-paperclip:before { + content:"\e0a2"; +} + +.oi-pencil:before { + content:"\e0a3"; +} + +.oi-people:before { + content:"\e0a4"; +} + +.oi-person:before { + content:"\e0a5"; +} + +.oi-phone:before { + content:"\e0a6"; +} + +.oi-pie-chart:before { + content:"\e0a7"; +} + +.oi-pin:before { + content:"\e0a8"; +} + +.oi-play-circle:before { + content:"\e0a9"; +} + +.oi-plus:before { + content:"\e0aa"; +} + +.oi-power-standby:before { + content:"\e0ab"; +} + +.oi-print:before { + content:"\e0ac"; +} + +.oi-project:before { + content:"\e0ad"; +} + +.oi-pulse:before { + content:"\e0ae"; +} + +.oi-puzzle-piece:before { + content:"\e0af"; +} + +.oi-question-mark:before { + content:"\e0b0"; +} + +.oi-rain:before { + content:"\e0b1"; +} + +.oi-random:before { + content:"\e0b2"; +} + +.oi-reload:before { + content:"\e0b3"; +} + +.oi-resize-both:before { + content:"\e0b4"; +} + +.oi-resize-height:before { + content:"\e0b5"; +} + +.oi-resize-width:before { + content:"\e0b6"; +} + +.oi-rss-alt:before { + content:"\e0b7"; +} + +.oi-rss:before { + content:"\e0b8"; +} + +.oi-script:before { + content:"\e0b9"; +} + +.oi-share-boxed:before { + content:"\e0ba"; +} + +.oi-share:before { + content:"\e0bb"; +} + +.oi-shield:before { + content:"\e0bc"; +} + +.oi-signal:before { + content:"\e0bd"; +} + +.oi-signpost:before { + content:"\e0be"; +} + +.oi-sort-ascending:before { + content:"\e0bf"; +} + +.oi-sort-descending:before { + content:"\e0c0"; +} + +.oi-spreadsheet:before { + content:"\e0c1"; +} + +.oi-star:before { + content:"\e0c2"; +} + +.oi-sun:before { + content:"\e0c3"; +} + +.oi-tablet:before { + content:"\e0c4"; +} + +.oi-tag:before { + content:"\e0c5"; +} + +.oi-tags:before { + content:"\e0c6"; +} + +.oi-target:before { + content:"\e0c7"; +} + +.oi-task:before { + content:"\e0c8"; +} + +.oi-terminal:before { + content:"\e0c9"; +} + +.oi-text:before { + content:"\e0ca"; +} + +.oi-thumb-down:before { + content:"\e0cb"; +} + +.oi-thumb-up:before { + content:"\e0cc"; +} + +.oi-timer:before { + content:"\e0cd"; +} + +.oi-transfer:before { + content:"\e0ce"; +} + +.oi-trash:before { + content:"\e0cf"; +} + +.oi-underline:before { + content:"\e0d0"; +} + +.oi-vertical-align-bottom:before { + content:"\e0d1"; +} + +.oi-vertical-align-center:before { + content:"\e0d2"; +} + +.oi-vertical-align-top:before { + content:"\e0d3"; +} + +.oi-video:before { + content:"\e0d4"; +} + +.oi-volume-high:before { + content:"\e0d5"; +} + +.oi-volume-low:before { + content:"\e0d6"; +} + +.oi-volume-off:before { + content:"\e0d7"; +} + +.oi-warning:before { + content:"\e0d8"; +} + +.oi-wifi:before { + content:"\e0d9"; +} + +.oi-wrench:before { + content:"\e0da"; +} + +.oi-x:before { + content:"\e0db"; +} + +.oi-yen:before { + content:"\e0dc"; +} + +.oi-zoom-in:before { + content:"\e0dd"; +} + +.oi-zoom-out:before { + content:"\e0de"; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css new file mode 100644 index 00000000..4664f2e8 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss new file mode 100644 index 00000000..18f01e26 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss @@ -0,0 +1,958 @@ +/* Bootstrap */ + +/* Override Bootstrap default variable */ +$icon-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$icon-font-path}open-iconic.eot'); + src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +// Catchall baseclass +.oi { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-center:before { + text-align: center; + } + + &.oi-align-left:before { + text-align: left; + } + + &.oi-align-right:before { + text-align: right; + } + + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + + +.oi-account-login:before { + content:'\e000'; +} + +.oi-account-logout:before { + content:'\e001'; +} + +.oi-action-redo:before { + content:'\e002'; +} + +.oi-action-undo:before { + content:'\e003'; +} + +.oi-align-center:before { + content:'\e004'; +} + +.oi-align-left:before { + content:'\e005'; +} + +.oi-align-right:before { + content:'\e006'; +} + +.oi-aperture:before { + content:'\e007'; +} + +.oi-arrow-bottom:before { + content:'\e008'; +} + +.oi-arrow-circle-bottom:before { + content:'\e009'; +} + +.oi-arrow-circle-left:before { + content:'\e00a'; +} + +.oi-arrow-circle-right:before { + content:'\e00b'; +} + +.oi-arrow-circle-top:before { + content:'\e00c'; +} + +.oi-arrow-left:before { + content:'\e00d'; +} + +.oi-arrow-right:before { + content:'\e00e'; +} + +.oi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.oi-arrow-thick-left:before { + content:'\e010'; +} + +.oi-arrow-thick-right:before { + content:'\e011'; +} + +.oi-arrow-thick-top:before { + content:'\e012'; +} + +.oi-arrow-top:before { + content:'\e013'; +} + +.oi-audio-spectrum:before { + content:'\e014'; +} + +.oi-audio:before { + content:'\e015'; +} + +.oi-badge:before { + content:'\e016'; +} + +.oi-ban:before { + content:'\e017'; +} + +.oi-bar-chart:before { + content:'\e018'; +} + +.oi-basket:before { + content:'\e019'; +} + +.oi-battery-empty:before { + content:'\e01a'; +} + +.oi-battery-full:before { + content:'\e01b'; +} + +.oi-beaker:before { + content:'\e01c'; +} + +.oi-bell:before { + content:'\e01d'; +} + +.oi-bluetooth:before { + content:'\e01e'; +} + +.oi-bold:before { + content:'\e01f'; +} + +.oi-bolt:before { + content:'\e020'; +} + +.oi-book:before { + content:'\e021'; +} + +.oi-bookmark:before { + content:'\e022'; +} + +.oi-box:before { + content:'\e023'; +} + +.oi-briefcase:before { + content:'\e024'; +} + +.oi-british-pound:before { + content:'\e025'; +} + +.oi-browser:before { + content:'\e026'; +} + +.oi-brush:before { + content:'\e027'; +} + +.oi-bug:before { + content:'\e028'; +} + +.oi-bullhorn:before { + content:'\e029'; +} + +.oi-calculator:before { + content:'\e02a'; +} + +.oi-calendar:before { + content:'\e02b'; +} + +.oi-camera-slr:before { + content:'\e02c'; +} + +.oi-caret-bottom:before { + content:'\e02d'; +} + +.oi-caret-left:before { + content:'\e02e'; +} + +.oi-caret-right:before { + content:'\e02f'; +} + +.oi-caret-top:before { + content:'\e030'; +} + +.oi-cart:before { + content:'\e031'; +} + +.oi-chat:before { + content:'\e032'; +} + +.oi-check:before { + content:'\e033'; +} + +.oi-chevron-bottom:before { + content:'\e034'; +} + +.oi-chevron-left:before { + content:'\e035'; +} + +.oi-chevron-right:before { + content:'\e036'; +} + +.oi-chevron-top:before { + content:'\e037'; +} + +.oi-circle-check:before { + content:'\e038'; +} + +.oi-circle-x:before { + content:'\e039'; +} + +.oi-clipboard:before { + content:'\e03a'; +} + +.oi-clock:before { + content:'\e03b'; +} + +.oi-cloud-download:before { + content:'\e03c'; +} + +.oi-cloud-upload:before { + content:'\e03d'; +} + +.oi-cloud:before { + content:'\e03e'; +} + +.oi-cloudy:before { + content:'\e03f'; +} + +.oi-code:before { + content:'\e040'; +} + +.oi-cog:before { + content:'\e041'; +} + +.oi-collapse-down:before { + content:'\e042'; +} + +.oi-collapse-left:before { + content:'\e043'; +} + +.oi-collapse-right:before { + content:'\e044'; +} + +.oi-collapse-up:before { + content:'\e045'; +} + +.oi-command:before { + content:'\e046'; +} + +.oi-comment-square:before { + content:'\e047'; +} + +.oi-compass:before { + content:'\e048'; +} + +.oi-contrast:before { + content:'\e049'; +} + +.oi-copywriting:before { + content:'\e04a'; +} + +.oi-credit-card:before { + content:'\e04b'; +} + +.oi-crop:before { + content:'\e04c'; +} + +.oi-dashboard:before { + content:'\e04d'; +} + +.oi-data-transfer-download:before { + content:'\e04e'; +} + +.oi-data-transfer-upload:before { + content:'\e04f'; +} + +.oi-delete:before { + content:'\e050'; +} + +.oi-dial:before { + content:'\e051'; +} + +.oi-document:before { + content:'\e052'; +} + +.oi-dollar:before { + content:'\e053'; +} + +.oi-double-quote-sans-left:before { + content:'\e054'; +} + +.oi-double-quote-sans-right:before { + content:'\e055'; +} + +.oi-double-quote-serif-left:before { + content:'\e056'; +} + +.oi-double-quote-serif-right:before { + content:'\e057'; +} + +.oi-droplet:before { + content:'\e058'; +} + +.oi-eject:before { + content:'\e059'; +} + +.oi-elevator:before { + content:'\e05a'; +} + +.oi-ellipses:before { + content:'\e05b'; +} + +.oi-envelope-closed:before { + content:'\e05c'; +} + +.oi-envelope-open:before { + content:'\e05d'; +} + +.oi-euro:before { + content:'\e05e'; +} + +.oi-excerpt:before { + content:'\e05f'; +} + +.oi-expand-down:before { + content:'\e060'; +} + +.oi-expand-left:before { + content:'\e061'; +} + +.oi-expand-right:before { + content:'\e062'; +} + +.oi-expand-up:before { + content:'\e063'; +} + +.oi-external-link:before { + content:'\e064'; +} + +.oi-eye:before { + content:'\e065'; +} + +.oi-eyedropper:before { + content:'\e066'; +} + +.oi-file:before { + content:'\e067'; +} + +.oi-fire:before { + content:'\e068'; +} + +.oi-flag:before { + content:'\e069'; +} + +.oi-flash:before { + content:'\e06a'; +} + +.oi-folder:before { + content:'\e06b'; +} + +.oi-fork:before { + content:'\e06c'; +} + +.oi-fullscreen-enter:before { + content:'\e06d'; +} + +.oi-fullscreen-exit:before { + content:'\e06e'; +} + +.oi-globe:before { + content:'\e06f'; +} + +.oi-graph:before { + content:'\e070'; +} + +.oi-grid-four-up:before { + content:'\e071'; +} + +.oi-grid-three-up:before { + content:'\e072'; +} + +.oi-grid-two-up:before { + content:'\e073'; +} + +.oi-hard-drive:before { + content:'\e074'; +} + +.oi-header:before { + content:'\e075'; +} + +.oi-headphones:before { + content:'\e076'; +} + +.oi-heart:before { + content:'\e077'; +} + +.oi-home:before { + content:'\e078'; +} + +.oi-image:before { + content:'\e079'; +} + +.oi-inbox:before { + content:'\e07a'; +} + +.oi-infinity:before { + content:'\e07b'; +} + +.oi-info:before { + content:'\e07c'; +} + +.oi-italic:before { + content:'\e07d'; +} + +.oi-justify-center:before { + content:'\e07e'; +} + +.oi-justify-left:before { + content:'\e07f'; +} + +.oi-justify-right:before { + content:'\e080'; +} + +.oi-key:before { + content:'\e081'; +} + +.oi-laptop:before { + content:'\e082'; +} + +.oi-layers:before { + content:'\e083'; +} + +.oi-lightbulb:before { + content:'\e084'; +} + +.oi-link-broken:before { + content:'\e085'; +} + +.oi-link-intact:before { + content:'\e086'; +} + +.oi-list-rich:before { + content:'\e087'; +} + +.oi-list:before { + content:'\e088'; +} + +.oi-location:before { + content:'\e089'; +} + +.oi-lock-locked:before { + content:'\e08a'; +} + +.oi-lock-unlocked:before { + content:'\e08b'; +} + +.oi-loop-circular:before { + content:'\e08c'; +} + +.oi-loop-square:before { + content:'\e08d'; +} + +.oi-loop:before { + content:'\e08e'; +} + +.oi-magnifying-glass:before { + content:'\e08f'; +} + +.oi-map-marker:before { + content:'\e090'; +} + +.oi-map:before { + content:'\e091'; +} + +.oi-media-pause:before { + content:'\e092'; +} + +.oi-media-play:before { + content:'\e093'; +} + +.oi-media-record:before { + content:'\e094'; +} + +.oi-media-skip-backward:before { + content:'\e095'; +} + +.oi-media-skip-forward:before { + content:'\e096'; +} + +.oi-media-step-backward:before { + content:'\e097'; +} + +.oi-media-step-forward:before { + content:'\e098'; +} + +.oi-media-stop:before { + content:'\e099'; +} + +.oi-medical-cross:before { + content:'\e09a'; +} + +.oi-menu:before { + content:'\e09b'; +} + +.oi-microphone:before { + content:'\e09c'; +} + +.oi-minus:before { + content:'\e09d'; +} + +.oi-monitor:before { + content:'\e09e'; +} + +.oi-moon:before { + content:'\e09f'; +} + +.oi-move:before { + content:'\e0a0'; +} + +.oi-musical-note:before { + content:'\e0a1'; +} + +.oi-paperclip:before { + content:'\e0a2'; +} + +.oi-pencil:before { + content:'\e0a3'; +} + +.oi-people:before { + content:'\e0a4'; +} + +.oi-person:before { + content:'\e0a5'; +} + +.oi-phone:before { + content:'\e0a6'; +} + +.oi-pie-chart:before { + content:'\e0a7'; +} + +.oi-pin:before { + content:'\e0a8'; +} + +.oi-play-circle:before { + content:'\e0a9'; +} + +.oi-plus:before { + content:'\e0aa'; +} + +.oi-power-standby:before { + content:'\e0ab'; +} + +.oi-print:before { + content:'\e0ac'; +} + +.oi-project:before { + content:'\e0ad'; +} + +.oi-pulse:before { + content:'\e0ae'; +} + +.oi-puzzle-piece:before { + content:'\e0af'; +} + +.oi-question-mark:before { + content:'\e0b0'; +} + +.oi-rain:before { + content:'\e0b1'; +} + +.oi-random:before { + content:'\e0b2'; +} + +.oi-reload:before { + content:'\e0b3'; +} + +.oi-resize-both:before { + content:'\e0b4'; +} + +.oi-resize-height:before { + content:'\e0b5'; +} + +.oi-resize-width:before { + content:'\e0b6'; +} + +.oi-rss-alt:before { + content:'\e0b7'; +} + +.oi-rss:before { + content:'\e0b8'; +} + +.oi-script:before { + content:'\e0b9'; +} + +.oi-share-boxed:before { + content:'\e0ba'; +} + +.oi-share:before { + content:'\e0bb'; +} + +.oi-shield:before { + content:'\e0bc'; +} + +.oi-signal:before { + content:'\e0bd'; +} + +.oi-signpost:before { + content:'\e0be'; +} + +.oi-sort-ascending:before { + content:'\e0bf'; +} + +.oi-sort-descending:before { + content:'\e0c0'; +} + +.oi-spreadsheet:before { + content:'\e0c1'; +} + +.oi-star:before { + content:'\e0c2'; +} + +.oi-sun:before { + content:'\e0c3'; +} + +.oi-tablet:before { + content:'\e0c4'; +} + +.oi-tag:before { + content:'\e0c5'; +} + +.oi-tags:before { + content:'\e0c6'; +} + +.oi-target:before { + content:'\e0c7'; +} + +.oi-task:before { + content:'\e0c8'; +} + +.oi-terminal:before { + content:'\e0c9'; +} + +.oi-text:before { + content:'\e0ca'; +} + +.oi-thumb-down:before { + content:'\e0cb'; +} + +.oi-thumb-up:before { + content:'\e0cc'; +} + +.oi-timer:before { + content:'\e0cd'; +} + +.oi-transfer:before { + content:'\e0ce'; +} + +.oi-trash:before { + content:'\e0cf'; +} + +.oi-underline:before { + content:'\e0d0'; +} + +.oi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.oi-vertical-align-center:before { + content:'\e0d2'; +} + +.oi-vertical-align-top:before { + content:'\e0d3'; +} + +.oi-video:before { + content:'\e0d4'; +} + +.oi-volume-high:before { + content:'\e0d5'; +} + +.oi-volume-low:before { + content:'\e0d6'; +} + +.oi-volume-off:before { + content:'\e0d7'; +} + +.oi-warning:before { + content:'\e0d8'; +} + +.oi-wifi:before { + content:'\e0d9'; +} + +.oi-wrench:before { + content:'\e0da'; +} + +.oi-x:before { + content:'\e0db'; +} + +.oi-yen:before { + content:'\e0dc'; +} + +.oi-zoom-in:before { + content:'\e0dd'; +} + +.oi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl new file mode 100644 index 00000000..0afa2548 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl @@ -0,0 +1,954 @@ +/* Bootstrap */ + +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + +// Catchall baseclass +.oi + position relative + top 1px + display inline-block + font-family 'Icons' + font-style normal + font-weight normal + line-height 1 + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + + + &:empty:before + width 1em + text-align center + box-sizing content-box + + &.oi-align-center:before + text-align center + + + &.oi-align-left:before + text-align left + + + &.oi-align-right:before + text-align right + + + + &.oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + + &.oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + + &.oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + + + + +.oi-account-login:before { + content'\e000' +} + +.oi-account-logout:before { + content'\e001' +} + +.oi-action-redo:before { + content'\e002' +} + +.oi-action-undo:before { + content'\e003' +} + +.oi-align-center:before { + content'\e004' +} + +.oi-align-left:before { + content'\e005' +} + +.oi-align-right:before { + content'\e006' +} + +.oi-aperture:before { + content'\e007' +} + +.oi-arrow-bottom:before { + content'\e008' +} + +.oi-arrow-circle-bottom:before { + content'\e009' +} + +.oi-arrow-circle-left:before { + content'\e00a' +} + +.oi-arrow-circle-right:before { + content'\e00b' +} + +.oi-arrow-circle-top:before { + content'\e00c' +} + +.oi-arrow-left:before { + content'\e00d' +} + +.oi-arrow-right:before { + content'\e00e' +} + +.oi-arrow-thick-bottom:before { + content'\e00f' +} + +.oi-arrow-thick-left:before { + content'\e010' +} + +.oi-arrow-thick-right:before { + content'\e011' +} + +.oi-arrow-thick-top:before { + content'\e012' +} + +.oi-arrow-top:before { + content'\e013' +} + +.oi-audio-spectrum:before { + content'\e014' +} + +.oi-audio:before { + content'\e015' +} + +.oi-badge:before { + content'\e016' +} + +.oi-ban:before { + content'\e017' +} + +.oi-bar-chart:before { + content'\e018' +} + +.oi-basket:before { + content'\e019' +} + +.oi-battery-empty:before { + content'\e01a' +} + +.oi-battery-full:before { + content'\e01b' +} + +.oi-beaker:before { + content'\e01c' +} + +.oi-bell:before { + content'\e01d' +} + +.oi-bluetooth:before { + content'\e01e' +} + +.oi-bold:before { + content'\e01f' +} + +.oi-bolt:before { + content'\e020' +} + +.oi-book:before { + content'\e021' +} + +.oi-bookmark:before { + content'\e022' +} + +.oi-box:before { + content'\e023' +} + +.oi-briefcase:before { + content'\e024' +} + +.oi-british-pound:before { + content'\e025' +} + +.oi-browser:before { + content'\e026' +} + +.oi-brush:before { + content'\e027' +} + +.oi-bug:before { + content'\e028' +} + +.oi-bullhorn:before { + content'\e029' +} + +.oi-calculator:before { + content'\e02a' +} + +.oi-calendar:before { + content'\e02b' +} + +.oi-camera-slr:before { + content'\e02c' +} + +.oi-caret-bottom:before { + content'\e02d' +} + +.oi-caret-left:before { + content'\e02e' +} + +.oi-caret-right:before { + content'\e02f' +} + +.oi-caret-top:before { + content'\e030' +} + +.oi-cart:before { + content'\e031' +} + +.oi-chat:before { + content'\e032' +} + +.oi-check:before { + content'\e033' +} + +.oi-chevron-bottom:before { + content'\e034' +} + +.oi-chevron-left:before { + content'\e035' +} + +.oi-chevron-right:before { + content'\e036' +} + +.oi-chevron-top:before { + content'\e037' +} + +.oi-circle-check:before { + content'\e038' +} + +.oi-circle-x:before { + content'\e039' +} + +.oi-clipboard:before { + content'\e03a' +} + +.oi-clock:before { + content'\e03b' +} + +.oi-cloud-download:before { + content'\e03c' +} + +.oi-cloud-upload:before { + content'\e03d' +} + +.oi-cloud:before { + content'\e03e' +} + +.oi-cloudy:before { + content'\e03f' +} + +.oi-code:before { + content'\e040' +} + +.oi-cog:before { + content'\e041' +} + +.oi-collapse-down:before { + content'\e042' +} + +.oi-collapse-left:before { + content'\e043' +} + +.oi-collapse-right:before { + content'\e044' +} + +.oi-collapse-up:before { + content'\e045' +} + +.oi-command:before { + content'\e046' +} + +.oi-comment-square:before { + content'\e047' +} + +.oi-compass:before { + content'\e048' +} + +.oi-contrast:before { + content'\e049' +} + +.oi-copywriting:before { + content'\e04a' +} + +.oi-credit-card:before { + content'\e04b' +} + +.oi-crop:before { + content'\e04c' +} + +.oi-dashboard:before { + content'\e04d' +} + +.oi-data-transfer-download:before { + content'\e04e' +} + +.oi-data-transfer-upload:before { + content'\e04f' +} + +.oi-delete:before { + content'\e050' +} + +.oi-dial:before { + content'\e051' +} + +.oi-document:before { + content'\e052' +} + +.oi-dollar:before { + content'\e053' +} + +.oi-double-quote-sans-left:before { + content'\e054' +} + +.oi-double-quote-sans-right:before { + content'\e055' +} + +.oi-double-quote-serif-left:before { + content'\e056' +} + +.oi-double-quote-serif-right:before { + content'\e057' +} + +.oi-droplet:before { + content'\e058' +} + +.oi-eject:before { + content'\e059' +} + +.oi-elevator:before { + content'\e05a' +} + +.oi-ellipses:before { + content'\e05b' +} + +.oi-envelope-closed:before { + content'\e05c' +} + +.oi-envelope-open:before { + content'\e05d' +} + +.oi-euro:before { + content'\e05e' +} + +.oi-excerpt:before { + content'\e05f' +} + +.oi-expand-down:before { + content'\e060' +} + +.oi-expand-left:before { + content'\e061' +} + +.oi-expand-right:before { + content'\e062' +} + +.oi-expand-up:before { + content'\e063' +} + +.oi-external-link:before { + content'\e064' +} + +.oi-eye:before { + content'\e065' +} + +.oi-eyedropper:before { + content'\e066' +} + +.oi-file:before { + content'\e067' +} + +.oi-fire:before { + content'\e068' +} + +.oi-flag:before { + content'\e069' +} + +.oi-flash:before { + content'\e06a' +} + +.oi-folder:before { + content'\e06b' +} + +.oi-fork:before { + content'\e06c' +} + +.oi-fullscreen-enter:before { + content'\e06d' +} + +.oi-fullscreen-exit:before { + content'\e06e' +} + +.oi-globe:before { + content'\e06f' +} + +.oi-graph:before { + content'\e070' +} + +.oi-grid-four-up:before { + content'\e071' +} + +.oi-grid-three-up:before { + content'\e072' +} + +.oi-grid-two-up:before { + content'\e073' +} + +.oi-hard-drive:before { + content'\e074' +} + +.oi-header:before { + content'\e075' +} + +.oi-headphones:before { + content'\e076' +} + +.oi-heart:before { + content'\e077' +} + +.oi-home:before { + content'\e078' +} + +.oi-image:before { + content'\e079' +} + +.oi-inbox:before { + content'\e07a' +} + +.oi-infinity:before { + content'\e07b' +} + +.oi-info:before { + content'\e07c' +} + +.oi-italic:before { + content'\e07d' +} + +.oi-justify-center:before { + content'\e07e' +} + +.oi-justify-left:before { + content'\e07f' +} + +.oi-justify-right:before { + content'\e080' +} + +.oi-key:before { + content'\e081' +} + +.oi-laptop:before { + content'\e082' +} + +.oi-layers:before { + content'\e083' +} + +.oi-lightbulb:before { + content'\e084' +} + +.oi-link-broken:before { + content'\e085' +} + +.oi-link-intact:before { + content'\e086' +} + +.oi-list-rich:before { + content'\e087' +} + +.oi-list:before { + content'\e088' +} + +.oi-location:before { + content'\e089' +} + +.oi-lock-locked:before { + content'\e08a' +} + +.oi-lock-unlocked:before { + content'\e08b' +} + +.oi-loop-circular:before { + content'\e08c' +} + +.oi-loop-square:before { + content'\e08d' +} + +.oi-loop:before { + content'\e08e' +} + +.oi-magnifying-glass:before { + content'\e08f' +} + +.oi-map-marker:before { + content'\e090' +} + +.oi-map:before { + content'\e091' +} + +.oi-media-pause:before { + content'\e092' +} + +.oi-media-play:before { + content'\e093' +} + +.oi-media-record:before { + content'\e094' +} + +.oi-media-skip-backward:before { + content'\e095' +} + +.oi-media-skip-forward:before { + content'\e096' +} + +.oi-media-step-backward:before { + content'\e097' +} + +.oi-media-step-forward:before { + content'\e098' +} + +.oi-media-stop:before { + content'\e099' +} + +.oi-medical-cross:before { + content'\e09a' +} + +.oi-menu:before { + content'\e09b' +} + +.oi-microphone:before { + content'\e09c' +} + +.oi-minus:before { + content'\e09d' +} + +.oi-monitor:before { + content'\e09e' +} + +.oi-moon:before { + content'\e09f' +} + +.oi-move:before { + content'\e0a0' +} + +.oi-musical-note:before { + content'\e0a1' +} + +.oi-paperclip:before { + content'\e0a2' +} + +.oi-pencil:before { + content'\e0a3' +} + +.oi-people:before { + content'\e0a4' +} + +.oi-person:before { + content'\e0a5' +} + +.oi-phone:before { + content'\e0a6' +} + +.oi-pie-chart:before { + content'\e0a7' +} + +.oi-pin:before { + content'\e0a8' +} + +.oi-play-circle:before { + content'\e0a9' +} + +.oi-plus:before { + content'\e0aa' +} + +.oi-power-standby:before { + content'\e0ab' +} + +.oi-print:before { + content'\e0ac' +} + +.oi-project:before { + content'\e0ad' +} + +.oi-pulse:before { + content'\e0ae' +} + +.oi-puzzle-piece:before { + content'\e0af' +} + +.oi-question-mark:before { + content'\e0b0' +} + +.oi-rain:before { + content'\e0b1' +} + +.oi-random:before { + content'\e0b2' +} + +.oi-reload:before { + content'\e0b3' +} + +.oi-resize-both:before { + content'\e0b4' +} + +.oi-resize-height:before { + content'\e0b5' +} + +.oi-resize-width:before { + content'\e0b6' +} + +.oi-rss-alt:before { + content'\e0b7' +} + +.oi-rss:before { + content'\e0b8' +} + +.oi-script:before { + content'\e0b9' +} + +.oi-share-boxed:before { + content'\e0ba' +} + +.oi-share:before { + content'\e0bb' +} + +.oi-shield:before { + content'\e0bc' +} + +.oi-signal:before { + content'\e0bd' +} + +.oi-signpost:before { + content'\e0be' +} + +.oi-sort-ascending:before { + content'\e0bf' +} + +.oi-sort-descending:before { + content'\e0c0' +} + +.oi-spreadsheet:before { + content'\e0c1' +} + +.oi-star:before { + content'\e0c2' +} + +.oi-sun:before { + content'\e0c3' +} + +.oi-tablet:before { + content'\e0c4' +} + +.oi-tag:before { + content'\e0c5' +} + +.oi-tags:before { + content'\e0c6' +} + +.oi-target:before { + content'\e0c7' +} + +.oi-task:before { + content'\e0c8' +} + +.oi-terminal:before { + content'\e0c9' +} + +.oi-text:before { + content'\e0ca' +} + +.oi-thumb-down:before { + content'\e0cb' +} + +.oi-thumb-up:before { + content'\e0cc' +} + +.oi-timer:before { + content'\e0cd' +} + +.oi-transfer:before { + content'\e0ce' +} + +.oi-trash:before { + content'\e0cf' +} + +.oi-underline:before { + content'\e0d0' +} + +.oi-vertical-align-bottom:before { + content'\e0d1' +} + +.oi-vertical-align-center:before { + content'\e0d2' +} + +.oi-vertical-align-top:before { + content'\e0d3' +} + +.oi-video:before { + content'\e0d4' +} + +.oi-volume-high:before { + content'\e0d5' +} + +.oi-volume-low:before { + content'\e0d6' +} + +.oi-volume-off:before { + content'\e0d7' +} + +.oi-warning:before { + content'\e0d8' +} + +.oi-wifi:before { + content'\e0d9' +} + +.oi-wrench:before { + content'\e0da' +} + +.oi-x:before { + content'\e0db' +} + +.oi-yen:before { + content'\e0dc' +} + +.oi-zoom-in:before { + content'\e0dd' +} + +.oi-zoom-out:before { + content'\e0de' +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css new file mode 100644 index 00000000..905a8212 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css @@ -0,0 +1,1395 @@ +/* Foundation */ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less new file mode 100644 index 00000000..deabf26f --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less @@ -0,0 +1,1397 @@ +/* Foundation */ + +/* Font path variable */ +@icon-font-path: '../fonts/'; + +@font-face { + font-family: 'Icons'; + src: url('@{icon-font-path}open-iconic.eot'); + src: url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{icon-font-path}open-iconic.woff') format('woff'), url('@{icon-font-path}open-iconic.ttf') format('truetype'), url('@{icon-font-path}open-iconic.otf') format('opentype'), url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css new file mode 100644 index 00000000..bd124297 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.fi-account-login:before,.fi-account-logout:before,.fi-action-redo:before,.fi-action-undo:before,.fi-align-center:before,.fi-align-left:before,.fi-align-right:before,.fi-aperture:before,.fi-arrow-bottom:before,.fi-arrow-circle-bottom:before,.fi-arrow-circle-left:before,.fi-arrow-circle-right:before,.fi-arrow-circle-top:before,.fi-arrow-left:before,.fi-arrow-right:before,.fi-arrow-thick-bottom:before,.fi-arrow-thick-left:before,.fi-arrow-thick-right:before,.fi-arrow-thick-top:before,.fi-arrow-top:before,.fi-audio-spectrum:before,.fi-audio:before,.fi-badge:before,.fi-ban:before,.fi-bar-chart:before,.fi-basket:before,.fi-battery-empty:before,.fi-battery-full:before,.fi-beaker:before,.fi-bell:before,.fi-bluetooth:before,.fi-bold:before,.fi-bolt:before,.fi-book:before,.fi-bookmark:before,.fi-box:before,.fi-briefcase:before,.fi-british-pound:before,.fi-browser:before,.fi-brush:before,.fi-bug:before,.fi-bullhorn:before,.fi-calculator:before,.fi-calendar:before,.fi-camera-slr:before,.fi-caret-bottom:before,.fi-caret-left:before,.fi-caret-right:before,.fi-caret-top:before,.fi-cart:before,.fi-chat:before,.fi-check:before,.fi-chevron-bottom:before,.fi-chevron-left:before,.fi-chevron-right:before,.fi-chevron-top:before,.fi-circle-check:before,.fi-circle-x:before,.fi-clipboard:before,.fi-clock:before,.fi-cloud-download:before,.fi-cloud-upload:before,.fi-cloud:before,.fi-cloudy:before,.fi-code:before,.fi-cog:before,.fi-collapse-down:before,.fi-collapse-left:before,.fi-collapse-right:before,.fi-collapse-up:before,.fi-command:before,.fi-comment-square:before,.fi-compass:before,.fi-contrast:before,.fi-copywriting:before,.fi-credit-card:before,.fi-crop:before,.fi-dashboard:before,.fi-data-transfer-download:before,.fi-data-transfer-upload:before,.fi-delete:before,.fi-dial:before,.fi-document:before,.fi-dollar:before,.fi-double-quote-sans-left:before,.fi-double-quote-sans-right:before,.fi-double-quote-serif-left:before,.fi-double-quote-serif-right:before,.fi-droplet:before,.fi-eject:before,.fi-elevator:before,.fi-ellipses:before,.fi-envelope-closed:before,.fi-envelope-open:before,.fi-euro:before,.fi-excerpt:before,.fi-expand-down:before,.fi-expand-left:before,.fi-expand-right:before,.fi-expand-up:before,.fi-external-link:before,.fi-eye:before,.fi-eyedropper:before,.fi-file:before,.fi-fire:before,.fi-flag:before,.fi-flash:before,.fi-folder:before,.fi-fork:before,.fi-fullscreen-enter:before,.fi-fullscreen-exit:before,.fi-globe:before,.fi-graph:before,.fi-grid-four-up:before,.fi-grid-three-up:before,.fi-grid-two-up:before,.fi-hard-drive:before,.fi-header:before,.fi-headphones:before,.fi-heart:before,.fi-home:before,.fi-image:before,.fi-inbox:before,.fi-infinity:before,.fi-info:before,.fi-italic:before,.fi-justify-center:before,.fi-justify-left:before,.fi-justify-right:before,.fi-key:before,.fi-laptop:before,.fi-layers:before,.fi-lightbulb:before,.fi-link-broken:before,.fi-link-intact:before,.fi-list-rich:before,.fi-list:before,.fi-location:before,.fi-lock-locked:before,.fi-lock-unlocked:before,.fi-loop-circular:before,.fi-loop-square:before,.fi-loop:before,.fi-magnifying-glass:before,.fi-map-marker:before,.fi-map:before,.fi-media-pause:before,.fi-media-play:before,.fi-media-record:before,.fi-media-skip-backward:before,.fi-media-skip-forward:before,.fi-media-step-backward:before,.fi-media-step-forward:before,.fi-media-stop:before,.fi-medical-cross:before,.fi-menu:before,.fi-microphone:before,.fi-minus:before,.fi-monitor:before,.fi-moon:before,.fi-move:before,.fi-musical-note:before,.fi-paperclip:before,.fi-pencil:before,.fi-people:before,.fi-person:before,.fi-phone:before,.fi-pie-chart:before,.fi-pin:before,.fi-play-circle:before,.fi-plus:before,.fi-power-standby:before,.fi-print:before,.fi-project:before,.fi-pulse:before,.fi-puzzle-piece:before,.fi-question-mark:before,.fi-rain:before,.fi-random:before,.fi-reload:before,.fi-resize-both:before,.fi-resize-height:before,.fi-resize-width:before,.fi-rss-alt:before,.fi-rss:before,.fi-script:before,.fi-share-boxed:before,.fi-share:before,.fi-shield:before,.fi-signal:before,.fi-signpost:before,.fi-sort-ascending:before,.fi-sort-descending:before,.fi-spreadsheet:before,.fi-star:before,.fi-sun:before,.fi-tablet:before,.fi-tag:before,.fi-tags:before,.fi-target:before,.fi-task:before,.fi-terminal:before,.fi-text:before,.fi-thumb-down:before,.fi-thumb-up:before,.fi-timer:before,.fi-transfer:before,.fi-trash:before,.fi-underline:before,.fi-vertical-align-bottom:before,.fi-vertical-align-center:before,.fi-vertical-align-top:before,.fi-video:before,.fi-volume-high:before,.fi-volume-low:before,.fi-volume-off:before,.fi-warning:before,.fi-wifi:before,.fi-wrench:before,.fi-x:before,.fi-yen:before,.fi-zoom-in:before,.fi-zoom-out:before{font-family:Icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-decoration:inherit}[class*=fi-].oi-align-center:before{text-align:center}[class*=fi-].oi-align-left:before{text-align:left}[class*=fi-].oi-align-right:before{text-align:right}[class*=fi-].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}[class*=fi-].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}[class*=fi-].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.fi-account-login:before{content:'\e000'}.fi-account-logout:before{content:'\e001'}.fi-action-redo:before{content:'\e002'}.fi-action-undo:before{content:'\e003'}.fi-align-center:before{content:'\e004'}.fi-align-left:before{content:'\e005'}.fi-align-right:before{content:'\e006'}.fi-aperture:before{content:'\e007'}.fi-arrow-bottom:before{content:'\e008'}.fi-arrow-circle-bottom:before{content:'\e009'}.fi-arrow-circle-left:before{content:'\e00a'}.fi-arrow-circle-right:before{content:'\e00b'}.fi-arrow-circle-top:before{content:'\e00c'}.fi-arrow-left:before{content:'\e00d'}.fi-arrow-right:before{content:'\e00e'}.fi-arrow-thick-bottom:before{content:'\e00f'}.fi-arrow-thick-left:before{content:'\e010'}.fi-arrow-thick-right:before{content:'\e011'}.fi-arrow-thick-top:before{content:'\e012'}.fi-arrow-top:before{content:'\e013'}.fi-audio-spectrum:before{content:'\e014'}.fi-audio:before{content:'\e015'}.fi-badge:before{content:'\e016'}.fi-ban:before{content:'\e017'}.fi-bar-chart:before{content:'\e018'}.fi-basket:before{content:'\e019'}.fi-battery-empty:before{content:'\e01a'}.fi-battery-full:before{content:'\e01b'}.fi-beaker:before{content:'\e01c'}.fi-bell:before{content:'\e01d'}.fi-bluetooth:before{content:'\e01e'}.fi-bold:before{content:'\e01f'}.fi-bolt:before{content:'\e020'}.fi-book:before{content:'\e021'}.fi-bookmark:before{content:'\e022'}.fi-box:before{content:'\e023'}.fi-briefcase:before{content:'\e024'}.fi-british-pound:before{content:'\e025'}.fi-browser:before{content:'\e026'}.fi-brush:before{content:'\e027'}.fi-bug:before{content:'\e028'}.fi-bullhorn:before{content:'\e029'}.fi-calculator:before{content:'\e02a'}.fi-calendar:before{content:'\e02b'}.fi-camera-slr:before{content:'\e02c'}.fi-caret-bottom:before{content:'\e02d'}.fi-caret-left:before{content:'\e02e'}.fi-caret-right:before{content:'\e02f'}.fi-caret-top:before{content:'\e030'}.fi-cart:before{content:'\e031'}.fi-chat:before{content:'\e032'}.fi-check:before{content:'\e033'}.fi-chevron-bottom:before{content:'\e034'}.fi-chevron-left:before{content:'\e035'}.fi-chevron-right:before{content:'\e036'}.fi-chevron-top:before{content:'\e037'}.fi-circle-check:before{content:'\e038'}.fi-circle-x:before{content:'\e039'}.fi-clipboard:before{content:'\e03a'}.fi-clock:before{content:'\e03b'}.fi-cloud-download:before{content:'\e03c'}.fi-cloud-upload:before{content:'\e03d'}.fi-cloud:before{content:'\e03e'}.fi-cloudy:before{content:'\e03f'}.fi-code:before{content:'\e040'}.fi-cog:before{content:'\e041'}.fi-collapse-down:before{content:'\e042'}.fi-collapse-left:before{content:'\e043'}.fi-collapse-right:before{content:'\e044'}.fi-collapse-up:before{content:'\e045'}.fi-command:before{content:'\e046'}.fi-comment-square:before{content:'\e047'}.fi-compass:before{content:'\e048'}.fi-contrast:before{content:'\e049'}.fi-copywriting:before{content:'\e04a'}.fi-credit-card:before{content:'\e04b'}.fi-crop:before{content:'\e04c'}.fi-dashboard:before{content:'\e04d'}.fi-data-transfer-download:before{content:'\e04e'}.fi-data-transfer-upload:before{content:'\e04f'}.fi-delete:before{content:'\e050'}.fi-dial:before{content:'\e051'}.fi-document:before{content:'\e052'}.fi-dollar:before{content:'\e053'}.fi-double-quote-sans-left:before{content:'\e054'}.fi-double-quote-sans-right:before{content:'\e055'}.fi-double-quote-serif-left:before{content:'\e056'}.fi-double-quote-serif-right:before{content:'\e057'}.fi-droplet:before{content:'\e058'}.fi-eject:before{content:'\e059'}.fi-elevator:before{content:'\e05a'}.fi-ellipses:before{content:'\e05b'}.fi-envelope-closed:before{content:'\e05c'}.fi-envelope-open:before{content:'\e05d'}.fi-euro:before{content:'\e05e'}.fi-excerpt:before{content:'\e05f'}.fi-expand-down:before{content:'\e060'}.fi-expand-left:before{content:'\e061'}.fi-expand-right:before{content:'\e062'}.fi-expand-up:before{content:'\e063'}.fi-external-link:before{content:'\e064'}.fi-eye:before{content:'\e065'}.fi-eyedropper:before{content:'\e066'}.fi-file:before{content:'\e067'}.fi-fire:before{content:'\e068'}.fi-flag:before{content:'\e069'}.fi-flash:before{content:'\e06a'}.fi-folder:before{content:'\e06b'}.fi-fork:before{content:'\e06c'}.fi-fullscreen-enter:before{content:'\e06d'}.fi-fullscreen-exit:before{content:'\e06e'}.fi-globe:before{content:'\e06f'}.fi-graph:before{content:'\e070'}.fi-grid-four-up:before{content:'\e071'}.fi-grid-three-up:before{content:'\e072'}.fi-grid-two-up:before{content:'\e073'}.fi-hard-drive:before{content:'\e074'}.fi-header:before{content:'\e075'}.fi-headphones:before{content:'\e076'}.fi-heart:before{content:'\e077'}.fi-home:before{content:'\e078'}.fi-image:before{content:'\e079'}.fi-inbox:before{content:'\e07a'}.fi-infinity:before{content:'\e07b'}.fi-info:before{content:'\e07c'}.fi-italic:before{content:'\e07d'}.fi-justify-center:before{content:'\e07e'}.fi-justify-left:before{content:'\e07f'}.fi-justify-right:before{content:'\e080'}.fi-key:before{content:'\e081'}.fi-laptop:before{content:'\e082'}.fi-layers:before{content:'\e083'}.fi-lightbulb:before{content:'\e084'}.fi-link-broken:before{content:'\e085'}.fi-link-intact:before{content:'\e086'}.fi-list-rich:before{content:'\e087'}.fi-list:before{content:'\e088'}.fi-location:before{content:'\e089'}.fi-lock-locked:before{content:'\e08a'}.fi-lock-unlocked:before{content:'\e08b'}.fi-loop-circular:before{content:'\e08c'}.fi-loop-square:before{content:'\e08d'}.fi-loop:before{content:'\e08e'}.fi-magnifying-glass:before{content:'\e08f'}.fi-map-marker:before{content:'\e090'}.fi-map:before{content:'\e091'}.fi-media-pause:before{content:'\e092'}.fi-media-play:before{content:'\e093'}.fi-media-record:before{content:'\e094'}.fi-media-skip-backward:before{content:'\e095'}.fi-media-skip-forward:before{content:'\e096'}.fi-media-step-backward:before{content:'\e097'}.fi-media-step-forward:before{content:'\e098'}.fi-media-stop:before{content:'\e099'}.fi-medical-cross:before{content:'\e09a'}.fi-menu:before{content:'\e09b'}.fi-microphone:before{content:'\e09c'}.fi-minus:before{content:'\e09d'}.fi-monitor:before{content:'\e09e'}.fi-moon:before{content:'\e09f'}.fi-move:before{content:'\e0a0'}.fi-musical-note:before{content:'\e0a1'}.fi-paperclip:before{content:'\e0a2'}.fi-pencil:before{content:'\e0a3'}.fi-people:before{content:'\e0a4'}.fi-person:before{content:'\e0a5'}.fi-phone:before{content:'\e0a6'}.fi-pie-chart:before{content:'\e0a7'}.fi-pin:before{content:'\e0a8'}.fi-play-circle:before{content:'\e0a9'}.fi-plus:before{content:'\e0aa'}.fi-power-standby:before{content:'\e0ab'}.fi-print:before{content:'\e0ac'}.fi-project:before{content:'\e0ad'}.fi-pulse:before{content:'\e0ae'}.fi-puzzle-piece:before{content:'\e0af'}.fi-question-mark:before{content:'\e0b0'}.fi-rain:before{content:'\e0b1'}.fi-random:before{content:'\e0b2'}.fi-reload:before{content:'\e0b3'}.fi-resize-both:before{content:'\e0b4'}.fi-resize-height:before{content:'\e0b5'}.fi-resize-width:before{content:'\e0b6'}.fi-rss-alt:before{content:'\e0b7'}.fi-rss:before{content:'\e0b8'}.fi-script:before{content:'\e0b9'}.fi-share-boxed:before{content:'\e0ba'}.fi-share:before{content:'\e0bb'}.fi-shield:before{content:'\e0bc'}.fi-signal:before{content:'\e0bd'}.fi-signpost:before{content:'\e0be'}.fi-sort-ascending:before{content:'\e0bf'}.fi-sort-descending:before{content:'\e0c0'}.fi-spreadsheet:before{content:'\e0c1'}.fi-star:before{content:'\e0c2'}.fi-sun:before{content:'\e0c3'}.fi-tablet:before{content:'\e0c4'}.fi-tag:before{content:'\e0c5'}.fi-tags:before{content:'\e0c6'}.fi-target:before{content:'\e0c7'}.fi-task:before{content:'\e0c8'}.fi-terminal:before{content:'\e0c9'}.fi-text:before{content:'\e0ca'}.fi-thumb-down:before{content:'\e0cb'}.fi-thumb-up:before{content:'\e0cc'}.fi-timer:before{content:'\e0cd'}.fi-transfer:before{content:'\e0ce'}.fi-trash:before{content:'\e0cf'}.fi-underline:before{content:'\e0d0'}.fi-vertical-align-bottom:before{content:'\e0d1'}.fi-vertical-align-center:before{content:'\e0d2'}.fi-vertical-align-top:before{content:'\e0d3'}.fi-video:before{content:'\e0d4'}.fi-volume-high:before{content:'\e0d5'}.fi-volume-low:before{content:'\e0d6'}.fi-volume-off:before{content:'\e0d7'}.fi-warning:before{content:'\e0d8'}.fi-wifi:before{content:'\e0d9'}.fi-wrench:before{content:'\e0da'}.fi-x:before{content:'\e0db'}.fi-yen:before{content:'\e0dc'}.fi-zoom-in:before{content:'\e0dd'}.fi-zoom-out:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss new file mode 100644 index 00000000..fe471389 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss @@ -0,0 +1,1398 @@ +/* Foundation */ + +/* Font path variable */ +$icon-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$icon-font-path}open-iconic.eot'); + src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.otf') format('opentype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl new file mode 100644 index 00000000..a52637ab --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl @@ -0,0 +1,1392 @@ +/* Foundation */ + +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + + +.fi-account-loginbefore, + +.fi-account-logoutbefore, + +.fi-action-redobefore, + +.fi-action-undobefore, + +.fi-align-centerbefore, + +.fi-align-leftbefore, + +.fi-align-rightbefore, + +.fi-aperturebefore, + +.fi-arrow-bottombefore, + +.fi-arrow-circle-bottombefore, + +.fi-arrow-circle-leftbefore, + +.fi-arrow-circle-rightbefore, + +.fi-arrow-circle-topbefore, + +.fi-arrow-leftbefore, + +.fi-arrow-rightbefore, + +.fi-arrow-thick-bottombefore, + +.fi-arrow-thick-leftbefore, + +.fi-arrow-thick-rightbefore, + +.fi-arrow-thick-topbefore, + +.fi-arrow-topbefore, + +.fi-audio-spectrumbefore, + +.fi-audiobefore, + +.fi-badgebefore, + +.fi-banbefore, + +.fi-bar-chartbefore, + +.fi-basketbefore, + +.fi-battery-emptybefore, + +.fi-battery-fullbefore, + +.fi-beakerbefore, + +.fi-bellbefore, + +.fi-bluetoothbefore, + +.fi-boldbefore, + +.fi-boltbefore, + +.fi-bookbefore, + +.fi-bookmarkbefore, + +.fi-boxbefore, + +.fi-briefcasebefore, + +.fi-british-poundbefore, + +.fi-browserbefore, + +.fi-brushbefore, + +.fi-bugbefore, + +.fi-bullhornbefore, + +.fi-calculatorbefore, + +.fi-calendarbefore, + +.fi-camera-slrbefore, + +.fi-caret-bottombefore, + +.fi-caret-leftbefore, + +.fi-caret-rightbefore, + +.fi-caret-topbefore, + +.fi-cartbefore, + +.fi-chatbefore, + +.fi-checkbefore, + +.fi-chevron-bottombefore, + +.fi-chevron-leftbefore, + +.fi-chevron-rightbefore, + +.fi-chevron-topbefore, + +.fi-circle-checkbefore, + +.fi-circle-xbefore, + +.fi-clipboardbefore, + +.fi-clockbefore, + +.fi-cloud-downloadbefore, + +.fi-cloud-uploadbefore, + +.fi-cloudbefore, + +.fi-cloudybefore, + +.fi-codebefore, + +.fi-cogbefore, + +.fi-collapse-downbefore, + +.fi-collapse-leftbefore, + +.fi-collapse-rightbefore, + +.fi-collapse-upbefore, + +.fi-commandbefore, + +.fi-comment-squarebefore, + +.fi-compassbefore, + +.fi-contrastbefore, + +.fi-copywritingbefore, + +.fi-credit-cardbefore, + +.fi-cropbefore, + +.fi-dashboardbefore, + +.fi-data-transfer-downloadbefore, + +.fi-data-transfer-uploadbefore, + +.fi-deletebefore, + +.fi-dialbefore, + +.fi-documentbefore, + +.fi-dollarbefore, + +.fi-double-quote-sans-leftbefore, + +.fi-double-quote-sans-rightbefore, + +.fi-double-quote-serif-leftbefore, + +.fi-double-quote-serif-rightbefore, + +.fi-dropletbefore, + +.fi-ejectbefore, + +.fi-elevatorbefore, + +.fi-ellipsesbefore, + +.fi-envelope-closedbefore, + +.fi-envelope-openbefore, + +.fi-eurobefore, + +.fi-excerptbefore, + +.fi-expand-downbefore, + +.fi-expand-leftbefore, + +.fi-expand-rightbefore, + +.fi-expand-upbefore, + +.fi-external-linkbefore, + +.fi-eyebefore, + +.fi-eyedropperbefore, + +.fi-filebefore, + +.fi-firebefore, + +.fi-flagbefore, + +.fi-flashbefore, + +.fi-folderbefore, + +.fi-forkbefore, + +.fi-fullscreen-enterbefore, + +.fi-fullscreen-exitbefore, + +.fi-globebefore, + +.fi-graphbefore, + +.fi-grid-four-upbefore, + +.fi-grid-three-upbefore, + +.fi-grid-two-upbefore, + +.fi-hard-drivebefore, + +.fi-headerbefore, + +.fi-headphonesbefore, + +.fi-heartbefore, + +.fi-homebefore, + +.fi-imagebefore, + +.fi-inboxbefore, + +.fi-infinitybefore, + +.fi-infobefore, + +.fi-italicbefore, + +.fi-justify-centerbefore, + +.fi-justify-leftbefore, + +.fi-justify-rightbefore, + +.fi-keybefore, + +.fi-laptopbefore, + +.fi-layersbefore, + +.fi-lightbulbbefore, + +.fi-link-brokenbefore, + +.fi-link-intactbefore, + +.fi-list-richbefore, + +.fi-listbefore, + +.fi-locationbefore, + +.fi-lock-lockedbefore, + +.fi-lock-unlockedbefore, + +.fi-loop-circularbefore, + +.fi-loop-squarebefore, + +.fi-loopbefore, + +.fi-magnifying-glassbefore, + +.fi-map-markerbefore, + +.fi-mapbefore, + +.fi-media-pausebefore, + +.fi-media-playbefore, + +.fi-media-recordbefore, + +.fi-media-skip-backwardbefore, + +.fi-media-skip-forwardbefore, + +.fi-media-step-backwardbefore, + +.fi-media-step-forwardbefore, + +.fi-media-stopbefore, + +.fi-medical-crossbefore, + +.fi-menubefore, + +.fi-microphonebefore, + +.fi-minusbefore, + +.fi-monitorbefore, + +.fi-moonbefore, + +.fi-movebefore, + +.fi-musical-notebefore, + +.fi-paperclipbefore, + +.fi-pencilbefore, + +.fi-peoplebefore, + +.fi-personbefore, + +.fi-phonebefore, + +.fi-pie-chartbefore, + +.fi-pinbefore, + +.fi-play-circlebefore, + +.fi-plusbefore, + +.fi-power-standbybefore, + +.fi-printbefore, + +.fi-projectbefore, + +.fi-pulsebefore, + +.fi-puzzle-piecebefore, + +.fi-question-markbefore, + +.fi-rainbefore, + +.fi-randombefore, + +.fi-reloadbefore, + +.fi-resize-bothbefore, + +.fi-resize-heightbefore, + +.fi-resize-widthbefore, + +.fi-rss-altbefore, + +.fi-rssbefore, + +.fi-scriptbefore, + +.fi-share-boxedbefore, + +.fi-sharebefore, + +.fi-shieldbefore, + +.fi-signalbefore, + +.fi-signpostbefore, + +.fi-sort-ascendingbefore, + +.fi-sort-descendingbefore, + +.fi-spreadsheetbefore, + +.fi-starbefore, + +.fi-sunbefore, + +.fi-tabletbefore, + +.fi-tagbefore, + +.fi-tagsbefore, + +.fi-targetbefore, + +.fi-taskbefore, + +.fi-terminalbefore, + +.fi-textbefore, + +.fi-thumb-downbefore, + +.fi-thumb-upbefore, + +.fi-timerbefore, + +.fi-transferbefore, + +.fi-trashbefore, + +.fi-underlinebefore, + +.fi-vertical-align-bottombefore, + +.fi-vertical-align-centerbefore, + +.fi-vertical-align-topbefore, + +.fi-videobefore, + +.fi-volume-highbefore, + +.fi-volume-lowbefore, + +.fi-volume-offbefore, + +.fi-warningbefore, + +.fi-wifibefore, + +.fi-wrenchbefore, + +.fi-xbefore, + +.fi-yenbefore, + +.fi-zoom-inbefore, + +.fi-zoom-outbefore + + font-family 'Icons' + font-style normal + font-weight normal + font-variant normal + text-transform none + line-height 1 + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + display inline-block + text-decoration inherit + + +[class*='fi-'].oi-align-center:before + text-align center + + +[class*='fi-'].oi-align-left:before + text-align left + + +[class*='fi-'].oi-align-right:before + text-align right + + + +[class*='fi-'].oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + +[class*='fi-'].oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + +[class*='fi-'].oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + +.fi-account-login:before + content'\e000' + + +.fi-account-logout:before + content'\e001' + + +.fi-action-redo:before + content'\e002' + + +.fi-action-undo:before + content'\e003' + + +.fi-align-center:before + content'\e004' + + +.fi-align-left:before + content'\e005' + + +.fi-align-right:before + content'\e006' + + +.fi-aperture:before + content'\e007' + + +.fi-arrow-bottom:before + content'\e008' + + +.fi-arrow-circle-bottom:before + content'\e009' + + +.fi-arrow-circle-left:before + content'\e00a' + + +.fi-arrow-circle-right:before + content'\e00b' + + +.fi-arrow-circle-top:before + content'\e00c' + + +.fi-arrow-left:before + content'\e00d' + + +.fi-arrow-right:before + content'\e00e' + + +.fi-arrow-thick-bottom:before + content'\e00f' + + +.fi-arrow-thick-left:before + content'\e010' + + +.fi-arrow-thick-right:before + content'\e011' + + +.fi-arrow-thick-top:before + content'\e012' + + +.fi-arrow-top:before + content'\e013' + + +.fi-audio-spectrum:before + content'\e014' + + +.fi-audio:before + content'\e015' + + +.fi-badge:before + content'\e016' + + +.fi-ban:before + content'\e017' + + +.fi-bar-chart:before + content'\e018' + + +.fi-basket:before + content'\e019' + + +.fi-battery-empty:before + content'\e01a' + + +.fi-battery-full:before + content'\e01b' + + +.fi-beaker:before + content'\e01c' + + +.fi-bell:before + content'\e01d' + + +.fi-bluetooth:before + content'\e01e' + + +.fi-bold:before + content'\e01f' + + +.fi-bolt:before + content'\e020' + + +.fi-book:before + content'\e021' + + +.fi-bookmark:before + content'\e022' + + +.fi-box:before + content'\e023' + + +.fi-briefcase:before + content'\e024' + + +.fi-british-pound:before + content'\e025' + + +.fi-browser:before + content'\e026' + + +.fi-brush:before + content'\e027' + + +.fi-bug:before + content'\e028' + + +.fi-bullhorn:before + content'\e029' + + +.fi-calculator:before + content'\e02a' + + +.fi-calendar:before + content'\e02b' + + +.fi-camera-slr:before + content'\e02c' + + +.fi-caret-bottom:before + content'\e02d' + + +.fi-caret-left:before + content'\e02e' + + +.fi-caret-right:before + content'\e02f' + + +.fi-caret-top:before + content'\e030' + + +.fi-cart:before + content'\e031' + + +.fi-chat:before + content'\e032' + + +.fi-check:before + content'\e033' + + +.fi-chevron-bottom:before + content'\e034' + + +.fi-chevron-left:before + content'\e035' + + +.fi-chevron-right:before + content'\e036' + + +.fi-chevron-top:before + content'\e037' + + +.fi-circle-check:before + content'\e038' + + +.fi-circle-x:before + content'\e039' + + +.fi-clipboard:before + content'\e03a' + + +.fi-clock:before + content'\e03b' + + +.fi-cloud-download:before + content'\e03c' + + +.fi-cloud-upload:before + content'\e03d' + + +.fi-cloud:before + content'\e03e' + + +.fi-cloudy:before + content'\e03f' + + +.fi-code:before + content'\e040' + + +.fi-cog:before + content'\e041' + + +.fi-collapse-down:before + content'\e042' + + +.fi-collapse-left:before + content'\e043' + + +.fi-collapse-right:before + content'\e044' + + +.fi-collapse-up:before + content'\e045' + + +.fi-command:before + content'\e046' + + +.fi-comment-square:before + content'\e047' + + +.fi-compass:before + content'\e048' + + +.fi-contrast:before + content'\e049' + + +.fi-copywriting:before + content'\e04a' + + +.fi-credit-card:before + content'\e04b' + + +.fi-crop:before + content'\e04c' + + +.fi-dashboard:before + content'\e04d' + + +.fi-data-transfer-download:before + content'\e04e' + + +.fi-data-transfer-upload:before + content'\e04f' + + +.fi-delete:before + content'\e050' + + +.fi-dial:before + content'\e051' + + +.fi-document:before + content'\e052' + + +.fi-dollar:before + content'\e053' + + +.fi-double-quote-sans-left:before + content'\e054' + + +.fi-double-quote-sans-right:before + content'\e055' + + +.fi-double-quote-serif-left:before + content'\e056' + + +.fi-double-quote-serif-right:before + content'\e057' + + +.fi-droplet:before + content'\e058' + + +.fi-eject:before + content'\e059' + + +.fi-elevator:before + content'\e05a' + + +.fi-ellipses:before + content'\e05b' + + +.fi-envelope-closed:before + content'\e05c' + + +.fi-envelope-open:before + content'\e05d' + + +.fi-euro:before + content'\e05e' + + +.fi-excerpt:before + content'\e05f' + + +.fi-expand-down:before + content'\e060' + + +.fi-expand-left:before + content'\e061' + + +.fi-expand-right:before + content'\e062' + + +.fi-expand-up:before + content'\e063' + + +.fi-external-link:before + content'\e064' + + +.fi-eye:before + content'\e065' + + +.fi-eyedropper:before + content'\e066' + + +.fi-file:before + content'\e067' + + +.fi-fire:before + content'\e068' + + +.fi-flag:before + content'\e069' + + +.fi-flash:before + content'\e06a' + + +.fi-folder:before + content'\e06b' + + +.fi-fork:before + content'\e06c' + + +.fi-fullscreen-enter:before + content'\e06d' + + +.fi-fullscreen-exit:before + content'\e06e' + + +.fi-globe:before + content'\e06f' + + +.fi-graph:before + content'\e070' + + +.fi-grid-four-up:before + content'\e071' + + +.fi-grid-three-up:before + content'\e072' + + +.fi-grid-two-up:before + content'\e073' + + +.fi-hard-drive:before + content'\e074' + + +.fi-header:before + content'\e075' + + +.fi-headphones:before + content'\e076' + + +.fi-heart:before + content'\e077' + + +.fi-home:before + content'\e078' + + +.fi-image:before + content'\e079' + + +.fi-inbox:before + content'\e07a' + + +.fi-infinity:before + content'\e07b' + + +.fi-info:before + content'\e07c' + + +.fi-italic:before + content'\e07d' + + +.fi-justify-center:before + content'\e07e' + + +.fi-justify-left:before + content'\e07f' + + +.fi-justify-right:before + content'\e080' + + +.fi-key:before + content'\e081' + + +.fi-laptop:before + content'\e082' + + +.fi-layers:before + content'\e083' + + +.fi-lightbulb:before + content'\e084' + + +.fi-link-broken:before + content'\e085' + + +.fi-link-intact:before + content'\e086' + + +.fi-list-rich:before + content'\e087' + + +.fi-list:before + content'\e088' + + +.fi-location:before + content'\e089' + + +.fi-lock-locked:before + content'\e08a' + + +.fi-lock-unlocked:before + content'\e08b' + + +.fi-loop-circular:before + content'\e08c' + + +.fi-loop-square:before + content'\e08d' + + +.fi-loop:before + content'\e08e' + + +.fi-magnifying-glass:before + content'\e08f' + + +.fi-map-marker:before + content'\e090' + + +.fi-map:before + content'\e091' + + +.fi-media-pause:before + content'\e092' + + +.fi-media-play:before + content'\e093' + + +.fi-media-record:before + content'\e094' + + +.fi-media-skip-backward:before + content'\e095' + + +.fi-media-skip-forward:before + content'\e096' + + +.fi-media-step-backward:before + content'\e097' + + +.fi-media-step-forward:before + content'\e098' + + +.fi-media-stop:before + content'\e099' + + +.fi-medical-cross:before + content'\e09a' + + +.fi-menu:before + content'\e09b' + + +.fi-microphone:before + content'\e09c' + + +.fi-minus:before + content'\e09d' + + +.fi-monitor:before + content'\e09e' + + +.fi-moon:before + content'\e09f' + + +.fi-move:before + content'\e0a0' + + +.fi-musical-note:before + content'\e0a1' + + +.fi-paperclip:before + content'\e0a2' + + +.fi-pencil:before + content'\e0a3' + + +.fi-people:before + content'\e0a4' + + +.fi-person:before + content'\e0a5' + + +.fi-phone:before + content'\e0a6' + + +.fi-pie-chart:before + content'\e0a7' + + +.fi-pin:before + content'\e0a8' + + +.fi-play-circle:before + content'\e0a9' + + +.fi-plus:before + content'\e0aa' + + +.fi-power-standby:before + content'\e0ab' + + +.fi-print:before + content'\e0ac' + + +.fi-project:before + content'\e0ad' + + +.fi-pulse:before + content'\e0ae' + + +.fi-puzzle-piece:before + content'\e0af' + + +.fi-question-mark:before + content'\e0b0' + + +.fi-rain:before + content'\e0b1' + + +.fi-random:before + content'\e0b2' + + +.fi-reload:before + content'\e0b3' + + +.fi-resize-both:before + content'\e0b4' + + +.fi-resize-height:before + content'\e0b5' + + +.fi-resize-width:before + content'\e0b6' + + +.fi-rss-alt:before + content'\e0b7' + + +.fi-rss:before + content'\e0b8' + + +.fi-script:before + content'\e0b9' + + +.fi-share-boxed:before + content'\e0ba' + + +.fi-share:before + content'\e0bb' + + +.fi-shield:before + content'\e0bc' + + +.fi-signal:before + content'\e0bd' + + +.fi-signpost:before + content'\e0be' + + +.fi-sort-ascending:before + content'\e0bf' + + +.fi-sort-descending:before + content'\e0c0' + + +.fi-spreadsheet:before + content'\e0c1' + + +.fi-star:before + content'\e0c2' + + +.fi-sun:before + content'\e0c3' + + +.fi-tablet:before + content'\e0c4' + + +.fi-tag:before + content'\e0c5' + + +.fi-tags:before + content'\e0c6' + + +.fi-target:before + content'\e0c7' + + +.fi-task:before + content'\e0c8' + + +.fi-terminal:before + content'\e0c9' + + +.fi-text:before + content'\e0ca' + + +.fi-thumb-down:before + content'\e0cb' + + +.fi-thumb-up:before + content'\e0cc' + + +.fi-timer:before + content'\e0cd' + + +.fi-transfer:before + content'\e0ce' + + +.fi-trash:before + content'\e0cf' + + +.fi-underline:before + content'\e0d0' + + +.fi-vertical-align-bottom:before + content'\e0d1' + + +.fi-vertical-align-center:before + content'\e0d2' + + +.fi-vertical-align-top:before + content'\e0d3' + + +.fi-video:before + content'\e0d4' + + +.fi-volume-high:before + content'\e0d5' + + +.fi-volume-low:before + content'\e0d6' + + +.fi-volume-off:before + content'\e0d7' + + +.fi-warning:before + content'\e0d8' + + +.fi-wifi:before + content'\e0d9' + + +.fi-wrench:before + content'\e0da' + + +.fi-x:before + content'\e0db' + + +.fi-yen:before + content'\e0dc' + + +.fi-zoom-in:before + content'\e0dd' + + +.fi-zoom-out:before + content'\e0de' + + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css new file mode 100644 index 00000000..301a138c --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css @@ -0,0 +1,511 @@ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph]:before { + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.oi[data-glyph]:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; +} + +.oi[data-glyph].oi-align-left:before { + text-align: left; +} + +.oi[data-glyph].oi-align-right:before { + text-align: right; +} + +.oi[data-glyph].oi-align-center:before { + text-align: center; +} + +.oi[data-glyph].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.oi[data-glyph].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} +.oi[data-glyph].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + +.oi[data-glyph=account-login]:before { content:'\e000'; } + +.oi[data-glyph=account-logout]:before { content:'\e001'; } + +.oi[data-glyph=action-redo]:before { content:'\e002'; } + +.oi[data-glyph=action-undo]:before { content:'\e003'; } + +.oi[data-glyph=align-center]:before { content:'\e004'; } + +.oi[data-glyph=align-left]:before { content:'\e005'; } + +.oi[data-glyph=align-right]:before { content:'\e006'; } + +.oi[data-glyph=aperture]:before { content:'\e007'; } + +.oi[data-glyph=arrow-bottom]:before { content:'\e008'; } + +.oi[data-glyph=arrow-circle-bottom]:before { content:'\e009'; } + +.oi[data-glyph=arrow-circle-left]:before { content:'\e00a'; } + +.oi[data-glyph=arrow-circle-right]:before { content:'\e00b'; } + +.oi[data-glyph=arrow-circle-top]:before { content:'\e00c'; } + +.oi[data-glyph=arrow-left]:before { content:'\e00d'; } + +.oi[data-glyph=arrow-right]:before { content:'\e00e'; } + +.oi[data-glyph=arrow-thick-bottom]:before { content:'\e00f'; } + +.oi[data-glyph=arrow-thick-left]:before { content:'\e010'; } + +.oi[data-glyph=arrow-thick-right]:before { content:'\e011'; } + +.oi[data-glyph=arrow-thick-top]:before { content:'\e012'; } + +.oi[data-glyph=arrow-top]:before { content:'\e013'; } + +.oi[data-glyph=audio-spectrum]:before { content:'\e014'; } + +.oi[data-glyph=audio]:before { content:'\e015'; } + +.oi[data-glyph=badge]:before { content:'\e016'; } + +.oi[data-glyph=ban]:before { content:'\e017'; } + +.oi[data-glyph=bar-chart]:before { content:'\e018'; } + +.oi[data-glyph=basket]:before { content:'\e019'; } + +.oi[data-glyph=battery-empty]:before { content:'\e01a'; } + +.oi[data-glyph=battery-full]:before { content:'\e01b'; } + +.oi[data-glyph=beaker]:before { content:'\e01c'; } + +.oi[data-glyph=bell]:before { content:'\e01d'; } + +.oi[data-glyph=bluetooth]:before { content:'\e01e'; } + +.oi[data-glyph=bold]:before { content:'\e01f'; } + +.oi[data-glyph=bolt]:before { content:'\e020'; } + +.oi[data-glyph=book]:before { content:'\e021'; } + +.oi[data-glyph=bookmark]:before { content:'\e022'; } + +.oi[data-glyph=box]:before { content:'\e023'; } + +.oi[data-glyph=briefcase]:before { content:'\e024'; } + +.oi[data-glyph=british-pound]:before { content:'\e025'; } + +.oi[data-glyph=browser]:before { content:'\e026'; } + +.oi[data-glyph=brush]:before { content:'\e027'; } + +.oi[data-glyph=bug]:before { content:'\e028'; } + +.oi[data-glyph=bullhorn]:before { content:'\e029'; } + +.oi[data-glyph=calculator]:before { content:'\e02a'; } + +.oi[data-glyph=calendar]:before { content:'\e02b'; } + +.oi[data-glyph=camera-slr]:before { content:'\e02c'; } + +.oi[data-glyph=caret-bottom]:before { content:'\e02d'; } + +.oi[data-glyph=caret-left]:before { content:'\e02e'; } + +.oi[data-glyph=caret-right]:before { content:'\e02f'; } + +.oi[data-glyph=caret-top]:before { content:'\e030'; } + +.oi[data-glyph=cart]:before { content:'\e031'; } + +.oi[data-glyph=chat]:before { content:'\e032'; } + +.oi[data-glyph=check]:before { content:'\e033'; } + +.oi[data-glyph=chevron-bottom]:before { content:'\e034'; } + +.oi[data-glyph=chevron-left]:before { content:'\e035'; } + +.oi[data-glyph=chevron-right]:before { content:'\e036'; } + +.oi[data-glyph=chevron-top]:before { content:'\e037'; } + +.oi[data-glyph=circle-check]:before { content:'\e038'; } + +.oi[data-glyph=circle-x]:before { content:'\e039'; } + +.oi[data-glyph=clipboard]:before { content:'\e03a'; } + +.oi[data-glyph=clock]:before { content:'\e03b'; } + +.oi[data-glyph=cloud-download]:before { content:'\e03c'; } + +.oi[data-glyph=cloud-upload]:before { content:'\e03d'; } + +.oi[data-glyph=cloud]:before { content:'\e03e'; } + +.oi[data-glyph=cloudy]:before { content:'\e03f'; } + +.oi[data-glyph=code]:before { content:'\e040'; } + +.oi[data-glyph=cog]:before { content:'\e041'; } + +.oi[data-glyph=collapse-down]:before { content:'\e042'; } + +.oi[data-glyph=collapse-left]:before { content:'\e043'; } + +.oi[data-glyph=collapse-right]:before { content:'\e044'; } + +.oi[data-glyph=collapse-up]:before { content:'\e045'; } + +.oi[data-glyph=command]:before { content:'\e046'; } + +.oi[data-glyph=comment-square]:before { content:'\e047'; } + +.oi[data-glyph=compass]:before { content:'\e048'; } + +.oi[data-glyph=contrast]:before { content:'\e049'; } + +.oi[data-glyph=copywriting]:before { content:'\e04a'; } + +.oi[data-glyph=credit-card]:before { content:'\e04b'; } + +.oi[data-glyph=crop]:before { content:'\e04c'; } + +.oi[data-glyph=dashboard]:before { content:'\e04d'; } + +.oi[data-glyph=data-transfer-download]:before { content:'\e04e'; } + +.oi[data-glyph=data-transfer-upload]:before { content:'\e04f'; } + +.oi[data-glyph=delete]:before { content:'\e050'; } + +.oi[data-glyph=dial]:before { content:'\e051'; } + +.oi[data-glyph=document]:before { content:'\e052'; } + +.oi[data-glyph=dollar]:before { content:'\e053'; } + +.oi[data-glyph=double-quote-sans-left]:before { content:'\e054'; } + +.oi[data-glyph=double-quote-sans-right]:before { content:'\e055'; } + +.oi[data-glyph=double-quote-serif-left]:before { content:'\e056'; } + +.oi[data-glyph=double-quote-serif-right]:before { content:'\e057'; } + +.oi[data-glyph=droplet]:before { content:'\e058'; } + +.oi[data-glyph=eject]:before { content:'\e059'; } + +.oi[data-glyph=elevator]:before { content:'\e05a'; } + +.oi[data-glyph=ellipses]:before { content:'\e05b'; } + +.oi[data-glyph=envelope-closed]:before { content:'\e05c'; } + +.oi[data-glyph=envelope-open]:before { content:'\e05d'; } + +.oi[data-glyph=euro]:before { content:'\e05e'; } + +.oi[data-glyph=excerpt]:before { content:'\e05f'; } + +.oi[data-glyph=expand-down]:before { content:'\e060'; } + +.oi[data-glyph=expand-left]:before { content:'\e061'; } + +.oi[data-glyph=expand-right]:before { content:'\e062'; } + +.oi[data-glyph=expand-up]:before { content:'\e063'; } + +.oi[data-glyph=external-link]:before { content:'\e064'; } + +.oi[data-glyph=eye]:before { content:'\e065'; } + +.oi[data-glyph=eyedropper]:before { content:'\e066'; } + +.oi[data-glyph=file]:before { content:'\e067'; } + +.oi[data-glyph=fire]:before { content:'\e068'; } + +.oi[data-glyph=flag]:before { content:'\e069'; } + +.oi[data-glyph=flash]:before { content:'\e06a'; } + +.oi[data-glyph=folder]:before { content:'\e06b'; } + +.oi[data-glyph=fork]:before { content:'\e06c'; } + +.oi[data-glyph=fullscreen-enter]:before { content:'\e06d'; } + +.oi[data-glyph=fullscreen-exit]:before { content:'\e06e'; } + +.oi[data-glyph=globe]:before { content:'\e06f'; } + +.oi[data-glyph=graph]:before { content:'\e070'; } + +.oi[data-glyph=grid-four-up]:before { content:'\e071'; } + +.oi[data-glyph=grid-three-up]:before { content:'\e072'; } + +.oi[data-glyph=grid-two-up]:before { content:'\e073'; } + +.oi[data-glyph=hard-drive]:before { content:'\e074'; } + +.oi[data-glyph=header]:before { content:'\e075'; } + +.oi[data-glyph=headphones]:before { content:'\e076'; } + +.oi[data-glyph=heart]:before { content:'\e077'; } + +.oi[data-glyph=home]:before { content:'\e078'; } + +.oi[data-glyph=image]:before { content:'\e079'; } + +.oi[data-glyph=inbox]:before { content:'\e07a'; } + +.oi[data-glyph=infinity]:before { content:'\e07b'; } + +.oi[data-glyph=info]:before { content:'\e07c'; } + +.oi[data-glyph=italic]:before { content:'\e07d'; } + +.oi[data-glyph=justify-center]:before { content:'\e07e'; } + +.oi[data-glyph=justify-left]:before { content:'\e07f'; } + +.oi[data-glyph=justify-right]:before { content:'\e080'; } + +.oi[data-glyph=key]:before { content:'\e081'; } + +.oi[data-glyph=laptop]:before { content:'\e082'; } + +.oi[data-glyph=layers]:before { content:'\e083'; } + +.oi[data-glyph=lightbulb]:before { content:'\e084'; } + +.oi[data-glyph=link-broken]:before { content:'\e085'; } + +.oi[data-glyph=link-intact]:before { content:'\e086'; } + +.oi[data-glyph=list-rich]:before { content:'\e087'; } + +.oi[data-glyph=list]:before { content:'\e088'; } + +.oi[data-glyph=location]:before { content:'\e089'; } + +.oi[data-glyph=lock-locked]:before { content:'\e08a'; } + +.oi[data-glyph=lock-unlocked]:before { content:'\e08b'; } + +.oi[data-glyph=loop-circular]:before { content:'\e08c'; } + +.oi[data-glyph=loop-square]:before { content:'\e08d'; } + +.oi[data-glyph=loop]:before { content:'\e08e'; } + +.oi[data-glyph=magnifying-glass]:before { content:'\e08f'; } + +.oi[data-glyph=map-marker]:before { content:'\e090'; } + +.oi[data-glyph=map]:before { content:'\e091'; } + +.oi[data-glyph=media-pause]:before { content:'\e092'; } + +.oi[data-glyph=media-play]:before { content:'\e093'; } + +.oi[data-glyph=media-record]:before { content:'\e094'; } + +.oi[data-glyph=media-skip-backward]:before { content:'\e095'; } + +.oi[data-glyph=media-skip-forward]:before { content:'\e096'; } + +.oi[data-glyph=media-step-backward]:before { content:'\e097'; } + +.oi[data-glyph=media-step-forward]:before { content:'\e098'; } + +.oi[data-glyph=media-stop]:before { content:'\e099'; } + +.oi[data-glyph=medical-cross]:before { content:'\e09a'; } + +.oi[data-glyph=menu]:before { content:'\e09b'; } + +.oi[data-glyph=microphone]:before { content:'\e09c'; } + +.oi[data-glyph=minus]:before { content:'\e09d'; } + +.oi[data-glyph=monitor]:before { content:'\e09e'; } + +.oi[data-glyph=moon]:before { content:'\e09f'; } + +.oi[data-glyph=move]:before { content:'\e0a0'; } + +.oi[data-glyph=musical-note]:before { content:'\e0a1'; } + +.oi[data-glyph=paperclip]:before { content:'\e0a2'; } + +.oi[data-glyph=pencil]:before { content:'\e0a3'; } + +.oi[data-glyph=people]:before { content:'\e0a4'; } + +.oi[data-glyph=person]:before { content:'\e0a5'; } + +.oi[data-glyph=phone]:before { content:'\e0a6'; } + +.oi[data-glyph=pie-chart]:before { content:'\e0a7'; } + +.oi[data-glyph=pin]:before { content:'\e0a8'; } + +.oi[data-glyph=play-circle]:before { content:'\e0a9'; } + +.oi[data-glyph=plus]:before { content:'\e0aa'; } + +.oi[data-glyph=power-standby]:before { content:'\e0ab'; } + +.oi[data-glyph=print]:before { content:'\e0ac'; } + +.oi[data-glyph=project]:before { content:'\e0ad'; } + +.oi[data-glyph=pulse]:before { content:'\e0ae'; } + +.oi[data-glyph=puzzle-piece]:before { content:'\e0af'; } + +.oi[data-glyph=question-mark]:before { content:'\e0b0'; } + +.oi[data-glyph=rain]:before { content:'\e0b1'; } + +.oi[data-glyph=random]:before { content:'\e0b2'; } + +.oi[data-glyph=reload]:before { content:'\e0b3'; } + +.oi[data-glyph=resize-both]:before { content:'\e0b4'; } + +.oi[data-glyph=resize-height]:before { content:'\e0b5'; } + +.oi[data-glyph=resize-width]:before { content:'\e0b6'; } + +.oi[data-glyph=rss-alt]:before { content:'\e0b7'; } + +.oi[data-glyph=rss]:before { content:'\e0b8'; } + +.oi[data-glyph=script]:before { content:'\e0b9'; } + +.oi[data-glyph=share-boxed]:before { content:'\e0ba'; } + +.oi[data-glyph=share]:before { content:'\e0bb'; } + +.oi[data-glyph=shield]:before { content:'\e0bc'; } + +.oi[data-glyph=signal]:before { content:'\e0bd'; } + +.oi[data-glyph=signpost]:before { content:'\e0be'; } + +.oi[data-glyph=sort-ascending]:before { content:'\e0bf'; } + +.oi[data-glyph=sort-descending]:before { content:'\e0c0'; } + +.oi[data-glyph=spreadsheet]:before { content:'\e0c1'; } + +.oi[data-glyph=star]:before { content:'\e0c2'; } + +.oi[data-glyph=sun]:before { content:'\e0c3'; } + +.oi[data-glyph=tablet]:before { content:'\e0c4'; } + +.oi[data-glyph=tag]:before { content:'\e0c5'; } + +.oi[data-glyph=tags]:before { content:'\e0c6'; } + +.oi[data-glyph=target]:before { content:'\e0c7'; } + +.oi[data-glyph=task]:before { content:'\e0c8'; } + +.oi[data-glyph=terminal]:before { content:'\e0c9'; } + +.oi[data-glyph=text]:before { content:'\e0ca'; } + +.oi[data-glyph=thumb-down]:before { content:'\e0cb'; } + +.oi[data-glyph=thumb-up]:before { content:'\e0cc'; } + +.oi[data-glyph=timer]:before { content:'\e0cd'; } + +.oi[data-glyph=transfer]:before { content:'\e0ce'; } + +.oi[data-glyph=trash]:before { content:'\e0cf'; } + +.oi[data-glyph=underline]:before { content:'\e0d0'; } + +.oi[data-glyph=vertical-align-bottom]:before { content:'\e0d1'; } + +.oi[data-glyph=vertical-align-center]:before { content:'\e0d2'; } + +.oi[data-glyph=vertical-align-top]:before { content:'\e0d3'; } + +.oi[data-glyph=video]:before { content:'\e0d4'; } + +.oi[data-glyph=volume-high]:before { content:'\e0d5'; } + +.oi[data-glyph=volume-low]:before { content:'\e0d6'; } + +.oi[data-glyph=volume-off]:before { content:'\e0d7'; } + +.oi[data-glyph=warning]:before { content:'\e0d8'; } + +.oi[data-glyph=wifi]:before { content:'\e0d9'; } + +.oi[data-glyph=wrench]:before { content:'\e0da'; } + +.oi[data-glyph=x]:before { content:'\e0db'; } + +.oi[data-glyph=yen]:before { content:'\e0dc'; } + +.oi[data-glyph=zoom-in]:before { content:'\e0dd'; } + +.oi[data-glyph=zoom-out]:before { content:'\e0de'; } diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less new file mode 100644 index 00000000..d505e9f2 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less @@ -0,0 +1,962 @@ +@iconic-font-path: '../fonts/'; + +@font-face { + font-family: 'Icons'; + src: url('@{iconic-font-path}open-iconic.eot'); + src: url('@{iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{iconic-font-path}open-iconic.woff') format('woff'), url('@{iconic-font-path}open-iconic.ttf') format('truetype'), url('@{iconic-font-path}open-iconic.otf') format('opentype'), url('@{iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph] { + &:before { + position: relative; + top: 1px; + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-left:before { + text-align: left; + } + &.oi-align-right:before { + text-align: right; + } + &.oi-align-center:before { + text-align: center; + } + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + +.oi[data-glyph=account-login]:before { + content: '\e000'; +} + +.oi[data-glyph=account-logout]:before { + content: '\e001'; +} + +.oi[data-glyph=action-redo]:before { + content: '\e002'; +} + +.oi[data-glyph=action-undo]:before { + content: '\e003'; +} + +.oi[data-glyph=align-center]:before { + content: '\e004'; +} + +.oi[data-glyph=align-left]:before { + content: '\e005'; +} + +.oi[data-glyph=align-right]:before { + content: '\e006'; +} + +.oi[data-glyph=aperture]:before { + content: '\e007'; +} + +.oi[data-glyph=arrow-bottom]:before { + content: '\e008'; +} + +.oi[data-glyph=arrow-circle-bottom]:before { + content: '\e009'; +} + +.oi[data-glyph=arrow-circle-left]:before { + content: '\e00a'; +} + +.oi[data-glyph=arrow-circle-right]:before { + content: '\e00b'; +} + +.oi[data-glyph=arrow-circle-top]:before { + content: '\e00c'; +} + +.oi[data-glyph=arrow-left]:before { + content: '\e00d'; +} + +.oi[data-glyph=arrow-right]:before { + content: '\e00e'; +} + +.oi[data-glyph=arrow-thick-bottom]:before { + content: '\e00f'; +} + +.oi[data-glyph=arrow-thick-left]:before { + content: '\e010'; +} + +.oi[data-glyph=arrow-thick-right]:before { + content: '\e011'; +} + +.oi[data-glyph=arrow-thick-top]:before { + content: '\e012'; +} + +.oi[data-glyph=arrow-top]:before { + content: '\e013'; +} + +.oi[data-glyph=audio-spectrum]:before { + content: '\e014'; +} + +.oi[data-glyph=audio]:before { + content: '\e015'; +} + +.oi[data-glyph=badge]:before { + content: '\e016'; +} + +.oi[data-glyph=ban]:before { + content: '\e017'; +} + +.oi[data-glyph=bar-chart]:before { + content: '\e018'; +} + +.oi[data-glyph=basket]:before { + content: '\e019'; +} + +.oi[data-glyph=battery-empty]:before { + content: '\e01a'; +} + +.oi[data-glyph=battery-full]:before { + content: '\e01b'; +} + +.oi[data-glyph=beaker]:before { + content: '\e01c'; +} + +.oi[data-glyph=bell]:before { + content: '\e01d'; +} + +.oi[data-glyph=bluetooth]:before { + content: '\e01e'; +} + +.oi[data-glyph=bold]:before { + content: '\e01f'; +} + +.oi[data-glyph=bolt]:before { + content: '\e020'; +} + +.oi[data-glyph=book]:before { + content: '\e021'; +} + +.oi[data-glyph=bookmark]:before { + content: '\e022'; +} + +.oi[data-glyph=box]:before { + content: '\e023'; +} + +.oi[data-glyph=briefcase]:before { + content: '\e024'; +} + +.oi[data-glyph=british-pound]:before { + content: '\e025'; +} + +.oi[data-glyph=browser]:before { + content: '\e026'; +} + +.oi[data-glyph=brush]:before { + content: '\e027'; +} + +.oi[data-glyph=bug]:before { + content: '\e028'; +} + +.oi[data-glyph=bullhorn]:before { + content: '\e029'; +} + +.oi[data-glyph=calculator]:before { + content: '\e02a'; +} + +.oi[data-glyph=calendar]:before { + content: '\e02b'; +} + +.oi[data-glyph=camera-slr]:before { + content: '\e02c'; +} + +.oi[data-glyph=caret-bottom]:before { + content: '\e02d'; +} + +.oi[data-glyph=caret-left]:before { + content: '\e02e'; +} + +.oi[data-glyph=caret-right]:before { + content: '\e02f'; +} + +.oi[data-glyph=caret-top]:before { + content: '\e030'; +} + +.oi[data-glyph=cart]:before { + content: '\e031'; +} + +.oi[data-glyph=chat]:before { + content: '\e032'; +} + +.oi[data-glyph=check]:before { + content: '\e033'; +} + +.oi[data-glyph=chevron-bottom]:before { + content: '\e034'; +} + +.oi[data-glyph=chevron-left]:before { + content: '\e035'; +} + +.oi[data-glyph=chevron-right]:before { + content: '\e036'; +} + +.oi[data-glyph=chevron-top]:before { + content: '\e037'; +} + +.oi[data-glyph=circle-check]:before { + content: '\e038'; +} + +.oi[data-glyph=circle-x]:before { + content: '\e039'; +} + +.oi[data-glyph=clipboard]:before { + content: '\e03a'; +} + +.oi[data-glyph=clock]:before { + content: '\e03b'; +} + +.oi[data-glyph=cloud-download]:before { + content: '\e03c'; +} + +.oi[data-glyph=cloud-upload]:before { + content: '\e03d'; +} + +.oi[data-glyph=cloud]:before { + content: '\e03e'; +} + +.oi[data-glyph=cloudy]:before { + content: '\e03f'; +} + +.oi[data-glyph=code]:before { + content: '\e040'; +} + +.oi[data-glyph=cog]:before { + content: '\e041'; +} + +.oi[data-glyph=collapse-down]:before { + content: '\e042'; +} + +.oi[data-glyph=collapse-left]:before { + content: '\e043'; +} + +.oi[data-glyph=collapse-right]:before { + content: '\e044'; +} + +.oi[data-glyph=collapse-up]:before { + content: '\e045'; +} + +.oi[data-glyph=command]:before { + content: '\e046'; +} + +.oi[data-glyph=comment-square]:before { + content: '\e047'; +} + +.oi[data-glyph=compass]:before { + content: '\e048'; +} + +.oi[data-glyph=contrast]:before { + content: '\e049'; +} + +.oi[data-glyph=copywriting]:before { + content: '\e04a'; +} + +.oi[data-glyph=credit-card]:before { + content: '\e04b'; +} + +.oi[data-glyph=crop]:before { + content: '\e04c'; +} + +.oi[data-glyph=dashboard]:before { + content: '\e04d'; +} + +.oi[data-glyph=data-transfer-download]:before { + content: '\e04e'; +} + +.oi[data-glyph=data-transfer-upload]:before { + content: '\e04f'; +} + +.oi[data-glyph=delete]:before { + content: '\e050'; +} + +.oi[data-glyph=dial]:before { + content: '\e051'; +} + +.oi[data-glyph=document]:before { + content: '\e052'; +} + +.oi[data-glyph=dollar]:before { + content: '\e053'; +} + +.oi[data-glyph=double-quote-sans-left]:before { + content: '\e054'; +} + +.oi[data-glyph=double-quote-sans-right]:before { + content: '\e055'; +} + +.oi[data-glyph=double-quote-serif-left]:before { + content: '\e056'; +} + +.oi[data-glyph=double-quote-serif-right]:before { + content: '\e057'; +} + +.oi[data-glyph=droplet]:before { + content: '\e058'; +} + +.oi[data-glyph=eject]:before { + content: '\e059'; +} + +.oi[data-glyph=elevator]:before { + content: '\e05a'; +} + +.oi[data-glyph=ellipses]:before { + content: '\e05b'; +} + +.oi[data-glyph=envelope-closed]:before { + content: '\e05c'; +} + +.oi[data-glyph=envelope-open]:before { + content: '\e05d'; +} + +.oi[data-glyph=euro]:before { + content: '\e05e'; +} + +.oi[data-glyph=excerpt]:before { + content: '\e05f'; +} + +.oi[data-glyph=expand-down]:before { + content: '\e060'; +} + +.oi[data-glyph=expand-left]:before { + content: '\e061'; +} + +.oi[data-glyph=expand-right]:before { + content: '\e062'; +} + +.oi[data-glyph=expand-up]:before { + content: '\e063'; +} + +.oi[data-glyph=external-link]:before { + content: '\e064'; +} + +.oi[data-glyph=eye]:before { + content: '\e065'; +} + +.oi[data-glyph=eyedropper]:before { + content: '\e066'; +} + +.oi[data-glyph=file]:before { + content: '\e067'; +} + +.oi[data-glyph=fire]:before { + content: '\e068'; +} + +.oi[data-glyph=flag]:before { + content: '\e069'; +} + +.oi[data-glyph=flash]:before { + content: '\e06a'; +} + +.oi[data-glyph=folder]:before { + content: '\e06b'; +} + +.oi[data-glyph=fork]:before { + content: '\e06c'; +} + +.oi[data-glyph=fullscreen-enter]:before { + content: '\e06d'; +} + +.oi[data-glyph=fullscreen-exit]:before { + content: '\e06e'; +} + +.oi[data-glyph=globe]:before { + content: '\e06f'; +} + +.oi[data-glyph=graph]:before { + content: '\e070'; +} + +.oi[data-glyph=grid-four-up]:before { + content: '\e071'; +} + +.oi[data-glyph=grid-three-up]:before { + content: '\e072'; +} + +.oi[data-glyph=grid-two-up]:before { + content: '\e073'; +} + +.oi[data-glyph=hard-drive]:before { + content: '\e074'; +} + +.oi[data-glyph=header]:before { + content: '\e075'; +} + +.oi[data-glyph=headphones]:before { + content: '\e076'; +} + +.oi[data-glyph=heart]:before { + content: '\e077'; +} + +.oi[data-glyph=home]:before { + content: '\e078'; +} + +.oi[data-glyph=image]:before { + content: '\e079'; +} + +.oi[data-glyph=inbox]:before { + content: '\e07a'; +} + +.oi[data-glyph=infinity]:before { + content: '\e07b'; +} + +.oi[data-glyph=info]:before { + content: '\e07c'; +} + +.oi[data-glyph=italic]:before { + content: '\e07d'; +} + +.oi[data-glyph=justify-center]:before { + content: '\e07e'; +} + +.oi[data-glyph=justify-left]:before { + content: '\e07f'; +} + +.oi[data-glyph=justify-right]:before { + content: '\e080'; +} + +.oi[data-glyph=key]:before { + content: '\e081'; +} + +.oi[data-glyph=laptop]:before { + content: '\e082'; +} + +.oi[data-glyph=layers]:before { + content: '\e083'; +} + +.oi[data-glyph=lightbulb]:before { + content: '\e084'; +} + +.oi[data-glyph=link-broken]:before { + content: '\e085'; +} + +.oi[data-glyph=link-intact]:before { + content: '\e086'; +} + +.oi[data-glyph=list-rich]:before { + content: '\e087'; +} + +.oi[data-glyph=list]:before { + content: '\e088'; +} + +.oi[data-glyph=location]:before { + content: '\e089'; +} + +.oi[data-glyph=lock-locked]:before { + content: '\e08a'; +} + +.oi[data-glyph=lock-unlocked]:before { + content: '\e08b'; +} + +.oi[data-glyph=loop-circular]:before { + content: '\e08c'; +} + +.oi[data-glyph=loop-square]:before { + content: '\e08d'; +} + +.oi[data-glyph=loop]:before { + content: '\e08e'; +} + +.oi[data-glyph=magnifying-glass]:before { + content: '\e08f'; +} + +.oi[data-glyph=map-marker]:before { + content: '\e090'; +} + +.oi[data-glyph=map]:before { + content: '\e091'; +} + +.oi[data-glyph=media-pause]:before { + content: '\e092'; +} + +.oi[data-glyph=media-play]:before { + content: '\e093'; +} + +.oi[data-glyph=media-record]:before { + content: '\e094'; +} + +.oi[data-glyph=media-skip-backward]:before { + content: '\e095'; +} + +.oi[data-glyph=media-skip-forward]:before { + content: '\e096'; +} + +.oi[data-glyph=media-step-backward]:before { + content: '\e097'; +} + +.oi[data-glyph=media-step-forward]:before { + content: '\e098'; +} + +.oi[data-glyph=media-stop]:before { + content: '\e099'; +} + +.oi[data-glyph=medical-cross]:before { + content: '\e09a'; +} + +.oi[data-glyph=menu]:before { + content: '\e09b'; +} + +.oi[data-glyph=microphone]:before { + content: '\e09c'; +} + +.oi[data-glyph=minus]:before { + content: '\e09d'; +} + +.oi[data-glyph=monitor]:before { + content: '\e09e'; +} + +.oi[data-glyph=moon]:before { + content: '\e09f'; +} + +.oi[data-glyph=move]:before { + content: '\e0a0'; +} + +.oi[data-glyph=musical-note]:before { + content: '\e0a1'; +} + +.oi[data-glyph=paperclip]:before { + content: '\e0a2'; +} + +.oi[data-glyph=pencil]:before { + content: '\e0a3'; +} + +.oi[data-glyph=people]:before { + content: '\e0a4'; +} + +.oi[data-glyph=person]:before { + content: '\e0a5'; +} + +.oi[data-glyph=phone]:before { + content: '\e0a6'; +} + +.oi[data-glyph=pie-chart]:before { + content: '\e0a7'; +} + +.oi[data-glyph=pin]:before { + content: '\e0a8'; +} + +.oi[data-glyph=play-circle]:before { + content: '\e0a9'; +} + +.oi[data-glyph=plus]:before { + content: '\e0aa'; +} + +.oi[data-glyph=power-standby]:before { + content: '\e0ab'; +} + +.oi[data-glyph=print]:before { + content: '\e0ac'; +} + +.oi[data-glyph=project]:before { + content: '\e0ad'; +} + +.oi[data-glyph=pulse]:before { + content: '\e0ae'; +} + +.oi[data-glyph=puzzle-piece]:before { + content: '\e0af'; +} + +.oi[data-glyph=question-mark]:before { + content: '\e0b0'; +} + +.oi[data-glyph=rain]:before { + content: '\e0b1'; +} + +.oi[data-glyph=random]:before { + content: '\e0b2'; +} + +.oi[data-glyph=reload]:before { + content: '\e0b3'; +} + +.oi[data-glyph=resize-both]:before { + content: '\e0b4'; +} + +.oi[data-glyph=resize-height]:before { + content: '\e0b5'; +} + +.oi[data-glyph=resize-width]:before { + content: '\e0b6'; +} + +.oi[data-glyph=rss-alt]:before { + content: '\e0b7'; +} + +.oi[data-glyph=rss]:before { + content: '\e0b8'; +} + +.oi[data-glyph=script]:before { + content: '\e0b9'; +} + +.oi[data-glyph=share-boxed]:before { + content: '\e0ba'; +} + +.oi[data-glyph=share]:before { + content: '\e0bb'; +} + +.oi[data-glyph=shield]:before { + content: '\e0bc'; +} + +.oi[data-glyph=signal]:before { + content: '\e0bd'; +} + +.oi[data-glyph=signpost]:before { + content: '\e0be'; +} + +.oi[data-glyph=sort-ascending]:before { + content: '\e0bf'; +} + +.oi[data-glyph=sort-descending]:before { + content: '\e0c0'; +} + +.oi[data-glyph=spreadsheet]:before { + content: '\e0c1'; +} + +.oi[data-glyph=star]:before { + content: '\e0c2'; +} + +.oi[data-glyph=sun]:before { + content: '\e0c3'; +} + +.oi[data-glyph=tablet]:before { + content: '\e0c4'; +} + +.oi[data-glyph=tag]:before { + content: '\e0c5'; +} + +.oi[data-glyph=tags]:before { + content: '\e0c6'; +} + +.oi[data-glyph=target]:before { + content: '\e0c7'; +} + +.oi[data-glyph=task]:before { + content: '\e0c8'; +} + +.oi[data-glyph=terminal]:before { + content: '\e0c9'; +} + +.oi[data-glyph=text]:before { + content: '\e0ca'; +} + +.oi[data-glyph=thumb-down]:before { + content: '\e0cb'; +} + +.oi[data-glyph=thumb-up]:before { + content: '\e0cc'; +} + +.oi[data-glyph=timer]:before { + content: '\e0cd'; +} + +.oi[data-glyph=transfer]:before { + content: '\e0ce'; +} + +.oi[data-glyph=trash]:before { + content: '\e0cf'; +} + +.oi[data-glyph=underline]:before { + content: '\e0d0'; +} + +.oi[data-glyph=vertical-align-bottom]:before { + content: '\e0d1'; +} + +.oi[data-glyph=vertical-align-center]:before { + content: '\e0d2'; +} + +.oi[data-glyph=vertical-align-top]:before { + content: '\e0d3'; +} + +.oi[data-glyph=video]:before { + content: '\e0d4'; +} + +.oi[data-glyph=volume-high]:before { + content: '\e0d5'; +} + +.oi[data-glyph=volume-low]:before { + content: '\e0d6'; +} + +.oi[data-glyph=volume-off]:before { + content: '\e0d7'; +} + +.oi[data-glyph=warning]:before { + content: '\e0d8'; +} + +.oi[data-glyph=wifi]:before { + content: '\e0d9'; +} + +.oi[data-glyph=wrench]:before { + content: '\e0da'; +} + +.oi[data-glyph=x]:before { + content: '\e0db'; +} + +.oi[data-glyph=yen]:before { + content: '\e0dc'; +} + +.oi[data-glyph=zoom-in]:before { + content: '\e0dd'; +} + +.oi[data-glyph=zoom-out]:before { + content: '\e0de'; +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css new file mode 100644 index 00000000..1f6afb82 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi[data-glyph].oi-text-replace{font-size:0;line-height:0}.oi[data-glyph].oi-text-replace:before{width:1em;text-align:center}.oi[data-glyph]:before{font-family:Icons;display:inline-block;speak:none;line-height:1;vertical-align:baseline;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi[data-glyph]:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi[data-glyph].oi-align-left:before{text-align:left}.oi[data-glyph].oi-align-right:before{text-align:right}.oi[data-glyph].oi-align-center:before{text-align:center}.oi[data-glyph].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi[data-glyph].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi[data-glyph].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi[data-glyph=account-login]:before{content:'\e000'}.oi[data-glyph=account-logout]:before{content:'\e001'}.oi[data-glyph=action-redo]:before{content:'\e002'}.oi[data-glyph=action-undo]:before{content:'\e003'}.oi[data-glyph=align-center]:before{content:'\e004'}.oi[data-glyph=align-left]:before{content:'\e005'}.oi[data-glyph=align-right]:before{content:'\e006'}.oi[data-glyph=aperture]:before{content:'\e007'}.oi[data-glyph=arrow-bottom]:before{content:'\e008'}.oi[data-glyph=arrow-circle-bottom]:before{content:'\e009'}.oi[data-glyph=arrow-circle-left]:before{content:'\e00a'}.oi[data-glyph=arrow-circle-right]:before{content:'\e00b'}.oi[data-glyph=arrow-circle-top]:before{content:'\e00c'}.oi[data-glyph=arrow-left]:before{content:'\e00d'}.oi[data-glyph=arrow-right]:before{content:'\e00e'}.oi[data-glyph=arrow-thick-bottom]:before{content:'\e00f'}.oi[data-glyph=arrow-thick-left]:before{content:'\e010'}.oi[data-glyph=arrow-thick-right]:before{content:'\e011'}.oi[data-glyph=arrow-thick-top]:before{content:'\e012'}.oi[data-glyph=arrow-top]:before{content:'\e013'}.oi[data-glyph=audio-spectrum]:before{content:'\e014'}.oi[data-glyph=audio]:before{content:'\e015'}.oi[data-glyph=badge]:before{content:'\e016'}.oi[data-glyph=ban]:before{content:'\e017'}.oi[data-glyph=bar-chart]:before{content:'\e018'}.oi[data-glyph=basket]:before{content:'\e019'}.oi[data-glyph=battery-empty]:before{content:'\e01a'}.oi[data-glyph=battery-full]:before{content:'\e01b'}.oi[data-glyph=beaker]:before{content:'\e01c'}.oi[data-glyph=bell]:before{content:'\e01d'}.oi[data-glyph=bluetooth]:before{content:'\e01e'}.oi[data-glyph=bold]:before{content:'\e01f'}.oi[data-glyph=bolt]:before{content:'\e020'}.oi[data-glyph=book]:before{content:'\e021'}.oi[data-glyph=bookmark]:before{content:'\e022'}.oi[data-glyph=box]:before{content:'\e023'}.oi[data-glyph=briefcase]:before{content:'\e024'}.oi[data-glyph=british-pound]:before{content:'\e025'}.oi[data-glyph=browser]:before{content:'\e026'}.oi[data-glyph=brush]:before{content:'\e027'}.oi[data-glyph=bug]:before{content:'\e028'}.oi[data-glyph=bullhorn]:before{content:'\e029'}.oi[data-glyph=calculator]:before{content:'\e02a'}.oi[data-glyph=calendar]:before{content:'\e02b'}.oi[data-glyph=camera-slr]:before{content:'\e02c'}.oi[data-glyph=caret-bottom]:before{content:'\e02d'}.oi[data-glyph=caret-left]:before{content:'\e02e'}.oi[data-glyph=caret-right]:before{content:'\e02f'}.oi[data-glyph=caret-top]:before{content:'\e030'}.oi[data-glyph=cart]:before{content:'\e031'}.oi[data-glyph=chat]:before{content:'\e032'}.oi[data-glyph=check]:before{content:'\e033'}.oi[data-glyph=chevron-bottom]:before{content:'\e034'}.oi[data-glyph=chevron-left]:before{content:'\e035'}.oi[data-glyph=chevron-right]:before{content:'\e036'}.oi[data-glyph=chevron-top]:before{content:'\e037'}.oi[data-glyph=circle-check]:before{content:'\e038'}.oi[data-glyph=circle-x]:before{content:'\e039'}.oi[data-glyph=clipboard]:before{content:'\e03a'}.oi[data-glyph=clock]:before{content:'\e03b'}.oi[data-glyph=cloud-download]:before{content:'\e03c'}.oi[data-glyph=cloud-upload]:before{content:'\e03d'}.oi[data-glyph=cloud]:before{content:'\e03e'}.oi[data-glyph=cloudy]:before{content:'\e03f'}.oi[data-glyph=code]:before{content:'\e040'}.oi[data-glyph=cog]:before{content:'\e041'}.oi[data-glyph=collapse-down]:before{content:'\e042'}.oi[data-glyph=collapse-left]:before{content:'\e043'}.oi[data-glyph=collapse-right]:before{content:'\e044'}.oi[data-glyph=collapse-up]:before{content:'\e045'}.oi[data-glyph=command]:before{content:'\e046'}.oi[data-glyph=comment-square]:before{content:'\e047'}.oi[data-glyph=compass]:before{content:'\e048'}.oi[data-glyph=contrast]:before{content:'\e049'}.oi[data-glyph=copywriting]:before{content:'\e04a'}.oi[data-glyph=credit-card]:before{content:'\e04b'}.oi[data-glyph=crop]:before{content:'\e04c'}.oi[data-glyph=dashboard]:before{content:'\e04d'}.oi[data-glyph=data-transfer-download]:before{content:'\e04e'}.oi[data-glyph=data-transfer-upload]:before{content:'\e04f'}.oi[data-glyph=delete]:before{content:'\e050'}.oi[data-glyph=dial]:before{content:'\e051'}.oi[data-glyph=document]:before{content:'\e052'}.oi[data-glyph=dollar]:before{content:'\e053'}.oi[data-glyph=double-quote-sans-left]:before{content:'\e054'}.oi[data-glyph=double-quote-sans-right]:before{content:'\e055'}.oi[data-glyph=double-quote-serif-left]:before{content:'\e056'}.oi[data-glyph=double-quote-serif-right]:before{content:'\e057'}.oi[data-glyph=droplet]:before{content:'\e058'}.oi[data-glyph=eject]:before{content:'\e059'}.oi[data-glyph=elevator]:before{content:'\e05a'}.oi[data-glyph=ellipses]:before{content:'\e05b'}.oi[data-glyph=envelope-closed]:before{content:'\e05c'}.oi[data-glyph=envelope-open]:before{content:'\e05d'}.oi[data-glyph=euro]:before{content:'\e05e'}.oi[data-glyph=excerpt]:before{content:'\e05f'}.oi[data-glyph=expand-down]:before{content:'\e060'}.oi[data-glyph=expand-left]:before{content:'\e061'}.oi[data-glyph=expand-right]:before{content:'\e062'}.oi[data-glyph=expand-up]:before{content:'\e063'}.oi[data-glyph=external-link]:before{content:'\e064'}.oi[data-glyph=eye]:before{content:'\e065'}.oi[data-glyph=eyedropper]:before{content:'\e066'}.oi[data-glyph=file]:before{content:'\e067'}.oi[data-glyph=fire]:before{content:'\e068'}.oi[data-glyph=flag]:before{content:'\e069'}.oi[data-glyph=flash]:before{content:'\e06a'}.oi[data-glyph=folder]:before{content:'\e06b'}.oi[data-glyph=fork]:before{content:'\e06c'}.oi[data-glyph=fullscreen-enter]:before{content:'\e06d'}.oi[data-glyph=fullscreen-exit]:before{content:'\e06e'}.oi[data-glyph=globe]:before{content:'\e06f'}.oi[data-glyph=graph]:before{content:'\e070'}.oi[data-glyph=grid-four-up]:before{content:'\e071'}.oi[data-glyph=grid-three-up]:before{content:'\e072'}.oi[data-glyph=grid-two-up]:before{content:'\e073'}.oi[data-glyph=hard-drive]:before{content:'\e074'}.oi[data-glyph=header]:before{content:'\e075'}.oi[data-glyph=headphones]:before{content:'\e076'}.oi[data-glyph=heart]:before{content:'\e077'}.oi[data-glyph=home]:before{content:'\e078'}.oi[data-glyph=image]:before{content:'\e079'}.oi[data-glyph=inbox]:before{content:'\e07a'}.oi[data-glyph=infinity]:before{content:'\e07b'}.oi[data-glyph=info]:before{content:'\e07c'}.oi[data-glyph=italic]:before{content:'\e07d'}.oi[data-glyph=justify-center]:before{content:'\e07e'}.oi[data-glyph=justify-left]:before{content:'\e07f'}.oi[data-glyph=justify-right]:before{content:'\e080'}.oi[data-glyph=key]:before{content:'\e081'}.oi[data-glyph=laptop]:before{content:'\e082'}.oi[data-glyph=layers]:before{content:'\e083'}.oi[data-glyph=lightbulb]:before{content:'\e084'}.oi[data-glyph=link-broken]:before{content:'\e085'}.oi[data-glyph=link-intact]:before{content:'\e086'}.oi[data-glyph=list-rich]:before{content:'\e087'}.oi[data-glyph=list]:before{content:'\e088'}.oi[data-glyph=location]:before{content:'\e089'}.oi[data-glyph=lock-locked]:before{content:'\e08a'}.oi[data-glyph=lock-unlocked]:before{content:'\e08b'}.oi[data-glyph=loop-circular]:before{content:'\e08c'}.oi[data-glyph=loop-square]:before{content:'\e08d'}.oi[data-glyph=loop]:before{content:'\e08e'}.oi[data-glyph=magnifying-glass]:before{content:'\e08f'}.oi[data-glyph=map-marker]:before{content:'\e090'}.oi[data-glyph=map]:before{content:'\e091'}.oi[data-glyph=media-pause]:before{content:'\e092'}.oi[data-glyph=media-play]:before{content:'\e093'}.oi[data-glyph=media-record]:before{content:'\e094'}.oi[data-glyph=media-skip-backward]:before{content:'\e095'}.oi[data-glyph=media-skip-forward]:before{content:'\e096'}.oi[data-glyph=media-step-backward]:before{content:'\e097'}.oi[data-glyph=media-step-forward]:before{content:'\e098'}.oi[data-glyph=media-stop]:before{content:'\e099'}.oi[data-glyph=medical-cross]:before{content:'\e09a'}.oi[data-glyph=menu]:before{content:'\e09b'}.oi[data-glyph=microphone]:before{content:'\e09c'}.oi[data-glyph=minus]:before{content:'\e09d'}.oi[data-glyph=monitor]:before{content:'\e09e'}.oi[data-glyph=moon]:before{content:'\e09f'}.oi[data-glyph=move]:before{content:'\e0a0'}.oi[data-glyph=musical-note]:before{content:'\e0a1'}.oi[data-glyph=paperclip]:before{content:'\e0a2'}.oi[data-glyph=pencil]:before{content:'\e0a3'}.oi[data-glyph=people]:before{content:'\e0a4'}.oi[data-glyph=person]:before{content:'\e0a5'}.oi[data-glyph=phone]:before{content:'\e0a6'}.oi[data-glyph=pie-chart]:before{content:'\e0a7'}.oi[data-glyph=pin]:before{content:'\e0a8'}.oi[data-glyph=play-circle]:before{content:'\e0a9'}.oi[data-glyph=plus]:before{content:'\e0aa'}.oi[data-glyph=power-standby]:before{content:'\e0ab'}.oi[data-glyph=print]:before{content:'\e0ac'}.oi[data-glyph=project]:before{content:'\e0ad'}.oi[data-glyph=pulse]:before{content:'\e0ae'}.oi[data-glyph=puzzle-piece]:before{content:'\e0af'}.oi[data-glyph=question-mark]:before{content:'\e0b0'}.oi[data-glyph=rain]:before{content:'\e0b1'}.oi[data-glyph=random]:before{content:'\e0b2'}.oi[data-glyph=reload]:before{content:'\e0b3'}.oi[data-glyph=resize-both]:before{content:'\e0b4'}.oi[data-glyph=resize-height]:before{content:'\e0b5'}.oi[data-glyph=resize-width]:before{content:'\e0b6'}.oi[data-glyph=rss-alt]:before{content:'\e0b7'}.oi[data-glyph=rss]:before{content:'\e0b8'}.oi[data-glyph=script]:before{content:'\e0b9'}.oi[data-glyph=share-boxed]:before{content:'\e0ba'}.oi[data-glyph=share]:before{content:'\e0bb'}.oi[data-glyph=shield]:before{content:'\e0bc'}.oi[data-glyph=signal]:before{content:'\e0bd'}.oi[data-glyph=signpost]:before{content:'\e0be'}.oi[data-glyph=sort-ascending]:before{content:'\e0bf'}.oi[data-glyph=sort-descending]:before{content:'\e0c0'}.oi[data-glyph=spreadsheet]:before{content:'\e0c1'}.oi[data-glyph=star]:before{content:'\e0c2'}.oi[data-glyph=sun]:before{content:'\e0c3'}.oi[data-glyph=tablet]:before{content:'\e0c4'}.oi[data-glyph=tag]:before{content:'\e0c5'}.oi[data-glyph=tags]:before{content:'\e0c6'}.oi[data-glyph=target]:before{content:'\e0c7'}.oi[data-glyph=task]:before{content:'\e0c8'}.oi[data-glyph=terminal]:before{content:'\e0c9'}.oi[data-glyph=text]:before{content:'\e0ca'}.oi[data-glyph=thumb-down]:before{content:'\e0cb'}.oi[data-glyph=thumb-up]:before{content:'\e0cc'}.oi[data-glyph=timer]:before{content:'\e0cd'}.oi[data-glyph=transfer]:before{content:'\e0ce'}.oi[data-glyph=trash]:before{content:'\e0cf'}.oi[data-glyph=underline]:before{content:'\e0d0'}.oi[data-glyph=vertical-align-bottom]:before{content:'\e0d1'}.oi[data-glyph=vertical-align-center]:before{content:'\e0d2'}.oi[data-glyph=vertical-align-top]:before{content:'\e0d3'}.oi[data-glyph=video]:before{content:'\e0d4'}.oi[data-glyph=volume-high]:before{content:'\e0d5'}.oi[data-glyph=volume-low]:before{content:'\e0d6'}.oi[data-glyph=volume-off]:before{content:'\e0d7'}.oi[data-glyph=warning]:before{content:'\e0d8'}.oi[data-glyph=wifi]:before{content:'\e0d9'}.oi[data-glyph=wrench]:before{content:'\e0da'}.oi[data-glyph=x]:before{content:'\e0db'}.oi[data-glyph=yen]:before{content:'\e0dc'}.oi[data-glyph=zoom-in]:before{content:'\e0dd'}.oi[data-glyph=zoom-out]:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss new file mode 100644 index 00000000..e03d979f --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss @@ -0,0 +1,963 @@ +$iconic-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$iconic-font-path}open-iconic.eot'); + src: url('#{$iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$iconic-font-path}open-iconic.woff') format('woff'), url('#{$iconic-font-path}open-iconic.ttf') format('truetype'), url('#{$iconic-font-path}open-iconic.otf') format('opentype'), url('#{$iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph] { + &:before { + position: relative; + top: 1px; + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-left:before { + text-align: left; + } + &.oi-align-right:before { + text-align: right; + } + &.oi-align-center:before { + text-align: center; + } + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + +.oi[data-glyph=account-login]:before { + content: '\e000'; +} + +.oi[data-glyph=account-logout]:before { + content: '\e001'; +} + +.oi[data-glyph=action-redo]:before { + content: '\e002'; +} + +.oi[data-glyph=action-undo]:before { + content: '\e003'; +} + +.oi[data-glyph=align-center]:before { + content: '\e004'; +} + +.oi[data-glyph=align-left]:before { + content: '\e005'; +} + +.oi[data-glyph=align-right]:before { + content: '\e006'; +} + +.oi[data-glyph=aperture]:before { + content: '\e007'; +} + +.oi[data-glyph=arrow-bottom]:before { + content: '\e008'; +} + +.oi[data-glyph=arrow-circle-bottom]:before { + content: '\e009'; +} + +.oi[data-glyph=arrow-circle-left]:before { + content: '\e00a'; +} + +.oi[data-glyph=arrow-circle-right]:before { + content: '\e00b'; +} + +.oi[data-glyph=arrow-circle-top]:before { + content: '\e00c'; +} + +.oi[data-glyph=arrow-left]:before { + content: '\e00d'; +} + +.oi[data-glyph=arrow-right]:before { + content: '\e00e'; +} + +.oi[data-glyph=arrow-thick-bottom]:before { + content: '\e00f'; +} + +.oi[data-glyph=arrow-thick-left]:before { + content: '\e010'; +} + +.oi[data-glyph=arrow-thick-right]:before { + content: '\e011'; +} + +.oi[data-glyph=arrow-thick-top]:before { + content: '\e012'; +} + +.oi[data-glyph=arrow-top]:before { + content: '\e013'; +} + +.oi[data-glyph=audio-spectrum]:before { + content: '\e014'; +} + +.oi[data-glyph=audio]:before { + content: '\e015'; +} + +.oi[data-glyph=badge]:before { + content: '\e016'; +} + +.oi[data-glyph=ban]:before { + content: '\e017'; +} + +.oi[data-glyph=bar-chart]:before { + content: '\e018'; +} + +.oi[data-glyph=basket]:before { + content: '\e019'; +} + +.oi[data-glyph=battery-empty]:before { + content: '\e01a'; +} + +.oi[data-glyph=battery-full]:before { + content: '\e01b'; +} + +.oi[data-glyph=beaker]:before { + content: '\e01c'; +} + +.oi[data-glyph=bell]:before { + content: '\e01d'; +} + +.oi[data-glyph=bluetooth]:before { + content: '\e01e'; +} + +.oi[data-glyph=bold]:before { + content: '\e01f'; +} + +.oi[data-glyph=bolt]:before { + content: '\e020'; +} + +.oi[data-glyph=book]:before { + content: '\e021'; +} + +.oi[data-glyph=bookmark]:before { + content: '\e022'; +} + +.oi[data-glyph=box]:before { + content: '\e023'; +} + +.oi[data-glyph=briefcase]:before { + content: '\e024'; +} + +.oi[data-glyph=british-pound]:before { + content: '\e025'; +} + +.oi[data-glyph=browser]:before { + content: '\e026'; +} + +.oi[data-glyph=brush]:before { + content: '\e027'; +} + +.oi[data-glyph=bug]:before { + content: '\e028'; +} + +.oi[data-glyph=bullhorn]:before { + content: '\e029'; +} + +.oi[data-glyph=calculator]:before { + content: '\e02a'; +} + +.oi[data-glyph=calendar]:before { + content: '\e02b'; +} + +.oi[data-glyph=camera-slr]:before { + content: '\e02c'; +} + +.oi[data-glyph=caret-bottom]:before { + content: '\e02d'; +} + +.oi[data-glyph=caret-left]:before { + content: '\e02e'; +} + +.oi[data-glyph=caret-right]:before { + content: '\e02f'; +} + +.oi[data-glyph=caret-top]:before { + content: '\e030'; +} + +.oi[data-glyph=cart]:before { + content: '\e031'; +} + +.oi[data-glyph=chat]:before { + content: '\e032'; +} + +.oi[data-glyph=check]:before { + content: '\e033'; +} + +.oi[data-glyph=chevron-bottom]:before { + content: '\e034'; +} + +.oi[data-glyph=chevron-left]:before { + content: '\e035'; +} + +.oi[data-glyph=chevron-right]:before { + content: '\e036'; +} + +.oi[data-glyph=chevron-top]:before { + content: '\e037'; +} + +.oi[data-glyph=circle-check]:before { + content: '\e038'; +} + +.oi[data-glyph=circle-x]:before { + content: '\e039'; +} + +.oi[data-glyph=clipboard]:before { + content: '\e03a'; +} + +.oi[data-glyph=clock]:before { + content: '\e03b'; +} + +.oi[data-glyph=cloud-download]:before { + content: '\e03c'; +} + +.oi[data-glyph=cloud-upload]:before { + content: '\e03d'; +} + +.oi[data-glyph=cloud]:before { + content: '\e03e'; +} + +.oi[data-glyph=cloudy]:before { + content: '\e03f'; +} + +.oi[data-glyph=code]:before { + content: '\e040'; +} + +.oi[data-glyph=cog]:before { + content: '\e041'; +} + +.oi[data-glyph=collapse-down]:before { + content: '\e042'; +} + +.oi[data-glyph=collapse-left]:before { + content: '\e043'; +} + +.oi[data-glyph=collapse-right]:before { + content: '\e044'; +} + +.oi[data-glyph=collapse-up]:before { + content: '\e045'; +} + +.oi[data-glyph=command]:before { + content: '\e046'; +} + +.oi[data-glyph=comment-square]:before { + content: '\e047'; +} + +.oi[data-glyph=compass]:before { + content: '\e048'; +} + +.oi[data-glyph=contrast]:before { + content: '\e049'; +} + +.oi[data-glyph=copywriting]:before { + content: '\e04a'; +} + +.oi[data-glyph=credit-card]:before { + content: '\e04b'; +} + +.oi[data-glyph=crop]:before { + content: '\e04c'; +} + +.oi[data-glyph=dashboard]:before { + content: '\e04d'; +} + +.oi[data-glyph=data-transfer-download]:before { + content: '\e04e'; +} + +.oi[data-glyph=data-transfer-upload]:before { + content: '\e04f'; +} + +.oi[data-glyph=delete]:before { + content: '\e050'; +} + +.oi[data-glyph=dial]:before { + content: '\e051'; +} + +.oi[data-glyph=document]:before { + content: '\e052'; +} + +.oi[data-glyph=dollar]:before { + content: '\e053'; +} + +.oi[data-glyph=double-quote-sans-left]:before { + content: '\e054'; +} + +.oi[data-glyph=double-quote-sans-right]:before { + content: '\e055'; +} + +.oi[data-glyph=double-quote-serif-left]:before { + content: '\e056'; +} + +.oi[data-glyph=double-quote-serif-right]:before { + content: '\e057'; +} + +.oi[data-glyph=droplet]:before { + content: '\e058'; +} + +.oi[data-glyph=eject]:before { + content: '\e059'; +} + +.oi[data-glyph=elevator]:before { + content: '\e05a'; +} + +.oi[data-glyph=ellipses]:before { + content: '\e05b'; +} + +.oi[data-glyph=envelope-closed]:before { + content: '\e05c'; +} + +.oi[data-glyph=envelope-open]:before { + content: '\e05d'; +} + +.oi[data-glyph=euro]:before { + content: '\e05e'; +} + +.oi[data-glyph=excerpt]:before { + content: '\e05f'; +} + +.oi[data-glyph=expand-down]:before { + content: '\e060'; +} + +.oi[data-glyph=expand-left]:before { + content: '\e061'; +} + +.oi[data-glyph=expand-right]:before { + content: '\e062'; +} + +.oi[data-glyph=expand-up]:before { + content: '\e063'; +} + +.oi[data-glyph=external-link]:before { + content: '\e064'; +} + +.oi[data-glyph=eye]:before { + content: '\e065'; +} + +.oi[data-glyph=eyedropper]:before { + content: '\e066'; +} + +.oi[data-glyph=file]:before { + content: '\e067'; +} + +.oi[data-glyph=fire]:before { + content: '\e068'; +} + +.oi[data-glyph=flag]:before { + content: '\e069'; +} + +.oi[data-glyph=flash]:before { + content: '\e06a'; +} + +.oi[data-glyph=folder]:before { + content: '\e06b'; +} + +.oi[data-glyph=fork]:before { + content: '\e06c'; +} + +.oi[data-glyph=fullscreen-enter]:before { + content: '\e06d'; +} + +.oi[data-glyph=fullscreen-exit]:before { + content: '\e06e'; +} + +.oi[data-glyph=globe]:before { + content: '\e06f'; +} + +.oi[data-glyph=graph]:before { + content: '\e070'; +} + +.oi[data-glyph=grid-four-up]:before { + content: '\e071'; +} + +.oi[data-glyph=grid-three-up]:before { + content: '\e072'; +} + +.oi[data-glyph=grid-two-up]:before { + content: '\e073'; +} + +.oi[data-glyph=hard-drive]:before { + content: '\e074'; +} + +.oi[data-glyph=header]:before { + content: '\e075'; +} + +.oi[data-glyph=headphones]:before { + content: '\e076'; +} + +.oi[data-glyph=heart]:before { + content: '\e077'; +} + +.oi[data-glyph=home]:before { + content: '\e078'; +} + +.oi[data-glyph=image]:before { + content: '\e079'; +} + +.oi[data-glyph=inbox]:before { + content: '\e07a'; +} + +.oi[data-glyph=infinity]:before { + content: '\e07b'; +} + +.oi[data-glyph=info]:before { + content: '\e07c'; +} + +.oi[data-glyph=italic]:before { + content: '\e07d'; +} + +.oi[data-glyph=justify-center]:before { + content: '\e07e'; +} + +.oi[data-glyph=justify-left]:before { + content: '\e07f'; +} + +.oi[data-glyph=justify-right]:before { + content: '\e080'; +} + +.oi[data-glyph=key]:before { + content: '\e081'; +} + +.oi[data-glyph=laptop]:before { + content: '\e082'; +} + +.oi[data-glyph=layers]:before { + content: '\e083'; +} + +.oi[data-glyph=lightbulb]:before { + content: '\e084'; +} + +.oi[data-glyph=link-broken]:before { + content: '\e085'; +} + +.oi[data-glyph=link-intact]:before { + content: '\e086'; +} + +.oi[data-glyph=list-rich]:before { + content: '\e087'; +} + +.oi[data-glyph=list]:before { + content: '\e088'; +} + +.oi[data-glyph=location]:before { + content: '\e089'; +} + +.oi[data-glyph=lock-locked]:before { + content: '\e08a'; +} + +.oi[data-glyph=lock-unlocked]:before { + content: '\e08b'; +} + +.oi[data-glyph=loop-circular]:before { + content: '\e08c'; +} + +.oi[data-glyph=loop-square]:before { + content: '\e08d'; +} + +.oi[data-glyph=loop]:before { + content: '\e08e'; +} + +.oi[data-glyph=magnifying-glass]:before { + content: '\e08f'; +} + +.oi[data-glyph=map-marker]:before { + content: '\e090'; +} + +.oi[data-glyph=map]:before { + content: '\e091'; +} + +.oi[data-glyph=media-pause]:before { + content: '\e092'; +} + +.oi[data-glyph=media-play]:before { + content: '\e093'; +} + +.oi[data-glyph=media-record]:before { + content: '\e094'; +} + +.oi[data-glyph=media-skip-backward]:before { + content: '\e095'; +} + +.oi[data-glyph=media-skip-forward]:before { + content: '\e096'; +} + +.oi[data-glyph=media-step-backward]:before { + content: '\e097'; +} + +.oi[data-glyph=media-step-forward]:before { + content: '\e098'; +} + +.oi[data-glyph=media-stop]:before { + content: '\e099'; +} + +.oi[data-glyph=medical-cross]:before { + content: '\e09a'; +} + +.oi[data-glyph=menu]:before { + content: '\e09b'; +} + +.oi[data-glyph=microphone]:before { + content: '\e09c'; +} + +.oi[data-glyph=minus]:before { + content: '\e09d'; +} + +.oi[data-glyph=monitor]:before { + content: '\e09e'; +} + +.oi[data-glyph=moon]:before { + content: '\e09f'; +} + +.oi[data-glyph=move]:before { + content: '\e0a0'; +} + +.oi[data-glyph=musical-note]:before { + content: '\e0a1'; +} + +.oi[data-glyph=paperclip]:before { + content: '\e0a2'; +} + +.oi[data-glyph=pencil]:before { + content: '\e0a3'; +} + +.oi[data-glyph=people]:before { + content: '\e0a4'; +} + +.oi[data-glyph=person]:before { + content: '\e0a5'; +} + +.oi[data-glyph=phone]:before { + content: '\e0a6'; +} + +.oi[data-glyph=pie-chart]:before { + content: '\e0a7'; +} + +.oi[data-glyph=pin]:before { + content: '\e0a8'; +} + +.oi[data-glyph=play-circle]:before { + content: '\e0a9'; +} + +.oi[data-glyph=plus]:before { + content: '\e0aa'; +} + +.oi[data-glyph=power-standby]:before { + content: '\e0ab'; +} + +.oi[data-glyph=print]:before { + content: '\e0ac'; +} + +.oi[data-glyph=project]:before { + content: '\e0ad'; +} + +.oi[data-glyph=pulse]:before { + content: '\e0ae'; +} + +.oi[data-glyph=puzzle-piece]:before { + content: '\e0af'; +} + +.oi[data-glyph=question-mark]:before { + content: '\e0b0'; +} + +.oi[data-glyph=rain]:before { + content: '\e0b1'; +} + +.oi[data-glyph=random]:before { + content: '\e0b2'; +} + +.oi[data-glyph=reload]:before { + content: '\e0b3'; +} + +.oi[data-glyph=resize-both]:before { + content: '\e0b4'; +} + +.oi[data-glyph=resize-height]:before { + content: '\e0b5'; +} + +.oi[data-glyph=resize-width]:before { + content: '\e0b6'; +} + +.oi[data-glyph=rss-alt]:before { + content: '\e0b7'; +} + +.oi[data-glyph=rss]:before { + content: '\e0b8'; +} + +.oi[data-glyph=script]:before { + content: '\e0b9'; +} + +.oi[data-glyph=share-boxed]:before { + content: '\e0ba'; +} + +.oi[data-glyph=share]:before { + content: '\e0bb'; +} + +.oi[data-glyph=shield]:before { + content: '\e0bc'; +} + +.oi[data-glyph=signal]:before { + content: '\e0bd'; +} + +.oi[data-glyph=signpost]:before { + content: '\e0be'; +} + +.oi[data-glyph=sort-ascending]:before { + content: '\e0bf'; +} + +.oi[data-glyph=sort-descending]:before { + content: '\e0c0'; +} + +.oi[data-glyph=spreadsheet]:before { + content: '\e0c1'; +} + +.oi[data-glyph=star]:before { + content: '\e0c2'; +} + +.oi[data-glyph=sun]:before { + content: '\e0c3'; +} + +.oi[data-glyph=tablet]:before { + content: '\e0c4'; +} + +.oi[data-glyph=tag]:before { + content: '\e0c5'; +} + +.oi[data-glyph=tags]:before { + content: '\e0c6'; +} + +.oi[data-glyph=target]:before { + content: '\e0c7'; +} + +.oi[data-glyph=task]:before { + content: '\e0c8'; +} + +.oi[data-glyph=terminal]:before { + content: '\e0c9'; +} + +.oi[data-glyph=text]:before { + content: '\e0ca'; +} + +.oi[data-glyph=thumb-down]:before { + content: '\e0cb'; +} + +.oi[data-glyph=thumb-up]:before { + content: '\e0cc'; +} + +.oi[data-glyph=timer]:before { + content: '\e0cd'; +} + +.oi[data-glyph=transfer]:before { + content: '\e0ce'; +} + +.oi[data-glyph=trash]:before { + content: '\e0cf'; +} + +.oi[data-glyph=underline]:before { + content: '\e0d0'; +} + +.oi[data-glyph=vertical-align-bottom]:before { + content: '\e0d1'; +} + +.oi[data-glyph=vertical-align-center]:before { + content: '\e0d2'; +} + +.oi[data-glyph=vertical-align-top]:before { + content: '\e0d3'; +} + +.oi[data-glyph=video]:before { + content: '\e0d4'; +} + +.oi[data-glyph=volume-high]:before { + content: '\e0d5'; +} + +.oi[data-glyph=volume-low]:before { + content: '\e0d6'; +} + +.oi[data-glyph=volume-off]:before { + content: '\e0d7'; +} + +.oi[data-glyph=warning]:before { + content: '\e0d8'; +} + +.oi[data-glyph=wifi]:before { + content: '\e0d9'; +} + +.oi[data-glyph=wrench]:before { + content: '\e0da'; +} + +.oi[data-glyph=x]:before { + content: '\e0db'; +} + +.oi[data-glyph=yen]:before { + content: '\e0dc'; +} + +.oi[data-glyph=zoom-in]:before { + content: '\e0dd'; +} + +.oi[data-glyph=zoom-out]:before { + content: '\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl new file mode 100644 index 00000000..f541bc2d --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl @@ -0,0 +1,733 @@ +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + +.oi[data-glyph].oi-text-replace + font-size 0 + line-height 0 + +.oi[data-glyph].oi-text-replace:before + width 1em + text-align center + +.oi[data-glyph] + &:before + position relative + top 1px + font-family 'Icons' + display inline-block + speak none + line-height 1 + vertical-align baseline + font-weight normal + font-style normal + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + + &:empty:before + width 1em + text-align center + box-sizing content-box + + &.oi-align-left:before + text-align left + + &.oi-align-right:before + text-align right + + &.oi-align-center:before + text-align center + + + &.oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + + &.oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + + &.oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + + + +.oi[data-glyph=account-login]:before + content '\e000' + +.oi[data-glyph=account-logout]:before + content '\e001' + +.oi[data-glyph=action-redo]:before + content '\e002' + +.oi[data-glyph=action-undo]:before + content '\e003' + +.oi[data-glyph=align-center]:before + content '\e004' + +.oi[data-glyph=align-left]:before + content '\e005' + +.oi[data-glyph=align-right]:before + content '\e006' + +.oi[data-glyph=aperture]:before + content '\e007' + +.oi[data-glyph=arrow-bottom]:before + content '\e008' + +.oi[data-glyph=arrow-circle-bottom]:before + content '\e009' + +.oi[data-glyph=arrow-circle-left]:before + content '\e00a' + +.oi[data-glyph=arrow-circle-right]:before + content '\e00b' + +.oi[data-glyph=arrow-circle-top]:before + content '\e00c' + +.oi[data-glyph=arrow-left]:before + content '\e00d' + +.oi[data-glyph=arrow-right]:before + content '\e00e' + +.oi[data-glyph=arrow-thick-bottom]:before + content '\e00f' + +.oi[data-glyph=arrow-thick-left]:before + content '\e010' + +.oi[data-glyph=arrow-thick-right]:before + content '\e011' + +.oi[data-glyph=arrow-thick-top]:before + content '\e012' + +.oi[data-glyph=arrow-top]:before + content '\e013' + +.oi[data-glyph=audio-spectrum]:before + content '\e014' + +.oi[data-glyph=audio]:before + content '\e015' + +.oi[data-glyph=badge]:before + content '\e016' + +.oi[data-glyph=ban]:before + content '\e017' + +.oi[data-glyph=bar-chart]:before + content '\e018' + +.oi[data-glyph=basket]:before + content '\e019' + +.oi[data-glyph=battery-empty]:before + content '\e01a' + +.oi[data-glyph=battery-full]:before + content '\e01b' + +.oi[data-glyph=beaker]:before + content '\e01c' + +.oi[data-glyph=bell]:before + content '\e01d' + +.oi[data-glyph=bluetooth]:before + content '\e01e' + +.oi[data-glyph=bold]:before + content '\e01f' + +.oi[data-glyph=bolt]:before + content '\e020' + +.oi[data-glyph=book]:before + content '\e021' + +.oi[data-glyph=bookmark]:before + content '\e022' + +.oi[data-glyph=box]:before + content '\e023' + +.oi[data-glyph=briefcase]:before + content '\e024' + +.oi[data-glyph=british-pound]:before + content '\e025' + +.oi[data-glyph=browser]:before + content '\e026' + +.oi[data-glyph=brush]:before + content '\e027' + +.oi[data-glyph=bug]:before + content '\e028' + +.oi[data-glyph=bullhorn]:before + content '\e029' + +.oi[data-glyph=calculator]:before + content '\e02a' + +.oi[data-glyph=calendar]:before + content '\e02b' + +.oi[data-glyph=camera-slr]:before + content '\e02c' + +.oi[data-glyph=caret-bottom]:before + content '\e02d' + +.oi[data-glyph=caret-left]:before + content '\e02e' + +.oi[data-glyph=caret-right]:before + content '\e02f' + +.oi[data-glyph=caret-top]:before + content '\e030' + +.oi[data-glyph=cart]:before + content '\e031' + +.oi[data-glyph=chat]:before + content '\e032' + +.oi[data-glyph=check]:before + content '\e033' + +.oi[data-glyph=chevron-bottom]:before + content '\e034' + +.oi[data-glyph=chevron-left]:before + content '\e035' + +.oi[data-glyph=chevron-right]:before + content '\e036' + +.oi[data-glyph=chevron-top]:before + content '\e037' + +.oi[data-glyph=circle-check]:before + content '\e038' + +.oi[data-glyph=circle-x]:before + content '\e039' + +.oi[data-glyph=clipboard]:before + content '\e03a' + +.oi[data-glyph=clock]:before + content '\e03b' + +.oi[data-glyph=cloud-download]:before + content '\e03c' + +.oi[data-glyph=cloud-upload]:before + content '\e03d' + +.oi[data-glyph=cloud]:before + content '\e03e' + +.oi[data-glyph=cloudy]:before + content '\e03f' + +.oi[data-glyph=code]:before + content '\e040' + +.oi[data-glyph=cog]:before + content '\e041' + +.oi[data-glyph=collapse-down]:before + content '\e042' + +.oi[data-glyph=collapse-left]:before + content '\e043' + +.oi[data-glyph=collapse-right]:before + content '\e044' + +.oi[data-glyph=collapse-up]:before + content '\e045' + +.oi[data-glyph=command]:before + content '\e046' + +.oi[data-glyph=comment-square]:before + content '\e047' + +.oi[data-glyph=compass]:before + content '\e048' + +.oi[data-glyph=contrast]:before + content '\e049' + +.oi[data-glyph=copywriting]:before + content '\e04a' + +.oi[data-glyph=credit-card]:before + content '\e04b' + +.oi[data-glyph=crop]:before + content '\e04c' + +.oi[data-glyph=dashboard]:before + content '\e04d' + +.oi[data-glyph=data-transfer-download]:before + content '\e04e' + +.oi[data-glyph=data-transfer-upload]:before + content '\e04f' + +.oi[data-glyph=delete]:before + content '\e050' + +.oi[data-glyph=dial]:before + content '\e051' + +.oi[data-glyph=document]:before + content '\e052' + +.oi[data-glyph=dollar]:before + content '\e053' + +.oi[data-glyph=double-quote-sans-left]:before + content '\e054' + +.oi[data-glyph=double-quote-sans-right]:before + content '\e055' + +.oi[data-glyph=double-quote-serif-left]:before + content '\e056' + +.oi[data-glyph=double-quote-serif-right]:before + content '\e057' + +.oi[data-glyph=droplet]:before + content '\e058' + +.oi[data-glyph=eject]:before + content '\e059' + +.oi[data-glyph=elevator]:before + content '\e05a' + +.oi[data-glyph=ellipses]:before + content '\e05b' + +.oi[data-glyph=envelope-closed]:before + content '\e05c' + +.oi[data-glyph=envelope-open]:before + content '\e05d' + +.oi[data-glyph=euro]:before + content '\e05e' + +.oi[data-glyph=excerpt]:before + content '\e05f' + +.oi[data-glyph=expand-down]:before + content '\e060' + +.oi[data-glyph=expand-left]:before + content '\e061' + +.oi[data-glyph=expand-right]:before + content '\e062' + +.oi[data-glyph=expand-up]:before + content '\e063' + +.oi[data-glyph=external-link]:before + content '\e064' + +.oi[data-glyph=eye]:before + content '\e065' + +.oi[data-glyph=eyedropper]:before + content '\e066' + +.oi[data-glyph=file]:before + content '\e067' + +.oi[data-glyph=fire]:before + content '\e068' + +.oi[data-glyph=flag]:before + content '\e069' + +.oi[data-glyph=flash]:before + content '\e06a' + +.oi[data-glyph=folder]:before + content '\e06b' + +.oi[data-glyph=fork]:before + content '\e06c' + +.oi[data-glyph=fullscreen-enter]:before + content '\e06d' + +.oi[data-glyph=fullscreen-exit]:before + content '\e06e' + +.oi[data-glyph=globe]:before + content '\e06f' + +.oi[data-glyph=graph]:before + content '\e070' + +.oi[data-glyph=grid-four-up]:before + content '\e071' + +.oi[data-glyph=grid-three-up]:before + content '\e072' + +.oi[data-glyph=grid-two-up]:before + content '\e073' + +.oi[data-glyph=hard-drive]:before + content '\e074' + +.oi[data-glyph=header]:before + content '\e075' + +.oi[data-glyph=headphones]:before + content '\e076' + +.oi[data-glyph=heart]:before + content '\e077' + +.oi[data-glyph=home]:before + content '\e078' + +.oi[data-glyph=image]:before + content '\e079' + +.oi[data-glyph=inbox]:before + content '\e07a' + +.oi[data-glyph=infinity]:before + content '\e07b' + +.oi[data-glyph=info]:before + content '\e07c' + +.oi[data-glyph=italic]:before + content '\e07d' + +.oi[data-glyph=justify-center]:before + content '\e07e' + +.oi[data-glyph=justify-left]:before + content '\e07f' + +.oi[data-glyph=justify-right]:before + content '\e080' + +.oi[data-glyph=key]:before + content '\e081' + +.oi[data-glyph=laptop]:before + content '\e082' + +.oi[data-glyph=layers]:before + content '\e083' + +.oi[data-glyph=lightbulb]:before + content '\e084' + +.oi[data-glyph=link-broken]:before + content '\e085' + +.oi[data-glyph=link-intact]:before + content '\e086' + +.oi[data-glyph=list-rich]:before + content '\e087' + +.oi[data-glyph=list]:before + content '\e088' + +.oi[data-glyph=location]:before + content '\e089' + +.oi[data-glyph=lock-locked]:before + content '\e08a' + +.oi[data-glyph=lock-unlocked]:before + content '\e08b' + +.oi[data-glyph=loop-circular]:before + content '\e08c' + +.oi[data-glyph=loop-square]:before + content '\e08d' + +.oi[data-glyph=loop]:before + content '\e08e' + +.oi[data-glyph=magnifying-glass]:before + content '\e08f' + +.oi[data-glyph=map-marker]:before + content '\e090' + +.oi[data-glyph=map]:before + content '\e091' + +.oi[data-glyph=media-pause]:before + content '\e092' + +.oi[data-glyph=media-play]:before + content '\e093' + +.oi[data-glyph=media-record]:before + content '\e094' + +.oi[data-glyph=media-skip-backward]:before + content '\e095' + +.oi[data-glyph=media-skip-forward]:before + content '\e096' + +.oi[data-glyph=media-step-backward]:before + content '\e097' + +.oi[data-glyph=media-step-forward]:before + content '\e098' + +.oi[data-glyph=media-stop]:before + content '\e099' + +.oi[data-glyph=medical-cross]:before + content '\e09a' + +.oi[data-glyph=menu]:before + content '\e09b' + +.oi[data-glyph=microphone]:before + content '\e09c' + +.oi[data-glyph=minus]:before + content '\e09d' + +.oi[data-glyph=monitor]:before + content '\e09e' + +.oi[data-glyph=moon]:before + content '\e09f' + +.oi[data-glyph=move]:before + content '\e0a0' + +.oi[data-glyph=musical-note]:before + content '\e0a1' + +.oi[data-glyph=paperclip]:before + content '\e0a2' + +.oi[data-glyph=pencil]:before + content '\e0a3' + +.oi[data-glyph=people]:before + content '\e0a4' + +.oi[data-glyph=person]:before + content '\e0a5' + +.oi[data-glyph=phone]:before + content '\e0a6' + +.oi[data-glyph=pie-chart]:before + content '\e0a7' + +.oi[data-glyph=pin]:before + content '\e0a8' + +.oi[data-glyph=play-circle]:before + content '\e0a9' + +.oi[data-glyph=plus]:before + content '\e0aa' + +.oi[data-glyph=power-standby]:before + content '\e0ab' + +.oi[data-glyph=print]:before + content '\e0ac' + +.oi[data-glyph=project]:before + content '\e0ad' + +.oi[data-glyph=pulse]:before + content '\e0ae' + +.oi[data-glyph=puzzle-piece]:before + content '\e0af' + +.oi[data-glyph=question-mark]:before + content '\e0b0' + +.oi[data-glyph=rain]:before + content '\e0b1' + +.oi[data-glyph=random]:before + content '\e0b2' + +.oi[data-glyph=reload]:before + content '\e0b3' + +.oi[data-glyph=resize-both]:before + content '\e0b4' + +.oi[data-glyph=resize-height]:before + content '\e0b5' + +.oi[data-glyph=resize-width]:before + content '\e0b6' + +.oi[data-glyph=rss-alt]:before + content '\e0b7' + +.oi[data-glyph=rss]:before + content '\e0b8' + +.oi[data-glyph=script]:before + content '\e0b9' + +.oi[data-glyph=share-boxed]:before + content '\e0ba' + +.oi[data-glyph=share]:before + content '\e0bb' + +.oi[data-glyph=shield]:before + content '\e0bc' + +.oi[data-glyph=signal]:before + content '\e0bd' + +.oi[data-glyph=signpost]:before + content '\e0be' + +.oi[data-glyph=sort-ascending]:before + content '\e0bf' + +.oi[data-glyph=sort-descending]:before + content '\e0c0' + +.oi[data-glyph=spreadsheet]:before + content '\e0c1' + +.oi[data-glyph=star]:before + content '\e0c2' + +.oi[data-glyph=sun]:before + content '\e0c3' + +.oi[data-glyph=tablet]:before + content '\e0c4' + +.oi[data-glyph=tag]:before + content '\e0c5' + +.oi[data-glyph=tags]:before + content '\e0c6' + +.oi[data-glyph=target]:before + content '\e0c7' + +.oi[data-glyph=task]:before + content '\e0c8' + +.oi[data-glyph=terminal]:before + content '\e0c9' + +.oi[data-glyph=text]:before + content '\e0ca' + +.oi[data-glyph=thumb-down]:before + content '\e0cb' + +.oi[data-glyph=thumb-up]:before + content '\e0cc' + +.oi[data-glyph=timer]:before + content '\e0cd' + +.oi[data-glyph=transfer]:before + content '\e0ce' + +.oi[data-glyph=trash]:before + content '\e0cf' + +.oi[data-glyph=underline]:before + content '\e0d0' + +.oi[data-glyph=vertical-align-bottom]:before + content '\e0d1' + +.oi[data-glyph=vertical-align-center]:before + content '\e0d2' + +.oi[data-glyph=vertical-align-top]:before + content '\e0d3' + +.oi[data-glyph=video]:before + content '\e0d4' + +.oi[data-glyph=volume-high]:before + content '\e0d5' + +.oi[data-glyph=volume-low]:before + content '\e0d6' + +.oi[data-glyph=volume-off]:before + content '\e0d7' + +.oi[data-glyph=warning]:before + content '\e0d8' + +.oi[data-glyph=wifi]:before + content '\e0d9' + +.oi[data-glyph=wrench]:before + content '\e0da' + +.oi[data-glyph=x]:before + content '\e0db' + +.oi[data-glyph=yen]:before + content '\e0dc' + +.oi[data-glyph=zoom-in]:before + content '\e0dd' + +.oi[data-glyph=zoom-out]:before + content '\e0de' diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot new file mode 100644 index 0000000000000000000000000000000000000000..f98177dbf711863eff7c90f84d5d419d02d99ba8 GIT binary patch literal 28196 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 f%X4~$E_2;^J#ifP;CI~=<%5iE_!YyhznS + + + + +Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014 + By P.J. Onori +Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fab604866cd5e55ef4525ea22e420c411f510b01 GIT binary patch literal 28028 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 literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff new file mode 100644 index 0000000000000000000000000000000000000000..f9309988aeab3868040d3b322658902098eba27f GIT binary patch literal 14984 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 literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/package.json b/class/RealSpaceInterface/static/fonts/open-iconic/package.json new file mode 100644 index 00000000..d1e76ca0 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/package.json @@ -0,0 +1,36 @@ +{ + "name": "open-iconic", + "description": "An open source icon set with marks in SVG, sprite, webfont and raster format", + "version": "1.1.1", + "keywords": ["icon", "iconic", "open-iconic", "svg", "sprite", "font", "png", "webp"], + "homepage": "http://useiconic.com/open-iconic/", + "author": { + "name": "Iconic", + "email": "yourfriends@useiconic.com", + "web": "http://useiconic.com/" + }, + "repository": { + "type": "git", + "url": "https://github.com/iconic/open-iconic.git" + }, + "contributors": [ + { + "name": "P.J. Onori", + "web": "http://twitter.com/somerandomdude" + }, + { + "name": "Dave Johnson", + "web": "http://twitter.com/protodave" + } + ], + "licenses": [ + { + "type": "MIT License", + "url": "http://opensource.org/licenses/mit-license.html" + }, + { + "type": "SIL OFL 1.1", + "url": "http://scripts.sil.org/OFL" + } + ] +} diff --git a/class/RealSpaceInterface/static/images/cmap.png b/class/RealSpaceInterface/static/images/cmap.png new file mode 100644 index 0000000000000000000000000000000000000000..68d1ec8cfa6a77090cebe05aef1d28ceb2f66403 GIT binary patch literal 279 zcmV+y0qFjTP)wLYQ$e@e55vWYMdwoy-!?ZKcuwDOYo004;K`!;>7hHAOFratMF$Md|$ z^=AF9H-1NvXY*s`ILu-CCohOO>SNw(?$3HbbJWv{+|BRz)cR?EtWWp+yT9bH=broH zY#tRqj_%-maY;V!$maLHB%C-+b6}2s)>2*g+S?pI)CXzKS-cy>X>XVyd++)tC zd{PqHZ@iE9zocNj3ZEwb@tGD&#DK)|8!r#}KDsqA>p{**pSygb%=#D7JNI!odZ$>i9a;3lTGU2(_R1$V0+Vn2l(QDF7H+z7shV~mWw$n^fC?+Ku1RZCnWN>UO_QmvAUQh^kMk%6Iwu7R1Zk$H%r vxs{2bm9d4kfsvJg!F}D7&nOyl^HVa@DsgLAS8&H4sDZ)L)z4*}Q$iB}p3|ts literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png b/class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f5529bd06c58049acb4166d41fc203907eaf17 GIT binary patch literal 266 zcmV+l0rmcgP){jDw}hj9u0hq=cWd-Wmwcb&FB|1e4BD6vlbgD?20&T6gyO21dQJ`V`GZrUYkM$RxL(EtDd literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png b/class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png new file mode 100644 index 0000000000000000000000000000000000000000..180960f1d94dc4a9bed0b9ade42e87e6174f9f4f GIT binary patch literal 262 zcmV+h0r~!kP)4=Vn`0z{Tg?Lt9l70~{(RreN zj+opQ4(71ix=T(ehr|!&JU!RwBfg*by@2@eF&`w!PhD4i_KCPs{g-`}`Y4?@)lchx zqvQHf?(tW-f6tS?pGkA<|IjSqBX7)~=7=B8758fgX%j&@7QYfd&I|izb9kRhnCfk_ zZg<{A_dTlfh7~LB^~~R`^ZVHCYrcp2!i=ba&Ut^B*w5+%{i*Nx0lF&^Uwg(*Q2+n{ M07*qoM6N<$f%< z%$)nxzSxTB9OfmD=3ni3=e*{-Jy9NvqlofMC&w5I-`l_X-qZVTo+F8Rb_VlMxaBMv cD*IWz6FH2tfZJWzQ~&?~07*qoM6N<$g7tY!PXGV_ literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png new file mode 100644 index 0000000000000000000000000000000000000000..5eaae181bea013695a0cd833ccc77c90e813ec9d GIT binary patch literal 297 zcmV+^0oMMBP)X^{1tyJi&^S;fSH+etb_b>kQdO#08 zKR@b9y~&9=&);y(iT5Sn^l`qd$xXkof90nRyncYmC-zN@(;6OU_-OQT=}-IsU;Cof vf$e~Pz}H|q;3xkoyjj%^yfwT}eH8o$&?s!5Z{Kg!00000NkvXXu0mjf#TAWk literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png new file mode 100644 index 0000000000000000000000000000000000000000..63502da837f933d91e7182e917795b04a27da1be GIT binary patch literal 292 zcmV+<0o(qGP)_NZOg&)|f&ma8v`&zIM>d-u`@{OF@{mJR5y+4DIQ|5Y|ymGzIr9bDf z@1C#cpY>bro{M*TEjrF~TAlgHS9$tb&piTtd5^tb`{q7&;|hQNev$j|JFvd!yvNFM z&*pm|r{phr-)k*C_Q`*XC9j23;`&8v-r(;an(<-aq2KC#A)|jiaiL|NpYz6g#ru!B qiqC%d-miGQ<{kad-2Z)j%Y6XCl`gluWu?#n0000K>$5&%m&6 zr>;2@ep7s_M?cq6KGlOc2>+pDk)u5=@x5Ni;{J(WLm8281V5P27mVIR|Z!k_9j7wHGgdHWHvj=HY6)VFd@xRrdGlYG4I c=g|B41$*tE31HX$6951J07*qoM6N<$f*eYQKmY&$ literal 0 HcmV?d00001 diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png new file mode 100644 index 0000000000000000000000000000000000000000..68d1ec8cfa6a77090cebe05aef1d28ceb2f66403 GIT binary patch literal 279 zcmV+y0qFjTP)wLYQ$e@e55vWYMdwoy-!?ZKcuwDOYo004;K`!;>7hHAOFratMF$Md|$ z^=AF9H-1NvXY*s`ILu-CCohOO>SNw(?$3HbbJWv{+|BRz)cR?EtWWp+yT9bH=broH zY#tRqj_%-maY;V!$maLHB%C-+b6}2s)>2*g+S?pI)CXzK + * [{name: <name>, texture: <texture>}, ...] + *

+ *
+ * @type {Array.>}
+ * */
+var colorMaps = [];
+
+/**
+ * GUI responsible for controlling inital + cosmological parameters.
+ * @type {module:paramGui~ParamGui}
+ */
+var parameterGui;
+
+/**
+ * modal dialog containing table of previous simulations and
+ * their previous parameters.
+ *
+ * @type {SimuTable}
+ * @see {SimuTable}
+ */
+var simuTable;
+
+/**
+ * Player controls.
+ *
+ * @type {PlayerPanel}
+ */
+var playerPanel;
+
+/**
+ * flot.js instance for transfer function plot.
+ */
+var transferFunctionPlot;
+
+/**
+ * flot.js instance for Cl plot.
+ */
+var tClPlot;
+
+/**
+ * Indicates whether plots panel is visible.
+ * @type {boolean}
+ */
+var plotWindowVisible = true;
+
+/**
+ * Holds the list of k's for the transfer function plot.
+ * @type {number[]}
+ */
+var kRange;
+
+/**
+ * Indicates whether websocket connection is closed.
+ * @type {boolean}
+ */
+var closed = true;
+/**
+ * Current frame.
+ * @type {number}
+ */
+var frame = 0;
+/**
+ * Indicates whether animation is currently running.
+ * @ŧype {boolean}
+ */
+var animationRunning = false;
+
+/**
+ * Field of View (in degrees) of perspective camera
+ * @type {number}
+ */
+var FoV = 45;
+
+/**
+ * true if scene is to be rendered using an orthographic camera.
+ * @type {boolean}
+ * @see {@link module:RSI~toggleCameraMode}
+ */
+var orthographicMode = false;
+
+/**
+ * Renderer used to create images / .gifs.
+ * @type {THREE.WebGLRenderer}
+ */
+var imgRenderer = new THREE.WebGLRenderer();
+
+/**
+ * Orthographic camera used for image / .gif creation.
+ * @type {THREE.OrthographicCamera}
+ */
+var orthoCam;
+
+/**
+ * Number of decimal digits to round redshift values to.
+ * @type {number}
+ */
+var REDSHIFT_ROUND = 1;
+
+/**
+ * List of visually distinct colors for use in plots,
+ * taken from {@link https://sashat.me/2017/01/11/list-of-20-simple-distinct-colors/}
+ */
+var colors = [
+    "#e6194b",
+    "#3cb44b",
+    // "#ffe119", // yellow, hard to see on white ground
+    "#0082c8",
+    "#f58231",
+    "#911eb4",
+    // "#46f0f0", // cyan, hard to see on white ground
+    "#f032e6",
+    "#d2f53c",
+    "#fabebe",
+    "#008080",
+    "#e6beff",
+    "#aa6e28",
+    "#fffac8",
+    "#800000",
+    "#aaffc3",
+    "#808000",
+    "#ffd8b1",
+    "#000080",
+    "#808080",
+    "#FFFFFF",
+    "#000000"
+];
+
+/**
+ * Plot options for Cl's
+ */
+var tClPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        axisLabel: "ℓ",
+        // transform: Math.log,
+        // inverseTransform: Math.exp,
+    },
+    yaxis: {
+        tickFormatter: function(num, obj) {
+            if (num > 0 && num < 1e-3) {
+                var power = Math.floor(Math.log10(num));
+                var prefix = num / Math.pow(10, power);
+                return round(prefix, 2) + "·10" + power + "";
+            }
+            return num;
+        },
+        axisLabel: "ℓ (ℓ+1) CTT / (2π)",
+    },
+};
+
+/**
+ * Plot options for matter spectrum
+ */
+var mPkPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        axisLabel: "k [h/Mpc]",
+        ticks: [[1e-3, "10-3"], [1e-2, "10-2"], [1e-1, "10-1"], 1, 10],
+    },
+    yaxis: {
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        tickFormatter: function(num, obj) {
+            var power = Math.floor(Math.log10(num));
+            var prefix = num / Math.pow(10, power);
+            var result = "";
+            if (prefix != 1)
+                result += round(prefix, 2) + "·";
+            return result + "10" + power + "";
+        },
+        axisLabel: "P(k) [(Mpc/h)3]",
+        ticks: [1, 10, 100, 1000, 10000, 100000, 1000000],
+        min: 0.1,
+    },
+};
+
+/**
+ * Plot options for transfer function(s)
+ */
+var transferPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        axisLabel: "k [Mpc-1]",
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        ticks: [[1e-3, "10-3"], [1e-2, "10-2"], [1e-1, "10-1"], 1],
+    },
+    yaxis: {
+        axisLabel: "transfer function",
+        min: -5,
+        max: 5,
+    },
+};
+
+
+/**
+ * Raycaster for mouse picking
+ * @type {THREE.Raycaster}
+ */
+var raycaster = new THREE.Raycaster();
+/**
+ * 2d vector containing mouse position.
+ * @type {THREE.Vector2}
+ */
+var mouse = new THREE.Vector2();
+
+
+/* ENTRY POINT */
+$(document).ready(connect);
+
+/**
+ * Mouse Event Callback which is called on every mouse move.
+ * It is required to track the mouse's position since it's required
+ * to feed its position to the raycaster to determine over which mesh
+ * the mouse is currently hovering.
+ */
+function onMouseMove(ev) {
+    var rect = container.getBoundingClientRect();
+    mouse.x = ((ev.clientX - rect.left) / window.innerWidth) * 2 - 1;
+    mouse.y = -((ev.clientY - rect.top) / window.innerHeight) * 2 + 1;
+}
+
+
+/**
+ * Once the websocket in {@link module:RSI~connect} has established a connection,
+ * this function will be called, which initializes the application.
+ */
+function start() {
+    init();
+    step();
+    requestAnimationFrame(animate);
+}
+
+/**
+ * Logging function
+ *
+ * @param {Object} msg
+ */
+function log(msg) {
+    console.log("D: " + msg);
+}
+
+/**
+ * Entry point for the whole application.
+ *
+ * Establishes a connection to the WebSocket provided by the backend.
+ */
+function connect() {
+    // connection = new SockJS('http://' + window.location.host + '/datasocket');
+    connection = new WebSocket("ws://" + window.location.host + "/datasocket");
+
+    log("Connecting...");
+
+    connection.onopen = function() {
+        log("Connected!");
+        start();
+    };
+
+    connection.onmessage = messageCallback;
+
+    connection.onclose = function() {
+        log('Disconnected.');
+        connection = null;
+        onClose();
+    };
+}
+
+/**
+ * Message callback for the WebSocket connection which gets called for each
+ * received message.
+ *
+ * @param {Object} e - message event object
+ */
+function messageCallback(e) {
+    var message = JSON.parse(e.data);
+    /**
+     * Once data has been received, update the progress in the progress
+     * in the progress modal and call {@link module:RSI~onData} to process
+     * the received data.
+     * Also, flag {@link receivedInitial} as true if no initial data has been
+     * received prior.
+     */
+    if (message.type == 'data') {
+        if (message.hasOwnProperty("progress")) {
+            var percentage = (message.progress * 100).toFixed(1) + "%";
+            $("#simulationProgressBar").css({width: percentage});
+            $("#simulationProgressBar").text(percentage);
+        }
+        onData(message, !receivedInitial);
+        if (!receivedInitial) {
+            receivedInitial = true;
+        }
+    /**
+     * The server sends a list of k values (at which the transfer function is sampled)
+     * immediately after the client connected.
+     */
+    } else if (message.type === 'krange') {
+        log("Received k range from server.");
+        kRange = message.k;
+    }
+    /**
+     * Handles the temperature Cl's sent by the server.
+     * The Cl's (and l's) sent by the server conventionally do not contain the samples for l = 0 and l = 1.
+     * They are, however, not already in the conventional form of l * (l + 1) Cl / (2 * Pi),
+     * so they are processed below.
+     * After that, they are added to the active simulation exposed by
+     * {@link SimulationManager#getTarget}.
+     */
+    else if (message.type === "Cl") {
+        log("Received Cl's from server.");
+        var l = message.l;
+        var tCl = message.tCl;
+
+        message.tCl = l.map(function(ll, i) { return tCl[i] * ll * (ll + 1) / (2 * Math.PI); });
+        simulationManager.getTarget().Cls = message;
+    }
+    /**
+     * Handles matter power spectrum, similar to Cl's above.
+     */
+    else if (message.type == "mPk") {
+        log("Received matter spectrum from server");
+        var kh = message.kh;
+        var Pkh = message.Pkh;
+
+        simulationManager.getTarget().mPk = message;
+        plotStaticIfVisible();
+    }
+    /**
+     * The server signals end of calculations or data transfers via a "success" message
+     * of one of several types.
+     * Upon reception of that message the activity indicator is hidden.
+     */
+    else if (message.type == "success") {
+        calculationRunning = false;
+        hideActivityIndicator();
+
+        if (message.sort == 'Initial') {
+            initialSet = true;
+            loadFrame(0);
+        }
+        /**
+         * Once the server has confirmed that it has received cosmological parameters,
+         * immediately request the simulation results.
+         */
+        else if (message.sort == 'Cosmo') {
+            cosmoSet = true;
+            $("#simulationProgressInfo").text("Receiving simulation data...");
+            requestSimulationData();
+        }
+        /**
+         * Handle the server signaling end of data transfer (for all frames).
+         * The progress modal is hidden, and the list of simulations is rebuild from scratch.
+         * Also, the current frame is reloaded to display the newly received data
+         * at the currently active frame.
+         */
+        else if (message.sort == "Data") {
+            log("Success receiving simulation.");
+            $("#simulationProgressModal").modal("hide");
+            simulationManager.finalizeTarget();
+            // Update the simulation list/table
+            simuTable.clear();
+            var simulations = simulationManager.getSimulations();
+            var active = simulationManager.getActive();
+            simuTable.populate(simulationManager.getSimulations(), simulationManager.getActive());
+            loadFrame(frame, true);
+        }
+    }
+    /**
+     * Server sends redshifts immediately after sending initial condition data.
+     */
+    else if (message.type == "redshift") {
+        redshift = ["Initial"].concat(message.redshift);
+    }
+    /**
+     * Server also sends exact z of decoupling extracted from CLASS's background parameters.
+     * Also contains the index of the closest frame *before* decoupling, which this
+     * application requires to stop the simulation playback at the appropriate frame.
+     */
+    else if (message.type == 'decoupling') {
+        log("Decoupling at z = " + message.z + " (frame #" + message.frame + ")");
+        // Add +1 because redshift[0] === "Initial"
+        decouplingFrame = message.frame + 1;
+    }
+    /**
+     * The server notifies the client about the resolution (i.e. the side length of the square
+     * data matrix) it is about to receive.
+     * This is done before an initial state is sent.
+     */
+    else if (message.type == "resolution") {
+        log("Setting resolution to " + message.value);
+        simulationManager.setResolution(message.value);
+    }
+    /**
+     * Currently unused.
+     */
+    else if (message.type == "extrema") {
+    }
+    /**
+     * In case of an exception occuring on the server side, the client is notified of that
+     * and displays the transmitted stack trace to the user.
+     * Also, if one exists, the target simulation (the one, which is currently receiving data)
+     * is destroyed in case of an exception, to guarantee the continued functionality of the
+     * application.
+     */
+    else if (message.type == "exception") {
+        $("#exceptionModalMessage").text(message.exception);
+        if (calculationRunning) {
+            $("#simulationProgressModal").modal("hide");
+            calculationRunning = false;
+        }
+        simulationManager.destroyTarget();
+        $("#exceptionModal").modal("show");
+    }
+}
+
+function sendParams(params,type) {
+    connection.send(JSON.stringify({type:type,params:params}));
+}
+
+/**
+ * Disconnect from the server.
+ */
+function disconnect() {
+    log("disconnecting");
+    connection.close();
+    connection = null;
+}
+
+
+/**
+ * Requests the transfer of the actual data (for all the redshifts) from the server.
+ */
+function requestSimulationData() {
+    log("Requesting calculation result from server...");
+    if (!calculationRunning) {
+        connection.send(JSON.stringify({
+            type: "Start",
+            params: [],
+        }));
+        calculationRunning = true;
+        showActivityIndicator();
+    }
+}
+
+/**
+ * A simple rounding implementation since JavaScript doesn't provide a built-in
+ * solution.
+ * This will round the given number to a maximum number of decimal places (no trailing zeros).
+ *
+ * @param {number} num - The number to round
+ * @param {number} decimalPlaces - Maximum number of decimal places
+ * @return {number} rounding result
+ */
+function round(num, decimalPlaces) {
+    return num.toFixed(decimalPlaces).replace(/(\.)?0+$/, "");
+}
+
+/**
+ * Since the data transfer between server and client (in that direction) is the main
+ * bottleneck of the application, the data is mostly (except for plots, redshifts, ...)
+ * encoded in base64.
+ * This function serves the purpose of decing that data.
+ * The data is assumed to consist of 32-bit floats. Other data formats (e.g. 64-bit floats)
+ * would require a modification of this function.
+ *
+ * @param {string} b64 - base64 encoded data received from the server
+ * @return {Float32Array} The decoded data array
+ */
+function b64ToFloatArray(b64) {
+    var binary = window.atob(b64);
+    var dv = new DataView(new ArrayBuffer(4));
+    var resultLength = binary.length / 4;
+    var result = new Float32Array(resultLength);
+
+    for (var i = 0; i < resultLength; i++) {
+        var idx = 4 * i;
+        for (var offset = 0; offset < 4; offset++) {
+            dv.setUint8(offset, binary.charCodeAt(idx + offset));
+        }
+        result[i] = dv.getFloat32(0, true);
+    }
+
+    return result;
+}
+
+/**
+ * A data array (for a single frame) sent by the server has the following structure:
+ * 

+ * {
+ *  'd_g': <base64 encoded string>,
+ *  'd_b': <base64 encoded string>,
+ *  ...
+ * }
+ * 
+ * Hence, each field must be decoded individually, + * which is done using {@link module:RSI~b64ToFloatArray}. + * + *

+ * {
+ *  'd_g': <Float32Array>,
+ *  'd_b': <Float32Array>,
+ *  ...
+ * }
+ * 
+ * @param {Object} obj - base64 object as described above + * @return {Object} decoded object, as described above + */ +function decodeArray(obj) { + return Object.keys(obj).reduce(function(acc, key) { + acc[key] = b64ToFloatArray(obj[key]); + return acc; + }, {}); +} + +/** + * Toggles the camera mode between an orthographic and a perspective camera + */ +function toggleCameraMode() { + var aspect = $("#container").width() / $("#container").height(); + if (orthographicMode) { + console.log("Switching to perspective mode"); + camera = new THREE.PerspectiveCamera(FoV, aspect, 0.1, 10000); + controls.object = camera; + } + else { + console.log("Switching to orthographic mode"); + camera = new THREE.OrthographicCamera( + -500 * aspect, 500 * aspect, + 500, -500, + -10000, 10000 + ); + controls.object = camera; + } + + orthographicMode = !orthographicMode; +} + +/** + * Switches to so-called 'single mode', which, instead of displaying one quantity + * for multiple simulations side by side, displays all quantities for a + * single simulation side by side. + * In order to enter single mode, following steps will occur in this function: + *
    + *
  1. Enable single mode in the {@link SimulationManager} instance
  2. + *
  3. Remove the 'normal' plane group from the scene
  4. + *
  5. Add the single plane group to the scene
  6. + *
  7. Adapt the top navigation bar, i.e. add a return button and remove quantity selector
  8. + *
  9. Replot
  10. + *
+ * + * @param {number} simulationIndex - the index of the simulation to display in single mode + */ +function enterSingleMode(simulationIndex) { + console.assert(simulationIndex >= 0); + console.assert(simulationIndex < simulationManager.getSimulations().length); + + simulationManager.enableSingleMode(simulationIndex); + scene.remove(simulationManager.getGroup()); + scene.add(simulationManager.getSingleGroup()); + $("#exitSingleMode").show(); + $("#quantityDropdownWrapper").hide(); + $("#simulationListButton").hide(); + + plotTransferFunction(frame); + plotStatic(); +} + +/** + * The opposite of {@link module:RSI~enterSingleMode}. + * In order to exit single mode, following steps will occur in this function: + *
    + *
  1. Disable single mode in the {@link SimulationManager} instance
  2. + *
  3. Remove the single plane group from the scene
  4. + *
  5. Add the 'normal' plane group to the scene
  6. + *
  7. Adapt the top navigation bar back to its original state
  8. + *
  9. Replot
  10. + *
+ */ +function exitSingleMode() { + simulationManager.disableSingleMode(); + scene.remove(simulationManager.getSingleGroup()); + scene.add(simulationManager.getGroup()); + $("#exitSingleMode").hide(); + $("#quantityDropdownWrapper").show(); + $("#simulationListButton").show(); + + plotStatic(); + loadFrame(frame, true); +} + +/** + * Once data is received, this method is called. + * This function is responsible for decoding the received data using + * {@link module:RSI~b64ToFloatArray} and store the result using the + * {@link SimulationManager} instance. + * + * @param {Object} data - A data object as described in {@link module:RSI~b64ToFloatArray} + * @param {bool} initial - true if initial data, false otherwise + */ +function onData(data, initial) { + /** + * If initial data, store it in the simulationManager (instead of simulationManager.getTarget() + * as below in the else branch) and create new Simulation instance using simulationManager + */ + if (initial) { + var realArray = b64ToFloatArray(data.real); + var transferArray = b64ToFloatArray(data.transfer); + var fourierArray = new Float32Array(data.fourier); + + simulationManager.realInit = realArray; + simulationManager.transferInit = transferArray; + simulationManager.fourierInit = fourierArray; + + simulationManager.createSimulation(); + } else { + simulationManager.getTarget().addFrame( + decodeArray(data.real), + decodeArray(data.transfer), + decodeArray(data.fourier) + ); + } +} + + +/** + * Render an image of the specified simulation at a resolution specified by size. + * + * @param {number} simulationIndex - the index (with respect to the simulations array stored + * in the {@link SimulationManager} instance) of the simulation of which to render an image + * @param {number} size - side length in pixels of the image to render + * + * @return {Object} Canvas DOM element + */ +function renderImage(simulationIndex, size) { + var simulation = simulationManager.getSimulations()[simulationIndex]; + console.assert(simulation); + console.assert(simulation.mesh); + + var size = simulationManager.PLANE_SIZE / 2; + orthoCam = new THREE.OrthographicCamera(-size, size, size, -size, 0, 1000); + orthoCam.position.copy(simulation.mesh.position); + orthoCam.position.y = 500; // Lift camera above mesh + orthoCam.lookAt(simulation.mesh.position); + + imgRenderer.setSize(size, size); + imgRenderer.render(scene, orthoCam); + + // var image = new Image(); + // image.src = imgRenderer.domElement.toDataURL(); + + return imgRenderer.domElement; +} + +/** + * @callback gifProgressCallback + * @param {number} frame - number of currently rendered frame + * @param {number} frameCount - total number of all frames (rendered + not yet rendered) + */ + +/** + * @callback gifFinishCallback + * @param {blob} blob - blob of .gif + */ + +/** + * Renders a .gif of the specified simulation. + * + * @param {number} simulationIndex - the index (with respect to the simulations array stored + * in the {@link SimulationManager} instance) of the simulation of which to render the .gif + * @param {number} size - side length in pixels of the .gif to render + * @param {number} fps - frames per second + * @param {number} quality - quality of resulting .gif, corresponds to pixel sampling interval. + * Lower values are better, but also produce bigger files. + * @param {module:RSI~gifProgressCallback} progressCallback - progress callback + * @param {module:RSI~gifFinishCallback} finishCallback - finish callback + */ +function renderGIF(simulationIndex, size, fps, quality, progressCallback, finishCallback) { + var gif = new GIF({ + workers: 2, + quality: quality, + workerScript: "/static/js/gif.worker.js", + }); + + var previousFrame = frame; + + var frameCount = getLastFrame() + 1; + var delay = 1000.0 / fps; + + for (var i = 0; i < frameCount; ++i) { + loadFrame(i); + gif.addFrame(renderImage(simulationIndex, size), { + copy: true, + delay: delay + }); + if (progressCallback) { + progressCallback(i, frameCount); + } + } + progressCallback(frameCount, frameCount); + + if (finishCallback) { + gif.on('finished', finishCallback); + } + + gif.render(); + + loadFrame(previousFrame); +} + + +/** + * Gets called on close / loss of connection and displays a corresponding message to the user. + */ +function onClose() { + closed = true; + alert("Connection to server lost; Reload page to start a new session."); +} + +/** + * Initializes the quantity dropdown by assigning an event handler, which + * updates the currently active quantity and reloads the current frame in order + * for the change to take effect. + */ +function initQuantityDropdown() { + var dropDown = $("#quantity-dropdown"); + dropDown.children().click(function(e) { + dropDown.find(".active").removeClass("active"); + $(this).addClass("active"); + $("#quantity-dropdown-btn").html($(this).html()); + activeQuantity = $(this).attr("data-quantity"); + loadFrame(frame, true); + + e.preventDefault(); + }); +} + +/** + * Initializes the dropup color map selector by assigning an event listener + * which loads the appropriate texture using {@link SimulationManager#setColorMap}. + */ +function initColorMapDropdown() { + var menu = $("#colormap-selector-menu"); + menu.find(".colormap-selector-item").click(function(e) { + menu.find(".colormap-selector-item.active").removeClass("active"); + $(this).addClass("active"); + $("#colormap-selector-button") .css({ + "background": "url(" + $(this).find("img").attr("src") + ")", + "background-size": "contain" + }); + + var texture = new THREE.Texture($(this).find("img").get(0)); + texture.needsUpdate = true; + simulationManager.setColorMap(texture); + + e.preventDefault(); + }); + + menu.find(":contains(default)").click(); +} + +/** + * Initializes the checkbox which toggles between stopping the playback + * at decoupling and today. + */ +function initRedshiftEndToggle() { + $("#redshift-end-toggle").change(function(e) { + stopAtDecoupling = !$(this).get(0).checked; + console.log("Stop at decoupling? " + stopAtDecoupling); + var lastFrame = getLastFrame(); + if (frame > lastFrame) { + loadFrame(lastFrame); + } + updateTimeline(lastFrame); + }); +} + +/** + * Initializes the .gif creation dialog + */ +function initGifDialog() { + log("Initializing .gif dialog"); + var modal = $("#gifExportModal"); + modal.on("show.bs.modal", function() { + $(this).find("#gifExportProgressContainer").hide(); + $(this).find("#gifExportResultContainer").hide(); + }); + $("#gifExportCreateBtn").click(function() { + onCreateGif(modal.data("simulationIndex")); + }); +} + +/** + * Initializes the image creation dialog + */ +function initImgDialog() { + var modal = $("#imgExportModal"); + modal.on("show.bs.modal", function() { + $(this).find("#imgExportResultContainer").hide(); + }); + $("#imgExportCreateBtn").click(function() { + $("#imgExportResultContainer").show(); + + // Hide grids if necessary + var gridShown = parameterGui.config.showGrid; + parameterGui.config.showGrid = $("#imgExportGrid").is(":checked"); + simulationManager.updateGrids(); + + var canvas = renderImage(modal.data("simulationIndex"), $("#imgExportSize").val()); + $("#imgExportResultImage").attr("src", canvas.toDataURL()); + + // Re-show grids if necessary + parameterGui.config.showGrid = gridShown; + simulationManager.updateGrids(); + }); +} + +/** + * Callback function which is called from the {@link SimulationList} instance once + * the user presses the 'Create .gif' button there. + * + * @param {number} simulationIndex - index of simulation to render as .gif + */ +function onCreateGif(simulationIndex) { + log("Creating gif for simulation #" + simulationIndex); + var size = $("#gifExportSize").val(); + var fps = $("#gifExportFPS").val(); + parameterGui.config.showGrid = $("#gifExportGrid").is(":checked"); + simulationManager.updateGrids(); + + var quality = $("#gifExportQuality").val(); + + $("#gifExportProgressContainer").show(); + $("#gifExportResultContainer").hide(); + + renderGIF(simulationIndex, size, fps, quality, gifProgressCallback, gifFinishCallback); +} + +/** + * Implements {@link module:RSI~gifProgressCallback} and is called after every frame + * rendered to the .gif. + * Uses this data to update the progress bar in the .gif creation dialog. + * + * @param {number} frame - number of currently rendered frame + * @param {number} frameCount - total number of all frames (rendered + not yet rendered) + */ +function gifProgressCallback(frame, frameCount) { + var progressPercent = Math.floor(frame / frameCount * 100) + "%"; + $("#gifExportProgressBar").css({width: progressPercent}); + if (frame == frameCount) { + $("#gifExportProgressBar").html("Finalizing .gif…"); + } else { + $("#gifExportProgressBar").text("Rendering Frame " + frame + "/" + frameCount); + } + +} + +/** + * Implements {@link module:RSI~gifFinishCallback} and is called once the .gif has been rendered. + * Proceeds to reset the progress bar in the .gif creation dialog and displays the resulting + * .gif. + * + * @param {blob} blob - data blob of .gif + */ +function gifFinishCallback(blob) { + $("#gifExportProgressBar") .css({width: 0}) + $("#gifExportProgressContainer").hide(); + $("#gifExportResultContainer").show(); + $("#gifExportResultImage").attr("src", URL.createObjectURL(blob)); + $("#gifExportResultMessage").alert(); +} + +/** + * Toggles the visibility of the plot panel. + */ +function togglePlotWindow() { + plotWindowVisible = !plotWindowVisible; + $("#plotWindowWrapper").toggleClass("plotWindowWrapperVisible").toggleClass("plotWindowWrapperHidden"); + $("#plotWindowWrapper").find("div").toggleClass("plotWindowVisible").toggleClass("plotWindowHidden"); + $("#plotWindowToggleIcon").toggleClass("oi-caret-top").toggleClass("oi-caret-bottom"); + + if (plotWindowVisible) { + if (simulationManager.getActive().length == 0) { + initClPlot(); + initTransferPlot(); + } else { + plotStatic(); + plotTransferFunction(frame, true); + } + } +} + +/** + * Initializes the button used to collapse the plot panel. + */ +function initPlotCollapseButton() { + $("#plotWindowToggle").click(function(e) { + togglePlotWindow(); + }); +} + + +/* SECTION: PLOT INITIALIZATION */ + +/** + * Initialize transfer function plot. + */ +function initTransferPlot() { + var initialOptions = Object.assign({}, transferPlotOptions); + initialOptions.xaxis.min = 1e-4; + initialOptions.xaxis.max = 10; + transferFunctionPlot = $.plot($("#transferFunctionPlot"), [{shadowSize: 0, color: colors[0], data: []}], initialOptions); +} + +/** + * Initialize Cl's plot. + */ +function initClPlot() { + var initialOptions = Object.assign({}, tClPlotOptions); + initialOptions.xaxis.min = 2; + initialOptions.xaxis.max = 2500; + $.plot($("#tClPlot"), [{shadowSize: 0, color: colors[0], data: []}], initialOptions); +} + +/** + * Initialize matter spectrum plot. + */ +function initmPkPlot() { + var initialOptions = Object.assign({}, mPkPlotOptions); + initialOptions.xaxis.min = 1e-3; + initialOptions.xaxis.max = 10; + $.plot($("#mPkPlot"), [{shadowSize: 0, data: []}], initialOptions); +} +/* END OF PLOT INITIALIZATION */ + +/** + * Callback to be called once cosmological parameters have been set + * @callback cosmologicalParametersSetCallback + * @param {module:paramGui~CosmoParams} cosmoParamsInstance + * @param {Object} serializedMessage - message to be sent to the server +*/ + +/** + * Callback to be called once initial condition has been set + * @callback initialConditionSetCallback + * @param {module:paramGui~ParamSet} paramSet +*/ + +/** + * Called once user presses button to generate initial state. + * Obtains the JSON representation and sends it to the server. + * Since it isn't particularly enlightening to compare simulations (resulting from different + * cosmological parameters) for different initial state seeds, this also cleans up + * any existing simulations. + * + * @param {module:paramGui~ParamSet} paramSet - initial condition parameter set + */ +function onInitialConditionSet(paramSet) { + if (!calculationRunning) { + if (simulationManager.singleMode) { + exitSingleMode(); + } + log("Sending initial parameters to server."); + var serializedParamSet = paramSet.serializeInitial(); + var paramString = JSON.stringify(serializedParamSet); + log(paramString); + calculationRunning = true; + showActivityIndicator(); + connection.send(paramString); + + simulationManager.deleteAll(); + simuTable.clear(); + + var realScale = serializedParamSet.params.xScale / simulationManager.GRID_DIVISIONS; + $("#displayRealScale").text(round(realScale, 1) + " Mpc"); + + receivedInitial = false; + } +} + +/** + * Called once the user presses the button which sets the cosmological parameters. + *
+ * Implements {@link module:RSI~cosmologicalParametersSetCallback}. + *
+ * If an initial condition has been set, the following steps will occur: + * First, this function checks using {@link SimulationManager~wasAlreadySimulated} + * whether a simulation set for that particular set of cosmological parameters has already + * been computed. + * If so, a message indicating that will be displayed. + * If not, the parameters (which have already been encoded in the appropriate structure + * by {@link module:paramGui~CosmoParams}) will be sent to the server and the progress + * modal will be displayed. + * Also, a new simulation will be created and a copy of the parameters will be stored + * in it. + * + * @param {module:paramGui~CosmoParams} cosmoParamsInstance + * @param {Object} serializedMessage - message to be sent to the server + */ +function onCosmologicalParamsSet(cosmoParamsInstance, serializedMessage) { + if (!initialSet) { + alert("Initial condition has to be set!"); + return; + } + if (!calculationRunning) { + log("Sending cosmological parameters to server."); + + var alreadySimulated = simulationManager.wasAlreadySimulated(cosmoParamsInstance.parameters); + log("Already simulated? " + alreadySimulated); + if (!alreadySimulated) { + calculationRunning = true; + showActivityIndicator(); + connection.send(JSON.stringify(serializedMessage)); + + $("#simulationProgressModal").modal("show"); + $("#simulationProgressInfo").text("Running calculation... (this may take some time depending on the choice of parameters!)"); + $("#simulationProgressBar").css({width: "0%"}); + $("#simulationProgressBar").text("0%"); + + if (!simulationManager.hasTarget()) { + simulationManager.createSimulation(); + } + /** + * At this point, it is absolutely necessary to create a copy of the + * parameters. If not, any change by the user in the parameters in the + * control panel will be reflected by the parameters stored in the simulation + * object, since both references refer to the same object. + * This results in simulationManager.wasAlreadySimulated always returning + * true and hence preventing any further simulation runs. + */ + var simParams = Object.assign({}, cosmoParamsInstance.parameters); + simulationManager.getTarget().setParameters(simParams); + } else { + $("#alreadySimulatedModal").modal("show"); + } + } +} + +/** + * Loads the given frame. + * + * @param {number} f - frame to load + * @param {bool} replot - if true, fully replot (which includes recalculating + * data limits, axis labels, etc.). otherwise, just swap + * out the data (faster, but this effect decreases with data + * size, since then most of the CPU time will be spent on plotting + * the curve anyways) + */ +function loadFrame(f, replot) { + frame = f; + simulationManager.loadFrame(activeQuantity, f); + + plotTransferFunctionIfVisible(f, replot); + + if (f > 0) + $("#DisplayRedshift").text(round(redshift[f], REDSHIFT_ROUND)); + else if (f == 0) + $("#DisplayRedshift").text(redshift[0]); + + var frameCount = simulationManager.getFrameCount(); + // var percentage = (frameCount > 1) ? frame / (frameCount - 1) : frame / frameCount; + updateTimeline(getLastFrame()); +} + +/** + * Plots the transfer function for the given frame if and only if the plot window + * is visible. + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunctionIfVisible(f, replot) { + if (plotWindowVisible) { + plotTransferFunction(f, replot); + } +} + +/** + * Finds the minimum and maximum of all transfer functions + * over all frames. + * + * @return {number[]} tuple containing minimum and maximum, in that order + */ +function findTransferFunctionMinMax() { + var min = Infinity, max = -Infinity; + var frameCount = simulationManager.getFrameCount(); + for (var _f = 0; _f < frameCount; ++_f) { + var transferFunctions = simulationManager.getTransferData(activeQuantity, _f); + for (var i = 0; i < transferFunctions.length; ++i) { + var transferFunction = transferFunctions[i]; + var _min = Math.min.apply(null, transferFunction); + var _max = Math.max.apply(null, transferFunction); + + min = Math.min(min, _min); + max = Math.max(max, _max); + } + } + + return [min, max]; +} + +/** + * Plot transfer function in non-single mode, i.e. one quantity but for + * multiple simulations. + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunctionMulti(f, replot) { + // Transfer function + var tData = simulationManager.getTransferData(activeQuantity, f); + var activeIndices = simulationManager.getActive(); + var datas = []; + for (var i = 0; i < activeIndices.length; ++i) { + var color = colors[activeIndices[i] % colors.length]; + var data = zip(kRange, tData[i]); + datas.push({ + shadowSize: 0, + color: color, + data: data, + }); + } + + transferFunctionPlot = $.plot($("#transferFunctionPlot"), datas, transferPlotOptions); +} + +/** + * Plot transfer function in single mode. + * + * @param {number} f - frame number + */ +function plotTransferFunctionSingle(f) { + var replot = true; + var datas = []; + // Transfer function + for (var i = 0; i < QUANTITIES.length; ++i) { + var tData = simulationManager.getTransferDataOfSingle(QUANTITIES[i], f); + var color = colors[i % colors.length]; + var data = zip(kRange, tData); + datas.push({ + shadowSize: 0, + color: color, + data: data, + }); + } + + transferFunctionPlot = $.plot($("#transferFunctionPlot"), datas, transferPlotOptions); + return; + + if (replot) { + } + else { + transferFunctionPlot.setData(datas); + transferFunctionPlot.draw(); + } +} + +/** + * Plot the transfer function, automatically in the correct mode (single vs. non-single). + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunction(f, replot) { + if (simulationManager.singleMode) { + plotTransferFunctionSingle(f); + } else { + plotTransferFunctionMulti(f, replot); + } +} + +/******************************************************************************* +* Cl plotting +*******************************************************************************/ + +/** + * Plot Cl spectrum in non-single mode. + */ +function plotClsMulti() { + var plotDatas = []; + + simulationManager.forEachActive(function(index, simulation) { + var dataItem = { + shadowSize: 0, + color: colors[index % colors.length], + data: zip(simulation.Cls.l, simulation.Cls.tCl), + } + plotDatas.push(dataItem); + }); + + $.plot($("#tClPlot"), plotDatas, tClPlotOptions); +} + +/** + * Plot Cl spectrum in single mode. + */ +function plotClsSingle() { + var tuple = simulationManager.getSingleSimulation(); + var singleIndex = tuple[0]; + var singleSimulation = tuple[1]; + + var plotData = { + shadowSize: 0, + color: colors[singleIndex % colors.length], + data: zip(singleSimulation.Cls.l, singleSimulation.Cls.tCl) + }; + $.plot($("#tClPlot"), [plotData], tClPlotOptions); +} + +/******************************************************************************* +* mPk plotting +*******************************************************************************/ + +/** + * Plot matter spectrum in non-single mode. + */ +function plotmPkMulti() { + var plotDatas = []; + + simulationManager.forEachActive(function(index, simulation) { + var dataItem = { + shadowSize: 0, + color: colors[index % colors.length], + data: zip(simulation.mPk.kh, simulation.mPk.Pkh), + } + plotDatas.push(dataItem); + }); + + $.plot($("#mPkPlot"), plotDatas, mPkPlotOptions); +} + +/** + * Plot matter spectrum in single mode. + */ +function plotmPkSingle() { + var tuple = simulationManager.getSingleSimulation(); + var singleIndex = tuple[0]; + var singleSimulation = tuple[1]; + + var plotData = { + shadowSize: 0, + color: colors[singleIndex % colors.length], + data: zip(singleSimulation.mPk.kh, singleSimulation.mPk.Pkh) + }; + $.plot($("#mPkPlot"), [plotData], mPkPlotOptions); +} + +/******************************************************************************* +* Static plotting (i.e. Cl's and mPk) +*******************************************************************************/ + +/** + * Plot the static plots (Cl's and matter spectrum) in the appropriate mode + */ +function plotStatic() { + if (simulationManager.singleMode) { + plotStaticSingle(); + } else { + plotStaticMulti(); + } +} + +/** + * Plot the static plots (Cl's and matter spectrum) only if the plot panel + * is visible. + */ +function plotStaticIfVisible() { + if (plotWindowVisible) + plotStatic(); +} + +/** + * Plot Cl's and matter spectrum in non-single mode. + */ +function plotStaticMulti() { + plotClsMulti(); + plotmPkMulti(); +} + +/** + * Plot Cl's and matter spectrum in single mode. + */ +function plotStaticSingle() { + plotClsSingle(); + plotmPkSingle(); +} + + +/** + * Analogon of the zip function in python. Takes two arrays [a1, a2, a3, ...] and + * [b1, b2, b3, ...] and returns [[a1, b1], [a2, b2], [a3, b3], ...]. + * Required for plotting, as flot.js requires its data to be specified in a 'zipped' + * format. + * + * @param {Object[]} a - first array + * @param {Object[]} b - second array + * + * @return {Array.>}} the zipped array + */ +function zip(a, b) { + var result = []; + var limit = Math.min(a.length, b.length); + for (var i = 0; i < limit; ++i) { + result.push([a[i], b[i]]); + } + return result; +} + +/* + * Player Panel Callbacks + */ + +/** + * Implements {@link PlayerPanel~playPauseCallback}. + */ +function onPlayPause(playing) { + animationRunning = playing; + if (playing) { + if (frame == getLastFrame()) { + frame = 0; + } + } else { + } +} + +/** + * Implements {@link PlayerPanel~scrubCallback}. + */ +function scrubCallback(progress) { + var f = Math.floor((getLastFrame() + 1) * progress); + f = Math.min(getLastFrame(), f); + loadFrame(f); +} + +/** + * Implements {@link PlayerPanel~backFrameCallback}. + */ +function onBackFrame() { + if (frame > 0 && receivedInitial) { + loadFrame(frame - 1); + } +} + +/** + * Implements {@link PlayerPanel~forwardFrameCallback}. + */ +function onForwardFrame() { + if (frame < getLastFrame()) + loadFrame(frame + 1); +} + +/** + * Implements {@link PlayerPanel~toStartCallback}. + */ +function onToStart() { + frame = 0; + loadFrame(frame); +} + +/** + * Implements {@link PlayerPanel~toEndCallback}. + */ +function onToEnd() { + if (receivedInitial) { + loadFrame(getLastFrame()); + } +} + +/** + * Returns the number of the last frame to be displayed. + * If {@link module:RSI~stopAtDecoupling} is true, return the last frame before + * decoupling, otherwise the actual last frame stored. + * + * @return {number} number of last frame + */ +function getLastFrame() { + var frameCount = simulationManager.getFrameCount(); + return lastFrame = (stopAtDecoupling) ? Math.min(decouplingFrame, frameCount - 1) : frameCount - 1; +} + + +/** + * Initializes all components. + */ +function init() { + hideActivityIndicator(); + + window.addEventListener("mousemove", onMouseMove, false); + + parameterGui = new ParameterGui(onInitialConditionSet, onCosmologicalParamsSet); + + simulationManager = new SimulationManager(cmapTexture); + playerPanel = new PlayerPanel( + onPlayPause, + onBackFrame, + onForwardFrame, + onToStart, + onToEnd, + function(e) {}, + scrubCallback + ); + + initQuantityDropdown(); + initColorMapDropdown(); + initGifDialog(); + initImgDialog(); + + initTransferPlot(); + initClPlot(); + initmPkPlot(); + + initPlotCollapseButton(); + + initRedshiftEndToggle(); + + /////////// + // Scene // + /////////// + + container = document.getElementById("container"); + + scene = new THREE.Scene(); + scene.add(simulationManager.getGroup()); + scene.add(simulationManager.getActiveBoxes()); + // scene.add(simulationManager.getCollisionGroup()); + scene.background = new THREE.Color("#4a4a4a"); + + var width = window.innerWidth; + var height = window.innerHeight; + var aspect = width / height; // view aspect ratio + + //////////// + // Camera // + //////////// + + camera = new THREE.PerspectiveCamera(FoV, aspect, 0.1, 10000); + + camera.position.y = 300; + camera.position.z = 500; + camera.position.x = -50; + camera.lookAt(scene.position); + + + ////////////// + // Renderer // + ////////////// + renderer = new THREE.WebGLRenderer({antialias: true}); + renderer.setClearColor(0x53504d); + renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setPixelRatio(window.devicePixelRatio); + renderer.autoClear = false; + + container.innerHTML = ""; + container.appendChild(renderer.domElement); + + ////////////// + // Controls // + ////////////// + controls = new THREE.OrbitControls(camera, renderer.domElement); + + controls.rotateSpeed = 1.0; + controls.zoomSpeed = 3; + controls.panSpeed = 0.8; + + controls.noZoom = false; + controls.noPan = false; + + controls.maxPolarAngle = Math.PI/2; + controls.minDistance = 100; + controls.maxDistance = 10000; + + controls.staticMoving = true; + controls.dynamicDampingFactor = 0.3; + + controls.keys = [65, 83, 68]; + + controls.addEventListener('change', render); + + /****************************************************************** + * SIMULATION TABLE + ******************************************************************/ + + var deleteCallback = function(index) { + simulationManager.delete(index); + simuTable.clear(); + simuTable.populate(simulationManager.getSimulations(), simulationManager.getActive()); + plotStaticIfVisible(); + loadFrame(frame, true); + }; + + var activateCallback = function(index) { + simulationManager.activate(index); + loadFrame(frame, true); + plotStaticIfVisible(); + }; + + var deactivateCallback = function(index) { + simulationManager.deactivate(index); + loadFrame(frame, true); + plotStaticIfVisible(); + }; + + var imageCallback = function(index) { + if (simulationManager.isActive(index)) { + $("#simulationListModal").modal("hide"); + $("#imgExportModal").data("simulationIndex", index).modal("show"); + } + else { + alert("To create an image, the selected simulation needs to be active."); + } + }; + + var gifCallback = function(index) { + if (simulationManager.isActive(index)) { + $("#simulationListModal").modal("hide"); + $("#gifExportModal").data("simulationIndex", index).modal("show"); + } else { + alert("To create a .gif, the selected simulation needs to be active."); + } + // renderGIF(index); + }; + + var singleModeCallback = function(index) { + $("#simulationListModal").modal("hide"); + enterSingleMode(index); + }; + + var focusCameraCallback = function(index) { + if (simulationManager.isActive(index)) { + controls.center.copy(simulationManager.getSimulations()[index].mesh.position); + controls.rotateUp(controls.getPolarAngle()); + controls.rotateLeft(controls.getAzimuthalAngle()); + $("#simulationListModal").modal("hide"); + } else { + alert("To focus the camera on the selected simulation, it needs to be active."); + } + }; + + var loadParamCallback = function(index) { + var parameters = simulationManager.getSimulations()[index].params; + parameterGui.loadCosmoParameters(parameters); + }; + + simuTable = new SimuTable(deleteCallback, activateCallback, deactivateCallback, + gifCallback, imageCallback, singleModeCallback, focusCameraCallback, + loadParamCallback); + + simuTable.createHeader(); + /****************************************************************** + * END OF SIMULATION TABLE + ******************************************************************/ + + // stats = new Stats(); + // stats.domElement.style.position = 'absolute'; + // stats.domElement.style.bottom = '0px'; + // stats.domElement.style.zIndex = 100; + // container.appendChild(stats.domElement); + + window.addEventListener('resize', onWindowResize, false); +} + +/** + * Shows the activity indicator. + */ +function showActivityIndicator() { + $("#activityIndicator").removeClass("activityIndicator-inactive").addClass("activityIndicator-active"); +} + +/** + * Hides the activity indicator. + */ +function hideActivityIndicator() { + $("#activityIndicator").addClass("activityIndicator-inactive").removeClass("activityIndicator-active"); +} + +/** + * Called when the window is resized to update the renderer (which requires + * the window size to render) and the camera (which requires the aspect ratio + * of the window to construct its projection matrix). + */ +function onWindowResize() { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + + renderer.setSize(window.innerWidth, window.innerHeight); + + // Re-read the width of the time line once window refreshes + playerPanel.timeline.refresh(); +} + +/** + * This function is called every time an update (such as an advance in frame, etc.) + * is needed. + * It handles the logic required to play back the animation, such as advancing, + * repeating (if repeat is enabled), pausing and continuing the playback, etc. + * The rate at which this function is called is determined by the FPS. + */ +function step() { + var totalFrames = simulationManager.getFrameCount(); + var lastFrame = getLastFrame(); + if(animationRunning) { + if(frame < lastFrame) { + loadFrame(++frame); + } + else if (frame == lastFrame) { + if (playerPanel.repeat) { + frame = 1; + loadFrame(frame); + } else + playerPanel.pause(); + } + } + setTimeout(step, 1000 / parameterGui.config.animationSpeed); +} + +/** + * Positions the 'scrubber' of the playback timeline at {@link module:RSI~frame} + * given the last frame position. + * + * @param {number} lastFrame - index of last frame + */ +function updateTimeline(lastFrame) { + playerPanel.timeline.scrubTo(frame / lastFrame); +} + + +/** + * Function that is called on every frame of the main loop. + */ +function animate() { + requestAnimationFrame(animate); + controls.update(); + + render(); +} + +/** + * Rendering function, called on every frame of the main loop via + * {@link module:RSI~animate}. + * On each frame, this renders the scene and updates the raycaster. + * Then determines over which plane (if at all) the mouse hovers + * and instructs the {@link SimulationManager} instance to highlight it. + */ +function render() { + raycaster.setFromCamera(mouse, camera); + simulationManager.mousePick(raycaster); + + // renderer.clear(); + renderer.render(scene, camera); + // renderer.clearDepth(); + // stats.update(); +} diff --git a/class/RealSpaceInterface/static/js/gif.js b/class/RealSpaceInterface/static/js/gif.js new file mode 100644 index 00000000..2e4d2042 --- /dev/null +++ b/class/RealSpaceInterface/static/js/gif.js @@ -0,0 +1,3 @@ +// gif.js 0.2.0 - https://github.com/jnordberg/gif.js +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.GIF=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],2:[function(require,module,exports){var UA,browser,mode,platform,ua;ua=navigator.userAgent.toLowerCase();platform=navigator.platform.toLowerCase();UA=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0];mode=UA[1]==="ie"&&document.documentMode;browser={name:UA[1]==="version"?UA[3]:UA[1],version:mode||parseFloat(UA[1]==="opera"&&UA[4]?UA[4]:UA[2]),platform:{name:ua.match(/ip(?:ad|od|hone)/)?"ios":(ua.match(/(?:webos|android)/)||platform.match(/mac|win|linux/)||["other"])[0]}};browser[browser.name]=true;browser[browser.name+parseInt(browser.version,10)]=true;browser.platform[browser.platform.name]=true;module.exports=browser},{}],3:[function(require,module,exports){var EventEmitter,GIF,browser,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;iref;i=0<=ref?++j:--j){results.push(null)}return results}.call(this);numWorkers=this.spawnWorkers();if(this.options.globalPalette===true){this.renderNextFrame()}else{for(i=j=0,ref=numWorkers;0<=ref?jref;i=0<=ref?++j:--j){this.renderNextFrame()}}this.emit("start");return this.emit("progress",0)};GIF.prototype.abort=function(){var worker;while(true){worker=this.activeWorkers.shift();if(worker==null){break}this.log("killing active worker");worker.terminate()}this.running=false;return this.emit("abort")};GIF.prototype.spawnWorkers=function(){var j,numWorkers,ref,results;numWorkers=Math.min(this.options.workers,this.frames.length);(function(){results=[];for(var j=ref=this.freeWorkers.length;ref<=numWorkers?jnumWorkers;ref<=numWorkers?j++:j--){results.push(j)}return results}).apply(this).forEach(function(_this){return function(i){var worker;_this.log("spawning worker "+i);worker=new Worker(_this.options.workerScript);worker.onmessage=function(event){_this.activeWorkers.splice(_this.activeWorkers.indexOf(worker),1);_this.freeWorkers.push(worker);return _this.frameFinished(event.data)};return _this.freeWorkers.push(worker)}}(this));return numWorkers};GIF.prototype.frameFinished=function(frame){var i,j,ref;this.log("frame "+frame.index+" finished - "+this.activeWorkers.length+" active");this.finishedFrames++;this.emit("progress",this.finishedFrames/this.frames.length);this.imageParts[frame.index]=frame;if(this.options.globalPalette===true){this.options.globalPalette=frame.globalPalette;this.log("global palette analyzed");if(this.frames.length>2){for(i=j=1,ref=this.freeWorkers.length;1<=ref?jref;i=1<=ref?++j:--j){this.renderNextFrame()}}}if(indexOf.call(this.imageParts,null)>=0){return this.renderNextFrame()}else{return this.finishRendering()}};GIF.prototype.finishRendering=function(){var data,frame,i,image,j,k,l,len,len1,len2,len3,offset,page,ref,ref1,ref2;len=0;ref=this.imageParts;for(j=0,len1=ref.length;j=this.frames.length){return}frame=this.frames[this.nextFrame++];worker=this.freeWorkers.shift();task=this.getTask(frame);this.log("starting frame "+(task.index+1)+" of "+this.frames.length);this.activeWorkers.push(worker);return worker.postMessage(task)};GIF.prototype.getContextData=function(ctx){return ctx.getImageData(0,0,this.options.width,this.options.height).data};GIF.prototype.getImageData=function(image){var ctx;if(this._canvas==null){this._canvas=document.createElement("canvas");this._canvas.width=this.options.width;this._canvas.height=this.options.height}ctx=this._canvas.getContext("2d");ctx.setFill=this.options.background;ctx.fillRect(0,0,this.options.width,this.options.height);ctx.drawImage(image,0,0);return this.getContextData(ctx)};GIF.prototype.getTask=function(frame){var index,task;index=this.frames.indexOf(frame);task={index:index,last:index===this.frames.length-1,delay:frame.delay,transparent:frame.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,dither:this.options.dither,globalPalette:this.options.globalPalette,repeat:this.options.repeat,canTransfer:browser.name==="chrome"};if(frame.data!=null){task.data=frame.data}else if(frame.context!=null){task.data=this.getContextData(frame.context)}else if(frame.image!=null){task.data=this.getImageData(frame.image)}else{throw new Error("Invalid frame")}return task};GIF.prototype.log=function(){var args;args=1<=arguments.length?slice.call(arguments,0):[];if(!this.options.debug){return}return console.log.apply(console,args)};return GIF}(EventEmitter);module.exports=GIF},{"./browser.coffee":2,events:1}]},{},[3])(3)}); +//# sourceMappingURL=gif.js.map diff --git a/class/RealSpaceInterface/static/js/gif.worker.js b/class/RealSpaceInterface/static/js/gif.worker.js new file mode 100644 index 00000000..269624e6 --- /dev/null +++ b/class/RealSpaceInterface/static/js/gif.worker.js @@ -0,0 +1,3 @@ +// gif.worker.js 0.2.0 - https://github.com/jnordberg/gif.js +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=ByteArray.pageSize)this.newPage();this.pages[this.page][this.cursor++]=val};ByteArray.prototype.writeUTFBytes=function(string){for(var l=string.length,i=0;i=0)this.dispose=disposalCode};GIFEncoder.prototype.setRepeat=function(repeat){this.repeat=repeat};GIFEncoder.prototype.setTransparent=function(color){this.transparent=color};GIFEncoder.prototype.addFrame=function(imageData){this.image=imageData;this.colorTab=this.globalPalette&&this.globalPalette.slice?this.globalPalette:null;this.getImagePixels();this.analyzePixels();if(this.globalPalette===true)this.globalPalette=this.colorTab;if(this.firstFrame){this.writeLSD();this.writePalette();if(this.repeat>=0){this.writeNetscapeExt()}}this.writeGraphicCtrlExt();this.writeImageDesc();if(!this.firstFrame&&!this.globalPalette)this.writePalette();this.writePixels();this.firstFrame=false};GIFEncoder.prototype.finish=function(){this.out.writeByte(59)};GIFEncoder.prototype.setQuality=function(quality){if(quality<1)quality=1;this.sample=quality};GIFEncoder.prototype.setDither=function(dither){if(dither===true)dither="FloydSteinberg";this.dither=dither};GIFEncoder.prototype.setGlobalPalette=function(palette){this.globalPalette=palette};GIFEncoder.prototype.getGlobalPalette=function(){return this.globalPalette&&this.globalPalette.slice&&this.globalPalette.slice(0)||this.globalPalette};GIFEncoder.prototype.writeHeader=function(){this.out.writeUTFBytes("GIF89a")};GIFEncoder.prototype.analyzePixels=function(){if(!this.colorTab){this.neuQuant=new NeuQuant(this.pixels,this.sample);this.neuQuant.buildColormap();this.colorTab=this.neuQuant.getColormap()}if(this.dither){this.ditherPixels(this.dither.replace("-serpentine",""),this.dither.match(/-serpentine/)!==null)}else{this.indexPixels()}this.pixels=null;this.colorDepth=8;this.palSize=7;if(this.transparent!==null){this.transIndex=this.findClosest(this.transparent,true)}};GIFEncoder.prototype.indexPixels=function(imgq){var nPix=this.pixels.length/3;this.indexedPixels=new Uint8Array(nPix);var k=0;for(var j=0;j=0&&x1+x=0&&y1+y>16,(c&65280)>>8,c&255,used)};GIFEncoder.prototype.findClosestRGB=function(r,g,b,used){if(this.colorTab===null)return-1;if(this.neuQuant&&!used){return this.neuQuant.lookupRGB(r,g,b)}var c=b|g<<8|r<<16;var minpos=0;var dmin=256*256*256;var len=this.colorTab.length;for(var i=0,index=0;i=0){disp=dispose&7}disp<<=2;this.out.writeByte(0|disp|0|transp);this.writeShort(this.delay);this.out.writeByte(this.transIndex);this.out.writeByte(0)};GIFEncoder.prototype.writeImageDesc=function(){this.out.writeByte(44);this.writeShort(0);this.writeShort(0);this.writeShort(this.width);this.writeShort(this.height);if(this.firstFrame||this.globalPalette){this.out.writeByte(0)}else{this.out.writeByte(128|0|0|0|this.palSize)}};GIFEncoder.prototype.writeLSD=function(){this.writeShort(this.width);this.writeShort(this.height);this.out.writeByte(128|112|0|this.palSize);this.out.writeByte(0);this.out.writeByte(0)};GIFEncoder.prototype.writeNetscapeExt=function(){this.out.writeByte(33);this.out.writeByte(255);this.out.writeByte(11);this.out.writeUTFBytes("NETSCAPE2.0");this.out.writeByte(3);this.out.writeByte(1);this.writeShort(this.repeat);this.out.writeByte(0)};GIFEncoder.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var n=3*256-this.colorTab.length;for(var i=0;i>8&255)};GIFEncoder.prototype.writePixels=function(){var enc=new LZWEncoder(this.width,this.height,this.indexedPixels,this.colorDepth);enc.encode(this.out)};GIFEncoder.prototype.stream=function(){return this.out};module.exports=GIFEncoder},{"./LZWEncoder.js":2,"./TypedNeuQuant.js":3}],2:[function(require,module,exports){var EOF=-1;var BITS=12;var HSIZE=5003;var masks=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function LZWEncoder(width,height,pixels,colorDepth){var initCodeSize=Math.max(2,colorDepth);var accum=new Uint8Array(256);var htab=new Int32Array(HSIZE);var codetab=new Int32Array(HSIZE);var cur_accum,cur_bits=0;var a_count;var free_ent=0;var maxcode;var clear_flg=false;var g_init_bits,ClearCode,EOFCode;function char_out(c,outs){accum[a_count++]=c;if(a_count>=254)flush_char(outs)}function cl_block(outs){cl_hash(HSIZE);free_ent=ClearCode+2;clear_flg=true;output(ClearCode,outs)}function cl_hash(hsize){for(var i=0;i=0){disp=hsize_reg-i;if(i===0)disp=1;do{if((i-=disp)<0)i+=hsize_reg;if(htab[i]===fcode){ent=codetab[i];continue outer_loop}}while(htab[i]>=0)}output(ent,outs);ent=c;if(free_ent<1<0){outs.writeByte(a_count);outs.writeBytes(accum,0,a_count);a_count=0}}function MAXCODE(n_bits){return(1<0)cur_accum|=code<=8){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}if(free_ent>maxcode||clear_flg){if(clear_flg){maxcode=MAXCODE(n_bits=g_init_bits);clear_flg=false}else{++n_bits;if(n_bits==BITS)maxcode=1<0){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}flush_char(outs)}}this.encode=encode}module.exports=LZWEncoder},{}],3:[function(require,module,exports){var ncycles=100;var netsize=256;var maxnetpos=netsize-1;var netbiasshift=4;var intbiasshift=16;var intbias=1<>betashift;var betagamma=intbias<>3;var radiusbiasshift=6;var radiusbias=1<>3);var i,v;for(i=0;i>=netbiasshift;network[i][1]>>=netbiasshift;network[i][2]>>=netbiasshift;network[i][3]=i}}function altersingle(alpha,i,b,g,r){network[i][0]-=alpha*(network[i][0]-b)/initalpha;network[i][1]-=alpha*(network[i][1]-g)/initalpha;network[i][2]-=alpha*(network[i][2]-r)/initalpha}function alterneigh(radius,i,b,g,r){var lo=Math.abs(i-radius);var hi=Math.min(i+radius,netsize);var j=i+1;var k=i-1;var m=1;var p,a;while(jlo){a=radpower[m++];if(jlo){p=network[k--];p[0]-=a*(p[0]-b)/alpharadbias;p[1]-=a*(p[1]-g)/alpharadbias;p[2]-=a*(p[2]-r)/alpharadbias}}}function contest(b,g,r){var bestd=~(1<<31);var bestbiasd=bestd;var bestpos=-1;var bestbiaspos=bestpos;var i,n,dist,biasdist,betafreq;for(i=0;i>intbiasshift-netbiasshift);if(biasdist>betashift;freq[i]-=betafreq;bias[i]+=betafreq<>1;for(j=previouscol+1;j>1;for(j=previouscol+1;j<256;j++)netindex[j]=maxnetpos}function inxsearch(b,g,r){var a,p,dist;var bestd=1e3;var best=-1;var i=netindex[g];var j=i-1;while(i=0){if(i=bestd)i=netsize;else{i++;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist=0){p=network[j];dist=g-p[1];if(dist>=bestd)j=-1;else{j--;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist>radiusbiasshift;if(rad<=1)rad=0;for(i=0;i=lengthcount)pix-=lengthcount;i++;if(delta===0)delta=1;if(i%delta===0){alpha-=alpha/alphadec;radius-=radius/radiusdec;rad=radius>>radiusbiasshift;if(rad<=1)rad=0;for(j=0;j= this.count) { + throw "GridLayout error: index higher than maximum number of items in layout"; + } + + row = Math.floor(index / this.columns); + column = index % this.columns; + + return [row, column]; +} + +/** + * Get the actual position (in correct units of size) of + * the item defined by index. + */ +GridLayout.prototype.getWorldPosition = function(index) { + var pos = this.getPosition(index); + + var row = pos[0]; + var col = pos[1]; + + var x = 0, y = 0; + var dx = Math.floor(this.columns / 2); + var dy = Math.floor(this.rows / 2); + if (this.columns % 2 == 0) + dx -= 1 / 2; + if (this.rows % 2 == 0) + dy -= 1 / 2; + x = (col - dx) * (this.size + this.margin); + y = (row - dy) * (this.size + this.margin); + + return [x, y]; +} diff --git a/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js b/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js new file mode 100644 index 00000000..c4b3bca9 --- /dev/null +++ b/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js @@ -0,0 +1,466 @@ +/* +Axis Labels Plugin for flot. +http://github.com/markrcote/flot-axislabels + +Original code is Copyright (c) 2010 Xuan Luo. +Original code was released under the GPLv3 license by Xuan Luo, September 2010. +Original code was rereleased under the MIT license by Xuan Luo, April 2012. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +(function ($) { + var options = { + axisLabels: { + show: true + } + }; + + function canvasSupported() { + return !!document.createElement('canvas').getContext; + } + + function canvasTextSupported() { + if (!canvasSupported()) { + return false; + } + var dummy_canvas = document.createElement('canvas'); + var context = dummy_canvas.getContext('2d'); + return typeof context.fillText == 'function'; + } + + function css3TransitionSupported() { + var div = document.createElement('div'); + return typeof div.style.MozTransition != 'undefined' // Gecko + || typeof div.style.OTransition != 'undefined' // Opera + || typeof div.style.webkitTransition != 'undefined' // WebKit + || typeof div.style.transition != 'undefined'; + } + + + function AxisLabel(axisName, position, padding, plot, opts) { + this.axisName = axisName; + this.position = position; + this.padding = padding; + this.plot = plot; + this.opts = opts; + this.width = 0; + this.height = 0; + } + + AxisLabel.prototype.cleanup = function() { + }; + + + CanvasAxisLabel.prototype = new AxisLabel(); + CanvasAxisLabel.prototype.constructor = CanvasAxisLabel; + function CanvasAxisLabel(axisName, position, padding, plot, opts) { + AxisLabel.prototype.constructor.call(this, axisName, position, padding, + plot, opts); + } + + CanvasAxisLabel.prototype.calculateSize = function() { + if (!this.opts.axisLabelFontSizePixels) + this.opts.axisLabelFontSizePixels = 14; + if (!this.opts.axisLabelFontFamily) + this.opts.axisLabelFontFamily = 'sans-serif'; + + var textWidth = this.opts.axisLabelFontSizePixels + this.padding; + var textHeight = this.opts.axisLabelFontSizePixels + this.padding; + if (this.position == 'left' || this.position == 'right') { + this.width = this.opts.axisLabelFontSizePixels + this.padding; + this.height = 0; + } else { + this.width = 0; + this.height = this.opts.axisLabelFontSizePixels + this.padding; + } + }; + + CanvasAxisLabel.prototype.draw = function(box) { + if (!this.opts.axisLabelColour) + this.opts.axisLabelColour = 'black'; + var ctx = this.plot.getCanvas().getContext('2d'); + ctx.save(); + ctx.font = this.opts.axisLabelFontSizePixels + 'px ' + + this.opts.axisLabelFontFamily; + ctx.fillStyle = this.opts.axisLabelColour; + var width = ctx.measureText(this.opts.axisLabel).width; + var height = this.opts.axisLabelFontSizePixels; + var x, y, angle = 0; + if (this.position == 'top') { + x = box.left + box.width/2 - width/2; + y = box.top + height*0.72; + } else if (this.position == 'bottom') { + x = box.left + box.width/2 - width/2; + y = box.top + box.height - height*0.72; + } else if (this.position == 'left') { + x = box.left + height*0.72; + y = box.height/2 + box.top + width/2; + angle = -Math.PI/2; + } else if (this.position == 'right') { + x = box.left + box.width - height*0.72; + y = box.height/2 + box.top - width/2; + angle = Math.PI/2; + } + ctx.translate(x, y); + ctx.rotate(angle); + ctx.fillText(this.opts.axisLabel, 0, 0); + ctx.restore(); + }; + + + HtmlAxisLabel.prototype = new AxisLabel(); + HtmlAxisLabel.prototype.constructor = HtmlAxisLabel; + function HtmlAxisLabel(axisName, position, padding, plot, opts) { + AxisLabel.prototype.constructor.call(this, axisName, position, + padding, plot, opts); + this.elem = null; + } + + HtmlAxisLabel.prototype.calculateSize = function() { + var elem = $('
' + + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(elem); + // store height and width of label itself, for use in draw() + this.labelWidth = elem.outerWidth(true); + this.labelHeight = elem.outerHeight(true); + elem.remove(); + + this.width = this.height = 0; + if (this.position == 'left' || this.position == 'right') { + this.width = this.labelWidth + this.padding; + } else { + this.height = this.labelHeight + this.padding; + } + }; + + HtmlAxisLabel.prototype.cleanup = function() { + if (this.elem) { + this.elem.remove(); + } + }; + + HtmlAxisLabel.prototype.draw = function(box) { + this.plot.getPlaceholder().find('#' + this.axisName + 'Label').remove(); + this.elem = $('
' + + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(this.elem); + if (this.position == 'top') { + this.elem.css('left', box.left + box.width/2 - this.labelWidth/2 + + 'px'); + this.elem.css('top', box.top + 'px'); + } else if (this.position == 'bottom') { + this.elem.css('left', box.left + box.width/2 - this.labelWidth/2 + + 'px'); + this.elem.css('top', box.top + box.height - this.labelHeight + + 'px'); + } else if (this.position == 'left') { + this.elem.css('top', box.top + box.height/2 - this.labelHeight/2 + + 'px'); + this.elem.css('left', box.left + 'px'); + } else if (this.position == 'right') { + this.elem.css('top', box.top + box.height/2 - this.labelHeight/2 + + 'px'); + this.elem.css('left', box.left + box.width - this.labelWidth + + 'px'); + } + }; + + + CssTransformAxisLabel.prototype = new HtmlAxisLabel(); + CssTransformAxisLabel.prototype.constructor = CssTransformAxisLabel; + function CssTransformAxisLabel(axisName, position, padding, plot, opts) { + HtmlAxisLabel.prototype.constructor.call(this, axisName, position, + padding, plot, opts); + } + + CssTransformAxisLabel.prototype.calculateSize = function() { + HtmlAxisLabel.prototype.calculateSize.call(this); + this.width = this.height = 0; + if (this.position == 'left' || this.position == 'right') { + this.width = this.labelHeight + this.padding; + } else { + this.height = this.labelHeight + this.padding; + } + }; + + CssTransformAxisLabel.prototype.transforms = function(degrees, x, y) { + var stransforms = { + '-moz-transform': '', + '-webkit-transform': '', + '-o-transform': '', + '-ms-transform': '' + }; + if (x != 0 || y != 0) { + var stdTranslate = ' translate(' + x + 'px, ' + y + 'px)'; + stransforms['-moz-transform'] += stdTranslate; + stransforms['-webkit-transform'] += stdTranslate; + stransforms['-o-transform'] += stdTranslate; + stransforms['-ms-transform'] += stdTranslate; + } + if (degrees != 0) { + var rotation = degrees / 90; + var stdRotate = ' rotate(' + degrees + 'deg)'; + stransforms['-moz-transform'] += stdRotate; + stransforms['-webkit-transform'] += stdRotate; + stransforms['-o-transform'] += stdRotate; + stransforms['-ms-transform'] += stdRotate; + } + var s = 'top: 0; left: 0; '; + for (var prop in stransforms) { + if (stransforms[prop]) { + s += prop + ':' + stransforms[prop] + ';'; + } + } + s += ';'; + return s; + }; + + CssTransformAxisLabel.prototype.calculateOffsets = function(box) { + var offsets = { x: 0, y: 0, degrees: 0 }; + if (this.position == 'bottom') { + offsets.x = box.left + box.width/2 - this.labelWidth/2; + offsets.y = box.top + box.height - this.labelHeight; + } else if (this.position == 'top') { + offsets.x = box.left + box.width/2 - this.labelWidth/2; + offsets.y = box.top; + } else if (this.position == 'left') { + offsets.degrees = -90; + offsets.x = box.left - this.labelWidth/2 + this.labelHeight/2; + offsets.y = box.height/2 + box.top; + } else if (this.position == 'right') { + offsets.degrees = 90; + offsets.x = box.left + box.width - this.labelWidth/2 + - this.labelHeight/2; + offsets.y = box.height/2 + box.top; + } + offsets.x = Math.round(offsets.x); + offsets.y = Math.round(offsets.y); + + return offsets; + }; + + CssTransformAxisLabel.prototype.draw = function(box) { + this.plot.getPlaceholder().find("." + this.axisName + "Label").remove(); + var offsets = this.calculateOffsets(box); + this.elem = $('
' + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(this.elem); + }; + + + IeTransformAxisLabel.prototype = new CssTransformAxisLabel(); + IeTransformAxisLabel.prototype.constructor = IeTransformAxisLabel; + function IeTransformAxisLabel(axisName, position, padding, plot, opts) { + CssTransformAxisLabel.prototype.constructor.call(this, axisName, + position, padding, + plot, opts); + this.requiresResize = false; + } + + IeTransformAxisLabel.prototype.transforms = function(degrees, x, y) { + // I didn't feel like learning the crazy Matrix stuff, so this uses + // a combination of the rotation transform and CSS positioning. + var s = ''; + if (degrees != 0) { + var rotation = degrees/90; + while (rotation < 0) { + rotation += 4; + } + s += ' filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=' + rotation + '); '; + // see below + this.requiresResize = (this.position == 'right'); + } + if (x != 0) { + s += 'left: ' + x + 'px; '; + } + if (y != 0) { + s += 'top: ' + y + 'px; '; + } + return s; + }; + + IeTransformAxisLabel.prototype.calculateOffsets = function(box) { + var offsets = CssTransformAxisLabel.prototype.calculateOffsets.call( + this, box); + // adjust some values to take into account differences between + // CSS and IE rotations. + if (this.position == 'top') { + // FIXME: not sure why, but placing this exactly at the top causes + // the top axis label to flip to the bottom... + offsets.y = box.top + 1; + } else if (this.position == 'left') { + offsets.x = box.left; + offsets.y = box.height/2 + box.top - this.labelWidth/2; + } else if (this.position == 'right') { + offsets.x = box.left + box.width - this.labelHeight; + offsets.y = box.height/2 + box.top - this.labelWidth/2; + } + return offsets; + }; + + IeTransformAxisLabel.prototype.draw = function(box) { + CssTransformAxisLabel.prototype.draw.call(this, box); + if (this.requiresResize) { + this.elem = this.plot.getPlaceholder().find("." + this.axisName + + "Label"); + // Since we used CSS positioning instead of transforms for + // translating the element, and since the positioning is done + // before any rotations, we have to reset the width and height + // in case the browser wrapped the text (specifically for the + // y2axis). + this.elem.css('width', this.labelWidth); + this.elem.css('height', this.labelHeight); + } + }; + + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + + if (!options.axisLabels.show) + return; + + // This is kind of a hack. There are no hooks in Flot between + // the creation and measuring of the ticks (setTicks, measureTickLabels + // in setupGrid() ) and the drawing of the ticks and plot box + // (insertAxisLabels in setupGrid() ). + // + // Therefore, we use a trick where we run the draw routine twice: + // the first time to get the tick measurements, so that we can change + // them, and then have it draw it again. + var secondPass = false; + + var axisLabels = {}; + var axisOffsetCounts = { left: 0, right: 0, top: 0, bottom: 0 }; + + var defaultPadding = 2; // padding between axis and tick labels + plot.hooks.draw.push(function (plot, ctx) { + var hasAxisLabels = false; + if (!secondPass) { + // MEASURE AND SET OPTIONS + $.each(plot.getAxes(), function(axisName, axis) { + var opts = axis.options // Flot 0.7 + || plot.getOptions()[axisName]; // Flot 0.6 + + // Handle redraws initiated outside of this plug-in. + if (axisName in axisLabels) { + axis.labelHeight = axis.labelHeight - + axisLabels[axisName].height; + axis.labelWidth = axis.labelWidth - + axisLabels[axisName].width; + opts.labelHeight = axis.labelHeight; + opts.labelWidth = axis.labelWidth; + axisLabels[axisName].cleanup(); + delete axisLabels[axisName]; + } + + if (!opts || !opts.axisLabel || !axis.show) + return; + + hasAxisLabels = true; + var renderer = null; + + if (!opts.axisLabelUseHtml && + navigator.appName == 'Microsoft Internet Explorer') { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) { + rv = parseFloat(RegExp.$1); + } + if (rv >= 9 && !opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { + renderer = CssTransformAxisLabel; + } else if (!opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { + renderer = IeTransformAxisLabel; + } else if (opts.axisLabelUseCanvas) { + renderer = CanvasAxisLabel; + } else { + renderer = HtmlAxisLabel; + } + } else { + if (opts.axisLabelUseHtml || (!css3TransitionSupported() && !canvasTextSupported()) && !opts.axisLabelUseCanvas) { + renderer = HtmlAxisLabel; + } else if (opts.axisLabelUseCanvas || !css3TransitionSupported()) { + renderer = CanvasAxisLabel; + } else { + renderer = CssTransformAxisLabel; + } + } + + var padding = opts.axisLabelPadding === undefined ? + defaultPadding : opts.axisLabelPadding; + + axisLabels[axisName] = new renderer(axisName, + axis.position, padding, + plot, opts); + + // flot interprets axis.labelHeight and .labelWidth as + // the height and width of the tick labels. We increase + // these values to make room for the axis label and + // padding. + + axisLabels[axisName].calculateSize(); + + // AxisLabel.height and .width are the size of the + // axis label and padding. + // Just set opts here because axis will be sorted out on + // the redraw. + + opts.labelHeight = axis.labelHeight + + axisLabels[axisName].height; + opts.labelWidth = axis.labelWidth + + axisLabels[axisName].width; + }); + + // If there are axis labels, re-draw with new label widths and + // heights. + + if (hasAxisLabels) { + secondPass = true; + plot.setupGrid(); + plot.draw(); + } + } else { + secondPass = false; + // DRAW + $.each(plot.getAxes(), function(axisName, axis) { + var opts = axis.options // Flot 0.7 + || plot.getOptions()[axisName]; // Flot 0.6 + if (!opts || !opts.axisLabel || !axis.show) + return; + + axisLabels[axisName].draw(axis.box); + }); + } + }); + }); + } + + + $.plot.plugins.push({ + init: init, + options: options, + name: 'axisLabels', + version: '2.0' + }); +})(jQuery); diff --git a/class/RealSpaceInterface/static/js/paramGui.js b/class/RealSpaceInterface/static/js/paramGui.js new file mode 100644 index 00000000..c54e0164 --- /dev/null +++ b/class/RealSpaceInterface/static/js/paramGui.js @@ -0,0 +1,397 @@ +/** @module paramGui */ + +/** + * Initial Condition Type. Either Gaussian (0) or Scale Invariant (1). + * + * @typedef {number} IC_TYPE + */ +const IC_TYPE = { + GAUSSIAN: 0, + SCALE_INVARIANT: 1, +}; + +/** + * Set of initial parameters providing the data structure for the ParameterGui. + * Reads default parameters from {@link DEFAULT_INITIAL} and default redshifts + * from {@link DEFAULT_REDSHIFTS}. + * + * @typedef {Object} ParamSet + * @constructor + * + * @property {number} scale - side length of 2D cross section of universe in Mpc + * @property {module:paramGui~IC_TYPE} initialType - either + * {@link IC_TYPE.GAUSSIAN} or + * {@link IC_TYPE.SCALE_INVARIANT} + * @property {bool} limitModes - true if modes are to be limited, false otherwise + * @property {number} minMode - minimum mode wave number in 1 / Mpc + * @property {number} minMode - maximum mode wave number in 1 / Mpc + * @property {number} ns - primordial tilt n_s + * @property {number} resolution - the side length of the mesh in number of vertices + * + * @param {module:RSI~initialConditionSetCallback} setInitialConditions - callback + */ +function ParamSet(setInitialConditions) { + this.scale = DEFAULT_INITIAL.scale; + this.initialType = IC_TYPE.GAUSSIAN; + this.sigmaGauss = DEFAULT_INITIAL.sigmaGauss; + this.limitModes = false; + this.minMode = 1; + this.maxMode = 10; + this.ns = DEFAULT_INITIAL.n_s; + this.resolution = DEFAULT_INITIAL.resolution; + + var self = this; + + var initialCallback = function() { + setInitialConditions(self); + }; + + this.setInitialSI = initialCallback; + this.setInitialGauss = initialCallback; + + this.redshift = Object.assign([], DEFAULT_REDSHIFTS); + this.modal = new RedshiftModal( + this.redshift, + function(redshift) { + self.redshift = redshift; + } + ); + + this.configureRedshift = function() { + self.modal.show(); + }; +}; + +/** + * Returns an object according to the communication protocol + * to be sent as JSON object to the server specifying the initial + * conditions. + * + * @return {Object} the object to be sent to the server + */ +ParamSet.prototype.serializeInitial = function() { + var dataType = (this.initialType === IC_TYPE.GAUSSIAN) ? "Gaussian" : "SI"; + var SILimit; + if (this.initialType === IC_TYPE.GAUSSIAN || !this.limitModes) + SILimit = "None"; + else + SILimit = [this.minMode, this.maxMode]; + + var result = { + type: "Initial", + params: { + xScale: Math.floor(this.scale), + resolution: this.resolution, + initialDataType: dataType, + sigma: this.sigmaGauss, + SILimit: SILimit, + n_s: this.ns, + redshift: this.redshift, + } + }; + + return result; +}; + +/***************************************************************************************/ + +/** + * Represents the set of cosmological parameters (that are + * not initial state parameters). Reads the set of parameters + * exposed to the user from {@link COSMOLOGICAL_PARAMETER_LIST}. + * + * @typedef {Object} CosmoParams + * @constructor + * @param {module:RSI~cosmologicalParametersSetCallback} + */ +function CosmoParams(cosmoCallback) { + this.config = COSMOLOGICAL_PARAMETER_LIST; + this.additionalParameters = ADDITIONAL_CLASS_PARAMETERS; + + this.parameters = this.buildParameterObject(); + this.cosmoCallback = cosmoCallback; +} + +/** + * Builds the object which is passed to dat.gui. + */ +CosmoParams.prototype.buildParameterObject = function() { + var result = {}; + for (var entry of this.config) { + result[entry.name] = entry.default; + } + return result; +}; + +/** + * Resets all parameters to their default value. + */ +CosmoParams.prototype.resetParameters = function() { + for (var entry of this.config) { + this.parameters[entry.name] = entry.default; + } +}; + +/** + * This is called once the user presses the button to set the cosmological parameters + * (which coincides with the button to start the calculation). + * This will call the {@link module:RSI~cosmologicalParametersSetCallback} instance + * passed in the {@link CosmoParams} constructor. + */ +CosmoParams.prototype.setCosmological = function() { + var result = { + type: "Cosmo", + params: this.serialize(), + }; + this.cosmoCallback(this, result); +}; + +/** + * Converts the user specified cosmological parameters into a representation + * that can be sent to the server. + * + * @return {Object} object to be sent to the server + */ +CosmoParams.prototype.serialize = function() { + var serialized = {}; + for (var entry of this.config) { + if (entry.hasOwnProperty("replaceBy")) { + var replacement = entry.replaceBy(this.parameters); + for (var key in replacement) { + serialized[key] = replacement[key]; + } + } + else { + serialized[entry.name] = this.parameters[entry.name]; + } + } + for (var key in this.additionalParameters) { + serialized[key] = this.additionalParameters[key]; + } + + return serialized; +}; + +CosmoParams.prototype.loadParameters = function(parameters) { + var self = this; + Object.keys(parameters).forEach(function(key) { + self.parameters[key] = parameters[key]; + }); +}; + + +/** + * This class provides the graphical user interface that controls the inital + * + cosmological parameters of the simulation as well as other properties, + * such as the animation rate, whether or not grids are shown, etc. + * + * @typedef {Object} ParameterGui + * @constructor + * @param {module:RSI~initialConditionSetCallback} setInitialConditions + * @param {module:RSI~cosmologicalParametersSetCallback} setCosmologicalParams + */ +function ParameterGui(setInitialConditions, setCosmologicalParams) { + this.gui = new dat.GUI({ width: 300 }); + this.gui.domElement.id = "datgui"; + this.paramSet = new ParamSet(setInitialConditions); + this.cosmoParams = new CosmoParams(setCosmologicalParams); + + this.config = { + notFlat: true, + amplitude: 25.0, + resetCamera: function() {controls.reset()}, + orthographicMode: false, + showAxes: true, + dashedAxes: true, + showGrid: true, + animationSpeed: 25, + backgroundColor: "#4a4a4a" + }; + + + this.buildFolders(); +} + +/** + * Create folders for initial condition and cosmological parameters + * and populate them. + * Called via the constructor of {@link ParameterGui}. + */ +ParameterGui.prototype.buildFolders = function() { + this.initialFolder = this.gui.addFolder("Initial Condition"); + this.cosmoFolder = this.gui.addFolder("Cosm. Parameters"); + + this.buildInitialFolder(); + this.buildCosmoFolder(); + this.buildDisplayFolder(); + this.buildControlFolder(); + + this.initialFolder.open(); + this.siFolder.open(); + this.switchToScaleInvariant(); + this.cosmoFolder.open(); +}; + +/** + * Build folder containing initial condition parameters. + */ +ParameterGui.prototype.buildInitialFolder = function() { + this.initialFolder.add(this.paramSet, "scale") + .min(100).max(1600).name("Scale [Mpc]"); + this.initialFolder.add(this.paramSet, "resolution") + .min(64).max(1024).step(1).name("Resolution"); + this.initialFolder.add(this.paramSet, "configureRedshift") + .name("Configure Redshifts"); + + var self = this; + this.gaussianFolder = this.initialFolder.addFolder("Gaussian Initial Conditions"); + this.sigmaGaussCtl = this.gaussianFolder + .add(this.paramSet, "sigmaGauss").min(1).max(30).name("σ [Mpc]"); + this.gaussianFolder + .add(this.paramSet, "setInitialGauss").name("Set Initial Condition"); + this.gaussianFolder.domElement.onclick = function() { + self.switchToGaussian(); + }; + + var siButtonString = "Set Initial Condition"; + + // Create SI folder + this.siFolder = this.initialFolder.addFolder("Scale Invariant Initial Conditions"); + // Add fields + this.siFolder + .add(this.paramSet, "ns").name("ns"); + this.limitModesCtl = this.siFolder + .add(this.paramSet, "limitModes").name("Limit Modes"); + this.limitModesCtl.onChange(function (limitModes) { + if (limitModes) { + self.siFolder.remove(self.set_initial_si); + self.minModeCtl = self.siFolder + .add(self.paramSet, "minMode").name("Min. Mode [1/Mpc]"); + self.maxModeCtl = self.siFolder + .add(self.paramSet, "maxMode").name("Max. Mode [1/Mpc]"); + self.set_initial_si = self.siFolder + .add(self.paramSet, "setInitialSI") + .name(siButtonString); + } else { + self.siFolder.remove(self.minModeCtl); + self.siFolder.remove(self.maxModeCtl); + } + }); + this.set_initial_si = this.siFolder + .add(this.paramSet, "setInitialSI").name(siButtonString); + this.siFolder.domElement.onclick = function() { + self.switchToScaleInvariant(); + }; +}; + +/** + * Build folder containing cosmological parameters. + */ +ParameterGui.prototype.buildCosmoFolder = function() { + for (var param of this.cosmoParams.config) { + var step = param.hasOwnProperty("step") ? param.step : 0.001; + this.cosmoFolder + .add(this.cosmoParams.parameters, param.name) + .step(step) + .min(param.min) + .max(param.max) + .name(param.displayName); + } + + // Rather ugly solution but necessary since calling `listen()` on the + // config attributes above to auto-update them on value change + // prevents user from manually entering a value into the text boxes. + // NOTE: This relies on the internal implementation of dat.gui and is + // therefore not guaranteed to be compatible with future versions of dat.gui. + var self = this; + this.resetConfig = { + resetCosmological: function() { + self.cosmoParams.resetParameters(); + self.refreshCosmoFolder(); + } + }; + + this.cosmoFolder.add(this.resetConfig, "resetCosmological").name("Reset Parameters"); + this.cosmoFolder.add(this.cosmoParams, "setCosmological").name("Start Calculation"); +}; + +ParameterGui.prototype.refreshCosmoFolder = function() { + this.gui.__folders["Cosm. Parameters"].__controllers.forEach(function(ctrl) { + ctrl.updateDisplay(); + }); +}; + +ParameterGui.prototype.loadCosmoParameters = function(parameters) { + this.cosmoParams.loadParameters(parameters); + this.refreshCosmoFolder(); +}; + +ParameterGui.prototype.buildDisplayFolder = function() { + displaySettings = this.gui.addFolder("Display Settings"); + + var self = this; + displaySettings + .add(this.config, 'notFlat') + .name("Show in 3D") + .onChange(function() { + simulationManager.setUniform("notFlat", self.config.notFlat); + }); + + displaySettings + .add(this.config, "showGrid") + .name("Show Grid") + .onChange(function() { + simulationManager.updateGrids(); + }); + + displaySettings + .add(this.config , 'amplitude', 0, 50) + .name("Amplitude") + .onChange(function() { + simulationManager.setUniform("amplitude", self.config.amplitude); + }); + +}; + +/** + * Build the control folder, containing properties like the animation rate, + * background color etc. + */ +ParameterGui.prototype.buildControlFolder = function() { + var self = this; + + this.gui.add(this.config, "animationSpeed", 1, 60).name("FPS").listen().onChange(function() { + fps = self.config.animationSpeed; + }); + + // this.gui.add(this.config, "orthographicMode") + // .name("Orthographic Camera") + // .onChange(toggleCameraMode); + + this.gui.add(this.config, "resetCamera"). name("Reset Camera"); + + this.gui.addColor(this.config, "backgroundColor").name("Background Color") + .onChange(function (value) { + scene.background = new THREE.Color(value); + }); +}; + +/** + * Switch to the menu for Gaussian initial conditions + */ +ParameterGui.prototype.switchToGaussian = function() { + if (this.paramSet.initialType === IC_TYPE.SCALE_INVARIANT) { + this.siFolder.close(); + this.paramSet.initialType = IC_TYPE.GAUSSIAN; + } +}; + +/** + * Switch to the menu for scale invariant initial conditions + */ +ParameterGui.prototype.switchToScaleInvariant = function() { + if (this.paramSet.initialType === IC_TYPE.GAUSSIAN) { + this.gaussianFolder.close(); + this.paramSet.initialType = IC_TYPE.SCALE_INVARIANT; + } +}; diff --git a/class/RealSpaceInterface/static/js/parameterConfig.js b/class/RealSpaceInterface/static/js/parameterConfig.js new file mode 100644 index 00000000..cae53856 --- /dev/null +++ b/class/RealSpaceInterface/static/js/parameterConfig.js @@ -0,0 +1,153 @@ +/* +The parameters the application exposes to the user are configured using this list. +Each parameter is represented by an entry in that list. +An entry is an object containing some required and some optional fields. + +The required fields are: +------------------------ +- `name`: The `name` property is the one that will be used to pass the + parameter value to CLASS. + +- `displayName`: The `displayName` property will be displayed as the label + of the property in both the control panel (on the left of the + application) and in the simulation list. + HTML is allowed. Subscripts use the tag. + +- `min`: Minimum parameter value. + +- `max`: Maximum parameter value. + +- `default`: Default parameter value. + +The optional fields are: +------------------------ +- `step`: The increment by which the parameter will be increased using + the sliders in the control panel. Defaults to 0.001. + +- `replaceBy`: It might be necessary to pass parameters to CLASS + which are functions of other parameters, e.g. the user might + set a value of `omega_m` but CLASS requires `omega_cdm` to be + passed. In this case, a function accepting a dictionary of + all the parameters and returning a dictionary containining + the key-value pairs that are supposed to be passed to CLASS + (see example for `omega_m` below). +*/ + +/** @global */ +var COSMOLOGICAL_PARAMETER_LIST = [ + { + name: "h", + displayName: "h", + min: 0.0, + max: 2.0, + default: 0.67556, + }, + { + name: "omega_b", + displayName: "ωb", + min: 0.0, + max: 1.0, + default: 0.022, + }, + { + name: "omega_m", + displayName: "ωm", + min: 0.0, + max: 1.0, + default: 0.142, + replaceBy: function(parameters) { + return { + "omega_cdm": parameters.omega_m - parameters.omega_b + }; + }, + }, + { + name: "Omega_k", + displayName: "Ωk", + min: -0.2, + max: 0.2, + default: 0.0, + }, + { + name: "N_ur", + displayName: "Neff", + min: 0.0, + max: 30.0, + default: 3.046 + }, + { + name: "w0_fld", + displayName: "w0,fld", + min: -2.0, + max: 0.0, + default: -1.0, + }, + { + name: "wa_fld", + displayName: "wa,fld", + min: -1.0, + max: 1.0, + default: 0.0 + }, +]; + + +/** + * It is possible to pass additional parameters to CLASS using + * the following object. + * + * @global + */ +var ADDITIONAL_CLASS_PARAMETERS = { + "Omega_Lambda": 0, + "YHe": 0.25, +}; + + +/** + * Default redshifts. + * Depending on the value of log, the individual arrays will be created either + * as + *
+ * numpy.logspace(from, to, points) (for log = true)
+ *  or
+ * numpy.linspace(from, to, points) (for  log = false).
+ * 
+ * + * The resulting individual arrays will be concatenated and duplicates removed. + * + * @global + */ +var DEFAULT_REDSHIFTS = [ + { + from: 1000000, + to: 10000, + log: true, + points: 60, + }, + { + from: 10000, + to: 1089, + log: true, + points: 80, + }, + { + from: 1089, + to: 0.01, + log: false, + points: 40, + }, +]; + +/** + * Default Initial Condition Values. + * + * @global + */ +var DEFAULT_INITIAL = { + scale: 400, + resolution: 200, + sigmaGauss: 10.0, + n_s: 0.96 +}; + diff --git a/class/RealSpaceInterface/static/js/playerPanel.js b/class/RealSpaceInterface/static/js/playerPanel.js new file mode 100644 index 00000000..5937e3d6 --- /dev/null +++ b/class/RealSpaceInterface/static/js/playerPanel.js @@ -0,0 +1,190 @@ +/** + * This function will be called when the user presses the play/pause button. + * @callback PlayerPanel~playPauseCallback + * @param {bool} playing - true if movie should be played, false if movie should be paused. + */ + +/** + * This function will be called when the user presses the "back one frame" button. + * @callback PlayerPanel~backFrameCallback + */ + +/** + * This function will be called when the user presses the "forward one frame" button. + * @callback PlayerPanel~forwardFrameCallback + */ + +/** + * This function will be called when the user presses the "Go to Start" button. + * @callback PlayerPanel~toStartCallback + */ + +/** + * This function will be called when the user presses the "Go to End" button. + * @callback PlayerPanel~toEndCallback + */ + +/** + * This function will be called when the user presses the play/pause button. + * @callback PlayerPanel~repeatCallback + * @param {bool} repeating - true if movie should be played in repeat, else false. + */ + +/** + * This function will be called when the user uses the 'scrubber' to move to a specific frame. + * @callback PlayerPanel~scrubCallback + * @param {number} progress - number between 0.0 and 1.0 (inclusive). + */ + +/** + * Represents the player panel. + * @constructor + * @param {PlayerPanel~playPauseCallback} + * @param {PlayerPanel~backFrameCallback} + * @param {PlayerPanel~forwardFrameCallback} + * @param {PlayerPanel~toStartCallback} + * @param {PlayerPanel~toEndCallback} + * @param {PlayerPanel~repeatCallback} + * @param {PlayerPanel~scrubCallback} + */ +function PlayerPanel(playPauseCallback, backFrameCallback, forwardFrameCallback, toStartCallback, toEndCallback, repeatCallback, + scrubCallback) { + this.playPauseCallback = playPauseCallback; + this.backFrameCallback = backFrameCallback; + this.forwardFrameCallback = forwardFrameCallback; + this.toStartCallback = toStartCallback; + this.toEndCallback = toEndCallback; + this.repeatCallback = repeatCallback; + + this.playPauseButton = document.getElementById("playerPlayPauseBtn"); + this.backFrameButton = document.getElementById("playerBackFrameBtn"); + this.forwardFrameButton = document.getElementById("playerForwardFrameBtn"); + this.toStartButton = document.getElementById("playerToStartBtn"); + this.toEndButton = document.getElementById("playerToEndBtn"); + this.repeatButton = document.getElementById("playerRepeatBtn"); + + this.timeline = new Timeline("timeline", "scrubber", scrubCallback); + this.timeline.scrubTo(0); + + this.playing = false; + this.repeat = false; + + this.connectCallbacks(); +} + +PlayerPanel.prototype.connectCallbacks = function() { + var self = this; + this.playPauseButton.onclick = function() { + // Additionally, toggle button + var buttonSpan = self.playPauseButton.firstElementChild; + if (self.playing) { + buttonSpan.classList.remove("oi-media-pause"); + buttonSpan.classList.add("oi-media-play"); + } else { + buttonSpan.classList.remove("oi-media-play"); + buttonSpan.classList.add("oi-media-pause"); + } + self.playing = !self.playing; + self.playPauseCallback(self.playing); + }; + this.backFrameButton.onclick = this.backFrameCallback; + this.forwardFrameButton.onclick = this.forwardFrameCallback; + this.toStartButton.onclick = this.toStartCallback; + this.toEndButton.onclick = this.toEndCallback; + + this.repeatButton.onclick = function() { + if (self.repeat) { + self.repeatButton.classList.remove("btn-success"); + self.repeatButton.classList.add("btn-outline-success"); + } else { + self.repeatButton.classList.remove("btn-outline-success"); + self.repeatButton.classList.add("btn-success"); + } + self.repeat = !self.repeat; + if (self.repeatCallback) { + self.repeatCallback(self.repeat); + } + }; +}; + +PlayerPanel.prototype.pause = function() { + if (this.playing) { + this.playPauseButton.onclick(); + } +}; + +PlayerPanel.prototype.play = function() { + if (!this.playing) { + this.playPauseButton.onclick(); + } +}; + + + + +/* TIMELINE */ +function Timeline(timelineId, scrubberId, scrubCallback) { + this.timeline = document.getElementById(timelineId); + this.scrubber = document.getElementById(scrubberId); + + this.scrubCallback = scrubCallback; + + this.timelineWidth = this.timeline.offsetWidth; + this.scrubberRadius = this.scrubber.offsetWidth / 2; + + + // Center + var dy = this.scrubber.offsetHeight / 2 - this.timeline.offsetHeight / 2; + this.scrubber.style.marginTop = "-" + Math.floor(dy) + "px"; + + // Event handling + this.mouseDown = false; + var self = this; + this.scrubber.addEventListener("mousedown", function(e) { + self.mouseDown = true; + e.stopPropagation(); + }); + + this.timeline.addEventListener("mousedown", function(e) { + self.handleClick(e); + }); + + document.addEventListener("mouseup", function() { + self.mouseDown = false; + }); + + document.addEventListener("mousemove", function(e) { + if (self.mouseDown) { + self.handleClick(e); + } + }); +} + +Timeline.prototype.refresh = function() { + this.timelineWidth = this.timeline.offsetWidth; +}; + +Timeline.prototype.handleClick = function(e) { + var leftBoundary = this.timeline.getBoundingClientRect().left; + var rightBoundary = leftBoundary + this.timelineWidth; + if (e.clientX >= leftBoundary && e.clientX <= rightBoundary) { + var percentage = (e.clientX - leftBoundary) / this.timelineWidth; + this.scrubTo(percentage); + this.scrubCallback(percentage); + } +}; + +Timeline.prototype.scrubTo = function(percentage) { + var pos = percentage * this.timelineWidth - this.scrubberRadius; + this.scrubber.style.marginLeft = pos + "px"; + + this.timeline.style.background = this.generateGradientCSS(percentage); +}; + +Timeline.prototype.generateGradientCSS = function(percent) { + percent *= 100; + // var result = "linear-gradient(to right, rgba(255, 0, 0, 0.75) 0%, rgba(255, 0, 0, 0.75) " + percent + "%, #222 " + percent + "%)"; + var result = "linear-gradient(to right, transparent 0%, transparent " + percent + "%, #222 " + percent + "%)"; + result = result + ", repeating-linear-gradient(45deg, hsl(134, 61%, 35%) 0%, hsl(134, 61%, 35%) 2%, hsl(134, 61%, 41%) 2%, hsl(134, 61%, 41%) 4%)"; + return result; +}; diff --git a/class/RealSpaceInterface/static/js/redshiftModal.js b/class/RealSpaceInterface/static/js/redshiftModal.js new file mode 100644 index 00000000..2ea6c994 --- /dev/null +++ b/class/RealSpaceInterface/static/js/redshiftModal.js @@ -0,0 +1,253 @@ +/** + * @callback RedshiftModal~saveCallback + * @param {Object} config - redshift configuration; + * for documentation on format, see {@link DEFAULT_REDSHIFTS} + */ + +/** + * Redshift Modal that allows user control over redshift sampling. + * @typedef {Object} RedshiftModal + * + * @constructor + * @param {Object} initial state, probably {@link DEFAULT_REDSHIFTS} + * @param {RedshiftModal~saveCallback} callback - callback to be called once user saves + */ +function RedshiftModal(initial, callback) { + this.modal = $("#redshift-modal"); + this.grid = $("#redshift-modal-grid"); + this.initial = initial; + + this.init(initial); + this.callback = callback; +} + +/** + * Initialize the modal with the initial configuration passed to the {@link RedshiftModal} constructor. + * + * @param {Object} initial - initial configuration + */ +RedshiftModal.prototype.init = function(initial) { + this.load(initial); + + // Deactivate first delete button + this.grid.find(".redshift-modal-btn-delete").first().prop("disabled", true); + + var self = this; + this.modal.find("#redshift-modal-save").click(function(e) { + self.clearAlerts(); + if (self.validate()) { + self.callback(self.serialize()); + self.hide(); + } + }); + + this.modal.find("#redshift-modal-cancel").click(function(e) { + self.clear(); + self.load(self.initial); + }); +}; + +/** + * Removes all entries + */ +RedshiftModal.prototype.clear = function() { + this.grid.children().remove(); +}; + +/** + * Show the modal + */ +RedshiftModal.prototype.show = function() { + this.modal.modal("show"); +}; + +/** + * Hide the modal + */ +RedshiftModal.prototype.hide = function() { + this.modal.modal("hide"); +}; + +/** + * Create an empty row template + * @return {Object} row + */ +RedshiftModal.prototype.createRow = function() { + return $("
").addClass("alert").addClass("alert-warning").text(message); + this.modal.find(".modal-body").append(element); +}; + +/** + * Clear all alerts. + */ +RedshiftModal.prototype.clearAlerts = function() { + this.modal.find(".alert").remove(); +}; + +/** + * Validate input fields and display warnings if input fields + * contain illegal values. + * + * @return {bool} true if all inputs are valid; false otherwise. + */ +RedshiftModal.prototype.validate = function() { + var self = this; + var return_ = false; + + var values = this.modal.find(".redshift-modal-z").map(function() { + if (isNaN(this.value)) { + self.alert("Invalid value encountered: " + this.value); + return_ = true; + } + var value = parseFloat(this.value); + return value; + }).get(); + + var points = this.modal.find(".redshift-modal-samples").map(function() { + if (isNaN(this.value)) { + self.alert("Invalid point count encountered: " + this.value); + return_ = true; + } + var value = parseInt(this.value); + if (value <= 0) { + self.alert("Invalid point count encountered: " + value); + return_ = true; + } + return value; + }).get(); + + if (return_) { + return false; + } + + for (var i = 0; i < values.length - 1; ++i) { + if (values[i] <= values[i + 1]) { + self.alert("Redshifts must be decreasing!"); + return false; + } + } + + return true; +}; + +/** + * Constructs an object representing the user's choice of z values. + * For an example of the format, see {@link DEFAULT_REDSHIFTS}. + */ +RedshiftModal.prototype.serialize = function() { + var z = this.modal.find(".redshift-modal-z").map(function() { + return parseFloat(this.value); + }); + + var points = this.modal.find(".redshift-modal-samples").map(function() { + return parseInt(this.value); + }); + + var logarithmic = this.modal.find(".redshift-modal-spacing").map(function() { + return this.value == 0; + }); + + var result = []; + for (var i = 0; i < z.length - 1; ++i) { + result.push({ + from: z[i], + to: z[i + 1], + points: points[i], + log: logarithmic[i], + }); + } + return result; +}; + +/** + * The 'inverse' operation of {@link RedshiftModal#serialize}. + * Takes an object of the same format and populates the modal + * accordingly. Note that this does NOT clear the modal but merely + * appends to the end of it. + * To clear, call {@link RedshiftModal#clear}. + * + * @param {Object[]} data - the data to populate the modal with + */ +RedshiftModal.prototype.load = function(data) { + for (var i = 0; i < data.length; ++i) { + if (i == 0) { + var lr = this.createLeftRow(); + lr.find(".redshift-modal-z").val(data[i].from); + this.grid.append(lr); + } + + var rr = this.createRightRow(); + rr.find(".redshift-modal-samples").val(data[i].points); + this.grid.append(rr); + + var lr2 = this.createLeftRow(); + lr2.find(".redshift-modal-z").val(data[i].to); + this.grid.append(lr2); + } +}; diff --git a/class/RealSpaceInterface/static/js/simulation.js b/class/RealSpaceInterface/static/js/simulation.js new file mode 100644 index 00000000..e7387247 --- /dev/null +++ b/class/RealSpaceInterface/static/js/simulation.js @@ -0,0 +1,874 @@ +/** @const {string[]} */ +var QUANTITIES = ["d_g", "d_b", "d_ur", "d_g/4 + psi", "d_cdm"]; +/** @const {string[]} */ +var QUANTITY_LABELS = [ + "δγ", + "δb", + "δν", + "δγ/4 + ψ", + "δcdm" +]; + +/** + * @typedef {Object} Simulation + * @typedef {Object} SimulationManager + * @typedef {Object} QuantityObject + */ + +/** + * Represents a single simulation. + * + * @constructor + */ +function Simulation() { + /* + These objects (once filled) can be accessed like this: + transfer[QUANTITY][FRAME][DATAPOINT] + */ + this.real = this.createQuantityObject(); + this.transfer = this.createQuantityObject(); + this.fourier = this.createQuantityObject(); + + this.params = null; + + // Cl's + this.l = null; + this.tCl = null; + + this.mPk = null; + + this.frameCount = 0; +} + +/** + * Create a new quantity object, i.e. an object whose + * keys are the quantities of {@link QUANTITIES} and values + * empty arrays. + */ +Simulation.prototype.createQuantityObject = function() { + var obj = {}; + for (var qty of QUANTITIES) { + obj[qty] = []; + } + return obj; +} + +/** + * Set the cosmological parameters associated with this simulation. + * + * @param {Object} params - The parameter object + */ +Simulation.prototype.setParameters = function(params) { + this.params = params; +}; + +/** + * Add a frame to this simulation. + * + * @param {QuantityObject} real - real data + * @param {QuantityObject} transfer - transfer function data + * @param {QuantityObject} fourier - fourier data (not used) + */ +Simulation.prototype.addFrame = function(real, transfer, fourier) { + for (var qty of QUANTITIES) { + this.real[qty].push(real[qty]); + this.transfer[qty].push(transfer[qty]); + this.fourier[qty].push(fourier[qty]); + } + this.frameCount++; +}; + +/** + * Add a frame to this simulation. + * + * @param {Float32Array} real - real data + * @param {Float32Array} transfer - transfer function data + * @param {Float32Array} fourier - fourier data (not used) + */ +Simulation.prototype.addInitial = function(real, transfer, fourier) { + for (var qty of QUANTITIES) { + this.real[qty].push(real); + this.transfer[qty].push(transfer); + this.fourier[qty].push(fourier); + } + this.frameCount++; +} + +/** + * Get the real data of `quantity` at frame `index`. + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} real data + */ +Simulation.prototype.getReal = function(quantity, index) { + return this.real[quantity][index]; +}; + +/** + * Get the transfer function data of `quantity` at frame `index`. + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} transfer function array + */ +Simulation.prototype.getTransfer = function(quantity, index) { + console.assert(index < this.transfer.length); + return this.transfer[quantity][index]; +}; + +/** + * Get the Fourier data of `quantity` at frame `index`. + * @deprecated Unused + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} Fourier data + */ +Simulation.prototype.getFourier = function(quantity, index) { + console.assert(index < this.fourier.length); + return this.fourier[quantity][index]; +}; + +/** + * Get the number of frames in this simulation. + * @return {number} frame count + */ +Simulation.prototype.getFrameCount = function() { + return this.frameCount; +}; + +/************************************************************************************************* +*************************************************************************************************/ + +/** + * A container class which is capable of managing multiple simulations. + * Provides an abstraction over dealing with individual simulations manually. + * + * @constructor + * @param {THREE.Texture} colorMap - A texture containing the initial color map + * + * @property {Simulation[]} simulations - An array of all stored simulations + * @property {number} frame - The currently active frame + * @property {number[]} active - The indices of active simulations + * @property {THREE.Group} planeGroup - The object group of planes in 'regular' mode + * @property {THREE.Group} collisionPlaneGroup - The group containing the meshes used + * for mouse picking + * @property {number} resolution - mesh resolution + * @property {number} PLANE_SIZE - size of planes in world space + * @property {number} PLANE_MARGIN - margin between planes in world units + * @property {number} GRID_DIVISIONS - number of grid divisions + * + * @property {THREE.Texture} colorMap - active color map + * @property {Simulation} targetSimulation - reference to the (unfinished) simulation object that is still receiving data + * + * @property {Float32Array} realInit - initial state for real data, that is the same for all quantities and passed to every newly created instance of {@link Simulation} + * @property {GridLayout} layout - layout manager which calculates the position of the individual planes + * @property {THREE.Group} activeBoxes - group of color outlines implemented as BoxHelpers + * + * @property {bool} singleMode - true if application is in single mode, i.e. all quantities of a _single_ simulation are shown side by side. false otherwise. + * @property {number} singleSimulationIndex - index of simulation that is shown in single mode (if any) + * @property {THREE.Group} singleGroup - object group of planes and grids in single mode + * @property {THREE.Mesh[]} singleMeshes - array of plane meshes in single mode + * @property {THREE.Mesh[]} singleCollisionMeshes - + * array of low resolution plane meshes in single mode used for mouse picking + * @property {THREE.Mesh[]} singleGrids - array of grids in single mode + */ +function SimulationManager(colorMap) { + this.simulations = []; + + this.frame = 0; + + this.active = []; // List of active (i.e. visible) simulations + this.planeGroup = new THREE.Group(); + this.collisionPlaneGroup = new THREE.Group(); + + // Definition of constants + this.resolution = 200; + this.PLANE_SIZE = 500; // Size of Ground Plane in world units + this.PLANE_MARGIN = 50; + this.GRID_DIVISIONS = 20; + + this.colorMap = colorMap; + + // active simulation, i.e. simulation that is (still) receiving data + this.targetSimulation = null; + + this.realInit = null; + this.transferInit = null; + this.fourierInit = null; + + this.layout = new GridLayout(1, this.PLANE_SIZE, this.PLANE_MARGIN); + + // Group of highlight boxes + this.activeBoxes = new THREE.Group(); + + // Single Mode = Showing only 1 simulation, but all 4 quantities at once + this.singleMode = false; + this.singleSimulationIndex = 0; + this.singleGroup = new THREE.Group(); + this.singleMeshes = []; + this.singleCollisionMeshes = []; + this.singleGrids = []; +} + +/** + * Test whether the user hovers over any of the simulations and react accordingly, + * i.e. create a colored outline in the appropriate color. + * If in single mode, also display the quantity of the currently hovered plane + * in the status bar. + * + * @param {THREE.Raycaster} raycaster - raycaster to be used for intersection checking + */ +SimulationManager.prototype.mousePick = function(raycaster) { + var self = this; + this.activeBoxes.children.forEach(function(box) { + self.activeBoxes.remove(box); + }); + $("#displayHover").text(""); + + if (this.singleMode) { + var intersects = raycaster.intersectObjects(this.singleCollisionMeshes); + for (var i = 0; i < intersects.length; i++) { + // Find corresponding simulation + var qtyIdx = intersects[i].object.index; + var box = new THREE.BoxHelper(this.singleCollisionMeshes[qtyIdx]); + box.material.linewidth = 5; + box.material.color = new THREE.Color(colors[qtyIdx % colors.length]); + this.activeBoxes.add(box); + $("#displayHover").html(" | " + QUANTITY_LABELS[qtyIdx]); + } + } else { + var intersects = raycaster.intersectObjects(this.getCollisionGroup().children); + for (var i = 0; i < intersects.length; i++) { + // Find corresponding simulation + var simulationIndex = intersects[i].object.index; + var simulation = simulationManager.getSimulations()[simulationIndex]; + var box = new THREE.BoxHelper(simulation.collisionMesh); + box.material.linewidth = 5; + box.material.color = new THREE.Color(colors[simulationIndex % colors.length]); + this.activeBoxes.add(box); + } + } +}; + +/** + * @return {THREE.Mesh[]} array of active boxes (colored outlines). + */ +SimulationManager.prototype.getActiveBoxes = function() { + return this.activeBoxes; +}; + +/** + * Create a new set of uniforms for the shader material for a new {@link Simulation} instance. + * @private + * @return {Object} uniform object + */ +SimulationManager.prototype.createUniforms = function() { + return { + notFlat: { + type: 'i', + value: parameterGui.config.notFlat + }, + amplitude: { + type: 'f', + value: parameterGui.config.amplitude + }, + cmap: { + type: "t", + value: this.colorMap, + }, + }; +} + +/** + * Set the resolution for future new simulations. + * @parameter {number} resolution - resolution (side length of mesh as number of vertices) + */ +SimulationManager.prototype.setResolution = function(resolution) { + // If updating, also update this.getResolution + this.resolution = resolution; + if (this.singleMode && this.singleGroup.children.length > 0 || + !this.singleMode && this.planeGroup.children.length > 0) { + console.warn("Resolution set to " + resolution + ", but there are existing planes!"); + } +}; + +/** + * @return {number} resolution + */ +SimulationManager.prototype.getResolution = function() { + return this.resolution; +}; + +/** + * Set a new color map. + * + * @param {THREE.Texture} texture - new color map to be set + */ +SimulationManager.prototype.setColorMap = function(texture) { + this.colorMap = texture; + + for (var plane of this.planeGroup.children) { + if (plane.material.uniforms) + plane.material.uniforms.cmap.value = texture; + } + for (var plane of this.singleMeshes) { + plane.material.uniforms.cmap.value = texture; + } +}; + +/** + * Create a new material for a {@link Simulation} instance. + * @private + * + * @return {THREE.ShaderMaterial} ShaderMaterial for simulation + */ +SimulationManager.prototype.createMeshMaterial = function() { + var uniforms = this.createUniforms(); + return new THREE.ShaderMaterial({ + uniforms: uniforms, + vertexShader: document.getElementById('vertexshader').textContent, + fragmentShader: document.getElementById('fragmentshader').textContent, + }); +}; + +/** + * Create a new simulation and initialize it with the stored initial state. + */ +SimulationManager.prototype.createSimulation = function() { + var sim = new Simulation(); + this.simulations.push(sim); + this.targetSimulation = sim; + sim.addInitial(this.realInit, this.transferInit, this.fourierInit); + this.activateSimulation(sim); +}; + + +/** + * @return {Simulation} the current target simulation + */ +SimulationManager.prototype.getTarget = function() { + return this.targetSimulation; +}; + +/** + * @return {bool} whether or not there exists a target simulation. + */ +SimulationManager.prototype.hasTarget = function() { + return this.targetSimulation !== null; +}; + +/** + * Finalize target (should be called once all data for a simulation has been received). + */ +SimulationManager.prototype.finalizeTarget = function() { + this.targetSimulation = null; +}; + +/** + * Destroys the current target. This should be called in case an error occurs during + * the data transfer from the server. + */ +SimulationManager.prototype.destroyTarget = function() { + this.delete(this.simulations.indexOf(this.targetSimulation)); + this.targetSimulation = null; +}; + +/** + * Update the grids after the user toggles grid visibility in the control panel. + */ +SimulationManager.prototype.updateGrids = function() { + var self = this; + if (this.singleMode) { + this.singleGrids.forEach(function(grid) { + grid.visible = parameterGui.config.showGrid; + }); + } else { + this.active.map(function(idx) { return self.simulations[idx]; }).forEach(function(sim) { + sim.grid.visible = parameterGui.config.showGrid; + }); + } +}; + +/** + * Enter single mode for the given simulation index, i.e. show all quantities + * for that simulation side by side. + * + * @param {number} simulationIdx - index of simulation to view in single mode + */ +SimulationManager.prototype.enableSingleMode = function(simulationIdx) { + this.singleMode = true; + this.singleSimulationIndex = simulationIdx; + + var self = this; + QUANTITIES.forEach(function(qty, qtyIdx) { + var plane = self.createPlane(); + var collisionPlane = self.createCollisionPlane(qtyIdx); + var grid = new THREE.GridHelper(self.PLANE_SIZE, self.GRID_DIVISIONS); + self.singleMeshes.push(plane); + self.singleCollisionMeshes.push(collisionPlane); + self.singleGrids.push(grid); + + self.singleGroup.add(plane); + self.singleGroup.add(grid); + }); + + this.refresh(); + this.loadFrame("d_g", this.frame); // Quantity is actually unused here and merely serves as a dummy +}; + +/** + * Leave single mode. + */ +SimulationManager.prototype.disableSingleMode = function() { + this.singleMode = false; + + for (var i = 0; i < this.singleGroup.children.length; ++i) { + this.singleGroup.remove(this.singleGroup.children[i]); + } + + + for (var i = 0; i < QUANTITIES.length; ++i) { + this.singleMeshes[i].geometry.dispose(); + this.singleCollisionMeshes[i].geometry.dispose(); + this.singleGrids[i].geometry.dispose(); + } + + this.singleMeshes = []; + this.singleCollisionMeshes = []; + this.singleGrids = []; + + this.refresh(); +}; + +/** + * @return {THREE.Group} {@link SimulationManager#singleGroup} + */ +SimulationManager.prototype.getSingleGroup = function() { + return this.singleGroup; +}; + +/** + * Activate the simulation for the given index. + * + * @param {number} index - index of the simulation to activate + */ +SimulationManager.prototype.activate = function(index) { + console.log("Activating simulation #" + index); + + this.active.push(index); + + this.simulations[index].mesh = this.createPlane(); + this.simulations[index].collisionMesh = this.createCollisionPlane(index); + this.simulations[index].grid = new THREE.GridHelper(this.PLANE_SIZE, this.GRID_DIVISIONS); + this.simulations[index].grid.visible = parameterGui.config.showGrid; + + this.planeGroup.add(this.simulations[index].mesh); + this.planeGroup.add(this.simulations[index].grid); + this.collisionPlaneGroup.add(this.simulations[index].collisionMesh); + + this.refresh(); +}; + +/** + * Activate the given simulation. + * + * @param {Simulation} sim - simulation to activate + */ +SimulationManager.prototype.activateSimulation = function(sim) { + this.activate(this.simulations.indexOf(sim)); +}; + +/** + * Deactivate the simulation for the given index. + * + * @param {number} index - index of simulation to deactivate + */ +SimulationManager.prototype.deactivate = function(index) { + if (!this.active.includes(index)) { + return; + } + this.active.splice(this.active.indexOf(index), 1); + var simulation = this.simulations[index]; + + // Remove meshes from rendering groups + this.planeGroup.remove(simulation.mesh); + this.planeGroup.remove(simulation.grid); + this.collisionPlaneGroup.remove(simulation.collisionMesh); + + // Dispose of mesh geometry + if (simulation.mesh) { + simulation.mesh.geometry.dispose(); + simulation.mesh.material.dispose(); + simulation.mesh = null; + } + if (simulation.collisionMesh) { + simulation.collisionMesh.geometry.dispose(); + simulation.collisionMesh = null; + } + if (simulation.grid) { + simulation.grid.geometry.dispose(); + simulation.grid = null; + } + + this.refresh(); +}; + +/** + * Deactivate given simulation. + * + * @param {Simulation} sim - simulation to deactivate + */ +SimulationManager.prototype.deactivateSimulation = function(sim) { + this.deactivate(this.simulations.indexOf(sim)); +}; + +/** + * Delete all simulations. + */ +SimulationManager.prototype.deleteAll = function() { + // for (var activeIdx of this.active) { + // this.deactivate(activeIdx); + // } + + // Evaluate count outside for loop since loop body modifies this.simulations + var count = this.simulations.length; + for (var i = 0; i < count; ++i) { + // Always delete simulation at index #0, since by deleting simulation #0, + // what was previously simulation #1 now becomes #0. + this.delete(0); + } + + this.active = []; + this.simulations = []; + console.assert(this.planeGroup.children.length == 0); + this.refresh(); +}; + +/** + * Delete a single simulation. + * + * @param {number} index of simulation to delete. + */ +SimulationManager.prototype.delete = function(index) { + if (index >= 0 && index < this.simulations.length) { + this.deactivate(index); + + // Since a simulation was removed from the list, + // the indices of this.active aren't accurate anymore. + // Every active index > `index` (i.e. the index of the simulation + // to delete) needs to be shifted down by one so that they continue + // to refer to the correct simulation. + this.active = this.active.map(function(idx) { + return (idx > index) ? idx - 1 : idx; + }); + + // After this, no more reference the simulation should exist + this.simulations.splice(index, 1); + + // Update simulationIndex on collision meshes + this.simulations.forEach(function(simulation, index) { + if (simulation.collisionMesh) { + simulation.collisionMesh.index = index; + } + }); + } +}; + +/** + * Needs to be called after simulations have been activated/deactivated + * to re-layout the remaining (activated) planes. + */ +SimulationManager.prototype.refresh = function() { + if (this.singleMode) { + this.layout.count = QUANTITIES.length; + this.layout.recalculate(); + + for (var i = 0; i < QUANTITIES.length; ++i) { + var position = this.layout.getWorldPosition(i); + this.singleMeshes[i].position.x = position[0]; + this.singleMeshes[i].position.z = position[1]; + this.singleCollisionMeshes[i].position.x = position[0]; + this.singleCollisionMeshes[i].position.z = position[1]; + this.singleGrids[i].position.x = position[0]; + this.singleGrids[i].position.z = position[1]; + } + } else { + this.layout.count = this.active.length; + this.layout.recalculate(); + + var self = this; + var objects = ["mesh", "collisionMesh", "grid"]; + this.active.forEach(function(active, gridIdx) { + var position = self.layout.getWorldPosition(gridIdx); + var x = position[0]; + var y = position[1]; + + var sim = self.simulations[active]; + objects.forEach(function(obj) { + sim[obj].position.x = x; + sim[obj].position.z = y; + }); + }); + } +}; + +/** + * Create a new mesh for a simulation. + * @private + * @return {THREE.Mesh} mesh + */ +SimulationManager.prototype.createPlane = function() { + + var bufferGeometry = new THREE.PlaneBufferGeometry( + this.PLANE_SIZE, this.PLANE_SIZE, + this.resolution - 1, this.resolution - 1 + ); + var result = new THREE.Mesh(bufferGeometry, this.createMeshMaterial()); + + var displacementBuffer = new Float32Array(this.resolution * this.resolution); + var displacementAttribute = new THREE.BufferAttribute(displacementBuffer, 1); + result.geometry.addAttribute("displacement", displacementAttribute); + result.rotation.x = -Math.PI/2; + + return result; +}; + +/** + * Create a plane for mouse hover checking for the simulation at given index. + * + * @param {number} index - index of simulation + */ +SimulationManager.prototype.createCollisionPlane = function(index) { + // index is required, as it is stored as mesh attribute to allow the + // mouse picker to identify the simulation that is associated with the collision mesh. + var bufferGeometry = new THREE.PlaneBufferGeometry(this.PLANE_SIZE, this.PLANE_SIZE); + var result = new THREE.Mesh(bufferGeometry); + result.rotation.x = -Math.PI/2; + // Apply transformation such that ray caster detects plane in correct orientation + // even if it is not added to the scene + result.updateMatrix(); + result.geometry.applyMatrix(result.matrix); + result.rotation.set(0, 0, 0); + result.updateMatrix(); + result.index = index; + return result; +}; + +/** + * @return {Simulation[]} {@link SimulationManager#simulations} + */ +SimulationManager.prototype.getSimulations = function() { + return this.simulations; +}; + +/** + * @return {number[]} {@link SimulationManager#active} + */ +SimulationManager.prototype.getActive = function() { + return this.active; +}; + +/** + * Return a list of active simulations as tuples, each of which consists of the + * index of the simulation and the simulation itself. + * @return {Object[]} + */ +SimulationManager.prototype.getActiveSimulations = function() { + var self = this; + return this.active.map(function(idx) { return [idx, self.simulations[idx]]; }); +}; + +/** + * @callback SimulationManager~activeCallback + * @param {number} activeIndex + * @param {Simulation} activeSimulation + */ + +/** + * Iterate over active simulations. + * + * @param {SimulationManager~activeCallback} - a function called for each active simulation + */ +SimulationManager.prototype.forEachActive = function(callback) { + var self = this; + this.active.forEach(function(activeIndex) { + callback(activeIndex, self.simulations[activeIndex]); + }); +} + +/** + * Check whether a given simulation specified by index is active. + * + * @param {number} index - index of simulation + */ +SimulationManager.prototype.isActive = function(index) { + return this.active.includes(index); +}; + +/** + * Update meshes to show the given frame for the given quantity. + * + * @param {string} quantity - quantity to display + * @param {number} frame - frame to display + */ +SimulationManager.prototype.loadFrame = function(quantity, frame) { + this.frame = frame; + + if (this.singleMode) { + this.loadSingleFrame(frame); + } else { + var self = this; + this.active.forEach(function(index) { + self.loadFrameForIndex(quantity, index, frame); + }); + } +}; + +/** + * Similar to {@link SimulationManager#loadFrame}, but for single mode (i.e. + * all quantities). + * + * @param {number} frame - frame to load + */ +SimulationManager.prototype.loadSingleFrame = function(frame) { + var self = this; + QUANTITIES.forEach(function(qty, qtyIdx) { + var disp = self.singleMeshes[qtyIdx].geometry.attributes.displacement; + disp.array = self.simulations[self.singleSimulationIndex].getReal(qty, frame); + disp.needsUpdate = true; + }); +}; + +/** + * Load the given frame for the given quantity for the given simulation index. + * + * @private + * @param {string} quantity - quantity + * @param {number} index - simulation index + * @param {number} frame - frame + */ +SimulationManager.prototype.loadFrameForIndex = function(quantity, index, frame) { + var simulation = this.simulations[index]; + var plane = simulation.mesh; + + // Update plane + var displacementArray = plane.geometry.attributes.displacement.array; + var newArray = simulation.getReal(quantity, frame); + console.assert(newArray.length === plane.geometry.attributes.displacement.array.length); + plane.geometry.attributes.displacement.array = newArray; + plane.geometry.attributes.displacement.needsUpdate = true; +}; + +/** + * Check whether there already exists a simulation for the given set of cosmological parameters. + * + * @param {Object} cosmoParams - object of cosmological parameters + * @return {bool} + */ +SimulationManager.prototype.wasAlreadySimulated = function(cosmoParams) { + for (var simulation of this.simulations) { + // Require that cosmo params have already been set. + // This is not the case for the first simulation. + if (simulation.params) { + var sProps = Object.getOwnPropertyNames(simulation.params); + var nProps = Object.getOwnPropertyNames(cosmoParams); + + var lengthMatch = sProps.length == nProps.length; + var propMatch = true; + + for (var i = 0; i < sProps.length; i++) { + var pName = sProps[i]; + if (simulation.params[pName] !== cosmoParams[pName]) { + propMatch = false; + break; + } + } + + if (lengthMatch && propMatch) { + return true; + } + } + } + return false; +}; + +/** + * Get number of frames. + * @return {number} frame count + */ +SimulationManager.prototype.getFrameCount = function() { + if (this.simulations.length > 0) + return this.simulations[0].getFrameCount(); + else + return 0; +}; + +/** + * @return {THREE.Group} {@link SimulationManager#planeGroup} + */ +SimulationManager.prototype.getGroup = function() { + return this.planeGroup; +}; + +/** + * @return {THREE.Group} {@link SimulationManager#collisionPlaneGroup} + */ +SimulationManager.prototype.getCollisionGroup = function() { + return this.collisionPlaneGroup; +}; + +/** + * Set a uniform value for all materials. + * + * @param {string} key - uniform key + * @param {Object} value - value for key + */ +SimulationManager.prototype.setUniform = function(key, value) { + var self = this; + if (this.singleMode) { + this.singleMeshes.forEach(function(mesh) { + mesh.material.uniforms[key].value = value; + }); + } else { + this.active.forEach(function(idx) { + var simulation = self.simulations[idx]; + if (simulation.mesh) { + simulation.mesh.material.uniforms[key].value = value; + } + }); + } +}; + +/** + * Get transfer function arrays of all simulations for given quantity and frame. + * + * @param {string} quantity + * @param {number} frame + * + * @return {Float32Array[]} array of transfer function data for all simulations + */ +SimulationManager.prototype.getTransferData = function(quantity, frame) { + var self = this; + return this.active.map(function(idx) { return self.simulations[idx].transfer[quantity][frame]; }); +}; + +/** + * Get transfer function data for given quantity and frame of active single-mode simulation. + * + * @param {string} quantity + * @param {number} frame + * + * @return {Float32Array} + */ +SimulationManager.prototype.getTransferDataOfSingle = function(quantity, frame) { + var self = this; + return self.simulations[self.singleSimulationIndex].transfer[quantity][frame]; +}; + +/** + * Get index and simulation itself of currently active single mode simulation. + * + * @return {Object[]} + */ +SimulationManager.prototype.getSingleSimulation = function() { + return [this.singleSimulationIndex, this.simulations[this.singleSimulationIndex]]; +}; diff --git a/class/RealSpaceInterface/static/js/simulationList.js b/class/RealSpaceInterface/static/js/simulationList.js new file mode 100644 index 00000000..3381a5c2 --- /dev/null +++ b/class/RealSpaceInterface/static/js/simulationList.js @@ -0,0 +1,337 @@ +/** + * Number of decimal digits to round values to in the simulation list dialog. + * @const + * @type {number} + */ +const SIMU_LIST_ROUNDING = 3; + +/** + * Will be called when a simulation is deleted. + * + * @callback SimuTable~deleteCallback + * @param {number} index - index of simulation to be deleted + */ + +/** + * Will be called when a simulation is activated. + * + * @callback SimuTable~activateCallback + * @param {number} index - index of simulation to be activated + */ + +/** + * Will be called when a simulation is deactivated. + * @callback SimuTable~deactivateCallback + * @param {number} index - index of simulation to be deactivated + */ + +/** + * Will be called when a .gif needs to be created for a simulation. + * @callback SimuTable~gifCallback + * @param {number} index - index of simulation to create a .gif of + */ + +/** + * Will be called when an image needs to be created for a simulation at the current frame. + * @callback SimuTable~imageCallback + * @param {number} index - index of simulation to create an image of + */ + +/** + * Will be called when user requests simulation to be displayed in 'single' mode + * @callback SimuTable~singleModeCallback + * @param {number} index - index of simulation to display in single mode + */ + +/** + * Will be called when user requests camera to be focused on a simulation. + * @callback SimuTable~focusCameraCallback + * @param {number} index - index of simulation to focus in view + */ + +/** + * Will be called when user requests to load parameters of simulation + * into control panel. + * @callback SimuTable~loadParamCallback + * @param {number} index - index of simulation of which to load parameters + */ + +/** + * + * Implementation of a list dialog which displays previously run simulations + * along with their respective set of cosmological parameters. + * Exposes additional functionality such as hiding and showing individual + * simulations, entering 'single' mode, in which only a single simulation + * (but all quantities of that simulation) are shown, creating a .gif and + * deleting a simulation from memory. + * The passed callbacks are bound to the appropriate buttons and actions. + * + * @constructor + * + * @param {SimuTable~deleteCallback} deleteCallback + * @param {SimuTable~activateCallback} activateCallback + * @param {SimuTable~deactivateCallback} deactivateCallback + * @param {SimuTable~gifCallback} gifCallback + * @param {SimuTable~imageCallback} imageCallback + * @param {SimuTable~singleModeCallback} singleModeCallback + * @param {SimuTable~focusCameraCallback} focusCameraCallback + * @param {SimuTable~loadParamCallback} loadParamCallback + */ +function SimuTable(deleteCallback, activateCallback, deactivateCallback, + gifCallback, imageCallback, singleModeCallback, focusCameraCallback, + loadParamCallback) { + this.deleteCallback = deleteCallback; + this.activateCallback = activateCallback; + this.deactivateCallback = deactivateCallback; + this.gifCallback = gifCallback; + this.imageCallback = imageCallback; + this.singleModeCallback = singleModeCallback; + this.focusCameraCallback = focusCameraCallback; + this.loadParamCallback = loadParamCallback; + + this.table = document.getElementById("simulationTable"); + this.tableHead = document.getElementById("simulationTableHead"); + this.tableBody = document.getElementById("simulationTableBody"); + this.rowTemplate = document.getElementById("simulationTableRowTemplate"); + + this.activeSet = 0; + + this.displayParams = ["omega_b", "omega_m", "Omega_k", "N_ur", "w0_fld", "wa_fld"]; + this.displayLabels = ["ωb", "ωm", "Ωk", + "Nur", "w0,fld", "wa,fld"]; +} + +/** + * Creates the table header for the modal. + * Reads table column headings from {@link COSMOLOGICAL_PARAMETER_LIST}. + * + */ +SimuTable.prototype.createHeader = function() { + var headRow = document.createElement("tr"); + + var activeTh = document.createElement("th"); + activeTh.textContent = "Active"; + headRow.appendChild(activeTh); + + var idxTh = document.createElement("th"); + idxTh.textContent = "#"; + idxTh.setAttribute("scope", "col"); + + headRow.appendChild(idxTh); + + for (var entry of COSMOLOGICAL_PARAMETER_LIST) { + var th = document.createElement("th"); + th.innerHTML = entry.displayName; + headRow.appendChild(th); + } + + var actionsTh = document.createElement("th"); + actionsTh.textContent = "Actions"; + + var colorTh = document.createElement("th"); + colorTh.textContent = "Color"; + + headRow.appendChild(actionsTh); + headRow.appendChild(colorTh); + + this.tableHead.appendChild(headRow); +} + +/** + * Given a list of simulations and a list of active simulations, + * populates the dialog with their data. + * + * @param {Simulation[]} simulations - list of all simulations + * @param {number[]} activeList - array of indices of active simulations. + * required to determine whether to show + * individual simulations as active or + * inactive. + */ +SimuTable.prototype.populate = function(simulations, activeList) { + var self = this; + // Data + simulations.forEach(function(sim, i) { + var isActive = activeList.includes(i); + + var sim = simulations[i]; + var row = document.createElement("tr"); + row.setAttribute("scope", "row"); + row.classList.toggle("table-primary", isActive); + + // Active checkbox + var checkbox = document.createElement("input"); + checkbox.setAttribute("type", "checkbox"); + checkbox.classList.add("visible-checkbox"); + + checkbox.onclick = function() { + row.classList.toggle("table-primary"); + if (checkbox.checked) { + self.activateCallback(i); + } else { + self.deactivateCallback(i); + } + }; + var checkboxTd = document.createElement("td"); + checkbox.checked = isActive; + checkboxTd.appendChild(checkbox); + row.appendChild(checkboxTd); + + // Index + var idxCol = document.createElement("td"); + idxCol.textContent = i; + row.appendChild(idxCol); + + for (var entry of COSMOLOGICAL_PARAMETER_LIST) { + var td = document.createElement("td"); + td.textContent = round(sim.params[entry.name], 3); + row.appendChild(td); + } + + /* BUTTONS */ + var buttonGroup = document.createElement("div"); + buttonGroup.classList.add("btn-group", "btn-group-sm"); + + // Expand in Single Mode Button + var singleModeButton = document.createElement("button"); + singleModeButton.classList.add("btn", "btn-primary", "simulationTableSingleModeBtn"); + var singleIconSpan = document.createElement("span"); + singleIconSpan.classList.add("oi", "oi-layers"); + singleModeButton.appendChild(singleIconSpan); + singleModeButton.onclick = function() { + self.singleModeCallback(i); + }; + singleModeButton.setAttribute("data-toggle", "tooltip"); + singleModeButton.setAttribute("data-placement", "top"); + singleModeButton.setAttribute("title", "Show all quantities side by side"); + buttonGroup.appendChild(singleModeButton); + + // Image Button + var imgButton = document.createElement("button"); + imgButton.classList.add("btn", "btn-success", "simulationTableImgBtn"); + var imgIconSpan = document.createElement("span"); + imgIconSpan.classList.add("oi", "oi-image"); + imgButton.appendChild(imgIconSpan); + imgButton.onclick = function() { + self.imageCallback(i); + }; + imgButton.setAttribute("data-toggle", "tooltip"); + imgButton.setAttribute("data-placement", "top"); + imgButton.setAttribute("title", "Take Snapshot"); + buttonGroup.appendChild(imgButton); + + // GIF Button + var gifButton = document.createElement("button"); + gifButton.classList.add("btn", "btn-success", "simulationTableGifBtn"); + var gifIconSpan = document.createElement("span"); + gifIconSpan.classList.add("oi", "oi-video"); + gifButton.appendChild(gifIconSpan); + gifButton.onclick = function() { + self.gifCallback(i); + }; + gifButton.setAttribute("data-toggle", "tooltip"); + gifButton.setAttribute("data-placement", "top"); + gifButton.setAttribute("title", "Create .gif"); + buttonGroup.appendChild(gifButton); + + // Load Parameters Button + var loadParamButton = document.createElement("button"); + loadParamButton.classList.add("btn", "btn-secondary", + "simulationTableLoadParamBtn"); + var paramIconSpan = document.createElement("span"); + paramIconSpan.classList.add("oi", "oi-list-rich"); + loadParamButton.appendChild(paramIconSpan); + loadParamButton.onclick = function() { + self.loadParamCallback(i); + }; + loadParamButton.setAttribute("data-toggle", "tooltip"); + loadParamButton.setAttribute("data-placement", "top"); + loadParamButton.setAttribute("title", "Load Parameters in Control Panel"); + buttonGroup.appendChild(loadParamButton); + + // Focus Camera Button + var focusCameraButton = document.createElement("button"); + focusCameraButton.classList.add("btn", "btn-secondary", "simulationTableFocusCameraBtn"); + var focusIconSpan = document.createElement("span"); + focusIconSpan.classList.add("oi", "oi-aperture"); + focusCameraButton.appendChild(focusIconSpan); + focusCameraButton.onclick = function() { + self.focusCameraCallback(i); + }; + focusCameraButton.setAttribute("data-toggle", "tooltip"); + focusCameraButton.setAttribute("data-placement", "top"); + focusCameraButton.setAttribute("title", "Focus in View"); + buttonGroup.appendChild(focusCameraButton); + + // Delete Button + var deleteButton = document.createElement("button"); + deleteButton.classList.add("btn", "btn-danger", "simulationTableDelBtn"); + var deleteIconSpan = document.createElement("span"); + deleteIconSpan.classList.add("oi", "oi-x"); + deleteButton.appendChild(deleteIconSpan); + deleteButton.onclick = function() { + self.deleteCallback(i); + }; + deleteButton.setAttribute("data-toggle", "tooltip"); + deleteButton.setAttribute("data-placement", "top"); + deleteButton.setAttribute("title", "Delete (cannot be undone!)"); + buttonGroup.appendChild(deleteButton); + + + var buttonTd = document.createElement("td"); + buttonTd.appendChild(buttonGroup); + row.appendChild(buttonTd); + + + // Color + var colorCircleTd = document.createElement("td"); + colorCircleTd.classList.add("color-circle-container"); + var colorCircle = document.createElement("div"); + colorCircleTd.appendChild(colorCircle); + colorCircle.classList.add("color-circle"); + colorCircle.style.backgroundColor = colors[i % colors.length]; + + row.appendChild(colorCircleTd); + + + self.tableBody.appendChild(row); + }); + + $(function () { + $('[data-toggle="tooltip"]').tooltip() + }); + +}; + +/** + * Activate a given simulation. + * + * @param {number} idx - index of simulation to active + * @deprecated + * @ignore + */ +SimuTable.prototype.setActive = function(idx) { + if (this.activeSet >= 0) { + this.tableBody.children[this.activeSet].classList.remove("table-primary"); + this.activeSet = idx; + this.tableBody.children[this.activeSet].classList.add("table-primary"); + } +} + +/** + * Clears all rows. + */ +SimuTable.prototype.clear = function() { + while (this.tableBody.firstChild) { + this.tableBody.removeChild(this.tableBody.firstChild); + } +} + +/** + * Refreshes (i.e. clears and repopulates). + * @deprecated + * @ignore + */ +SimuTable.prototype.refresh = function() { + this.clear(); + this.populate(); +} diff --git a/class/RealSpaceInterface/static/js/sockjs.min.js b/class/RealSpaceInterface/static/js/sockjs.min.js new file mode 100644 index 00000000..19b2b7eb --- /dev/null +++ b/class/RealSpaceInterface/static/js/sockjs.min.js @@ -0,0 +1,28 @@ +/* SockJS client, version 0.3.4, http://sockjs.org, MIT License + +Copyright (c) 2011-2012 VMware, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// JSON2 by Douglas Crockford (minified). +var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c1?this._listeners[a]=d.slice(0,e).concat(d.slice(e+1)):delete this._listeners[a];return}return},d.prototype.dispatchEvent=function(a){var b=a.type,c=Array.prototype.slice.call(arguments,0);this["on"+b]&&this["on"+b].apply(this,c);if(this._listeners&&b in this._listeners)for(var d=0;d=3e3&&a<=4999},c.countRTO=function(a){var b;return a>100?b=3*a:b=a+200,b},c.log=function(){b.console&&console.log&&console.log.apply&&console.log.apply(console,arguments)},c.bind=function(a,b){return a.bind?a.bind(b):function(){return a.apply(b,arguments)}},c.flatUrl=function(a){return a.indexOf("?")===-1&&a.indexOf("#")===-1},c.amendUrl=function(b){var d=a.location;if(!b)throw new Error("Wrong url for SockJS");if(!c.flatUrl(b))throw new Error("Only basic urls are supported in SockJS");return b.indexOf("//")===0&&(b=d.protocol+b),b.indexOf("/")===0&&(b=d.protocol+"//"+d.host+b),b=b.replace(/[/]+$/,""),b},c.arrIndexOf=function(a,b){for(var c=0;c=0},c.delay=function(a,b){return typeof a=="function"&&(b=a,a=0),setTimeout(b,a)};var i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,j={"\0":"\\u0000","\x01":"\\u0001","\x02":"\\u0002","\x03":"\\u0003","\x04":"\\u0004","\x05":"\\u0005","\x06":"\\u0006","\x07":"\\u0007","\b":"\\b","\t":"\\t","\n":"\\n","\x0b":"\\u000b","\f":"\\f","\r":"\\r","\x0e":"\\u000e","\x0f":"\\u000f","\x10":"\\u0010","\x11":"\\u0011","\x12":"\\u0012","\x13":"\\u0013","\x14":"\\u0014","\x15":"\\u0015","\x16":"\\u0016","\x17":"\\u0017","\x18":"\\u0018","\x19":"\\u0019","\x1a":"\\u001a","\x1b":"\\u001b","\x1c":"\\u001c","\x1d":"\\u001d","\x1e":"\\u001e","\x1f":"\\u001f",'"':'\\"',"\\":"\\\\","\x7f":"\\u007f","\x80":"\\u0080","\x81":"\\u0081","\x82":"\\u0082","\x83":"\\u0083","\x84":"\\u0084","\x85":"\\u0085","\x86":"\\u0086","\x87":"\\u0087","\x88":"\\u0088","\x89":"\\u0089","\x8a":"\\u008a","\x8b":"\\u008b","\x8c":"\\u008c","\x8d":"\\u008d","\x8e":"\\u008e","\x8f":"\\u008f","\x90":"\\u0090","\x91":"\\u0091","\x92":"\\u0092","\x93":"\\u0093","\x94":"\\u0094","\x95":"\\u0095","\x96":"\\u0096","\x97":"\\u0097","\x98":"\\u0098","\x99":"\\u0099","\x9a":"\\u009a","\x9b":"\\u009b","\x9c":"\\u009c","\x9d":"\\u009d","\x9e":"\\u009e","\x9f":"\\u009f","\xad":"\\u00ad","\u0600":"\\u0600","\u0601":"\\u0601","\u0602":"\\u0602","\u0603":"\\u0603","\u0604":"\\u0604","\u070f":"\\u070f","\u17b4":"\\u17b4","\u17b5":"\\u17b5","\u200c":"\\u200c","\u200d":"\\u200d","\u200e":"\\u200e","\u200f":"\\u200f","\u2028":"\\u2028","\u2029":"\\u2029","\u202a":"\\u202a","\u202b":"\\u202b","\u202c":"\\u202c","\u202d":"\\u202d","\u202e":"\\u202e","\u202f":"\\u202f","\u2060":"\\u2060","\u2061":"\\u2061","\u2062":"\\u2062","\u2063":"\\u2063","\u2064":"\\u2064","\u2065":"\\u2065","\u2066":"\\u2066","\u2067":"\\u2067","\u2068":"\\u2068","\u2069":"\\u2069","\u206a":"\\u206a","\u206b":"\\u206b","\u206c":"\\u206c","\u206d":"\\u206d","\u206e":"\\u206e","\u206f":"\\u206f","\ufeff":"\\ufeff","\ufff0":"\\ufff0","\ufff1":"\\ufff1","\ufff2":"\\ufff2","\ufff3":"\\ufff3","\ufff4":"\\ufff4","\ufff5":"\\ufff5","\ufff6":"\\ufff6","\ufff7":"\\ufff7","\ufff8":"\\ufff8","\ufff9":"\\ufff9","\ufffa":"\\ufffa","\ufffb":"\\ufffb","\ufffc":"\\ufffc","\ufffd":"\\ufffd","\ufffe":"\\ufffe","\uffff":"\\uffff"},k=/[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g,l,m=JSON&&JSON.stringify||function(a){return i.lastIndex=0,i.test(a)&&(a=a.replace(i,function(a){return j[a]})),'"'+a+'"'},n=function(a){var b,c={},d=[];for(b=0;b<65536;b++)d.push(String.fromCharCode(b));return a.lastIndex=0,d.join("").replace(a,function(a){return c[a]="\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4),""}),a.lastIndex=0,c};c.quote=function(a){var b=m(a);return k.lastIndex=0,k.test(b)?(l||(l=n(k)),b.replace(k,function(a){return l[a]})):b};var o=["websocket","xdr-streaming","xhr-streaming","iframe-eventsource","iframe-htmlfile","xdr-polling","xhr-polling","iframe-xhr-polling","jsonp-polling"];c.probeProtocols=function(){var a={};for(var b=0;b0&&h(a)};return c.websocket!==!1&&h(["websocket"]),d["xhr-streaming"]&&!c.null_origin?e.push("xhr-streaming"):d["xdr-streaming"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-streaming"):h(["iframe-eventsource","iframe-htmlfile"]),d["xhr-polling"]&&!c.null_origin?e.push("xhr-polling"):d["xdr-polling"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-polling"):h(["iframe-xhr-polling","jsonp-polling"]),e};var p="_sockjs_global";c.createHook=function(){var a="a"+c.random_string(8);if(!(p in b)){var d={};b[p]=function(a){return a in d||(d[a]={id:a,del:function(){delete d[a]}}),d[a]}}return b[p](a)},c.attachMessage=function(a){c.attachEvent("message",a)},c.attachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.addEventListener(c,d,!1):(a.attachEvent("on"+c,d),b.attachEvent("on"+c,d))},c.detachMessage=function(a){c.detachEvent("message",a)},c.detachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.removeEventListener(c,d,!1):(a.detachEvent("on"+c,d),b.detachEvent("on"+c,d))};var q={},r=!1,s=function(){for(var a in q)q[a](),delete q[a]},t=function(){if(r)return;r=!0,s()};c.attachEvent("unload",t),c.unload_add=function(a){var b=c.random_string(8);return q[b]=a,r&&c.delay(s),b},c.unload_del=function(a){a in q&&delete q[a]},c.createIframe=function(b,d){var e=a.createElement("iframe"),f,g,h=function(){clearTimeout(f);try{e.onload=null}catch(a){}e.onerror=null},i=function(){e&&(h(),setTimeout(function(){e&&e.parentNode.removeChild(e),e=null},0),c.unload_del(g))},j=function(a){e&&(i(),d(a))},k=function(a,b){try{e&&e.contentWindow&&e.contentWindow.postMessage(a,b)}catch(c){}};return e.src=b,e.style.display="none",e.style.position="absolute",e.onerror=function(){j("onerror")},e.onload=function(){clearTimeout(f),f=setTimeout(function(){j("onload timeout")},2e3)},a.body.appendChild(e),f=setTimeout(function(){j("timeout")},15e3),g=c.unload_add(i),{post:k,cleanup:i,loaded:h}},c.createHtmlfile=function(a,d){var e=new ActiveXObject("htmlfile"),f,g,i,j=function(){clearTimeout(f)},k=function(){e&&(j(),c.unload_del(g),i.parentNode.removeChild(i),i=e=null,CollectGarbage())},l=function(a){e&&(k(),d(a))},m=function(a,b){try{i&&i.contentWindow&&i.contentWindow.postMessage(a,b)}catch(c){}};e.open(),e.write(' + + + + + + + + + + + + + + + + + + + + + + + + + {% block threejs %} + {% end %} + + + + + + + + + + + + {% include "SimulationList.html" %} + {% include "ProgressModal.html" %} + {% include "AlreadySimulatedModal.html" %} + {% include "GifExportModal.html" %} + {% include "ImageExportModal.html" %} + {% include "ExceptionModal.html" %} + {% include "RedshiftModal.html" %} + + {% block body %} + {% end %} + + diff --git a/class/RealSpaceInterface/templates/ImageExportModal.html b/class/RealSpaceInterface/templates/ImageExportModal.html new file mode 100644 index 00000000..6ffd11af --- /dev/null +++ b/class/RealSpaceInterface/templates/ImageExportModal.html @@ -0,0 +1,49 @@ + + diff --git a/class/RealSpaceInterface/templates/ProgressModal.html b/class/RealSpaceInterface/templates/ProgressModal.html new file mode 100644 index 00000000..8d7a6ac3 --- /dev/null +++ b/class/RealSpaceInterface/templates/ProgressModal.html @@ -0,0 +1,28 @@ + + + diff --git a/class/RealSpaceInterface/templates/RSI.html b/class/RealSpaceInterface/templates/RSI.html new file mode 100644 index 00000000..bc0da323 --- /dev/null +++ b/class/RealSpaceInterface/templates/RSI.html @@ -0,0 +1,180 @@ +{% extends "Header.html" %} + + {% block body %} + +
+ +
+
+
+
+
+
+ +
+ +
+
+
+ + + + +
+
+ + +
+ Division Size: N/A +
+
+ +
+
+
+
+
+ + About + + + + + {% end %} + + {% block threejs %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% end %} diff --git a/class/RealSpaceInterface/templates/RedshiftModal.html b/class/RealSpaceInterface/templates/RedshiftModal.html new file mode 100644 index 00000000..71b74e51 --- /dev/null +++ b/class/RealSpaceInterface/templates/RedshiftModal.html @@ -0,0 +1,57 @@ + + + + + diff --git a/class/RealSpaceInterface/templates/SimulationList.html b/class/RealSpaceInterface/templates/SimulationList.html new file mode 100644 index 00000000..b3db40c0 --- /dev/null +++ b/class/RealSpaceInterface/templates/SimulationList.html @@ -0,0 +1,19 @@ + + diff --git a/class/RealSpaceInterface/templates/index.html b/class/RealSpaceInterface/templates/index.html new file mode 100644 index 00000000..29a0aadd --- /dev/null +++ b/class/RealSpaceInterface/templates/index.html @@ -0,0 +1,14 @@ + + + + three.js webgl - geometry - dynamic + + + + + +
+ + + + diff --git a/class/RealSpaceInterface/tornadoserver.py b/class/RealSpaceInterface/tornadoserver.py new file mode 100644 index 00000000..04d5d937 --- /dev/null +++ b/class/RealSpaceInterface/tornadoserver.py @@ -0,0 +1,248 @@ +from Calc2D.CalculationClass import Calculation + +import time +import numpy as np +from concurrent.futures import ThreadPoolExecutor +from tornado.ioloop import IOLoop +from tornado import gen +import tornado.web +import tornado.websocket +import os +import os.path +import json +import unicodedata +import logging +import base64 +import traceback +import sys + +import config + +pool = ThreadPoolExecutor(max_workers=config.MAX_THREADPOOL_WORKERS) + +def generate_redshifts(redshift_config): + logging.info(redshift_config) + arrs = [] + for conf in redshift_config: + log = conf["log"] + func = np.logspace if log else np.linspace + start = np.log10(conf["from"]) if log else conf["from"] + stop = np.log10(conf["to"]) if log else conf["to"] + arrs.append(func(start, stop, conf["points"])) + # Remove duplicates + return np.flip(np.unique(np.concatenate(arrs)), axis=0) + +# Load available colormaps +def get_colormaps(path=config.COLORMAP_PATH): + categories = [] + maps = [] + order = {'Default': 1, 'Uniform': 2, 'Diverging': 3, 'Miscellaneous': 4} + cmap_directories = list(sorted( + os.listdir(os.path.join("static", path)), + key=lambda d: order[d] + )) + for directory in cmap_directories: + categories.append(directory) + maps_for_category = [] + for cmap in os.listdir(os.path.join("static", path, directory)): + maps_for_category.append({ + 'label': cmap[:cmap.rfind(".")], + 'src': os.path.join(os.path.join(config.COLORMAP_PATH, directory, cmap)), + }) + maps.append(maps_for_category) + return categories, maps + +class SimulationHandler(tornado.web.RequestHandler): + def get(self): + categories, colormaps = get_colormaps() + self.render('RSI.html', categories=categories, colormaps=colormaps) + +class DataConnection(tornado.websocket.WebSocketHandler): + def open(self): + logging.info("Client connected!") + self.calc = Calculation(kbins=config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + # Send list of `k` values only once + logging.info("Sending k range to client"); + self.write_message(json.dumps({ + "type": "krange", + "k": self.calc.krange.tolist() + })) + + def on_close(self): + logging.info("Connection was closed") + + @gen.coroutine + def on_message(self, message): + message = json.loads(message) + param_type = message['type'] + logging.debug("Received message from client: {}".format(message)) + params = message['params'] + if param_type == "Initial": + initialDataType = str(params['initialDataType']) + + size = params["xScale"] + resolution = int(params["resolution"]) + self.calc.resolution = resolution + self.calc.size = size + + logging.info("Size: {} x {} Mpc^2, resolution: {} x {}".format(size, size, resolution, resolution)) + + SIlimit = params['SILimit'] + + if SIlimit == "None": + SIlimit = None + + sigma = float(params['sigma']) + + SI_ns = params['n_s'] + if initialDataType == "SI": + A_s = 2.214 * 10**(-9) + else: + A_s = 1 + + redshift = generate_redshifts(params["redshift"]) + self.calc.redshift = redshift + + self.write_message( + json.dumps({ + 'type': 'redshift', + 'redshift': redshift.tolist() + })) + + logging.info("Submitting initial state generation to ThreadPoolExecutor") + yield pool.submit(self.set_initial_condition, sigma, initialDataType, + SIlimit, SI_ns, A_s) + self.send_initial_state() + self.write_message(json.dumps({'type': 'success', 'sort': 'Initial'})) + + elif param_type == "Cosmo": + logging.info("Received cosmological parameters") + cosmological_parameters = params + logging.info("Submitting calculation to ThreadPoolExecutor") + messages = yield pool.submit(self.set_cosmological_parameters, cosmological_parameters) + for message in messages: + self.write_message(json.dumps(message)) + elif param_type == "Start": + logging.info("Starting propagation...") + try: + for redindex, z in enumerate(self.calc.redshift): + self.send_frame(redindex) + self.write_message(json.dumps({'type': 'success', 'sort': 'Data'})) + except Exception as e: + logging.exception(e) + self.send_exception(e) + + def send_frame(self, redindex): + # `extrema`: (minimum, maximum) of (real space) data + Valuenew, FValuenew, extrema = self.calc.getData(redindex) + logging.info("Sending data for redshift = {}".format(self.calc.redshift[redindex])) + + # Create data to be displayed in transfer function window + TransferData, _ = self.calc.getTransferData(redindex) + + self.write_message(json.dumps({'type': 'extrema', 'extrema': extrema})) + progress = float(redindex) / len(self.calc.redshift) + + real = {quantity: base64.b64encode(data.astype(np.float32)) for quantity, data in Valuenew.iteritems()} + transfer = {quantity: base64.b64encode(data.astype(np.float32)) for quantity, data in TransferData.iteritems()} + self.write_message( + json.dumps({ + 'type': 'data', + 'progress': progress, + 'real': real, + 'fourier': [], + 'transfer': transfer, + })) + + def send_initial_state(self): + Value, FValue, extrema = self.calc.getInitialData() + TransferData = np.ones(config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + krange = np.zeros(config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + logging.info("Sending initial data to client.") + self.write_message({ + "type": "resolution", + "value": self.calc.resolution + }) + extremastring = json.dumps({'type': 'extrema', 'extrema': extrema}) + datastring = json.dumps({ + 'type': 'data', + 'real': base64.b64encode(Value.astype(np.float32)), + 'fourier': [], + 'transfer': base64.b64encode(TransferData.astype(np.float32)), + 'k': krange.tolist() + }) + self.write_message(extremastring) + self.write_message(datastring) + + + def set_initial_condition(self, sigma, initialDataType, SIlimit, SI_ns, A_s): + try: + self.calc.setInitialConditions( + sigma=sigma, + initialDataType=initialDataType, + SIlimit=SIlimit, + SI_ns=SI_ns, + A=A_s + ) + except Exception as e: + logging.exception(e) + self.send_exception(e) + + def send_exception(self, e): + self.write_message(json.dumps({'type': 'exception', 'exception': traceback.format_exc()})) + + def set_cosmological_parameters(self, cosmologicalParameters): + try: + messages = [] + logging.info("Starting calculation...") + self.calc.setCosmologialParameters(cosmologicalParameters=cosmologicalParameters) + logging.info("Finished calculation!") + + messages.append({'type': 'success', 'sort': 'Cosmo'}) + messages.append({ + 'type': 'Cl', + 'l': self.calc.tCl.l.tolist(), + 'tCl': self.calc.tCl.tCl.tolist() + }) + messages.append({ + 'type': 'mPk', + 'kh': self.calc.mPk.kh.tolist(), + 'Pkh': self.calc.mPk.Pkh.tolist() + }) + + z_of_decoupling = self.calc.z_dec + frame_of_decoupling = np.argmin(np.abs(z_of_decoupling - self.calc.redshift)) + if self.calc.redshift[frame_of_decoupling] > z_of_decoupling: + frame_of_decoupling -= 1 + messages.append({ + 'type': 'decoupling', + 'frame': frame_of_decoupling, + 'z': z_of_decoupling}) + except Exception as e: + logging.exception(e) + self.send_exception(e) + else: + return messages + + +def main(): + logging.getLogger().setLevel(logging.DEBUG) + + application = tornado.web.Application( + [ + (r"/", SimulationHandler), + (r"/datasocket", DataConnection), + ], + template_path=os.path.join(os.path.dirname(__file__), "templates"), + static_path=os.path.join(os.path.dirname(__file__), "static"), + debug=True, + ) + + PORT = config.PORT if len(sys.argv) == 1 else int(sys.argv[1]) + application.listen(PORT) + logging.info("Application launched on http://localhost:{}".format(PORT)) + IOLoop.instance().current().start() + + +if __name__ == '__main__': + main() diff --git a/class/bbn/sBBN_2017.dat b/class/bbn/sBBN_2017.dat new file mode 100644 index 00000000..6968d4a8 --- /dev/null +++ b/class/bbn/sBBN_2017.dat @@ -0,0 +1,542 @@ +# standard BBN prediction of the primordial Helium abundance $Y_p$ as +# function of the baryon density $\omega_b h^2$ and number of extra +# radiation degrees of freedom $\Delta N = N_eff-3.046$. Impact of +# chemical potential of electron neutrinos neglected in this version. +# +# Calculated with PArthENoPE v1.2 for a neutron lifetime of 880.2 s, +# identical to standard assumptions of Planck 2017 papers. +# +# Format: +# First line must contain (num_ombh2,num_DeltaN), other lines must +# contain (ombh2,DeltaN,YHe) blank lines and lines starting with # +# neglected + +48 11 +0.00499 -3.0 0.17643 +0.00599 -3.0 0.17896 +0.00699 -3.0 0.18091 +0.00799 -3.0 0.18251 +0.00898 -3.0 0.18384 +0.00998 -3.0 0.18502 +0.01098 -3.0 0.18604 +0.01198 -3.0 0.18694 +0.01298 -3.0 0.18778 +0.01398 -3.0 0.18852 +0.01497 -3.0 0.1892 +0.01597 -3.0 0.18984 +0.01697 -3.0 0.19044 +0.01797 -3.0 0.191 +0.01897 -3.0 0.19152 +0.01997 -3.0 0.192 +0.02021 -3.0 0.19212 +0.02046 -3.0 0.19225 +0.02071 -3.0 0.19235 +0.02096 -3.0 0.19246 +0.02121 -3.0 0.19258 +0.02146 -3.0 0.19269 +0.02171 -3.0 0.1928 +0.02196 -3.0 0.19291 +0.02221 -3.0 0.19301 +0.02246 -3.0 0.19311 +0.02271 -3.0 0.19321 +0.02296 -3.0 0.19332 +0.02321 -3.0 0.19343 +0.02346 -3.0 0.19352 +0.02371 -3.0 0.19362 +0.02396 -3.0 0.19373 +0.02496 -3.0 0.1941 +0.02595 -3.0 0.19448 +0.02695 -3.0 0.19481 +0.02795 -3.0 0.19514 +0.02895 -3.0 0.19548 +0.02995 -3.0 0.19578 +0.03094 -3.0 0.19609 +0.03194 -3.0 0.19638 +0.03294 -3.0 0.19665 +0.03394 -3.0 0.19693 +0.03494 -3.0 0.19719 +0.03594 -3.0 0.19744 +0.03693 -3.0 0.19769 +0.03793 -3.0 0.19792 +0.03893 -3.0 0.19817 +0.03993 -3.0 0.19838 +0.00499 -2.0 0.19647 +0.00599 -2.0 0.1992 +0.00699 -2.0 0.20131 +0.00799 -2.0 0.203 +0.00898 -2.0 0.2044 +0.00998 -2.0 0.20562 +0.01098 -2.0 0.20669 +0.01198 -2.0 0.20763 +0.01298 -2.0 0.20848 +0.01398 -2.0 0.20923 +0.01497 -2.0 0.20995 +0.01597 -2.0 0.21061 +0.01697 -2.0 0.21122 +0.01797 -2.0 0.21177 +0.01897 -2.0 0.21229 +0.01997 -2.0 0.2128 +0.02021 -2.0 0.21292 +0.02046 -2.0 0.21304 +0.02071 -2.0 0.21316 +0.02096 -2.0 0.21328 +0.02121 -2.0 0.21339 +0.02146 -2.0 0.2135 +0.02171 -2.0 0.21361 +0.02196 -2.0 0.21373 +0.02221 -2.0 0.21382 +0.02246 -2.0 0.21392 +0.02271 -2.0 0.21403 +0.02296 -2.0 0.21412 +0.02321 -2.0 0.21424 +0.02346 -2.0 0.21433 +0.02371 -2.0 0.21444 +0.02396 -2.0 0.21455 +0.02496 -2.0 0.21491 +0.02595 -2.0 0.21528 +0.02695 -2.0 0.21564 +0.02795 -2.0 0.21598 +0.02895 -2.0 0.2163 +0.02995 -2.0 0.21662 +0.03094 -2.0 0.21692 +0.03194 -2.0 0.21722 +0.03294 -2.0 0.2175 +0.03394 -2.0 0.21776 +0.03494 -2.0 0.21804 +0.03594 -2.0 0.21828 +0.03693 -2.0 0.21855 +0.03793 -2.0 0.21878 +0.03893 -2.0 0.21902 +0.03993 -2.0 0.21923 +0.00499 -1.0 0.21295 +0.00599 -1.0 0.21585 +0.00699 -1.0 0.21807 +0.00799 -1.0 0.21983 +0.00898 -1.0 0.22131 +0.00998 -1.0 0.22255 +0.01098 -1.0 0.22365 +0.01198 -1.0 0.2246 +0.01298 -1.0 0.22548 +0.01398 -1.0 0.22626 +0.01497 -1.0 0.22696 +0.01597 -1.0 0.22764 +0.01697 -1.0 0.22826 +0.01797 -1.0 0.22882 +0.01897 -1.0 0.22934 +0.01997 -1.0 0.22984 +0.02021 -1.0 0.22998 +0.02046 -1.0 0.23009 +0.02071 -1.0 0.23022 +0.02096 -1.0 0.23033 +0.02121 -1.0 0.23043 +0.02146 -1.0 0.23056 +0.02171 -1.0 0.23068 +0.02196 -1.0 0.23078 +0.02221 -1.0 0.23089 +0.02246 -1.0 0.231 +0.02271 -1.0 0.23109 +0.02296 -1.0 0.23121 +0.02321 -1.0 0.23131 +0.02346 -1.0 0.2314 +0.02371 -1.0 0.23152 +0.02396 -1.0 0.23161 +0.02496 -1.0 0.23198 +0.02595 -1.0 0.23235 +0.02695 -1.0 0.23271 +0.02795 -1.0 0.23306 +0.02895 -1.0 0.23337 +0.02995 -1.0 0.2337 +0.03094 -1.0 0.23399 +0.03194 -1.0 0.23428 +0.03294 -1.0 0.23455 +0.03394 -1.0 0.23484 +0.03494 -1.0 0.2351 +0.03594 -1.0 0.23534 +0.03693 -1.0 0.23559 +0.03793 -1.0 0.23585 +0.03893 -1.0 0.23607 +0.03993 -1.0 0.23631 +0.00499 0.0 0.22686 +0.00599 0.0 0.22995 +0.00699 0.0 0.23226 +0.00799 0.0 0.23411 +0.00898 0.0 0.2356 +0.00998 0.0 0.23689 +0.01098 0.0 0.238 +0.01198 0.0 0.23901 +0.01298 0.0 0.23987 +0.01398 0.0 0.24066 +0.01497 0.0 0.24139 +0.01597 0.0 0.24206 +0.01697 0.0 0.24268 +0.01797 0.0 0.24324 +0.01897 0.0 0.24378 +0.01997 0.0 0.2443 +0.02021 0.0 0.24442 +0.02046 0.0 0.24454 +0.02071 0.0 0.24465 +0.02096 0.0 0.24478 +0.02121 0.0 0.24488 +0.02146 0.0 0.24498 +0.02171 0.0 0.24509 +0.02196 0.0 0.24522 +0.02221 0.0 0.24533 +0.02246 0.0 0.24543 +0.02271 0.0 0.24552 +0.02296 0.0 0.24563 +0.02321 0.0 0.24575 +0.02346 0.0 0.24585 +0.02371 0.0 0.24595 +0.02396 0.0 0.24603 +0.02496 0.0 0.24642 +0.02595 0.0 0.24679 +0.02695 0.0 0.24714 +0.02795 0.0 0.2475 +0.02895 0.0 0.24781 +0.02995 0.0 0.24812 +0.03094 0.0 0.24843 +0.03194 0.0 0.2487 +0.03294 0.0 0.24898 +0.03394 0.0 0.24926 +0.03494 0.0 0.24952 +0.03594 0.0 0.24977 +0.03693 0.0 0.25003 +0.03793 0.0 0.25027 +0.03893 0.0 0.25051 +0.03993 0.0 0.25071 +0.00499 1.0 0.23893 +0.00599 1.0 0.24216 +0.00699 1.0 0.24457 +0.00799 1.0 0.24646 +0.00898 1.0 0.24801 +0.00998 1.0 0.24932 +0.01098 1.0 0.25046 +0.01198 1.0 0.25145 +0.01298 1.0 0.25236 +0.01398 1.0 0.25315 +0.01497 1.0 0.25388 +0.01597 1.0 0.25456 +0.01697 1.0 0.25517 +0.01797 1.0 0.25577 +0.01897 1.0 0.25629 +0.01997 1.0 0.25679 +0.02021 1.0 0.25692 +0.02046 1.0 0.25704 +0.02071 1.0 0.25716 +0.02096 1.0 0.25726 +0.02121 1.0 0.25737 +0.02146 1.0 0.25749 +0.02171 1.0 0.25762 +0.02196 1.0 0.25771 +0.02221 1.0 0.25784 +0.02246 1.0 0.25794 +0.02271 1.0 0.25805 +0.02296 1.0 0.25815 +0.02321 1.0 0.25824 +0.02346 1.0 0.25836 +0.02371 1.0 0.25844 +0.02396 1.0 0.25855 +0.02496 1.0 0.25892 +0.02595 1.0 0.25928 +0.02695 1.0 0.25965 +0.02795 1.0 0.25999 +0.02895 1.0 0.26031 +0.02995 1.0 0.26062 +0.03094 1.0 0.26091 +0.03194 1.0 0.26121 +0.03294 1.0 0.26149 +0.03394 1.0 0.26176 +0.03494 1.0 0.26201 +0.03594 1.0 0.26225 +0.03693 1.0 0.26249 +0.03793 1.0 0.26273 +0.03893 1.0 0.26296 +0.03993 1.0 0.26321 +0.00499 2.0 0.2495 +0.00599 2.0 0.25288 +0.00699 2.0 0.25538 +0.00799 2.0 0.25733 +0.00898 2.0 0.25896 +0.00998 2.0 0.26028 +0.01098 2.0 0.26145 +0.01198 2.0 0.26244 +0.01298 2.0 0.26336 +0.01398 2.0 0.26417 +0.01497 2.0 0.26491 +0.01597 2.0 0.26557 +0.01697 2.0 0.26618 +0.01797 2.0 0.26678 +0.01897 2.0 0.26732 +0.01997 2.0 0.26782 +0.02021 2.0 0.26793 +0.02046 2.0 0.26806 +0.02071 2.0 0.26817 +0.02096 2.0 0.26827 +0.02121 2.0 0.26839 +0.02146 2.0 0.26852 +0.02171 2.0 0.26861 +0.02196 2.0 0.26872 +0.02221 2.0 0.26883 +0.02246 2.0 0.26896 +0.02271 2.0 0.26906 +0.02296 2.0 0.26916 +0.02321 2.0 0.26925 +0.02346 2.0 0.26935 +0.02371 2.0 0.26947 +0.02396 2.0 0.26956 +0.02496 2.0 0.26995 +0.02595 2.0 0.27032 +0.02695 2.0 0.27065 +0.02795 2.0 0.271 +0.02895 2.0 0.27131 +0.02995 2.0 0.27161 +0.03094 2.0 0.27191 +0.03194 2.0 0.27219 +0.03294 2.0 0.27249 +0.03394 2.0 0.27275 +0.03494 2.0 0.27301 +0.03594 2.0 0.27326 +0.03693 2.0 0.27351 +0.03793 2.0 0.27372 +0.03893 2.0 0.27397 +0.03993 2.0 0.27418 +0.00499 3.0 0.25893 +0.00599 3.0 0.26246 +0.00699 3.0 0.26505 +0.00799 3.0 0.26705 +0.00898 3.0 0.2687 +0.00998 3.0 0.27007 +0.01098 3.0 0.27122 +0.01198 3.0 0.27227 +0.01298 3.0 0.27318 +0.01398 3.0 0.27398 +0.01497 3.0 0.27471 +0.01597 3.0 0.27541 +0.01697 3.0 0.27604 +0.01797 3.0 0.2766 +0.01897 3.0 0.27716 +0.01997 3.0 0.27765 +0.02021 3.0 0.27776 +0.02046 3.0 0.2779 +0.02071 3.0 0.27801 +0.02096 3.0 0.27813 +0.02121 3.0 0.27824 +0.02146 3.0 0.27836 +0.02171 3.0 0.27845 +0.02196 3.0 0.27857 +0.02221 3.0 0.27868 +0.02246 3.0 0.27877 +0.02271 3.0 0.27888 +0.02296 3.0 0.27898 +0.02321 3.0 0.27908 +0.02346 3.0 0.2792 +0.02371 3.0 0.27929 +0.02396 3.0 0.2794 +0.02496 3.0 0.27978 +0.02595 3.0 0.28014 +0.02695 3.0 0.28049 +0.02795 3.0 0.2808 +0.02895 3.0 0.28114 +0.02995 3.0 0.28145 +0.03094 3.0 0.28172 +0.03194 3.0 0.28203 +0.03294 3.0 0.2823 +0.03394 3.0 0.28255 +0.03494 3.0 0.28282 +0.03594 3.0 0.28305 +0.03693 3.0 0.28332 +0.03793 3.0 0.28353 +0.03893 3.0 0.28377 +0.03993 3.0 0.28399 +0.00499 4.0 0.2674 +0.00599 4.0 0.27107 +0.00699 4.0 0.27376 +0.00799 4.0 0.27583 +0.00898 4.0 0.2775 +0.00998 4.0 0.2789 +0.01098 4.0 0.28007 +0.01198 4.0 0.2811 +0.01298 4.0 0.28202 +0.01398 4.0 0.28285 +0.01497 4.0 0.2836 +0.01597 4.0 0.28427 +0.01697 4.0 0.28489 +0.01797 4.0 0.28547 +0.01897 4.0 0.28602 +0.01997 4.0 0.28654 +0.02021 4.0 0.28664 +0.02046 4.0 0.28676 +0.02071 4.0 0.28687 +0.02096 4.0 0.287 +0.02121 4.0 0.2871 +0.02146 4.0 0.28723 +0.02171 4.0 0.28732 +0.02196 4.0 0.28744 +0.02221 4.0 0.28755 +0.02246 4.0 0.28765 +0.02271 4.0 0.28777 +0.02296 4.0 0.28785 +0.02321 4.0 0.28797 +0.02346 4.0 0.28806 +0.02371 4.0 0.28817 +0.02396 4.0 0.28827 +0.02496 4.0 0.28863 +0.02595 4.0 0.289 +0.02695 4.0 0.28936 +0.02795 4.0 0.28967 +0.02895 4.0 0.28999 +0.02995 4.0 0.2903 +0.03094 4.0 0.2906 +0.03194 4.0 0.29088 +0.03294 4.0 0.29113 +0.03394 4.0 0.29142 +0.03494 4.0 0.29167 +0.03594 4.0 0.2919 +0.03693 4.0 0.29216 +0.03793 4.0 0.29237 +0.03893 4.0 0.29259 +0.03993 4.0 0.29281 +0.00499 5.0 0.27505 +0.00599 5.0 0.27891 +0.00699 5.0 0.28166 +0.00799 5.0 0.28378 +0.00898 5.0 0.2855 +0.00998 5.0 0.2869 +0.01098 5.0 0.28814 +0.01198 5.0 0.28917 +0.01298 5.0 0.29011 +0.01398 5.0 0.29092 +0.01497 5.0 0.29169 +0.01597 5.0 0.29235 +0.01697 5.0 0.293 +0.01797 5.0 0.29356 +0.01897 5.0 0.29411 +0.01997 5.0 0.29461 +0.02021 5.0 0.29472 +0.02046 5.0 0.29484 +0.02071 5.0 0.29497 +0.02096 5.0 0.29507 +0.02121 5.0 0.29519 +0.02146 5.0 0.29532 +0.02171 5.0 0.29543 +0.02196 5.0 0.29552 +0.02221 5.0 0.29564 +0.02246 5.0 0.29573 +0.02271 5.0 0.29585 +0.02296 5.0 0.29594 +0.02321 5.0 0.29605 +0.02346 5.0 0.29616 +0.02371 5.0 0.29624 +0.02396 5.0 0.29635 +0.02496 5.0 0.29671 +0.02595 5.0 0.29708 +0.02695 5.0 0.29743 +0.02795 5.0 0.29774 +0.02895 5.0 0.29807 +0.02995 5.0 0.29836 +0.03094 5.0 0.29865 +0.03194 5.0 0.29893 +0.03294 5.0 0.2992 +0.03394 5.0 0.29946 +0.03494 5.0 0.29974 +0.03594 5.0 0.29996 +0.03693 5.0 0.30022 +0.03793 5.0 0.30042 +0.03893 5.0 0.30064 +0.03993 5.0 0.30087 +0.00499 6.0 0.28209 +0.00599 6.0 0.28606 +0.00699 6.0 0.28893 +0.00799 6.0 0.2911 +0.00898 6.0 0.29285 +0.00998 6.0 0.29427 +0.01098 6.0 0.2955 +0.01198 6.0 0.29658 +0.01298 6.0 0.29749 +0.01398 6.0 0.29834 +0.01497 6.0 0.29908 +0.01597 6.0 0.29978 +0.01697 6.0 0.30041 +0.01797 6.0 0.30099 +0.01897 6.0 0.30153 +0.01997 6.0 0.30203 +0.02021 6.0 0.30213 +0.02046 6.0 0.30225 +0.02071 6.0 0.30237 +0.02096 6.0 0.30251 +0.02121 6.0 0.30262 +0.02146 6.0 0.30271 +0.02171 6.0 0.30284 +0.02196 6.0 0.30295 +0.02221 6.0 0.30305 +0.02246 6.0 0.30316 +0.02271 6.0 0.30325 +0.02296 6.0 0.30336 +0.02321 6.0 0.30347 +0.02346 6.0 0.30357 +0.02371 6.0 0.30365 +0.02396 6.0 0.30374 +0.02496 6.0 0.30411 +0.02595 6.0 0.30449 +0.02695 6.0 0.30483 +0.02795 6.0 0.30516 +0.02895 6.0 0.30546 +0.02995 6.0 0.30576 +0.03094 6.0 0.30606 +0.03194 6.0 0.30632 +0.03294 6.0 0.30659 +0.03394 6.0 0.30686 +0.03494 6.0 0.30712 +0.03594 6.0 0.30736 +0.03693 6.0 0.30759 +0.03793 6.0 0.3078 +0.03893 6.0 0.30802 +0.03993 6.0 0.30823 +0.00499 7.0 0.28851 +0.00599 7.0 0.29265 +0.00699 7.0 0.29559 +0.00799 7.0 0.29784 +0.00898 7.0 0.29963 +0.00998 7.0 0.30107 +0.01098 7.0 0.30231 +0.01198 7.0 0.30341 +0.01298 7.0 0.30432 +0.01398 7.0 0.30518 +0.01497 7.0 0.30592 +0.01597 7.0 0.30663 +0.01697 7.0 0.30726 +0.01797 7.0 0.30783 +0.01897 7.0 0.30835 +0.01997 7.0 0.30888 +0.02021 7.0 0.309 +0.02046 7.0 0.30911 +0.02071 7.0 0.30923 +0.02096 7.0 0.30935 +0.02121 7.0 0.30946 +0.02146 7.0 0.30957 +0.02171 7.0 0.30966 +0.02196 7.0 0.30979 +0.02221 7.0 0.30988 +0.02246 7.0 0.30998 +0.02271 7.0 0.3101 +0.02296 7.0 0.31021 +0.02321 7.0 0.31031 +0.02346 7.0 0.31041 +0.02371 7.0 0.31049 +0.02396 7.0 0.31058 +0.02496 7.0 0.31098 +0.02595 7.0 0.31131 +0.02695 7.0 0.31168 +0.02795 7.0 0.31198 +0.02895 7.0 0.31229 +0.02995 7.0 0.31259 +0.03094 7.0 0.31289 +0.03194 7.0 0.31317 +0.03294 7.0 0.31343 +0.03394 7.0 0.31369 +0.03494 7.0 0.31392 +0.03594 7.0 0.31418 +0.03693 7.0 0.3144 +0.03793 7.0 0.31462 +0.03893 7.0 0.31484 +0.03993 7.0 0.31506 diff --git a/class/bbn/sBBN_2017_marcucci.dat b/class/bbn/sBBN_2017_marcucci.dat new file mode 100644 index 00000000..25f7ed8a --- /dev/null +++ b/class/bbn/sBBN_2017_marcucci.dat @@ -0,0 +1,543 @@ +# standard BBN prediction of the primordial Helium abundance $Y_p$ as +# function of the baryon density $\omega_b h^2$ and number of extra +# radiation degrees of freedom $\Delta N = N_eff-3.046$. Impact of +# chemical potential of electron neutrinos neglected in this version. +# +# Calculated with PArthENoPE v1.2 for a neutron lifetime of 880.2 s, +# and with the rate d(p,gamma)^3He coming from ab initio calculations +# by Marcucci et al. 2015. +# +# Format: +# First line must contain (num_ombh2,num_DeltaN), other lines must +# contain (ombh2,DeltaN,YHe) blank lines and lines starting with # +# neglected + +48 11 +0.00499 -3.0 0.17644 +0.00599 -3.0 0.17896 +0.00699 -3.0 0.18092 +0.00799 -3.0 0.18252 +0.00898 -3.0 0.18387 +0.00998 -3.0 0.18503 +0.01098 -3.0 0.18603 +0.01198 -3.0 0.18696 +0.01298 -3.0 0.18778 +0.01398 -3.0 0.18852 +0.01497 -3.0 0.18922 +0.01597 -3.0 0.18985 +0.01697 -3.0 0.19045 +0.01797 -3.0 0.191 +0.01897 -3.0 0.19152 +0.01997 -3.0 0.19202 +0.02021 -3.0 0.19214 +0.02046 -3.0 0.19226 +0.02071 -3.0 0.19236 +0.02096 -3.0 0.19248 +0.02121 -3.0 0.1926 +0.02146 -3.0 0.19271 +0.02171 -3.0 0.19281 +0.02196 -3.0 0.19292 +0.02221 -3.0 0.19301 +0.02246 -3.0 0.19313 +0.02271 -3.0 0.19323 +0.02296 -3.0 0.19334 +0.02321 -3.0 0.19343 +0.02346 -3.0 0.19354 +0.02371 -3.0 0.19363 +0.02396 -3.0 0.19372 +0.02496 -3.0 0.19411 +0.02595 -3.0 0.19449 +0.02695 -3.0 0.19482 +0.02795 -3.0 0.19517 +0.02895 -3.0 0.19549 +0.02995 -3.0 0.19579 +0.03094 -3.0 0.1961 +0.03194 -3.0 0.19638 +0.03294 -3.0 0.19667 +0.03394 -3.0 0.19695 +0.03494 -3.0 0.19721 +0.03594 -3.0 0.19746 +0.03693 -3.0 0.19771 +0.03793 -3.0 0.19793 +0.03893 -3.0 0.19819 +0.03993 -3.0 0.19841 +0.00499 -2.0 0.1965 +0.00599 -2.0 0.19921 +0.00699 -2.0 0.20132 +0.00799 -2.0 0.20299 +0.00898 -2.0 0.2044 +0.00998 -2.0 0.20563 +0.01098 -2.0 0.20669 +0.01198 -2.0 0.20764 +0.01298 -2.0 0.20849 +0.01398 -2.0 0.20925 +0.01497 -2.0 0.20996 +0.01597 -2.0 0.21061 +0.01697 -2.0 0.21123 +0.01797 -2.0 0.21177 +0.01897 -2.0 0.2123 +0.01997 -2.0 0.21281 +0.02021 -2.0 0.21292 +0.02046 -2.0 0.21305 +0.02071 -2.0 0.21316 +0.02096 -2.0 0.21328 +0.02121 -2.0 0.2134 +0.02146 -2.0 0.2135 +0.02171 -2.0 0.21361 +0.02196 -2.0 0.21372 +0.02221 -2.0 0.21384 +0.02246 -2.0 0.21395 +0.02271 -2.0 0.21403 +0.02296 -2.0 0.21414 +0.02321 -2.0 0.21424 +0.02346 -2.0 0.21435 +0.02371 -2.0 0.21445 +0.02396 -2.0 0.21455 +0.02496 -2.0 0.21493 +0.02595 -2.0 0.21531 +0.02695 -2.0 0.21566 +0.02795 -2.0 0.216 +0.02895 -2.0 0.21634 +0.02995 -2.0 0.21663 +0.03094 -2.0 0.21694 +0.03194 -2.0 0.21721 +0.03294 -2.0 0.21751 +0.03394 -2.0 0.21778 +0.03494 -2.0 0.21805 +0.03594 -2.0 0.21831 +0.03693 -2.0 0.21856 +0.03793 -2.0 0.2188 +0.03893 -2.0 0.21902 +0.03993 -2.0 0.21926 +0.00499 -1.0 0.21295 +0.00599 -1.0 0.21586 +0.00699 -1.0 0.21808 +0.00799 -1.0 0.21983 +0.00898 -1.0 0.22132 +0.00998 -1.0 0.22256 +0.01098 -1.0 0.22365 +0.01198 -1.0 0.22462 +0.01298 -1.0 0.22547 +0.01398 -1.0 0.22628 +0.01497 -1.0 0.22697 +0.01597 -1.0 0.22764 +0.01697 -1.0 0.22827 +0.01797 -1.0 0.22884 +0.01897 -1.0 0.22935 +0.01997 -1.0 0.22987 +0.02021 -1.0 0.22999 +0.02046 -1.0 0.23009 +0.02071 -1.0 0.23021 +0.02096 -1.0 0.23035 +0.02121 -1.0 0.23046 +0.02146 -1.0 0.23057 +0.02171 -1.0 0.23068 +0.02196 -1.0 0.23078 +0.02221 -1.0 0.2309 +0.02246 -1.0 0.23099 +0.02271 -1.0 0.2311 +0.02296 -1.0 0.23122 +0.02321 -1.0 0.23131 +0.02346 -1.0 0.23143 +0.02371 -1.0 0.23153 +0.02396 -1.0 0.23161 +0.02496 -1.0 0.23199 +0.02595 -1.0 0.23237 +0.02695 -1.0 0.23273 +0.02795 -1.0 0.23307 +0.02895 -1.0 0.23339 +0.02995 -1.0 0.23369 +0.03094 -1.0 0.234 +0.03194 -1.0 0.23429 +0.03294 -1.0 0.23458 +0.03394 -1.0 0.23485 +0.03494 -1.0 0.2351 +0.03594 -1.0 0.23536 +0.03693 -1.0 0.23562 +0.03793 -1.0 0.23587 +0.03893 -1.0 0.23608 +0.03993 -1.0 0.23633 +0.00499 0.0 0.22688 +0.00599 0.0 0.22997 +0.00699 0.0 0.23227 +0.00799 0.0 0.2341 +0.00898 0.0 0.23562 +0.00998 0.0 0.23691 +0.01098 0.0 0.23802 +0.01198 0.0 0.239 +0.01298 0.0 0.23988 +0.01398 0.0 0.24067 +0.01497 0.0 0.24141 +0.01597 0.0 0.24207 +0.01697 0.0 0.24267 +0.01797 0.0 0.24327 +0.01897 0.0 0.24379 +0.01997 0.0 0.24431 +0.02021 0.0 0.24442 +0.02046 0.0 0.24453 +0.02071 0.0 0.24467 +0.02096 0.0 0.24478 +0.02121 0.0 0.2449 +0.02146 0.0 0.24499 +0.02171 0.0 0.2451 +0.02196 0.0 0.24521 +0.02221 0.0 0.24532 +0.02246 0.0 0.24544 +0.02271 0.0 0.24553 +0.02296 0.0 0.24565 +0.02321 0.0 0.24575 +0.02346 0.0 0.24584 +0.02371 0.0 0.24594 +0.02396 0.0 0.24604 +0.02496 0.0 0.24644 +0.02595 0.0 0.24681 +0.02695 0.0 0.24717 +0.02795 0.0 0.24749 +0.02895 0.0 0.24781 +0.02995 0.0 0.24814 +0.03094 0.0 0.24844 +0.03194 0.0 0.24871 +0.03294 0.0 0.24901 +0.03394 0.0 0.24928 +0.03494 0.0 0.24953 +0.03594 0.0 0.2498 +0.03693 0.0 0.25004 +0.03793 0.0 0.25027 +0.03893 0.0 0.25051 +0.03993 0.0 0.25074 +0.00499 1.0 0.23892 +0.00599 1.0 0.24217 +0.00699 1.0 0.24456 +0.00799 1.0 0.24647 +0.00898 1.0 0.24801 +0.00998 1.0 0.24933 +0.01098 1.0 0.25048 +0.01198 1.0 0.25147 +0.01298 1.0 0.25235 +0.01398 1.0 0.25318 +0.01497 1.0 0.25389 +0.01597 1.0 0.25457 +0.01697 1.0 0.2552 +0.01797 1.0 0.25578 +0.01897 1.0 0.25629 +0.01997 1.0 0.25679 +0.02021 1.0 0.25693 +0.02046 1.0 0.25703 +0.02071 1.0 0.25717 +0.02096 1.0 0.25727 +0.02121 1.0 0.25738 +0.02146 1.0 0.2575 +0.02171 1.0 0.25762 +0.02196 1.0 0.25773 +0.02221 1.0 0.25783 +0.02246 1.0 0.25794 +0.02271 1.0 0.25804 +0.02296 1.0 0.25815 +0.02321 1.0 0.25827 +0.02346 1.0 0.25837 +0.02371 1.0 0.25846 +0.02396 1.0 0.25855 +0.02496 1.0 0.25895 +0.02595 1.0 0.25929 +0.02695 1.0 0.25967 +0.02795 1.0 0.26 +0.02895 1.0 0.26032 +0.02995 1.0 0.26062 +0.03094 1.0 0.26093 +0.03194 1.0 0.26122 +0.03294 1.0 0.2615 +0.03394 1.0 0.26175 +0.03494 1.0 0.26202 +0.03594 1.0 0.26227 +0.03693 1.0 0.26252 +0.03793 1.0 0.26274 +0.03893 1.0 0.26299 +0.03993 1.0 0.2632 +0.00499 2.0 0.24951 +0.00599 2.0 0.25289 +0.00699 2.0 0.2554 +0.00799 2.0 0.25736 +0.00898 2.0 0.25894 +0.00998 2.0 0.26029 +0.01098 2.0 0.26144 +0.01198 2.0 0.26244 +0.01298 2.0 0.26336 +0.01398 2.0 0.26418 +0.01497 2.0 0.2649 +0.01597 2.0 0.26557 +0.01697 2.0 0.26619 +0.01797 2.0 0.26679 +0.01897 2.0 0.26731 +0.01997 2.0 0.26782 +0.02021 2.0 0.26795 +0.02046 2.0 0.26807 +0.02071 2.0 0.26816 +0.02096 2.0 0.2683 +0.02121 2.0 0.26839 +0.02146 2.0 0.26852 +0.02171 2.0 0.26864 +0.02196 2.0 0.26875 +0.02221 2.0 0.26884 +0.02246 2.0 0.26894 +0.02271 2.0 0.26905 +0.02296 2.0 0.26918 +0.02321 2.0 0.26927 +0.02346 2.0 0.26938 +0.02371 2.0 0.26946 +0.02396 2.0 0.26956 +0.02496 2.0 0.26996 +0.02595 2.0 0.27031 +0.02695 2.0 0.27067 +0.02795 2.0 0.27101 +0.02895 2.0 0.27132 +0.02995 2.0 0.27161 +0.03094 2.0 0.27191 +0.03194 2.0 0.27222 +0.03294 2.0 0.27248 +0.03394 2.0 0.27276 +0.03494 2.0 0.27303 +0.03594 2.0 0.27327 +0.03693 2.0 0.27351 +0.03793 2.0 0.27375 +0.03893 2.0 0.27398 +0.03993 2.0 0.27419 +0.00499 3.0 0.25892 +0.00599 3.0 0.26245 +0.00699 3.0 0.26504 +0.00799 3.0 0.26706 +0.00898 3.0 0.26871 +0.00998 3.0 0.27008 +0.01098 3.0 0.27123 +0.01198 3.0 0.27226 +0.01298 3.0 0.27319 +0.01398 3.0 0.27399 +0.01497 3.0 0.27472 +0.01597 3.0 0.2754 +0.01697 3.0 0.27605 +0.01797 3.0 0.27663 +0.01897 3.0 0.27716 +0.01997 3.0 0.27764 +0.02021 3.0 0.27777 +0.02046 3.0 0.2779 +0.02071 3.0 0.278 +0.02096 3.0 0.27812 +0.02121 3.0 0.27825 +0.02146 3.0 0.27836 +0.02171 3.0 0.27846 +0.02196 3.0 0.27857 +0.02221 3.0 0.27867 +0.02246 3.0 0.27878 +0.02271 3.0 0.2789 +0.02296 3.0 0.27901 +0.02321 3.0 0.27911 +0.02346 3.0 0.27919 +0.02371 3.0 0.27931 +0.02396 3.0 0.27941 +0.02496 3.0 0.27977 +0.02595 3.0 0.28014 +0.02695 3.0 0.28049 +0.02795 3.0 0.28083 +0.02895 3.0 0.28113 +0.02995 3.0 0.28145 +0.03094 3.0 0.28175 +0.03194 3.0 0.28204 +0.03294 3.0 0.28229 +0.03394 3.0 0.28258 +0.03494 3.0 0.28283 +0.03594 3.0 0.28308 +0.03693 3.0 0.2833 +0.03793 3.0 0.28354 +0.03893 3.0 0.28377 +0.03993 3.0 0.28398 +0.00499 4.0 0.2674 +0.00599 4.0 0.27106 +0.00699 4.0 0.27376 +0.00799 4.0 0.27582 +0.00898 4.0 0.27751 +0.00998 4.0 0.2789 +0.01098 4.0 0.28009 +0.01198 4.0 0.28111 +0.01298 4.0 0.28203 +0.01398 4.0 0.28287 +0.01497 4.0 0.28361 +0.01597 4.0 0.28427 +0.01697 4.0 0.2849 +0.01797 4.0 0.2855 +0.01897 4.0 0.28602 +0.01997 4.0 0.28654 +0.02021 4.0 0.28665 +0.02046 4.0 0.28678 +0.02071 4.0 0.28689 +0.02096 4.0 0.28699 +0.02121 4.0 0.2871 +0.02146 4.0 0.28724 +0.02171 4.0 0.28735 +0.02196 4.0 0.28745 +0.02221 4.0 0.28756 +0.02246 4.0 0.28767 +0.02271 4.0 0.28775 +0.02296 4.0 0.28788 +0.02321 4.0 0.28796 +0.02346 4.0 0.28808 +0.02371 4.0 0.28816 +0.02396 4.0 0.28829 +0.02496 4.0 0.28864 +0.02595 4.0 0.289 +0.02695 4.0 0.28936 +0.02795 4.0 0.28968 +0.02895 4.0 0.29002 +0.02995 4.0 0.2903 +0.03094 4.0 0.29059 +0.03194 4.0 0.29087 +0.03294 4.0 0.29116 +0.03394 4.0 0.29141 +0.03494 4.0 0.29168 +0.03594 4.0 0.29193 +0.03693 4.0 0.29215 +0.03793 4.0 0.29238 +0.03893 4.0 0.29262 +0.03993 4.0 0.29282 +0.00499 5.0 0.27508 +0.00599 5.0 0.2789 +0.00699 5.0 0.28168 +0.00799 5.0 0.28379 +0.00898 5.0 0.2855 +0.00998 5.0 0.28693 +0.01098 5.0 0.28812 +0.01198 5.0 0.28919 +0.01298 5.0 0.2901 +0.01398 5.0 0.29093 +0.01497 5.0 0.29167 +0.01597 5.0 0.29236 +0.01697 5.0 0.29299 +0.01797 5.0 0.29356 +0.01897 5.0 0.2941 +0.01997 5.0 0.2946 +0.02021 5.0 0.29474 +0.02046 5.0 0.29484 +0.02071 5.0 0.29496 +0.02096 5.0 0.29508 +0.02121 5.0 0.29519 +0.02146 5.0 0.2953 +0.02171 5.0 0.29543 +0.02196 5.0 0.29554 +0.02221 5.0 0.29565 +0.02246 5.0 0.29576 +0.02271 5.0 0.29586 +0.02296 5.0 0.29594 +0.02321 5.0 0.29606 +0.02346 5.0 0.29614 +0.02371 5.0 0.29625 +0.02396 5.0 0.29636 +0.02496 5.0 0.29673 +0.02595 5.0 0.29709 +0.02695 5.0 0.29742 +0.02795 5.0 0.29776 +0.02895 5.0 0.29806 +0.02995 5.0 0.29836 +0.03094 5.0 0.29866 +0.03194 5.0 0.29895 +0.03294 5.0 0.29921 +0.03394 5.0 0.29949 +0.03494 5.0 0.29972 +0.03594 5.0 0.29997 +0.03693 5.0 0.3002 +0.03793 5.0 0.30044 +0.03893 5.0 0.30065 +0.03993 5.0 0.30089 +0.00499 6.0 0.28208 +0.00599 6.0 0.28607 +0.00699 6.0 0.28892 +0.00799 6.0 0.29111 +0.00898 6.0 0.29284 +0.00998 6.0 0.2943 +0.01098 6.0 0.29552 +0.01198 6.0 0.29658 +0.01298 6.0 0.2975 +0.01398 6.0 0.29835 +0.01497 6.0 0.29909 +0.01597 6.0 0.29979 +0.01697 6.0 0.30041 +0.01797 6.0 0.30099 +0.01897 6.0 0.30152 +0.01997 6.0 0.30204 +0.02021 6.0 0.30214 +0.02046 6.0 0.30226 +0.02071 6.0 0.30239 +0.02096 6.0 0.30249 +0.02121 6.0 0.30261 +0.02146 6.0 0.30273 +0.02171 6.0 0.30284 +0.02196 6.0 0.30294 +0.02221 6.0 0.30306 +0.02246 6.0 0.30317 +0.02271 6.0 0.30327 +0.02296 6.0 0.30338 +0.02321 6.0 0.30346 +0.02346 6.0 0.30357 +0.02371 6.0 0.30368 +0.02396 6.0 0.30378 +0.02496 6.0 0.30412 +0.02595 6.0 0.30449 +0.02695 6.0 0.30484 +0.02795 6.0 0.30515 +0.02895 6.0 0.30549 +0.02995 6.0 0.30576 +0.03094 6.0 0.30605 +0.03194 6.0 0.30635 +0.03294 6.0 0.3066 +0.03394 6.0 0.30688 +0.03494 6.0 0.30711 +0.03594 6.0 0.30737 +0.03693 6.0 0.30759 +0.03793 6.0 0.30783 +0.03893 6.0 0.30803 +0.03993 6.0 0.30824 +0.00499 7.0 0.28853 +0.00599 7.0 0.29268 +0.00699 7.0 0.29562 +0.00799 7.0 0.29783 +0.00898 7.0 0.29963 +0.00998 7.0 0.30109 +0.01098 7.0 0.30232 +0.01198 7.0 0.30341 +0.01298 7.0 0.30433 +0.01398 7.0 0.30517 +0.01497 7.0 0.30594 +0.01597 7.0 0.30664 +0.01697 7.0 0.30725 +0.01797 7.0 0.30782 +0.01897 7.0 0.30836 +0.01997 7.0 0.30886 +0.02021 7.0 0.309 +0.02046 7.0 0.3091 +0.02071 7.0 0.30922 +0.02096 7.0 0.30936 +0.02121 7.0 0.30947 +0.02146 7.0 0.30956 +0.02171 7.0 0.30967 +0.02196 7.0 0.30979 +0.02221 7.0 0.30988 +0.02246 7.0 0.30999 +0.02271 7.0 0.31009 +0.02296 7.0 0.3102 +0.02321 7.0 0.3103 +0.02346 7.0 0.31042 +0.02371 7.0 0.3105 +0.02396 7.0 0.31061 +0.02496 7.0 0.31097 +0.02595 7.0 0.31133 +0.02695 7.0 0.31167 +0.02795 7.0 0.31199 +0.02895 7.0 0.3123 +0.02995 7.0 0.31259 +0.03094 7.0 0.31288 +0.03194 7.0 0.31318 +0.03294 7.0 0.31345 +0.03394 7.0 0.3137 +0.03494 7.0 0.31393 +0.03594 7.0 0.31417 +0.03693 7.0 0.31441 +0.03793 7.0 0.31463 +0.03893 7.0 0.31485 +0.03993 7.0 0.31505 diff --git a/class/cl_permille.pre b/class/cl_permille.pre new file mode 100644 index 00000000..270cd014 --- /dev/null +++ b/class/cl_permille.pre @@ -0,0 +1,7 @@ +# precision file to be passed as input in order to achieve at least percent precision on scalar Cls +hyper_flat_approximation_nu = 7000. +transfer_neglect_delta_k_S_t0 = 0.17 +transfer_neglect_delta_k_S_t1 = 0.05 +transfer_neglect_delta_k_S_t2 = 0.17 +transfer_neglect_delta_k_S_e = 0.13 +delta_l_max=1000 diff --git a/class/cl_ref.pre b/class/cl_ref.pre new file mode 100644 index 00000000..376e5bbb --- /dev/null +++ b/class/cl_ref.pre @@ -0,0 +1,82 @@ +# this file achieves maximum precision for the CMB: each ClTT and ClEE, lensed and unlensed, are stable at the 0.01% level + +tol_ncdm_bg = 1.e-10 + +recfast_Nz0=100000 +tol_thermo_integration=1.e-5 + +recfast_x_He0_trigger_delta = 0.01 +recfast_x_H0_trigger_delta = 0.01 + +evolver=0 + +k_min_tau0=0.002 +k_max_tau0_over_l_max=3. +k_step_sub=0.015 +k_step_super=0.0001 +k_step_super_reduction=0.1 + +start_small_k_at_tau_c_over_tau_h = 0.0004 +start_large_k_at_tau_h_over_tau_k = 0.05 +tight_coupling_trigger_tau_c_over_tau_h=0.005 +tight_coupling_trigger_tau_c_over_tau_k=0.008 +start_sources_at_tau_c_over_tau_h = 0.006 + +l_max_g=50 +l_max_pol_g=25 +l_max_ur=50 +l_max_ncdm=50 + +tol_perturb_integration=1.e-6 +perturb_sampling_stepsize=0.01 + +radiation_streaming_approximation = 2 +radiation_streaming_trigger_tau_over_tau_k = 240. +radiation_streaming_trigger_tau_c_over_tau = 100. + +ur_fluid_approximation = 2 +ur_fluid_trigger_tau_over_tau_k = 50. + +ncdm_fluid_approximation = 3 +ncdm_fluid_trigger_tau_over_tau_k = 51. + +tol_ncdm_synchronous = 1.e-10 +tol_ncdm_newtonian = 1.e-10 + +l_logstep=1.026 +l_linstep=25 + +hyper_sampling_flat = 12. +hyper_sampling_curved_low_nu = 10. +hyper_sampling_curved_high_nu = 10. +hyper_nu_sampling_step = 10. +hyper_phi_min_abs = 1.e-10 +hyper_x_tol = 1.e-4 +hyper_flat_approximation_nu = 1.e6 + +q_linstep=0.20 +q_logstep_spline= 20. +q_logstep_trapzd = 0.5 +q_numstep_transition = 250 + +transfer_neglect_delta_k_S_t0 = 100. +transfer_neglect_delta_k_S_t1 = 100. +transfer_neglect_delta_k_S_t2 = 100. +transfer_neglect_delta_k_S_e = 100. +transfer_neglect_delta_k_V_t1 = 100. +transfer_neglect_delta_k_V_t2 = 100. +transfer_neglect_delta_k_V_e = 100. +transfer_neglect_delta_k_V_b = 100. +transfer_neglect_delta_k_T_t2 = 100. +transfer_neglect_delta_k_T_e = 100. +transfer_neglect_delta_k_T_b = 100. + +neglect_CMB_sources_below_visibility = 1.e-30 +transfer_neglect_late_source = 3000. + +halofit_k_per_decade = 3000. + +l_switch_limber = 40. +accurate_lensing=1 +num_mu_minus_lmax = 1000. +delta_l_max = 1000. \ No newline at end of file diff --git a/class/cpp/ClassEngine.cc b/class/cpp/ClassEngine.cc new file mode 100644 index 00000000..7c476e87 --- /dev/null +++ b/class/cpp/ClassEngine.cc @@ -0,0 +1,721 @@ +//-------------------------------------------------------------------------- +// +// Description: +// class ClassEngine : see header file (ClassEngine.hh) for description. +// +//------------------------------------------------------------------------ +//----------------------- +// This Class's Header -- +//----------------------- +#include "ClassEngine.hh" +// ------------------------ +// Collaborating classes -- +//------------------------- +// C++ +//-------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +//#define DBUG + +using namespace std; + +template std::string str(const T &x){ + std::ostringstream os; + os << x; + return os.str(); +} +//specilization +template<> std::string str (const float &x){ + std::ostringstream os; + os << setprecision(8) << x; + return os.str(); +} +template<> std::string str (const double &x){ + std::ostringstream os; + os << setprecision(16) << x; + return os.str(); +} +template<> std::string str (const bool &x){ + { return x ? "yes" : "no"; } +} + +template<> std::string str (const std::string &x) {return x;} + +std::string str (const char* s){return string(s);} + +//instanciations +template string str(const int &x); +template string str(const signed char &x); +template string str(const unsigned char &x); +template string str(const short &x); +template string str(const unsigned short &x); +template string str(const unsigned int &x); +template string str(const long &x); +template string str(const unsigned long &x); +template string str(const long long &x); +template string str(const unsigned long long &x); + +//--------------- +// Constructors -- +//---------------- +ClassEngine::ClassEngine(const ClassParams& pars, bool verbose): cl(0),dofree(true){ + + //prepare fp structure + size_t n=pars.size(); + // + parser_init(&fc,n,"pipo",_errmsg); + + //config + for (size_t i=0;i> _lmax; + } + } + if( verbose ) cout << __FILE__ << " : using lmax=" << _lmax <0); // this collides with transfer function calculations + + //input + if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg) == _FAILURE_) + throw invalid_argument(_errmsg); + + //proetction parametres mal defini + for (size_t i=0;i(precision_file.c_str()),&fc_precision,_errmsg) == _FAILURE_){ + throw invalid_argument(_errmsg); + } + + //pars + struct file_content fc_input; + fc_input.size = 0; + fc_input.filename=new char[1]; + //prepare fc par structure + size_t n=pars.size(); + parser_init(&fc_input,n,"pipo",_errmsg); + //config + for (size_t i=0;i> _lmax; + } + } + if( verbose ) cout << __FILE__ << " : using lmax=" << _lmax <0); + + + + //concatenate both + if (parser_cat(&fc_input,&fc_precision,&fc,_errmsg) == _FAILURE_) throw invalid_argument(_errmsg); + + //parser_free(&fc_input); + parser_free(&fc_precision); + + //input + if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg) == _FAILURE_) + throw invalid_argument(_errmsg); + + //proetction parametres mal defini + for (size_t i=0;i& par){ + dofree && freeStructs(); + for (size_t i=0;i%s\n",errmsg); + dofree=false; + return _FAILURE_; + } + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + dofree=false; + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppt,ppm,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pnl,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + transfer_free(&tr); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + spectra_free(&sp); + transfer_free(&tr); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + + dofree=true; + return _SUCCESS_; +} + + +int ClassEngine::computeCls(){ + +#ifdef DBUG + cout <<"call computecls" << endl; + //printFC(); +#endif + + int status=this->class_main(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg); +#ifdef DBUG + cout <<"status=" << status << endl; +#endif + return status; + +} + +int +ClassEngine::freeStructs(){ + + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; +} + +void ClassEngine::call_perturb_sources_at_tau( + int index_md, + int index_ic, + int index_tp, + double tau, + double * psource + ) { + if( perturb_sources_at_tau( &pt, index_md, index_ic, index_tp, tau, psource ) == _FAILURE_){ + cerr << ">>>fail getting Tk type=" << (int)index_tp <& k, + std::vector& d_cdm, + std::vector& d_b, + std::vector& d_ncdm, + std::vector& d_tot, + std::vector& t_cdm, + std::vector& t_b, + std::vector& t_ncdm, + std::vector& t_tot ) +{ + + if (!dofree) throw out_of_range("no Tk available because CLASS failed"); + + double tau; + int index; + //transform redshift in conformal time + background_tau_of_z(&ba,z,&tau); + + if(log(tau) < pt.ln_tau[0]){ + cerr << "Asking sources at a z bigger than z_max_pk, something probably went wrong\n"; + throw out_of_range(pt.error_message); + } + + double *pvecback=new double[ba.bg_size]; + background_at_tau(&ba,tau,ba.long_info,ba.inter_normal, &index, pvecback); + double fHa = pvecback[ba.index_bg_f] * (pvecback[ba.index_bg_a]*pvecback[ba.index_bg_H]); + delete[] pvecback; + + // copy transfer func data to temporary + const size_t index_md = pt.index_md_scalars; + d_cdm.assign( pt.k_size[index_md], 0.0 ); + d_b.assign( pt.k_size[index_md], 0.0 ); + d_ncdm.assign( pt.k_size[index_md], 0.0 ); + d_tot.assign( pt.k_size[index_md], 0.0 ); + t_cdm.assign( pt.k_size[index_md], 0.0 ); + t_b.assign( pt.k_size[index_md], 0.0 ); + t_ncdm.assign( pt.k_size[index_md], 0.0 ); + t_tot.assign( pt.k_size[index_md], 0.0 ); + + if( pt.ic_size[index_md] > 1 ){ + cerr << ">>>have more than 1 ICs, will use first and ignore others" << endl; + } + + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_cdm, tau, &d_cdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_b, tau, &d_b[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_ncdm1, tau, &d_ncdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_tot, tau, &d_tot[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_b, tau, &t_b[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_ncdm1, tau, &t_ncdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_tot, tau, &d_tot[0]); + + // + std::vector h_prime(pt.k_size[index_md],0.0), eta_prime(pt.k_size[index_md],0.0); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_eta_prime, tau, &eta_prime[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_h_prime, tau, &h_prime[0]); + + // gauge trafo velocities, store k-vector + for (int index_k=0; index_k(l),cl) == _FAILURE_){ + cerr << ">>>fail getting Cl type=" << (int)t << " @l=" << l <& lvec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb) +{ + cltt.resize(lvec.size()); + clte.resize(lvec.size()); + clee.resize(lvec.size()); + clbb.resize(lvec.size()); + + for (size_t i=0;i& lvec, //input + std::vector& clpp , + std::vector& cltp , + std::vector& clep ){ + + + clpp.resize(lvec.size()); + cltp.resize(lvec.size()); + clep.resize(lvec.size()); + + for (size_t i=0;i +#include +#include +#include + +using std::string; + +//general utility to convert safely numerical types to string +template std::string str(const T &x); +//specialisations +template<> std::string str (const float &x); +template<> std::string str (const double &x); +template<> std::string str (const bool &x); //"yes" or "no" +template<> std::string str (const std::string &x); + +std::string str(const char* x); +////////////////////////////////////////////////////////////////////////// +//class to encapsulate CLASS parameters from any type (numerical or string) +class ClassParams{ +public: + + ClassParams(){}; + ClassParams( const ClassParams& o):pars(o.pars){}; + + //use this to add a CLASS variable + template unsigned add(const string& key,const T& val){ + pars.push_back(make_pair(key,str(val))); + return pars.size(); + } + + //accesors + inline unsigned size() const {return pars.size();} + inline string key(const unsigned& i) const {return pars[i].first;} + inline string value(const unsigned& i) const {return pars[i].second;} + + +private: + std::vector > pars; +}; + +/////////////////////////////////////////////////////////////////////////// +class ClassEngine : public Engine +{ + + friend class ClassParams; + +public: + //constructors + ClassEngine(const ClassParams& pars, bool verbose=true ); + //with a class .pre file + ClassEngine(const ClassParams& pars, const string & precision_file, bool verbose=true); + + + // destructor + ~ClassEngine(); + + //modfiers: _FAILURE_ returned if CLASS pb: + bool updateParValues(const std::vector& par); + + + //get value at l ( 2& lVec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb); + bool getLensing(const std::vector& lVec, //input + std::vector& clphiphi, + std::vector& cltphi, + std::vector& clephi); + + void call_perturb_sources_at_tau( + int index_md, + int index_ic, + int index_tp, + double tau, + double * psource + ); + + void getTk( double z, + std::vector& k, + std::vector& d_cdm, + std::vector& d_b, + std::vector& d_ncdm, + std::vector& d_tot, + std::vector& t_cdm, + std::vector& t_b, + std::vector& t_ncdm, + std::vector& t_tot ); + + //for BAO + inline double z_drag() const {return th.z_d;} + inline double rs_drag() const {return th.rs_d;} + double get_Dv(double z); + + double get_Da(double z); + double get_sigma8(double z); + double get_f(double z); + + double get_Fz(double z); + double get_Hz(double z); + double get_Az(double z); + + double getTauReio() const {return th.tau_reio;} + + //may need that + inline int numCls() const {return sp.ct_size;}; + inline double Tcmb() const {return ba.T_cmb;} + + inline int l_max_scalars() const {return _lmax;} + + //print content of file_content + void printFC(); + +private: + //structures class en commun + struct file_content fc; + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + + ErrorMsg _errmsg; /* for error messages */ + double * cl; + + //helpers + bool dofree; + int freeStructs(); + + //call once /model + int computeCls(); + + int class_main( + struct file_content *pfc, + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + ErrorMsg errmsg); + //parnames + std::vector parNames; + +protected: + + +}; + +#endif + diff --git a/class/cpp/Engine.cc b/class/cpp/Engine.cc new file mode 100644 index 00000000..12b3ac98 --- /dev/null +++ b/class/cpp/Engine.cc @@ -0,0 +1,70 @@ +//-------------------------------------------------------------------------- +// +// Description: +// class Engine : see header file (Engine.hh) for description. +// +//------------------------------------------------------------------------ +//----------------------- +// This Class's Header -- +//----------------------- +#include "Engine.hh" +// ------------------------ +// Collaborating classes -- +//------------------------- +//-------------------- +// C++ +//-------------------- +#include +#include +#include +//-------------------- +// C +//---------------- + +using namespace std; +//--------------- +// Constructors -- +//---------------- +Engine::Engine():_lmax(-1) +{ +} +//-------------- +// Destructor -- +//-------------- + +//----------------- +// Member functions -- +//----------------- + +void +Engine::writeCls(std::ostream &of){ + + vector lvec(_lmax-1,1); + lvec[0]=2; + partial_sum(lvec.begin(),lvec.end(),lvec.begin()); + + vector cltt,clte,clee,clbb,clpp,cltp,clep; + bool hasLensing=false; + try{ + getCls(lvec,cltt,clte,clee,clbb); + hasLensing=getLensing(lvec,clpp,cltp,clep); + } + catch (std::exception &e){ + cout << "GIOSH" << e.what() << endl; + } + + cout.precision( 16 ); + for (size_t i=0;i +#include + +class Engine +{ + +public: + + enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; //P stands for phi (lensing potential) + + //constructors + Engine(); + + //pure virtual: + virtual bool updateParValues(const std::vector& cosmopars)=0; + + // units = (micro-K)^2 + virtual void getCls(const std::vector& lVec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb)=0; + + + virtual bool getLensing(const std::vector& lVec, //input + std::vector& clpp, + std::vector& cltp, + std::vector& clep)=0; + + + virtual double z_drag() const=0; + virtual double rs_drag() const =0; + + virtual double get_Dv(double z)=0; + + virtual double get_Da(double z)=0; + virtual double get_sigma8(double z)=0; + virtual double get_f(double z)=0; + virtual double get_Fz(double z)=0; + virtual double get_Az(double z)=0; + virtual double get_Hz(double z)=0; + + virtual double getTauReio() const=0; + + // destructor + virtual ~Engine(){}; + + //write Cl model+lensing in ostream + virtual void writeCls(std::ostream &o); + inline int lmax() {return _lmax;} + +protected: + int _lmax; + +}; + +#endif + diff --git a/class/cpp/Makefile b/class/cpp/Makefile new file mode 100644 index 00000000..255eca95 --- /dev/null +++ b/class/cpp/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +CFLAGS = -O2 -fopenmp -I../include +CLASSMODULES = ../build/arrays.o ../build/background.o ../build/common.o \ + ../build/dei_rkck.o ../build/evolver_ndf15.o ../build/evolver_rkck.o \ + ../build/growTable.o ../build/helium.o ../build/history.o \ + ../build/hydrogen.o ../build/hyperspherical.o ../build/hyrectools.o \ + ../build/input.o ../build/lensing.o ../build/nonlinear.o ../build/output.o \ + ../build/parser.o ../build/perturbations.o ../build/primordial.o \ + ../build/quadrature.o ../build/sparse.o ../build/spectra.o \ + ../build/thermodynamics.o ../build/transfer.o \ + ../build/trigonometric_integrals.o + +all: testKlass Makefile + +testKlass: testKlass.o Engine.o ClassEngine.o + $(CXX) $(CFLAGS) $(CLASSMODULES) ClassEngine.o Engine.o testKlass.o -o testKlass + +testKlass.o: testKlass.cc + $(CXX) $(CFLAGS) -c testKlass.cc -o testKlass.o + +ClassEngine.o: ClassEngine.cc ClassEngine.hh + $(CXX) $(CFLAGS) -c ClassEngine.cc -o ClassEngine.o + +Engine.o: Engine.cc Engine.hh + $(CXX) $(CFLAGS) -c Engine.cc -o Engine.o + +clean: + rm -rf *.o testKlass diff --git a/class/cpp/README b/class/cpp/README new file mode 100644 index 00000000..0bb49733 --- /dev/null +++ b/class/cpp/README @@ -0,0 +1,11 @@ +The C++ wrapper ClassEngine.cc for Class (written by S. Plaszczynski) is distributed together with a test code, testKlass.cc, in which you can write a list of input parameters. This test code can be compiled with (assuming you are already in the directory cpp/ and you have a c++ compiler compatible with openmp): + +> c++ -O2 -fopenmp -I../include -c Engine.cc -o Engine.o +> c++ -O2 -fopenmp -I../include -c ClassEngine.cc -o ClassEngine.o +> c++ -O2 -fopenmp -I../include -c testKlass.cc -o testKlass.o +> cd .. +> c++ -O2 -fopenmp build/arrays.o build/background.o build/common.o build/dei_rkck.o build/evolver_ndf15.o build/evolver_rkck.o build/growTable.o build/helium.o build/history.o build/hydrogen.o build/hyperspherical.o build/hyrectools.o build/input.o build/lensing.o build/nonlinear.o build/output.o build/parser.o build/perturbations.o build/primordial.o build/quadrature.o build/sparse.o build/spectra.o build/thermodynamics.o build/transfer.o cpp/ClassEngine.o cpp/Engine.o cpp/testKlass.o -o testKlass + +then run with: + +> ./testKlass diff --git a/class/cpp/testKlass.cc b/class/cpp/testKlass.cc new file mode 100644 index 00000000..23f120e4 --- /dev/null +++ b/class/cpp/testKlass.cc @@ -0,0 +1,71 @@ + +//KLASS +#include"ClassEngine.hh" + +#include +#include +#include +#include + +using namespace std; + + +// example run: one can specify as a second argument a preicison file +int main(int argc,char** argv){ + + const int l_max_scalars=1200; + + //CLASS config + ClassParams pars; + + pars.add("100*theta_s",1.04); + pars.add("omega_b",0.0220); + pars.add("omega_cdm",0.1116); + pars.add("A_s",2.42e-9); + pars.add("n_s",.96); + pars.add("tau_reio",0.09); + + pars.add("k_pivot",0.05); + pars.add("YHe",0.25); + pars.add("output","tCl,pCl,lCl"); //pol +clphi + + pars.add("l_max_scalars",l_max_scalars); + pars.add("lensing",true); //note boolean + + pars.add("background_verbose",1); + pars.add("thermodynamics_verbose",1); + pars.add("perturbations_verbose",1); + pars.add("transfer_verbose",1); + pars.add("primordial_verbose",1); + pars.add("spectra_verbose",1); + pars.add("nonlinear_verbose",1); + pars.add("lensing_verbose",1); + + ClassEngine* KKK(0); + + try{ + //le calculateur de spectres + if (argc==2){ + string pre=string(argv[1]); + KKK=new ClassEngine(pars,pre); + } + else{ + KKK=new ClassEngine(pars); + } + + //cout.precision( 16 ); + //KKK->writeCls(cout); + + ofstream outfile; + const char* outfile_name = "testKlass_Cl_lensed.dat"; + outfile.open(outfile_name, ios::out | ios::trunc ); + KKK->writeCls(outfile); + cout << "Cl's written in file " << outfile_name << endl; + } + catch (std::exception &e){ + cout << "GOSH" << e.what() << endl; + } + + delete KKK; + +} diff --git a/class/doc/README b/class/doc/README new file mode 100644 index 00000000..71313830 --- /dev/null +++ b/class/doc/README @@ -0,0 +1,13 @@ +CLASS automatic documentation folders +===================================== +(Deanna Hooper, 25.03.2016) + +* the automatically generated PDF manual can be found in + + doc/manual/CLASS_MANUAL.pdf + +* the files in doc/input/ are auxiliary files for generating it + +* if you wish to update this manual yourself using doxygen, look at instructions in section 6 of CLASS_MANUAL.pdf + +* there is also an html version that you can access from the CLASS webpages. The html version used to be distributed together with CLASS, but we removed it because the html directory was too big. If you do wish to get the html source files on your own computer, you just need to recompile the manual with "cd doc/input/; ./make1.sh" (assuming that you have doxygen installed). \ No newline at end of file diff --git a/class/doc/input/chap2.md b/class/doc/input/chap2.md new file mode 100644 index 00000000..244374bc --- /dev/null +++ b/class/doc/input/chap2.md @@ -0,0 +1,108 @@ +Where to find information and documentation on CLASS? +====================================================== + +Author: Julien Lesgourgues + + +* __For what the code can actually compute__: all possible input parameters, all coded cosmological models, all functionalities, all observables, etc.: read the file `explanatory.ini` in the main `CLASS` directory: it is THE reference file where we keep track of all possible input and the definition of all input parameters. For that reason we recommend to leave it always unchanged and to work with copies of it, or with short input files written from scratch. + + +* __For the structure, style, and concrete aspects of the code__: this documentation, especially the `CLASS overview` chapter (the extensive automatically-generated part of this documentation is more for advanced users); plus the slides of our `CLASS` lectures, for instance those from Tokyo 2014 available at + + `http://lesgourg.github.io/class-tour-Tokyo.html` + + or the more recent and concise summary from the Narbonne 2016 lecture available at + + `http://lesgourg.github.io/class-tour/Narbonne.pdf` + + An updated overview of available `CLASS` lecture slides is always available at + + `http://lesgourg.github.io/courses.html` + + in the section `Courses on numerical tools`. + + +* __For the python wrapper of `CLASS`__: at the moment, the best are the last slides (pages 75-96) of the Narbonne 2016 lectures + + `http://lesgourg.github.io/class-tour/Narbonne.pdf` + + Later we will expand the wrapper documentation with a dedicated chapter here. + +* __For the physics and equations used in the code__: mainly, the following papers: + - *Cosmological perturbation theory in the synchronous and conformal Newtonian gauges* + + C. P. Ma and E. Bertschinger. + + http://arxiv.org/abs/astro-ph/9506072 + + 10.1086/176550 + + Astrophys. J. __455__, 7 (1995) + + - *The Cosmic Linear Anisotropy Solving System (CLASS) II: Approximation schemes* + + D. Blas, J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1104.2933 [astro-ph.CO] + + 10.1088/1475-7516/2011/07/034 + + JCAP __1107__, 034 (2011) + + - *The Cosmic Linear Anisotropy Solving System (CLASS) IV: efficient implementation of non-cold relics* + + J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1104.2935 [astro-ph.CO] + + 10.1088/1475-7516/2011/09/032 + + JCAP __1109__, 032 (2011) + + - *Optimal polarisation equations in FLRW universes* + + T. Tram and J. Lesgourgues. + + http://arxiv.org/abs/1305.3261 [astro-ph.CO] + + 10.1088/1475-7516/2013/10/002 + + JCAP __1310__, 002 (2013) + + - *Fast and accurate CMB computations in non-flat FLRW universes* + + J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1312.2697 [astro-ph.CO] + + 10.1088/1475-7516/2014/09/032 + + JCAP __1409__, no. 09, 032 (2014) + + - *The CLASSgal code for Relativistic Cosmological Large Scale Structure* + + E. Di Dio, F. Montanari, J. Lesgourgues and R. Durrer. + + http://arxiv.org/abs/1307.1459 [astro-ph.CO] + + 10.1088/1475-7516/2013/11/044 + + JCAP __1311__, 044 (2013) + + plus also some latex notes on specific sectors: + + - *Equations for perturbed recombination* + + (can be turned on optionally by the user since v2.1.0) + + L. Voruz. + + http://lesgourg.github.io/class_public/perturbed_recombination.pdf + + - *PPF formalism in Newtonian and synchronous gauge* + + (used by default for the fluid perturbations since v2.6.0) + + T. Tram. + + http://lesgourg.github.io/class_public/PPF_formalism.pdf \ No newline at end of file diff --git a/class/doc/input/chap3.md b/class/doc/input/chap3.md new file mode 100644 index 00000000..1e79b6b5 --- /dev/null +++ b/class/doc/input/chap3.md @@ -0,0 +1,517 @@ +CLASS overview (architecture, input/output, general principles) +=============================================================== + +Author: Julien Lesgourgues + + +# Overall architecture of `class` # + +## Files and directories ## + +After downloading `CLASS`, one can see the following files in the root directory contains: + +- some example of input files, the most important being `explanatory.ini`. a reference input file containing all possible flags, options and physical input parameters. While this documentation explains the structure and use of the code, `explanatory.ini` can be seen as the _physical_ documentation of `CLASS`. The other input file are alternative parameter input files (ending with `.ini`) and precision input files (ending with `.pre`) + +- the `Makefile`, with which you can compile the code by typing `make clean; make;` this will create the executable `class` and some binary files in the directory `build/`. The `Makefile` contains other compilation options that you can view inside the file. + +- `CPU.py` is a python script designed for plotting the `CLASS` output; for documentation type `python CPU.py --help` + +- `plot_CLASS_output.m` is the counterpart of `CPU.py` for MatLab + +- there are other input files for various applications: an example of a non-cold dark matter distribution functions (`psd_FD_single.dat`), and examples of evolution and selection functions for galaxy number count observables (`myevolution.dat, myselection.dat`). + +Other files are split between the following directories: + +- `source/` contains the C files for each `CLASS` module, i.e. each +block containing some part of the physical equations and logic of +the Boltzmann code. + +- `tools/` contains purely numerical algorithms, applicable in any +context: integrators, simple manipulation of arrays (derivation, +integration, interpolation), Bessel function calculation, quadrature algorithms, parser, etc. + +- `main/` contains the main module `class.c` with the main + routine `class(...)`, to be used in interactive runs (but not + necessarily when the code is interfaced with other ones). + +- `test/` contains alternative main routines which can be used to run only some part of the code, to test its accuracy, to illustrate how +it can be interfaced with other codes, etc. + +- `include/` contains all the include files with a `.h` suffix. + +- `output/` is where the output files will be written by default (this can be changed to another directory by adjusting the input parameter `root = <...>`) + +- `python/` contains the python wrapper of `CLASS`, called classy (see `python/README`) + +- `cpp/` contains the C++ wrapper of `CLASS`, called ClassEngine (see `cpp/README`) + +- `doc/` contains the automatic documentation (manual and input files required to build it) + +- `external_Pk/` contains examples of external codes that can be used to generate the primordial spectrum and be interfaced with `CLASS`, when one of the many options already built inside the code are not sufficient. + +- `bbn/` contains interpolation tables produced by BBN codes, in order to predict e.g. \f$ Y_\mathrm{He}(\omega_b, \Delta N_\mathrm{eff})\f$. + +- `hyrec/` contains the recombination code HyRec of Yacine Ali-Haimoud and Chris Hirata, that can be used as an alternative to the built-in Recfast (using the input parameter `recombination = <...>`). + + +## The ten-module backbone ## + +### Ten tasks ### + +The purpose of `class` consists in computing some background quantities, thermodynamical quantities, perturbation transfer functions, and finally 2-point statistics (power spectra) for a given set of cosmological parameters. This task can be decomposed in few steps or modules: + +1. set input parameter values. + +2. compute the evolution of cosmological background quantities. + +3. compute the evolution of thermodynamical quantities (ionization fractions, etc.) + +4. compute the evolution of source functions \f$S(k,\tau)\f$ (by integrating over all perturbations). + +5. compute the primordial spectra. + +6. eventually, compute non-linear corrections at small redshift/large wavenumber. + +7. compute transfer functions in harmonic space \f$\Delta_l(k)\f$ (unless one needs only Fourier spectra \f$P(k)\f$'s and no harmonic spectra \f$C_l\f$'s). + +8. compute the observable power spectra \f$C_l\f$'s (by convolving the primordial spectra and the harmonic transfer functions) and/or \f$P(k)\f$'s (by multiplying the primordial spectra and the appropriate source functions \f$S(k,\tau)\f$). + +9. eventually, compute the lensed CMB spectra (using second-order perturbation theory) + +10. write results in files (when `CLASS` is used interactively. The python wrapper does not go through this step, after 1.-9. it just keeps the output stored internally). + + +### Ten structures ### + +In `class`, each of these steps is associated with a structure: + +1. `struct precision` for input precision parameters (input physical parameters are dispatched among the other structures listed below) +2. `struct background` for cosmological background, +3. `struct thermo` for thermodynamics, +4. `struct perturbs` for source functions, +5. `struct primordial` for primordial spectra, +6. `struct nonlinear` for nonlinear corrections, +7. `struct transfers` for transfer functions, +8. `struct spectra` for observable spectra, +9. `struct lensing` for lensed CMB spectra, +10. `struct output` for auxiliary variable describing the output format. + +A given structure contains "everything concerning one step that the +subsequent steps need to know" (for instance, `struct perturbs` contains everything about source +functions that the transfer module needs to know). In particular, each +structure contains one array of tabulated values (for `struct background`, background +quantities as a function of time, for `struct thermo`, thermodynamical quantities as a +function of redshift, for `struct perturbs`, sources \f$S(k, \tau)\f$, etc.). It +also contains information about the size of this array and the value +of the index of each physical quantity, so that the table can be +easily read and interpolated. Finally, it contains any derived +quantity that other modules might need to know. Hence, the +communication from one module A to another module B +consists in passing a pointer to the structure filled by A, and nothing else. + +All "precision parameters" are grouped in the single structure +`struct precision`. The code contains _no other arbitrary +numerical coefficient_. + +### Ten modules ### + +Each structure is defined and filled in one of the following modules +(and precisely in the order below): + +1. `input.c` +2. `background.c` +3. `thermodynamics.c` +4. `perturbations.c ` +5. `primordial.c` +6. `nonlinear.c` +7. `transfer.c` +8. `spectra.c` +9. `lensing.c` +10. `output.c` + + +Each of these modules contains at least three functions: + +- `module_init(...)` + +- `module_free(...)` + +- `module_something_at_somevalue` + +where _module_ is one of `input, background, thermodynamics, perturb, primordial, nonlinear, transfer, spectra, lensing, output`. + + +The first function allocates and fills each structure. This can be +done provided that the previous structures in the hierarchy have been +already allocated and filled. In summary, calling one of `module_init(...)` amounts in solving entirely one of the steps 1 to 10. + +The second function deallocates the fields of each structure. This +can be done optionally at the end of the code (or, when the code is embedded +in a sampler, this __must__ be done +between each execution of `class`, and especially before calling `module_init(...)` again with different input parameters). + +The third function is able to interpolate the pre-computed tables. For +instance, `background_init()` fills a table of background +quantities for discrete values of conformal time \f$\tau\f$, but +`background_at_tau(tau, * values)` will return these values for any +arbitrary \f$\tau\f$. + +Note that functions of the type `module_something_at_somevalue` are the only ones which are +called from another module, while functions of the type `module_init(...)` and `module_free(...)` are the only +one called by the main executable. All other functions are for +internal use in each module. + +When writing a C code, the ordering of the functions in the *.c file is in principle arbitrary. However, for the sake of clarity, we always respected the following order in each `CLASS` module: + +1. all functions that may be called by other modules, i.e. "external functions", usually named like `module_something_at_somevalue(...)` +2. then, `module_init(...)` +3. then, `module_free()` +4. then, all functions used only internally by the module + + +## The `main()` function(s) ## + +### The `main.c` file ### + +The main executable of `class` is the function `main()` located in the file `main/main.c`. +This function consist only in the +following lines +(not including comments and error-management lines explained later): + + main() { + struct precision pr; + + struct background ba; + + struct thermo th; + + struct perturbs pt; + + struct primordial pm; + + struct nonlinear nl; + + struct transfers tr; + + struct spectra sp; + + struct lensing le; + + struct output op; + + + input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg); + + background_init(&pr,&ba); + + thermodynamics_init(&pr,&ba,&th); + + perturb_init(&pr,&ba,&th,&pt); + + primordial_init(&pr,&pt,&pm); + + nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl); + + transfer_init(&pr,&ba,&th,&pt,&nl,&tr); + + spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp); + + lensing_init(&pr,&pt,&sp,&nl,&le); + + output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) + + + /****** done ******/ + + + lensing_free(&le); + + spectra_free(&sp); + + transfer_free(&tr); + + nonlinear_free(&nl); + + primordial_free(&pm); + + perturb_free(&pt); + + thermodynamics_free(&th); + + background_free(&ba); + + +We can come back on the role of each argument. The arguments above are all pointers to the 10 structures of the code, excepted `argc, argv` which contains the input files passed by the user, and `errmsg` which contains the output error message of the input module (error management will be described below). + +`input_init_from_arguments` needs all structures, because it will set the precision parameters inside the `precision` structure, and the physical parameters in some fields of the respective other structures. For instance, an input parameter relevant for the primordial spectrum calculation (like the tilt \f$n_s\f$) will be stored in the `primordial` structure. Hence, in ` input_init_from_arguments`, all structures can be seen as output arguments. + +Other `module_init()` functions typically need all previous structures, which contain the result of the previous modules, plus its own structures, which contain some relevant input parameters before the function is called, as well as all the result form the module when the function has been executed. Hence all passed structures can be seen as input argument, excepted the last one which is both input and output. An example is `perturb_init(&pr,&ba,&th,&pt)`. + +Each function `module_init()` does not need __all__ previous structures, it happens that a module does not depend on a __all__ previous one. For instance, the primordial module does not need information on the background and thermodynamics evolution in order to compute the primordial spectra, so the dependency is reduced: `primordial_init(&pr,&pt,&pm)`. + +Each function `module_init()` only deallocates arrays defined in the structure of their own module, so they need only their own structure as argument. (This is possible because all structures are self-contained, in the sense that when the structure contains an allocated array, it also contains the size of this array). The first and last module, `input` and `output`, have no `input_free()` or `output_free()` functions, because the structures `precision` and `output` do not contain arrays that would need to be de-allocated after the execution of the module. + +### The `test_<...>.c` files ### + +For a given purpose, somebody could only be interested in the +intermediate steps (only background quantities, only the +thermodynamics, only the perturbations and sources, etc.) It is +then straightforward to truncate the full hierarchy of modules 1, ... 10 at some +arbitrary order. We provide several "reduced executables" achieving precisely this. +They are located in `test/test_module_.c` (like, for instance, `test/test_perturbations.c`) and they can +be complied using the Makefile, which contains the appropriate commands and definitions (for instance, you can type `make test_perturbations`). + +The `test/` directory contains other useful example of alternative main functions, like for instance +`test_loops.c` which shows how to call `CLASS` within a loop over different parameter values. +There is also a version `test/test_loops_omp.c` using a double level of openMP parallelisation: one for running several `CLASS` instances in parallel, one for running each `CLASS` instance on several cores. The comments in these files are self-explanatory. + +# Input/output # + +## Input ## + +There are two types of input: + +- "precision parameters" (controlling the precision of the output and the execution time), + +- "input parameters" (cosmological parameters, flags telling to the code what it should compute, ...) + +The code can be executed with a maximum of two input files, e.g. + + ./class explanatory.ini cl_permille.pre + + +The file with a `.ini` extension is the cosmological parameter +input file, and the one with a `.pre` extension is the precision +file. Both files are optional: all parameters are set to default +values corresponding to the "most usual choices", and are eventually +replaced by the parameters passed in the two input files. For +instance, if one is happy with default accuracy settings, it is enough +to run with + + ./class explanatory.ini + +Input files do not +necessarily contain a line for each parameter, since many of them can +be left to default value. The example file `explanatory.ini` is +very long and somewhat indigestible, since it contains all possible +parameters, together with lengthy explanations. We recommend to keep +this file unchanged for reference, and to copy it in e.g. `test.ini`. +In the latter file, the user can erase all sections in +which he/she is absolutely not interested (e.g., all the part on +isocurvature modes, or on tensors, or on non-cold species, +etc.). Another option is to create an input file from scratch, copying +just the relevant lines from `explanatory.ini`. For the simplest +applications, the user will just need a few lines for basic +cosmological parameters, one line for the `output` entry (where +one can specifying which power spectra must be computed), and one line +for the `root` entry (specifying the prefix of all output files). + +The syntax of the input files is explained at the beginning of +`explanatory.ini`. Typically, lines in those files look like: + + + parameter1 = value1 + + free comments + + parameter2 = value2 # further comments + + # commented_parameter = commented_value + +and parameters can be entered in arbitrary order. This is rather +intuitive. The user should just be careful not to put an "=" +sign not preceded by a "#" sign inside a comment: the code +would then think that one is trying to pass some unidentified input +parameter. + +The syntax for the cosmological and precision parameters is the same. +It is clearer to split these parameters in the two files `.ini` +and `.pre`, but there is no strict rule about which parameter goes +into which file: in principle, precision parameters could be passed in +the `.ini`, and vice-versa. The only important thing is not to pass +the same parameter twice: the code would then complain and not run. + +The `CLASS` input files are also user-friendly in the sense that many +different cosmological parameter bases can be used. This is made +possible by the fact that the code does not only read parameters, it +"interprets them" with the level of logic which has been coded in +the `input.c` module. For instance, the Hubble parameter, the photon +density, the baryon density and the ultra-relativistic neutrino density can be +entered as: + + h = 0.7 + + T_cmb = 2.726 # Kelvin units + + omega_b = 0.02 + + N_eff = 3.04 + + +(in arbitrary order), or as + + + H0 = 70 + + omega_g = 2.5e-5 # g is the label for photons + + Omega_b = 0.04 + + omega_ur = 1.7e-5 # ur is the label for ultra-relativistic species + + +or any combination of the two. The code knows that for the photon +density, one should pass one (but not more than one) parameter out of +`T_cmb`, `omega_g`, `Omega_g` (where small omega's refer to +\f$\omega_i \equiv \Omega_i h^2\f$). It searches for one of these values, +and if needed, it converts it into one of the other two parameters, +using also other input parameters. For instance, `omega_g` will +be converted into `Omega_g` even if \f$h\f$ is written later in the +file than `omega_g`: the order makes no difference. Lots of +alternatives have been defined. If the code finds that not enough +parameters have been passed for making consistent deductions, it will +complete the missing information with in-built default values. On the +contrary, if it finds that there is too much information and no unique +solution, it will complain and return an error. + +In summary, the input syntax has been defined in such way that the +user does not need to think too much, and can pass his preferred set +of parameters in a nearly informal way. + +Let us mention a two useful parameters defined at the end of `explanatory.ini`, that we recommend setting to `yes` in order to run the code in a safe way: + +`write parameters = [yes or no]` (_default_: `no`) + +When set to yes, all input/precision parameters which have been read +are written in a file `parameters.ini`, to keep track all the details of this execution; this file can also be re-used as a new input file. Also, with this option, all parameters that have been passed and that the code did not read (because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written in a file `unused_parameters`. When you have doubts about your input or your results, you can check what is in there. + +`write warnings = [yes or no]` (_default_: `no`) + +When set to yes, the parameters that have been passed and that the code did not read +(because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written +in the standard output as `[Warning:]....` + +There is also a list of "verbose" parameters at the end of `explanatory.ini`. They can be used to control +the level of information passed to the standard output (0 means silent; 1 means normal, e.g. information on age of the universe, etc.; 2 is useful for instance when you want to check on how many cores the run is parallelised; 3 and more are intended for debugging). + +`CLASS` comes with a list of precision parameter files ending by `.pre`. Honestly we have not been updating all these files recently, and we need to do a bit of cleaning there. However you can trust `cl_ref.pre`. We have derived this file by studying both the convergence of the CMB output with respect to all `CLASS` precision parameters, and the agreement with `CAMB`. We consider that this file generates good reference CMB spectra, accurate up to the hundredth of per cent level, as explained in the CLASS IV paper and re-checked since then. You can try it with e.g. + + ./class explanatory.ini cl_ref.pre + +but the run will be extremely long. This is an occasion to run a many-core machine with a lot of RAM. It may work also on your laptop, but in half an hour or so. + +If you want a reference matter power spectrum P(k), also accurate up to the hundredth of percent level, we recommend using the file `pk_ref.pre`, identical to `cl_ref.pre` excepted that the truncation of the neutrino hierarchy has been pushed to `l_max_ur=150`. + +In order to increase moderately the precision to a tenth of percent, without prohibitive computing time, we recommend using `cl_permille.pre`. + +## Output ## + +The input file may contain a line + + root = + +where `` is a path of your choice, e.g. `output/test_`. +Then all output files will start like this, e.g. `output/test_cl.dat`, `output/test_cl_lensed.dat`, etc. +Of course the number of output files depends on your settings in the input file. There can be input files for CMB, LSS, background, thermodynamics, transfer functions, primordial spectra, etc. All this is documented in `explanatory.ini`. + +If you do not pass explicitly a `root = `, the code will name the output in its own way, by concatenating `output/`, the name of the input parameter file, and the first available integer number, e.g. + + output/explanatory03_cl.dat, etc. + + +# General principles # + +## Error management ## + +Error management is based on the fact that all functions are defined +as integers returning either `_SUCCESS_` or `_FAILURE_`. Before returning `_FAILURE_`, they write an +error message in the structure of the module to which they belong. The +calling function will read this message, append it to its own error +message, and return a `_FAILURE_`; and so on and so forth, until +the main routine is reached. This error management allows the user to +see the whole nested structure of error messages when an error has +been met. The structure associated to each module contains a field +for writing error messages, called `structure_i.error_message`, where `structure_i` could be one of `background`, `thermo`, `perturbs`, etc. So, when a function from a module \f$i\f$ +is called within module \f$j\f$ and returns an error, the goal is to write +in `structure_j.error_message` a local error message, and to +append to it the error message in `structure_i.error_message`. These steps are implemented in a macro `class_call()`, used for calling whatever function: + + + class_call(module_i_function(...,structure_i), + structure_i.error_message, + structure_j.error_message); + + +So, the first argument of `call_call()` is the function we want +to call; the second argument is the location of the error message +returned by this function; and the third one is the location of the +error message which should be returned to the higher level. +Usually, in the bulk of the code, we use pointer to structures rather than structure themselves; then the syntax is + + class_call(module_i_function(...,pi), + pi->error_message, + pj->error_message);` + +where in this generic example, `pi` and `pj` are assumed to be pointers towards the structures +`structure_i` and `structure_j`. + +The user will find in `include/common.h` a list of additional macros, all +starting by `class_...()`, which are all based on this logic. For +instance, the macro `class_test()` offers a generic way to return +an error in a standard format if a condition is not fulfilled. A +typical error message from `CLASS` looks like: + + +`Error in module_j_function1` + +`module_j_function1 (L:340) : error in module_i_function2(...)` + +`module_i_function2 (L:275) : error in module_k_function3(...)` + +`...` + +`=> module_x_functionN (L:735) : your choice of input parameter blabla=30 +is not consistent with the constraint blabla<1` + + +where the `L`'s refer to line numbers in each file. These error +messages are very informative, and are built almost entirely +automatically by the macros. For instance, in the above example, it +was only necessary to write inside the function `module_x_functionN()` a test like: + + + class_test(blabla >= 1, + px->error_message, + "your choice of input parameter blabla=%e + is not consistent with the constraint blabla<%e", + blabla,blablamax); + + +All the rest was added step by step by the various `class_call()` macros. + + +## Dynamical allocation of indices ## + +On might be tempted to decide that in a given array, matrix or vector, a given quantity is associated with an explicit index value. However, when modifying the code, extra entries will be needed and will mess up the initial scheme; the user will need to study which index is associated to which quantity, and possibly make an error. All this can be avoided by using systematically a dynamical index allocation. This means that all indices remain under a symbolic form, and in each, run the code attributes automatically a value to each index. The user never needs to know this value. + +Dynamical indexing is implemented in a very generic way in CLASS, the same rules apply everywhere. They are explained in these lecture slides: + +`https://www.dropbox.com/sh/ma5muh76sggwk8k/AABl_DDUBEzAjjdywMjeTya2a?dl=0` + +in the folder `CLASS_Lecture_slides/lecture5_index_and_error.pdf`. + +## No hard coding ## + +Any feature or equation which could be true in one cosmology and not in another one should not be written explicitly in the code, and should not be taken as granted in several other places. Discretization and integration steps are usually defined automatically by the code for each cosmology, instead of being set to something which might be optimal for minimal models, and not sufficient for other ones. You will find many example of this in the code. As a consequence, in the list of precision parameter, you rarely find actual stepsize. You find rather parameters representing the ratio between a stepsize and a physical quantity computed for each cosmology. + +## Modifying the code ## + +Implementing a new idea completly from scratch would be rather intimidating, even for the main developpers of `CLASS`. Fortunately, we never have to work from scratch. Usually we want to code a new species, a new observable, a new approximation scheme, etc. The trick is to think of another species, observable, approximation scheme, etc., looking as close as possible to the new one. + +Then, playing with the `grep` command and the `search` command of your editor, search for all occurences of this nearest-as-possible other feature. This is usually easy thanks to our naming scheme. For each species, observable, approximation scheme, etc., we usually use the same sequence of few letters everywhere (fo instance, `fld` for the fluid usually representing Dark Energy). Grep for `fld` and you'll get all the lines related to the fluid. There is another way: we use everywhere some conditional jumps related to a given feature. For instance, the lines related to the fluid are always in between `if (pba->has_fld == _TRUE_) { ... }` and the lines related to the cosmic shear observables are always in between `if (ppt->has_lensing_potential == _TRUE_) { ... }`. Locating these flags and conditional jumps shows you all the parts related to a given feature/ingredient. + +Once you have localised your nearest-as-possible other feature, you can copy/paste these lines and adapt them to the case of your new feature! You are then sure that you didn't miss any step, even the smallest technical steps (definition of indices, etc.) + +# Units # + +Internally, the code uses almost everywhere units of Mpc to some power, excepted in the inflation module, where many quantities are in natural units (wrt the true Planck mass). diff --git a/class/doc/input/doxyconf b/class/doc/input/doxyconf new file mode 100644 index 00000000..0c2a683b --- /dev/null +++ b/class/doc/input/doxyconf @@ -0,0 +1,2362 @@ +# Doxyfile 1.8.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "CLASS MANUAL" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../manual + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = YES + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = YES + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = YES + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = NO + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = NO + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = ../../README.md ../input/chap2.md ../input/chap3.md ../../include ../../source ../../main ../../external_Pk ../input/mod.md + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = ../../include/growTable.h + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = __ALLOCATE_PRECISION_PARAMETER__ + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 220 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
+Output written on class.pdf (13 pages, 191829 bytes). +PDF statistics: + 99 PDF objects out of 1000 (max. 8388607) + 70 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/class/doc/input/latex/class.pdf b/class/doc/input/latex/class.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e12acb94252f0e5e0aa5f7bb1e9a7f1e73d221fd GIT binary patch literal 191829 zcma&LLzpm3kc8Q`ZQHhO+qP}nwr$(CZQFMDxBu?5x0%D#rRtnj6>nrDse*_YEh8N( z6zRgs=mr!s0Rw@(krfmV4-~zOshzot1py-yJ0rpWx1i|7ENxs&oe1c~Yz$pYMNEzD zO-!Nq_@JC!oJk+<00MD%Kll&-gSOJYVz^w`?6HW|eYfD8v zQp0fz{rj4CNL?8#uX|o3hc`DfH#6=7(>-si|e75Q*3qBoUuT;$Gd5p!I|MD6=ozG9(#0`uYCSY zU3rONh=YA}|_>DS`SqrRKwRIR6m7*`ycz$~%AEz^U?1zL&`;1Al_{aj}w5?XabunRuagE*bO3#Yz)(dfp{B|h-80>2 zlmp=WtE^JPef@?7g)an-UM|$uVM|h_&s?0)Ui*TUTJ_-fW%bNX$4aK8Pv|(Ub8~gl z27T2_*p#W5YZuMCrn|+~;hi631BV@Ke22^BN-v!7pn`(6sH4FtbxCLq4}s-*!39zX zGGh>z_N!!2t7xxrnL;_^Eo2I-#&$A~Mr7({P^Lh{m8Sf`HCx_IY^`#&_5$6B4mb;!<)vNnL`n%?z_S7}u@d>K< z;=MltfCAuK3hP9bTMr-XsD&dg_|?Er6QS!#t8Q_o4A(PS9Ao+(DgpNYU41FN|I{s7 zi*KUfUSe2VRp}L28p(iz+prZ*7@+|WP@?NWo*rnWrLvjDmu-B=d~}OvR-{Cuu1uef zI18p6eQ+@O3->X?@ga|;i<6EZ84|bb_NhQq zoAvsiL1_=gBCG33rf5J7XSf`L#Df2J5ZqOje)h~E<4CA=|6qnRR60>s7Um3L}D z`G*dq2M$bipy~a3kTxQmdVNTM_`Bg-px@EvPX5$)cHXur+$G6d^{Yit#+APHHa$hbqpCjQ?Bhs+b-_@+f!fs3@v#Pf45k*sc z8O3i)pLu`Z=kFYW;h&2QT|>OHUkocU?g0=dxnvimdt}W&MJ!A-h(D!-d`V($gq{G; z-=8FN5PsI!4~|$H8YW0?{9w=m^;`6Szmw7G)o6c!YQJP;C{sI=|6c+BJN>`v$;k4* z$S6BA=l@kkYc;g(x7kqslTn5@5@6QZY7tY6FcRAU)XObaJg$PhO&k5)6KIe<&&Bd3T@#2&cMjx|j#AxNBRt!=W!kFqs8^$k;U+z2# zsbYDViDySFan0p8a;0VpYIH+}eEaK~*+=x)xxJjP%g$YuZ8qyzTI_xkseYv`r>97! z)X?NP`n`C}^~LbV^UZ6-ViLn*NMjOJ!EjqkyRjf~&)t(*`3`HZx_6ZF-`o0052BC= zx+gQ!_E)QHb`HYcsSYM+ZZl)rBCc%&_vc{arZ0MD=NXXWka5c+Qof+y)?5{9r?)p} zd8#+10={A``AnG=5=ELkr>T>aGG(fd1=jj`xjoNhufYQhXxQxE%A~SzH)lB|vTk1b zp0HBT;}R7_*1kE91A0)$ zuwl;@h-hi;@4@e$fP?*vGS+7T^XypKo2i*z8ysDeS1Ny+tMmp~I8=n9>9)POZQERb z?vHvQ3wk%4$*FlSs|0665pQwI_*?;R-uKo;wr z;y%lx&!A=LA^Q;b+e81YVh>Z4sukrcSl^?14)+Oz%y+@?*!t*Py2)bM`tb zbhF1k-Ir)zc6tJm31rWCnkzPnkYYlo4Hr<%62m3SG5y+IAL6|v zS|@c$aEiiE$aJdgloPqrSr3RQEgqq9uxM19%gPcnG;*IeYE4t2p!I+`Dl#SK7Lo^dVP* zEt~V~m|8dMk~=hO-PXUnyqui04g$sN&BXoj895^3HYAilNhxqCSpu6DeVkt&nQ>_i z5FZ3UK&;Q(?8Jf?0vTz=(#8F8a=WV9>a$9)KDaR_QO+pdq56D2&o8U}<@$UyckcFl zCe7P1=lyh1`WJ=?WIALbr92xLIuNZfza~fVcAHv8iSVIXqa=%#f+gN>Pm!Wv3S`M1 zN*|qXLSqPp9Nke$Bm3Wm&gTY3v$&7_Mn<&~MPBYj2jjN#r!z<7na41M3|c z8gY98Y6xYAqhyMy#rZvvNdl_BlHTh?^(Bi!uh7xrT_gjM0R||*U_xmCUw!hWGvd-3 z1{Wc37a@OwTEwcFjp5>$Pp6{2$AV9*=Imo!MIy?xp0?(_fyOE4i{7wI!J{%C$F|8i zM0q1|z%L=U9Dr)&S~cJrh?E6zXfB`sbc26?4S#QQ!_N#2lrMw;HHD0}3G-1k z3jAJB@JL-dKHRs@)YtUj8<0)t5F_uXuOdW8Xr}tjvZqvsH_|4S)yfDk=eFw(#{C9Ii_g4em9bljeUdV>KDZGHVtAwFj20{%#Y%35BAHnEr zJ>HOj=lJj|1_=_T>cPk1tQ!1kLD&_R1wb#a?+S%e!k}cbnzq{fFmDCQ8WmI>&c@jd zgEmz5%CM}HmsjV)jyQ18=#Yx{Y$_gE7|>fDCW!Vqu^Oc%TXi4TsI3NofTM|Rh22cboK&$Vo z>gDh3_{z9PLIWw<(b>7{fZNQlluZ$Vf$rs;Z11-Vm%FJurC@Wd{ngLk5n8jS8)cE5 z?cTj_@7MPQ(Vt-|8Wc*n4?;4+!)B^g>bsk#p@`bz@99FLfe_c-+){-6<{;41I{rwz z7i=#p+T4d`!f`um?QO<}BkLNO&HgZk;5IQ! zdQP(_N9((V&bmhmp}>3&r2q&$Lh|;Nj?eGU$FEHiL(OYvL~=Jq#c{BWg}1(>rN}BQ zU)>L?lNy$`yk;vqz1LE3aO8K+0;ZqcA{$>uj_H$z$bpI5OCKUF;`7_H4}_aRMPJ4J z5ty$h6*S>aso+^QLZYdl)YvmD(;msrROl-&O1BCy_H+v10OGN z&6Pz50?y-1*w}+`duY`NnL}Wp1*HH@6D3K@!-XC}%sG{fwK zi(=lGb@yiHUYQ(#=Ur*q60%hC&=kPb8(9D6@+y%wrSa6VP z8cEzctCjo~rUq$iV1Osf_Hx7CZ^2ndz3xzh%T~M??=Ysq4$)^3YeY^d?eW zjetmG#3Z%Gs1(o_>J&hcvU3Ld!EBUs9%eX`5;xxbF06Q_jz@DOGiDSB9`#?ZgV#+! z(K}WQ0CgTQL9jNk;j5*BtGg8l!xw@x4v0;+0vneL$I#|NkvDKacuPq{u0OIt3KG8h zJ;bvB0Y|g&`M`|18pcYM`FRu{bd`CbZE1w+xBl;g-C7QBHVnWi8NGPE62l<*&)Npy z1>C1SYP4;7tLXAl+pg=Vj)`;D?t1OFq~?2X2yyO5kRAxoQ>8Znm}Fov2l%QGJY@`G zX)90c4;+KmU|H&YT18aMl@b!=T4?K3K7J0UEa}oL)|*?bR=EIIUk^`a^P^@M7y-ae z^bJzq9)AVqun?c4uPQhb_2-1*#xgQ&=>@`TW}K+ zJ+Pomqo+4I{&%iQLe0RrmL!_M-hbiilC_y|A*iU5=Wh7^PdS)jGUWRw5&=aJyuO|$ z;1UoVdF8*I!56AlVqLFrtQERIXj58FCtHLf^>FKI);O>*6EjFQ_Lg?KabZb;$zZ{A zDG8zFt_%iZnlpb(oc;~H($g=GBF5M@!-)S}NyVkR%LQD<@41)vym_G`CxfcLngn}} z6v>_M@8Yez&ncEIyL$CAc|_i|8ZFtBQ06#99-$Kd-5J?Swc-N8fRfj^A?U&B?@ZgC zd29$8n#;5fkwQ*UPjC6Ti|EMalrtdYpGyp(lCZzNvFxo1XJf((D}`+6aS^{t&;p3o zS@Q8?lbQHnWUMS&$OAwNJb;$)X?KJoXLEB|@uq<3YLjmV0agOGM4ctyl)jO!&R|}> zL+_GeH$tV9_=b|HsHT}a+*MG;QP3Yi7z6!lr*F@PqrjEcqj0~C`s6C119Pwv1_d|u z1%D0EpZe~)`NvVFdOEJCF4H5iyC(qq)kVjRPr0VRJ!vk3S8dDOQZ^zHcZxAtRyuxs z-qHj7egi)a7n>YnEVsG6gD5?Hd^@^4N&A{x5iUxHlh(N zNH)H|yhOz1dkCi$eLgg!7Dw~UL0Is((AKg*(mN_U6lV_Jsh^p%Jf;>YV0h{ zYgX6Iw3Bk%pBVL8epT1A$fqtYw`jg-xlO3!G93?W=8wzy-Tf1t2IE&U#Q~4rGvm>O zqMqD>#N6rYqLMcr2BmLf>YfHysOt79AR+wRNK=rS0SlB+RWyiiz&`k8q56vR%Qo8t zkaOGu1UkB7$aF(D8kI6}}_I)X3vK2bRc}V(|McNk1I%+*teRS_u~zIBYb)&E^A#zXqSAWK36cZ*wMQ{cIem8t%l9JB!QBjcafC ze)?y?+*LdUA3eZLJ~4(0qr)0K+_`*r{EMjU+}~M?D3f^eZ#A^_yRYj{pMd;lHdvPM z_-k~H^{uPJuNzqb`{Jtf7LA5V)wTUj)edXEk)J!`?ZKY?kS)x z#lnbNOxw_+Y|UynGHo%G>v(!xaYp5*1lsMj9-ja2Stw1VH#R{g4 zPnfWcAb1dhk|Boxg}fH?o7kluRm}$%U=+u*=>3>>2rvD{WW@2Dw`M+AeQ4Q(%V==hC_j(1n#z4i^t3vgrZUL`^ zK>~>&o3V6)WMR#;?X5IY@%T#*`tS908l@(a>hnNeny&+@C{@uWK0lM!;j_EHSQb61 zB?-|zvwO+p2n{NFI3q&U3tP9n`|9_=n00>}zYc%kq-eUh7W4$UKlOC>R9eORyYJcE ze0L;1(7YEFf>4&iZ6)es)A8>8e-J&mK0kxdA#%v~o0WLHv?X!|Dqi<@f1d9FYqN4H zfrwO$&ewjPUF63}nPmxrJQ(S#t6HShb7-pFZ?TL9c78mmo!OVFz2*Chkmbp%*7~E> zx^vcD!M76h&8V<#1&K9ISueJI#ir4qty?~L_NV{RQ{;0@&Pa^{1wP^xq zP?Y*WnMvu@oSo3s($Rg(?Q?dJehhr9H(K)S5Jj|gJj)-4hvrx@h!*;YM^Jk(0m30V~cMiT=1P{~+IUfKI$ zV8_(GkxSnMFlcehM3J)&Tk16kGI7x%P%Aebw?k}VAcHp@_V%(&Llq_*SG*VWH^~sV zF?0WXu6=;cLzu0d0^;?a^r?MM`*lQ0RG`QX(~X}T?4E1@Q?cwMve6YPj{}{KP-*Jp zKOD7HfSCk&CYg(iSGS+*J;n5KWQXqUuR)&Zsj2oZx|<&Mw^~!IUh`Y!kQnqq$Gi3s zQ8o)OjXCI)3pIQBSVX0V+d&_SKrN~%Oq)a-iM4TJOrnvAv~e``_$oG+5l1NBhDOa#?f^OO8 zUN}I+s(y$;M5GIHl0vn!YXu)#T%Al@xQMbef(ipsGHqx{?C`*quY#6xVu0kgn#6H&+AY| zZGBB@lxJ%Z+2fVF4|`iX)GmFk^Gvwc-KsS zHB2;K75}?2RBQgAu5L~Pw*&GRN_ydvV*?q8oErqSn}BIp6ttSo`FzU-x6erSnrzYz z{BR|Z)l2Mhg2SX^k2!e&0e%=Dw@Fo-hznP$4to4GLXpawXSJAfSvRE~RFlqV zE8Vvg>U1>VZNLZNx-!5KG9U#Q>O8#cF7YVA&3s-~LR~=rb+d=v3u|T>icCsF2h%XX zo^_9pys?6H7)NgPH;J=@q3UAEh!~)6lz(mMw{NktKZHAtdHa#q8G4SJcT9mW102Su zk^-}~0;>oLuGk8rfT;;!zR8VSef3ON%XZc!GRTC>jeUP9{hsDF;}GBBbR$F zzRj-bD{&><@tnovKNJz=wY+{AO_N4)B0ai%4p3ez!IS1RJsJeN*C!DOBXL`}l_+gP zsro{iZLo8w7c2_49fx9p)s+w1c#HscurDFEg&Xb-^S+kZ;(J$^@U7_`ooa3TeG!Uh zMPfY=Gap5pWRWb}Ll|Ejb z3REHpWP2j#&R#3!+rC1GbB>Z_g4+s!kxle>ks-lU;Q{bW9g1RxFt)F&)mN~4Y$T?P z3YRr7yIYv0LS)61{X1Au=00Ltenaa9X`%Y6b&L zN74FzkEwpVvpS`*5yvKZ-IKC+Rfmg^yvn_{&tXybapq($^I|#9=kp=|0w)k=%=gWDL^!d_iDFK1LY~*erH9#R!wCit0CpTZ zZGV`|Sm(xS%+|_y@2<@VC8l2Oul&IsKRzL^fhcBsQU-Q zl?^*2MGK>c1vAxGG=@H2=i^x{EKLLER}^d!AYBf>?1p(Q;Hh)x|5FZ1l1%KcwUU9; z_O|31jO*f*_o5F7N>TT99Ju3U2X%x*+dvaoSsGzIf!ap1-1+CP5K#vA&!F3nd+3-G zlK+*SI~58yR#Wkz?M38FSyvfE_UwVC%mey|Kj|c$kRlJ~2VQRbGd5SiSRTe7@&O)K zl$J$Wgz9cr<^43S>}8(QAa^_~vlUOH!eDQR9CDI^Sm33;@6=R&?!U&Qq^|4!qPOrt zQkk8T9tXD;K@pus$~XjY>jk+6Ad36+(0}zGs8ak|_5b1^{+G~*k)4zE|LP!eF=Ugs z$zJmG8bM=h6mcXUuP z7jLC1ZX(To>tc(K*s zwyt|IWAQEiDCwUs@5)mvn$HK@CTj19P~d7KF}vVfCbO8RJnE6T5CY?ocD4=+#?cyi z6H5#n_q)Zlz%<1VhbQzWYzugEamQR-fQ{;zmtP|us1ar(agZ>h&~E7xi0zPW#oF`n zef?dwK{u($s9gznh^)U2_uYSsZ6*1T5(#t>7kx=$&turFmOFb6BFWMOGakxHKAQ=2E)aYW$cn{+X(# zW$wA0bx+xlP(MQxTiX%UFxxdCH0nuV+{tSmrtk0j<~M~+ehHZvcuJR0mJyiJEUe*+ z!)&b=1~vz!tCw6Jvu|tO=37cFJ-^Wm)M9Gcv!?;MBm%X_po0<=1RKl~p(kjDW|X(K zSGU?^-7NYIdPGFxm6s35Eu%Rh*2Haf1rp?Y5W?a<&L1li5Z&3tx|e(2%M4k-v0&xD zL=c5q6FhY)va$+naK{^yU zF*<({Nn?Wg@@qmzQJeh`&~v1mgmz{I5|xZp#S+!O72C$=zP(FpF{bb~MkKwiXh2m; zKwOc41b`3^3F zx+-D<)Fc^%W}#Rg3O6BCEa&@4O0o#AJ@9Y!Mn?1x1ECzKR@zmPQjKPrX%P^+ZQ)4w z5uFF5i2qS-VL-u9jM=2L8_ z1ugi30)pUV_g~czgyf1VD6k@_E(jGxJVk9aJ3xasZ~79QaNsJ-9a%O*#ORbPUktj< zwI0Om(}z?{`im~`Eg1h08eRzZ3j8?c`83M81=P?3yQmhh;qP6I8y%V zl`-8lsNgwLK$GUw_uVdJghsr|mDGeVDQ%kuxWw>-q2P{>qWwk4mJ5!)Ihs|$ve#`k6zH5J1pwaJ;7D2I-e=J$hw^ z?F|%+1_gbrl{YxljcSD^UH|9x#)-aqFhF{39MVXn9MNz}qF0$I{X&{{* z+TvXF)#yHFU|ERKFV$ps)m)itOHX2{PrA|8b_ajw8s(^w*DL)G5@0Iyri{L+2A5ZL z75w$cEHe&$B@@M}Nrt40Hgdm@EA>ezQKgBRdtc_+w<1lw+qb1E+h+m#owxTo=R(a^ zZr&OR`BLkli8Yn(LpI*pD=bFe545?rUjmi=*0_osIaf9GSzX_J4&=F*L3I0 zO`Z?b)v*SaNkY{-K0ROatML~E(u-w5mbqR^jZ#C4qPj2nM7WG&2gB-gt?EnpKm47k zOajV1)3pI9h)g)X0KUKY_M``Dm;9@%M-z`~0#hX=)peCR{@{FXFD8V>Xys4T@p=#{ z6DgyS8hEgBk1sL_^@{h7+J&SScBgIcZ9JW*DGE`dRCp>+BFoY@k%o_)N<2HAYqb?v zm=Pmgb?Gjo6c#{LKm)=MjkZ?evAcQp@YFTIMJ6e6-&X&<;$1!H-rm;D^m$w7DrYQ! z1FLE>{~B9W6I@t4-R=CX?LzjjdTSo*W_jbX!NRwkW|iw^50-^e10mfgkQHK#ay@{9 z@^*A3X3TgjgF^>GqOv*p{!ZZw7DTUfE8Y?z^8v-1$68ux5wqr5oBKq}@hhJ#^)%g! z4#*=z+4c5vn2|$_hHBOv)rGE^wL-^h#C(m3UcUxcn`~bLFOXZz`FGK~2baLbVQ>%y z%X@kt;qkRy^w~=2-o$V^8tN-UV%mOc9cyhP>_6V6hS9m-xQ<{%qg6ye?Y6nI_&_R2 zibtd=-t)yIb9#DI$E5UWK{9~nZU1${4sO*{TYUG(tso~qtFf3cBKGRS~22Q)DN_%?)xB- zC_yG!Px%TcHW+e=O35}5bh;aAEp(U_DbNk{^1G7G4#Xd1z6*FLll7aNVBJ0toL^SLz zIvxwJFVrh=jyc}*qlZCl+pPANHm)?hAXLG1uq}C8UNf3S4)H#GH(=!BnUM27_w?zx630@pa1e!#X8{HUWVoGEQroW7Hlr{MUK%3nFbIL? zF5?4=Y976y)9g`?DfFizIrv#=H@v~HCp7YcrAx+@S^go!g>MZk`qWl*Ws4D2k*eVRssTB=CYtYoJIS@xp2e* zE8Fl9pR(Ku+R@%59d+%lXLajKXcFnmlQZKgrm~#?s|NW?0#r!-6*`k0GI}a>C!tE7 zN=$3gr*+n7Pe_QQ%4QrTa0GzZe7unyg;0on?Sqiv)Sr#~@@WG2e?B(yE$Z3mCP83J zo)~t(Z$L7z7LW-8vz}s&%a3Tyn)u#A8w2zKydP?yiW}iOeH9ezC(#AbsciXnq^nV~ z%&8Nd!_X3bVLP^zYOrEniFBngK0Llodx!jjcVM}UW8q1=JW7Yh9G~8 zgWE_lAj;k);1O?a0X{vxI?N!krq}!oA%GbLMoDD4PaoRL-45vqCq~vj`x;r65Q7^J zF?i)S2RytXU0itqN24zYJ=$VR=WdQ!eWd{@720EtoB;BA#dYuoG^mSBgEp>fqn@zm-aiA0-9p|Q=_t};174il@_ zZC+?leI7-@4IuZT90-2n`StcT1wPYqg2cgq2n!)F$0_wuN#ROCGFoLTq%g+qa_@w6tG zd?4XU(_xMI6-C)nB>HHIqQ95wW_7vku%LP!z2HuULX05RVxRY$Y^X4#v0zLMdT>R% zhF%fjW}}Mthn6*4f^s0PB`1vjR%JrvJPsa0(~bm-KHd;M0)BIUgHkD9e^|rHBbSWD z7mt5F>;OgZE@nsY^}q7`r9E$kG`LgQ`3T1tdF)GJcvv))h@172_UIJq<}ch%-=ic1 zn%Kj(^ZkAgkH=H3XkH)qJ1-unN8U-y9}H20FQE=%mw_q9#cL^s%JUT_@DTnRBYaJH zP_$7?&lR5B%ucUwoCq2YMK85a{{5b9&J(HlqC22Ge?)VoKE5HRPyMoX03ZoKLsKq1 zcrWsZ5G3#Gz|T2B%>z@cU`>_f_!&|5-Q-OZ1E?GMAyx@~&JMi)W}Bp3v4gHdR7n~K zq&%I@RcC^f7$^Mso-R(y2nokF^LVf(2T%~be(Rtu5lAHE>%HMRMfOG@mj!$ry`u`E z!KSI}*Hh>URpsiTOmOVzeZl*0$K&!CBIZycT*CA-P~8)Lh>FqrD<$0faOMe7R=;@f zz)2RKp(%bPRWG8oc4$Q;62??9D-0n*#GdS<%v1iCwgvz-A*1cgP31iTx}tFdcUb`c z!IpuL<-^niJQB3`1CA+9d;KrIjP-x|GDa2-rvIxitJRRUKW0Pd`&Pd&;Rv05__eTy zc7g9jgWTN?KNM~&nV<$%3>Y9`&G|eVJapjWvBl$8!bJ>x1#VwZS4%!$_FYm|WXJRWc#gHT;x`~Y9pyoFYJk0mFVl;=-nF;-J zp-ZN#-idQ-5ETQ%gye5HE}$5q;X;VbU_+;f;K6}F^mu>C3ez=ekhU0s#4Zw=gmETA z7%d_Hj)9y9X6Fqtz(@-5h5-yh^)5)^+VcZ}HhCwOozwlv39nzJlwbw+13?yPy&5I+ z+-b8fRZ~Q%?<+D_DB3@p+W?R4WTCXO-3jrPItjIX@1isf;3`y%Y|8>3Ic*e>P2!ih1gwJPVt=xBud^c_nW$d}@9|4REufC3Jef{>jq!9V-J ztq@eg0@(TzV!NJ$JV05ou_~KoQrldc|HoKomF%-9)04v z<#K-33EOPvDV&U|>O6DAGZQ^ZO9}$_L1H(=f`6aUsIop{>MfPsmQOcjam^B_`)iWO zCr{X53-dKesLR1SlQ#3XJBY2f>OzI@gnJL|?lgs2GQC`??3GNdCS+4%Va zDlYy3fkQBVdC^TwOC-_eKbPYj@ zQ8=ceaYb1fm05{WTx&|TL`ZEcBffNOb{bR8&%B-iCfVfv7jW4A+jjS+eg4sJyLYG~ zSU+QZ)Ngz3+cxvQ-Lq?7?Ge&RXUncY~M;|ynq0Cecgx9n8H z5&{;|tvgI{P4hR154b>xsAkN34FBzTo{6rhB=;FYR46I}I{Gvh4^cueZ~#;^EK;*! z?L&B4s-tpZqls{TCI^`|04fHsG#YmIJqOu#fEh%?(Bwt7giQv_A~1uJSg<_Eg|^h+rW8*!m*|xPj|rfS#%vHSePJ^yyKht+>C;`!aP%hG=-L$ z$iARYYsGL^&5e? zqYsCCY8K>yrK&eKoLyRw9tON=ULCtz6BrSDBS($D(AbJ!u6~t0-9YSJSDyk9}ojS^! znr%Wr0lA8mifvj7ixqadRO&VlD}yN%ro7q%M}yLURg9A&fc*Y3mLq@oy>yy56xA?8z zFHMh%PCO7V4##0(BJ1ax7uh58PnE7Ir%y9JU5TJn&iS5VFI#bidv6KVGtF*sre;s- zFKMATFf_V$JsYt_<+j$oi8+2Zlzm-;()7u}|UgwrytEja#Q(J$EZ zwp$##7W+0{&r4zN%{>P%_G6i4cp-IJs$lV{n9=v%kZw0!TIo%K6bq?>bL@nT6@NFs z@WaAmapkD1kgrc>_|f*2wDR8 zHvA6e9UbAEgNzf2Z69BGRaQHu6{$h!XwdGg*?!g4O6Aq(-)*(MA51pSWba#c`#ZL& zOwwn=>1-{d+xE`#vd#Cn64dIW%U!95g`J)2#@)Q@&5!rh z5_YSotnD^hX;~_I_)!ER{OKdu@9{c*RaaWOI|kYI7~`91yLB};UgwVVx<)nj*AK9n z;^Zv8z5mylIE`l;X7ug@bL8yn*f|{|-~J6; zz27(S?#<&OT^OZN(;AxGfM9*QO3Y&~p?M&q|3hz@r zW4WBH5yQ66(svtYjZBp-QqMoC1+v|a3^eyoxn>N#CXU5A*T*b1oBuBLSLn)nqbt7+{lT&H$2$TfOY z19ewbXOvYgR9i=i@1|QY)w?QR6>cnh(NYJW%=s`|gF24ARX1GRvkk|cZEVb5jyrU- zkXD`~I)2yHx{7)=^6kJlD*w{?ix~LsGXda18$bC}T5B#{D|2Vj>X~3LoO{YVYyIAG z&f{n>U9C$VNutiq)-@ad9!NDCbX-R%U&ozCHJ7;B32|V!0`PjBkc6>QFHJgIaN#n% z>x$`j_POQvAix!`{ReCE>(Vr3ZQLw3{l&_KXv^2zPXb*Bqi$#27aH{|;Ra>(`=hgp zX$~Fz)qq01lhPHP+`=)<3>FqQNp`+TW(=T7mO#%PDuU2hBVEO3k?w}fS3;MhPEl*i zK*eU!I_0(L>HFeZ#EOaj(H@-&89>X|56uc4ODnrjIw zLb}tL^^DaaDobV>I zGEopjn@sg^YXWFip!eU;4q}7LlZ0<Y`Ps4;&YvbM{LwzY$%L#op&WNm-F<2mcw5grxml5nDX(={HsIL z)$yQ*3XWx`-VcGbY{OoU{HY}-%`KcGa9L#elV#EobD3uyzAs1@jSu~mV!9#75yTPe zLWT%ID^+sgM3gDsPs04jv7$%dSyiS~k=h91W}7fVb)02~DlqVXPk5!MJx)AhHYRN@ zy;j*y1({U&FyJ=qUwTP}Ku`~%Jnl3o5R<|~1YPU@{@sTWA%+$e3 z2U4vj=tmv0e=$cE69`cGd4o-ErF(V4YCw8Os6##$c2ZV#by?%-M3mZ@q zfUu{7cjz2XUn_l{zUn=myZry{SL=qNrJQKIUzUOLIp}6`&8LdL3Nhu@O_H^Bh^cR< zL+FH56%Dhv6aZ&~KJ*P`^LLU_^|0>eJ` z6;pc^y*Ob+tMjjEhC$$6dyP|sh^PG)(|oYh+G7K=i4nLzc!}=BC%o*=Pj<^TBE#Cb zL&?|B@_greTi2#O^03}em*cp~(Dxb8M`*l@>Odyk4N;lXjTzH!Til~M9HAwlp|Z?Ozly3POqsf~&0!E4B-RA$`b z%QROM8TObTosp@}@64FMEBR`I3{CV3-_LbB{@r5dsNk#BE`LL1vS7d=ghDQs9)+^y z0#XCoP$H0=5PM!Z|Wy}bEoY29f62j^-lR5a0?WvhwXOJqVGgcH&1!N3`sDlKH%4R=SlT$`)JViEV zd}P=WMXO>esFWEN1)h0iB-UyI;+}7bH-Y55sOMRXY?obEaR;G$qgEs}<}k%J6)RKz zWYR0vb5I_m+5GlWUw?07B$!oQ3>sV(Rs@@XK1zT`(uK7b>uI@=__DIxr)m|k z3Y-$*t+rNeOp0cw5_Qkogp;Ux8^Ml+$n}!8;ZmLt5?2az=kLQR^E;!;h+(zOJR(8H zET*C>-%ldJkM*EIe2!ZFnrv!T-!N^f`d4 zpc_k;z^&}&UiGRHMHSP<@{Ci&Q+++XBWbf{KJu1pn4E5?9Lp1kR5+ax_Uj9FXRgAt zQTe$+UchwWJXHWUOo|BUPnE#ZP}Pu;xJ&U45!Ua7QwA694EE?}%Pmh4A3*V@MsR;w zC6oF|yHjTazBeR`Lc(1;lU%x0wTKWEuniPuNMld5l-2U_?7k76uf!|!=57zRIr^p4 zac2u-7MpUOlVKX7lh}j5OP4YVi={}jRE7vdc9zEGGl-5}XhYu)W=SiI@wFcZE5B3t z2E7S6+gQ&Z?COAbl8QwzB-x#gsAt15Euyri5-y$G2NYlQ~cb z^mO$vtO>N6G@}Yl9S5^O_N2Wgt9*+`C0&F~m}6%8+Ms`h3embSA0f5Y=uumM)2D57 zviUT_A*9ijAIczLlaKL4BRCuo>JyC+^)-xmBcf--g99|ri2_&JJiBD4d-M4G`3Csf>r zmg|!9ms2Z;{FBcq=AgGTg4v}7(3D$VJs{oSl$*=MHi4>b*;cOTAbX_YzWa}tJ)R8ZF_T01A2Q2+6GmTYN zA5t4;Wk(g{0(?}FE3aXG?@TvW91h2ezRb(Pf=?Wk9OAdCNIyAd;=qrvvuj(nZGn_R z05~yOiI$hxru@d73b~-h@Z_@BBQX{~%?W4X6EfOmDOW8fpJOTGJzEFd(0!-K4412l zPhw7h^3?IVJF-1JEi=5}!w>y@&+q?!U001fPafe{iSUkRvSHk*Fc&z2b`;6lNeHy0 z&4fv$t_)^Vz}094Y{v3S5ZE1~rmF1gKh&?uIZa2T{N{afe~Fs_k0oB@Zbcau=b1*y z)WP8i*v_JV@;}%a5R~&QrSC#-B|9+jAjv*s{(l(zrr^%PZ_C)~*tTukHafO#C%@Q9 z2OZnCZQHhOOwZKZnuq(Zn!D?JIOpX&eRXQ>wbxqPux1jbCY}iQ3%lXHx6_A-F8&AQ zdXWrc`f(HboM%WvX1krsxfzPoNG3Jrvx3ocNL+S?h~{IW=irM%RC~o#&ox?aCy|g# zpT1^@&zLt}xc7re9*asHDY8i%=@hW$C+{k;n#3A1F~J`MAzwabFDPp^ zJk;|GXisgyJ1{v~gHEPcT5B+B15E|?Q03}Gj!w2`9eXbl(tbbj_@tk~E#}i{)RPa0 zr;q>0o!%hl^WrubET?2O0ZUP{=6VR#0R zl6FzH28dD!R_VS5;xMn+_gZC|dx%#Uj?DA;{o>zC-SF-VZ zZ1uf<#@1%rcNB(@h7^((TxG8TBRy8JgK~k%ihJIq-U~_JPwo$+3u{6@N*N1o*tl5& ziyuE;2NHQ75(Fs(4b)@#K+6d>>;)e6Xbg9~c(ONc6qC^Y9 z(mh!VYXufHhVnu-?b<~Q79H~QumI-m*mol|o zqNt3vy#50oFIgxh9P+djq%g(qK|{*Ml%Jzr(gpMT^w;6OiNRYRS=-~9pX3}B`A6bd zD)RYN=f8NlX!gO42i9WZd{l<9&S#n!&q; zO(TRnc>WYgdnS?Cw<*L_;4;pOCQEwS=}@)ZY?7IQ*at@9i8rM^lB%r6)U6m z9JJt{k@*{YXuzaf&9VC!;;1g1x77`a6V7l6BF^>vtO_BO5x_<4g>u?OdYJRMi)$9Y zHJj-WTfLmONic}El8I@|psr2&zzhyaGvc|JbDzJ#jCY^MLzLKnf>BeYy1!_Dgpf8?cWF|tEh44qlcxpDQG*lL~CzQ*v;XOc6*Hj(PFHl0JX|B zzDGAf!@7|8SaU#dPfOarip_>mU+5f(RjZ-O*&+2JTs$i@QO}!5%Xj$VlOg%vg9)2p zHmc<|MjUWy^jnwUX$VvotT?-(50#HzJ4N78D>P})ivt2%*t7!8NwIu#W~MN6Ir%o? zzG*3N*0lLNSA^dHb8*i7;Cq1x;E_+tn@6gv`OT&DEDu+PhcK~d>Yz9Un7NgAv7NsN z(SlINA038hlZMZlajfMA)oCfAObiTpquw^*ceJncdTQ{{J0(+4p}+bErvVw`ziZ>> zhMoxsDcfJyjTwY8;HV;ypY<|Vf~$g#9NDgamC8-(Rsz3qw#G_yG^@n+#F zXJi_EY%IaTTADL@X-`NS$=ovM*Xnz->9v5EMMR$D-*#x4<@$ifHZT~=`uC+38$=Dm zzz8pLgcqqA^};z>!kQ9u?S*X^fd#M4XbRJV7VI!K#D#gw;G;|F!3K$GW1TvsBCng* zS^?6bl3>hOGk?JiYSsCc^S1KL{RyQ}u1zFd6sb)nr)7^&1$W3;*a*sdjJ2N^anmv1 zc|K{$2$}AlG#ipJ{utLVAmmd4oi_ZPOg%nN);Tw!Ttx7j&ukC1Y|jk70_xp!ibx4-Klq)ct&^7^`Tb`Pw}HblP_B6 z!pAmc9FyM$^BpLlUst_w0c272_^Rp}qL!AqI&8lNbH?W%yAl|cdsFArv)bP@evb&D z*Z*vSa-p2g`$6-=aEg4Hg)vAy@xYUgPW;v9ok*#ob>G4ZC8%>G&Oji#u6v;Z_q~x! zi;YIV?BcmXoO*AMQh5HhL!P@{Mw?(9b6E~3fpCb~1s=8ITm^p6z!ut6ZYnsk2ht4n znS7#S$sKNnhEF|Npz1KQl`<<%`!Qr8JG{v5Ddz>G!ovkCs{Hq3uTzXCu$2&$1QuQ?L$t7KcxrQkN%x6L$?cNk0zF zyZ!U_!Bqk}PWq~^m;tgLUXonk{Ec`n01fdUfDQY9rt6Ac>#$!Jo61nHUU?QT=Q z*G)Wn1Td$P_Rja`zX=--af{=^7h{*wzabmRW53>Top{6F=n-c zwlI7(uQt}N{JXwZVs8+HYd67SM<6iCpT`w+Ey6lzz$w}Y94U$dB{df99Pl2%Ld@Eh zt*KkSC8_1!De~1m-Yi_JdO7q%>s?5;Gieloa_H&cZW+%Oc=L z?SkRV+me5s;MJ0QI^mvxx&{6)<5pTq{bpAAtw>s%{CyKv&D+#kA0u4)_kBVTaxeZ>O@O1cz| zta=IWwc5L)cZVDlE-ZuyPYIMqboXq|2YuB$z^&YPW4*o-v9vyIVO+GAu|z-O(HI{7 zZELRvu-o6_%ugtdjbbmD=*1V(T|3IrmLMr}EERJ798?l;K!9w5^xj4zD12wc0LLI$ zh{r=Hut!`}R8l)Hpv8I@RV*eWKB`B)aKbr_egNZ_J@Ic}eYB%utDqYRcA|9`W6<_5 zr_!~1>f*~o_@CF?mpB3r)I`w4NJ*xCDL&7N9Mo;9LaE4dduZ0@Y98J8c{X!Z*dQOM zc&2LLTz5GF0FmT?l^iwfPbO18wL^OmzRDDH0za%=1!h^Bc1Hq4L+Hm)nB+YvlGEI* zf#DnsmOz0e7Q7P;sMY845LYfZ?8V2uW}74g?nA`z02>g)kfo+2Q;b;{L1y(xFZMO zVZ|f-TgmEm=7HxRp0mM;O!gv!WJAXOGqj-?N}+CxP0puIwtU#=UDur0oCbQimjpH4j zms{&JE7-<|HP7x+l<_FSyAvS|1d)IQANp33`zO2$Vr~Fr@L6gdcKiNpTRG-TMpS%t6DC;??~#Tt+MX7BaLpJ0pibTRXg`M{HARx@=sT#EB@`z zmt${P@)bZHnMu-cl5`+yXyAM6KAfTn%m`X0g+I}3kKR)Nd6==}5g`8G?B!&Q1*K+7 zug(#W%u;YQ?a)VC*s$XSK=o)Tqev+hY92AKKVmk)yv?b#M*n$e4{s9lc|s=^S5Ai_ zc1xXz6dG#vJBwAyMy@9o67bsxr1pVDU26tOxht^Rb~IcV=yj6d6rySx_I{UBeUEBf zn)tA2`)Z|VoAsJ~qnC>+rx)toWUu8rLN>4u2L!%EMQD&9l6N!8ugy9L5X6z#DJ;e!8IblS9O<_xNV_+C?%9I*Qqf6zi+UhzzIvNhN3RuM2y5 ziB}#$Hamh>LWgy?5HV6_RoM=3H;&nR)npfJhlghS-PDSi2ou9)hMp*qQ@)x8eqo9n zxG>{@Luf}pg_?KVDu_Sp=G=dsS|S4%z(8LYLpqGH$ebeOUqp*Ol1zJGp)Ef1!iFkO znGh(n%Y$u6vZ zE$vhZGZNha6YA1Bxv!oo8hjVhPb4^Cn#j28^&MtcM21u-VPZNlgxi#Q;|EpomEP17 zLKjpTrb%EtJ(P5JIaNf!9jD-g&oC>H&{D&~-(7m=|U;N5nhP)!+%t8$7!0BlrF zS0~D7k;*WX>ZvnBd*#w+@i6ePW6x4)rl#)M7DohTpB^h;uAp9(i(tLdy*e1BJk2|O zX)z}MDc4=-UfWzrR}zp~coYL?QqtaXFW@7ffkknWsVvI;g7t%?%i75WbgLir>e zT2kR4qpAG(Rq9&02Iro$lz&_wWgSs2HKSp=ZxUp=tQU{4GOza*sPnM-g)eQ_h*lRR z?7yg}H7S*D&RR3|xrqb(LcrvRnLq8d0fulnM+A?c^dPqZ&$X=K$XpvE))H05CBQfc z?j+o4D=|OK<$^~-@T`s|EO68entd};(Jd^dA7C=Z{d_@OYtekJ4<2Z8{K-Z$&TJNh z)UA{~F6;uzNKkk@J%GH*lfM+KP0O=Zw25?Jqw? z<+h5$1tJ{;ES<7601SfQR%$X4pIDEs{!n{TUB)Bo7*u`+!E{?O4if4IbyNv~bY2aF zOj2a3El!f(7r9Kqh&?~jdj0Min*bRd&mpZwOJsEJMW{3RbSp^VOI5e{6b>|A4@!gg zZtJ@_ef{eTNyix96`2P?JdXGBs{&|vfNB+__~j#paYbfk`)uj|{n-AA-Na-;fK#(^=PIv7FSHtL zV+yx!%5@{^z`wH&XPb;}D2y(q?bToX2XhMiQYTUZ%TJ`Gp?Cwzt^K^q`=QV$-ArM@ zMfSZe_c4-0cFY1y4(&EkWhQ$na(yRVb#EPak*HhVb~e-`!Z;g}IZQ~SB|zfxH6FmI zcAjZ+k)UxB9qe~faLc7rrk^tS>;9|5FHU@`6iJKML3~~uNSh^C;`Co`EcQ^5#9M6f zDryRMUo#u>Vhu%^yH37(sRZ%BRAiFyJ=78QIolA9dAT#^L(zT?sdf2x%8c`^z{ zgzJlEU;)6Qcm|x@q`)Bfw#$Ed@$~(Lr_V+;m#EE?DxWIO9jgq=g==F?So;EM(Y3cSt+S^6 zyRQ>u^!)rhMLz{;^+`cLSIN+stFP;z5uOi!>A7x#|A0^bgZGb_JAP%o4kIIlzjbm@#_u z=i>cft7rRDaaz`c;=aF%)c+$Jjh=k2AI((R1L2?v{wOp=O*F+%lQF+>mRW&Xug5^N zUs!eibreQ?iWP=vVnLW+lIG%85pVtMZ|Iv7RVLN%X?Md|^2~IV73+1%o6!3qtAd!@ zNHzcMP`fTB{+VG$!vQmunV^#<`Ub}BYL2!5%Rj_ep@Vlgpg zlVYwz!EuX=QEZX5in$vuq;G2b+Sv?llW}|^6#g1YcMH}AOi}Cf8uX6DglWNv#72mW zfM*CQ#k3&lHBOz(jt5I~-JPK}PNT%>o30)f3j*J0|Ly4hu!AEi*rrT#8&3&b10$H- zpImYEef%ZSR&I#YOcKqYA)&lg6Rim0Sf|(3@isHHQ9*5J@cU*|*^XC%AGWqawpkm~ za-JD{gdq>#G#hxgF#rJrpX~4g(II&^Z~{|IYK!2yBw+)Mz$30L`0Mqow<}E*d&Wpp z8M7ZMEe^ASXvOSdxKbPsV!l@F@pI5vVjL*LP?qHm3ik=9ti$2=FL~&XB{fGrb&(a9 zxSG`Ed1xyCrp9&wYfH5rbseJqxmjUbI=91_by^J8;p-0n5i>6A_nL@{94w}QV7)&VOs+oHj(plsA^U&;d zBDE1QELdDv&E^9KU=)h*u8m%4t)2OSjzkFhHV0obnQ=QlsJAWgU=JiwK6?l%1U{#D z1wjnNM1oR7LCshc=)3$%_d@BsfjBvEIU)jpp4wwx$}x*ZL7gG-Ud4f5wQWGKZ7A#l zcQv<1WmWA~=V2$N=SR{BI^GaA0L#&Z3d~S=0g?i0Vo+wcVQ)cfDa6L&>@by3+;?__ z%Y1qWSU;>IRB(v6r#yn^B~eifNcj*GvnP{7mt&blO7Q@CT(bDXV}4b<_a>m~xyHcM z7rN_y^YhTi;8Va*qb40;RItaOQ}NRgwGzXZdR(CGf+fb;WUk{W_Vz6!V58^>U`bctK7G+|HM?anmoi9uSOY=ZDkkPI@@7+*X*EcF)d)oh-}uqwKgrcAeD9I;6_l zc%kHRIGr8CI}+zjSunRvUk#+}W~tE%X$&{yvH>9(rg%UvmyLyQxEV6sP2p#9FPRL7 zrnRr3hnJ6hMc{hw;P2rR5-paCB%?;E4`ZN>7_hjo4q}3c@)F*%){0}Z$QNsm_%SPY zm!{-nvx{kvdvwi5J;XpbwX9yy(3b=BI9t6SF}goy)t)??sfVmw6+MAHdT5p>FFMPm z2V#q*2MLc(iVY9ays$tIta(dOu1*I8+bi_Ib<5!>y?!&v{xHkL^w(*~Z}AsT6AIa) zk2W$R)M_IL_5;evCfcBZVsd}-cL>Ru50%&*@4{Ckab9E}Ad8NhwO>-q1S=Tezg`Th zFVz)KPf;xx-Dy%iEan!@ew+}s15`FdE2suK;NuxW!OX_qnyri z5~lN_H%K~!p|Wn&Z(=b5bRfC%ifZ~5H4+A(Z*;JPD8(VSYo01`@pc7V54mW$)x3j4 z*%3|DJVZ@~ven|Kz}Rlxw6jS;wy?<*7sf=?+luMY6^1D};J$x8*WDHpOY8Y8;RoD8 zLGOJ)UJ|7iDb`kFcx$GiTw}c>I^v*eB*^%4k*QjiVoy|eblPrzgLwA6w{LqK)aS%o zzao#X8WJA=ZT%;Ywm|UyBxsxJ1szoEo;SI6Y_bo4>c$8LMf1pW7Wp-3ZX2GC2(XDJ;A&A|~1Bs03`T4k_Yw`1Wp>MuE zs8~OkC1}S+ky$XcTpfX(d@#F1P`vs}*QH|>s^Gl!D)<|8`^Vw5SyN!)bYWI7tLAU{ z(H+yf4Q!4W8h>g3`sGKnTuYeQq56B(n<)~15%H7;%>Fld_xdOE&d-mgqhUyBkdxtA z&M02ALfB+h`-#4v**MvpCi>pw)IT(7j$igia6<5Eu0-ceW2L$u`sQJcq$ zZEp~+rct`p&VhzsS1S5mQn-;?RO@s?jwLen4hzix%(r-w#Vkh2OEhQD2*Fsj@0N;N zc`Pw|wiykn6Gp{o3?&qGx{KBt7D+o?c*+5YJaWZHSGA?stD@d_*RpK+4@JzwfRdEL zMQL|Q6#wtQ^e9hALR)=)Gb6LD-$-k`T$wxf07vQM&}|gL%0N){mn+!F4@}}ZJ)m69 zK5I0)z$;OKseIiG>&<0!{;@4-9I8m+FZ^AIO$_AC;Nsi6V~!=BZMc5Iktry;9@ zlv(EfTxH9rA5a^n0p!7itg5uP>^C@({b%&|Bp^$*{F2tU>1#VI z5Zx&eTCHC!-3d^2B9_(@73vwL{QX%(l>gX}-7SM4hv$!`|8pDo;l8KNaM%k-3ZP_A z*&ba!e92M{Wj?Wt;GxV<^4FO4%q(3A_fCA?h^eu@9lPaarr%`LYyatxo7?_=d&>!o zHArU?4Vyt%W@1n+>=iA%>$W^6S6n?-``3m>ovTN@@hjdnM4PIwONw|D*9#KMCu{lV zKQbn~kF)dM+&626n(2j}_~{vl%-lR2@w*PnhFt9HBR?@;q!yf}Y1@@@N?24t{$l75T| zwm8DbO4+)XUtSwWZZ@!e7G^ZUxhBX7^@29biQibpl_n)Ho%`|BLV>~G=o$L%mU)g2Am;!w^X@lTd0Z;VZT zv9acI5ZlJ87VXcy*3uonwGlz(Fu~g~;Hv2A8V3+3P4=UcQ1u z#*{|h%6o>XW-~axw`+pSXq#XqQETeeZ}L2wJW$yc64dK{>Z=2t0V(@#wToR}lzk4rCFlShrTqP!KtBx3%$s zG}+RuGXskuP5l_VMDJFabjk8rOxqw#KGYc@ zCFK0a(l-$m2m{TyeTegjUa<;Q5KTFwj&VRgESFUjRW7*@L#g2;O5|iZ(PZL1pt-0` z77JV-RUCh==|%z_%0kkdIH7GKRiA*cSGB^~FWwSO1JpEowmw%Q2ZC@OOrL89r7t

q686|N4yjNj9O8qlwLMhxy-faN3j8=@;i{O?Xq2bxnoRYw)BfD{ zbVg((Vxi}YP*ebtYNYWJ*TJNQHmP|54%~nc8!zLP7lfIiA}Y;sm1!&eFxA;C7HgXc zmI|^I5WP8UDyDu|t)ze~n7%||5Ru<;N)?#CF_iQ^R*@ zhbFIucjArBj9h*uCDz$PI9|B4YT zjDZ2SXtX}K_Jjo-$TPA9p%w`~Y;2JSu=a*ya+Ws0D6rz@c1)$p@ihz02b7Mu)Bz8& z?0ap8kdlLU+&jPl>E|{FCdQhD-(4fxaehXvJb+Z4&jMV}1JY_QJP?9XN7#Cseu#Fd zGdSrX?g_+`YmsvGA+>>$r@?Tsf6s^3;bZ;888~etQxzR5;%sn(zb_QP z9CL7h`%?k?da@kq$JVOiYL-iB23ecbW`X{(w0BsGuH#?;K!+RKB`%5hnEcMH#*bkn z=Qku{Nyqitl7WVq_a%RlHO6#UX@d^Hv?EJUp6){KFAT;VKO&9(6@Edq)7R&h0Njgy zT|+Y@bQ*7jTm(c#cSK{^p)w8@U7-B#Q=mMnyPXAD6*`M>sj6JXg~GH#@)$BuC~Iyg z6V_9_6_(oR$@w_5?uMHVYnNV!XVmY(RPP0=)E_pUfwEGyjXg}nNlcaW=U#deAV$O2 z+cb=?u?4zx`yB3Bak`E#bgBfN7rPry^hb%;iXl_4wu5fhpiBDOD(&`|RR$sXTrXrz z3fICVmm2s>u@@)$tQ@*an(!I&5qFjw{VHHuB?B9iOOsyR)MDs{v1tOVTLjp#P!q@* zXVPB1U#JQSK4^six%Q4_dSwVUpZ6ZoLputDT~NK-V2)=9-kMmg2v;Y>Uoba9D&rsG%d`OhAUx1-hTd2z zP4QJG15X$px35D)b0~B9a?lQ^y9MVp@?x$~$5e&HkA&o-0xrzMr*qX-h8kGN-Lbz? zPK8);-dlT^>&lj6D+FjMw;2AkP@Mr^^yB4c`VCm0~3~{k+7R1Fx=!FW@w0> z9#D1a*|>8ZicZnmBq>atv)!fGW$;O-ULaq4(kxE_0M-PjZGN5oevkkUSJ337R8(j} zCkHs;m8hCR&{~7A{Wu%GQyILOQ^x`Wm=%&2$N6;^a3j4=zXAUC68+F;i>yI!v$&Gm zdTl#|iv6qlZM%!eDv4yPz0rN|A)>-gDrl*7DE(Xt{VM5b2hZf-av-`Qd3=9;psp)^ z`{$@eb_0-NeoY--b#v&Q%!wLCt}b;kBnOw>^sKRHmg`B^7H{llF%_=9j#h7^ft;|y zG^459=v>dAXS7rd8fq;?cuLMMGtdtx<31JuRp?M_7;?q;+P z%ZrsbfiV5{%vICjN2X^nS$%(7&>Xq96vktVC24L1`CY&*(>LarjDai zq+)e-MJX&OFc)Yc@OP;$Lq=@D=)YTt%4LvFnB~!}es`e2U@f+5xYMs(Xuhcr+1N!6 zMnSaV!H}~Q84ys~r(A519;o8XX5zUBQ-%BWae#=FJ~~!*0m+FdY|nfrQz_v&7OkoR z1%De6KO=bRbeW;eNJ74b-FeqM9Csl#j3NXRbZQvT+Hk{48hC9i-LoOh*l$@Z({f?LZLN*`4Cpt z9TfBN-tI0oz`C;TWj?#o_x*6P8tl$K7h$bAYNt;Xvmm*KCvV}o6md@Fcx%ojM(WNR||_nf}MEz|=pI^^pC4N3>FcK`n#Ja{W09>+}SI zPV6(PODB{(Nj}_dUeXi(EM0YKxAymaRgS5cNSe4b3`|ESQy~>gASio3{=RN#G1C}Q zOF-}V7|ELFriX2yDd$x`y6)ckLgpj5GI@c_!blKU|FVDi`M$Kxs9`r1%LI1rzx*+b zZCd1&cYXbgOBa)So|7kbJ*;yMKE--2i}-{8!+(i*yCPpd1<$+Q-d7`${gqK#*>LwA zU%}cgu&#BuYKbi-Wq;DpHPkWYX8zXx`s;|z72^+nyoALg(=XpG*#o$+@p@LT z4h}6*^FRhW&iJmerlN+LFaVq?8jti5F+z9-A6Gs#r!>}ByKmWtiu>BJ=M&bN)#D%P ze8L0RF*%~#7lFkpdF_hODJLeKfBTx+5HI-nNrr6G+ z+j*?R$s5!^KbyA~LS$OHYD?GgRRqlOJ<e7hveEHfRMz17gEL{~#V; zVhO|HEESI!(!!1eDh0zoTNn8EJKSKdIGo5pQdP-930Cua4|h3$I9FE|u65d+iKlxx z`7<*E`JA4+JvxS|Q)uK2-wwX|apOVpMU%6ag-pb`rNYo zEixu{JA8j#;X2fk-a)+F3A6;l6=f0saA~Y+F^2keL|JC+i6}!>S_(iS3b~576c^Hw z5oelAidqNPX{0ZoWnD^`ACUL&Hw6rW?AxO_U|4>tud0$$RxB+L_^giAEKgiXFqT*4 z&D*hOIbj$3BHUnVVs#itUweIKqfNMg9DT^SOjlv=HaEagku#EMd0ZV;r*xUD1gyg6i zT#Kdx4NBk_5};&5DT{3cz8`2uf4LK8fseNZ;q0KBziT?|kbCq7C)jEQcjr8nv;N|l zqnwzRvpfu&$wHXh0)^DOOH7qVbbQL;aP~x4SV*hL78*ju5H3`KlJ+mS;1T4V{J6~1 zl)on9;n#dfYMly1oOwiId@x%}dQqOg#5Jz;2uL||2sWG`X>~o&pV@T${BOfM3*!1t zt3nnCsLy^fQ08O}rr!?f$$v2EwQh-9OGB`o2^N*1>{oe0CWld+o%V)685J4(=Wl|0 zfoc+G9KVdB2)oraZs<@-mWsT_Ov-lvxu7bYl98Z+)HN@jeJz4IYyYNU$_`2piX7Jz8dk z`3;}kaKA*1k^*O>4?yQE;C7I7dKeB7gx&NM>-E9M-tU@cIUX)ccwDdw%sQcTVFZif zBk4(v!wAh5jvqNbS}`3W$apAJN%Kh$Z~5XLIi5R8GM_?Fn*aH@Ft|jhEHlUiav8R;GG5DqD)O2I zKgi7Rcl*zZOK~68t9P#;`oQCpH;>L!x)!CUpsw!Nf&>f=;dTLpbLcfMn5Vkph<-dakj{j~%XCh=~=4AY@m7&apOq|TjZ2$H8&pGj5kAzHIZ2x!H z&;MUp82t>csAoM70b|^^l?4yx{;#0zaNH?80(P(I`=GD?oqtuG%3^Njbo}vC?j2P= z<)yvj*Z!dw6|JchDnB|n4Mk~Zejz&|Ix`B7lz_5qVg$y>TtCag%sh~oP^QhP1NuV} zMy3ME&8@Zi&&fC-JowAv^pgmM&E=ahxuF4EvO^OzO%q7=a#I#}Gddc`OkBMB2Xmdv z2~-qbk4_fI=@H11M<*ABHa$G6E36|DUn=$PN)%z99g58kT9`4==f zP+m|%BNuwNCK31^z~1YhDvl@vp~%+a@UD|*WPW~Wb_xaN164^E9oQ^SKu_OHE-29} z;T8~?Oe@%jZ}HJmcew-67~r1-YLIXKZr|$f{ew2z|Exa^7#?nvrzE91|Yf9P*>&dIg3vJ4q3+wBNwSz*!PzJ&DQ+>U8&y2>SyUfZu z&7!URDNop|VI*LUTFVGuU0VgR&B`+P;m#=yC7FHw7oH37=U5qEo}OBM5ExzTUmkp{ zVV2ds#9FkW!_^H?&i`qCL+blZNC(aWwuz38#=Xo0$^`{FwX>PN)c{dL^xo}Bmi3Pi zu)2M2Y-xZ@^GgPPY-R-a`wV_^VRiur$;8tO*v|e@{bUF-H3CV~#N+{u4lqM+uJzCN z4-YK%KZyJ0(QXB8#1a^egYJD@+40YD5g?x&oL*i(h1>+h$2R&vAM2tCwVhSpE2I4p%D ztb1-merQA8+s?s#i|$p8SVMCyIQ2T0)~9O|&}kYb)=%8EaYu9&e>GxBT>57!%xfL* z&tK)q<<;rK8am_e)7rd(f;`Aei6j9eoZh4}V?4Ql>z@oGAkeO=tcNhz-2zVgfU+!- zOMN_3b5KU8FS2)>I#A4zA3_A6;8FiykR$;@pNK|pn5_b*0}9WG@3%=G!JNQw_x?y2 z0YZB{;YnD%xu1}}gQ{=An!s@7{<9JgPXebT!NdN)Rv?)_gZb~VzJv(gqJN@R`CW$H zmI+LLB>KnSQwN8S<9_t@3>e=aO+Xldegu!>MEqR(X2(7W$O%l-z5@w}0&j~ssdOPP{3DEMJ{EW`L_Qfp; z>_S2>{{#@gt$hX(Xh06+DB2KIHxmTEB7Q;Qx%t=ob8dXay&pV2`!5poT?+hWYF-vp zIT27U_LuqT#`&iCwy66Wi7|LVy#LuB-cw)^2;ym7jN`2_L-izD&K>S{bLW6RF#2%oZUc-6- z(_RK^=2wN@Yn!`@y^~A2vMN-Z^Q7l)ZsR2qCR0{3^U-ndM3Kh56#u=3UeJlAOYHT; zYgZi%^Nm)scz^knPf)?zwgJ+?7`Vof?N6(^Ap;bwP(s~$@^rpibZrm54Yy7t_vc`@ zKcX}(?0I*YWbgNePCM_tubqZvO`;yeb&*RXy)vEfNRI`8c7@Uz{V&*jdMr=|_ESHe ztL>P$LEW41vRr0`OFzk?NzYdmQs?W!|Z-Ysd>$Z z?4i(K7d{VKxOsD+GJ$-K4b119r2LVqv4LbRK4*UQcosQ44O`I*cvVX=BS*l8sG?1? z*+M2m$i;VPg~3Db>96SBaW#ct)Q%asJI-gYH)phcbirLPS+*|A zt=_wvTy>};*)gaW2>UY%`mo$alaNgp6|?qCAms5+8*ReP6q)Hen)^7M^q`hSX>}pL z6egItAPZHNvCQXeGjErAS;>>LWmy%%?<=<(qvzK|nfdZZuXuP|fE5~M^mN_ax9UIa* zrt3TT4@I#pg#@-t;M*n@(egTQCpl6+=ZBpbdFb?L$jgGJU9-yZlBIrAP=5qV>Kg@^ zXMx2;#MR_9n)slRF&NOtlb;>=#>#vymQ>*8nig3;QsmK z$ohLablcVa$JOFUtMI{OOk;p%6p6`!e=lBFP=PpA5{AyPaR&M}DcSUEbkK=k3ftu% zFMAWd&Mf#M00lz=X?fMt2u7KR)b9d(!o0Xzpf5NRi>)_m_i#D-?a1G>N*w^Zgi4v> zPLg}24gu(3GlCPTZn9SlVbMz5>Q)E8F(HOVWsoiIwaIr|=MhZHxYc0W%lO5hc>O4(J};wH74EzaF;6#3==(siX6O>l$I%{`$ueaaf;8JBX-MI2u_mdIzbmKZ z!G_rF8UDZZ4n0jBb{D!`)?Y!HY5`)XCH7h(R|C|B_i+6Xj0Y_JR z%-I=>VUsLL{^Zj^ncDg42l;TxZK^L_1ZO*M6rAi0uFD-In&HgheWgPX6+`^dlvBSA z|BVtTGDMjalA66z5le9?r)6z_z^o(b?URvAGL4lHN!ge9*6)Z#A%}XGK^-)vKa|*L zN-`V7-nLd!Nl4zzi`&aga9-}2d}&hq)2qJr@-V-fuk-0z54${TC7CgRcr1v~XvE<~ zU~4Z|7q%{3i*B6U>;c1+fn0G7$QSQMSsGfWw#c#ykja3JnyVhP2&s^JxoZ zJKIwvAgo4ShnP(VG_AqCD*jc=yv8W!f*KjxP{>3*>3Ln@;3REu)`k=G&d=5MrSifq zRm3&)w`G$RTQZY@n^p@#I}EgbD~!6N7ywkvi4cZ|Mm5^hoA}>nf4rhgo>Q$Oi$r}% zeV#Jh=U?$NpZ_-8pxYPJRw%c+i^6{!-WM{?-kUc{~a29*t~!$jLaHQ_=<1v-grk z$F-ZQ<#nXa*W8T`aXn`TW1+_ibInIpKm((5tA8Vli;3QfDOmZk1$RpVMO^y8iwi>*TaKy2D{ez&R)-~SHgnTTdf6q&<%b?kT z7j8zk+0zsnk1KZDk4@x{1-5$T1Jh@7d~&l3YKBoqIixUKq{QeYTb=XAz+56>TUx{# z2s3X*L*$mzB|BI#i(!>o-9eKWbuBnLr(@bQkJRkhdZm0i$Y6kC=WF5B_5hVsw6GzzU09Wf6?2)Edf5 z>KIC~?TU?|R>0N-O$o^IOE(_BL2?cn8pd6+AXfMYvLJ>g4y=WB$~dNe*IH*tRjgVH zs9(A&87`GizC{&$1LAi;=)sr^^RS_2FQ6)?Mw4^K2QX~Pm?ii|SxXnu(Gl(R3sT7b z)+r6lSnvr}pg_DgDf?Fw*Ec!um?Qub?zrh!_}i^aFI-1@z)Lf!9rPLc!p2pO^(zH6 z+H}Wy!&Jt=2eVp3lQYZwZqd;ZA|xkK91y#)VMC;&wA9MW90OzA!DpQ@UvX1~JVcuV zVZUHk-axHwq7dF6esl%PXUz=rgbc#;$ROFfka|wOo3K^yps8OdqrR4&T^P!D!G&Z^ z+wCZ(IJiWHA)giGZ9WmkC<~G3r*~NgPo4ZkBpEIOw*fLjK!}14z@UqJyYVKMg_3;~EOu6Esy*oX4&f3jvm7g~ z8IU2@=d^(>H4wr(_I>UcJ}h_YzS&~3aIpu%kfNbplOn#(Z~|mxqdT;^9G_(qtC8n> zCgXzTko_P>tP6nZGrF>d**SJ4oO3{5-Wx-s_IoY-xIY-7=+DsMRk;-6KtyDadeogM zxUu3->s-bo0oXgGg5@ah3ax)BPG|l(`HR6G|45 z=+L*HP0hTYYKd*&w!0PQOlHV&qO!%$0`uO1HU3+S?Q@8t>gEhq*Y4DiNd(Fm3d~_vPk@rP(aggVQ3fvh zGr(Z9^S>B7#~x9D@Qki)+qP}nwt3gKZSUT-ZQHhO+g5MVv`N!`=x>oHw!*Ez1>2BedBa0<#soocUsV!67)}NC<`M zvpawI^Gr&a3q+Ih-wGyjh$+j|O+li?Qv^EEmpdD&^I0ARP8Kp=pNX849gEr{ki3-zIum&4fg)qO3gT|o|;D)hGp z1fbydEH{$GQc2N$+6+niy~Oz5nagEW?$3u#*fPO~VXcRw!oRi9bk)`MXEdtzut#gW z(kXT4%7qs(3GGruxL?edlR2u^twxT%wMWg?AVqp)sD@EjaxFRg!cmM6Rz#1~*2~OH z9)RrHqBT*>nJ2H)(|bbKJC{C0CGSvz?ASNnKdshdp_yWYzAFc~d*|5#iUPfvw(${T zYVB3=1DcyZpFWHge%V(@)2T=z;GslADXfRD-xRwu!X@o;~?LqYf@QGo!0J_ z(|ZjgeO%)}cyI}sX^&vOC=~eC<6EK+P7=*#6K=A)?6X!3=vND*9YuzbE!{mf6Y100 z>#+p;#Ews}t;3R&o09x(@{+K3ov+DM!@~7IQ@$i08NI<>A=HX;5OPBH>h*ooYkP%n+juDinp*(ldYcO84{+?+=o z-+(c%<(=EXeg!=`X>_y@D9ESN+#Ly^nG~{W|5n(D9?tf}TY`8?j2DKpYdnGip1Qaf zY{Prg3V9SduEcJ(!g}~8Y1Gz^y`2RH1q?wxJ@7u)mmlLiMk=wDHln$u5X58f@fD$G zyW8hEy)h@>(~qVtq}vI7g74=`;uGq=L}YWZhV6?K3?#Tt2Pq*w3vDJ0i{JtK3cd5BtCnLt zvkdD4V@hsuw1jxMJEAEi)p4QOHP@!>_N-y~Xk`)t%SqN#|JhKGs0&d2ZPiY$g{L@} zoul%Mtcci&qsL7wB&p{{rSIGE>$6n?)bg<5Y3fprJRvad(BJojKCWa_X~UlG_i-8s z-xn>EWeR!N+#W-PObL^Gv*h;ed;TjA-E-@rha9llc)nz2;*5`}mm!bxU0XG> zgCQEFSwZTgj2M9bMgN@jKtXmdV9xJE>u!cg0>>tG?J)yT#8OY|v+3 zku4DX_jyo{I1)CXQz*Lo&Tz(X)UC~mDJvgvoz6X$ip-oIA%L2&DG3vM9@Kd(su9tt z!lq&6`;a$q4`^AU-diTdJwJMgM!+J^6zsCNNl?k3o+RO&dDe9tUu~lk>29NSXT#4$ z+GevXxpIZYw23>M<=5pEjjE4dG%*#s`Y8`f_ zS@`2f4;N<8su`i474lSCHH&?bpY+gv4Q;o=rhElA#ig|C!=6a&TkRk1nst;E41v|4 z@Z5LO7ck+3BjL1!Bslel$sze_W_-z~811lM&kqM{Sd6ib*ojC4TLq1Pd~oRDYygUK zc}XHwS-02Z6x3MpCj z4R^`(vY~PxFq-25M$j3A7!D*4ChvZ^(`qIcv_=BF1g0eK7pC=izM{LxUp;PAa8B41 z27VRpwO?rs-M|I6K_hT!FYyWq;c)f3a|7<|+Q@IYJf!P67!c9}=D>@1k#R<=8veqr zB$~}@qOmo@Dw_FbX$)NyiqEW!o=aqms;eB`01Z=R{hT-y)od8XsFUM#ZEPx>@T!Gx zx{6aD^~gsIh5)?VnKt<_xDE*lZHnS3pkPrrON43bW-~9;bbTW~=2kzE5(c9E6cCt23k7vgz(Bc6bEi+KYKEVa5QdUhEo~?^yFZDC<%6 zSEeHS-rJ>a$i)E1sACIDh5)ztPZ+n@{vbxAy2t-T1`G=nl4oMD1Ts_HMtG=)+l@;k z)DX1dNGSI#P=yvV^o$YYQdEypPFDRpY8oom9#^g5r&Cy4CP3~%|4?^FMvD)-{D?;i ztg`gfH!@IoePtJaxg#sN1`;x0_|FC&gEJQ=;BtSv!Fp1*j9LJBJdvGtVxdYm^_2hY za_NK-G(Z)5MiR#x`fD-xG&a7;p&{`>n6E3S8uA!x!7)_)LiO<94}4jGRe6&H%g{u#$(_3C zU`pnXCD3r%-&Ooa$gxN9eBm1(Ork(qJH&g(7vrvt`Gn|0pyAp+Upxld<-$yhzj;We z*F2TrjXU=RV{XpT{*qN7gYts7B*k#yp37oR=&IM3QNRpKoAf;#cI2_IP|5hO zz|(S|$R-DX5YYU&23a1~iYGG$`;-Os&Vdh^p*I59$vbOpyk7qFUsda8b1|=}ropat zo5?x+*Wg7vH2?NQ-Az?R6a@5V+Sm<$XB-pfdD_=d{*ocy#>$4}YC*1EKng;e{`SBl zKhS}h*it(Si#;9@LH(aK@^1TraIU$L*XAVtDk96qvHsmZT!Jqgvy6E$X|Am01CLj^ z!@TSS5qAb8XOWR=oeVXBg5UnR)9Rk{C!ZIuY$|!_(zL_{CkW;#z=;TTvRturb#}`- zpkV@};7%SNGy%0T8q2kWAp#-=Um=GD5{K2Mrcfpy7B#gO98WwhnF(U{Rjz6-s(Q`( zdtlT=e(zJeb)p?p+k>SU$mV^+J$$p!`)L519;h>)<~CHN>K@2DG7DuB5i!EeOzoIb zGmszyD#Z10#m16Lx)LVlAGXRbK3hrcTf0_g#L#!&>r0*OH=8|&>riNqj9@XbFkB<9 zhxt@n#6<`NKd;__Om0G*Q|o0hA>5i_cgNvo4IqhZP*Ieo#hhZ{I&+bXoY!p%va=$t z+uspMbrC_*0mx8iXp=rl!`lxt7mwXpxfbG!$~>J zAf7Ujay26?vcI%-hS#M*{IcIbv1V0vQAKOUpwU#pG}sN*Niw-k0dK@PG#nhmr#4%#G%7|Maw}e7%(5 zG8OwUT1L=~zT^<${}!jpQ?4Z}+dSV5OF01?QQ{rz%F%Y1@asKOrP}D@XOY8p=0SUI z1)9t`+Lo8x!cLJZi{=^uDOYbL|1cL$FIY+*`f570OJs468oQwBk>6YqvFw}A9%T85 zWXG5%01KSA<+;VYr%)q(67Nj;Fg_hqiCfAoO;^k3N5e!UjkdzDSW2BJ)&gGBq!(o4 zdwF???#I(H%p6}6+AAVF9EhFPsSi~+c2@d;+zPhD*5XJEwsx((p3~;0Z42Kw=5@Mu z;K5^I!Oe~g!db9e@3QrxG$VFUQ-}VWX0nfxh{rV4@mQ{JVNL{!Hr5L*0E?o0pnU)N zhEvSgdJ}RMZeTCYrfdsl-`zvs1=C&5Kb<+=X|2hDM?s=s5K3Ld7 zzxv5`oGO_!7yT~iZlF~q+c+`2#ECYFM<^%ntuZWEV3PMu4xNN!O8eERv1W*ZLl7J4 zl+I>WwxZ=ViO_DDvpb8jZ`n*2f}0qynnb}Zx7H{oYFH1|eu5T09wR2L>?t&r+4D3| zHP%}U`4uX*QMh@C89qxfV_5}BS`i*I?)T0W|Y-V>BD1>+$RPzRULokpE1d4hkxnH*XI}BQAOQ3Bqt){Hc*&q zA-BGZ7z;;apY~}<60sIkbq=F(ao@G@^YkgeGiPyRZ&a245R#|q0_HbsqjyhU1yW#; zlF;>l$`;)nytEBOINK`Y9Py?6lRf(v7ygI66v}bqXJWcue_ZLnL(fjy_DH-*a@bNr zF*8d-?TkkWHHmL=*F)b8qV>! zhM)Q%2}0tY5ETR%DL~#_7ua~Ju_}`gsR&A{h?S9+%(6GVTQ;T~!UUOUez>s*XHT9S z!V1|ZZj%QC&s+Et4Ax!6WLJK0sRg9&9l`;=?fKTnPvhs{R29LVMPa zXFKWYZ__qU8S_=_cobMI-lD%%oG(8%9a%ncdO$;6(u=6T(dtP^r&THN%GXxYkVFGA zj_)M0PC%?~#?tt+_w;vN$GMj_-|1KF?Xkb3`U(A68d*@PMdC35nzv@{lVSNat3QoN zHDqQA62E70m7V9=F3P*}F(IP-JWNMP2)L-kOz7RjXF^?hp*gzo%uUA}QrsBjT&nlS zM9Gy>D%stKOo-$C&Kp@@73@0?co0XYi`UzB@08$hak#%k}nNA@kFjZ3=wd z$$(`YTS(u0N`HVP!{Y||lG!9_*?7IkeRhY8Fxj*?Q_q4}jXR|f@6gy+W1O;ky+D(8XNmgeyb}=SjK;5$$Y}7sZ6I#zazDnr-|f5G zJPJ9)p3ty*sV%wHGYO6~=IB=9|8XrzDvG``Qd%84_w~@d{qr^!S`TghC|siC9_+OZ zgiEz#-3g9Gl0*}H{{g8EYN&F8LC$l53EHZ(Wu$9wW6}d7T<6((B@Fj@yQNnN=@J}6 za6i`dHgDPRuY$CQUV>BGyPWT1TDyc${4HT)T{>NY21UEPBMufj>UpT1nuHFd7dZTp zHf~!PKYzDj#K{}SPPtRUo_fMCPKe2k@8t~gj{kmf>qkM}Ov=*c4TmG{;CxUFFe0hX zy`-YZGScH;3h}-Y#M&Km7>w#HKH$9Sjm|+zLivq}e^w#i_})~2*xU5$9sZG`9f$

q!G`Roy8ja<7n0JT4((whsK)?-H$o_dP9% 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

_egw_)-*EVT4pSa67 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 HJ%Zq|-QHXc(4G16Zj}S6EO}nh!S!xmXTo)%&*f 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 z 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

?J{}(myunSU8soY4U$i}@S2#HE^IF-g| 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

Q+3WP-ZOC1ML(fRPAJ)g{3J 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 E58&~*Gynhq literal 0 HcmV?d00001 diff --git a/class/doc/input/latex/class.tex b/class/doc/input/latex/class.tex new file mode 100644 index 00000000..9dd38d0c --- /dev/null +++ b/class/doc/input/latex/class.tex @@ -0,0 +1,605 @@ +\documentclass{article} + +\newcommand\CLASS{{\tt CLASS}~} +\newcommand\CAMB{{\tt CAMB}~} + +\begin{document} + +\title{The Cosmic Linear Anisotropy Solving System (CLASS)} + +\author{Julien Lesgourgues} + +%\email{Julien.Lesgourgues@cern.ch} + +\date{\today} + +%\affiliation{CERN} + +\maketitle + + +Where to find information and documentation on \CLASS? +\begin{itemize} +\item {\bf for what the code can actually compute:} all possible input parameters, all coded cosmological models, all functionalities, all observables, etc.: read the file {\tt explanatory.ini} in the main \CLASS directory: it is a reference file where we keep track of all possible input. +\item {\bf for the physics and equations used in the code:} mainly, the following papers: +\begin{itemize} +%\cite{Ma:1995ey} +\item%{Ma:1995ey} +{\bf ``Cosmological perturbation theory in the synchronous and conformal Newtonian gauges''} + \\{}C.~P.~Ma and E.~Bertschinger. + \\{}astro-ph/9506072 + \\{}10.1086/176550 + \\{}Astrophys.\ J.\ {\bf 455}, 7 (1995) +%(Jun 1995) +%\href{http://inspirehep.net/record/396100}{HEP entry} +%1004 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Blas:2011rf} +\item%{Blas:2011rf} +{\bf ``The Cosmic Linear Anisotropy Solving System (CLASS) II: Approximation schemes''} + \\{}D.~Blas, J.~Lesgourgues and T.~Tram. + \\{}arXiv:1104.2933 [astro-ph.CO] + \\{}10.1088/1475-7516/2011/07/034 + \\{}JCAP {\bf 1107}, 034 (2011) +%(Apr 2011) +%\href{http://inspirehep.net/record/896300}{HEP entry} +%172 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Lesgourgues:2011rh} +\item%{Lesgourgues:2011rh} +{\bf ``The Cosmic Linear Anisotropy Solving System (CLASS) IV: efficient implementation of non-cold relics''} + \\{}J.~Lesgourgues and T.~Tram. + \\{}arXiv:1104.2935 [astro-ph.CO] + \\{}10.1088/1475-7516/2011/09/032 + \\{}JCAP {\bf 1109}, 032 (2011) +%(Apr 2011) +%\href{http://inspirehep.net/record/896298}{HEP entry} +%31 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Tram:2013ima} +\item%{Tram:2013ima} +{\bf ``Optimal polarisation equations in FLRW universes''} + \\{}T.~Tram and J.~Lesgourgues. + \\{}arXiv:1305.3261 [astro-ph.CO] + \\{}10.1088/1475-7516/2013/10/002 + \\{}JCAP {\bf 1310}, 002 (2013) +%(May 14, 2013) +%\href{http://inspirehep.net/record/1233344}{HEP entry} +%5 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Lesgourgues:2013bra} +\item%{Lesgourgues:2013bra} +{\bf ``Fast and accurate CMB computations in non-flat FLRW universes''} + \\{}J.~Lesgourgues and T.~Tram. + \\{}arXiv:1312.2697 [astro-ph.CO] + \\{}10.1088/1475-7516/2014/09/032 + \\{}JCAP {\bf 1409}, no. 09, 032 (2014) +%(Dec 10, 2013) +%\href{http://inspirehep.net/record/1268619}{HEP entry} +%3 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{DiDio:2013bqa} +\item%{DiDio:2013bqa} +{\bf ``The CLASSgal code for Relativistic Cosmological Large Scale Structure''} + \\{}E.~Di Dio, F.~Montanari, J.~Lesgourgues and R.~Durrer. + \\{}arXiv:1307.1459 [astro-ph.CO] + \\{}10.1088/1475-7516/2013/11/044 + \\{}JCAP {\bf 1311}, 044 (2013) +%(Jul 4, 2013) +%\href{http://inspirehep.net/record/1241553}{HEP entry} +%28 citations counted in INSPIRE as of 25 Mar 2016 +\end{itemize} + +\item {\bf for the structure, style, and concrete aspects of the code:} this documentation; plus the slides of our \CLASS lectures, for instance those from Tokyo 2014 available at \\ + +{\tt https://www.dropbox.com/sh/ma5muh76sggwk8k/AABl\_DDUBEzAjjdywMjeTya2a?dl=0}\\ + +in the folder {\tt CLASS\_Lecture\_slides/}. + +\item {\bf for the python wrapper of \CLASS:} at the moment, the best is the slides from these lectures, for instance following the previous link and looking into\\ + + {\tt CLASS\_Lecture\_slides/lecture7\_wrapper.pdf}\\ + + and into\\ + +{\tt IPython\_Notebooks/}\\ + + for example of python sessions. We will expand soon the documentation on this part with a dedicated webpage. + + +\end{itemize} + +\section{Overall architecture of {\sc class}} + +\subsection{Files and directories} + +After downloading \CLASS, one can see the following files in +the root directory contains: +\begin{itemize} +\item some example of input files, the most important being {\tt explanatory.ini}. a reference input file containing all possible flags, options and physical input parameters. While this documentation explains the structure and use of the code, {\tt explanatory.ini} can be seen as the {\it physical} documentation of \CLASS. +The other input file are alternative parameter input files (ending with {\tt .ini})and precision input files (ending with {\tt .pre}) +\item +the {\tt Makefile}, with which you can compile the code by typing {\tt make clean; make;} this will create the executable {\tt class} and some binary files in the directory {\tt build/}. The {\tt Makefile} contains other compilation options that you can view inside the file. +\item {\tt CPU.py} is a python script designed for plotting the \CLASS output; for documentation type {\tt python CPU.py --help} +\item {\tt plot\_CLASS\_output.m} is the counterpart of {\tt CPU.py} for MatLab +\item there are other input files for various applications: an example of a non-cold dark matter distribution functions ({\tt psd\_FD\_single.dat}), and examples of evolution and selection functions for galaxy number count observables ({\tt myevolution.dat, myselection.dat}). +\end{itemize} +Other files are split between the +following directories: +\begin{itemize} +\item +{\tt source/} contains the C files for each \CLASS module, i.e. each +block containing some part of the physical equations and logic of +the Boltzmann code. +\item +{\tt tools/} contains purely numerical algorithms, applicable in any +context: integrators, simple manipulation of arrays (derivation, +integration, interpolation), Bessel function calculation, quadrature algorithms, parser, etc. +\item {\tt main/} contains the main module {\tt class.c} with the main + routine {\tt class(...)}, to be used in interactive runs (but not + necessarily when the code is interfaced with other ones). +\item +{\tt test/} contains alternative main routines which can be used to +run only some part of the code, to test its accuracy, to illustrate how +it can be interfaced with other codes, etc. +\item +{\tt include/} contains all the include files with a {\tt .h} suffix. +\item +{\tt output/} is where the output files will be written by default (this can be changed to another directory by adjusting the input parameter {\tt root = <...>}) +\item +{\tt python/} contains the python wrapper of \CLASS, called classy (see {\tt python/README}) +\item +{\tt cpp/} contains the C++ wrapper of \CLASS, called ClassEngine (see {\tt cpp/README}) +\item +{\tt doc/} contains the automatic documentation (manual and input files required to build it) +\item +{\tt external\_Pk/} contains exemples of external codes that can be used to generate the primordial spectrum and be interfaced with \CLASS, when one of the many options already built inside the code are not sufficient. +\item +{\tt bbn/} contains interpolation tables produced by BBN codes, in order to predict e.g. $Y_\mathrm{He}(\omega_b, \Delta N_\mathrm{eff})$. +\item +{\tt hyrec/} contains the recombination code HyRec of Yacine Ali-Ha\"{\i}moud and Chris Hirata, that can be used as an alternative to the built-in Recfast (using the input parameter {\tt recombination = <...>}). +\end{itemize} + +\subsection{The ten-module backbone} + +\subsubsection{Ten tasks} + +The purpose of {\sc class} consists in computing some power spectra for a +given set of cosmological parameters. This task can be decomposed in few steps +or modules: +\begin{enumerate} +\item +set input parameter values. +\item +compute the evolution of cosmological background quantitites. +\item +compute the evolution of thermodynamical quantitites (ionization fractions, etc.) +\item +compute the evolution of source functions $S(k,\tau)$ (by integrating over all perturbations). +\item +compute the primordial spectra. +\item +eventually, compute non-linear corrections at small redshift/large wavenumber. +\item +compute transfer functions in harmonic space $\Delta_l(k)$ (unless one needs only Fourier spectra $P(k)$'s and no harmonic spectra $C_l$'s). +\item +compute the observable power spectra $C_l$'s (by convolving the primordial spectra and the harmonic transfer functions) and/or $P(k)$'s (by multiplying the primordial spectra and the appropriate source functions $S(k,\tau)$). +\item +eventually, compute the lensed CMB spectra (using second-order perturbation theory) +\item +write results in files (when \CLASS is used interactively. The pyhton wrapper would not go to this step and just keep the output stored internally). +\end{enumerate} + + +\subsubsection{Ten structures} + +In {\sc class}, each of these steps is associated with a structure: +\begin{enumerate} +\item {\tt struct precision } for input precision parameters (input physical paramaters are dispatched among the other structures listed below) +\item {\tt struct background } for cosmological background, +\item {\tt struct thermo } for thermodynamics, +\item {\tt struct perturbs } for source functions, +\item {\tt struct primordial } for primordial spectra, +\item {\tt struct nonlinear } for nonlinear corrections, +\item {\tt struct transfers } for transfer functions, +\item {\tt struct spectra } for observable spectra, +\item {\tt struct lensing } for lensed CMB spectra, +\item {\tt struct output} for auxiliary variable describing the output format. +\end{enumerate} +A given structure contains ``everything concerning one step that the +subsequent steps need to know'' (for instance, {\tt struct perturbs} contains everything about source +functions that the transfer module needs to know). In particular, each +structure contains one array of tabulated values (for {\tt struct background }, background +quantitites as a function of time, for {\tt struct thermo}, thermodynamical quantitites as a +function of redshift, for {\tt struct perturbs}, sources $S(k, \tau)$, etc.). It +also contains information about the size of this array and the value +of the index of each physical quantity, so that the table can be +easily read and interpolated. Finally, it contains any derived +quantity that other modules might need to know. Hence, the +comunication from one module A to another module B +consists in passing a pointer to the structure filled by A, and nothing else. + +All ``precision parameters'' are grouped in the single structure +{\tt struct precision}. The code contains {\it no other arbitrary +numerical coefficient}. + +\subsubsection{Ten modules} + +Each structure is defined and filled in one of the following modules +(and precisely in the order below): +\begin{enumerate} +\item {\tt input.c } +\item {\tt background.c } +\item {\tt thermodynamics.c } +\item {\tt perturbations.c } +\item {\tt primordial.c } +\item {\tt nonlinear.c } +\item {\tt transfer.c } +\item {\tt spectra.c } +\item {\tt lensing.c } +\item {\tt output.c } +\end{enumerate} +Each of these modules contains at least three functions: +\begin{itemize} +\item {\it module}\_{\tt init(...)} +\item {\it module}\_{\tt free(...)} +\item {\it module}\_{\it something}\_{\tt at}\_{\it somevalue}{\tt(...)} +\end{itemize} +where {\it module} is one of {\tt input, background, thermodynamics, perturb, primordial, nonlinear, transfer, spectra, lensing, output}. + + +The first function allocates and fills each structure. This can be +done provided that the previous structures in the hierarchy have been +already allocated and filled. In summary, calling one of {\it module}\_{\tt +init(...)} amounts in solving entirely one of the steps 1 to 10. + +The second function deallocates the fields of each structure. This +can be done optionally at the end of the code (or, when the code is embedded +in a sampler, this {\it must} be done +between each execution of {\sc class}, and especially before calling {\it +module}\_{\tt init(...)} again with different input parameters). + +The +third function is able to interpolate the pre-computed tables. For +instance, {\tt background\_init()} fills a table of background +quantitites for discrete values of conformal time $\tau$, but {\tt +background\_at\_tau(tau, * values)} will return these values for any +arbitrary $\tau$. + +Note that functions of the type {\it module}\_{\it +something}\_{\tt at}\_{\it somevalue}{\tt(...)} are the only ones which are +called from another module, while functions of the type {\it +module}\_{\tt init(...)} and {\it module}\_{\tt free(...)} are the only +one called by the main executable. All other functions are for +internal use in each module. + +When writing a C code, the ordering of the functions in the *.c file is in principle arbitrary. However, for the sake of clarity, we always respected the following order in each \CLASS module: + +\begin{enumerate} +\item all functions that may be called by other modules, i.e. ``external functions'', usually named like {\it module}\_{\it something}\_{\tt at}\_{\it somevalue}{\tt(...)} +\item then, {\it module}\_{\tt init(...)} +\item then, {\it module}\_{\tt free()} +\item then, all functions used only internally by the module +\end{enumerate} + +\subsection{{\tt main()} function(s)} + +\subsubsection{The {\tt main.c} file} + +The main executable of {\sc class} is the function {\tt main()} located in the file {\tt main/main.c}. +This function consist only in the +following lines +(not including comments and error-management lines explained later): + +\vspace{0.5cm} + +\noindent +{\tt +main() \{ \\ +\indent struct precision pr;\\ +\indent struct background ba;\\ +\indent struct thermo th; \\ +\indent struct perturbs pt; \\ +\indent struct primordial pm; \\ +\indent struct nonlinear nl;\\ +\indent struct transfers tr; \\ +\indent struct spectra sp; \\ +\indent struct lensing le;\\ +\indent struct output op; \\ + \\ +\indent input\_init\_from\_arguments(argc, argv,\&pr,\&ba,\&th,\&pt,\&tr,\&pm,\&sp,\&nl,\&le,\&op,errmsg);\\ +\indent background\_init(\&pr,\&ba);\\ +\indent thermodynamics\_init(\&pr,\&ba,\&th);\\ +\indent perturb\_init(\&pr,\&ba,\&th,\&pt);\\ +\indent primordial\_init(\&pr,\&pt,\&pm);\\ +\indent nonlinear\_init(\&pr,\&ba,\&th,\&pt,\&pm,\&nl);\\ +\indent transfer\_init(\&pr,\&ba,\&th,\&pt,\&nl,\&tr);\\ +\indent spectra\_init(\&pr,\&ba,\&pt,\&pm,\&nl,\&tr,\&sp);\\ +\indent lensing\_init(\&pr,\&pt,\&sp,\&nl,\&le);\\ +\indent output\_init(\&ba,\&th,\&pt,\&pm,\&tr,\&sp,\&nl,\&le,\&op)\\ +\\ +\indent /****** done ******/\\ +\\ +\indent lensing\_free(\&le);\\ +\indent spectra\_free(\&sp);\\ +\indent transfer\_free(\&tr);\\ +\indent nonlinear\_free(\&nl);\\ +\indent primordial\_free(\&pm);\\ +\indent perturb\_free(\&pt);\\ +\indent thermodynamics\_free(\&th);\\ +\indent background\_free(\&ba);\\ +\} +} + +\vspace{0.5cm} + +We can come back on the role of each argument. The arguments above are all pointers to the 10 structures of the code, excepted {\tt argc, argv} which contains the input files passed by the user, and {\tt errmsg} which contains the output error message of the input module (error management will be described below). + +{\tt input\_init\_from\_arguments} needs all structures, because it will set the precision parameters inside the {\tt precision} structure, and the physical parameters in some fields of the respective other structures. For instance, an input parameter relevant for the primordial spectrum calculation (like the tilt $n_s$) will be stored in the {\tt primordial} structure. Hence, in {\tt input\_init\_from\_arguments}, all structures can be seen as output arguments. + +Other {\it module}{\tt \_init()} functions typically need all previous structures, which contain the result of the previous modules, plus its own structures, which contain some relevant input parameters before the function is called, as well as all the result form the module when the function has been executed. Hence all passed structures can be seen as input argument, excepted the last one which is both input and output. An example is {\tt perturb\_init(\&pr,\&ba,\&th,\&pt)}. + +Each function {\it module}{\tt \_init()} does not need {\it all} previous structures, it happens that a module does not depend on a {\it all} previous one. For instance, the primordial module does not need information on the background and thermodynamics evolution in order to compute the primordial spectra, so the dependency is reduced: {\tt primordial\_init(\&pr,\&pt,\&pm)}. + +Each function {\it module}{\tt \_init()} only deallocates arrays defined in the structure of their own module, so they need only their own structure as argument. (This is possible because all structures are self-contained, in the sense that when the structure contains an allocated array, it also contains the size of this array). The first and last module, {\tt input} and {\tt output}, have no {\tt input\_free()} or {\tt output\_free()} functions, because the structures {\tt precision} and {\tt output} do not contain arrays that would need to be de-allocated after the execution of the module. + +\subsubsection{The {\tt test\_<...>.c} files} + +For a given purpose, somebody could only be interested in the +intermediate steps (only background quantities, only the +thermodynamics, only the perturbations and sources, etc.) It is +then straightforward to truncate the full hierarchy of modules 1, ... 10 at some +arbitrary order. We provide several ``reduced executables'' achieving precisely this. +They are located in {\tt test/test}\_{\it module}{\tt.c} (like, for instance, {\tt test/test\_perturbations.c}) and they can +be complied using the Makefile, which contains the appropriate commands and definitions (for instance, you can type {\tt make test\_perturbations}). + +The {\tt test/} directory contains other useful example of alternative main functions, like for instance +{\tt test\_loops.c} which shows how to call \CLASS within a loop over different parameter values. +There is also a version {\tt test/test\_loops\_omp.c} using a double level of openMP parallelisation: one for running several \CLASS instances in parallel, one for running each \CLASS instance on several cores. The comments in theses files are self-explanatory. + +\section{Input/output} + +\subsection{Input} + +There are two types of input: +\begin{enumerate} +\item ``precision parameters'' (controlling the precision of the output and the execution time), +\item ``input parameters'' (cosmological parameters, flags telling to the code what it should compute, ...) +\end{enumerate} +The code can be executed with a maximum of two input files, e.g.\\ + +\indent +{\tt ./class explanatory.ini cl\_permille.pre}\\ + + +\noindent +The file with a {\tt .ini} extension is the cosmological parameter +input file, and the one with a {\tt .pre} extension is the precision +file. Both files are optional: all parameters are set to default +values corresponding to the ``most usual choices'', and are eventually +replaced by the parameters passed in the two input files. For +instance, if one is happy with default accuracy settings, it is enough +to run with \\ + +\indent {\tt ./class explanatory.ini}\\ + +\noindent Input files do not +necessarily contain a line for each parameter, since many of them can +be left to default value. The example file {\tt explanatory.ini} is +very long and somewhat indigestible, since it contains all possible +parameters, together with lengthy explanations. We recommend to keep +this file unchanged for reference, and to copy it in e.g. {\tt +test.ini}. In the latter file, the user can erase all sections in +which he/she is absolutely not interested (e.g., all the part on +isocurvature modes, or on tensors, or on non-cold species, +etc.). Another option is to create an input file from scratch, copying +just the relevant lines from {\tt explanatory.ini}. For the simplest +applications, the user will just need a few lines for basic +cosmological parameters, one line for the {\tt output} entry (where +one can specifying which power spectra must be computed), and one line +for the {\tt root} entry (specifying the prefix of all output files). + +The syntax of the input files is explained at the beginning of {\tt +explanatory.ini}. Typically, lines in those files look like: + +\vspace{0.5cm} + +\noindent +{\tt parameter1 = value1}\\ +{\tt free comments}\\ +{\tt parameter2 = value2 \# further comments}\\ +{\tt \# commented\_parameter = commented\_value}\\ + +\noindent +and parameters can be entered in arbitrary order. This is rather +intuitive. The user should just be careful not to put an ``{\tt =}'' +sign not preceded by a ``{\tt \#}'' sign inside a comment: the code +would then think that one is trying to pass some unidentified input +parameter. + +The syntax for the cosmological and precision parameters is the same. +It is clearer to split these parameters in the two files {\tt .ini} +and {\tt .pre}, but there is no strict rule about which parameter goes +into which file: in principle, precision parameters could be passed in +the {\tt .ini}, and vice-versa. The only important thing is not to pass +the same parameter twice: the code would then complain and not run. + +The \CLASS input files are also user-friendly in the sense that many +different cosmological parameter bases can be used. This is made +possible by the fact that the code does not only read parameters, it +``interprets them'' with the level of logic which has been coded in +the {\tt input.c} module. For instance, the Hubble parameter, the photon +density, the baryon density and the ultra-relativistic neutrino density can be +entered as: + +\vspace{0.5cm} + +\noindent +{\tt h = 0.7}\\ +{\tt T\_cmb = 2.726 ~~~\# Kelvin units}\\ +{\tt omega\_b = 0.02}\\ +{\tt N\_eff = 3.04}\\ + + +\noindent +(in arbitrary order), or as + +\vspace{0.5cm} + +\noindent +{\tt H0 = 70}\\ {\tt omega\_g = 2.5e-5 ~~~\# g is the label for +photons}\\ {\tt Omega\_b = 0.04}\\ {\tt omega\_ur = 1.7e-5 ~~~\# ur is +the label for ultra-relativistic species}\\ + + +\noindent +or any combination of the two. The code knows that for the photon +density, one should pass one (but not more than one) parameter out of +{\tt T\_cmb, omega\_g, Omega\_g} (where small omega's refer to +$\omega_i \equiv \Omega_i h^2$). It searches for one of these values, +and if needed, it converts it into one of the other two parameters, +using also other input parameters. For instance, {\tt omega\_g} will +be converted into {\tt Omega\_g} even if $h$ is written later in the +file than {\tt omega\_g}: the order makes no difference. Lots of +alternatives have been defined. If the code finds that not enough +parameters have been passed for making consistent deductions, it will +complete the missing information with in-built default values. On the +contrary, if it finds that there is too much information and no unique +solution, it will complain and return an error. + +In summary, the input syntax has been defined in such way that the +user does not need to think too much, and can pass his preferred set +of parameters in a nearly informal way. + +Let us mention a two useful parameters defined at the end of {\tt explanatory.ini}, that we recommend setting to {\tt yes} in order to run the code in a safe way:\\ + +\indent {\tt write parameters =} [{\tt yes} or {\tt no}] {\it (default: {\tt no})}\\ + +When set to yes, all input/precision parameters which have been read +are written in a file {\tt parameters.ini}, to keep track all the details of this execution; this file can also be re-used as a new input file. Also, with this option, all parameters that have been passed and that the code did not read (because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written in a file {\tt unused\_parameters}. When you have doubts about your input or your results, you can check what is in there.\\ + +\indent {\tt write warnings =} [{\tt yes} or {\tt no}] {\it (default: {\tt no})}\\ + +When set to yes, the parameters that have been passed and that the code did not read +(because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written +in the standard output as {\tt [Warning:]....} + +There is also a list of ``verbose'' parameters at the end of {\tt explanatory.ini}. They can be used to control +the level of information passed to the standard output (0 means silent; 1 means normal, e.g. information on age of the universe, etc.; 2 is useful for instance when you want to check on how many cores the run is parallelised; 3 and more are intended for debugging). + +{\it This part of the documentation will be expanded with details on default precision and on the proposed alternative precision files.} + +\subsection{Output} + +The input file may contain a line\\ + +\indent {\tt root = }\\ + +\noindent where {\tt } is a path of your choice, e.g. {\tt output/test\_}. +Then all output files will start like this, e.g. {\tt output/test\_cl.dat}, {\tt output/test\_cl\_lensed.dat}, etc. +Of course the number of output files depends on your settings in the input file. There can be input files for CMB, LSS, background, thermodynamics, transfer functions, primordial spectra, etc. All this is documented in {\tt explanatory.ini}. + +If you do not pass explicitly a {\tt root = }, the code will name the output in its own way, by concatenating {\tt output/}, the name of the input parameter file, and the first available integer number, e.g.\\ + +\indent {\tt output/explanatory03\_cl.dat}, etc. + +\section{General principles} + +\subsection{Error management} + +Error management is based on the fact that all functions are defined +as integers returning either {\tt \_SUCCESS\_} or {\tt + \_FAILURE\_}. Before returning {\tt \_FAILURE\_}, they write an +error message in the structure of the module to which they belong. The +calling function will read this message, append it to its own error +message, and return a {\tt \_FAILURE\_}; and so on and so forth, until +the main routine is reached. This error management allows the user to +see the whole nested structure of error messages when an error has +been met. The structure associated to each module contains a field +for writing error messages, called {\tt + structure\_i.error\_message}, where {\tt structure\_i} could be one of {\tt background}, {\tt thermo}, {\tt perturbs}, etc. So, when a function from a module $i$ +is called within module $j$ and returns an error, the goal is to write +in {\tt structure\_j.error\_message} a local error message, and to +append to it the error message in {\tt + structure\_i.error\_message}. These steps are implemented in a macro +{\tt class\_call()}, used for calling whatever function: + +\vspace{0.5cm} + +\noindent +{\tt class\_call(module\_i\_function(...,structure\_i),}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt structure\_i.error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt structure\_j.error\_message);}\\ + +\noindent +So, the first argument of {\tt call\_call()} is the function we want +to call; the second argument is the location of the error message +returned by this function; and the third one is the location of the +error message which should be returned to the higher level. +Usually, in the bulk of the code, we use pointer to structures rather than structure themselves; then the syntax is + +\vspace{0.5cm} + +\noindent +{\tt class\_call(module\_i\_function(...,pi),}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt pi->error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt pj->error\_message);}\\ + +\noindent +where in this generic example, {\tt pi} and {\tt pj} are assumed to be pointers towards the structures +{\tt structure\_i} and {\tt structure\_j}. + + +The user +will find in {\tt include/common.h} a list of additional macros, all +starting by {\tt class\_...()}, which are all based on this logic. For +instance, the macro {\tt class\_test()} offers a generic way to return +an error in a standard format if a condition is not fulfilled. A +typical error message from \CLASS looks like: + +\vspace{0.5cm} + +\noindent +{\tt Error in module\_j\_function1\\ +=> module\_j\_function1 (L:340) : error in module\_i\_function2(...)\\ +=> module\_i\_function2 (L:275) : error in module\_k\_function3(...)\\ +...\\ +=> module\_x\_functionN (L:735) : your choice of input parameter blabla=30 +is not consistent with the constraint blabla<1\\} + +\noindent +where the {\tt L}'s refer to line numbers in each file. These error +messages are very informative, and are built almost entirely +automatically by the macros. For instance, in the above example, it +was only necessary to write inside the function {\tt module\_x\_functionN()} a test like:\\ + +\noindent +{\tt class\_test(blabla >= 1,}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt px->error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt "your choice of input parameter blabla=\%e +is not consistent with the constraint blabla<\%e",}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt blabla,blablamax);}\\ + +\noindent All +the rest was added step by step by the various {\tt +class\_call()} macros. + +\subsection{Dynamical allocation of indices} + +On might be tempted to decide that in a given array, matrix or vector, a given quantity is associated with an explicit index value. However, when modifying the code, extra entries will be needed and will mess up the initial scheme; the user will need to study which index is associated to which quantity, and possibly make an error. All this can be avoided by using systematically a dynamical index allocation. This means that all indices remain under a symbolic form, and in each, run the code attributes automatically a value to each index. The user never needs to know this value. +{\it This part of the documentation will be expanded with concrete guidelines.} + +\subsection{No hard coding} + +Any feature or equation which could be true in one cosmology and not in another one should not be written explicitly in the code, and should not be taken as granted in several other places. Discretization and integration steps are usually defined automatically by the code for each cosmology, instead of being set to something which might be optimal for minimal models, and not sufficient for other ones. +{\it This part of the documentation will be expanded with concrete examples.} + +\subsection{Modifying the code} + +{\it This part of the documentation will be expanded with concrete guidelines.} + +\section{Units and equations} + +{\it This part of the documentation will be expanded with concrete guidlines.} + +\end{document} diff --git a/class/doc/input/make1.sh b/class/doc/input/make1.sh new file mode 100755 index 00000000..334e3d72 --- /dev/null +++ b/class/doc/input/make1.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +doxygen doxyconf + +cp doxygen.sty ../manual/latex/doxygen.sty \ No newline at end of file diff --git a/class/doc/input/make2.sh b/class/doc/input/make2.sh new file mode 100755 index 00000000..61d2fc13 --- /dev/null +++ b/class/doc/input/make2.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd ../manual/latex + +make + +make + +cp refman.pdf ../CLASS_MANUAL.pdf +cd ../../input diff --git a/class/doc/input/mod.md b/class/doc/input/mod.md new file mode 100644 index 00000000..32f0a8cb --- /dev/null +++ b/class/doc/input/mod.md @@ -0,0 +1,40 @@ +Updating the manual +=================== +Author: D. C. Hooper (hooper@physik.rwth-aachen.de) + +This pdf manual and accompanying web version have been generated using the `doxygen` software (http://www.doxygen.org). This software directly reads the code and extracts the necessary comments to form the manual, meaning it is very easy to generate newer versions of the manual as desired. + +### For CLASS developpers: ### + +To maintain the usefulness of the manual, a new version should be generated after any major upgrade to `CLASS`. To keep track of how up-to-date the manual is the title page also displays the last modification date. The manual is generated automatically from the code, excepted a few chapters written manually in the files + + README.md + doc/input/chap2.md + doc/input/chap3.md + doc/input/mod.md + external_Pk/README.md + +You can update these files, or add new ones that should be declared in the `INPUT=` field of `doc/input/doxyconf`. + +Generating a new version of this manual is straightforward. First, you need to install the `doxygen` software, which can be done by following the instructions on the software's webpage. The location where you install this software is irrelevant; it doesn't need to be in the same folder as `CLASS`. For Mac OSX, homebrew users can install the software with `brew install doxygen --with-graphviz`. + +Once installed, navigate to the class/doc/input directory and run the first script + +` . make1.sh` + +This will generate a new version of the html manual and the necessary files to make the pdf version. Unfortunately, `doxygen` does not yet offer the option to automatically order the output chapters in the pdf version of the manual. Hence, before compiling the pdf, this must be done manually. To do this you need to find the `refman.tex` file in class/doc/manual/latex. With this file you can modify the title page, headers, footers, and chapter ordering for the final pdf. Usually we just make two things: add manually the line + + \vspace*{1cm} + {\large Last updated \today}\\ + +after + + {\Large C\+L\+A\+SS M\+A\+N\+U\+AL }\\ + +and move manually the chapters `"The external Pk mode"` and `"Updating the manual"` to the end, after the automatically generated part. Once you have this file with your desired configuration, navigate back to the class/doc/input directory, and run the second script + +` . make2.sh` + +You should now be able to find the finished pdf in `class/doc/manual/CLASS_MANUAL.pdf`. Finally you can commit the changes to git, but not all the content of `doc/` is necessary: only `doc/README`, `doc/input/` and `doc/manual/CLASS_MANUAL.pdf`. Since version 2.8, we are not committing anymore `doc/manual/html/` because it was too big (and complicating the version history): users only get the PDF manual from git. + +As a final comment, doxygen uses two main configuration files: `doxyconf` and `doxygen.sty`, both located in class/doc/input. Changes to these files can dramatically impact the outcome, so any modifications to these files should be done with great care. diff --git a/class/doc/manual/CLASS_MANUAL.pdf b/class/doc/manual/CLASS_MANUAL.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6f9658bb710a640c96661bded87eb9bfc02c1fe8 GIT binary patch literal 1555738 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 n}zHa<96%8Pcg!iD^0hj8l3PFA}d0%f}Y4tf- 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�AiV583L%w=xQ!v%xwhrgRDuX)j4?vi| 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 nCR}$V*Jj{Di;sr^=7|@oey$p^N(-#y2#_(}LWr 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

a~8aq}#f^MPC9J5+ydh?KIV- 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ⅅ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 z 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

i8jj=1P%+&51Jvv%rawbWT#`E<|)xA&9- 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

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#############################################\n", + "#\n", + "# User settings controlling the figure aspect\n", + "#\n", + "z_max_pk = 46000 # highest redshift involved\n", + "k_per_decade = 400 # number of k values, controls final resolution\n", + "k_min_tau0 = 40. # this value controls the minimum k value in the figure (it is k_min * tau0)\n", + "P_k_max_inv_Mpc =1.0 # this value is directly the maximum k value in the figure in Mpc\n", + "tau_num_early = 2000 # number of conformal time values before recombination, controls final resolution\n", + "tau_num_late = 200 # number of conformal time values after recombination, controls final resolution\n", + "tau_ini = 10. # first value of conformal time in Mpc\n", + "tau_label_Hubble = 20. # value of time at which we want to place the label on Hubble crossing\n", + "tau_label_ks = 40. # value of time at which we want to place the label on sound horizon crossing\n", + "tau_label_kd = 230. # value of time at which we want to place the label on damping scale crossing\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# which output? transfer functions only\n", + " 'output':'mTk',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'z_max_pk':z_max_pk,\n", + " # to get a larger z_max in recfast, \n", + " # we must increase both recfast_z_initial \n", + " # and the number of sampled values recfast_Nz0\n", + " # (in order to keep the same stepzize asd in the default: Delta z = 0.5)\n", + " 'recfast_Nz0':z_max_pk*2.,\n", + " 'recfast_z_initial':z_max_pk+1.,\n", + " #'k_step_sub':'0.01',\n", + " 'k_per_decade_for_pk':k_per_decade,\n", + " 'k_per_decade_for_bao':k_per_decade,\n", + " 'k_min_tau0':k_min_tau0, # this value controls the minimum k value in the figure\n", + " 'perturb_sampling_stepsize':'0.05',\n", + " 'P_k_max_1/Mpc':P_k_max_inv_Mpc,\n", + " 'compute damping scale':'yes', # needed to output and plot Silk damping scale\n", + " 'gauge':'newtonian'}\n", + "\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# define conformal time sampling array\n", + "#\n", + "times = M.get_current_derived_parameters(['tau_rec','conformal_age'])\n", + "tau_rec=times['tau_rec']\n", + "tau_0 = times['conformal_age']\n", + "tau1 = np.logspace(math.log10(tau_ini),math.log10(tau_rec),tau_num_early)\n", + "tau2 = np.logspace(math.log10(tau_rec),math.log10(tau_0),tau_num_late)[1:]\n", + "tau2[-1] *= 0.999 # this tiny shift avoids interpolation errors\n", + "tau = np.concatenate((tau1,tau2))\n", + "tau_num = len(tau)\n", + "#\n", + "# use table of background and thermodynamics quantitites to define some functions \n", + "# returning some characteristic scales\n", + "# (of Hubble crossing, sound horizon crossing, etc.) at different time\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "thermodynamics = M.get_thermodynamics() # load thermodynamics table\n", + "#print thermodynamics.viewkeys() \n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read conformal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_aH = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read 2pi * aH in [h/Mpc]\n", + "background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read 2pi/(comoving sound horizon) in [h/Mpc]\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "background_rho_l_over_m =\\\n", + " background['(.)rho_lambda']\\\n", + " /(background['(.)rho_b']+background['(.)rho_cdm']) # read rho_m / rho_lambda (to find time of equality)\n", + "thermodynamics_tau = thermodynamics['conf. time [Mpc]'] # read confromal times in thermodynamics table\n", + "thermodynamics_kd = 2.*math.pi/thermodynamics['r_d']/M.h() # read 2pi(comoving diffusion scale) in [h/Mpc]\n", + "#\n", + "# define a bunch of interpolation functions based on previous quantities\n", + "#\n", + "background_z_at_tau = interp1d(background_tau,background_z)\n", + "background_aH_at_tau = interp1d(background_tau,background_aH)\n", + "background_ks_at_tau = interp1d(background_tau,background_ks)\n", + "background_tau_at_mr = interp1d(background_rho_m_over_r,background_tau)\n", + "background_tau_at_lm = interp1d(background_rho_l_over_m,background_tau)\n", + "thermodynamics_kd_at_tau = interp1d(thermodynamics_tau, thermodynamics_kd)\n", + "#\n", + "# infer arrays of characteristic quantitites calculated at values of conformal time in tau array\n", + "#\n", + "aH = background_aH_at_tau(tau) \n", + "ks = background_ks_at_tau(tau)\n", + "kd = thermodynamics_kd_at_tau(tau)\n", + "#\n", + "# infer times of R/M and M/Lambda equalities\n", + "#\n", + "tau_eq = background_tau_at_mr(1.)\n", + "tau_lambda = background_tau_at_lm(1.)\n", + "#\n", + "# check and inform user whether intiial arbitrary choice of z_max_pk was OK\n", + "max_z_needed = background_z_at_tau(tau[0])\n", + "if max_z_needed > z_max_pk:\n", + " print ('you must increase the value of z_max_pk to at least ',max_z_needed)\n", + " () + 1 # this strange line is just a trick to stop the script execution there\n", + "else:\n", + " print ('in a next run with the same values of tau, you may decrease z_max_pk from ',z_max_pk,' to ',max_z_needed)\n", + "#\n", + "# get transfer functions at each time and build arrays Theta0(tau,k) and phi(tau,k)\n", + "#\n", + "for i in range(tau_num):\n", + " one_time = M.get_transfer(background_z_at_tau(tau[i])) # transfer functions at each time tau\n", + " if i ==0: # if this is the first time in the loop: create the arrays (k, Theta0, phi)\n", + " k = one_time['k (h/Mpc)']\n", + " k_num = len(k)\n", + " Theta0 = np.zeros((tau_num,k_num))\n", + " phi = np.zeros((tau_num,k_num))\n", + " Theta0[i,:] = 0.25*one_time['d_g'][:]\n", + " phi[i,:] = one_time['phi'][:]\n", + "#\n", + "# find the global extra of Theta0(tau,k) and phi(tau,k), used to define color code later\n", + "#\n", + "Theta_amp = max(Theta0.max(),-Theta0.min()) \n", + "phi_amp = max(phi.max(),-phi.min()) \n", + "#\n", + "# reshaping of (k,tau) necessary to call the function 'pcolormesh'\n", + "#\n", + "K,T = np.meshgrid(k,tau)\n", + "#\n", + "# inform user of the size of the grids (related to the figure resolution)\n", + "#\n", + "print ('grid size:',len(k),len(tau),Theta0.shape)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "fig = plt.figure(figsize=(18,8)) \n", + "#\n", + "# plot Theta0(k,tau)\n", + "#\n", + "ax_Theta = fig.add_subplot(121)\n", + "print ('> Plotting Theta_0')\n", + "fig_Theta = ax_Theta.pcolormesh(K,T,Theta0,cmap='coolwarm',vmin=-Theta_amp, vmax=Theta_amp) #,shading='gouraud')\n", + "print ('> Done')\n", + "#\n", + "# plot lines (characteristic times and scales)\n", + "#\n", + "ax_Theta.axhline(y=tau_rec,color='k',linestyle='-')\n", + "ax_Theta.axhline(y=tau_eq,color='k',linestyle='-')\n", + "ax_Theta.axhline(y=tau_lambda,color='k',linestyle='-')\n", + "ax_Theta.plot(aH,tau,'r-',linewidth=2)\n", + "ax_Theta.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2)\n", + "ax_Theta.plot(kd,tau,'b-',linewidth=2)\n", + "#\n", + "# dealing with labels\n", + "#\n", + "ax_Theta.set_title(r'$\\Theta_0$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_rec,r'$\\mathrm{rec.}$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_eq,r'$\\mathrm{R/M} \\,\\, \\mathrm{eq.}$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_lambda,r'$\\mathrm{M/L} \\,\\, \\mathrm{eq.}$')\n", + "ax_Theta.annotate(r'$\\mathrm{Hubble} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble),\n", + " xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Theta.annotate(r'$\\mathrm{sound} \\,\\, \\mathrm{horizon} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_ks_at_tau(tau_label_ks),tau_label_ks),\n", + " xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Theta.annotate(r'$\\mathrm{damping} \\,\\, \\mathrm{scale} \\,\\, \\mathrm{cross.}$',\n", + " xy=(thermodynamics_kd_at_tau(tau_label_kd),tau_label_kd),\n", + " xytext=(0.2*thermodynamics_kd_at_tau(tau_label_kd),2.0*tau_label_kd),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# dealing with axes\n", + "#\n", + "ax_Theta.set_xlim(k[0],k[-1])\n", + "ax_Theta.set_xscale('log')\n", + "ax_Theta.set_yscale('log')\n", + "ax_Theta.set_xlabel(r'$k \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Theta.set_ylabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "ax_Theta.invert_yaxis()\n", + "#\n", + "# color legend\n", + "#\n", + "fig.colorbar(fig_Theta)\n", + "#\n", + "# plot phi(k,tau)\n", + "#\n", + "ax_phi = fig.add_subplot(122)\n", + "ax_phi.set_xlim(k[0],k[-1])\n", + "#ax_phi.pcolor(K,T,phi,cmap='coolwarm')\n", + "print ('> Plotting phi')\n", + "fig_phi = ax_phi.pcolormesh(K,T,phi,cmap='coolwarm',vmin=-0., vmax=phi_amp)\n", + "print ('> Done')\n", + "#\n", + "# plot lines (characteristic times and scales)\n", + "#\n", + "ax_phi.axhline(y=tau_rec,color='k',linestyle='-')\n", + "ax_phi.axhline(y=tau_eq,color='k',linestyle='-')\n", + "ax_phi.axhline(y=tau_lambda,color='k',linestyle='-')\n", + "ax_phi.plot(aH,tau,'r-',linewidth=2)\n", + "ax_phi.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2)\n", + "#\n", + "# dealing with labels\n", + "#\n", + "ax_phi.set_title(r'$\\phi$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_rec,r'$\\mathrm{rec.}$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_eq,r'$\\mathrm{R/M} \\,\\, \\mathrm{eq.}$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_lambda,r'$\\mathrm{M/L} \\,\\, \\mathrm{eq.}$')\n", + "ax_phi.annotate(r'$\\mathrm{Hubble} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble),\n", + " xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_phi.annotate(r'$\\mathrm{sound} \\,\\, \\mathrm{horizon} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_ks_at_tau(tau_label_ks),tau_label_ks),\n", + " xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# dealing with axes\n", + "#\n", + "ax_phi.set_xscale('log')\n", + "ax_phi.set_yscale('log')\n", + "ax_phi.set_xlabel(r'$k \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_phi.set_ylabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "ax_phi.invert_yaxis()\n", + "#\n", + "# color legend\n", + "#\n", + "fig.colorbar(fig_phi)\n", + "#\n", + "# produce the PDF\n", + "#\n", + "#plt.show()\n", + "plt.savefig('many_times.png',dpi=300)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/neutrinohierarchy.ipynb b/class/notebooks/neutrinohierarchy.ipynb new file mode 100644 index 00000000..deaab14b --- /dev/null +++ b/class/notebooks/neutrinohierarchy.ipynb @@ -0,0 +1,189 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# a function returning the three masses given the Delta m^2, the total mass, and the hierarchy (e.g. 'IN' or 'IH')\n", + "# taken from a piece of MontePython written by Thejs Brinckmann\n", + "def get_masses(delta_m_squared_atm, delta_m_squared_sol, sum_masses, hierarchy):\n", + " # any string containing letter 'n' will be considered as refering to normal hierarchy\n", + " if 'n' in hierarchy.lower():\n", + " # Normal hierarchy massive neutrinos. Calculates the individual\n", + " # neutrino masses from M_tot_NH and deletes M_tot_NH\n", + " #delta_m_squared_atm=2.45e-3\n", + " #delta_m_squared_sol=7.50e-5\n", + " m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5\n", + " m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True)\n", + " m1 = m1[0]\n", + " m2 = (delta_m_squared_sol + m1**2.)**0.5\n", + " m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5\n", + " return m1,m2,m3\n", + " else:\n", + " # Inverted hierarchy massive neutrinos. Calculates the individual\n", + " # neutrino masses from M_tot_IH and deletes M_tot_IH\n", + " #delta_m_squared_atm=-2.45e-3\n", + " #delta_m_squared_sol=7.50e-5\n", + " delta_m_squared_atm = -delta_m_squared_atm\n", + " m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5\n", + " m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True)\n", + " m1 = m1[0]\n", + " m2 = (delta_m_squared_sol + m1**2.)**0.5\n", + " m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5\n", + " return m1,m2,m3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# test of this function, returning the 3 masses for total mass of 0.1eV\n", + "m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'NH')\n", + "print 'NH:',m1,m2,m3,m1+m2+m3\n", + "m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'IH')\n", + "print 'IH:',m1,m2,m3,m1+m2+m3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# The goal of this cell is to compute the ratio of P(k) for NH and IH with the same total mass\n", + "commonsettings = {'N_ur':0,\n", + " 'N_ncdm':3,\n", + " 'output':'mPk',\n", + " 'P_k_max_1/Mpc':3.0,\n", + " # The next line should be uncommented fgor higher precision (but significantly slower running)\n", + " 'ncdm_fluid_approximation':3,\n", + " # You may uncomment this line to get more info on the ncdm sector from Class:\n", + " 'background_verbose':1\n", + " }\n", + "\n", + "# array of k values in 1/Mpc\n", + "kvec = np.logspace(-4,np.log10(3),100)\n", + "# array for storing legend\n", + "legarray = []\n", + "\n", + "# loop over total mass values\n", + "for sum_masses in [0.1, 0.115, 0.13]:\n", + " # normal hierarchy\n", + " [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'NH')\n", + " NH = Class()\n", + " NH.set(commonsettings)\n", + " NH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)})\n", + " NH.compute()\n", + " # inverted hierarchy\n", + " [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'IH')\n", + " IH = Class()\n", + " IH.set(commonsettings)\n", + " IH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)})\n", + " IH.compute()\n", + " pkNH = []\n", + " pkIH = []\n", + " for k in kvec:\n", + " pkNH.append(NH.pk(k,0.))\n", + " pkIH.append(IH.pk(k,0.))\n", + " NH.struct_cleanup()\n", + " IH.struct_cleanup()\n", + " # extract h value to convert k from 1/Mpc to h/Mpc\n", + " h = NH.h()\n", + " plt.semilogx(kvec/h,1-np.array(pkNH)/np.array(pkIH))\n", + " legarray.append(r'$\\Sigma m_i = '+str(sum_masses)+'$eV')\n", + "plt.axhline(0,color='k')\n", + "plt.xlim(kvec[0]/h,kvec[-1]/h)\n", + "plt.xlabel(r'$k [h \\mathrm{Mpc}^{-1}]$')\n", + "plt.ylabel(r'$1-P(k)^\\mathrm{NH}/P(k)^\\mathrm{IH}$')\n", + "plt.legend(legarray) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('neutrinohierarchy.pdf')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/one_k.ipynb b/class/notebooks/one_k.ipynb new file mode 100644 index 00000000..ef81af01 --- /dev/null +++ b/class/notebooks/one_k.ipynb @@ -0,0 +1,223 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# value of k that we want to follow in [1/Mpc]\n", + "#\n", + "k = 0.5 # 1/Mpc\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# we need to set the output field to something although\n", + " # the really releveant outpout here will be set with 'k_output_values'\n", + " 'output':'mPk',\n", + " # value of k we want to polot in [1/Mpc]\n", + " 'k_output_values':k,\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other options and settings\n", + " 'compute damping scale':'yes', # needed to output the time of damping scale crossing\n", + " 'gauge':'newtonian'} \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# load perturbations\n", + "#\n", + "all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values\n", + "print all_k['scalar'][0].viewkeys()\n", + "# \n", + "one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values\n", + "# \n", + "tau = one_k['tau [Mpc]']\n", + "Theta0 = 0.25*one_k['delta_g']\n", + "phi = one_k['phi']\n", + "psi = one_k['psi']\n", + "theta_b = one_k['theta_b']\n", + "a = one_k['a']\n", + "# compute related quantitites \n", + "R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma)\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# get the time of decoupling\n", + "#\n", + "quantities = M.get_current_derived_parameters(['tau_rec'])\n", + "# print times.viewkeys()\n", + "tau_rec = quantities['tau_rec']\n", + "#\n", + "# use table of background quantitites to find the time of\n", + "# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H\n", + "background_k_rs = k * background['comov.snd.hrz.'] # read k * rs\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality)\n", + "#\n", + "tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau)\n", + "tau_at_k_rs = interp1d(background_k_rs,background_tau)\n", + "tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau)\n", + "#\n", + "# finally get these times\n", + "#\n", + "tau_Hubble = tau_at_k_over_aH(2.*math.pi)\n", + "tau_s = tau_at_k_rs(2.*math.pi)\n", + "tau_eq = tau_at_rho_m_over_r(1.)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([tau[0],tau_rec*1.3])\n", + "plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.title(r'$\\mathrm{Transfer} (\\tau,k) \\,\\,\\, \\mathrm{for} \\,\\,\\, k=%g \\,\\,\\, [1/\\mathrm{Mpc}]$'%k)\n", + "plt.grid()\n", + "#\n", + "plt.axvline(x=tau_Hubble,color='r')\n", + "plt.axvline(x=tau_s,color='y')\n", + "plt.axvline(x=tau_eq,color='k')\n", + "plt.axvline(x=tau_rec,color='k')\n", + "#\n", + "plt.annotate(r'Hubble cross.',\n", + " xy=(tau_Hubble,1.08*Theta0_amp),\n", + " xytext=(0.15*tau_Hubble,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'sound hor. cross.',\n", + " xy=(tau_s,-1.0*Theta0_amp),\n", + " xytext=(1.5*tau_s,-1.2*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'eq.',\n", + " xy=(tau_eq,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_eq,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'rec.',\n", + " xy=(tau_rec,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_rec,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# Possibility to add functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,psi,'y-',label=r'$\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_1.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,phi,'r-',label=r'$\\phi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_2.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_3.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\\Theta_0$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_4.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\\Theta_0+\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_5.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,theta_b,'g-',label=r'$\\theta_b$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "plt.savefig('one_k.pdf',bbox_inches='tight')\n", + "#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/one_time.ipynb b/class/notebooks/one_time.ipynb new file mode 100644 index 00000000..20ae6741 --- /dev/null +++ b/class/notebooks/one_time.ipynb @@ -0,0 +1,321 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['phi', 'psi', 't_cdm', 't_b', 'd_tot', 't_g', 'd_ur', 'd_cdm', 'd_b', 't_tot', 't_ur', 'd_g', 'k (h/Mpc)'])\n" + ] + }, + { + "data": { + "image/png": "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\nPwelzjYazCqlzlhR8FAZp9NJ06ZNK5wNweFwVJjftGlTfvnll1JBBMBPP/10yrExMTFs3769OFAq\nkphY8RD5Dh06sHXr1lJpeXl5tGvXDpvNxt69e3n66adJTEykVatWDB06lPz8fPbu3cvo0aNJSkri\nrrvu4tZbb2XlypUVXudclZ2dTZMmTVi3bh1vvPEGr776Ki+//DLnnXcexphy3/tOncpfoLEqba1I\n0fjrsuVXV4cOHRARtm3bViq9svqeTkxMDABff/11qfTTtdcdO3bgdDpL1QGgU6dOFbbLin4OSp1t\nNJhV6hzlcDgATgkYwfOHsuQfziZNmgAU31SydOlS4NQetqIeLYCff/6Z5557rtQsBSXz58+fXyrf\n7XYXBy5XXXUVWVlZ3HDDDWzbto3Dhw/z9NNPk5OTc0pdR44cSVhYGKNHj2bFihXs2rWL559/vrhn\nq+hrqJKefPJJFi1aREJCQnHawoULmTRpEgCzZs0iOzub2NhYPvjgA3JycigoKCA+Pp5ff/2VsLAw\nJk+eTLdu3cjIyABgxowZzJo165T6nYtOnDjBm2++icViYdy4cdx5551kZGQQFRXF/fffz8yZM4vb\nX3Z2NmvWrOGxxx4DPG1t586dZGZmkp6ezurVq8nJySnuUSzbs1jUpkSEAQMG0KpVK5555hmys7MB\nT899VlYW6YWLTJTldrtLlelyuYr3r776ai688EJeeeWV4vzly5fTqlUrfv/73xdft2z72rhxI/fe\ne+8pvx/gmS5s8ODBjB8/nv/+97/s2bOHDz74gO3btxeXV/IR4C9/+Qv5+fm89957xWlfffUV48aN\no3Xr1hW2y4p+DgDLli1j/PjxpX4nlWqwfD3Oob5tOma2cjpm9uzw888/yzXXXCOA9O3bV7755hsR\n8dwwMmvWLAkICDhl0YQ//elPEhYWJpdddpmsWLFCunXrJi+88IKkp6dLRkaG3HbbbXLVVVfJU089\nJX/961/lySefLL5eefkffPBBcf6cOXMkPDxcOnfuLCtWrBARkRUrVkivXr0kODhYLrjgApk7d26F\nr2fNmjXSr18/CQkJkT59+siPP/4oIiLx8fFy/vnnS1RUlHz22WfF4xJFRD755BMZMWKE/Otf/5IJ\nEybIa6+9Vpw3btw4ufTSS+Wtt96SJ598Uj755BMR8YxnbNOmjbz66qsyffp0eeKJJ4rPGT16tFx3\n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\nMxs2mpsRbS3atGljKy4urvUPJjIykmHDhhUvW7YsoaysTMXExJyUtX3vr0wMjwAAIABJREFUvfeS\nAc4777xigBtvvLHT1KlTj9911115H374YcK0adO67tmzZ7PJw0TM5ORkR91ANzIyUqenp1fXFwDX\nZLfbycnJib700kvzAVatWhUDcOaZZ5YBZGdnJ5x++um1apUKCwsjkpOT/fYPzx+tuX7AKDHwpQyg\nwMP+fCCroROVUiZgMPCMj8ckhAgTa4qLg1Yv69IhOppCm8296IC/NJqZdXZWaG6v2TK73asFE6Bl\nZQbuYLaRc+vW2saazX5/joXwVq9evSqqq6vV7t27a/3mePfddx85ceJExMyZMzPqnrNjx46ol156\nqf2wYcNKxo8fX3ro0KGIDRs2xN12223HAS6//PIigGXLlvml/MK16Mjhw4ejwMjEdujQoSolJcX+\nzjvvJG7atCn22muvzat5zoEDB6K6detW4Y/xgI8zs053AR8ppUqAjzA6F9T6rUJr3dT2C5WAp8+F\nTBiTyhpyE/Cs1npDfQcopW5yHkdqairZ2dlNHN6po6SkRJ4f4ZVQea2cAPYBFxw7FtTxFjm/f/j9\n95z0v5cPLceYyLDhhx88vnkedn7/ZuNGmrNQumtShDfPpes/hm1795K9d2+Dx65zff/hByL49eO4\nFevWefzPwWWF6x7r1lGJ8Z/G7kOHyD50qIGzhAgMV2Z12bJlsd26dXN/NHPJJZcU33333QeffPLJ\njP3790dfc801x9u0aWP76aefYubNm5eelJRke+utt/YA7N69OyolJaU6OjraHWtlZGRU7t27N8qb\nTGtTRUREcOGFFxa+++677ex2O2vXro2zWCyOKVOmdF64cGHbqVOnHrv22mvdP0teXp553759lttv\nvz3X12Nxj8kP19zk/D4Hz+UGuhn3PYDREaGuNvz63nkSpdQYwKK1frahi2utF2BMJmPo0KF67Nix\nTRzeqSM7Oxt5foQ3QuW18lV+PmzcyKQBAxjbpk3QxlGdn8/fN24kc9AgxiR5ervzjX9s2UKnkhLG\njRjh8fFKhwOWLiU+K4uxWVlNvn7Mhg20t9sZe/rpXh0flZ1NamYmY7t1a/C4T3ftIubQIc4dMwaA\nxOJiWLOG7n37MjYlpd7zdh06BDt2cO4ZZ5BpsZC8ahWJcXGM7dvX659JCH/p2bNnVf/+/Us//fTT\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,mTk,vTk',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000,\n", + " 'P_k_max_1/Mpc':10.0,\n", + " 'gauge':'newtonian'}\n", + "###############\n", + "#\n", + "# call CLASS a first time just to compute z_rec (will compute transfer functions at default: z=0)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "derived = M.get_current_derived_parameters(['z_rec','tau_rec','conformal_age'])\n", + "#print derived.viewkeys()\n", + "z_rec = derived['z_rec']\n", + "z_rec = int(1000.*z_rec)/1000. # round down at 4 digits after coma\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "# call CLASS again (will compute transfer functions at inout value z_rec)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'z_pk':z_rec})\n", + "M.compute()\n", + "#\n", + "# load transfer functions at recombination\n", + "#\n", + "one_time = M.get_transfer(z_rec)\n", + "print one_time.viewkeys()\n", + "k = one_time['k (h/Mpc)']\n", + "Theta0 = 0.25*one_time['d_g']\n", + "phi = one_time['phi']\n", + "psi = one_time['psi']\n", + "theta_b = one_time['t_b']\n", + "# compute related quantitites\n", + "R = 3./4.*M.Omega_b()/M.Omega_g()/(1+z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# use table of background quantitites to find the wavenumbers corresponding to\n", + "# Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_kh = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read kh = 2pi aH = 2pi H/(1+z) converted to [h/Mpc]\n", + "background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read ks = 2pi/rs converted to [h/Mpc]\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi\n", + "#\n", + "kh_at_tau = interp1d(background_tau,background_kh)\n", + "ks_at_tau = interp1d(background_tau,background_ks)\n", + "#\n", + "# finally get these scales\n", + "#\n", + "tau_rec = derived['tau_rec']\n", + "kh = kh_at_tau(tau_rec)\n", + "ks = ks_at_tau(tau_rec)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "fig, (ax_Tk, ax_Tk2, ax_Cl) = plt.subplots(3,sharex=True,figsize=(8,12))\n", + "fig.subplots_adjust(hspace=0)\n", + "##################\n", + "#\n", + "# first figure with transfer functions\n", + "#\n", + "##################\n", + "ax_Tk.set_xlim([3.e-4,0.5])\n", + "ax_Tk.set_ylim([-1.1*Theta0_amp,1.1*Theta0_amp])\n", + "ax_Tk.tick_params(axis='x',which='both',bottom='off',top='on',labelbottom='off',labeltop='on')\n", + "ax_Tk.set_xlabel(r'$\\mathrm{k} \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Tk.set_ylabel(r'$\\mathrm{Transfer}(\\tau_\\mathrm{dec},k)$')\n", + "ax_Tk.xaxis.set_label_position('top')\n", + "ax_Tk.grid()\n", + "#\n", + "ax_Tk.axvline(x=kh,color='r')\n", + "ax_Tk.axvline(x=ks,color='y')\n", + "#\n", + "ax_Tk.annotate(r'Hubble cross.',\n", + " xy=(kh,0.8*Theta0_amp),\n", + " xytext=(0.15*kh,0.9*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Tk.annotate(r'sound hor. cross.',\n", + " xy=(ks,0.8*Theta0_amp),\n", + " xytext=(1.3*ks,0.9*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "ax_Tk.semilogx(k,psi,'y-',label=r'$\\psi$')\n", + "ax_Tk.semilogx(k,phi,'r-',label=r'$\\phi$')\n", + "ax_Tk.semilogx(k,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "ax_Tk.semilogx(k,Theta0,'b-',label=r'$\\Theta_0$')\n", + "ax_Tk.semilogx(k,(Theta0+psi),'c',label=r'$\\Theta_0+\\psi$')\n", + "ax_Tk.semilogx(k,theta_b,'g-',label=r'$\\theta_b$')\n", + "#\n", + "ax_Tk.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#######################\n", + "#\n", + "# second figure with transfer functions squared\n", + "#\n", + "#######################\n", + "ax_Tk2.set_xlim([3.e-4,0.5])\n", + "ax_Tk2.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off',labeltop='off')\n", + "ax_Tk2.set_ylabel(r'$\\mathrm{Transfer}(\\tau_\\mathrm{dec},k)^2$')\n", + "ax_Tk2.grid()\n", + "#\n", + "ax_Tk2.semilogx(k,(Theta0+psi)**2,'c',label=r'$(\\Theta_0+\\psi)^2$')\n", + "#\n", + "ax_Tk2.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "########################\n", + "#\n", + "# third figure with all contributions to Cls\n", + "#\n", + "# For that we will need to call CLASS again for each contribution (TSW, earlyISW, lateISW, Doppler, total)\n", + "# Note that there is another contribution from polarisation: we don't plot it individually because it is\n", + "# too small to be seen, however it is included by default in the total.\n", + "#\n", + "# After each step we will save the figure (to get intermediate figures for the slides)\n", + "#\n", + "#########################\n", + "# presentation settings\n", + "ax_Cl.set_xlim([3.e-4,0.5])\n", + "ax_Cl.set_ylim([0.,8.])\n", + "ax_Cl.set_xlabel(r'$\\ell/(\\tau_0-\\tau_{rec}) \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Cl.set_ylabel(r'$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$')\n", + "ax_Cl.tick_params(axis='x',which='both',bottom='on',top='off',labelbottom='on',labeltop='off')\n", + "ax_Cl.grid()\n", + "#\n", + "# the x-axis will show l/(tau_0-tau_rec), so we need (tau_0-tau_rec) in units of [Mpc/h]\n", + "#\n", + "tau_0_minus_tau_rec_hMpc = (derived['conformal_age']-derived['tau_rec'])*M.h()\n", + "#\n", + "# save the total Cl's (we will plot them in the last step)\n", + "#\n", + "cl_tot = M.raw_cl(5000)\n", + "#\n", + "# call CLASS with TSW, then plot and save\n", + "#\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'c-',label=r'$\\mathrm{T+SW}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_1.pdf',bbox_inches='tight')\n", + "#\n", + "# call CLASS with early ISW, plot; call CLASS with late ISW, plot; then save\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'r-',label=r'$\\mathrm{early} \\,\\, \\mathrm{ISW}$')\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'y-',label=r'$\\mathrm{late} \\,\\, \\mathrm{ISW}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_2.pdf',bbox_inches='tight')\n", + "#\n", + "# call CLASS with Doppler, then plot and save\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'g-',label=r'$\\mathrm{Doppler}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_3.pdf',bbox_inches='tight')\n", + "#\n", + "# plot the total Cls that had been stored, and save\n", + "#\n", + "ax_Cl.semilogx(cl_tot['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl_tot['ell']*(cl_tot['ell']+1.)*cl_tot['tt']/2./math.pi,'k-',label=r'$\\mathrm{Total}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_tot.pdf',bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/class/notebooks/thermo.ipynb b/class/notebooks/thermo.ipynb new file mode 100644 index 00000000..a4cefd48 --- /dev/null +++ b/class/notebooks/thermo.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "common_settings = {'output' : 'tCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " 'thermodynamics_verbose':1\n", + " } \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "###############\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "derived = M.get_current_derived_parameters(['tau_rec','conformal_age'])\n", + "thermo = M.get_thermodynamics()\n", + "print thermo.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "tau = thermo['conf. time [Mpc]']\n", + "g = thermo['g [Mpc^-1]']\n", + "# to make the reionisation peak visible, rescale g by 100 for late times\n", + "g[:500] *= 100\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([1.e2,derived['conformal_age']])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.ylabel(r'$\\mathrm{visibility} \\,\\,\\, g \\,\\,\\, [\\mathrm{Mpc}^{-1}]$')\n", + "plt.axvline(x=derived['tau_rec'],color='k')\n", + "# The conformal time at reionisation could be extracted from the code.\n", + "# But we know it because it is part of the standard output\n", + "# when thermodynamics_verbose=1\n", + "plt.axvline(x=4255.316282,color='k')\n", + "#\n", + "# Print functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,g,'r',label=r'$\\psi$')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('thermo.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/varying_neff.ipynb b/class/notebooks/varying_neff.ipynb new file mode 100644 index 00000000..96790df9 --- /dev/null +++ b/class/notebooks/varying_neff.ipynb @@ -0,0 +1,270 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "############################################\n", + "#\n", + "# Varying parameter (others fixed to default)\n", + "#\n", + "var_name = 'N_ur'\n", + "var_array = np.linspace(3.046,5.046,5)\n", + "var_num = len(var_array)\n", + "var_legend = r'$N_\\mathrm{eff}$'\n", + "var_figname = 'neff'\n", + "#\n", + "# Constraints to be matched\n", + "#\n", + "# As explained in the \"Neutrino cosmology\" book, CUP, Lesgourgues et al., section 5.3, the goal is to vary\n", + "# - omega_cdm by a factor alpha = (1 + coeff*Neff)/(1 + coeff*3.046)\n", + "# - h by a factor sqrt*(alpha)\n", + "# in order to keep a fixed z_equality(R/M) and z_equality(M/Lambda)\n", + "#\n", + "# coefficient such that omega_r = omega_gamma (1 + coeff*Neff),\n", + "# i.e. such that omega_ur = omega_gamma * coeff * Neff:\n", + "# coeff = omega_ur/omega_gamma/Neff_standard\n", + "coeff = 1.710730e-05/2.472979e-05/3.046\n", + "print \"coeff=\",coeff\n", + "#\n", + "#############################################\n", + "#\n", + "# Fixed settings\n", + "#\n", + "common_settings = {'output':'tCl,pCl,lCl,mPk',\n", + " 'lensing':'yes',\n", + " # fixed LambdaCDM parameters\n", + " 'omega_b':0.022032,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'P_k_max_1/Mpc':3.0,\n", + " 'l_switch_limber':9} \n", + "#\n", + "##############################################\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "M = {}\n", + "#\n", + "for i, N_ur in enumerate(var_array):\n", + " #\n", + " # rescale omega_cdm and h\n", + " #\n", + " alpha = (1.+coeff*N_ur)/(1.+coeff*3.046)\n", + " omega_cdm = (0.022032 + 0.12038)*alpha - 0.022032\n", + " h = 0.67556*math.sqrt(alpha)\n", + " print ' * Compute with %s=%e, %s=%e, %s=%e'%('N_ur',N_ur,'omega_cdm',omega_cdm,'h',h)\n", + " #\n", + " # call CLASS\n", + " #\n", + " M[i] = Class()\n", + " M[i].set(common_settings)\n", + " M[i].set({'N_ur':N_ur})\n", + " M[i].set({'omega_cdm':omega_cdm})\n", + " M[i].set({'h':h})\n", + " M[i].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 24, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# extract spectra and plot them\n", + "#\n", + "#############################################\n", + "kvec = np.logspace(-4,np.log10(3),1000) # array of kvec in h/Mpc\n", + "twopi = 2.*math.pi\n", + "#\n", + "# Create figures\n", + "#\n", + "fig_Pk, ax_Pk = plt.subplots()\n", + "fig_TT, ax_TT = plt.subplots()\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "ll = {}\n", + "clM = {}\n", + "clTT = {}\n", + "pkM = {}\n", + "legarray = []\n", + "\n", + "for i, N_ur in enumerate(var_array):\n", + " #\n", + " alpha = (1.+0.2271*N_ur)/(1.+0.2271*3.046)\n", + " h = 0.67556*math.sqrt(alpha) # this is h\n", + " #\n", + " # deal with colors and legends\n", + " #\n", + " if i == 0:\n", + " var_color = 'k'\n", + " var_alpha = 1.\n", + " else:\n", + " var_color = plt.cm.Reds(0.8*i/(var_num-1))\n", + " #\n", + " # get Cls\n", + " #\n", + " clM[i] = M[i].lensed_cl(2500)\n", + " ll[i] = clM[i]['ell'][2:]\n", + " clTT[i] = clM[i]['tt'][2:]\n", + " #\n", + " # store P(k) for common k values\n", + " #\n", + " pkM[i] = []\n", + " # The function .pk(k,z) wants k in 1/Mpc so we must convert kvec for each case with the right h \n", + " khvec = kvec*h # This is k in 1/Mpc\n", + " for kh in khvec:\n", + " pkM[i].append(M[i].pk(kh,0.)*h**3) \n", + " # \n", + " # plot P(k)\n", + " #\n", + " if i == 0:\n", + " ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]),\n", + " color=var_color,#alpha=var_alpha,\n", + " linestyle='-')\n", + " else:\n", + " ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]),\n", + " color=var_color,#alpha=var_alpha,\n", + " linestyle='-',\n", + " label=r'$\\Delta N_\\mathrm{eff}=%g$'%(N_ur-3.046))\n", + " #\n", + " # plot C_l^TT\n", + " #\n", + " if i == 0:\n", + " ax_TT.semilogx(ll[i],clTT[i]/clTT[0],\n", + " color=var_color,alpha=var_alpha,linestyle='-')\n", + " else: \n", + " ax_TT.semilogx(ll[i],clTT[i]/clTT[0],\n", + " color=var_color,alpha=var_alpha,linestyle='-',\n", + " label=r'$\\Delta N_\\mathrm{eff}=%g$'%(N_ur-3.046))\n", + "#\n", + "# output of P(k) figure\n", + "#\n", + "ax_Pk.set_xlim([1.e-3,3.])\n", + "ax_Pk.set_ylim([0.98,1.20])\n", + "ax_Pk.set_xlabel(r'$k \\,\\,\\,\\, [h^{-1}\\mathrm{Mpc}]$')\n", + "ax_Pk.set_ylabel(r'$P(k)/P(k)[N_\\mathrm{eff}=3.046]$')\n", + "ax_Pk.legend(loc='upper left')\n", + "fig_Pk.tight_layout()\n", + "fig_Pk.savefig('ratio-%s-Pk.pdf' % var_figname)\n", + "#\n", + "# output of C_l^TT figure\n", + "# \n", + "ax_TT.set_xlim([2,2500])\n", + "ax_TT.set_ylim([0.850,1.005])\n", + "ax_TT.set_xlabel(r'$\\mathrm{Multipole} \\,\\,\\,\\, \\ell$')\n", + "ax_TT.set_ylabel(r'$C_\\ell^\\mathrm{TT}/C_\\ell^\\mathrm{TT}(N_\\mathrm{eff}=3.046)$')\n", + "ax_TT.legend(loc='lower left')\n", + "fig_TT.tight_layout()\n", + "fig_TT.savefig('ratio-%s-cltt.pdf' % var_figname)\n", + "#\n", + "# output of C_l^EE figure\n", + "# \n", + "#ax_EE.set_xlim([2,2500])\n", + "#ax_EE.set_xlabel(r'$\\ell$')\n", + "#ax_EE.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{EE}$')\n", + "#ax_EE.legend(legarray,loc='lower right')\n", + "#fig_EE.tight_layout()\n", + "#fig_EE.savefig('spectra_%s_clee.pdf' % var_figname)\n", + "#\n", + "# output of C_l^pp figure\n", + "# \n", + "#ax_PP.set_xlim([10,2500])\n", + "#ax_PP.set_xlabel(r'$\\ell$')\n", + "#ax_PP.set_ylabel(r'$[\\ell^2(\\ell+1)^2/2\\pi] C_\\ell^\\mathrm{\\phi \\phi}$')\n", + "#ax_PP.legend(legarray)\n", + "#fig_PP.tight_layout()\n", + "#fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/varying_pann.ipynb b/class/notebooks/varying_pann.ipynb new file mode 100644 index 00000000..25115d73 --- /dev/null +++ b/class/notebooks/varying_pann.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "############################################\n", + "#\n", + "# Varying parameter (others fixed to default)\n", + "#\n", + "var_name = 'annihilation'\n", + "var_array = np.linspace(0,1.e-5,5)\n", + "var_num = len(var_array)\n", + "var_legend = r'$p_\\mathrm{ann}$'\n", + "var_figname = 'pann'\n", + "#\n", + "#############################################\n", + "#\n", + "# Fixed settings\n", + "#\n", + "common_settings = {'output':'tCl,pCl,lCl,mPk',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'P_k_max_1/Mpc':3.0,\n", + " 'l_switch_limber':9}\n", + " #'background_verbose':1} \n", + "#\n", + "# arrays for output\n", + "#\n", + "kvec = np.logspace(-4,np.log10(3),1000)\n", + "legarray = []\n", + "twopi = 2.*math.pi\n", + "#\n", + "# Create figures\n", + "#\n", + "fig_Pk, ax_Pk = plt.subplots()\n", + "fig_TT, ax_TT = plt.subplots()\n", + "fig_EE, ax_EE = plt.subplots()\n", + "fig_PP, ax_PP = plt.subplots()\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "for i,var in enumerate(var_array):\n", + " #\n", + " print ' * Compute with %s=%e'%(var_name,var)\n", + " #\n", + " # deal with colors and legends\n", + " #\n", + " if i == 0:\n", + " var_color = 'k'\n", + " var_alpha = 1.\n", + " legarray.append(r'ref. $\\Lambda CDM$')\n", + " else:\n", + " var_color = 'r'\n", + " var_alpha = 1.*i/(var_num-1.)\n", + " if i == var_num-1:\n", + " legarray.append(var_legend) \n", + " # \n", + " # call CLASS\n", + " #\n", + " M = Class()\n", + " M.set(common_settings)\n", + " M.set({var_name:var})\n", + " M.compute()\n", + " #\n", + " # get Cls\n", + " #\n", + " clM = M.lensed_cl(2500)\n", + " ll = clM['ell'][2:]\n", + " clTT = clM['tt'][2:]\n", + " clEE = clM['ee'][2:]\n", + " clPP = clM['pp'][2:]\n", + " #\n", + " # get P(k) for common k values\n", + " #\n", + " pkM = []\n", + " for k in kvec:\n", + " pkM.append(M.pk(k,0.))\n", + " # \n", + " # plot P(k)\n", + " #\n", + " ax_Pk.loglog(kvec,np.array(pkM),color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot C_l^TT\n", + " #\n", + " ax_TT.semilogx(ll,clTT*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot Cl EE \n", + " #\n", + " ax_EE.loglog(ll,clEE*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot Cl phiphi\n", + " #\n", + " ax_PP.loglog(ll,clPP*ll*(ll+1)*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # reset CLASS\n", + " #\n", + " M.struct_cleanup()\n", + " M.empty() \n", + "#\n", + "# output of P(k) figure\n", + "#\n", + "ax_Pk.set_xlim([1.e-4,3.])\n", + "ax_Pk.set_xlabel(r'$k \\,\\,\\,\\, [h/\\mathrm{Mpc}]$')\n", + "ax_Pk.set_ylabel(r'$P(k) \\,\\,\\,\\, [\\mathrm{Mpc}/h]^3$')\n", + "ax_Pk.legend(legarray)\n", + "fig_Pk.tight_layout()\n", + "fig_Pk.savefig('spectra_%s_Pk.pdf' % var_figname)\n", + "#\n", + "# output of C_l^TT figure\n", + "# \n", + "ax_TT.set_xlim([2,2500])\n", + "ax_TT.set_xlabel(r'$\\ell$')\n", + "ax_TT.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{TT}$')\n", + "ax_TT.legend(legarray)\n", + "fig_TT.tight_layout()\n", + "fig_TT.savefig('spectra_%s_cltt.pdf' % var_figname)\n", + "#\n", + "# output of C_l^EE figure\n", + "# \n", + "ax_EE.set_xlim([2,2500])\n", + "ax_EE.set_xlabel(r'$\\ell$')\n", + "ax_EE.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{EE}$')\n", + "ax_EE.legend(legarray)\n", + "fig_EE.tight_layout()\n", + "fig_EE.savefig('spectra_%s_clee.pdf' % var_figname)\n", + "#\n", + "# output of C_l^pp figure\n", + "# \n", + "ax_PP.set_xlim([10,2500])\n", + "ax_PP.set_xlabel(r'$\\ell$')\n", + "ax_PP.set_ylabel(r'$[\\ell^2(\\ell+1)^2/2\\pi] C_\\ell^\\mathrm{\\phi \\phi}$')\n", + "ax_PP.legend(legarray)\n", + "fig_PP.tight_layout()\n", + "fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/warmup.ipynb b/class/notebooks/warmup.ipynb new file mode 100644 index 00000000..30fb48ec --- /dev/null +++ b/class/notebooks/warmup.ipynb @@ -0,0 +1,163 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import classy module\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# create instance of the class \"Class\"\n", + "LambdaCDM = Class()\n", + "# pass input parameters\n", + "LambdaCDM.set({'omega_b':0.022032,'omega_cdm':0.12038,'h':0.67556,'A_s':2.215e-9,'n_s':0.9619,'tau_reio':0.0925})\n", + "LambdaCDM.set({'output':'tCl,pCl,lCl,mPk','lensing':'yes','P_k_max_1/Mpc':3.0})\n", + "# run class\n", + "LambdaCDM.compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get all C_l output\n", + "cls = LambdaCDM.lensed_cl(2500)\n", + "# To check the format of cls\n", + "cls.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ll = cls['ell'][2:]\n", + "clTT = cls['tt'][2:]\n", + "clEE = cls['ee'][2:]\n", + "clPP = cls['pp'][2:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from math import pi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot C_l^TT\n", + "plt.figure(1)\n", + "plt.xscale('log');plt.yscale('linear');plt.xlim(2,2500)\n", + "plt.xlabel(r'$\\ell$')\n", + "plt.ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{TT}$')\n", + "plt.plot(ll,clTT*ll*(ll+1)/2./pi,'r-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('warmup_cltt.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get P(k) at redhsift z=0\n", + "import numpy as np\n", + "kk = np.logspace(-4,np.log10(3),1000) # k in h/Mpc\n", + "Pk = [] # P(k) in (Mpc/h)**3\n", + "h = LambdaCDM.h() # get reduced Hubble for conversions to 1/Mpc\n", + "for k in kk:\n", + " Pk.append(LambdaCDM.pk(k*h,0.)*h**3) # function .pk(k,z)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot P(k)\n", + "plt.figure(2)\n", + "plt.xscale('log');plt.yscale('log');plt.xlim(kk[0],kk[-1])\n", + "plt.xlabel(r'$k \\,\\,\\,\\, [h/\\mathrm{Mpc}]$')\n", + "plt.ylabel(r'$P(k) \\,\\,\\,\\, [\\mathrm{Mpc}/h]^3$')\n", + "plt.plot(kk,Pk,'b-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('warmup_pk.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# optional: clear content of LambdaCDM (to reuse it for another model)\n", + "LambdaCDM.struct_cleanup()\n", + "# optional: reset parameters to default\n", + "LambdaCDM.empty()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/pk_ref.pre b/class/pk_ref.pre new file mode 100644 index 00000000..770418cd --- /dev/null +++ b/class/pk_ref.pre @@ -0,0 +1,82 @@ +# this file achieves maximum precision for the CMB: each ClTT and ClEE, lensed and unlensed, are stable at the 0.01% level + +tol_ncdm_bg = 1.e-10 + +recfast_Nz0=100000 +tol_thermo_integration=1.e-5 + +recfast_x_He0_trigger_delta = 0.01 +recfast_x_H0_trigger_delta = 0.01 + +evolver=0 + +k_min_tau0=0.002 +k_max_tau0_over_l_max=3. +k_step_sub=0.015 +k_step_super=0.0001 +k_step_super_reduction=0.1 + +start_small_k_at_tau_c_over_tau_h = 0.0004 +start_large_k_at_tau_h_over_tau_k = 0.05 +tight_coupling_trigger_tau_c_over_tau_h=0.005 +tight_coupling_trigger_tau_c_over_tau_k=0.008 +start_sources_at_tau_c_over_tau_h = 0.006 + +l_max_g=50 +l_max_pol_g=25 +l_max_ur=150 +l_max_ncdm=50 + +tol_perturb_integration=1.e-6 +perturb_sampling_stepsize=0.01 + +radiation_streaming_approximation = 2 +radiation_streaming_trigger_tau_over_tau_k = 240. +radiation_streaming_trigger_tau_c_over_tau = 100. + +ur_fluid_approximation = 2 +ur_fluid_trigger_tau_over_tau_k = 50. + +ncdm_fluid_approximation = 3 +ncdm_fluid_trigger_tau_over_tau_k = 51. + +tol_ncdm_synchronous = 1.e-10 +tol_ncdm_newtonian = 1.e-10 + +l_logstep=1.026 +l_linstep=25 + +hyper_sampling_flat = 12. +hyper_sampling_curved_low_nu = 10. +hyper_sampling_curved_high_nu = 10. +hyper_nu_sampling_step = 10. +hyper_phi_min_abs = 1.e-10 +hyper_x_tol = 1.e-4 +hyper_flat_approximation_nu = 1.e6 + +q_linstep=0.20 +q_logstep_spline= 20. +q_logstep_trapzd = 0.5 +q_numstep_transition = 250 + +transfer_neglect_delta_k_S_t0 = 100. +transfer_neglect_delta_k_S_t1 = 100. +transfer_neglect_delta_k_S_t2 = 100. +transfer_neglect_delta_k_S_e = 100. +transfer_neglect_delta_k_V_t1 = 100. +transfer_neglect_delta_k_V_t2 = 100. +transfer_neglect_delta_k_V_e = 100. +transfer_neglect_delta_k_V_b = 100. +transfer_neglect_delta_k_T_t2 = 100. +transfer_neglect_delta_k_T_e = 100. +transfer_neglect_delta_k_T_b = 100. + +neglect_CMB_sources_below_visibility = 1.e-30 +transfer_neglect_late_source = 3000. + +halofit_k_per_decade = 3000. + +l_switch_limber = 40. +accurate_lensing=1 +num_mu_minus_lmax = 1000. +delta_l_max = 1000. \ No newline at end of file diff --git a/class/plot_CLASS_output.m b/class/plot_CLASS_output.m new file mode 100644 index 00000000..ddf8c338 --- /dev/null +++ b/class/plot_CLASS_output.m @@ -0,0 +1,186 @@ +function plot_CLASS_output(datafiles,varargin) +% plot_CLASS_output(datafiles,selection,options) +% plot_CLASS_output(datafiles,selection) +% plot_CLASS_output(datafiles,options) +% plot_CLASS_output(datafiles) +% Thomas Tram, 12th of March 2014. thomas.tram@epfl.ch +% Small plot utility for plotting background, thermodynamics and +% perturbations files. (Compatibility with other files may be added later.) +% Examples: +% +% plot_CLASS_output('c:\class\test_background.dat') +% plots every column of data in the background file +% 'c:\class\test_background.dat' and saves the plot in myplot.eps. +% +% +% plot_CLASS_output('c:\class\test_background.dat',{'cdm','ur','crit'}) +% plots every mention of either 'cdm', 'ur' or 'crit' in the column titles. +% +% +% plot_CLASS_output('c:\class\test_perturbations_k0_s.dat',{'delta'}) +% plots every mention of 'delta' in the column titles. Convenient for +% plotting the density perturbations of all species. +% +% +% plot_CLASS_output({'c:\class\model1_background.dat','c:\class\model2_background.dat'},{'rho'}) +% plots all mentions of rho in the files listed in the first cell array. +% +% +% plot_CLASS_output('c:\class\test_perturbations_k0_s.dat',{'delta'},options) +% options follows the usual MATLAB convention of +% ...,paramname1,paramval1, paramname2, paramval2,... +% +% Names: Values: +% ---------------------------------------------------------------------- +% EpsFilename Filename for output +% xvariable 'a' or 'z' (will convert one from the other) +% xscale 'log' or 'linear' +% yscale 'log' or 'linear' +% xlim [xmin xmax] + +if mod(nargin,2)==0 + opt = cell2struct(varargin(3:2:end),lower(varargin(2:2:end)),2); + if ischar(varargin{1}) + opt.selection = varargin(1); + else + opt.selection = varargin{1}; + end +else + opt = cell2struct(varargin(2:2:end),lower(varargin(1:2:end)),2); + opt.selection = 'all'; +end +%Filename for saving plot: +if isfield(opt,'epsfilename'); + epsfilename = opt.epsfilename; +else + epsfilename = 'myplot'; +end + +%================================================================= +close all + +if ischar(datafiles) + datafiles = {datafiles}; +end + + +linestyles = {'-','--',':','-.'}; +legendcell = {}; + +xmin = inf; +xmax = -inf; +for fileidx = 1:length(datafiles) + linestyle = linestyles{mod(fileidx-1,length(linestyles))+1}; + datafile = datafiles{fileidx}; + + %Find column titles: + fid = fopen(datafile); + titleline = 0; + tline = fgetl(fid); + while tline(1)=='#' + titleline = titleline+1; + tline_old = tline; + tline = fgetl(fid); + end + fclose(fid); + +% S=importdata(datafile); +% data = S.data; +% titlestring = S.textdata{titleline}; + titlestring = tline_old; + S = importdata(datafile,' ',titleline); + data = S.data; + + %remove leading # + titlestring = titlestring(2:end); + colonidx = [find(titlestring==':'),length(titlestring)+1]; + for j=1:(length(colonidx)-1) + cellnames{j} = strtrim(titlestring(colonidx(j)+1:colonidx(j+1)-3)); + end + + %Determine independent variable: + x = data(:,1); + xlab = cellnames{1}; + xscale = 'linear'; + + if (~isempty(strfind(cellnames{1},'z'))) + xscale = 'log'; + %First column is z + if (~isfield(opt,'xvariable')) || (~strcmp(opt.xvariable,'z')) + %if the field is empty or the field is not 'z' change to scale factor a + x = 1./(x+1); + xlab = 'a'; + end + end + + if (~isempty(strfind(cellnames{1},'a'))) + xscale = 'log'; + %First column is a + if (isfield(opt,'xvariable')) && (strcmp(opt.xvariable,'z')) + %Change to z + x = 1./x-1; + xlab = 'z'; + end + end + + if isfield(opt,'xscale') + xscale = opt.xscale; + end + + + if strcmp(opt.selection,'all') + indices = 2:length(cellnames); + else + tmp = []; + for i=1:length(opt.selection) + tmp2=strfind(cellnames,opt.selection{i}); + for j=1:length(tmp2) + if ~isempty(tmp2{j}) + tmp = [tmp,j]; + end + end + end + indices = unique(tmp); + end + + if isempty(indices) + thenames = ''; + for i=1:length(opt.selection) + thenames = [thenames,opt.selection{i},', ']; + end + error(['No indices corresponding to the name(s) {',thenames,'} were found!']) + end + + xmin = min(xmin,min(x)); + xmax = max(xmax,max(x)); + if isfield(opt,'xlim') + %We need to restrict plotting: + xl = opt.xlim; + mask = (x>=xl(1))&(x<=xl(2)); + else + mask = true(size(x)); + end + + %semilogy(tau,data(:,indices)) + loglog(x(mask),abs(data(mask,indices)),'LineWidth',2,'LineStyle',linestyle) + + hold on + legendcell = [legendcell,cellnames(indices)]; +end + +legend(legendcell,'Interpreter','none','Location','best') +yl = ylim; +%Fixes x label when y values go to 0 in log plot: +ylim([max(1e-100,yl(1)),yl(2)]) +xlabel(xlab) +set(gca,'xscale',xscale); +if isfield(opt,'yscale') + set(gca,'yscale',opt.yscale); +end +if isfield(opt,'xlim') + xlim(opt.xlim) +else + xlim([xmin,xmax]) +end + +saveas(gcf,[epsfilename,'.eps'],'epsc2') \ No newline at end of file diff --git a/class/psd_FD_single.dat b/class/psd_FD_single.dat new file mode 100644 index 00000000..90a33b4a --- /dev/null +++ b/class/psd_FD_single.dat @@ -0,0 +1,100 @@ + 0.0000000e+000 4.0314418e-003 + 1.2121212e-001 3.7874107e-003 + 2.4242424e-001 3.5451614e-003 + 3.6363636e-001 3.3064240e-003 + 4.8484848e-001 3.0728285e-003 + 6.0606061e-001 2.8458621e-003 + 7.2727273e-001 2.6268350e-003 + 8.4848485e-001 2.4168557e-003 + 9.6969697e-001 2.2168165e-003 + 1.0909091e+000 2.0273889e-003 + 1.2121212e+000 1.8490284e-003 + 1.3333333e+000 1.6819863e-003 + 1.4545455e+000 1.5263281e-003 + 1.5757576e+000 1.3819553e-003 + 1.6969697e+000 1.2486299e-003 + 1.8181818e+000 1.1259993e-003 + 1.9393939e+000 1.0136210e-003 + 2.0606061e+000 9.1098552e-004 + 2.1818182e+000 8.1753726e-004 + 2.3030303e+000 7.3269281e-004 + 2.4242424e+000 6.5585650e-004 + 2.5454545e+000 5.8643326e-004 + 2.6666667e+000 5.2383885e-004 + 2.7878788e+000 4.6750783e-004 + 2.9090909e+000 4.1689940e-004 + 3.0303030e+000 3.7150144e-004 + 3.1515152e+000 3.3083316e-004 + 3.2727273e+000 2.9444641e-004 + 3.3939394e+000 2.6192609e-004 + 3.5151515e+000 2.3288982e-004 + 3.6363636e+000 2.0698701e-004 + 3.7575758e+000 1.8389754e-004 + 3.8787879e+000 1.6333015e-004 + 4.0000000e+000 1.4502072e-004 + 4.1212121e+000 1.2873034e-004 + 4.2424242e+000 1.1424347e-004 + 4.3636364e+000 1.0136608e-004 + 4.4848485e+000 8.9923795e-005 + 4.6060606e+000 7.9760183e-005 + 4.7272727e+000 7.0735118e-005 + 4.8484848e+000 6.2723239e-005 + 4.9696970e+000 5.5612518e-005 + 5.0909091e+000 4.9302948e-005 + 5.2121212e+000 4.3705328e-005 + 5.3333333e+000 3.8740163e-005 + 5.4545455e+000 3.4336653e-005 + 5.5757576e+000 3.0431782e-005 + 5.6969697e+000 2.6969493e-005 + 5.8181818e+000 2.3899944e-005 + 5.9393939e+000 2.1178837e-005 + 6.0606061e+000 1.8766816e-005 + 6.1818182e+000 1.6628928e-005 + 6.3030303e+000 1.4734139e-005 + 6.4242424e+000 1.3054902e-005 + 6.5454545e+000 1.1566771e-005 + 6.6666667e+000 1.0248056e-005 + 6.7878788e+000 9.0795173e-006 + 6.9090909e+000 8.0440884e-006 + 7.0303030e+000 7.1266354e-006 + 7.1515152e+000 6.3137388e-006 + 7.2727273e+000 5.5935005e-006 + 7.3939394e+000 4.9553726e-006 + 7.5151515e+000 4.3900052e-006 + 7.6363636e+000 3.8891104e-006 + 7.7575758e+000 3.4453427e-006 + 7.8787879e+000 3.0521921e-006 + 8.0000000e+000 2.7038891e-006 + 8.1212121e+000 2.3953211e-006 + 8.2424242e+000 2.1219577e-006 + 8.3636364e+000 1.8797842e-006 + 8.4848485e+000 1.6652437e-006 + 8.6060606e+000 1.4751843e-006 + 8.7272727e+000 1.3068135e-006 + 8.8484848e+000 1.1576570e-006 + 8.9696970e+000 1.0255226e-006 + 9.0909091e+000 9.0846835e-007 + 9.2121212e+000 8.0477343e-007 + 9.3333333e+000 7.1291348e-007 + 9.4545455e+000 6.3153795e-007 + 9.5757576e+000 5.5945039e-007 + 9.6969697e+000 4.9559083e-007 + 9.8181818e+000 4.3902025e-007 + 9.9393939e+000 3.8890677e-007 + 1.0060606e+001 3.4451341e-007 + 1.0181818e+001 3.0518733e-007 + 1.0303030e+001 2.7035015e-007 + 1.0424242e+001 2.3948953e-007 + 1.0545455e+001 2.1215157e-007 + 1.0666667e+001 1.8793419e-007 + 1.0787879e+001 1.6648120e-007 + 1.0909091e+001 1.4747706e-007 + 1.1030303e+001 1.3064224e-007 + 1.1151515e+001 1.1572912e-007 + 1.1272727e+001 1.0251835e-007 + 1.1393939e+001 9.0815608e-008 + 1.1515152e+001 8.0448749e-008 + 1.1636364e+001 7.1265286e-008 + 1.1757576e+001 6.3130135e-008 + 1.1878788e+001 5.5923630e-008 + 1.2000000e+001 4.9539765e-008 diff --git a/class/python/README b/class/python/README new file mode 100644 index 00000000..f7a4910c --- /dev/null +++ b/class/python/README @@ -0,0 +1,15 @@ +To use this python wrapper for class, you should first compile class with 'make all', not just 'make class': this is important in order to create libraries. Be sure that you did not remove the -fPIC compiling flag in the Makefile, important for compatibility between OpenMP and the python wrapper. + +Check that the command 'python' points towards a version of python > 2.7 but < 3.0. Then, execute: + +> python setup.py build +> python setup.py install --user + +(it's really 'user', not your own user name). + +You can check that these steps worked by typing + +> python +>>> from classy import Class + +If python does not complain, the Class module has been correctly installed in your python distribution. You can now import it and use its functions from your python codes. \ No newline at end of file diff --git a/class/python/autosetup.py b/class/python/autosetup.py new file mode 100644 index 00000000..832c5496 --- /dev/null +++ b/class/python/autosetup.py @@ -0,0 +1,52 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext + +import numpy as nm +import os +import subprocess as sbp +import os.path as osp + +# Recover the gcc compiler +GCCPATH_STRING = sbp.Popen( + ['gcc', '-print-libgcc-file-name'], + stdout=sbp.PIPE).communicate()[0] +GCCPATH = osp.normpath(osp.dirname(GCCPATH_STRING)).decode() + +liblist = ["class"] +MVEC_STRING = sbp.Popen( + ['gcc', '-lmvec'], + stderr=sbp.PIPE).communicate()[1] +if b"mvec" not in MVEC_STRING: + liblist += ["mvec","m"] + +# define absolute paths +root_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..") +include_folder = os.path.join(root_folder, "include") +classy_folder = os.path.join(root_folder, "python") + +# Recover the CLASS version +with open(os.path.join(include_folder, 'common.h'), 'r') as v_file: + for line in v_file: + if line.find("_VERSION_") != -1: + # get rid of the " and the v + VERSION = line.split()[-1][2:-1] + break + +# Define cython extension and fix Python version +classy_ext = Extension("classy", [os.path.join(classy_folder, "classy.pyx")], + include_dirs=[nm.get_include(), include_folder], + libraries=liblist, + library_dirs=[root_folder, GCCPATH], +import six +classy_ext.cython_directives = {'language_level': "3" if six.PY3 else "2"} + +setup( + name='classy', + version=VERSION, + description='Python interface to the Cosmological Boltzmann code CLASS', + url='http://www.class-code.net', + cmdclass={'build_ext': build_ext}, + ext_modules=[classy_ext], + #data_files=[('bbn', ['../bbn/sBBN.dat'])] +) diff --git a/class/python/cclassy.pxd b/class/python/cclassy.pxd new file mode 100644 index 00000000..9a48f944 --- /dev/null +++ b/class/python/cclassy.pxd @@ -0,0 +1,461 @@ +# Bunch of declarations from C to python. The idea here is to define only the +# quantities that will be used, for input, output or intermediate manipulation, +# by the python wrapper. For instance, in the precision structure, the only +# item used here is its error message. That is why nothing more is defined from +# this structure. The rest is internal in Class. +# If, for whatever reason, you need an other, existing parameter from Class, +# remember to add it inside this cdef. + +DEF _MAX_NUMBER_OF_K_FILES_ = 30 +DEF _MAXTITLESTRINGLENGTH_ = 8000 +DEF _FILENAMESIZE_ = 256 +DEF _LINE_LENGTH_MAX_ = 1024 + +cdef extern from "class.h": + + cdef char[10] _VERSION_ + + ctypedef char FileArg[40] + + ctypedef char* ErrorMsg + + ctypedef char FileName[_FILENAMESIZE_] + + cdef enum linear_or_logarithmic: + linear + logarithmic + + cdef enum file_format: + class_format + camb_format + + cdef enum non_linear_method: + nl_none + nl_halofit + nl_HMcode + + cdef enum pk_outputs: + pk_linear + pk_nonlinear + + cdef enum out_sigmas: + out_sigma + out_sigma_prime + out_sigma_disp + + cdef struct precision: + ErrorMsg error_message + + cdef struct background: + ErrorMsg error_message + int bg_size + int index_bg_ang_distance + int index_bg_lum_distance + int index_bg_conf_distance + int index_bg_a + int index_bg_H + int index_bg_D + int index_bg_f + int index_bg_Omega_m + short long_info + short inter_normal + short has_ncdm + double T_cmb + double h + double H0 + double age + double conformal_age + double * m_ncdm_in_eV + double Neff + double Omega0_g + double Omega0_b + double Omega0_idr + double T_idr + double Omega0_idm_dr + double Omega0_cdm + double Omega0_dcdm + double Omega0_ncdm_tot + double Omega0_lambda + double Omega0_fld + double w0_fld + double wa_fld + double cs2_fld + double Omega0_ur + double Omega0_dcdmdr + double Omega0_dr + double Omega0_scf + double Omega0_k + int bt_size + double Omega0_m + double Omega0_r + double Omega0_de + double a_eq + double H_eq + double z_eq + double tau_eq + + cdef struct thermo: + ErrorMsg error_message + int th_size + int index_th_xe + int index_th_Tb + short inter_normal + double tau_reio + double z_reio + double z_rec + double tau_rec + double rs_rec + double ds_rec + double da_rec + double z_star + double tau_star + double rs_star + double ds_star + double ra_star + double da_star + double rd_star + double z_d + double tau_d + double ds_d + double rs_d + double YHe + double n_e + double a_idm_dr + double b_idr + double nindex_idm_dr + double m_idm + + int tt_size + + cdef struct perturbs: + ErrorMsg error_message + short has_scalars + short has_vectors + short has_tensors + + short has_density_transfers + short has_velocity_transfers + + int has_pk_matter + int l_lss_max + + int store_perturbations + int k_output_values_num + double k_output_values[_MAX_NUMBER_OF_K_FILES_] + double k_max_for_pk + int index_k_output_values[_MAX_NUMBER_OF_K_FILES_] + char scalar_titles[_MAXTITLESTRINGLENGTH_] + char vector_titles[_MAXTITLESTRINGLENGTH_] + char tensor_titles[_MAXTITLESTRINGLENGTH_] + int number_of_scalar_titles + int number_of_vector_titles + int number_of_tensor_titles + + + double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + + double * alpha_idm_dr + double * beta_idr + + int * k_size + int * ic_size + int index_md_scalars + + cdef struct transfers: + ErrorMsg error_message + + cdef struct primordial: + ErrorMsg error_message + double k_pivot + double A_s + double n_s + double alpha_s + double beta_s + double r + double n_t + double alpha_t + double V0 + double V1 + double V2 + double V3 + double V4 + double f_cdi + double n_cdi + double c_ad_cdi + double n_ad_cdi + double f_nid + double n_nid + double c_ad_nid + double n_ad_nid + double f_niv + double n_niv + double c_ad_niv + double n_ad_niv + double phi_min + double phi_max + int lnk_size + + cdef struct spectra: + ErrorMsg error_message + int has_tt + int has_te + int has_ee + int has_bb + int has_pp + int has_tp + int has_dd + int has_td + int has_ll + int has_dl + int has_tl + int l_max_tot + int ** l_max_ct + int ct_size + int * ic_size + int * ic_ic_size + int md_size + int d_size + int non_diag + int index_ct_tt + int index_ct_te + int index_ct_ee + int index_ct_bb + int index_ct_pp + int index_ct_tp + int index_ct_dd + int index_ct_td + int index_ct_pd + int index_ct_ll + int index_ct_dl + int index_ct_tl + int * l_size + int index_md_scalars + + cdef struct output: + ErrorMsg error_message + + cdef struct lensing: + int has_tt + int has_ee + int has_te + int has_bb + int has_pp + int has_tp + int has_dd + int has_td + int has_ll + int has_dl + int has_tl + int index_lt_tt + int index_lt_te + int index_lt_ee + int index_lt_bb + int index_lt_pp + int index_lt_tp + int index_lt_dd + int index_lt_td + int index_lt_ll + int index_lt_dl + int index_lt_tl + int * l_max_lt + int lt_size + int has_lensed_cls + int l_lensed_max + int l_unlensed_max + ErrorMsg error_message + + cdef struct nonlinear: + short has_pk_matter + int method + int ic_size + int ic_ic_size + int k_size + int ln_tau_size + int tau_size + int index_tau_min_nl + double * k + double * ln_tau + double * tau + double ** ln_pk_l + double ** ln_pk_nl + double * sigma8 + int has_pk_m + int has_pk_cb + int index_pk_m + int index_pk_cb + int index_pk_total + int index_pk_cluster + ErrorMsg error_message + + cdef struct file_content: + char * filename + int size + FileArg * name + FileArg * value + short * read + + void lensing_free(void*) + void spectra_free(void*) + void transfer_free(void*) + void primordial_free(void*) + void perturb_free(void*) + void thermodynamics_free(void*) + void background_free(void*) + void nonlinear_free(void*) + + cdef int _FAILURE_ + cdef int _FALSE_ + cdef int _TRUE_ + + int input_init(void*, void*, void*, void*, void*, void*, void*, void*, void*, + void*, void*, char*) + int background_init(void*,void*) + int thermodynamics_init(void*,void*,void*) + int perturb_init(void*,void*,void*,void*) + int primordial_init(void*,void*,void*) + int nonlinear_init(void*,void*,void*,void*,void*,void*) + int transfer_init(void*,void*,void*,void*,void*,void*) + int spectra_init(void*,void*,void*,void*,void*,void*,void*) + int lensing_init(void*,void*,void*,void*,void*) + + int background_tau_of_z(void* pba, double z,double* tau) + int background_at_tau(void* pba, double tau, short return_format, short inter_mode, int * last_index, double *pvecback) + int background_output_titles(void * pba, char titles[_MAXTITLESTRINGLENGTH_]) + int background_output_data(void *pba, int number_of_titles, double *data) + + int thermodynamics_at_z(void * pba, void * pth, double z, short inter_mode, int * last_index, double *pvecback, double *pvecthermo) + int thermodynamics_output_titles(void * pba, void *pth, char titles[_MAXTITLESTRINGLENGTH_]) + int thermodynamics_output_data(void *pba, void *pth, int number_of_titles, double *data) + + int perturb_output_data(void *pba,void *ppt, file_format output_format, double z, int number_of_titles, double *data) + int perturb_output_firstline_and_ic_suffix(void *ppt, int index_ic, char first_line[_LINE_LENGTH_MAX_], FileName ic_suffix) + int perturb_output_titles(void *pba, void *ppt, file_format output_format, char titles[_MAXTITLESTRINGLENGTH_]) + + int primordial_output_titles(void * ppt, void *ppm, char titles[_MAXTITLESTRINGLENGTH_]) + int primordial_output_data(void *ppt, void *ppm, int number_of_titles, double *data) + + int spectra_cl_at_l(void* psp,double l,double * cl,double * * cl_md,double * * cl_md_ic) + int lensing_cl_at_l(void * ple,int l,double * cl_lensed) + + int spectra_pk_at_z( + void * pba, + void * psp, + int mode, + double z, + double * output_tot, + double * output_ic, + double * output_cb_tot, + double * output_cb_ic + ) + + int spectra_pk_at_k_and_z( + void* pba, + void * ppm, + void * psp, + double k, + double z, + double * pk, + double * pk_ic, + double * pk_cb, + double * pk_cb_ic) + + int spectra_pk_nl_at_k_and_z( + void* pba, + void * ppm, + void * psp, + double k, + double z, + double * pk, + double * pk_cb) + + int spectra_pk_nl_at_z( + void * pba, + void * psp, + int mode, + double z, + double * output_tot, + double * output_cb_tot) + + int nonlinear_pk_at_k_and_z( + void * pba, + void * ppm, + void * pnl, + int pk_output, + double k, + double z, + int index_pk, + double * out_pk, + double * out_pk_ic) + + int nonlinear_pk_tilt_at_k_and_z( + void * pba, + void * ppm, + void * pnl, + int pk_output, + double k, + double z, + int index_pk, + double * pk_tilt) + + int nonlinear_sigmas_at_z( + void * ppr, + void * pba, + void * pnl, + double R, + double z, + int index_pk, + int sigma_output, + double * result) + + int nonlinear_pks_at_kvec_and_zvec( + void * pba, + void * pnl, + int pk_output, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * out_pk, + double * out_pk_cb) + + int nonlinear_hmcode_sigma8_at_z(void* pba, void* pnl, double z, double* sigma_8, double* sigma_8_cb) + int nonlinear_hmcode_sigmadisp_at_z(void* pba, void* pnl, double z, double* sigma_disp, double* sigma_disp_cb) + int nonlinear_hmcode_sigmadisp100_at_z(void* pba, void* pnl, double z, double* sigma_disp_100, double* sigma_disp_100_cb) + int nonlinear_hmcode_sigmaprime_at_z(void* pba, void* pnl, double z, double* sigma_prime, double* sigma_prime_cb) + int nonlinear_hmcode_window_nfw(void* pnl, double k, double rv, double c, double* window_nfw) + + int nonlinear_k_nl_at_z(void* pba, void* pnl, double z, double* k_nl, double* k_nl_cb) + + int spectra_firstline_and_ic_suffix(void *ppt, int index_ic, char first_line[_LINE_LENGTH_MAX_], FileName ic_suffix) + + int spectra_sigma( + void * pba, + void * ppm, + void * psp, + double R, + double z, + double * sigma) + + int spectra_sigma_cb( + void * pba, + void * ppm, + void * psp, + double R, + double z, + double * sigma_cb) + + int spectra_fast_pk_at_kvec_and_zvec( + void * pba, + void * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, + double * pk_cb_tot_out, + int nonlinear) diff --git a/class/python/classy.pyx b/class/python/classy.pyx new file mode 100644 index 00000000..0eda5890 --- /dev/null +++ b/class/python/classy.pyx @@ -0,0 +1,2120 @@ +""" +.. module:: classy + :synopsis: Python wrapper around CLASS +.. moduleauthor:: Karim Benabed +.. moduleauthor:: Benjamin Audren +.. moduleauthor:: Julien Lesgourgues + +This module defines a class called Class. It is used with Monte Python to +extract cosmological parameters. + +# JL 14.06.2017: TODO: check whether we should free somewhere the allocated fc.filename and titles, data (4 times) + +""" +from math import exp,log +import numpy as np +cimport numpy as np +from libc.stdlib cimport * +from libc.stdio cimport * +from libc.string cimport * +import cython +cimport cython + +# Nils : Added for python 3.x and python 2.x compatibility +import sys +def viewdictitems(d): + if sys.version_info >= (3,0): + return d.items() + else: + return d.viewitems() + +ctypedef np.float_t DTYPE_t +ctypedef np.int_t DTYPE_i + +# Import the .pxd containing definitions +from cclassy cimport * + +DEF _MAXTITLESTRINGLENGTH_ = 8000 + +__version__ = _VERSION_.decode("utf-8") + +# Implement a specific Exception (this might not be optimally designed, nor +# even acceptable for python standards. It, however, does the job). +# The idea is to raise either an AttributeError if the problem happened while +# reading the parameters (in the normal Class, this would just return a line in +# the unused_parameters file), or a NameError in other cases. This allows +# MontePython to handle things differently. +class CosmoError(Exception): + def __init__(self, message=""): + self.message = message.decode() if isinstance(message,bytes) else message + + def __str__(self): + return '\n\nError in Class: ' + self.message + + +class CosmoSevereError(CosmoError): + """ + Raised when Class failed to understand one or more input parameters. + + This case would not raise any problem in Class default behaviour. However, + for parameter extraction, one has to be sure that all input parameters were + understood, otherwise the wrong cosmological model would be selected. + """ + pass + + +class CosmoComputationError(CosmoError): + """ + Raised when Class could not compute the cosmology at this point. + + This will be caught by the parameter extraction code to give an extremely + unlikely value to this point + """ + pass + + +cdef class Class: + """ + Class wrapping, creates the glue between C and python + + The actual Class wrapping, the only class we will call from MontePython + (indeed the only one we will import, with the command: + from classy import Class + + """ + # List of used structures, defined in the header file. They have to be + # "cdefined", because they correspond to C structures + cdef precision pr + cdef background ba + cdef thermo th + cdef perturbs pt + cdef primordial pm + cdef nonlinear nl + cdef transfers tr + cdef spectra sp + cdef output op + cdef lensing le + cdef file_content fc + + cpdef int computed # Flag to see if classy has already computed with the given pars + cpdef int allocated # Flag to see if classy structs are allocated already + cpdef object _pars # Dictionary of the parameters + cpdef object ncp # Keeps track of the structures initialized, in view of cleaning. + + # Defining two new properties to recover, respectively, the parameters used + # or the age (set after computation). Follow this syntax if you want to + # access other quantities. Alternatively, you can also define a method, and + # call it (see _T_cmb method, at the very bottom). + property pars: + def __get__(self): + return self._pars + property state: + def __get__(self): + return True + property Omega_nu: + def __get__(self): + return self.ba.Omega0_ncdm_tot + property nonlinear_method: + def __get__(self): + return self.nl.method + + def set_default(self): + _pars = { + "output":"tCl mPk",} + self.set(**_pars) + + def __cinit__(self, default=False): + cpdef char* dumc + self.allocated = False + self.computed = False + self._pars = {} + self.fc.size=0 + self.fc.filename = malloc(sizeof(char)*30) + assert(self.fc.filename!=NULL) + dumc = "NOFILE" + sprintf(self.fc.filename,"%s",dumc) + self.ncp = set() + if default: self.set_default() + + def __dealloc__(self): + if self.allocated: + self.struct_cleanup() + self.empty() + # Reset all the fc to zero if its not already done + if self.fc.size !=0: + self.fc.size=0 + free(self.fc.name) + free(self.fc.value) + free(self.fc.read) + free(self.fc.filename) + + # Set up the dictionary + def set(self,*pars,**kars): + oldpars = self._pars.copy() + if len(pars)==1: + self._pars.update(dict(pars[0])) + elif len(pars)!=0: + raise CosmoSevereError("bad call") + self._pars.update(kars) + if viewdictitems(self._pars) <= viewdictitems(oldpars): + return # Don't change the computed states, if the new dict was already contained in the previous dict + self.computed=False + return True + + def empty(self): + self._pars = {} + self.computed = False + + # Create an equivalent of the parameter file. Non specified values will be + # taken at their default (in Class) + def _fillparfile(self): + cdef char* dumc + + if self.fc.size!=0: + free(self.fc.name) + free(self.fc.value) + free(self.fc.read) + self.fc.size = len(self._pars) + self.fc.name = malloc(sizeof(FileArg)*len(self._pars)) + assert(self.fc.name!=NULL) + + self.fc.value = malloc(sizeof(FileArg)*len(self._pars)) + assert(self.fc.value!=NULL) + + self.fc.read = malloc(sizeof(short)*len(self._pars)) + assert(self.fc.read!=NULL) + + # fill parameter file + i = 0 + for kk in self._pars: + + dumcp = kk.encode() + dumc = dumcp + sprintf(self.fc.name[i],"%s",dumc) + dumcp = str(self._pars[kk]).encode() + dumc = dumcp + sprintf(self.fc.value[i],"%s",dumc) + self.fc.read[i] = _FALSE_ + i+=1 + + # Called at the end of a run, to free memory + def struct_cleanup(self): + if(self.allocated != True): + return + if "lensing" in self.ncp: + lensing_free(&self.le) + if "spectra" in self.ncp: + spectra_free(&self.sp) + if "transfer" in self.ncp: + transfer_free(&self.tr) + if "nonlinear" in self.ncp: + nonlinear_free(&self.nl) + if "primordial" in self.ncp: + primordial_free(&self.pm) + if "perturb" in self.ncp: + perturb_free(&self.pt) + if "thermodynamics" in self.ncp: + thermodynamics_free(&self.th) + if "background" in self.ncp: + background_free(&self.ba) + self.allocated = False + self.computed = False + + def _check_task_dependency(self, level): + """ + Fill the level list with all the needed modules + + .. warning:: + + the ordering of modules is obviously dependent on CLASS module order + in the main.c file. This has to be updated in case of a change to + this file. + + Parameters + ---------- + + level : list + list of strings, containing initially only the last module required. + For instance, to recover all the modules, the input should be + ['lensing'] + + """ + if "distortions" in level: + if "lensing" not in level: + level.append("lensing") + if "lensing" in level: + if "spectra" not in level: + level.append("spectra") + if "spectra" in level: + if "transfer" not in level: + level.append("transfer") + if "transfer" in level: + if "nonlinear" not in level: + level.append("nonlinear") + if "nonlinear" in level: + if "primordial" not in level: + level.append("primordial") + if "primordial" in level: + if "perturb" not in level: + level.append("perturb") + if "perturb" in level: + if "thermodynamics" not in level: + level.append("thermodynamics") + if "thermodynamics" in level: + if "background" not in level: + level.append("background") + if len(level)!=0 : + if "input" not in level: + level.append("input") + return level + + def _pars_check(self, key, value, contains=False, add=""): + val = "" + if key in self._pars: + val = self._pars[key] + if contains: + if value in val: + return True + else: + if value==val: + return True + if add: + sep = " " + if isinstance(add,str): + sep = add + + if contains and val: + self.set({key:val+sep+value}) + else: + self.set({key:value}) + return True + return False + + def compute(self, level=["lensing"]): + """ + compute(level=["lensing"]) + + Main function, execute all the _init methods for all desired modules. + This is called in MontePython, and this ensures that the Class instance + of this class contains all the relevant quantities. Then, one can deduce + Pk, Cl, etc... + + Parameters + ---------- + level : list + list of the last module desired. The internal function + _check_task_dependency will then add to this list all the + necessary modules to compute in order to initialize this last + one. The default last module is "lensing". + + .. warning:: + + level default value should be left as an array (it was creating + problem when casting as a set later on, in _check_task_dependency) + + """ + cdef ErrorMsg errmsg + + # Append to the list level all the modules necessary to compute. + level = self._check_task_dependency(level) + + # Check if this function ran before (self.computed should be true), and + # if no other modules were requested, i.e. if self.ncp contains (or is + # equivalent to) level. If it is the case, simply stop the execution of + # the function. + if self.computed and self.ncp.issuperset(level): + return + + # Check if already allocated to prevent memory leaks + if self.allocated: + self.struct_cleanup() + + # Otherwise, proceed with the normal computation. + self.computed = False + + # Equivalent of writing a parameter file + self._fillparfile() + + # self.ncp will contain the list of computed modules (under the form of + # a set, instead of a python list) + self.ncp=set() + # Up until the empty set, all modules are allocated + # (And then we successively keep track of the ones we allocate additionally) + self.allocated = True + + # -------------------------------------------------------------------- + # Check the presence for all CLASS modules in the list 'level'. If a + # module is found in level, executure its "_init" method. + # -------------------------------------------------------------------- + # The input module should raise a CosmoSevereError, because + # non-understood parameters asked to the wrapper is a problematic + # situation. + if "input" in level: + if input_init(&self.fc, &self.pr, &self.ba, &self.th, + &self.pt, &self.tr, &self.pm, &self.sp, + &self.nl, &self.le, &self.op, errmsg) == _FAILURE_: + raise CosmoSevereError(errmsg) + self.ncp.add("input") + # This part is done to list all the unread parameters, for debugging + problem_flag = False + problematic_parameters = [] + for i in range(self.fc.size): + if self.fc.read[i] == _FALSE_: + problem_flag = True + problematic_parameters.append(self.fc.name[i].decode()) + if problem_flag: + raise CosmoSevereError( + "Class did not read input parameter(s): %s\n" % ', '.join( + problematic_parameters)) + + # The following list of computation is straightforward. If the "_init" + # methods fail, call `struct_cleanup` and raise a CosmoComputationError + # with the error message from the faulty module of CLASS. + if "background" in level: + if background_init(&(self.pr), &(self.ba)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.ba.error_message) + self.ncp.add("background") + + if "thermodynamics" in level: + if thermodynamics_init(&(self.pr), &(self.ba), + &(self.th)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.th.error_message) + self.ncp.add("thermodynamics") + + if "perturb" in level: + if perturb_init(&(self.pr), &(self.ba), + &(self.th), &(self.pt)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.pt.error_message) + self.ncp.add("perturb") + + if "primordial" in level: + if primordial_init(&(self.pr), &(self.pt), + &(self.pm)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.pm.error_message) + self.ncp.add("primordial") + + if "nonlinear" in level: + if nonlinear_init(&self.pr, &self.ba, &self.th, + &self.pt, &self.pm, &self.nl) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.nl.error_message) + self.ncp.add("nonlinear") + + if "transfer" in level: + if transfer_init(&(self.pr), &(self.ba), &(self.th), + &(self.pt), &(self.nl), &(self.tr)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.tr.error_message) + self.ncp.add("transfer") + + if "spectra" in level: + if spectra_init(&(self.pr), &(self.ba), &(self.pt), + &(self.pm), &(self.nl), &(self.tr), + &(self.sp)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.sp.error_message) + self.ncp.add("spectra") + + if "lensing" in level: + if lensing_init(&(self.pr), &(self.pt), &(self.sp), + &(self.nl), &(self.le)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.le.error_message) + self.ncp.add("lensing") + + self.computed = True + + # At this point, the cosmological instance contains everything needed. The + # following functions are only to output the desired numbers + return + + def raw_cl(self, lmax=-1, nofail=False): + """ + raw_cl(lmax=-1, nofail=False) + + Return a dictionary of the primary C_l + + Parameters + ---------- + lmax : int, optional + Define the maximum l for which the C_l will be returned + (inclusively). This number will be checked against the maximum l + at which they were actually computed by CLASS, and an error will + be raised if the desired lmax is bigger than what CLASS can + give. + nofail: bool, optional + Check and enforce the computation of the spectra module + beforehand, with the desired lmax. + + Returns + ------- + cl : dict + Dictionary that contains the power spectrum for 'tt', 'te', etc... The + index associated with each is defined wrt. Class convention, and are non + important from the python point of view. It also returns now the + ell array. + """ + cdef int lmaxR + cdef double *rcl = calloc(self.sp.ct_size,sizeof(double)) + + # Quantities for tensor modes + cdef double **cl_md = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md[index_md] = calloc(self.sp.ct_size, sizeof(double)) + + # Quantities for isocurvature modes + cdef double **cl_md_ic = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md_ic[index_md] = calloc(self.sp.ct_size*self.sp.ic_ic_size[index_md], sizeof(double)) + + # Define a list of integers, refering to the flags and indices of each + # possible output Cl. It allows for a clear and concise way of looping + # over them, checking if they are defined or not. + has_flags = [ + (self.sp.has_tt, self.sp.index_ct_tt, 'tt'), + (self.sp.has_ee, self.sp.index_ct_ee, 'ee'), + (self.sp.has_te, self.sp.index_ct_te, 'te'), + (self.sp.has_bb, self.sp.index_ct_bb, 'bb'), + (self.sp.has_pp, self.sp.index_ct_pp, 'pp'), + (self.sp.has_tp, self.sp.index_ct_tp, 'tp'),] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + + if not spectra: + raise CosmoSevereError("No Cl computed") + lmaxR = self.sp.l_max_tot + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_scalars",lmax) + self.compute(["lensing"]) + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + # Initialise all the needed Cls arrays + cl = {} + for elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + + # Recover for each ell the information from CLASS + for ell from 2<=ell calloc(self.le.lt_size,sizeof(double)) + + # Define a list of integers, refering to the flags and indices of each + # possible output Cl. It allows for a clear and concise way of looping + # over them, checking if they are defined or not. + has_flags = [ + (self.le.has_tt, self.le.index_lt_tt, 'tt'), + (self.le.has_ee, self.le.index_lt_ee, 'ee'), + (self.le.has_te, self.le.index_lt_te, 'te'), + (self.le.has_bb, self.le.index_lt_bb, 'bb'), + (self.le.has_pp, self.le.index_lt_pp, 'pp'), + (self.le.has_tp, self.le.index_lt_tp, 'tp'),] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + + if not spectra: + raise CosmoSevereError("No lensed Cl computed") + lmaxR = self.le.l_lensed_max + + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_scalars",lmax) + self.compute(["lensing"]) + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + cl = {} + # Simple Cls, for temperature and polarisation, are not so big in size + for elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + for ell from 2<=ell calloc(self.sp.ct_size,sizeof(double)) + + # Quantities for tensor modes + cdef double **cl_md = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md[index_md] = calloc(self.sp.ct_size, sizeof(double)) + + # Quantities for isocurvature modes + cdef double **cl_md_ic = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md_ic[index_md] = calloc(self.sp.ct_size*self.sp.ic_ic_size[index_md], sizeof(double)) + + lmaxR = self.pt.l_lss_max + has_flags = [ + (self.sp.has_dd, self.sp.index_ct_dd, 'dd'), + (self.sp.has_td, self.sp.index_ct_td, 'td'), + (self.sp.has_ll, self.sp.index_ct_ll, 'll'), + (self.sp.has_dl, self.sp.index_ct_dl, 'dl'), + (self.sp.has_tl, self.sp.index_ct_tl, 'tl')] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + l_max_flag = self.sp.l_max_ct[self.sp.index_md_scalars][index] + if l_max_flag < lmax and lmax > 0: + raise CosmoSevereError( + "the %s spectrum was computed until l=%i " % ( + name.upper(), l_max_flag) + + "but you asked a l=%i" % lmax) + + if not spectra: + raise CosmoSevereError("No density Cl computed") + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_lss",lmax) + self._pars_check("output",'nCl') + self.compute() + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + cl = {} + + # For density Cls, the size is bigger (different redshfit bins) + # computes the size, given the number of correlations needed to be computed + size = (self.sp.d_size*(self.sp.d_size+1)-(self.sp.d_size-self.sp.non_diag)* + (self.sp.d_size-1-self.sp.non_diag))/2; + for elem in ['dd', 'll', 'dl']: + if elem in spectra: + cl[elem] = {} + for index in range(size): + cl[elem][index] = np.zeros( + lmax+1, dtype=np.double) + for elem in ['td', 'tl']: + if elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + + for ell from 2<=ell calloc(self.ba.bg_size,sizeof(double)) + + i = 0 + for redshift in z_array: + if background_tau_of_z(&self.ba,redshift,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + # store r + r[i] = pvecback[self.ba.index_bg_conf_distance] + # store dz/dr = H + dzdr[i] = pvecback[self.ba.index_bg_H] + + i += 1 + + free(pvecback) + return r[:],dzdr[:] + + def luminosity_distance(self, z): + """ + luminosity_distance(z) + """ + cdef double tau=0.0 + cdef int last_index = 0 # junk + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba, z, &tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba, tau, self.ba.long_info, + self.ba.inter_normal, &last_index, pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + lum_distance = pvecback[self.ba.index_bg_lum_distance] + free(pvecback) + return lum_distance + + # Gives the total matter pk for a given (k,z) + def pk(self,double k,double z): + """ + Gives the total matter pk (in Mpc**3) for a given k (in 1/Mpc) and z (will be non linear if requested to Class, linear otherwise) + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if (self.nl.method == nl_none): + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_m,&pk,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + else: + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_nonlinear,k,z,self.nl.index_pk_m,&pk,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk + + # Gives the cdm+b pk for a given (k,z) + def pk_cb(self,double k,double z): + """ + Gives the cdm+b pk (in Mpc**3) for a given k (in 1/Mpc) and z (will be non linear if requested to Class, linear otherwise) + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_cb + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("P_cb not computed (probably because there are no massive neutrinos) so you cannot ask for it") + + if (self.nl.method == nl_none): + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_cb,&pk_cb,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + else: + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_nonlinear,k,z,self.nl.index_pk_cb,&pk_cb,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_cb + + # Gives the total matter pk for a given (k,z) + def pk_lin(self,double k,double z): + """ + Gives the linear total matter pk (in Mpc**3) for a given k (in 1/Mpc) and z + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_lin + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_m,&pk_lin,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_lin + + # Gives the cdm+b pk for a given (k,z) + def pk_cb_lin(self,double k,double z): + """ + Gives the linear cdm+b pk (in Mpc**3) for a given k (in 1/Mpc) and z + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_cb_lin + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("P_cb not computed by CLASS (probably because there are no massive neutrinos)") + + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_cb,&pk_cb_lin,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_cb_lin + + def get_pk(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk[index_k,index_z,index_mu] = self.pk(k[index_k,index_z,index_mu],z[index_z]) + return pk + + def get_pk_cb(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk_cb = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk_cb[index_k,index_z,index_mu] = self.pk_cb(k[index_k,index_z,index_mu],z[index_z]) + return pk_cb + + def get_pk_lin(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the linear power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk[index_k,index_z,index_mu] = self.pk_lin(k[index_k,index_z,index_mu],z[index_z]) + return pk + + def get_pk_cb_lin(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the linear power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk_cb = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk_cb[index_k,index_z,index_mu] = self.pk_cb_lin(k[index_k,index_z,index_mu],z[index_z]) + return pk_cb + + def get_pk_and_k_and_z(self, nonlinear=True, only_clustering_species = False): + """ + Returns a grid of matter power spectrum values and the z and k + at which it has been fully computed. Useful for creating interpolators. + + Parameters + ---------- + nonlinear : bool + Whether the returned power spectrum values are linear or non-linear (default) + nonlinear : bool + Whether the returned power spectrum is for galaxy clustering and excludes massive neutrinos, or always includes evrything (default) + """ + cdef np.ndarray[DTYPE_t,ndim=2] pk_at_k_z = np.zeros((self.nl.k_size, self.nl.ln_tau_size),'float64') + cdef np.ndarray[DTYPE_t,ndim=1] k = np.zeros((self.nl.k_size),'float64') + cdef np.ndarray[DTYPE_t,ndim=1] z = np.zeros((self.nl.ln_tau_size),'float64') + cdef int index_k, index_tau, index_pk + cdef double z_max_nonlinear, z_max_requested + + # consistency checks + + if self.nl.has_pk_matter == False: + raise CosmoSevereError("You ask classy to return an array of P(k,z) values, but the input parameters sent to CLASS did not require any P(k,z) calculations; add 'mPk' in 'output'") + + if nonlinear == True and self.nl.method == nl_none: + raise CosmoSevereError("You ask classy to return an array of nonlinear P(k,z) values, but the input parameters sent to CLASS did not require any non-linear P(k,z) calculations; add e.g. 'halofit' or 'HMcode' in 'nonlinear'") + + # check wich type of P(k) to return (total or clustering only, i.e. without massive neutrino contribution) + if (only_clustering_species == True): + index_pk = self.nl.index_pk_cluster + else: + index_pk = self.nl.index_pk_total + + # get list of redshfits + + if self.nl.ln_tau_size == 1: + raise CosmoSevereError("You ask classy to return an array of P(k,z) values, but the input parameters sent to CLASS did not require any P(k,z) calculations for z>0; pass either a list of z in 'z_pk' or one non-zero value in 'z_max_pk'") + else: + for index_tau in xrange(self.nl.ln_tau_size): + if index_tau == self.nl.ln_tau_size-1: + z[index_tau] = 0. + else: + z[index_tau] = self.z_of_tau(np.exp(self.nl.ln_tau[index_tau])) + + # check consitency of the list of redshifts + + if nonlinear == True: + z_max_nonlinear = self.z_of_tau(self.nl.tau[self.nl.index_tau_min_nl]) + z_max_requested = z[0] + if ((self.nl.tau_size - self.nl.ln_tau_size) < self.nl.index_tau_min_nl): + raise CosmoSevereError("get_pk_and_k_and_z() is trying to return P(k,z) up to z_max=%e (to encompass your requested maximum value of z); but the input parameters sent to CLASS were such that the non-linear P(k,z) could only be consistently computed up to z=%e; increase the input parameter 'P_k_max_h/Mpc' or 'P_k_max_1/Mpc', or increase the precision parameters 'halofit_min_k_max' and/or 'hmcode_min_k_max', or decrease your requested z_max"%(z_max_requested,z_max_nonlinear)) + + # get list of k + + for index_k in xrange(self.nl.k_size): + k[index_k] = self.nl.k[index_k] + + # get P(k,z) array + + for index_tau in xrange(self.nl.ln_tau_size): + for index_k in xrange(self.nl.k_size): + if nonlinear == True: + pk_at_k_z[index_k, index_tau] = np.exp(self.nl.ln_pk_nl[index_pk][index_tau * self.nl.k_size + index_k]) + else: + pk_at_k_z[index_k, index_tau] = np.exp(self.nl.ln_pk_l[index_pk][index_tau * self.nl.k_size + index_k]) + + return pk_at_k_z, k, z + + # Gives sigma(R,z) for a given (R,z) + def sigma(self,double R,double z): + """ + Gives sigma (total matter) for a given R and z + (R is the radius in units of Mpc, so if R=8/h this will be the usual sigma8(z) + + .. note:: + + there is an additional check to verify whether output contains `mPk`, + and whether k_max > ... + because otherwise a segfault will occur + + """ + cdef double sigma + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get sigma(R,z) you must add mPk to the list of outputs.") + + if (self.pt.k_max_for_pk < self.ba.h): + raise CosmoSevereError("In order to get sigma(R,z) you must set 'P_k_max_h/Mpc' to 1 or bigger, in order to have k_max > 1 h/Mpc.") + + if nonlinear_sigmas_at_z(&self.pr,&self.ba,&self.nl,R,z,self.nl.index_pk_m,out_sigma,&sigma)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return sigma + + # Gives sigma_cb(R,z) for a given (R,z) + def sigma_cb(self,double R,double z): + """ + Gives sigma (cdm+b) for a given R and z + (R is the radius in units of Mpc, so if R=8/h this will be the usual sigma8(z) + + .. note:: + + there is an additional check to verify whether output contains `mPk`, + and whether k_max > ... + because otherwise a segfault will occur + + """ + cdef double sigma_cb + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get sigma(R,z) you must add mPk to the list of outputs.") + + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("sigma_cb not computed by CLASS (probably because there are no massive neutrinos)") + + if (self.pt.k_max_for_pk < self.ba.h): + raise CosmoSevereError("In order to get sigma(R,z) you must set 'P_k_max_h/Mpc' to 1 or bigger, in order to have k_max > 1 h/Mpc.") + + if nonlinear_sigmas_at_z(&self.pr,&self.ba,&self.nl,R,z,self.nl.index_pk_cb,out_sigma,&sigma_cb)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return sigma_cb + + # Gives effective logarithmic slope of P_L(k,z) (total matter) for a given (k,z) + def pk_tilt(self,double k,double z): + """ + Gives effective logarithmic slope of P_L(k,z) (total matter) for a given k and z + (k is the wavenumber in units of 1/Mpc, z is the redshift, the output is dimensionless) + + .. note:: + + there is an additional check to verify whether output contains `mPk` and whether k is in the right range + + """ + cdef double pk_tilt + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get pk_tilt(k,z) you must add mPk to the list of outputs.") + + if (k < self.nl.k[1] or k > self.nl.k[self.nl.k_size-2]): + raise CosmoSevereError("In order to get pk_tilt at k=%e 1/Mpc, you should compute P(k,z) in a wider range of k's"%k) + + if nonlinear_pk_tilt_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_total,&pk_tilt)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_tilt + + #calculates the hmcode window_function of the Navarrow Frenk White Profile + def nonlinear_hmcode_window_nfw(self,double k,double rv,double c): + """ + Gives window_nfw for a given wavevector k, virial radius rv and concentration c + + """ + cdef double window_nfw + + + if nonlinear_hmcode_window_nfw(&self.nl,k,rv,c,&window_nfw)==_FAILURE_: + raise CosmoSevereError(self.sp.error_message) + + return window_nfw + + def age(self): + self.compute(["background"]) + return self.ba.age + + def h(self): + return self.ba.h + + def n_s(self): + return self.pm.n_s + + def tau_reio(self): + return self.th.tau_reio + + def Omega_m(self): + return self.ba.Omega0_m + + def Omega_r(self): + return self.ba.Omega0_r + + def theta_s_100(self): + return 100.*self.th.rs_rec/self.th.da_rec/(1.+self.th.z_rec) + + def theta_star_100(self): + return 100.*self.th.rs_star/self.th.da_star/(1.+self.th.z_star) + + def Omega_Lambda(self): + return self.ba.Omega0_lambda + + def Omega_g(self): + return self.ba.Omega0_g + + def Omega_b(self): + return self.ba.Omega0_b + + def omega_b(self): + return self.ba.Omega0_b * self.ba.h * self.ba.h + + def Neff(self): + return self.ba.Neff + + def k_eq(self): + self.compute(["background"]) + return self.ba.a_eq*self.ba.H_eq + + def sigma8(self): + self.compute(["nonlinear"]) + return self.nl.sigma8[self.nl.index_pk_m] + + #def neff(self): + # self.compute(["spectra"]) + # return self.sp.neff + + def sigma8_cb(self): + self.compute(["nonlinear"]) + return self.nl.sigma8[self.nl.index_pk_cb] + + def rs_drag(self): + self.compute(["thermodynamics"]) + return self.th.rs_d + + def z_reio(self): + self.compute(["thermodynamics"]) + return self.th.z_reio + + def angular_distance(self, z): + """ + angular_distance(z) + + Return the angular diameter distance (exactly, the quantity defined by Class + as index_bg_ang_distance in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + D_A = pvecback[self.ba.index_bg_ang_distance] + + free(pvecback) + + return D_A + + def scale_independent_growth_factor(self, z): + """ + scale_independent_growth_factor(z) + + Return the scale invariant growth factor D(a) for CDM perturbations + (exactly, the quantity defined by Class as index_bg_D in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + D = pvecback[self.ba.index_bg_D] + + free(pvecback) + + return D + + def scale_independent_growth_factor_f(self, z): + """ + scale_independent_growth_factor_f(z) + + Return the scale invariant growth factor f(z)=d ln D / d ln a for CDM perturbations + (exactly, the quantity defined by Class as index_bg_f in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + f = pvecback[self.ba.index_bg_f] + + free(pvecback) + + return f + + def z_of_tau(self, tau): + """ + Redshift corresponding to a given conformal time. + + Parameters + ---------- + tau : float + Conformal time + """ + cdef double z + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + z = 1./pvecback[self.ba.index_bg_a]-1. + + free(pvecback) + + return z + + def Hubble(self, z): + """ + Hubble(z) + + Return the Hubble rate (exactly, the quantity defined by Class as index_bg_H + in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + H = pvecback[self.ba.index_bg_H] + + free(pvecback) + + return H + + def Om_m(self, z): + """ + Omega_m(z) + + Return the matter density fraction (exactly, the quantity defined by Class as index_bg_Omega_m + in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + Om_m = pvecback[self.ba.index_bg_Omega_m] + + free(pvecback) + + return Om_m + + + def ionization_fraction(self, z): + """ + ionization_fraction(z) + + Return the ionization fraction for a given redshift z + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + cdef double * pvecthermo + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + pvecthermo = calloc(self.th.th_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if thermodynamics_at_z(&self.ba,&self.th,z,self.th.inter_normal,&last_index,pvecback,pvecthermo) == _FAILURE_: + raise CosmoSevereError(self.th.error_message) + + xe = pvecthermo[self.th.index_th_xe] + + free(pvecback) + free(pvecthermo) + + return xe + + def baryon_temperature(self, z): + """ + baryon_temperature(z) + + Give the baryon temperature for a given redshift z + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + cdef double * pvecthermo + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + pvecthermo = calloc(self.th.th_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if thermodynamics_at_z(&self.ba,&self.th,z,self.th.inter_normal,&last_index,pvecback,pvecthermo) == _FAILURE_: + raise CosmoSevereError(self.th.error_message) + + Tb = pvecthermo[self.th.index_th_Tb] + + free(pvecback) + free(pvecthermo) + + return Tb + + def T_cmb(self): + """ + Return the CMB temperature + """ + return self.ba.T_cmb + + # redundent with a previous Omega_m() funciton, + # but we leave it not to break compatibility + def Omega0_m(self): + """ + Return the sum of Omega0 for all non-relativistic components + """ + return self.ba.Omega0_m + + def get_background(self): + """ + Return an array of the background quantities at all times. + + Parameters + ---------- + + Returns + ------- + background : dictionary containing background. + """ + cdef char *titles + cdef double* data + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if background_output_titles(&self.ba, titles)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.ba.bt_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if background_output_data(&self.ba, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + background = {} + + for i in range(number_of_titles): + background[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + background[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return background + + def get_thermodynamics(self): + """ + Return the thermodynamics quantities. + + Returns + ------- + thermodynamics : dictionary containing thermodynamics. + """ + cdef char *titles + cdef double* data + + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if thermodynamics_output_titles(&self.ba, &self.th, titles)==_FAILURE_: + raise CosmoSevereError(self.th.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.th.tt_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if thermodynamics_output_data(&self.ba, &self.th, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.th.error_message) + + thermodynamics = {} + + for i in range(number_of_titles): + thermodynamics[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + thermodynamics[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return thermodynamics + + def get_primordial(self): + """ + Return the primordial scalar and/or tensor spectrum depending on 'modes'. + 'output' must be set to something, e.g. 'tCl'. + + Returns + ------- + primordial : dictionary containing k-vector and primordial scalar and tensor P(k). + """ + cdef char *titles + cdef double* data + + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if primordial_output_titles(&self.pt, &self.pm, titles)==_FAILURE_: + raise CosmoSevereError(self.pm.error_message) + + tmp = titles + names = tmp.split("\t")[:-1] + tmp = str(tmp.decode()) + number_of_titles = len(names) + timesteps = self.pm.lnk_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if primordial_output_data(&self.pt, &self.pm, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.pm.error_message) + + primordial = {} + + for i in range(number_of_titles): + primordial[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + primordial[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return primordial + + + @cython.returns(dict) + @cython.initializedcheck(False) + @cython.boundscheck(False) + @cython.cdivision(True) + @cython.ccall + def get_perturbations(self): + """ + Return scalar, vector and/or tensor perturbations as arrays for requested + k-values. + + .. note:: + + you need to specify both 'k_output_values', and have some + perturbations computed, for instance by setting 'output' to 'tCl'. + + Returns + ------- + perturbations : dict of array of dicts + perturbations['scalar'] is an array of length 'k_output_values' of + dictionary containing scalar perturbations. + Similar for perturbations['vector'] and perturbations['tensor']. + """ + + perturbations = {} + + if self.pt.k_output_values_num<1: + return perturbations + + cdef: + Py_ssize_t j + Py_ssize_t i + Py_ssize_t number_of_titles + Py_ssize_t timesteps + list names + list tmparray + dict tmpdict + double[:,::1] data_mv + double ** thedata + int * thesizes + + # Doing the exact same thing 3 times, for scalar, vector and tensor. Sorry + # for copy-and-paste here, but I don't know what else to do. + for mode in ['scalar','vector','tensor']: + if mode=='scalar' and self.pt.has_scalars: + thetitles = self.pt.scalar_titles + thedata = self.pt.scalar_perturbations_data + thesizes = self.pt.size_scalar_perturbation_data + elif mode=='vector' and self.pt.has_vectors: + thetitles = self.pt.vector_titles + thedata = self.pt.vector_perturbations_data + thesizes = self.pt.size_vector_perturbation_data + elif mode=='tensor' and self.pt.has_tensors: + thetitles = self.pt.tensor_titles + thedata = self.pt.tensor_perturbations_data + thesizes = self.pt.size_tensor_perturbation_data + else: + continue + thetitles = str(thetitles.decode()) + names = thetitles.split("\t")[:-1] + number_of_titles = len(names) + tmparray = [] + if number_of_titles != 0: + for j in range(self.pt.k_output_values_num): + timesteps = thesizes[j]//number_of_titles + tmpdict={} + data_mv = thedata[j] + for i in range(number_of_titles): + tmpdict[names[i]] = np.asarray(data_mv[:,i]) + tmparray.append(tmpdict) + perturbations[mode] = tmparray + + return perturbations + + def get_transfer(self, z=0., output_format='class'): + """ + Return the density and/or velocity transfer functions for all initial + conditions today. You must include 'mTk' and/or 'vCTk' in the list of + 'output'. The transfer functions can also be computed at higher redshift z + provided that 'z_pk' has been set and that 0calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if perturb_output_titles(&self.ba,&self.pt, outf, titles)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.pt.k_size[index_md] + + size_ic_data = timesteps*number_of_titles; + ic_num = self.pt.ic_size[index_md]; + + data = malloc(sizeof(double)*size_ic_data*ic_num) + + if perturb_output_data(&self.ba, &self.pt, outf, z, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + + transfers = {} + + for index_ic in range(ic_num): + if perturb_output_firstline_and_ic_suffix(&self.pt, index_ic, ic_info, ic_suffix)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + ic_key = ic_suffix + + tmpdict = {} + for i in range(number_of_titles): + tmpdict[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + tmpdict[names[i]][index] = data[index_ic*size_ic_data+index*number_of_titles+i] + + if ic_num==1: + transfers = tmpdict + else: + transfers[ic_key] = tmpdict + + free(titles) + free(data) + + return transfers + + def get_current_derived_parameters(self, names): + """ + get_current_derived_parameters(names) + + Return a dictionary containing an entry for all the names defined in the + input list. + + Parameters + ---------- + names : list + Derived parameters that can be asked from Monte Python, or + elsewhere. + + Returns + ------- + derived : dict + + .. warning:: + + This method used to take as an argument directly the data class from + Monte Python. To maintain compatibility with this old feature, a + check is performed to verify that names is indeed a list. If not, it + returns a TypeError. The old version of this function, when asked + with the new argument, will raise an AttributeError. + + """ + if type(names) != type([]): + raise TypeError("Deprecated") + + derived = {} + for name in names: + if name == 'h': + value = self.ba.h + elif name == 'H0': + value = self.ba.h*100 + elif name == 'Omega0_lambda' or name == 'Omega_Lambda': + value = self.ba.Omega0_lambda + elif name == 'Omega0_fld': + value = self.ba.Omega0_fld + elif name == 'age': + value = self.ba.age + elif name == 'conformal_age': + value = self.ba.conformal_age + elif name == 'm_ncdm_in_eV': + value = self.ba.m_ncdm_in_eV[0] + elif name == 'm_ncdm_tot': + value = self.ba.Omega0_ncdm_tot*self.ba.h*self.ba.h*93.14 + elif name == 'Neff': + value = self.ba.Neff + elif name == 'Omega_m': + value = self.ba.Omega0_m + elif name == 'omega_m': + value = self.ba.Omega0_m*self.ba.h**2 + elif name == 'xi_idr': + value = self.ba.T_idr/self.ba.T_cmb + elif name == 'N_dg': + value = self.ba.Omega0_idr/self.ba.Omega0_g*8./7.*pow(11./4.,4./3.) + elif name == 'Gamma_0_nadm': + value = self.th.a_idm_dr*(4./3.)*(self.ba.h*self.ba.h*self.ba.Omega0_idr) + elif name == 'a_dark': + value = self.th.a_idm_dr + elif name == 'tau_reio': + value = self.th.tau_reio + elif name == 'z_reio': + value = self.th.z_reio + elif name == 'z_rec': + value = self.th.z_rec + elif name == 'tau_rec': + value = self.th.tau_rec + elif name == 'rs_rec': + value = self.th.rs_rec + elif name == 'rs_rec_h': + value = self.th.rs_rec*self.ba.h + elif name == 'ds_rec': + value = self.th.ds_rec + elif name == 'ds_rec_h': + value = self.th.ds_rec*self.ba.h + elif name == 'ra_rec': + value = self.th.da_rec*(1.+self.th.z_rec) + elif name == 'ra_rec_h': + value = self.th.da_rec*(1.+self.th.z_rec)*self.ba.h + elif name == 'da_rec': + value = self.th.da_rec + elif name == 'da_rec_h': + value = self.th.da_rec*self.ba.h + elif name == 'z_star': + value = self.th.z_star + elif name == 'tau_star': + value = self.th.tau_star + elif name == 'rs_star': + value = self.th.rs_star + elif name == 'ds_star': + value = self.th.ds_star + elif name == 'ra_star': + value = self.th.ra_star + elif name == 'da_star': + value = self.th.da_star + elif name == 'rd_star': + value = self.th.rd_star + elif name == 'z_d': + value = self.th.z_d + elif name == 'tau_d': + value = self.th.tau_d + elif name == 'ds_d': + value = self.th.ds_d + elif name == 'ds_d_h': + value = self.th.ds_d*self.ba.h + elif name == 'rs_d': + value = self.th.rs_d + elif name == 'rs_d_h': + value = self.th.rs_d*self.ba.h + elif name == '100*theta_s': + value = 100.*self.th.rs_rec/self.th.da_rec/(1.+self.th.z_rec) + elif name == '100*theta_star': + value = 100.*self.th.rs_star/self.th.da_star/(1.+self.th.z_star) + elif name == 'YHe': + value = self.th.YHe + elif name == 'n_e': + value = self.th.n_e + elif name == 'A_s': + value = self.pm.A_s + elif name == 'ln10^{10}A_s': + value = log(1.e10*self.pm.A_s) + elif name == 'n_s': + value = self.pm.n_s + elif name == 'alpha_s': + value = self.pm.alpha_s + elif name == 'beta_s': + value = self.pm.beta_s + elif name == 'r': + # This is at the pivot scale + value = self.pm.r + elif name == 'r_0002': + # at k_pivot = 0.002/Mpc + value = self.pm.r*(0.002/self.pm.k_pivot)**( + self.pm.n_t-self.pm.n_s-1+0.5*self.pm.alpha_s*log( + 0.002/self.pm.k_pivot)) + elif name == 'n_t': + value = self.pm.n_t + elif name == 'alpha_t': + value = self.pm.alpha_t + elif name == 'V_0': + value = self.pm.V0 + elif name == 'V_1': + value = self.pm.V1 + elif name == 'V_2': + value = self.pm.V2 + elif name == 'V_3': + value = self.pm.V3 + elif name == 'V_4': + value = self.pm.V4 + elif name == 'epsilon_V': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + value = eps1*((1.-eps1/3.+eps2/6.)/(1.-eps1/3.))**2 + elif name == 'eta_V': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + eps23 = 1./8.*(self.pm.r**2/8.+(self.pm.n_s-1.)*self.pm.r-8.*self.pm.alpha_s) + value = (2.*eps1-eps2/2.-2./3.*eps1**2+5./6.*eps1*eps2-eps2**2/12.-eps23/6.)/(1.-eps1/3.) + elif name == 'ksi_V^2': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + eps23 = 1./8.*(self.pm.r**2/8.+(self.pm.n_s-1.)*self.pm.r-8.*self.pm.alpha_s) + value = 2.*(1.-eps1/3.+eps2/6.)*(2.*eps1**2-3./2.*eps1*eps2+eps23/4.)/(1.-eps1/3.)**2 + elif name == 'exp_m_2_tau_As': + value = exp(-2.*self.th.tau_reio)*self.pm.A_s + elif name == 'phi_min': + value = self.pm.phi_min + elif name == 'phi_max': + value = self.pm.phi_max + elif name == 'sigma8': + value = self.nl.sigma8[self.nl.index_pk_m] + elif name == 'sigma8_cb': + value = self.nl.sigma8[self.nl.index_pk_cb] + elif name == 'k_eq': + value = self.ba.a_eq*self.ba.H_eq + + else: + raise CosmoSevereError("%s was not recognized as a derived parameter" % name) + derived[name] = value + return derived + + def nonlinear_scale(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_scale(z, z_size) + + Return the nonlinear scale for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] k_nl = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] k_nl_cb = np.zeros(z_size,'float64') + #cdef double *k_nl + #k_nl = calloc(z_size,sizeof(double)) + for index_z in range(z_size): + if nonlinear_k_nl_at_z(&self.ba,&self.nl,z[index_z],&k_nl[index_z],&k_nl_cb[index_z]) == _FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return k_nl + + def nonlinear_scale_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + +make nonlinear_scale_cb(z, z_size) + + Return the nonlinear scale for all the redshift specified in z, of size + + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] k_nl = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] k_nl_cb = np.zeros(z_size,'float64') + #cdef double *k_nl + #k_nl = calloc(z_size,sizeof(double)) + if (self.ba.Omega0_ncdm_tot == 0.): + raise CosmoSevereError( + "No massive neutrinos. You must use pk, rather than pk_cb." + ) + for index_z in range(z_size): + if nonlinear_k_nl_at_z(&self.ba,&self.nl,z[index_z],&k_nl[index_z],&k_nl_cb[index_z]) == _FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return k_nl_cb + + def nonlinear_hmcode_sigma8(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigma8(z, z_size) + + Return sigma_8 for all the redshift specified in z, of size + + """ + cdef int index_z + + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigma8_at_z(&self.ba,&self.nl,z[index_z],&sigma_8[index_z],&sigma_8_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_8 + + def nonlinear_hmcode_sigma8_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigma8(z, z_size) + + Return sigma_8 for all the redshift specified in z, of size + + """ + cdef int index_z + + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigma8_at_z(&self.ba,&self.nl,z[index_z],&sigma_8[index_z],&sigma_8_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_8_cb + + def nonlinear_hmcode_sigmadisp(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp[index_z],&sigma_disp_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp + + def nonlinear_hmcode_sigmadisp_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp[index_z],&sigma_disp_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_cb + + def nonlinear_hmcode_sigmadisp100(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp100(z, z_size) + + Return sigma_disp_100 for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp100_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp_100[index_z],&sigma_disp_100_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_100 + + def nonlinear_hmcode_sigmadisp100_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp100(z, z_size) + + Return sigma_disp_100 for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp100_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp_100[index_z],&sigma_disp_100_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_100_cb + + def nonlinear_hmcode_sigmaprime(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmaprime(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmaprime_at_z(&self.ba,&self.nl,z[index_z],&sigma_prime[index_z],&sigma_prime_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_prime + + def nonlinear_hmcode_sigmaprime_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmaprime(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmaprime_at_z(&self.ba,&self.nl,z[index_z],&sigma_prime[index_z],&sigma_prime_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_prime_cb + + def __call__(self, ctx): + """ + Function to interface with CosmoHammer + + Parameters + ---------- + ctx : context + Contains several dictionaries storing data and cosmological + information + + """ + data = ctx.get('data') # recover data from the context + + # If the module has already been called once, clean-up + if self.state: + self.struct_cleanup() + + # Set the module to the current values + self.set(data.cosmo_arguments) + self.compute(["lensing"]) + + # Compute the derived paramter value and store them + params = ctx.getData() + self.get_current_derived_parameters( + data.get_mcmc_parameters(['derived'])) + for elem in data.get_mcmc_parameters(['derived']): + data.mcmc_parameters[elem]['current'] /= \ + data.mcmc_parameters[elem]['scale'] + params[elem] = data.mcmc_parameters[elem]['current'] + + ctx.add('boundary', True) + # Store itself into the context, to be accessed by the likelihoods + ctx.add('cosmo', self) + + def get_pk_array(self, np.ndarray[DTYPE_t,ndim=1] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, nonlinear): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=1] pk = np.zeros(k_size*z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] pk_cb = np.zeros(k_size*z_size,'float64') + + if nonlinear == 0: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_linear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + else: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_nonlinear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + return pk + + def get_pk_cb_array(self, np.ndarray[DTYPE_t,ndim=1] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, nonlinear): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=1] pk = np.zeros(k_size*z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] pk_cb = np.zeros(k_size*z_size,'float64') + + if nonlinear == 0: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_linear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + else: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_nonlinear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + return pk_cb + + def Omega0_k(self): + """ Curvature contribution """ + return self.ba.Omega0_k + + def Omega0_cdm(self): + return self.ba.Omega0_cdm diff --git a/class/python/extract_errors.py b/class/python/extract_errors.py new file mode 100644 index 00000000..643d7b5a --- /dev/null +++ b/class/python/extract_errors.py @@ -0,0 +1,51 @@ +# From the dumped stdout and stderr of a nosetests test_class.py, extract all +# the failed steps. +# Usage: python extract_errors.py output +from __future__ import print_function +import sys +import os + + +def main(path): + """ + Create a shorter file containing only the errors from nosetests + + """ + assert os.path.isfile(path) is True + + trimmed_path = path + '_errors' + destination = open(trimmed_path, 'w') + contains_error = False + with open(path, 'r') as source: + text = source.readlines() + start = 0 + for index, line in enumerate(text): + if line.find('------------------') != -1: + if text[index+2].find('----------------') != -1: + stop = index-1 + # Check that an error is contained + if stop > 0: + for i in range(start, stop+1): + if text[i].startswith('E'): + contains_error = True + if contains_error: + print('Found an error') + for i in range(start, stop+1): + print(text[i], end=' ') + destination.write(text[i]) + start = index + contains_error = False + elif text[index+2].find('=================') != -1: + break + else: + pass + destination.close() + + +if __name__ == "__main__": + print(sys.argv) + if len(sys.argv) != 2: + print('Please specify the output file to analyse') + exit() + else: + main(sys.argv[-1]) diff --git a/class/python/interface_generator.py b/class/python/interface_generator.py new file mode 100644 index 00000000..8570c7fa --- /dev/null +++ b/class/python/interface_generator.py @@ -0,0 +1,486 @@ +""" +Automatically reads header files to generate an interface +""" +from __future__ import division, print_function +import sys +import logging +try: + from collections import OrderedDict as od +except ImportError: + try: + from ordereddict import OrderedDict as od + except ImportError: + raise ImportError( + "If you are running with Python v2.5 or 2.6" + " you need to manually install the ordereddict" + " package.") +try: + import colorlog +except ImportError: + raise ImportError( + "You have to install the colorlog module" + " with pip, or easy-install.") + +SPACING = ' ' +NAMING_CONVENTION = { + 'precision': {'python': 'precision', + 'function': 'precision'}, + 'background': {'python': 'background', + 'function': 'background'}, + 'thermo': {'python': 'thermodynamics', + 'function': 'thermodynamics'}, + 'perturbs': {'python': 'perturbations', + 'function': 'perturb'}, + 'transfers': {'python': 'transfer', + 'function': 'transfer'}, + 'primordial': {'python': 'primordial', + 'function': 'primordial'}, + 'spectra': {'python': 'spectra', + 'function': 'spectra'}, + 'lensing': {'python': 'lensing', + 'function': 'lensing'}, + 'nonlinear': {'python': 'nonlinear', + 'function': 'nonlinear'}, + 'output': {'python': 'output', + 'function': 'output'}, + } + + +def main(): + # create logger + logger = create_logger() + + # Recover all sub-header files + main_header = '../include/class.h' + headers = [] + + with open(main_header, 'r') as header_file: + in_modules = False + for line in header_file: + if in_modules: + if line.strip() == '': + in_modules = False + continue + if line.find('common') == -1 and line.find('input') == -1: + headers.append( + '../include/%s' % line.split()[-1].strip('"')) + if line.find('class modules') != -1: + in_modules = True + + logger.info('Extracted the following headers: %s', ', '.join(headers)) + output = 'classy.pyx' + logger.info('Creating %s', output) + structs = od() + output_file = open(output, 'w') + write_imports(output_file) + output_file.write('cdef extern from "class.h":\n') + + # First write the first non automatic bits + output_file.write( + SPACING+'ctypedef char FileArg[40]\n' + + SPACING+'ctypedef char* ErrorMsg\n' + + SPACING+'cdef struct precision:\n' + + 2*SPACING+'ErrorMsg error_message\n\n' + + SPACING+'cdef int _FAILURE_\n' + + SPACING+'cdef int _FALSE_\n' + + SPACING+'cdef int _TRUE_\n') + + for header in headers: + extract_headers(header, structs, output_file, logger) + logger.info("Finished extracting headers") + for struct_name, struct in structs.items(): + create_wrapper_class(struct_name, struct, output_file, logger) + + return + + +def extract_headers(header, structs, output_file, logger): + """toto""" + # Initialise the two flags controlling the exploration of the main + # structure + in_struct, main_struct_finished = False, False + # Flags for exploring enums (only the ones before the struct) + in_enum = False + # flag dealing with extracting docstrings + comment_partially_recovered = False + # Flag keeping track of multiple variables + multiple_var = False + # Flag recovering the functions + in_function_definitions, in_function, in_init = False, False, False + with open(header, 'r') as header_file: + logger.info("reading %s" % header) + for line in header_file: + # First case, recover the enums + if not main_struct_finished and not in_struct: + if line.find("enum ") != -1 and line.find("{") != -1: + enum_members = [] + if line.find(";") == -1: + in_enum = True + enum_name = line.strip("enum").strip().strip('{') + else: + in_enum = False + line = line.strip("enum").strip().strip(';') + enum_name, enum_sign = line.split(' ', 1) + enum_sign = enum_sign.strip('}').strip('{') + for elem in enum_sign.split(','): + enum_members.append(elem.strip()) + output_file.write( + SPACING + 'cdef enum %s:\n' % enum_name) + for elem in enum_members: + output_file.write(2*SPACING + elem + '\n') + output_file.write('\n') + elif in_enum: + if line.find('};') != -1: + in_enum = False + output_file.write( + SPACING + 'cdef enum %s:\n' % enum_name) + for elem in enum_members: + output_file.write(2*SPACING + elem + '\n') + output_file.write('\n') + else: + if line.strip() != '': + enum_members.append(line.split()[0].strip().strip(',')) + if line.find("struct ") != -1 and not main_struct_finished: + in_struct = True + # Recover the name + logger.debug("in struct: %s" % line) + struct_name = line.strip().split()[1] + logger.debug("struct name: %s" % struct_name) + structs[struct_name] = {} + structs[struct_name].update( + NAMING_CONVENTION[struct_name]) + output_file.write("%scdef struct %s:\n" % ( + SPACING, struct_name)) + continue + elif in_struct: + if line.find("};\n") != -1: + output_file.write('\n') + in_struct, main_struct_finished = False, True + else: + # if the line is not empty or does not contain only a + # comment: + if line.strip() == '' or line.strip()[:2] == '/*': + continue + logger.debug( + "potentially non empty line: %s" % line.strip()) + #elif line.find('/**') != -1 or line.find('*/') != -1: + #continue + if line.find(';') == -1 and not comment_partially_recovered: + logger.debug("--> Discarded") + continue + elif line.find(';') != -1 and not comment_partially_recovered: + var_doc = '' + var_part, begin_comment = line.strip().split(';', 1) + var_doc += begin_comment.strip()[4:].strip() + # 2 things can happen: there can be arrays, and there + # can be several variables defined in one line... + # If array, slightly more complex + if var_part.find('*') != -1: + # if no comma is found, it means it is a single + # variable: good ! + if var_part.find(',') == -1: + # remove if commented (starts with /*) + if var_part[:2] in ['/*', '//']: + continue + multiple_var = False + var_type, var_stars, var_name = var_part.strip().split() + structs[struct_name][var_name] = [ + var_type, var_stars] + else: + # Count how many variables are defined + multiple_var = True + all_vars = [elem.strip() for elem in + var_part.split('*')[-1].split(',')] + var_type, var_stars = (var_part.strip(). + split()[:2]) + for var in all_vars: + structs[struct_name][var] = [ + var_type, var_stars] + else: + # Again check for more than one variable + var_stars = '' + if var_part.find(',') == -1: + multiple_var = False + var_type, var_name = var_part.strip().split(' ', 1) + # Check if enum + if var_type == 'enum': + enum_name, var_name = var_name.split() + var_type += ' '+enum_name + structs[struct_name][var_name] = [ + var_type, var_stars] + else: + multiple_var = True + all_vars = [elem.strip() for elem in + var_part.split()[2:].split(',')] + var_type = (var_part.strip().split()[0]) + for var in all_vars: + structs[struct_name][var] = [ + var_type, var_stars] + # If the comment is finished, pass + if var_doc[-2:] != '*/': + comment_partially_recovered = True + else: + var_doc = var_doc[:-2].replace('\\f$', '$').strip() + structs[struct_name][var_name].append(var_doc) + logger.debug( + "extracted the variable %s, " % var_name + + "of type %s, with docstring: %s" % ( + ''.join([var_stars, var_type]), var_doc)) + + if not multiple_var: + output_file.write(2*SPACING+' '.join( + [elem for elem in [var_type, var_stars, var_name] + if elem])+'\n') + else: + for var in all_vars: + output_file.write(2*SPACING+' '.join( + [elem for elem in [var_type, var_stars, var] + if elem])+'\n') + + if comment_partially_recovered: + logger.debug("--> Accepted") + var_doc += ' '+line.strip() + if var_doc[-2:] == '*/': + comment_partially_recovered = False + var_doc = var_doc[:-2].replace('\\f$', '$').strip() + structs[struct_name][var_name].append(var_doc) + logger.debug( + "extracted the variable %s, " % var_name + + "of type %s, with docstring: %s" % ( + ''.join([var_stars, var_type]), var_doc)) + + elif main_struct_finished: + if line.find('extern "C"') != -1: + in_function_definitions = True + if not in_function_definitions: + continue + else: + if line.find('(') != -1: + in_function = True + logger.debug("Found a function") + func_type, func_name = line.split('(')[0].strip().split() + logger.debug('%s %s' % (func_name, func_type)) + func_param = [] + + if func_name == structs[struct_name]['function']+'_init': + logger.info("found the init function") + in_init = True + structs[struct_name]['init'] = [func_name] + output_file.write(SPACING+'%s %s(' % ( + func_type, func_name)) + elif in_function: + # recover the signature of the function + line = line.strip().strip(',') + if line.find('struct') != -1: + if in_init: + name = line.split('*')[0].strip()[7:] + structs[struct_name]['init'].append(name) + func_param.append('void *') + elif line.find('*') != -1: + # Taking into account with or without spaces + temp = ''.join(line.strip(',').split()) + last_star = len(temp)-temp[::-1].find('*') + func_param.append(temp[:last_star]) + elif line.find(')') == -1: + if line != '': + func_param.append(line.split()[0]) + else: + logger.debug('signature extracted') + in_function = False + if in_init: + in_init = False + output_file.write(', '.join(func_param) + ')\n') + + elif line.find('}') != -1: + output_file.write('\n') + in_function_definitions = False + #print line.strip() + + +def create_wrapper_class(struct_name, struct, of, logger): + """TODO""" + of.write('# Defining wrapper around struct %s\n' % struct_name) + of.write('cdef class %s:\n' % ( + NAMING_CONVENTION[struct_name]['python'].capitalize())) + + ## recover the number of additional arguments: + init_name, argument_names = struct['init'][0], struct['init'][1:] + + for companion in argument_names: + of.write(SPACING+'cdef %s _%s\n' % (companion, companion)) + #logger.info("structure: %s, python name: %s" % ( + #companion, NAMING_CONVENTION[companion]['python'])) + of.write('\n') + + # Define the array variables for all needed + array_variables = [] + variables = [] + for key, value in struct.items(): + if key != 'init': + if value[1]: + array_variables.append(key) + variables.append(key) + of.write(SPACING+'cdef np.ndarray %s_arr\n' % key) + else: + variables.append(key) + of.write('\n') + + # write the init + of.write(SPACING+'def __init__(self') + for companion in argument_names: + of.write(", %s py_%s" % ( + NAMING_CONVENTION[companion]['python'].capitalize(), companion)) + of.write('):\n\n') + + # pointing the pointers where they belong + for companion in argument_names: + of.write(2*SPACING+"self._%s = py_%s._%s\n" % ( + companion, companion, companion)) + + # Writing the call to structname_init() + of.write(2*SPACING+'%s_init(\n' % struct_name) + for companion in argument_names: + of.write(3*SPACING+'&(self._%s),\n' % companion) + of.write(3*SPACING+'&(self._%s))\n\n' % struct_name) + + #of.write(2*SPACING+'%s_init(&(self._%s))\n\n' % ( + #struct_name, struct_name)) + for array in array_variables: + of.write(2*SPACING+'# Wrapping %s\n' % array) + of.write(2*SPACING+'%s_wrapper = ArrayWrapper()\n' % array) + of.write( + 2*SPACING+"%s_wrapper.set_data(%d, '%s', " + " self._%s.%s)\n" % ( + array, 2, struct[array].strip('*'), struct_name, array)) + of.write( + 2*SPACING+'self.%s_arr = np.array(%s_wrapper, ' + 'copy=False)\n' % ( + array, array)) + of.write(2*SPACING+'self.%s_arr.base = ' + ' %s_wrapper\n' % ( + array, array)) + of.write(2*SPACING+'Py_INCREF(%s_wrapper)\n\n' % array) + #raise NotImplementedError('multiple init are not supported') + + # Write the properties + for key in variables: + of.write(SPACING+'property %s:\n' % key) + if key not in array_variables: + of.write(2*SPACING+'def __get__(self):\n') + of.write(3*SPACING+'return self._%s.%s\n' % (struct_name, key)) + of.write(2*SPACING+'def __set__(self, rhs):\n') + of.write(3*SPACING+'self._%s.%s = rhs\n' % (struct_name, key)) + else: + of.write(2*SPACING+'def __get__(self):\n') + of.write(3*SPACING+'return self.%s_arr\n' % key) + of.write(2*SPACING+'def __set__(self, rhs):\n') + of.write(3*SPACING+'self.%s_arr[:] = rhs\n' % key) + of.write('\n') + + # Add blank lines + of.write('\n\n') + + +def write_imports(output_file): + """TODO""" + a = '''# Author: Gael Varoquaux +# License: BSD +from libc.stdlib cimport free +from cpython cimport PyObject, Py_INCREF + +# Import the Python-level symbols of numpy +import numpy as np + +# Import the C-level symbols of numpy +cimport numpy as np + +# Numpy must be initialized. When using numpy from C or Cython you must +# _always_ do that, or you will have segfaults +np.import_array() + +cdef class ArrayWrapper: + cdef void* data_ptr + cdef int size + cdef int type + + cdef set_data(self, int size, char* type, void* data_ptr): + """ Set the data of the array + + This cannot be done in the constructor as it must recieve C-level + arguments. + + Parameters: + ----------- + size: int + Length of the array. + data_ptr: void* + Pointer to the data + + """ + self.data_ptr = data_ptr + self.size = size + if type.find('int') != -1: + self.type = np.NPY_INT + elif type.find('float') != -1: + self.type = np.NPY_FLOAT + elif type.find('double') != -1: + self.type = np.NPY_DOUBLE + elif type.find('long') != -1: + self.type = np.NPY_LONG + + def __array__(self): + """ Here we use the __array__ method, that is called when numpy + tries to get an array from the object.""" + cdef np.npy_intp shape[1] + shape[0] = self.size + # Create a 1D array, of length 'size' + ndarray = np.PyArray_SimpleNewFromData(1, shape, + self.type, self.data_ptr) + return ndarray + + def __dealloc__(self): + """ Frees the array. This is called by Python when all the + references to the object are gone. """ + free(self.data_ptr)\n\n''' + output_file.write(a) + + +def create_logger(): + """Nothing""" + + logger = logging.getLogger('simple_example') + #logger.setLevel(logging.DEBUG) + logger.setLevel(logging.INFO) + + # create console handler and set level to debug + console_handler = logging.StreamHandler() + #console_handler.setLevel(logging.DEBUG) + console_handler.setLevel(logging.INFO) + + # create formatter + #formatter = logging.Formatter( + #"%(asctime)s %(module)s: L%(lineno) 4s %(funcName) 15s" + #" | %(levelname) -10s --> %(message)s") + formatter = colorlog.ColoredFormatter( + "%(asctime)s %(module)s: L%(lineno) 4s %(blue)s%(funcName) 15s%(reset)s" + " | %(log_color)s%(levelname) -10s --> %(message)s%(reset)s", + datefmt=None, + reset=True, + log_colors={ + 'DEBUG': 'cyan', + 'INFO': 'green', + 'WARNING': 'yellow', + 'ERROR': 'red', + 'CRITICAL': 'red', + }) + + # add formatter to console_handler + console_handler.setFormatter(formatter) + + # add console_handler to logger + logger.addHandler(console_handler) + + return logger + +if __name__ == "__main__": + sys.exit(main()) diff --git a/class/python/setup.py b/class/python/setup.py new file mode 100644 index 00000000..c2920577 --- /dev/null +++ b/class/python/setup.py @@ -0,0 +1,53 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext + +import numpy as nm +import os +import subprocess as sbp +import os.path as osp + +# Recover the gcc compiler +GCCPATH_STRING = sbp.Popen( + ['gcc', '-print-libgcc-file-name'], + stdout=sbp.PIPE).communicate()[0] +GCCPATH = osp.normpath(osp.dirname(GCCPATH_STRING)).decode() + +liblist = ["class"] +MVEC_STRING = sbp.Popen( + ['gcc', '-lmvec'], + stderr=sbp.PIPE).communicate()[1] +if b"mvec" not in MVEC_STRING: + liblist += ["mvec","m"] + +# define absolute paths +root_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..") +include_folder = os.path.join(root_folder, "include") +classy_folder = os.path.join(root_folder, "python") + +# Recover the CLASS version +with open(os.path.join(include_folder, 'common.h'), 'r') as v_file: + for line in v_file: + if line.find("_VERSION_") != -1: + # get rid of the " and the v + VERSION = line.split()[-1][2:-1] + break + +# Define cython extension and fix Python version +classy_ext = Extension("classy", [os.path.join(classy_folder, "classy.pyx")], + include_dirs=[nm.get_include(), include_folder], + libraries=liblist, + library_dirs=[root_folder, GCCPATH], + extra_link_args=['-lgomp']) +import six +classy_ext.cython_directives = {'language_level': "3" if six.PY3 else "2"} + +setup( + name='classy', + version=VERSION, + description='Python interface to the Cosmological Boltzmann code CLASS', + url='http://www.class-code.net', + cmdclass={'build_ext': build_ext}, + ext_modules=[classy_ext], + #data_files=[('bbn', ['../bbn/sBBN.dat'])] +) diff --git a/class/python/test_class.py b/class/python/test_class.py new file mode 100644 index 00000000..74cecb96 --- /dev/null +++ b/class/python/test_class.py @@ -0,0 +1,548 @@ +""" +.. module:: test_class + :synopsis: python script for testing CLASS using nose +.. moduleauthor:: Benjamin Audren +.. credits:: Benjamin Audren, Thomas Tram +.. version:: 1.0 + +This is a python script for testing CLASS and its wrapper Classy using nose. +To run the test suite, type +nosetests test_class.py +If you want to extract the problematic input parameters at a later stage, +you should type +nosetests test_class.py 1>stdoutfile 2>stderrfile +and then use the python script extract_errors.py on the stderrfile. + +When adding a new input parameter to CLASS (by modifying input.c), you +should also include tests of this new input. You will be in one of the +two cases: +1: The new input is supposed to be compatible with any existing input. + This is the standard case when adding a new species for instance. +2: The new input is incompatible with one of the existing inputs. This + would be the case if you have added (or just want to test) some other + value of an already defined parameter. (Maybe you have allowed for + negative mass neutrinos and you want to test CLASS using a negative mass.) + +In case 1, you must add an entry in the CLASS_INPUT dictionary: +CLASS_INPUT['Mnu'] = ( + [{'N_eff': 0.0, 'N_ncdm': 1, 'm_ncdm': 0.06, 'deg_ncdm': 3.0}, + {'N_eff': 1.5, 'N_ncdm': 1, 'm_ncdm': 0.03, 'deg_ncdm': 1.5}], + 'normal') +The key 'Mnu' is not being used in the code, so its purpose is just to +describe the entry to the reader. +the value is a 2-tuple where the first entry [{},{},...,{}] is an array of +dictionaries containg the actual input to CLASS. The second entry is a keyword +which can be either 'normal' or 'power'. It tells the script how this input +will be combined with other inputs. + +What does 'normal' and 'power' mean? +If an entry has the 'power' keyword, it will be combined with any other entry. +If an entry has the 'normal' keyword, it will not be combined with any other +entry having the 'normal' keyword, but it will be combined with all entries +carrying the 'power keyword. +Beware that the number of tests grow a lot when using the 'power' keyword. + +In case 2, you should find the relevant entry and just add a new dictionary +to the array. E.g. if you want to test some negative mass model you should add +{'N_ncdm': 1, 'm_ncdm': -0.1, 'deg_ncdm': 1.0} + +How are default parameters handled? +Any input array implicitly contains the empty dictionary. That means that if +Omega_k:0.0 is the default value, writing +CLASS_INPUT['Curvature'] = ( + [{'Omega_k': 0.01}, + {'Omega_k': -0.01}], + 'normal') +will test the default value Omega_k=0.0 along with the two specified models. + +How to deal with inconsistent input? +Sometimes a specific feature requires the presence of another input parameter. +For instance, if we ask for tensor modes we must have temperature and/or +polarisation in the output. If not, CLASS is supposed to fail during the +evaluation of the input module and return an error message. This fail is the +correct behaviour of CLASS. To implement such a case, modify the function +test_incompatible_input(self) + +Comparing output: When the flag 'COMPARE_OUTPUT' is set to true, the code will +rerun CLASS for each case under Newtonian gauge and then compare Cl's and +matter power spectrum. If the two are not close enough, it will generate a +PDF plot of this and save it in the 'fail' folder. +""" +from __future__ import print_function +from classy import Class +from classy import CosmoSevereError +import itertools +import sys +import shutil +import os +import numpy as np +from math import log10 +import matplotlib.pyplot as plt +import unittest +from nose_parameterized import parameterized + +# To avoid testing for differences between synchronous and Newtonian gauge, set +# this flag to False +COMPARE_OUTPUT = True + +# Dictionary of models to test the wrapper against. Each of these scenario will +# be run against all the possible output choices (nothing, tCl, mPk, etc...), +# with or without non-linearities. +# Never input the default value, as this will be **automatically** tested +# against. Indeed, when not specifying a field, CLASS takes the default input. +CLASS_INPUT = {} + +#CLASS_INPUT['Mnu'] = ( +# [{'N_eff': 0.0, 'N_ncdm': 1, 'm_ncdm': 0.06, 'deg_ncdm': 3.0}, +# {'N_eff': 1.5, 'N_ncdm': 1, 'm_ncdm': 0.03, 'deg_ncdm': 1.5}], +# 'normal') + +#CLASS_INPUT['Curvature'] = ( +# [{'Omega_k': 0.01}, +# {'Omega_k': -0.01}], +# 'normal') + +CLASS_INPUT['Isocurvature_modes'] = ( + [{'ic': 'ad,nid,cdi', 'c_ad_cdi': -0.5}], + 'normal') + +#CLASS_INPUT['Scalar_field'] = ( + #[{'Omega_scf': 0.1, 'attractor_ic_scf': 'yes', + #'scf_parameters': '10, 0, 0, 0'}], + #'normal') + +CLASS_INPUT['Inflation'] = ( + [{'P_k_ini type': 'inflation_V'}, + {'P_k_ini type': 'inflation_H'}, + {'P_k_ini type': 'inflation_V_end'}], + 'normal') + +CLASS_INPUT['modes'] = ( + [{'modes': 't'}, + {'modes': 's, t'}], + 'power') + +CLASS_INPUT['Tensor_method'] = ( + [{'tensor method': 'exact'}, + {'tensor method': 'photons'}], + 'power') + +CLASS_INPUT['Output_spectra'] = ( + [{'output': 'mPk', 'P_k_max_1/Mpc': 10}, + {'output': 'tCl'}, + {'output': 'tCl pCl lCl'}, + {'output': 'mPk tCl lCl', 'P_k_max_1/Mpc': 10}, + {'output': 'nCl sCl'}, + {'output': 'tCl pCl lCl nCl sCl'}], + 'power') + +CLASS_INPUT['Nonlinear'] = ( + [{'non linear': 'halofit'}], + 'power') + +CLASS_INPUT['Lensing'] = ( + [{'lensing': 'yes'}], + 'power') + +# Let's kill the machine (replace all 'normal' flags with power', uncomment at +# you own risk) +# for k, v in CLASS_INPUT.iteritems(): +# models, state = v +# CLASS_INPUT[k] = (models, 'power') + +INPUTPOWER = [] +INPUTNORMAL = [{}] +for key, value in list(CLASS_INPUT.items()): + models, state = value + if state == 'power': + INPUTPOWER.append([{}]+models) + else: + INPUTNORMAL.extend(models) + + PRODPOWER = list(itertools.product(*INPUTPOWER)) + + DICTARRAY = [] + for normelem in INPUTNORMAL: + for powelem in PRODPOWER: # itertools.product(*modpower): + temp_dict = normelem.copy() + for elem in powelem: + temp_dict.update(elem) + DICTARRAY.append(temp_dict) + + +TUPLE_ARRAY = [] +for e in DICTARRAY: + TUPLE_ARRAY.append((e, )) + + +def powerset(iterable): + xs = list(iterable) + # note we return an iterator rather than a list + return itertools.chain.from_iterable( + itertools.combinations(xs, n) for n in range(1, len(xs)+1)) + + +class TestClass(unittest.TestCase): + """ + Testing Class and its wrapper classy on different cosmologies + + To run it, do + ~] nosetest test_class.py + + It will run many times Class, on different cosmological scenarios, and + everytime testing for different output possibilities (none asked, only mPk, + etc..) + + """ + @classmethod + def setUpClass(self): + self.faulty_figs_path = os.path.join( + os.path.sep.join(os.path.realpath(__file__).split( + os.path.sep)[:-1]), + 'faulty_figs') + + if os.path.isdir(self.faulty_figs_path): + shutil.rmtree(self.faulty_figs_path) + + os.mkdir(self.faulty_figs_path) + + @classmethod + def tearDownClass(self): + pass + + def setUp(self): + """ + set up data used in the tests. + setUp is called before each test function execution. + """ + self.cosmo = Class() + self.cosmo_newt = Class() + + self.verbose = { + 'input_verbose': 1, + 'background_verbose': 1, + 'thermodynamics_verbose': 1, + 'perturbations_verbose': 1, + 'transfer_verbose': 1, + 'primordial_verbose': 1, + 'spectra_verbose': 1, + 'nonlinear_verbose': 1, + 'lensing_verbose': 1, + 'output_verbose': 1} + self.scenario = {} + + def tearDown(self): + self.cosmo.struct_cleanup() + self.cosmo.empty() + self.cosmo_newt.struct_cleanup() + self.cosmo_newt.empty() + del self.scenario + + def poormansname(self, somedict): + string = "_".join( + [k+'='+str(v) + for k, v in list(somedict.items())]) + string = string.replace('/', '%') + string = string.replace(',', '') + string = string.replace(' ', '') + return string + + @parameterized.expand(TUPLE_ARRAY) + def test_0wrapper_implementation(self, inputdict): + """Create a few instances based on different cosmologies""" + self.scenario.update(inputdict) + + self.name = self.poormansname(inputdict) + + sys.stderr.write('\n\n---------------------------------\n') + sys.stderr.write('| Test case %s |\n' % self.name) + sys.stderr.write('---------------------------------\n') + for key, value in list(self.scenario.items()): + sys.stderr.write("%s = %s\n" % (key, value)) + sys.stdout.write("%s = %s\n" % (key, value)) + sys.stderr.write("\n") + + setting = self.cosmo.set( + dict(list(self.verbose.items())+list(self.scenario.items()))) + self.assertTrue(setting, "Class failed to initialize with input dict") + + cl_dict = { + 'tCl': ['tt'], + 'lCl': ['pp'], + 'pCl': ['ee', 'bb']} + density_cl_list = ['nCl', 'sCl'] + + # 'lensing' is always set to yes. Therefore, trying to compute 'tCl' or + # 'pCl' will fail except if we also ask for 'lCl'. The flag + # 'should_fail' stores this status. + sys.stderr.write('Should') + should_fail = self.test_incompatible_input() + if should_fail: + sys.stderr.write(' fail...\n') + else: + sys.stderr.write(' not fail...\n') + + if not should_fail: + self.cosmo.compute() + else: + self.assertRaises(CosmoSevereError, self.cosmo.compute) + return + + self.assertTrue( + self.cosmo.state, + "Class failed to go through all __init__ methods") + if self.cosmo.state: + print('--> Class is ready') + # Depending + if 'output' in list(self.scenario.keys()): + # Positive tests of raw cls + output = self.scenario['output'] + for elem in output.split(): + if elem in list(cl_dict.keys()): + for cl_type in cl_dict[elem]: + sys.stderr.write( + '--> testing raw_cl for %s\n' % cl_type) + cl = self.cosmo.raw_cl(100) + self.assertIsNotNone(cl, "raw_cl returned nothing") + self.assertEqual( + np.shape(cl[cl_type])[0], 101, + "raw_cl returned wrong size") + # TODO do the same for lensed if 'lCl' is there, and for + # density cl + if elem == 'mPk': + sys.stderr.write('--> testing pk function\n') + pk = self.cosmo.pk(0.1, 0) + self.assertIsNotNone(pk, "pk returned nothing") + # Negative tests of output functions + if not any([elem in list(cl_dict.keys()) for elem in output.split()]): + sys.stderr.write('--> testing absence of any Cl\n') + self.assertRaises(CosmoSevereError, self.cosmo.raw_cl, 100) + if 'mPk' not in output.split(): + sys.stderr.write('--> testing absence of mPk\n') + self.assertRaises(CosmoSevereError, self.cosmo.pk, 0.1, 0) + + if COMPARE_OUTPUT: + # Now, compute with Newtonian gauge, and compare the results + self.cosmo_newt.set( + dict(list(self.verbose.items())+list(self.scenario.items()))) + self.cosmo_newt.set({'gauge': 'newtonian'}) + self.cosmo_newt.compute() + # Check that the computation worked + self.assertTrue( + self.cosmo_newt.state, + "Class failed to go through all __init__ methods in Newtonian gauge") + + self.compare_output(self.cosmo, self.cosmo_newt) + + def test_incompatible_input(self): + + should_fail = False + + # If we have tensor modes, we must have one tensor observable, + # either tCl or pCl. + if has_tensor(self.scenario): + if 'output' not in list(self.scenario.keys()): + should_fail = True + else: + output = self.scenario['output'].split() + if 'tCl' not in output and 'pCl' not in output: + should_fail = True + + # If we have specified lensing, we must have lCl in output, + # otherwise lensing will not be read (which is an error). + if 'lensing' in list(self.scenario.keys()): + if 'output' not in list(self.scenario.keys()): + should_fail = True + else: + output = self.scenario['output'].split() + if 'lCl' not in output: + should_fail = True + elif 'tCl' not in output and 'pCl' not in output: + should_fail = True + + # If we have specified a tensor method, we must have tensors. + if 'tensor method' in list(self.scenario.keys()): + if not has_tensor(self.scenario): + should_fail = True + + # If we have specified non linear, we must have some form of + # perturbations output. + if 'non linear' in list(self.scenario.keys()): + if 'output' not in list(self.scenario.keys()): + should_fail = True + + # If we ask for Cl's of lensing potential, we must have scalar modes. + if 'output' in list(self.scenario.keys()) and 'lCl' in self.scenario['output'].split(): + if 'modes' in list(self.scenario.keys()) and self.scenario['modes'].find('s') == -1: + should_fail = True + + # If we specify initial conditions (for scalar modes), we must have + # perturbations and scalar modes. + if 'ic' in list(self.scenario.keys()): + if 'modes' in list(self.scenario.keys()) and self.scenario['modes'].find('s') == -1: + should_fail = True + if 'output' not in list(self.scenario.keys()): + should_fail = True + + # If we use inflation module, we must have scalar modes, + # tensor modes, no vector modes and we should only have adiabatic IC: + if 'P_k_ini type' in list(self.scenario.keys()) and self.scenario['P_k_ini type'].find('inflation') != -1: + if 'modes' not in list(self.scenario.keys()): + should_fail = True + else: + if self.scenario['modes'].find('s') == -1: + should_fail = True + if self.scenario['modes'].find('v') != -1: + should_fail = True + if self.scenario['modes'].find('t') == -1: + should_fail = True + if 'ic' in list(self.scenario.keys()) and self.scenario['ic'].find('i') != -1: + should_fail = True + + + return should_fail + + def compare_output(self, reference, candidate): + sys.stderr.write('\n\n---------------------------------\n') + sys.stderr.write('| Comparing synch and Newt: |\n') + sys.stderr.write('---------------------------------\n') + + for elem in ['raw_cl', 'lensed_cl', 'density_cl']: + # Try to get the elem, but if they were not computed, a + # CosmoComputeError should be raised. In this case, ignore the + # whole block. + try: + to_test = getattr(candidate, elem)() + except CosmoSevereError: + continue + ref = getattr(reference, elem)() + for key, value in list(ref.items()): + if key != 'ell': + sys.stderr.write('--> testing equality of %s %s\n' % ( + elem, key)) + # For all self spectra, try to compare allclose + if key[0] == key[1]: + # If it is a 'dd' or 'll', it is a dictionary. + if isinstance(value, dict): + for subkey in list(value.keys()): + try: + np.testing.assert_allclose( + value[subkey], to_test[key][subkey], + rtol=1e-03, atol=1e-20) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[subkey][2:], + to_test[key][subkey][2:]) + except TypeError: + self.cl_faulty_plot(elem+"_"+key, + value[subkey][2:], + to_test[key][subkey][2:]) + else: + try: + np.testing.assert_allclose( + value, to_test[key], rtol=1e-03, atol=1e-20) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + except TypeError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + # For cross-spectra, as there can be zero-crossing, we + # instead compare the difference. + else: + # First, we multiply each array by the biggest value + norm = max( + np.abs(value).max(), np.abs(to_test[key]).max()) + value *= norm + to_test[key] *= norm + try: + np.testing.assert_array_almost_equal( + value, to_test[key], decimal=3) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + + if 'output' in list(self.scenario.keys()): + if self.scenario['output'].find('mPk') != -1: + sys.stderr.write('--> testing equality of Pk') + k = np.logspace( + -2, log10(self.scenario['P_k_max_1/Mpc'])) + reference_pk = np.array( + [reference.pk(elem, 0) for elem in k]) + candidate_pk = np.array( + [candidate.pk(elem, 0) for elem in k]) + try: + np.testing.assert_allclose( + reference_pk, candidate_pk, rtol=5e-03, atol=1e-20) + except AssertionError: + self.pk_faulty_plot(k, reference_pk, candidate_pk) + + def cl_faulty_plot(self, cl_type, reference, candidate): + path = os.path.join(self.faulty_figs_path, self.name) + + fig = plt.figure() + ax_lin = plt.subplot(211) + ax_log = plt.subplot(212) + ell = np.arange(max(np.shape(candidate)))+2 + ax_lin.plot(ell, 1-candidate/reference) + ax_log.loglog(ell, abs(1-candidate/reference)) + + ax_lin.set_xlabel('l') + ax_log.set_xlabel('l') + ax_lin.set_ylabel('1-candidate/reference') + ax_log.set_ylabel('abs(1-candidate/reference)') + + ax_lin.set_title(self.name) + ax_log.set_title(self.name) + + ax_lin.legend([cl_type]) + ax_log.legend([cl_type]) + + fig.savefig(path+'_'+cl_type+'.pdf') + + # Store parameters (contained in self.scenario) to text file + parameters = dict(list(self.verbose.items())+list(self.scenario.items())) + with open(path+'.ini', 'w') as param_file: + for key, value in list(parameters.items()): + param_file.write(key+" = "+str(value)+'\n') + + def pk_faulty_plot(self, k, reference, candidate): + path = os.path.join(self.faulty_figs_path, self.name) + + fig = plt.figure() + ax_lin = plt.subplot(211) + ax_log = plt.subplot(212) + ax_lin.plot(k, 1-candidate/reference) + ax_log.loglog(k, abs(1-candidate/reference)) + + ax_lin.set_xlabel('k') + ax_log.set_xlabel('k') + ax_lin.set_ylabel('1-candidate/reference') + ax_log.set_ylabel('abs(1-candidate/reference)') + + ax_lin.set_title(self.name) + ax_log.set_title(self.name) + + ax_lin.legend('$P_k$') + ax_log.legend('$P_k$') + + fig.savefig(path+'_'+'pk'+'.pdf') + + # Store parameters (contained in self.scenario) to text file + parameters = dict(list(self.verbose.items())+list(self.scenario.items())) + with open(path+'.ini', 'w') as param_file: + for key, value in list(parameters.items()): + param_file.write(key+" = "+str(value)+'\n') + + +def has_tensor(input_dict): + if 'modes' in list(input_dict.keys()): + if input_dict['modes'].find('t') != -1: + return True + else: + return False + return False + +if __name__ == '__main__': + toto = TestClass() + unittest.main() diff --git a/class/scripts/cl_ST.py b/class/scripts/cl_ST.py new file mode 100644 index 00000000..4011b038 --- /dev/null +++ b/class/scripts/cl_ST.py @@ -0,0 +1,159 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,pCl,lCl', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246} + # other output and precision parameters + #'l_max_scalars':3000} +############### +# +# call CLASS +# +############### +# +# scalars only +# +M = Class() +M.set(common_settings) +M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000}) +M.compute() +cls = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +# tensors only +# +M = Class() +M.set(common_settings) +l_max_tensors = 600 +M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors}) +# for l_max=600 we can keep default precision +# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre +#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000}) +#M.set({ +#'recfast_Nz0':100000, +#'tol_thermo_integration':1.e-5, +#'recfast_x_He0_trigger_delta':0.01, +#'recfast_x_H0_trigger_delta':0.01, +#'evolver':0, +#'k_min_tau0':0.002, +#'k_max_tau0_over_l_max':3., +#'k_step_sub':0.015, +#'k_step_super':0.0001, +#'k_step_super_reduction':0.1, +#'start_small_k_at_tau_c_over_tau_h':0.0004, +#'start_large_k_at_tau_h_over_tau_k':0.05, +#'tight_coupling_trigger_tau_c_over_tau_h':0.005, +#'tight_coupling_trigger_tau_c_over_tau_k':0.008, +#'start_sources_at_tau_c_over_tau_h':0.006, +#'l_max_g':50, +#'l_max_pol_g':25, +#'l_max_ur':50, +#'tol_perturb_integration':1.e-6, +#'perturb_sampling_stepsize':0.01, +#'radiation_streaming_approximation':2, +#'radiation_streaming_trigger_tau_over_tau_k':240., +#'radiation_streaming_trigger_tau_c_over_tau':100., +#'ur_fluid_approximation':2, +#'ur_fluid_trigger_tau_over_tau_k':50., +#'l_logstep':1.026, +#'l_linstep':25, +#'hyper_sampling_flat':12., +#'hyper_nu_sampling_step':10., +#'hyper_phi_min_abs':1.e-10, +#'hyper_x_tol':1.e-4, +#'hyper_flat_approximation_nu':1.e6, +#'q_linstep':0.20, +#'q_logstep_spline':20., +#'q_logstep_trapzd':0.5, +#'q_numstep_transition':250, +#'transfer_neglect_delta_k_T_t2':100., +#'transfer_neglect_delta_k_T_e':100., +#'transfer_neglect_delta_k_T_b':100., +#'neglect_CMB_sources_below_visibility':1.e-30, +#'transfer_neglect_late_source':3000. +#}) +M.compute() +clt = M.raw_cl(l_max_tensors) +M.struct_cleanup() +M.empty() +# +# scalars + tensors (only in this case we can get the correct lensed ClBB) +# +M = Class() +M.set(common_settings) +M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors}) +M.compute() +cl_tot = M.raw_cl(3000) +cl_lensed = M.lensed_cl(3000) +M.struct_cleanup() +M.empty() +# +################# +# +# start plotting +# +################# +# +plt.xlim([2,3000]) +plt.ylim([1.e-8,10]) +plt.xlabel(r"$\ell$") +plt.ylabel(r"$\ell (\ell+1) C_l^{XY} / 2 \pi \,\,\, [\times 10^{10}]$") +plt.title(r"$r=0.1$") +plt.grid() +# +ell = cl_tot['ell'] +ellt = clt['ell'] +factor = 1.e10*ell*(ell+1.)/2./math.pi +factort = 1.e10*ellt*(ellt+1.)/2./math.pi +# +plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\mathrm{TT(s)}$') +plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\mathrm{TT(t)}$') +plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\mathrm{EE(s)}$') +plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\mathrm{EE(t)}$') +plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\mathrm{BB(t)}$') +plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\mathrm{BB(lensing)}$') +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) + + +# In[ ]: + +plt.savefig('cl_ST.pdf',bbox_inches='tight') diff --git a/class/scripts/cltt_terms.py b/class/scripts/cltt_terms.py new file mode 100644 index 00000000..a5b8891a --- /dev/null +++ b/class/scripts/cltt_terms.py @@ -0,0 +1,111 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,pCl,lCl', + 'lensing':'yes', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'l_max_scalars':5000} +############### +# +# call CLASS +# +M = Class() +M.set(common_settings) +M.compute() +cl_tot = M.raw_cl(3000) +cl_lensed = M.lensed_cl(3000) +M.struct_cleanup() # clean output +M.empty() # clean input +# +M.set(common_settings) # new input +M.set({'temperature contributions':'tsw'}) +M.compute() +cl_tsw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'eisw'}) +M.compute() +cl_eisw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'lisw'}) +M.compute() +cl_lisw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'dop'}) +M.compute() +cl_dop = M.raw_cl(3000) +# +################# +# +# start plotting +# +################# +# +plt.xlim([2,3000]) +plt.xlabel(r"$\ell$") +plt.ylabel(r"$\ell (\ell+1) C_l^{TT} / 2 \pi \,\,\, [\times 10^{10}]$") +plt.grid() +# +ell = cl_tot['ell'] +factor = 1.e10*ell*(ell+1.)/2./math.pi +plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\mathrm{T+SW}$') +plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\mathrm{early-ISW}$') +plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\mathrm{late-ISW}$') +plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\mathrm{Doppler}$') +plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\mathrm{total}$') +plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\mathrm{lensed}$') +# +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) + + +# In[ ]: + +plt.savefig('cltt_terms.pdf',bbox_inches='tight') diff --git a/class/scripts/distances.py b/class/scripts/distances.py new file mode 100644 index 00000000..34fe697d --- /dev/null +++ b/class/scripts/distances.py @@ -0,0 +1,81 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class + + +# In[ ]: + +font = {'size' : 20, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' + + +# In[ ]: + +#Lambda CDM +LCDM = Class() +LCDM.set({'Omega_cdm':0.25,'Omega_b':0.05}) +LCDM.compute() + + +# In[ ]: + +#Einstein-de Sitter +CDM = Class() +CDM.set({'Omega_cdm':0.95,'Omega_b':0.05}) +CDM.compute() + +# Just to cross-check that Omega_Lambda is negligible +# (but not exactly zero because we neglected radiation) +derived = CDM.get_current_derived_parameters(['Omega0_lambda']) +print derived +print "Omega_Lambda =",derived['Omega0_lambda'] + + +# In[ ]: + +#Get background quantities and recover their names: +baLCDM = LCDM.get_background() +baCDM = CDM.get_background() +baCDM.viewkeys() + + +# In[ ]: + +#Get H_0 in order to plot the distances in this unit +fLCDM = LCDM.Hubble(0) +fCDM = CDM.Hubble(0) + + +# In[ ]: + +namelist = ['lum. dist.','comov. dist.','ang.diam.dist.'] +colours = ['b','g','r'] +for name in namelist: + idx = namelist.index(name) + plt.loglog(baLCDM['z'],fLCDM*baLCDM[name],colours[idx]+'-') +plt.legend(namelist,loc='upper left') +for name in namelist: + idx = namelist.index(name) + plt.loglog(baCDM['z'],fCDM*baCDM[name],colours[idx]+'--') +plt.xlim([0.07, 10]) +plt.ylim([0.08, 20]) + +plt.xlabel(r"$z$") +plt.ylabel(r"$\mathrm{Distance}\times H_0$") +plt.tight_layout() + + +# In[ ]: + +plt.savefig('distances.pdf') diff --git a/class/scripts/many_times.py b/class/scripts/many_times.py new file mode 100644 index 00000000..cee16705 --- /dev/null +++ b/class/scripts/many_times.py @@ -0,0 +1,265 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# User settings controlling the figure aspect +# +z_max_pk = 46000 # highest redshift involved +k_per_decade = 400 # number of k values, controls final resolution +k_min_tau0 = 40. # this value controls the minimum k value in the figure (it is k_min * tau0) +P_k_max_inv_Mpc =1.0 # this value is directly the maximum k value in the figure in Mpc +tau_num_early = 2000 # number of conformal time values before recombination, controls final resolution +tau_num_late = 200 # number of conformal time values after recombination, controls final resolution +tau_ini = 10. # first value of conformal time in Mpc +tau_label_Hubble = 20. # value of time at which we want to place the label on Hubble crossing +tau_label_ks = 40. # value of time at which we want to place the label on sound horizon crossing +tau_label_kd = 230. # value of time at which we want to place the label on damping scale crossing +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# which output? transfer functions only + 'output':'mTk', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'z_max_pk':z_max_pk, + 'recfast_z_initial':z_max_pk, + #'k_step_sub':'0.01', + 'k_per_decade_for_pk':k_per_decade, + 'k_per_decade_for_bao':k_per_decade, + 'k_min_tau0':k_min_tau0, # this value controls the minimum k value in the figure + 'perturb_sampling_stepsize':'0.05', + 'P_k_max_1/Mpc':P_k_max_inv_Mpc, + 'compute damping scale':'yes', # needed to output and plot Silk damping scale + 'gauge':'newtonian'} + +############### +# +# call CLASS +# +############### +M = Class() +M.set(common_settings) +M.compute() +# +# define conformal time sampling array +# +times = M.get_current_derived_parameters(['tau_rec','conformal_age']) +tau_rec=times['tau_rec'] +tau_0 = times['conformal_age'] +tau1 = np.logspace(math.log10(tau_ini),math.log10(tau_rec),tau_num_early) +tau2 = np.logspace(math.log10(tau_rec),math.log10(tau_0),tau_num_late)[1:] +tau2[-1] *= 0.999 # this tiny shift avoids interpolation errors +tau = np.concatenate((tau1,tau2)) +tau_num = len(tau) +# +# use table of background and thermodynamics quantitites to define some functions +# returning some characteristic scales +# (of Hubble crossing, sound horizon crossing, etc.) at different time +# +background = M.get_background() # load background table +#print background.viewkeys() +thermodynamics = M.get_thermodynamics() # load thermodynamics table +#print thermodynamics.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read conformal times in background table +background_z = background['z'] # read redshift +background_aH = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read 2pi * aH in [h/Mpc] +background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read 2pi/(comoving sound horizon) in [h/Mpc] +background_rho_m_over_r = (background['(.)rho_b']+background['(.)rho_cdm']) /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality) +background_rho_l_over_m = background['(.)rho_lambda'] /(background['(.)rho_b']+background['(.)rho_cdm']) # read rho_m / rho_lambda (to find time of equality) +thermodynamics_tau = thermodynamics['conf. time [Mpc]'] # read confromal times in thermodynamics table +thermodynamics_kd = 2.*math.pi/thermodynamics['r_d']/M.h() # read 2pi(comoving diffusion scale) in [h/Mpc] +# +# define a bunch of interpolation functions based on previous quantities +# +background_z_at_tau = interp1d(background_tau,background_z) +background_aH_at_tau = interp1d(background_tau,background_aH) +background_ks_at_tau = interp1d(background_tau,background_ks) +background_tau_at_mr = interp1d(background_rho_m_over_r,background_tau) +background_tau_at_lm = interp1d(background_rho_l_over_m,background_tau) +thermodynamics_kd_at_tau = interp1d(thermodynamics_tau, thermodynamics_kd) +# +# infer arrays of characteristic quantitites calculated at values of conformal time in tau array +# +aH = background_aH_at_tau(tau) +ks = background_ks_at_tau(tau) +kd = thermodynamics_kd_at_tau(tau) +# +# infer times of R/M and M/Lambda equalities +# +tau_eq = background_tau_at_mr(1.) +tau_lambda = background_tau_at_lm(1.) +# +# check and inform user whether intiial arbitrary choice of z_max_pk was OK +max_z_needed = background_z_at_tau(tau[0]) +if max_z_needed > z_max_pk: + print 'you must increase the value of z_max_pk to at least ',max_z_needed + () + 1 # this strange line is just a trick to stop the script execution there +else: + print 'in a next run with the same values of tau, you may decrease z_max_pk from ',z_max_pk,' to ',max_z_needed +# +# get transfer functions at each time and build arrays Theta0(tau,k) and phi(tau,k) +# +for i in range(tau_num): + one_time = M.get_transfer(background_z_at_tau(tau[i])) # transfer functions at each time tau + if i ==0: # if this is the first time in the loop: create the arrays (k, Theta0, phi) + k = one_time['k (h/Mpc)'] + k_num = len(k) + Theta0 = np.zeros((tau_num,k_num)) + phi = np.zeros((tau_num,k_num)) + Theta0[i,:] = 0.25*one_time['d_g'][:] + phi[i,:] = one_time['phi'][:] +# +# find the global extra of Theta0(tau,k) and phi(tau,k), used to define color code later +# +Theta_amp = max(Theta0.max(),-Theta0.min()) +phi_amp = max(phi.max(),-phi.min()) +# +# reshaping of (k,tau) necessary to call the function 'pcolormesh' +# +K,T = np.meshgrid(k,tau) +# +# inform user of the size of the grids (related to the figure resolution) +# +print 'grid size:',len(k),len(tau),Theta0.shape +# +################# +# +# start plotting +# +################# +# +fig = plt.figure(figsize=(18,8)) +# +# plot Theta0(k,tau) +# +ax_Theta = fig.add_subplot(121) +print '> Plotting Theta_0' +fig_Theta = ax_Theta.pcolormesh(K,T,Theta0,cmap='coolwarm',vmin=-Theta_amp, vmax=Theta_amp) #,shading='gouraud') +print '> Done' +# +# plot lines (characteristic times and scales) +# +ax_Theta.axhline(y=tau_rec,color='k',linestyle='-') +ax_Theta.axhline(y=tau_eq,color='k',linestyle='-') +ax_Theta.axhline(y=tau_lambda,color='k',linestyle='-') +ax_Theta.plot(aH,tau,'r-',linewidth=2) +ax_Theta.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2) +ax_Theta.plot(kd,tau,'b-',linewidth=2) +# +# dealing with labels +# +ax_Theta.set_title(r'$\Theta_0$') +ax_Theta.text(1.5*k[0],0.9*tau_rec,r'$\mathrm{rec.}$') +ax_Theta.text(1.5*k[0],0.9*tau_eq,r'$\mathrm{R/M} \,\, \mathrm{eq.}$') +ax_Theta.text(1.5*k[0],0.9*tau_lambda,r'$\mathrm{M/L} \,\, \mathrm{eq.}$') +ax_Theta.annotate(r'$\mathrm{Hubble} \,\, \mathrm{cross.}$', + xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble), + xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Theta.annotate(r'$\mathrm{sound} \,\, \mathrm{horizon} \,\, \mathrm{cross.}$', + xy=(background_ks_at_tau(tau_label_ks),tau_label_ks), + xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Theta.annotate(r'$\mathrm{damping} \,\, \mathrm{scale} \,\, \mathrm{cross.}$', + xy=(thermodynamics_kd_at_tau(tau_label_kd),tau_label_kd), + xytext=(0.2*thermodynamics_kd_at_tau(tau_label_kd),2.0*tau_label_kd), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# dealing with axes +# +ax_Theta.set_xlim(k[0],k[-1]) +ax_Theta.set_xscale('log') +ax_Theta.set_yscale('log') +ax_Theta.set_xlabel(r'$k \,\,\, \mathrm{[h/Mpc]}$') +ax_Theta.set_ylabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +ax_Theta.invert_yaxis() +# +# color legend +# +fig.colorbar(fig_Theta) +# +# plot phi(k,tau) +# +ax_phi = fig.add_subplot(122) +ax_phi.set_xlim(k[0],k[-1]) +#ax_phi.pcolor(K,T,phi,cmap='coolwarm') +print '> Plotting phi' +fig_phi = ax_phi.pcolormesh(K,T,phi,cmap='coolwarm',vmin=-0., vmax=phi_amp) +print '> Done' +# +# plot lines (characteristic times and scales) +# +ax_phi.axhline(y=tau_rec,color='k',linestyle='-') +ax_phi.axhline(y=tau_eq,color='k',linestyle='-') +ax_phi.axhline(y=tau_lambda,color='k',linestyle='-') +ax_phi.plot(aH,tau,'r-',linewidth=2) +ax_phi.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2) +# +# dealing with labels +# +ax_phi.set_title(r'$\phi$') +ax_phi.text(1.5*k[0],0.9*tau_rec,r'$\mathrm{rec.}$') +ax_phi.text(1.5*k[0],0.9*tau_eq,r'$\mathrm{R/M} \,\, \mathrm{eq.}$') +ax_phi.text(1.5*k[0],0.9*tau_lambda,r'$\mathrm{M/L} \,\, \mathrm{eq.}$') +ax_phi.annotate(r'$\mathrm{Hubble} \,\, \mathrm{cross.}$', + xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble), + xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_phi.annotate(r'$\mathrm{sound} \,\, \mathrm{horizon} \,\, \mathrm{cross.}$', + xy=(background_ks_at_tau(tau_label_ks),tau_label_ks), + xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# dealing with axes +# +ax_phi.set_xscale('log') +ax_phi.set_yscale('log') +ax_phi.set_xlabel(r'$k \,\,\, \mathrm{[h/Mpc]}$') +ax_phi.set_ylabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +ax_phi.invert_yaxis() +# +# color legend +# +fig.colorbar(fig_phi) +# +# produce the PDF +# +#plt.show() +plt.savefig('many_times.png',dpi=300) diff --git a/class/scripts/neutrinohierarchy.py b/class/scripts/neutrinohierarchy.py new file mode 100644 index 00000000..e23e06de --- /dev/null +++ b/class/scripts/neutrinohierarchy.py @@ -0,0 +1,118 @@ + +# coding: utf-8 + +# In[1]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve + + +# In[2]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' + + +# In[3]: + +# a function returning the three masses given the Delta m^2, the total mass, and the hierarchy (e.g. 'IN' or 'IH') +# taken from a piece of MontePython written by Thejs Brinckmann +def get_masses(delta_m_squared_atm, delta_m_squared_sol, sum_masses, hierarchy): + # any string containing letter 'n' will be considered as refering to normal hierarchy + if 'n' in hierarchy.lower(): + # Normal hierarchy massive neutrinos. Calculates the individual + # neutrino masses from M_tot_NH and deletes M_tot_NH + #delta_m_squared_atm=2.45e-3 + #delta_m_squared_sol=7.50e-5 + m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5 + m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True) + m1 = m1[0] + m2 = (delta_m_squared_sol + m1**2.)**0.5 + m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5 + return m1,m2,m3 + else: + # Inverted hierarchy massive neutrinos. Calculates the individual + # neutrino masses from M_tot_IH and deletes M_tot_IH + #delta_m_squared_atm=-2.45e-3 + #delta_m_squared_sol=7.50e-5 + delta_m_squared_atm = -delta_m_squared_atm + m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5 + m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True) + m1 = m1[0] + m2 = (delta_m_squared_sol + m1**2.)**0.5 + m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5 + return m1,m2,m3 + + +# In[4]: + +# test of this function, returning the 3 masses for total mass of 0.1eV +m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'NH') +print 'NH:',m1,m2,m3,m1+m2+m3 +m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'IH') +print 'IH:',m1,m2,m3,m1+m2+m3 + + +# In[5]: + +# The goal of this cell is to compute the ratio of P(k) for NH and IH with the same total mass +commonsettings = {'N_ur':0, + 'N_ncdm':3, + 'output':'mPk', + 'P_k_max_1/Mpc':3.0, + # The next line should be uncommented fgor higher precision (but significantly slower running) + 'ncdm_fluid_approximation':3, + # You may uncomment this line to get more info on the ncdm sector from Class: + 'background_verbose':1 + } + +# array of k values in 1/Mpc +kvec = np.logspace(-4,np.log10(3),100) +# array for storing legend +legarray = [] + +# loop over total mass values +for sum_masses in [0.1, 0.115, 0.13]: + # normal hierarchy + [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'NH') + NH = Class() + NH.set(commonsettings) + NH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)}) + NH.compute() + # inverted hierarchy + [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'IH') + IH = Class() + IH.set(commonsettings) + IH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)}) + IH.compute() + pkNH = [] + pkIH = [] + for k in kvec: + pkNH.append(NH.pk(k,0.)) + pkIH.append(IH.pk(k,0.)) + NH.struct_cleanup() + IH.struct_cleanup() + # extract h value to convert k from 1/Mpc to h/Mpc + h = NH.h() + plt.semilogx(kvec/h,1-np.array(pkNH)/np.array(pkIH)) + legarray.append(r'$\Sigma m_i = '+str(sum_masses)+'$eV') + +plt.axhline(0,color='k') +plt.xlim(kvec[0]/h,kvec[-1]/h) +plt.xlabel(r'$k [h \mathrm{Mpc}^{-1}]$') +plt.ylabel(r'$1-P(k)^\mathrm{NH}/P(k)^\mathrm{IH}$') +plt.legend(legarray) + + +# In[6]: + +plt.savefig('neutrinohierarchy.pdf') diff --git a/class/scripts/one_k.py b/class/scripts/one_k.py new file mode 100644 index 00000000..0306a4cb --- /dev/null +++ b/class/scripts/one_k.py @@ -0,0 +1,173 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# value of k that we want to follow in [1/Mpc] +# +k = 0.5 # 1/Mpc +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# we need to set the output field to something although + # the really releveant outpout here will be set with 'k_output_values' + 'output':'mPk', + # value of k we want to polot in [1/Mpc] + 'k_output_values':k, + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other options and settings + 'compute damping scale':'yes', # needed to output the time of damping scale crossing + 'gauge':'newtonian'} +############## +# +# call CLASS +# +M = Class() +M.set(common_settings) +M.compute() +# +# load perturbations +# +all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values +print all_k['scalar'][0].viewkeys() +# +one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values +# +tau = one_k['tau [Mpc]'] +Theta0 = 0.25*one_k['delta_g'] +phi = one_k['phi'] +psi = one_k['psi'] +theta_b = one_k['theta_b'] +a = one_k['a'] +# compute related quantitites +R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma) +zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi +# +# get Theta0 oscillation amplitude (for vertical scale of plot) +# +Theta0_amp = max(Theta0.max(),-Theta0.min()) +# +# get the time of decoupling +# +quantities = M.get_current_derived_parameters(['tau_rec']) +# print times.viewkeys() +tau_rec = quantities['tau_rec'] +# +# use table of background quantitites to find the time of +# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi) +# +background = M.get_background() # load background table +#print background.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read confromal times in background table +background_z = background['z'] # read redshift +background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H +background_k_rs = k * background['comov.snd.hrz.'] # read k * rs +background_rho_m_over_r = (background['(.)rho_b']+background['(.)rho_cdm']) /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality) +# +# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality) +# +tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau) +tau_at_k_rs = interp1d(background_k_rs,background_tau) +tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau) +# +# finally get these times +# +tau_Hubble = tau_at_k_over_aH(2.*math.pi) +tau_s = tau_at_k_rs(2.*math.pi) +tau_eq = tau_at_rho_m_over_r(1.) +# +################# +# +# start plotting +# +################# +# +plt.xlim([tau[0],tau_rec*1.3]) +plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp]) +plt.xlabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +plt.title(r'$\mathrm{Transfer} (\tau,k) \,\,\, \mathrm{for} \,\,\, k=%g \,\,\, [1/\mathrm{Mpc}]$'%k) +plt.grid() +# +plt.axvline(x=tau_Hubble,color='r') +plt.axvline(x=tau_s,color='y') +plt.axvline(x=tau_eq,color='k') +plt.axvline(x=tau_rec,color='k') +# +plt.annotate(r'Hubble cross.', + xy=(tau_Hubble,1.08*Theta0_amp), + xytext=(0.15*tau_Hubble,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'sound hor. cross.', + xy=(tau_s,-1.0*Theta0_amp), + xytext=(1.5*tau_s,-1.2*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'eq.', + xy=(tau_eq,1.08*Theta0_amp), + xytext=(0.45*tau_eq,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'rec.', + xy=(tau_rec,1.08*Theta0_amp), + xytext=(0.45*tau_rec,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# Possibility to add functions one by one, saving between each (for slides) +# +plt.semilogx(tau,psi,'y-',label=r'$\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_1.pdf',bbox_inches='tight') +# +plt.semilogx(tau,phi,'r-',label=r'$\phi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_2.pdf',bbox_inches='tight') +# +plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_3.pdf',bbox_inches='tight') +# +plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\Theta_0$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_4.pdf',bbox_inches='tight') +# +plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\Theta_0+\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_5.pdf',bbox_inches='tight') +# +plt.semilogx(tau,theta_b,'g-',label=r'$\theta_b$') +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +plt.savefig('one_k.pdf',bbox_inches='tight') +# diff --git a/class/scripts/one_time.py b/class/scripts/one_time.py new file mode 100644 index 00000000..4bbe817e --- /dev/null +++ b/class/scripts/one_time.py @@ -0,0 +1,246 @@ + +# coding: utf-8 + +# In[1]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[2]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[3]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,mTk,vTk', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'l_max_scalars':5000, + 'P_k_max_1/Mpc':10.0, + 'gauge':'newtonian'} +############### +# +# call CLASS a first time just to compute z_rec (will compute transfer functions at default: z=0) +# +M = Class() +M.set(common_settings) +M.compute() +derived = M.get_current_derived_parameters(['z_rec','tau_rec','conformal_age']) +#print derived.viewkeys() +z_rec = derived['z_rec'] +z_rec = int(1000.*z_rec)/1000. # round down at 4 digits after coma +M.struct_cleanup() # clean output +M.empty() # clean input +# +# call CLASS again (will compute transfer functions at inout value z_rec) +# +M = Class() +M.set(common_settings) +M.set({'z_pk':z_rec}) +M.compute() +# +# load transfer functions at recombination +# +one_time = M.get_transfer(z_rec) +print one_time.viewkeys() +k = one_time['k (h/Mpc)'] +Theta0 = 0.25*one_time['d_g'] +phi = one_time['phi'] +psi = one_time['psi'] +theta_b = one_time['t_b'] +# compute related quantitites +R = 3./4.*M.Omega_b()/M.Omega_g()/(1+z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec +zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi +# +# get Theta0 oscillation amplitude (for vertical scale of plot) +# +Theta0_amp = max(Theta0.max(),-Theta0.min()) +# +# use table of background quantitites to find the wavenumbers corresponding to +# Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs) +# +background = M.get_background() # load background table +#print background.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read confromal times in background table +background_z = background['z'] # read redshift +background_kh = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read kh = 2pi aH = 2pi H/(1+z) converted to [h/Mpc] +background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read ks = 2pi/rs converted to [h/Mpc] +# +# define interpolation functions; we want the value of tau when the argument is equal to 2pi +# +kh_at_tau = interp1d(background_tau,background_kh) +ks_at_tau = interp1d(background_tau,background_ks) +# +# finally get these scales +# +tau_rec = derived['tau_rec'] +kh = kh_at_tau(tau_rec) +ks = ks_at_tau(tau_rec) +# +################# +# +# start plotting +# +################# +# +fig, (ax_Tk, ax_Tk2, ax_Cl) = plt.subplots(3,sharex=True,figsize=(8,12)) +fig.subplots_adjust(hspace=0) +################## +# +# first figure with transfer functions +# +################## +ax_Tk.set_xlim([3.e-4,0.5]) +ax_Tk.set_ylim([-1.1*Theta0_amp,1.1*Theta0_amp]) +ax_Tk.tick_params(axis='x',which='both',bottom='off',top='on',labelbottom='off',labeltop='on') +ax_Tk.set_xlabel(r'$\mathrm{k} \,\,\, \mathrm{[h/Mpc]}$') +ax_Tk.set_ylabel(r'$\mathrm{Transfer}(\tau_\mathrm{dec},k)$') +ax_Tk.xaxis.set_label_position('top') +ax_Tk.grid() +# +ax_Tk.axvline(x=kh,color='r') +ax_Tk.axvline(x=ks,color='y') +# +ax_Tk.annotate(r'Hubble cross.', + xy=(kh,0.8*Theta0_amp), + xytext=(0.15*kh,0.9*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Tk.annotate(r'sound hor. cross.', + xy=(ks,0.8*Theta0_amp), + xytext=(1.3*ks,0.9*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +ax_Tk.semilogx(k,psi,'y-',label=r'$\psi$') +ax_Tk.semilogx(k,phi,'r-',label=r'$\phi$') +ax_Tk.semilogx(k,zero_point,'k:',label=r'$-(1+R)\psi$') +ax_Tk.semilogx(k,Theta0,'b-',label=r'$\Theta_0$') +ax_Tk.semilogx(k,(Theta0+psi),'c',label=r'$\Theta_0+\psi$') +ax_Tk.semilogx(k,theta_b,'g-',label=r'$\theta_b$') +# +ax_Tk.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +####################### +# +# second figure with transfer functions squared +# +####################### +ax_Tk2.set_xlim([3.e-4,0.5]) +ax_Tk2.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off',labeltop='off') +ax_Tk2.set_ylabel(r'$\mathrm{Transfer}(\tau_\mathrm{dec},k)^2$') +ax_Tk2.grid() +# +ax_Tk2.semilogx(k,(Theta0+psi)**2,'c',label=r'$(\Theta_0+\psi)^2$') +# +ax_Tk2.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +######################## +# +# third figure with all contributions to Cls +# +# For that we will need to call CLASS again for each contribution (TSW, earlyISW, lateISW, Doppler, total) +# Note that there is another contribution from polarisation: we don't plot it individually because it is +# too small to be seen, however it is included by default in the total. +# +# After each step we will save the figure (to get intermediate figures for the slides) +# +######################### +# presentation settings +ax_Cl.set_xlim([3.e-4,0.5]) +ax_Cl.set_ylim([0.,8.]) +ax_Cl.set_xlabel(r'$\ell/(\tau_0-\tau_{rec}) \,\,\, \mathrm{[h/Mpc]}$') +ax_Cl.set_ylabel(r'$\ell (\ell+1) C_l^{TT} / 2 \pi \,\,\, [\times 10^{10}]$') +ax_Cl.tick_params(axis='x',which='both',bottom='on',top='off',labelbottom='on',labeltop='off') +ax_Cl.grid() +# +# the x-axis will show l/(tau_0-tau_rec), so we need (tau_0-tau_rec) in units of [Mpc/h] +# +tau_0_minus_tau_rec_hMpc = (derived['conformal_age']-derived['tau_rec'])*M.h() +# +# save the total Cl's (we will plot them in the last step) +# +cl_tot = M.raw_cl(5000) +# +# call CLASS with TSW, then plot and save +# +M.struct_cleanup() # clean output +M.empty() # clean input +M.set(common_settings) # new input +M.set({'temperature contributions':'tsw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'c-',label=r'$\mathrm{T+SW}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_1.pdf',bbox_inches='tight') +# +# call CLASS with early ISW, plot; call CLASS with late ISW, plot; then save +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'eisw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'r-',label=r'$\mathrm{early} \,\, \mathrm{ISW}$') +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'lisw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'y-',label=r'$\mathrm{late} \,\, \mathrm{ISW}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_2.pdf',bbox_inches='tight') +# +# call CLASS with Doppler, then plot and save +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'dop'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'g-',label=r'$\mathrm{Doppler}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_3.pdf',bbox_inches='tight') +# +# plot the total Cls that had been stored, and save +# +ax_Cl.semilogx(cl_tot['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl_tot['ell']*(cl_tot['ell']+1.)*cl_tot['tt']/2./math.pi,'k-',label=r'$\mathrm{Total}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_tot.pdf',bbox_inches='tight') diff --git a/class/scripts/thermo.py b/class/scripts/thermo.py new file mode 100644 index 00000000..3adb2f27 --- /dev/null +++ b/class/scripts/thermo.py @@ -0,0 +1,83 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +common_settings = {'output' : 'tCl', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + 'thermodynamics_verbose':1 + } +############## +# +# call CLASS +# +############### +M = Class() +M.set(common_settings) +M.compute() +derived = M.get_current_derived_parameters(['tau_rec','conformal_age']) +thermo = M.get_thermodynamics() +print thermo.viewkeys() + + +# In[ ]: + +tau = thermo['conf. time [Mpc]'] +g = thermo['g [Mpc^-1]'] +# to make the reionisation peak visible, rescale g by 100 for late times +g[:500] *= 100 +################# +# +# start plotting +# +################# +# +plt.xlim([1.e2,derived['conformal_age']]) +plt.xlabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +plt.ylabel(r'$\mathrm{visibility} \,\,\, g \,\,\, [\mathrm{Mpc}^{-1}]$') +plt.axvline(x=derived['tau_rec'],color='k') +# The conformal time at reionisation could be extracted from the code. +# But we know it because it is part of the standard output +# when thermodynamics_verbose=1 +plt.axvline(x=4255.316282,color='k') +# +# Print functions one by one, saving between each (for slides) +# +plt.semilogx(tau,g,'r',label=r'$\psi$') + + +# In[ ]: + +plt.savefig('thermo.pdf',bbox_inches='tight') diff --git a/class/scripts/varying_neff.py b/class/scripts/varying_neff.py new file mode 100644 index 00000000..2bf2ac40 --- /dev/null +++ b/class/scripts/varying_neff.py @@ -0,0 +1,203 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebool +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +import math + + +# In[ ]: + +############################################ +# +# Varying parameter (others fixed to default) +# +var_name = 'N_ur' +var_array = np.linspace(3.046,5.046,5) +var_num = len(var_array) +var_legend = r'$N_\mathrm{eff}$' +var_figname = 'neff' +# +# Constraints to be matched +# +# As explained in the "Neutrino cosmology" book, CUP, Lesgourgues et al., section 5.3, the goal is to vary +# - omega_cdm by a factor alpha = (1 + coeff*Neff)/(1 + coeff*3.046) +# - h by a factor sqrt*(alpha) +# in order to keep a fixed z_equality(R/M) and z_equality(M/Lambda) +# +# coefficient such that omega_r = omega_gamma (1 + coeff*Neff), +# i.e. such that omega_ur = omega_gamma * coeff * Neff: +# coeff = omega_ur/omega_gamma/Neff_standard +coeff = 1.710730e-05/2.472979e-05/3.046 +print "coeff=",coeff +# +############################################# +# +# Fixed settings +# +common_settings = {'output':'tCl,pCl,lCl,mPk', + 'lensing':'yes', + # fixed LambdaCDM parameters + 'omega_b':0.022032, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'P_k_max_1/Mpc':3.0, + 'l_switch_limber':9} +# +############################################## +# +# loop over varying parameter values +# +M = {} +# +for i, N_ur in enumerate(var_array): + # + # rescale omega_cdm and h + # + alpha = (1.+coeff*N_ur)/(1.+coeff*3.046) + omega_cdm = (0.022032 + 0.12038)*alpha - 0.022032 + h = 0.67556*math.sqrt(alpha) + print ' * Compute with %s=%e, %s=%e, %s=%e'%('N_ur',N_ur,'omega_cdm',omega_cdm,'h',h) + # + # call CLASS + # + M[i] = Class() + M[i].set(common_settings) + M[i].set({'N_ur':N_ur}) + M[i].set({'omega_cdm':omega_cdm}) + M[i].set({'h':h}) + M[i].compute() + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 24, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# extract spectra and plot them +# +############################################# +kvec = np.logspace(-4,np.log10(3),1000) # array of kvec in h/Mpc +twopi = 2.*math.pi +# +# Create figures +# +fig_Pk, ax_Pk = plt.subplots() +fig_TT, ax_TT = plt.subplots() +# +# loop over varying parameter values +# +ll = {} +clM = {} +clTT = {} +pkM = {} +legarray = [] + +for i, N_ur in enumerate(var_array): + # + alpha = (1.+0.2271*N_ur)/(1.+0.2271*3.046) + h = 0.67556*math.sqrt(alpha) # this is h + # + # deal with colors and legends + # + if i == 0: + var_color = 'k' + var_alpha = 1. + else: + var_color = plt.cm.Reds(0.8*i/(var_num-1)) + # + # get Cls + # + clM[i] = M[i].lensed_cl(2500) + ll[i] = clM[i]['ell'][2:] + clTT[i] = clM[i]['tt'][2:] + # + # store P(k) for common k values + # + pkM[i] = [] + # The function .pk(k,z) wants k in 1/Mpc so we must convert kvec for each case with the right h + khvec = kvec*h # This is k in 1/Mpc + for kh in khvec: + pkM[i].append(M[i].pk(kh,0.)*h**3) + # + # plot P(k) + # + if i == 0: + ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]), + color=var_color,#alpha=var_alpha, + linestyle='-') + else: + ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]), + color=var_color,#alpha=var_alpha, + linestyle='-', + label=r'$\Delta N_\mathrm{eff}=%g$'%(N_ur-3.046)) + # + # plot C_l^TT + # + if i == 0: + ax_TT.semilogx(ll[i],clTT[i]/clTT[0], + color=var_color,alpha=var_alpha,linestyle='-') + else: + ax_TT.semilogx(ll[i],clTT[i]/clTT[0], + color=var_color,alpha=var_alpha,linestyle='-', + label=r'$\Delta N_\mathrm{eff}=%g$'%(N_ur-3.046)) + +# +# output of P(k) figure +# +ax_Pk.set_xlim([1.e-3,3.]) +ax_Pk.set_ylim([0.98,1.20]) +ax_Pk.set_xlabel(r'$k \,\,\,\, [h^{-1}\mathrm{Mpc}]$') +ax_Pk.set_ylabel(r'$P(k)/P(k)[N_\mathrm{eff}=3.046]$') +ax_Pk.legend(loc='upper left') +fig_Pk.tight_layout() +fig_Pk.savefig('ratio-%s-Pk.pdf' % var_figname) +# +# output of C_l^TT figure +# +ax_TT.set_xlim([2,2500]) +ax_TT.set_ylim([0.850,1.005]) +ax_TT.set_xlabel(r'$\mathrm{Multipole} \,\,\,\, \ell$') +ax_TT.set_ylabel(r'$C_\ell^\mathrm{TT}/C_\ell^\mathrm{TT}(N_\mathrm{eff}=3.046)$') +ax_TT.legend(loc='lower left') +fig_TT.tight_layout() +fig_TT.savefig('ratio-%s-cltt.pdf' % var_figname) +# +# output of C_l^EE figure +# +#ax_EE.set_xlim([2,2500]) +#ax_EE.set_xlabel(r'$\ell$') +#ax_EE.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{EE}$') +#ax_EE.legend(legarray,loc='lower right') +#fig_EE.tight_layout() +#fig_EE.savefig('spectra_%s_clee.pdf' % var_figname) +# +# output of C_l^pp figure +# +#ax_PP.set_xlim([10,2500]) +#ax_PP.set_xlabel(r'$\ell$') +#ax_PP.set_ylabel(r'$[\ell^2(\ell+1)^2/2\pi] C_\ell^\mathrm{\phi \phi}$') +#ax_PP.legend(legarray) +#fig_PP.tight_layout() +#fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname) diff --git a/class/scripts/varying_pann.py b/class/scripts/varying_pann.py new file mode 100644 index 00000000..4d76c3b1 --- /dev/null +++ b/class/scripts/varying_pann.py @@ -0,0 +1,174 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################ +# +# Varying parameter (others fixed to default) +# +var_name = 'annihilation' +var_array = np.linspace(0,1.e-5,5) +var_num = len(var_array) +var_legend = r'$p_\mathrm{ann}$' +var_figname = 'pann' +# +############################################# +# +# Fixed settings +# +common_settings = {'output':'tCl,pCl,lCl,mPk', + 'lensing':'yes', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'P_k_max_1/Mpc':3.0, + 'l_switch_limber':9} + #'background_verbose':1} +# +# arrays for output +# +kvec = np.logspace(-4,np.log10(3),1000) +legarray = [] +twopi = 2.*math.pi +# +# Create figures +# +fig_Pk, ax_Pk = plt.subplots() +fig_TT, ax_TT = plt.subplots() +fig_EE, ax_EE = plt.subplots() +fig_PP, ax_PP = plt.subplots() +# +# loop over varying parameter values +# +for i,var in enumerate(var_array): + # + print ' * Compute with %s=%e'%(var_name,var) + # + # deal with colors and legends + # + if i == 0: + var_color = 'k' + var_alpha = 1. + legarray.append(r'ref. $\Lambda CDM$') + else: + var_color = 'r' + var_alpha = 1.*i/(var_num-1.) + if i == var_num-1: + legarray.append(var_legend) + # + # call CLASS + # + M = Class() + M.set(common_settings) + M.set({var_name:var}) + M.compute() + # + # get Cls + # + clM = M.lensed_cl(2500) + ll = clM['ell'][2:] + clTT = clM['tt'][2:] + clEE = clM['ee'][2:] + clPP = clM['pp'][2:] + # + # get P(k) for common k values + # + pkM = [] + for k in kvec: + pkM.append(M.pk(k,0.)) + # + # plot P(k) + # + ax_Pk.loglog(kvec,np.array(pkM),color=var_color,alpha=var_alpha,linestyle='-') + # + # plot C_l^TT + # + ax_TT.semilogx(ll,clTT*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # plot Cl EE + # + ax_EE.loglog(ll,clEE*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # plot Cl phiphi + # + ax_PP.loglog(ll,clPP*ll*(ll+1)*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # reset CLASS + # + M.struct_cleanup() + M.empty() +# +# output of P(k) figure +# +ax_Pk.set_xlim([1.e-4,3.]) +ax_Pk.set_xlabel(r'$k \,\,\,\, [h/\mathrm{Mpc}]$') +ax_Pk.set_ylabel(r'$P(k) \,\,\,\, [\mathrm{Mpc}/h]^3$') +ax_Pk.legend(legarray) +fig_Pk.tight_layout() +fig_Pk.savefig('spectra_%s_Pk.pdf' % var_figname) +# +# output of C_l^TT figure +# +ax_TT.set_xlim([2,2500]) +ax_TT.set_xlabel(r'$\ell$') +ax_TT.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{TT}$') +ax_TT.legend(legarray) +fig_TT.tight_layout() +fig_TT.savefig('spectra_%s_cltt.pdf' % var_figname) +# +# output of C_l^EE figure +# +ax_EE.set_xlim([2,2500]) +ax_EE.set_xlabel(r'$\ell$') +ax_EE.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{EE}$') +ax_EE.legend(legarray) +fig_EE.tight_layout() +fig_EE.savefig('spectra_%s_clee.pdf' % var_figname) +# +# output of C_l^pp figure +# +ax_PP.set_xlim([10,2500]) +ax_PP.set_xlabel(r'$\ell$') +ax_PP.set_ylabel(r'$[\ell^2(\ell+1)^2/2\pi] C_\ell^\mathrm{\phi \phi}$') +ax_PP.legend(legarray) +fig_PP.tight_layout() +fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname) + + +# In[ ]: + + + + +# In[ ]: diff --git a/class/scripts/warmup.py b/class/scripts/warmup.py new file mode 100644 index 00000000..aebe22cc --- /dev/null +++ b/class/scripts/warmup.py @@ -0,0 +1,93 @@ + +# coding: utf-8 + +# In[ ]: + +# import classy module +from classy import Class + + +# In[ ]: + +# create instance of the class "Class" +LambdaCDM = Class() +# pass input parameters +LambdaCDM.set({'omega_b':0.022032,'omega_cdm':0.12038,'h':0.67556,'A_s':2.215e-9,'n_s':0.9619,'tau_reio':0.0925}) +LambdaCDM.set({'output':'tCl,pCl,lCl,mPk','lensing':'yes','P_k_max_1/Mpc':3.0}) +# run class +LambdaCDM.compute() + + +# In[ ]: + +# get all C_l output +cls = LambdaCDM.lensed_cl(2500) +# To check the format of cls +cls.viewkeys() + + +# In[ ]: + +ll = cls['ell'][2:] +clTT = cls['tt'][2:] +clEE = cls['ee'][2:] +clPP = cls['pp'][2:] + + +# In[ ]: + +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib.pyplot as plt +from math import pi + + +# In[ ]: + +# plot C_l^TT +plt.figure(1) +plt.xscale('log');plt.yscale('linear');plt.xlim(2,2500) +plt.xlabel(r'$\ell$') +plt.ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{TT}$') +plt.plot(ll,clTT*ll*(ll+1)/2./pi,'r-') + + +# In[ ]: + +plt.savefig('warmup_cltt.pdf') + + +# In[ ]: + +# get P(k) at redhsift z=0 +import numpy as np +kk = np.logspace(-4,np.log10(3),1000) # k in h/Mpc +Pk = [] # P(k) in (Mpc/h)**3 +h = LambdaCDM.h() # get reduced Hubble for conversions to 1/Mpc +for k in kk: + Pk.append(LambdaCDM.pk(k*h,0.)*h**3) # function .pk(k,z) + + +# In[ ]: + +# plot P(k) +plt.figure(2) +plt.xscale('log');plt.yscale('log');plt.xlim(kk[0],kk[-1]) +plt.xlabel(r'$k \,\,\,\, [h/\mathrm{Mpc}]$') +plt.ylabel(r'$P(k) \,\,\,\, [\mathrm{Mpc}/h]^3$') +plt.plot(kk,Pk,'b-') + + +# In[ ]: + +plt.savefig('warmup_pk.pdf') + + +# In[ ]: + +# optional: clear content of LambdaCDM (to reuse it for another model) +LambdaCDM.struct_cleanup() +# optional: reset parameters to default +LambdaCDM.empty() + +# In[ ]: diff --git a/class/source/background.c b/class/source/background.c old mode 100644 new mode 100755 index 787c2742..b13c0646 --- a/class/source/background.c +++ b/class/source/background.c @@ -254,6 +254,8 @@ int background_functions( /* total density */ double rho_tot; + /* critical density */ + double rho_crit; /* total pressure */ double p_tot; /* total relativistic density */ @@ -266,15 +268,24 @@ int background_functions( double rho_ncdm,p_ncdm,pseudo_p_ncdm; /* index for n_ncdm species */ int n_ncdm; + /* fluid's time-dependent equation of state parameter */ + double w_fld, dw_over_da, integral_fld; /* scale factor */ double a; /* scalar field quantities */ double phi, phi_prime; + /* Since we only know a_prime_over_a after we have rho_tot, + it is not possible to simply sum up p_tot_prime directly. + Instead we sum up dp_dloga = p_prime/a_prime_over_a. The formula is + p_prime = a_prime_over_a * dp_dloga = a_prime_over_a * Sum [ (w_prime/a_prime_over_a -3(1+w)w)rho]. + Note: The scalar field contribution must be added in the end, as an exception!*/ + double dp_dloga; /** - initialize local variables */ a = pvecback_B[pba->index_bi_a]; rho_tot = 0.; p_tot = 0.; + dp_dloga = 0.; rho_r=0.; rho_m=0.; a_rel = a / pba->a_today; @@ -292,6 +303,7 @@ int background_functions( pvecback[pba->index_bg_rho_g] = pba->Omega0_g * pow(pba->H0,2) / pow(a_rel,4); rho_tot += pvecback[pba->index_bg_rho_g]; p_tot += (1./3.) * pvecback[pba->index_bg_rho_g]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_g]; rho_r += pvecback[pba->index_bg_rho_g]; /* baryons */ @@ -323,6 +335,7 @@ int background_functions( pvecback[pba->index_bg_rho_dr] = pvecback_B[pba->index_bi_rho_dr]; rho_tot += pvecback[pba->index_bg_rho_dr]; p_tot += (1./3.)*pvecback[pba->index_bg_rho_dr]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_dr]; rho_r += pvecback[pba->index_bg_rho_dr]; } @@ -339,6 +352,7 @@ int background_functions( pvecback[pba->index_bg_p_scf] =(phi_prime*phi_prime/(2*a*a) - V_scf(pba,phi))/3.; // pressure of the scalar field rho_tot += pvecback[pba->index_bg_rho_scf]; p_tot += pvecback[pba->index_bg_p_scf]; + dp_dloga += 0.0; /** <-- This depends on a_prime_over_a, so we cannot add it now! */ //divide relativistic & nonrelativistic (not very meaningful for oscillatory models) rho_r += 3.*pvecback[pba->index_bg_p_scf]; //field pressure contributes radiation rho_m += pvecback[pba->index_bg_rho_scf] - 3.* pvecback[pba->index_bg_p_scf]; //the rest contributes matter @@ -373,6 +387,8 @@ int background_functions( pvecback[pba->index_bg_p_ncdm1+n_ncdm] = p_ncdm; p_tot += p_ncdm; pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm] = pseudo_p_ncdm; + /** See e.g. Eq. A6 in 1811.00904. */ + dp_dloga += (pseudo_p_ncdm - 5*p_ncdm); /* (3 p_ncdm1) is the "relativistic" contribution to rho_ncdm1 */ rho_r += 3.* p_ncdm; @@ -390,13 +406,23 @@ int background_functions( p_tot -= pvecback[pba->index_bg_rho_lambda]; } - /* fluid with w=w0+wa(1-a/a0) and constant cs2 */ + /* fluid with w(a) and constant cs2 */ if (pba->has_fld == _TRUE_) { - pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) - / pow(a_rel,3.*(1.+pba->w0_fld+pba->wa_fld)) - * exp(3.*pba->wa_fld*(a_rel-1.)); + + /* get rho_fld from vector of integrated variables */ + pvecback[pba->index_bg_rho_fld] = pvecback_B[pba->index_bi_rho_fld]; + + /* get w_fld from dedicated function */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da,&integral_fld), pba->error_message, pba->error_message); + pvecback[pba->index_bg_w_fld] = w_fld; + + // Obsolete: at the beginning, we had here the analytic integral solution corresponding to the case w=w0+w1(1-a/a0): + // pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) / pow(a_rel,3.*(1.+pba->w0_fld+pba->wa_fld)) * exp(3.*pba->wa_fld*(a_rel-1.)); + // But now everthing is integrated numerically for a given w_fld(a) defined in the function background_w_fld. + rho_tot += pvecback[pba->index_bg_rho_fld]; - p_tot += (pba->w0_fld+pba->wa_fld*(1.-a_rel)) * pvecback[pba->index_bg_rho_fld]; + p_tot += w_fld * pvecback[pba->index_bg_rho_fld]; + dp_dloga += (a*dw_over_da-3*(1+w_fld)*w_fld)*pvecback[pba->index_bg_rho_fld]; } /* relativistic neutrinos (and all relativistic relics) */ @@ -404,9 +430,26 @@ int background_functions( pvecback[pba->index_bg_rho_ur] = pba->Omega0_ur * pow(pba->H0,2) / pow(a_rel,4); rho_tot += pvecback[pba->index_bg_rho_ur]; p_tot += (1./3.) * pvecback[pba->index_bg_rho_ur]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_ur]; rho_r += pvecback[pba->index_bg_rho_ur]; } + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + pvecback[pba->index_bg_rho_idm_dr] = pba->Omega0_idm_dr * pow(pba->H0,2) / pow(a_rel,3); + rho_tot += pvecback[pba->index_bg_rho_idm_dr]; + p_tot += 0.; + rho_m += pvecback[pba->index_bg_rho_idm_dr]; + } + + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + pvecback[pba->index_bg_rho_idr] = pba->Omega0_idr * pow(pba->H0,2) / pow(a_rel,4); + rho_tot += pvecback[pba->index_bg_rho_idr]; + p_tot += (1./3.) * pvecback[pba->index_bg_rho_idr]; + rho_r += pvecback[pba->index_bg_rho_idr]; + } + /** - compute expansion rate H from Friedmann equation: this is the only place where the Friedmann equation is assumed. Remember that densities are all expressed in units of \f$ [3c^2/8\pi G] \f$, ie @@ -416,20 +459,38 @@ int background_functions( /** - compute derivative of H with respect to conformal time */ pvecback[pba->index_bg_H_prime] = - (3./2.) * (rho_tot + p_tot) * a + pba->K/a; + /* Total energy density*/ + pvecback[pba->index_bg_rho_tot] = rho_tot; + + /* Total pressure */ + pvecback[pba->index_bg_p_tot] = p_tot; + + /* Derivative of total pressure w.r.t. conformal time */ + pvecback[pba->index_bg_p_tot_prime] = a*pvecback[pba->index_bg_H]*dp_dloga; + if (pba->has_scf == _TRUE_){ + /** The contribution of scf was not added to dp_dloga, add p_scf_prime here: */ + pvecback[pba->index_bg_p_prime_scf] = pvecback[pba->index_bg_phi_prime_scf]* + (-pvecback[pba->index_bg_phi_prime_scf]*pvecback[pba->index_bg_H]/a-2./3.*pvecback[pba->index_bg_dV_scf]); + pvecback[pba->index_bg_p_tot_prime] += pvecback[pba->index_bg_p_prime_scf]; + } + + /** - compute critical density */ + rho_crit = rho_tot-pba->K/a/a; + class_test(rho_crit <= 0., + pba->error_message, + "rho_crit = %e instead of strictly positive",rho_crit); + /** - compute relativistic density to total density ratio */ - pvecback[pba->index_bg_Omega_r] = rho_r / rho_tot; + pvecback[pba->index_bg_Omega_r] = rho_r / rho_crit; /** - compute other quantities in the exhaustive, redundant format */ if (return_format == pba->long_info) { - /** - compute critical density */ - pvecback[pba->index_bg_rho_crit] = rho_tot-pba->K/a/a; - class_test(pvecback[pba->index_bg_rho_crit] <= 0., - pba->error_message, - "rho_crit = %e instead of strictly positive",pvecback[pba->index_bg_rho_crit]); + /** - store critical density */ + pvecback[pba->index_bg_rho_crit] = rho_crit; /** - compute Omega_m */ - pvecback[pba->index_bg_Omega_m] = rho_m / rho_tot; + pvecback[pba->index_bg_Omega_m] = rho_m / rho_crit; /* one can put other variables here */ /* */ @@ -441,6 +502,108 @@ int background_functions( } +/** + * Single place where the fluid equation of state is + * defined. Parameters of the function are passed through the + * background structure. Generalisation to arbitrary functions should + * be simple. + * + * @param pba Input: pointer to background structure + * @param a Input: current value of scale factor + * @param w_fld Output: equation of state parameter w_fld(a) + * @param dw_over_da_fld Output: function dw_fld/da + * @param integral_fld Output: function \f$ \int_{a}^{a_0} da 3(1+w_{fld})/a \f$ + * @return the error status + */ + +int background_w_fld( + struct background * pba, + double a, + double * w_fld, + double * dw_over_da_fld, + double * integral_fld) { + + double Omega_ede = 0.; + double dOmega_ede_over_da = 0.; + double d2Omega_ede_over_da2 = 0.; + double a_eq, Omega_r, Omega_m; + + /** - first, define the function w(a) */ + switch (pba->fluid_equation_of_state) { + case CLP: + *w_fld = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + break; + case EDE: + // Omega_ede(a) taken from eq. (10) in 1706.00730 + Omega_ede = (pba->Omega0_fld - pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld))) + /(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld)) + + pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld)); + + // d Omega_ede / d a taken analytically from the above + dOmega_ede_over_da = - pba->Omega_EDE* 3.*pba->w0_fld*pow(a,-3.*pba->w0_fld-1.)/(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld)) + - (pba->Omega0_fld - pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld)))*(1.-pba->Omega0_fld)*3.*pba->w0_fld*pow(a,3.*pba->w0_fld-1.)/pow(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld),2) + + pba->Omega_EDE*3.*pba->w0_fld*pow(a,-3.*pba->w0_fld-1.); + + // find a_equality (needed because EDE tracks first radiation, then matter) + Omega_r = pba->Omega0_g * (1. + 3.046 * 7./8.*pow(4./11.,4./3.)); // assumes LambdaCDM + eventually massive neutrinos so light that they are relativistic at equality; needs to be generalised later on. + Omega_m = pba->Omega0_b; + if (pba->has_cdm == _TRUE_) Omega_m += pba->Omega0_cdm; + if (pba->has_idm_dr == _TRUE_) Omega_m += pba->Omega0_idm_dr; + if (pba->has_dcdm == _TRUE_) + class_stop(pba->error_message,"Early Dark Energy not compatible with decaying Dark Matter because we omitted to code the calculation of a_eq in that case, but it would not be difficult to add it if necessary, should be a matter of 5 minutes"); + a_eq = Omega_r/Omega_m; // assumes a flat universe with a=1 today + + // w_ede(a) taken from eq. (11) in 1706.00730 + *w_fld = - dOmega_ede_over_da*a/Omega_ede/3./(1.-Omega_ede)+a_eq/3./(a+a_eq); + break; + } + + + /** - then, give the corresponding analytic derivative dw/da (used + by perturbation equations; we could compute it numerically, + but with a loss of precision; as long as there is a simple + analytic expression of the derivative of the previous + function, let's use it! */ + switch (pba->fluid_equation_of_state) { + case CLP: + *dw_over_da_fld = - pba->wa_fld / pba->a_today; + break; + case EDE: + d2Omega_ede_over_da2 = 0.; + *dw_over_da_fld = - d2Omega_ede_over_da2*a/3./(1.-Omega_ede)/Omega_ede + - dOmega_ede_over_da/3./(1.-Omega_ede)/Omega_ede + + dOmega_ede_over_da*dOmega_ede_over_da*a/3./(1.-Omega_ede)/(1.-Omega_ede)/Omega_ede + + a_eq/3./(a+a_eq)/(a+a_eq); + break; + } + + /** - finally, give the analytic solution of the following integral: + \f$ \int_{a}^{a0} da 3(1+w_{fld})/a \f$. This is used in only + one place, in the initial conditions for the background, and + with a=a_ini. If your w(a) does not lead to a simple analytic + solution of this integral, no worry: instead of writing + something here, the best would then be to leave it equal to + zero, and then in background_initial_conditions() you should + implement a numerical calculation of this integral only for + a=a_ini, using for instance Romberg integration. It should be + fast, simple, and accurate enough. */ + switch (pba->fluid_equation_of_state) { + case CLP: + *integral_fld = 3.*((1.+pba->w0_fld+pba->wa_fld)*log(pba->a_today/a) + pba->wa_fld*(a/pba->a_today-1.)); + break; + case EDE: + class_stop(pba->error_message,"EDE implementation not finished: to finish it, read the comments in background.c just before this line\n"); + break; + } + + /** note: of course you can generalise these formulas to anything, + defining new parameters pba->w..._fld. Just remember that so + far, HyRec explicitely assumes that w(a)= w0 + wa (1-a/a0); but + Recfast does not assume anything */ + + return _SUCCESS_; +} + /** * Initialize the background structure, and in particular the * background interpolation table. @@ -460,7 +623,8 @@ int background_init( /** - define local variables */ int n_ncdm; double rho_ncdm_rel,rho_nu_rel; - double Neff; + double Neff, N_dark; + double w_fld, dw_over_da, integral_fld; int filenum=0; /** - in verbose mode, provide some information */ @@ -468,96 +632,89 @@ int background_init( printf("Running CLASS version %s\n",_VERSION_); printf("Computing background\n"); - /* below we want to inform the user about ncdm species*/ - if (pba->N_ncdm > 0) { + /* below we want to inform the user about ncdm species and/or the total N_eff */ + if ((pba->N_ncdm > 0) || (pba->Omega0_idr != 0.)) { + /* contribution of ultra-relativistic species _ur to N_eff */ Neff = pba->Omega0_ur/7.*8./pow(4./11.,4./3.)/pba->Omega0_g; - /* loop over ncdm species */ - for (n_ncdm=0;n_ncdmN_ncdm; n_ncdm++) { - - /* inform if p-s-d read in files */ - if (pba->got_files[n_ncdm] == _TRUE_) { - printf(" -> ncdm species i=%d read from file %s\n",n_ncdm+1,pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); - filenum++; + /* contribution of ncdm species to N_eff*/ + if (pba->N_ncdm > 0){ + /* loop over ncdm species */ + for (n_ncdm=0;n_ncdmN_ncdm; n_ncdm++) { + + /* inform if p-s-d read in files */ + if (pba->got_files[n_ncdm] == _TRUE_) { + printf(" -> ncdm species i=%d read from file %s\n",n_ncdm+1,pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); + filenum++; + } + + /* call this function to get rho_ncdm */ + background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + 0., + pba->factor_ncdm[n_ncdm], + 0., + NULL, + &rho_ncdm_rel, + NULL, + NULL, + NULL); + + /* inform user of the contribution of each species to + radiation density (in relativistic limit): should be + between 1.01 and 1.02 for each active neutrino species; + evaluated as rho_ncdm/rho_nu_rel where rho_nu_rel is the + density of one neutrino in the instantaneous decoupling + limit, i.e. assuming T_nu=(4/11)^1/3 T_gamma (this comes + from the definition of N_eff) */ + rho_nu_rel = 56.0/45.0*pow(_PI_,6)*pow(4.0/11.0,4.0/3.0)*_G_/pow(_h_P_,3)/pow(_c_,7)* + pow(_Mpc_over_m_,2)*pow(pba->T_cmb*_k_B_,4); + + printf(" -> ncdm species i=%d sampled with %d (resp. %d) points for purpose of background (resp. perturbation) integration. In the relativistic limit it gives Delta N_eff = %g\n", + n_ncdm+1, + pba->q_size_ncdm_bg[n_ncdm], + pba->q_size_ncdm[n_ncdm], + rho_ncdm_rel/rho_nu_rel); + + Neff += rho_ncdm_rel/rho_nu_rel; } + } - /* call this function to get rho_ncdm */ - background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], - pba->w_ncdm_bg[n_ncdm], - pba->q_size_ncdm_bg[n_ncdm], - 0., - pba->factor_ncdm[n_ncdm], - 0., - NULL, - &rho_ncdm_rel, - NULL, - NULL, - NULL); - - /* inform user of the contribution of each species to - radiation density (in relativistic limit): should be - between 1.01 and 1.02 for each active neutrino species; - evaluated as rho_ncdm/rho_nu_rel where rho_nu_rel is the - density of one neutrino in the instantaneous decoupling - limit, i.e. assuming T_nu=(4/11)^1/3 T_gamma (this comes - from the definition of N_eff) */ - rho_nu_rel = 56.0/45.0*pow(_PI_,6)*pow(4.0/11.0,4.0/3.0)*_G_/pow(_h_P_,3)/pow(_c_,7)* - pow(_Mpc_over_m_,2)*pow(pba->T_cmb*_k_B_,4); - - printf(" -> ncdm species i=%d sampled with %d (resp. %d) points for purpose of background (resp. perturbation) integration. In the relativistic limit it gives Delta N_eff = %g\n", - n_ncdm+1, - pba->q_size_ncdm_bg[n_ncdm], - pba->q_size_ncdm[n_ncdm], - rho_ncdm_rel/rho_nu_rel); - - Neff += rho_ncdm_rel/rho_nu_rel; - + /* contribution of interacting dark radiation _idr to N_eff */ + if (pba->Omega0_idr != 0.) { + N_dark = pba->Omega0_idr/7.*8./pow(4./11.,4./3.)/pba->Omega0_g; + Neff += N_dark; + printf(" -> dark radiation Delta Neff %e\n",N_dark); } - printf(" -> total N_eff = %g (sumed over ultra-relativistic and ncdm species)\n",Neff); + printf(" -> total N_eff = %g (sumed over ultra-relativistic species, ncdm and dark radiation)\n",Neff); } } /** - if shooting failed during input, catch the error here */ - class_test(pba->shooting_failed == _TRUE_, - pba->error_message, - "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s", - pba->shooting_error); + class_test_except(pba->shooting_failed == _TRUE_, + pba->error_message, + background_free_input(pba), + "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s", + pba->shooting_error); /** - assign values to all indices in vectors of background quantities with background_indices()*/ class_call(background_indices(pba), pba->error_message, pba->error_message); - /** - control that cosmological parameter values make sense */ - - /* H0 in Mpc^{-1} */ - class_test((pba->H0 < _H0_SMALL_)||(pba->H0 > _H0_BIG_), - pba->error_message, - "H0=%g out of bounds (%gH0,_H0_SMALL_,_H0_BIG_); - - class_test(fabs(pba->h * 1.e5 / _c_ / pba->H0 -1.)>ppr->smallest_allowed_variation, - pba->error_message, - "inconsistency between Hubble and reduced Hubble parameters: you have H0=%f/Mpc=%fkm/s/Mpc, but h=%f",pba->H0,pba->H0/1.e5* _c_,pba->h); - - /* T_cmb in K */ - class_test((pba->T_cmb < _TCMB_SMALL_)||(pba->T_cmb > _TCMB_BIG_), - pba->error_message, - "T_cmb=%g out of bounds (%gT_cmb,_TCMB_SMALL_,_TCMB_BIG_); - - /* H0 in Mpc^{-1} */ - class_test((pba->Omega0_k < _OMEGAK_SMALL_)||(pba->Omega0_k > _OMEGAK_BIG_), - pba->error_message, - "Omegak = %g out of bounds (%gOmega0_k,_OMEGAK_SMALL_,_OMEGAK_BIG_); - /* fluid equation of state */ if (pba->has_fld == _TRUE_) { - class_test(pba->w0_fld+pba->wa_fld>=1./3., + + class_call(background_w_fld(pba,0.,&w_fld,&dw_over_da,&integral_fld), pba->error_message, pba->error_message); + + class_test(w_fld >= 1./3., pba->error_message, - "Your choice for w0_fld+wa_fld=%g is suspicious, there would not be radiation domination at early times\n", - pba->w0_fld+pba->wa_fld); + "Your choice for w(a--->0)=%g is suspicious, since it is bigger than -1/3 there cannot be radiation domination at early times\n", + w_fld); } /* in verbose mode, inform the user about the value of the ncdm @@ -587,6 +744,15 @@ int background_init( pba->error_message, pba->error_message); + /** - this function finds and stores a few derived parameters at radiation-matter equality */ + class_call(background_find_equality(ppr,pba), + pba->error_message, + pba->error_message); + + class_call(background_output_budget(pba), + pba->error_message, + pba->error_message); + return _SUCCESS_; } @@ -602,7 +768,28 @@ int background_init( int background_free( struct background *pba ) { - int err; + + class_call(background_free_noinput(pba), + pba->error_message, + pba->error_message); + + class_call(background_free_input(pba), + pba->error_message, + pba->error_message); + + return _SUCCESS_; +} + +/** + * Free only the memory space NOT allocated through input_read_parameters() + * + * @param pba Input: pointer to background structure (to be freed) + * @return the error status + */ + +int background_free_noinput( + struct background *pba + ) { free(pba->tau_table); free(pba->z_table); @@ -610,11 +797,8 @@ int background_free( free(pba->background_table); free(pba->d2background_dtau2_table); - err = background_free_input(pba); - - return err; + return _SUCCESS_; } - /** * Free pointers inside background structure which were * allocated in input_read_parameters() @@ -628,6 +812,7 @@ int background_free_input( ) { int k; + if (pba->Omega0_ncdm_tot != 0.){ for(k=0; kN_ncdm; k++){ free(pba->q_ncdm[k]); @@ -636,7 +821,9 @@ int background_free_input( free(pba->w_ncdm_bg[k]); free(pba->dlnf0_dlnq_ncdm[k]); } - + free(pba->ncdm_quadrature_strategy); + free(pba->ncdm_input_q_size); + free(pba->ncdm_qmax); free(pba->q_ncdm); free(pba->w_ncdm); free(pba->q_ncdm_bg); @@ -696,6 +883,8 @@ int background_indices( pba->has_lambda = _FALSE_; pba->has_fld = _FALSE_; pba->has_ur = _FALSE_; + pba->has_idr = _FALSE_; + pba->has_idm_dr = _FALSE_; pba->has_curvature = _FALSE_; if (pba->Omega0_cdm != 0.) @@ -722,6 +911,12 @@ int background_indices( if (pba->Omega0_ur != 0.) pba->has_ur = _TRUE_; + if (pba->Omega0_idr != 0.) + pba->has_idr = _TRUE_; + + if (pba->Omega0_idm_dr != 0.) + pba->has_idm_dr = _TRUE_; + if (pba->sgnK != 0) pba->has_curvature = _TRUE_; @@ -769,19 +964,36 @@ int background_indices( class_define_index(pba->index_bg_ddV_scf,pba->has_scf,index_bg,1); class_define_index(pba->index_bg_rho_scf,pba->has_scf,index_bg,1); class_define_index(pba->index_bg_p_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_p_prime_scf,pba->has_scf,index_bg,1); /* - index for Lambda */ class_define_index(pba->index_bg_rho_lambda,pba->has_lambda,index_bg,1); /* - index for fluid */ class_define_index(pba->index_bg_rho_fld,pba->has_fld,index_bg,1); + class_define_index(pba->index_bg_w_fld,pba->has_fld,index_bg,1); /* - index for ultra-relativistic neutrinos/species */ class_define_index(pba->index_bg_rho_ur,pba->has_ur,index_bg,1); + /* - index for total density */ + class_define_index(pba->index_bg_rho_tot,_TRUE_,index_bg,1); + + /* - index for total pressure */ + class_define_index(pba->index_bg_p_tot,_TRUE_,index_bg,1); + + /* - index for derivative of total pressure */ + class_define_index(pba->index_bg_p_tot_prime,_TRUE_,index_bg,1); + /* - index for Omega_r (relativistic density fraction) */ class_define_index(pba->index_bg_Omega_r,_TRUE_,index_bg,1); + /* - index interacting for dark radiation */ + class_define_index(pba->index_bg_rho_idr,pba->has_idr,index_bg,1); + + /* - index for interacting dark matter */ + class_define_index(pba->index_bg_rho_idm_dr,pba->has_idm_dr,index_bg,1); + /* - put here additional ingredients that you want to appear in the normal vector */ /* */ @@ -840,6 +1052,9 @@ int background_indices( /* -> energy density in DR */ class_define_index(pba->index_bi_rho_dr,pba->has_dr,index_bi,1); + /* -> energy density in fluid */ + class_define_index(pba->index_bi_rho_fld,pba->has_fld,index_bi,1); + /* -> scalar field and its derivative wrt conformal time (Zuma) */ class_define_index(pba->index_bi_phi_scf,pba->has_scf,index_bi,1); class_define_index(pba->index_bi_phi_prime_scf,pba->has_scf,index_bi,1); @@ -853,8 +1068,9 @@ int background_indices( /* -> sound horizon */ class_define_index(pba->index_bi_rs,_TRUE_,index_bi,1); - /* -> integral for growth factor */ - class_define_index(pba->index_bi_growth,_TRUE_,index_bi,1); + /* -> Second order equation for growth factor */ + class_define_index(pba->index_bi_D,_TRUE_,index_bi,1); + class_define_index(pba->index_bi_D_prime,_TRUE_,index_bi,1); /* -> index for conformal time in vector of variables to integrate */ class_define_index(pba->index_bi_tau,_TRUE_,index_bi,1); @@ -955,7 +1171,7 @@ int background_ncdm_distribution( /** Next enter your analytic expression(s) for the p.s.d.'s. If you need different p.s.d.'s for different species, put each - p.s.d inside a condition, like for instance: if (n_ncdm==2) + p.s.d inside a condition, like for instance: if (n_ncdm==2) {*f0=...}. Remember that n_ncdm = 0 refers to the first species. */ @@ -1117,59 +1333,93 @@ int background_ncdm_init( } /* Handle perturbation qsampling: */ - class_alloc(pba->q_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); - class_alloc(pba->w_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); - - class_call(get_qsampling(pba->q_ncdm[k], - pba->w_ncdm[k], - &(pba->q_size_ncdm[k]), - _QUADRATURE_MAX_, - ppr->tol_ncdm, - pbadist.q, - pbadist.tablesize, - background_ncdm_test_function, - background_ncdm_distribution, - &pbadist, - pba->error_message), - pba->error_message, - pba->error_message); - pba->q_ncdm[k]=realloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); - pba->w_ncdm[k]=realloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); - - - if (pba->background_verbose > 0) - printf("ncdm species i=%d sampled with %d points for purpose of perturbation integration\n", - k+1, - pba->q_size_ncdm[k]); - - /* Handle background q_sampling: */ - class_alloc(pba->q_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); - class_alloc(pba->w_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); - - class_call(get_qsampling(pba->q_ncdm_bg[k], - pba->w_ncdm_bg[k], - &(pba->q_size_ncdm_bg[k]), - _QUADRATURE_MAX_BG_, - ppr->tol_ncdm_bg, - pbadist.q, - pbadist.tablesize, - background_ncdm_test_function, - background_ncdm_distribution, - &pbadist, - pba->error_message), - pba->error_message, - pba->error_message); + if (pba->ncdm_quadrature_strategy[k]==qm_auto){ + /** Automatic q-sampling for this species */ + class_alloc(pba->q_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm[k], + pba->w_ncdm[k], + &(pba->q_size_ncdm[k]), + _QUADRATURE_MAX_, + ppr->tol_ncdm, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + pba->q_ncdm[k]=realloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + pba->w_ncdm[k]=realloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + + + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of perturbation integration\n", + k+1, + pba->q_size_ncdm[k]); + + /* Handle background q_sampling: */ + class_alloc(pba->q_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm_bg[k], + pba->w_ncdm_bg[k], + &(pba->q_size_ncdm_bg[k]), + _QUADRATURE_MAX_BG_, + ppr->tol_ncdm_bg, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); - pba->q_ncdm_bg[k]=realloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); - pba->w_ncdm_bg[k]=realloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + pba->q_ncdm_bg[k]=realloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + pba->w_ncdm_bg[k]=realloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); - /** - in verbose mode, inform user of number of sampled momenta - for background quantities */ - if (pba->background_verbose > 0) - printf("ncdm species i=%d sampled with %d points for purpose of background integration\n", - k+1, - pba->q_size_ncdm_bg[k]); + /** - in verbose mode, inform user of number of sampled momenta + for background quantities */ + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of background integration\n", + k+1, + pba->q_size_ncdm_bg[k]); + } + else{ + /** Manual q-sampling for this species. Same sampling used for both perturbation and background sampling, since this will usually be a high precision setting anyway */ + pba->q_size_ncdm_bg[k] = pba->ncdm_input_q_size[k]; + pba->q_size_ncdm[k] = pba->ncdm_input_q_size[k]; + class_alloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double),pba->error_message); + class_alloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double),pba->error_message); + class_call(get_qsampling_manual(pba->q_ncdm[k], + pba->w_ncdm[k], + pba->q_size_ncdm[k], + pba->ncdm_qmax[k], + pba->ncdm_quadrature_strategy[k], + pbadist.q, + pbadist.tablesize, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + for (index_q=0; index_qq_size_ncdm[k]; index_q++) { + pba->q_ncdm_bg[k][index_q] = pba->q_ncdm[k][index_q]; + pba->w_ncdm_bg[k][index_q] = pba->w_ncdm[k][index_q]; + } + /** - in verbose mode, inform user of number of sampled momenta + for background quantities */ + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of background andperturbation integration using the manual method\n", + k+1, + pba->q_size_ncdm[k]); + } class_alloc(pba->dlnf0_dlnq_ncdm[k], pba->q_size_ncdm[k]*sizeof(double), @@ -1271,7 +1521,7 @@ int background_ncdm_momenta( double q2; double factor2; /** Summary: */ - + /** - rescale normalization at given redshift */ factor2 = factor*pow(1+z,4); @@ -1300,7 +1550,7 @@ int background_ncdm_momenta( } /** - adjust normalization */ - if (n!=NULL) *n *= factor2*(1.+z); + if (n!=NULL) *n *= factor2/(1.+z); if (rho!=NULL) *rho *= factor2; if (p!=NULL) *p *= factor2; if (drho_dM!=NULL) *drho_dM *= factor2; @@ -1549,7 +1799,6 @@ int background_solve( pba->Omega0_dr = pvecback_integration[pba->index_bi_rho_dr]/pba->H0/pba->H0; } - /** - allocate background tables */ class_alloc(pba->tau_table,pba->bt_size * sizeof(double),pba->error_message); @@ -1593,11 +1842,10 @@ int background_solve( /* -> compute growth functions (valid in dust universe) */ - /* D = H \int [da/(aH)^3] = H \int [dtau/(aH^2)] = H * growth */ - pvecback[pba->index_bg_D] = pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]; - - /* f = [dlnD]/[dln a] = 1/(aH) [dlnD]/[dtau] = H'/(aH^2) + 1/(a^2 H^3 growth) */ - pvecback[pba->index_bg_f] = pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H] + 1./(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]); + /* Normalise D(z=0)=1 and construct f = D_prime/(aHD) */ + pvecback[pba->index_bg_D] = pData[i*pba->bi_size+pba->index_bi_D]/pData[(pba->bt_size-1)*pba->bi_size+pba->index_bi_D]; + pvecback[pba->index_bg_f] = pData[i*pba->bi_size+pba->index_bi_D_prime]/ + (pData[i*pba->bi_size+pba->index_bi_D]*pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]); /* -> write in the table */ memcopy_result = memcpy(pba->background_table + i*pba->bg_size,pvecback,pba->bg_size*sizeof(double)); @@ -1634,12 +1882,14 @@ int background_solve( pba->error_message, pba->error_message); - /** - compute remaining "related parameters" - * - so-called "effective neutrino number", computed at earliest + /** - compute remaining "related parameters" */ + + /** - so-called "effective neutrino number", computed at earliest time in interpolation table. This should be seen as a definition: Neff is the equivalent number of instantaneously-decoupled neutrinos accounting for the radiation density, beyond photons */ + pba->Neff = (pba->background_table[pba->index_bg_Omega_r] *pba->background_table[pba->index_bg_rho_crit] -pba->background_table[pba->index_bg_rho_g]) @@ -1652,6 +1902,7 @@ int background_solve( } if (pba->background_verbose > 2) { + printf(" -> pba->Neff = %f\n",pba->Neff); if ((pba->has_dcdm == _TRUE_)&&(pba->has_dr == _TRUE_)){ printf(" Decaying Cold Dark Matter details: (DCDM --> DR)\n"); printf(" -> Omega0_dcdm = %f\n",pba->Omega0_dcdm); @@ -1665,7 +1916,7 @@ int background_solve( printf(" -> Omega_scf = %g, wished %g\n", pvecback[pba->index_bg_rho_scf]/pvecback[pba->index_bg_rho_crit], pba->Omega0_scf); if(pba->has_lambda == _TRUE_) - printf(" -> Omega_Lambda = %g, wished %g\n", + printf(" -> Omega_Lambda = %g, wished %g\n", pvecback[pba->index_bg_rho_lambda]/pvecback[pba->index_bg_rho_crit], pba->Omega0_lambda); printf(" -> parameters: [lambda, alpha, A, B] = \n"); printf(" ["); @@ -1676,6 +1927,11 @@ int background_solve( } } + /** - total matter, radiation, dark energy today */ + pba->Omega0_m = pba->background_table[(pba->bt_size-1)*pba->bg_size+pba->index_bg_Omega_m]; + pba->Omega0_r = pba->background_table[(pba->bt_size-1)*pba->bg_size+pba->index_bg_Omega_r]; + pba->Omega0_de = 1. - (pba->Omega0_m + pba->Omega0_r + pba->Omega0_k); + free(pvecback); free(pvecback_integration); @@ -1711,13 +1967,15 @@ int background_initial_conditions( double f,Omega_rad, rho_rad; int counter,is_early_enough,n_ncdm; double scf_lambda; + double rho_fld_today; + double w_fld,dw_over_da_fld,integral_fld; /** - fix initial value of \f$ a \f$ */ a = ppr->a_ini_over_a_today_default * pba->a_today; /** If we have ncdm species, perhaps we need to start earlier - than the standard value for the species to be relativistic. - This could happen for some WDM models. + than the standard value for the species to be relativistic. + This could happen for some WDM models. */ if (pba->has_ncdm == _TRUE_) { @@ -1729,31 +1987,31 @@ int background_initial_conditions( for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { - class_call(background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], - pba->w_ncdm_bg[n_ncdm], - pba->q_size_ncdm_bg[n_ncdm], - pba->M_ncdm[n_ncdm], - pba->factor_ncdm[n_ncdm], - pba->a_today/a-1.0, - NULL, - &rho_ncdm, - &p_ncdm, - NULL, - NULL), + class_call(background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + pba->M_ncdm[n_ncdm], + pba->factor_ncdm[n_ncdm], + pba->a_today/a-1.0, + NULL, + &rho_ncdm, + &p_ncdm, + NULL, + NULL), pba->error_message, pba->error_message); - rho_ncdm_rel_tot += 3.*p_ncdm; - if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) - is_early_enough = _FALSE_; + rho_ncdm_rel_tot += 3.*p_ncdm; + if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) + is_early_enough = _FALSE_; } if (is_early_enough == _TRUE_) - break; + break; else - a *= _SCALE_BACK_; + a *= _SCALE_BACK_; } class_test(counter == _MAX_IT_, - pba->error_message, - "Search for initial scale factor a such that all ncdm species are relativistic failed."); + pba->error_message, + "Search for initial scale factor a such that all ncdm species are relativistic failed."); } pvecback_integration[pba->index_bi_a] = a; @@ -1762,6 +2020,8 @@ int background_initial_conditions( Omega_rad = pba->Omega0_g; if (pba->has_ur == _TRUE_) Omega_rad += pba->Omega0_ur; + if (pba->has_idr == _TRUE_) + Omega_rad += pba->Omega0_idr; rho_rad = Omega_rad*pow(pba->H0,2)/pow(a/pba->a_today,4); if (pba->has_ncdm == _TRUE_){ /** - We must add the relativistic contribution from NCDM species */ @@ -1778,9 +2038,9 @@ int background_initial_conditions( if (pba->has_dr == _TRUE_){ if (pba->has_dcdm == _TRUE_){ /** - f is the critical density fraction of DR. The exact solution is: - * + * * `f = -Omega_rad+pow(pow(Omega_rad,3./2.)+0.5*pow(a/pba->a_today,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3),2./3.);` - * + * * but it is not numerically stable for very small f which is always the case. * Instead we use the Taylor expansion of this equation, which is equivalent to * ignoring f(a) in the Hubble rate. @@ -1794,12 +2054,31 @@ int background_initial_conditions( } } + if (pba->has_fld == _TRUE_){ + + /* rho_fld today */ + rho_fld_today = pba->Omega0_fld * pow(pba->H0,2); + + /* integrate rho_fld(a) from a_ini to a_0, to get rho_fld(a_ini) given rho_fld(a0) */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, pba->error_message); + + /* Note: for complicated w_fld(a) functions with no simple + analytic integral, this is the place were you should compute + numerically the simple 1d integral [int_{a_ini}^{a_0} 3 + [(1+w_fld)/a] da] (e.g. with the Romberg method?) instead of + calling background_w_fld */ + + /* rho_fld at initial time */ + pvecback_integration[pba->index_bi_rho_fld] = rho_fld_today * exp(integral_fld); + + } + /** - Fix initial value of \f$ \phi, \phi' \f$ * set directly in the radiation attractor => fixes the units in terms of rho_ur - * - * TODO: - * - There seems to be some small oscillation when it starts. - * - Check equations and signs. Sign of phi_prime? + * + * TODO: + * - There seems to be some small oscillation when it starts. + * - Check equations and signs. Sign of phi_prime? * - is rho_ur all there is early on? */ if(pba->has_scf == _TRUE_){ @@ -1810,8 +2089,8 @@ int background_initial_conditions( if (3.*pow(scf_lambda,2)-12. < 0){ /** - --> If there is no attractor solution for scf_lambda, assign some value. Otherwise would give a nan.*/ pvecback_integration[pba->index_bi_phi_scf] = 1./scf_lambda;//seems to the work - if (pba->background_verbose > 0) - printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda); + if (pba->background_verbose > 0) + printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda); } pvecback_integration[pba->index_bi_phi_prime_scf] = 2*pvecback_integration[pba->index_bi_a]* sqrt(V_scf(pba,pvecback_integration[pba->index_bi_phi_scf]))*pba->phi_prime_ini_scf; @@ -1832,15 +2111,15 @@ int background_initial_conditions( /* Infer pvecback from pvecback_integration */ class_call(background_functions(pba, pvecback_integration, pba->normal_info, pvecback), - pba->error_message, - pba->error_message); + pba->error_message, + pba->error_message); /* Just checking that our initial time indeed is deep enough in the radiation dominated regime */ class_test(fabs(pvecback[pba->index_bg_Omega_r]-1.) > ppr->tol_initial_Omega_r, - pba->error_message, - "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.", - pvecback[pba->index_bg_Omega_r]); + pba->error_message, + "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.", + pvecback[pba->index_bg_Omega_r]); /** - compute initial proper time, assuming radiation-dominated universe since Big Bang and therefore \f$ t=1/(2H) \f$ (good @@ -1860,18 +2139,94 @@ int background_initial_conditions( /** - compute initial sound horizon, assuming \f$ c_s=1/\sqrt{3} \f$ initially */ pvecback_integration[pba->index_bi_rs] = pvecback_integration[pba->index_bi_tau]/sqrt(3.); - /** - compute initial value of the integral over \f$ d\tau /(aH^2) \f$, - assumed to be proportional to \f$ a^4 \f$ during RD, but with arbitrary - normalization */ - pvecback_integration[pba->index_bi_growth] = 1./(4.*a*a*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]); + /** - set initial value of D and D' in RD. D will be renormalised later, but D' must be correct. */ + pvecback_integration[pba->index_bi_D] = a; + pvecback_integration[pba->index_bi_D_prime] = 2*pvecback_integration[pba->index_bi_D]*pvecback[pba->index_bg_H]; return _SUCCESS_; } +/** + * Find the time of radiation/matter equality and store characteristic + * quantitites at that time in the background structure.. + * + * @param ppr Input: pointer to precision structure + * @param pba Input/Output: pointer to background structure + * @return the error status + */ + +int background_find_equality( + struct precision *ppr, + struct background *pba) { + + double Omega_m_over_Omega_r=0.; + int index_tau_minus = 0; + int index_tau_plus = pba->bt_size-1; + int index_tau_mid = 0; + double tau_minus,tau_plus,tau_mid=0.; + double * pvecback; + + /* first bracket the right tau value between two consecutive indices in the table */ + + while ((index_tau_plus - index_tau_minus) > 1) { + + index_tau_mid = (int)(0.5*(index_tau_plus+index_tau_minus)); + + Omega_m_over_Omega_r = pba->background_table[index_tau_mid*pba->bg_size+pba->index_bg_Omega_m] + /pba->background_table[index_tau_mid*pba->bg_size+pba->index_bg_Omega_r]; + + if (Omega_m_over_Omega_r > 1) + index_tau_plus = index_tau_mid; + else + index_tau_minus = index_tau_mid; + + } + + /* then get a better estimate within this range */ + + tau_minus = pba->tau_table[index_tau_minus]; + tau_plus = pba->tau_table[index_tau_plus]; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + + while ((tau_plus - tau_minus) > ppr->tol_tau_eq) { + + tau_mid = 0.5*(tau_plus+tau_minus); + + class_call(background_at_tau(pba,tau_mid,pba->long_info,pba->inter_closeby,&index_tau_minus,pvecback), + pba->error_message, + pba->error_message); + + Omega_m_over_Omega_r = pvecback[pba->index_bg_Omega_m]/pvecback[pba->index_bg_Omega_r]; + + if (Omega_m_over_Omega_r > 1) + tau_plus = tau_mid; + else + tau_minus = tau_mid; + + } + + pba->a_eq = pvecback[pba->index_bg_a]; + pba->H_eq = pvecback[pba->index_bg_H]; + pba->z_eq = pba->a_today/pba->a_eq -1.; + pba->tau_eq = tau_mid; + + if (pba->background_verbose > 0) { + printf(" -> radiation/matter equality at z = %f\n",pba->z_eq); + printf(" corresponding to conformal time = %f Mpc\n",pba->tau_eq); + } + + free(pvecback); + + return _SUCCESS_; + +} + + /** * Subroutine for formatting background output - * + * */ int background_output_titles(struct background * pba, @@ -1881,7 +2236,7 @@ int background_output_titles(struct background * pba, /** - Length of the column title should be less than _OUTPUTPRECISION_+6 to be indented correctly, but it can be as long as . */ int n; - char tmp[20]; + char tmp[40]; class_store_columntitle(titles,"z",_TRUE_); class_store_columntitle(titles,"proper time [Gyr]",_TRUE_); @@ -1904,19 +2259,27 @@ int background_output_titles(struct background * pba, } class_store_columntitle(titles,"(.)rho_lambda",pba->has_lambda); class_store_columntitle(titles,"(.)rho_fld",pba->has_fld); + class_store_columntitle(titles,"(.)w_fld",pba->has_fld); class_store_columntitle(titles,"(.)rho_ur",pba->has_ur); + class_store_columntitle(titles,"(.)rho_idr",pba->has_idr); + class_store_columntitle(titles,"(.)rho_idm_dr",pba->has_idm_dr); class_store_columntitle(titles,"(.)rho_crit",_TRUE_); class_store_columntitle(titles,"(.)rho_dcdm",pba->has_dcdm); class_store_columntitle(titles,"(.)rho_dr",pba->has_dr); class_store_columntitle(titles,"(.)rho_scf",pba->has_scf); class_store_columntitle(titles,"(.)p_scf",pba->has_scf); + class_store_columntitle(titles,"(.)p_prime_scf",pba->has_scf); class_store_columntitle(titles,"phi_scf",pba->has_scf); class_store_columntitle(titles,"phi'_scf",pba->has_scf); class_store_columntitle(titles,"V_scf",pba->has_scf); class_store_columntitle(titles,"V'_scf",pba->has_scf); class_store_columntitle(titles,"V''_scf",pba->has_scf); + class_store_columntitle(titles,"(.)rho_tot",_TRUE_); + class_store_columntitle(titles,"(.)p_tot",_TRUE_); + class_store_columntitle(titles,"(.)p_tot_prime",_TRUE_); + class_store_columntitle(titles,"gr.fac. D",_TRUE_); class_store_columntitle(titles,"gr.fac. f",_TRUE_); @@ -1955,19 +2318,27 @@ int background_output_data( } class_store_double(dataptr,pvecback[pba->index_bg_rho_lambda],pba->has_lambda,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_fld],pba->has_fld,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_w_fld],pba->has_fld,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_ur],pba->has_ur,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_idr],pba->has_idr,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_idm_dr],pba->has_idm_dr,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_crit],_TRUE_,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_dcdm],pba->has_dcdm,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_dr],pba->has_dr,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_p_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_prime_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_phi_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_phi_prime_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_V_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_dV_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_ddV_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_tot],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_tot],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_tot_prime],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_D],_TRUE_,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_f],_TRUE_,storeidx); } @@ -2016,7 +2387,7 @@ int background_derivs( struct background_parameters_and_workspace * pbpaw; struct background * pba; - double * pvecback; + double * pvecback, a, H, rho_M; pbpaw = parameters_and_workspace; pba = pbpaw->pba; @@ -2027,6 +2398,10 @@ int background_derivs( pba->error_message, error_message); + /** - Short hand notation */ + a = y[pba->index_bi_a]; + H = pvecback[pba->index_bg_H]; + /** - calculate \f$ a'=a^2 H \f$ */ dy[pba->index_bi_a] = y[pba->index_bi_a] * y[pba->index_bi_a] * pvecback[pba->index_bg_H]; @@ -2040,8 +2415,15 @@ int background_derivs( /** - calculate \f$ rs' = c_s \f$*/ dy[pba->index_bi_rs] = 1./sqrt(3.*(1.+3.*pvecback[pba->index_bg_rho_b]/4./pvecback[pba->index_bg_rho_g]))*sqrt(1.-pba->K*y[pba->index_bi_rs]*y[pba->index_bi_rs]); // TBC: curvature correction - /** - calculate growth' \f$ = 1/(aH^2) \f$ */ - dy[pba->index_bi_growth] = 1./(y[pba->index_bi_a] * pvecback[pba->index_bg_H] * pvecback[pba->index_bg_H]); + /** - solve second order growth equation \f$ [D''(\tau)=-aHD'(\tau)+3/2 a^2 \rho_M D(\tau) \f$ */ + rho_M = pvecback[pba->index_bg_rho_b]; + if (pba->has_cdm) + rho_M += pvecback[pba->index_bg_rho_cdm]; + if (pba->has_idm_dr) + rho_M += pvecback[pba->index_bg_rho_idm_dr]; + + dy[pba->index_bi_D] = y[pba->index_bi_D_prime]; + dy[pba->index_bi_D_prime] = -a*H*y[pba->index_bi_D_prime] + 1.5*a*a*rho_M*y[pba->index_bi_D]; if (pba->has_dcdm == _TRUE_){ /** - compute dcdm density \f$ \rho' = -3aH \rho - a \Gamma \rho \f$*/ @@ -2055,6 +2437,11 @@ int background_derivs( y[pba->index_bi_a]*pba->Gamma_dcdm*y[pba->index_bi_rho_dcdm]; } + if (pba->has_fld == _TRUE_) { + /** - Compute fld density \f$ \rho' = -3aH (1+w_{fld}(a)) \rho \f$ */ + dy[pba->index_bi_rho_fld] = -3.*y[pba->index_bi_a]*pvecback[pba->index_bg_H]*(1.+pvecback[pba->index_bg_w_fld])*y[pba->index_bi_rho_fld]; + } + if (pba->has_scf == _TRUE_){ /** - Scalar field equation: \f$ \phi'' + 2 a H \phi' + a^2 dV = 0 \f$ (note H is wrt cosmic time) */ dy[pba->index_bi_phi_scf] = y[pba->index_bi_phi_prime_scf]; @@ -2063,7 +2450,6 @@ int background_derivs( + y[pba->index_bi_a]*dV_scf(pba,y[pba->index_bi_phi_scf])) ; } - return _SUCCESS_; } @@ -2072,27 +2458,27 @@ int background_derivs( * Scalar field potential and its derivatives with respect to the field _scf * For Albrecht & Skordis model: 9908085 * - \f$ V = V_{p_{scf}}*V_{e_{scf}} \f$ - * - \f$ V_e = \exp(-\lambda \phi) \f$ (exponential) - * - \f$ V_p = (\phi - B)^\alpha + A \f$ (polynomial bump) - * - * TODO: + * - \f$ V_e = \exp(-\lambda \phi) \f$ (exponential) + * - \f$ V_p = (\phi - B)^\alpha + A \f$ (polynomial bump) + * + * TODO: * - Add some functionality to include different models/potentials (tuning would be difficult, though) * - Generalize to Kessence/Horndeski/PPF and/or couplings * - A default module to numerically compute the derivatives when no analytic functions are given should be added. * - Numerical derivatives may further serve as a consistency check. - * + * */ -/** - * +/** + * * The units of phi, tau in the derivatives and the potential V are the following: * - phi is given in units of the reduced Planck mass \f$ m_{pl} = (8 \pi G)^{(-1/2)}\f$ * - tau in the derivative is given in units of Mpc. * - the potential \f$ V(\phi) \f$ is given in units of \f$ m_{pl}^2/Mpc^2 \f$. * With this convention, we have * \f$ \rho^{class} = (8 \pi G)/3 \rho^{physical} = 1/(3 m_{pl}^2) \rho^{physical} = 1/3 * [ 1/(2a^2) (\phi')^2 + V(\phi) ] \f$ - and \f$ \rho^{class} \f$ has the proper dimension \f$ Mpc^-2 \f$. - */ + and \f$ \rho^{class} \f$ has the proper dimension \f$ Mpc^-2 \f$. +*/ double V_e_scf(struct background *pba, double phi @@ -2129,12 +2515,12 @@ double ddV_e_scf(struct background *pba, /** parameters and functions for the polynomial coefficient - * \f$ V_p = (\phi - B)^\alpha + A \f$(polynomial bump) - * + * \f$ V_p = (\phi - B)^\alpha + A \f$(polynomial bump) + * * double scf_alpha = 2; - * + * * double scf_B = 34.8; - * + * * double scf_A = 0.01; (values for their Figure 2) */ @@ -2183,7 +2569,7 @@ double V_scf( double dV_scf( struct background *pba, - double phi) { + double phi) { return dV_e_scf(pba,phi)*V_p_scf(pba,phi) + V_e_scf(pba,phi)*dV_p_scf(pba,phi); } @@ -2192,3 +2578,111 @@ double ddV_scf( double phi) { return ddV_e_scf(pba,phi)*V_p_scf(pba,phi) + 2*dV_e_scf(pba,phi)*dV_p_scf(pba,phi) + V_e_scf(pba,phi)*ddV_p_scf(pba,phi); } + +/** + * Function outputting the fractions Omega of the total critical density + * today, and also the reduced fractions omega=Omega*h*h + * + * It also prints the total budgets of non-relativistic, relativistic, + * and other contents, and of the total + * + * @param pba Input: Pointer to background structure + * @return the error status + */ + +int background_output_budget( + struct background* pba + ) { + + double budget_matter, budget_radiation, budget_other,budget_neutrino; + int index_ncdm; + + budget_matter = 0; + budget_radiation = 0; + budget_other = 0; + budget_neutrino = 0; + + //The name for the _class_print_species_ macro can be at most 30 characters total + if(pba->background_verbose > 1){ + + printf(" ---------------------------- Budget equation ----------------------- \n"); + + printf(" ---> Nonrelativistic Species \n"); + _class_print_species_("Bayrons",b); + budget_matter+=pba->Omega0_b; + if(pba->has_cdm){ + _class_print_species_("Cold Dark Matter",cdm); + budget_matter+=pba->Omega0_cdm; + } + if(pba->has_idm_dr){ + _class_print_species_("Interacting Dark Matter - DR ",idm_dr); + budget_matter+=pba->Omega0_idm_dr; + } + if(pba->has_dcdm){ + _class_print_species_("Decaying Cold Dark Matter",dcdm); + budget_matter+=pba->Omega0_dcdm; + } + + + printf(" ---> Relativistic Species \n"); + _class_print_species_("Photons",g); + budget_radiation+=pba->Omega0_g; + if(pba->has_ur){ + _class_print_species_("Ultra-relativistic relics",ur); + budget_radiation+=pba->Omega0_ur; + } + if(pba->has_dr){ + _class_print_species_("Dark Radiation (from decay)",dr); + budget_radiation+=pba->Omega0_dr; + } + if(pba->has_idr){ + _class_print_species_("Interacting Dark Radiation",idr); + budget_radiation+=pba->Omega0_idr; + } + + if(pba->N_ncdm > 0){ + printf(" ---> Massive Neutrino Species \n"); + } + if(pba->N_ncdm > 0){ + for(index_ncdm=0;index_ncdmN_ncdm;++index_ncdm){ + printf("-> %-26s%-4d Omega = %-15g , omega = %-15g\n","Neutrino Species Nr.",index_ncdm+1,pba->Omega0_ncdm[index_ncdm],pba->Omega0_ncdm[index_ncdm]*pba->h*pba->h); + budget_neutrino+=pba->Omega0_ncdm[index_ncdm]; + } + } + + if(pba->has_lambda || pba->has_fld || pba->has_scf || pba->has_curvature){ + printf(" ---> Other Content \n"); + } + if(pba->has_lambda){ + _class_print_species_("Cosmological Constant",lambda); + budget_other+=pba->Omega0_lambda; + } + if(pba->has_fld){ + _class_print_species_("Dark Energy Fluid",fld); + budget_other+=pba->Omega0_fld; + } + if(pba->has_scf){ + _class_print_species_("Scalar Field",scf); + budget_other+=pba->Omega0_scf; + } + if(pba->has_curvature){ + _class_print_species_("Spatial Curvature",k); + budget_other+=pba->Omega0_k; + } + + printf(" ---> Total budgets \n"); + printf(" Radiation Omega = %-15g , omega = %-15g \n",budget_radiation,budget_radiation*pba->h*pba->h); + printf(" Non-relativistic Omega = %-15g , omega = %-15g \n",budget_matter,budget_matter*pba->h*pba->h); + if(pba->N_ncdm > 0){ + printf(" Neutrinos Omega = %-15g , omega = %-15g \n",budget_neutrino,budget_neutrino*pba->h*pba->h); + } + if(pba->has_lambda || pba->has_fld || pba->has_scf || pba->has_curvature){ + printf(" Other Content Omega = %-15g , omega = %-15g \n",budget_other,budget_other*pba->h*pba->h); + } + printf(" TOTAL Omega = %-15g , omega = %-15g \n",budget_radiation+budget_matter+budget_neutrino+budget_other,(budget_radiation+budget_matter+budget_neutrino+budget_other)*pba->h*pba->h); + + printf(" -------------------------------------------------------------------- \n"); + } + + return _SUCCESS_; +} diff --git a/class/source/input.c b/class/source/input.c index ac40b992..a4b32679 100644 --- a/class/source/input.c +++ b/class/source/input.c @@ -3,9 +3,6 @@ * Julien Lesgourgues, 27.08.2010 */ -/* modified for CCL to include sigma_8 following recipe in - https://github.com/lesgourg/class_public/issues/83 */ - #include "input.h" /** @@ -46,7 +43,7 @@ int input_init_from_arguments( char input_file[_ARGUMENT_LENGTH_MAX_]; char precision_file[_ARGUMENT_LENGTH_MAX_]; - char tmp_file[_ARGUMENT_LENGTH_MAX_]; + char tmp_file[_ARGUMENT_LENGTH_MAX_+26]; // 26 is enough to extend the file name [...] with the characters "output/[...]%02d_parameters.ini" (as done below) int i; char extension[5]; @@ -86,7 +83,7 @@ int input_init_from_arguments( strcpy(precision_file,argv[i]); } else { - fprintf(stdout,"Warning: the file %s has an extension different from .ini and .pre, so it has been ignored\n",argv[i]); + fprintf(stdout,"Warning: the file '%s' has an extension different from .ini and .pre, so it has been ignored\n",argv[i]); } } } @@ -226,20 +223,70 @@ int input_init( char param_unused_name[_LINE_LENGTH_MAX_]; struct fzerofun_workspace fzw; + + /** + * Before getting into the assignment of parameters, + * and before the shooting, we want to already fix our precision parameters. + * + * No precision parameter should depend on any input parameter + * + */ + + class_call(input_read_precisions(pfc, + ppr, + pba, + pth, + ppt, + ptr, + ppm, + psp, + pnl, + ple, + pop, + errmsg), + errmsg, + errmsg); + + + /** + * In CLASS, we can do something we call 'shooting', where a variable, + * which is not directly given is calculated by another variable + * through successive runs of class. + * + * This is needed for variables which do not immediately follow from + * other input parameters. An example is theta_s, the angular scale + * of the sound horizon giving us the horizontal peak positions. + * This quantity can only replace the hubble parameter h, if we + * run all the way into class through to thermodynamics to figure out + * how h and theta_s relate numerically. + * + * A default parameter for h is chosen, and then we shoot through + * CLASS, finding what the corresponding theta_s is. We adjust our + * initial h, and shoot again, repeating this process until a + * suitable value for h is found which gives the correct + * 100*theta_s value * * These two arrays must contain the strings of names to be searched - * for and the corresponding new parameter */ + * for and the corresponding new parameter + * The third array contains the module inside of which the old + * parameter is calculated + * + * See input_try_unknown_parameters for the actual shooting + * + */ + char * const target_namestrings[] = {"100*theta_s","Omega_dcdmdr","omega_dcdmdr", "Omega_scf","Omega_ini_dcdm","omega_ini_dcdm","sigma8"}; char * const unknown_namestrings[] = {"h","Omega_ini_dcdm","Omega_ini_dcdm", "scf_shooting_parameter","Omega_dcdmdr","omega_dcdmdr","A_s"}; enum computation_stage target_cs[] = {cs_thermodynamics, cs_background, cs_background, - cs_background, cs_background, cs_background}; + cs_background, cs_background, cs_background, cs_nonlinear}; int input_verbose = 0, int1, aux_flag, shooting_failed=_FALSE_; class_read_int("input_verbose",input_verbose); + if (input_verbose >0) printf("Reading input parameters\n"); /** - Do we need to fix unknown parameters? */ unknown_parameters_size = 0; @@ -255,7 +302,7 @@ int input_init( if (flag1 == _TRUE_){ /** - --> input_auxillary_target_conditions() takes care of the case where for instance Omega_dcdmdr is set to 0.0. - */ + */ class_call(input_auxillary_target_conditions(pfc, index_target, param1, @@ -271,7 +318,12 @@ int input_init( } } - /** - case with unknown parameters */ + /** + * Case with unknown parameters... + * + * Here we start shooting (see above for explanation of shooting) + * + * */ if (unknown_parameters_size > 0) { /* Create file content structure with additional entries */ @@ -307,8 +359,8 @@ int input_init( ¶m1, &flag1, errmsg), - errmsg, - errmsg); + errmsg, + errmsg); // store name of target parameter fzw.target_name[counter] = index_target; @@ -321,6 +373,14 @@ int input_init( } if (unknown_parameters_size == 1){ + if (input_verbose > 0) { + fprintf( + stdout, + "Computing unknown input parameter '%s' using input parameter '%s'\n", + fzw.fc.name[fzw.unknown_parameters_index[0]], + target_namestrings[fzw.target_name[0]] + ); + } /* We can do 1 dimensional root finding */ /* If shooting fails, postpone error to background module to play nice with MontePython. */ class_call_try(input_find_root(&xzero, @@ -334,13 +394,17 @@ int input_init( /* Store xzero */ sprintf(fzw.fc.value[fzw.unknown_parameters_index[0]],"%e",xzero); if (input_verbose > 0) { - fprintf(stdout,"Computing unknown input parameters\n"); - fprintf(stdout," -> found %s = %s\n", + fprintf(stdout," -> found '%s = %s'\n", fzw.fc.name[fzw.unknown_parameters_index[0]], fzw.fc.value[fzw.unknown_parameters_index[0]]); } } else{ + /* We need to do multidimensional root finding */ + + if (input_verbose > 0) { + fprintf(stdout,"Computing unknown input parameters\n"); + } class_alloc(x_inout, sizeof(double)*unknown_parameters_size, errmsg); @@ -364,16 +428,14 @@ int input_init( errmsg), errmsg, pba->shooting_error,shooting_failed=_TRUE_); - if (input_verbose > 0) { - fprintf(stdout,"Computing unknown input parameters\n"); - } + /* Store xzero */ for (counter = 0; counter < unknown_parameters_size; counter++){ sprintf(fzw.fc.value[fzw.unknown_parameters_index[counter]], "%e",x_inout[counter]); if (input_verbose > 0) { - fprintf(stdout," -> found %s = %s\n", + fprintf(stdout," -> found '%s = %s'\n", fzw.fc.name[fzw.unknown_parameters_index[counter]], fzw.fc.value[fzw.unknown_parameters_index[counter]]); } @@ -496,7 +558,44 @@ int input_init( return _SUCCESS_; } +int input_read_precisions( + struct file_content * pfc, + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ) { + /** - set all precision parameters to default values */ + + /** + * Declare initial params to read into + * */ + class_call(input_default_precision(ppr), + errmsg, + errmsg); + + int int1; + int flag1; + double param1; + char string1[_ARGUMENT_LENGTH_MAX_]; + + /** + * Parse all precision parameters + * */ + +#define __PARSE_PRECISION_PARAMETER__ +#include "precisions.h" +#undef __PARSE_PRECISION_PARAMETER__ + return _SUCCESS_; +} int input_read_parameters( struct file_content * pfc, struct precision * ppr, @@ -537,6 +636,7 @@ int input_read_parameters( double f_iso=0.; double n_cor=0.; double c_cor=0.; + double stat_f_idr = 7./8.; double Omega_tot; @@ -551,10 +651,11 @@ int input_read_parameters( double z_max=0.; int bin; + int input_verbose=0; sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); - /** - set all parameters (input and precision) to default values */ + /** - set all input parameters to default values */ class_call(input_default_params(pba, pth, @@ -568,14 +669,12 @@ int input_read_parameters( errmsg, errmsg); - class_call(input_default_precision(ppr), - errmsg, - errmsg); - /** - if entries passed in file_content structure, carefully read and interpret each of them, and tune the relevant input parameters accordingly*/ + class_read_int("input_verbose",input_verbose); + /** Knowing the gauge from the very beginning is useful (even if this could be a run not requiring perturbations at all: even in that case, knowing the gauge is important e.g. for fixing the @@ -741,6 +840,44 @@ int input_read_parameters( Omega_tot += pba->Omega0_ur; + /** - Omega_0_idr (interacting dark radiation) */ + /* Can take both the ethos parameters, and the NADM parameters */ + + class_read_double("stat_f_idr",stat_f_idr); + + class_call(parser_read_double(pfc,"N_idr",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"N_dg",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"xi_idr",¶m3,&flag3,errmsg), + errmsg, + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of N_idr, N_dg or xi_idr, choose one"); + + if (flag1 == _TRUE_) { + pba->T_idr = pow(param1/stat_f_idr*(7./8.)/pow(11./4.,(4./3.)),(1./4.)) * pba->T_cmb; + if (input_verbose > 1) + printf("You passed N_idr = N_dg = %e, this is equivalent to xi_idr = %e in the ETHOS notation. \n", param2, pba->T_idr/pba->T_cmb); + } + else if (flag2 == _TRUE_) { + pba->T_idr = pow(param2/stat_f_idr*(7./8.)/pow(11./4.,(4./3.)),(1./4.)) * pba->T_cmb; + if (input_verbose > 2) + printf("You passed N_dg = N_idr = %e, this is equivalent to xi_idr = %e in the ETHOS notation. \n", param2, pba->T_idr/pba->T_cmb); + } + else if (flag3 == _TRUE_) { + pba->T_idr = param3 * pba->T_cmb; + if (input_verbose > 1) + printf("You passed xi_idr = %e, this is equivalent to N_idr = N_dg = %e in the NADM notation. \n", param3, stat_f_idr*pow(param3,4.)/(7./8.)*pow(11./4.,(4./3.))); + } + + pba->Omega0_idr = stat_f_idr*pow(pba->T_idr/pba->T_cmb,4.)*pba->Omega0_g; + + Omega_tot += pba->Omega0_idr; + /** - Omega_0_cdm (CDM) */ class_call(parser_read_double(pfc,"Omega_cdm",¶m1,&flag1,errmsg), errmsg, @@ -756,58 +893,232 @@ int input_read_parameters( if (flag2 == _TRUE_) pba->Omega0_cdm = param2/pba->h/pba->h; + if ((ppt->gauge == synchronous) && (pba->Omega0_cdm==0)) pba->Omega0_cdm = ppr->Omega0_cdm_min_synchronous; + Omega_tot += pba->Omega0_cdm; - /** - Omega_0_dcdmdr (DCDM) */ - class_call(parser_read_double(pfc,"Omega_dcdmdr",¶m1,&flag1,errmsg), + /** - Omega_0_icdm_dr (DM interacting with DR) */ + class_call(parser_read_double(pfc,"Omega_idm_dr",¶m1,&flag1,errmsg), errmsg, errmsg); - class_call(parser_read_double(pfc,"omega_dcdmdr",¶m2,&flag2,errmsg), + class_call(parser_read_double(pfc,"omega_idm_dr",¶m2,&flag2,errmsg), errmsg, errmsg); - class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + class_call(parser_read_double(pfc,"f_idm_dr",¶m3,&flag3,errmsg), errmsg, - "In input file, you can only enter one of Omega_dcdmdr or omega_dcdmdr, choose one"); + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of Omega_idm_dr, omega_idm_dr or f_idm_dr, choose one"); + + /* ---> if user passes directly the density of idm_dr */ if (flag1 == _TRUE_) - pba->Omega0_dcdmdr = param1; + pba->Omega0_idm_dr = param1; if (flag2 == _TRUE_) - pba->Omega0_dcdmdr = param2/pba->h/pba->h; - Omega_tot += pba->Omega0_dcdmdr; + pba->Omega0_idm_dr = param2/pba->h/pba->h; + + /* ---> if user passes density of idm_dr as a fraction of the CDM one */ + if (flag3 == _TRUE_) { + class_test((param3 < 0.) || (param3 > 1.), + errmsg, + "The fraction of interacting DM with DR must be between 0 and 1, you asked for f_idm_dr=%e",param3); + class_test((param3 > 0.) && (pba->Omega0_cdm == 0.), + errmsg, + "If you want a fraction of interacting DM with DR, to be consistent, you should not set the fraction of CDM to zero"); + + pba->Omega0_idm_dr = param3 * pba->Omega0_cdm; + /* readjust Omega0_cdm */ + pba->Omega0_cdm -= pba->Omega0_idm_dr; + /* to be consistent, remove same amount from Omega_tot */ + Omega_tot -= pba->Omega0_idm_dr; + /* avoid Omega0_cdm =0 in synchronous gauge */ + if ((ppt->gauge == synchronous) && (pba->Omega0_cdm==0)) { + pba->Omega0_cdm += ppr->Omega0_cdm_min_synchronous; + Omega_tot += ppr->Omega0_cdm_min_synchronous; + pba->Omega0_idm_dr -= ppr->Omega0_cdm_min_synchronous; + } + } + + Omega_tot += pba->Omega0_idm_dr; + + if (pba->Omega0_idm_dr > 0.) { + + class_test(pba->Omega0_idr == 0.0, + errmsg, + "You have requested interacting DM ith DR, this requires a non-zero density of interacting DR. Please set either N_idr or xi_idr"); + + class_call(parser_read_double(pfc,"a_idm_dr",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"a_dark",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"Gamma_0_nadm",¶m3,&flag3,errmsg), + errmsg, + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of a_idm_dr, a_dark or Gamma_0_nadm, choose one"); + + if (flag1 == _TRUE_){ + pth->a_idm_dr = param1; + if (input_verbose > 1) + printf("You passed a_idm_dr = a_dark = %e, this is equivalent to Gamma_0_nadm = %e in the NADM notation. \n", param1, param1*(4./3.)*(pba->h*pba->h*pba->Omega0_idr)); + } + else if (flag2 == _TRUE_){ + pth->a_idm_dr = param2; + if (input_verbose > 1) + printf("You passed a_dark = a_idm_dr = %e, this is equivalent to Gamma_0_nadm = %e in the NADM notation. \n", param2, param2*(4./3.)*(pba->h*pba->h*pba->Omega0_idr)); + } + else if (flag3 == _TRUE_){ + pth->a_idm_dr = param3*(3./4.)/(pba->h*pba->h*pba->Omega0_idr); + if (input_verbose > 1) + printf("You passed Gamma_0_nadm = %e, this is equivalent to a_idm_dr = a_dark = %e in the ETHOS notation. \n", param3, pth->a_idm_dr); + } + + /** - Load the rest of the parameters for idm and idr */ + + if (flag3 == _TRUE_){ /* If the user passed Gamma_0_nadm, assume they want nadm parameterisation*/ + pth->nindex_idm_dr = 0; + ppt->idr_nature = idr_fluid; + if (input_verbose > 1) + printf("NADM requested. Defaulting on nindex_idm_dr = %e and idr_nature = fluid \n", pth->nindex_idm_dr); + } + + else{ + + class_read_double_one_of_two("nindex_dark","nindex_idm_dr",pth->nindex_idm_dr); + + class_call(parser_read_string(pfc,"idr_nature",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if ((strstr(string1,"free_streaming") != NULL) || (strstr(string1,"Free_Streaming") != NULL) || (strstr(string1,"Free_streaming") != NULL) || (strstr(string1,"FREE_STREAMING") != NULL)) { + ppt->idr_nature = idr_free_streaming; + } + if ((strstr(string1,"fluid") != NULL) || (strstr(string1,"Fluid") != NULL) || (strstr(string1,"FLUID") != NULL)) { + ppt->idr_nature = idr_fluid; + } + } + } + + class_read_double_one_of_two("m_idm","m_dm",pth->m_idm); + + class_read_double_one_of_two("b_dark","b_idr",pth->b_idr); + + /* Read alpha_idm_dr or alpha_dark */ + + class_call(parser_read_list_of_doubles(pfc,"alpha_idm_dr",&entries_read,&(ppt->alpha_idm_dr),&flag1,errmsg), + errmsg, + errmsg); + + /* try with the other syntax */ + if (flag1 == _FALSE_) { + class_call(parser_read_list_of_doubles(pfc,"alpha_dark",&entries_read,&(ppt->alpha_idm_dr),&flag1,errmsg), + errmsg, + errmsg); + } + + if(flag1 == _TRUE_){ + if(entries_read != (ppr->l_max_idr-1)){ + class_realloc(ppt->alpha_idm_dr,ppt->alpha_idm_dr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=entries_read; n<(ppr->l_max_idr-1); n++) ppt->alpha_idm_dr[n] = ppt->alpha_idm_dr[entries_read-1]; + } + } + else{ + class_alloc(ppt->alpha_idm_dr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=0; n<(ppr->l_max_idr-1); n++) ppt->alpha_idm_dr[n] = 1.5; + } + + /* Read alpha_idm_dr or alpha_dark */ + + class_call(parser_read_list_of_doubles(pfc,"beta_idr",&entries_read,&(ppt->beta_idr),&flag1,errmsg), + errmsg, + errmsg); + + /* try with the other syntax */ + if (flag1 == _FALSE_) { + class_call(parser_read_list_of_doubles(pfc,"beta_dark",&entries_read,&(ppt->beta_idr),&flag1,errmsg), + errmsg, + errmsg); + } + + if(flag1 == _TRUE_){ + if(entries_read != (ppr->l_max_idr-1)){ + class_realloc(ppt->beta_idr,ppt->beta_idr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=entries_read; n<(ppr->l_max_idr-1); n++) ppt->beta_idr[n] = ppt->beta_idr[entries_read-1]; + } + } + else{ + class_alloc(ppt->beta_idr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=0; n<(ppr->l_max_idr-1); n++) ppt->beta_idr[n] = 1.5; + } + } + else { + ppt->alpha_idm_dr = NULL; + ppt->beta_idr = NULL; + } - /** - Read Omega_ini_dcdm or omega_ini_dcdm */ - class_call(parser_read_double(pfc,"Omega_ini_dcdm",¶m1,&flag1,errmsg), + /** - Omega_0_dcdmdr (DCDM) */ + class_call(parser_read_double(pfc,"Omega_dcdmdr",¶m1,&flag1,errmsg), errmsg, errmsg); - class_call(parser_read_double(pfc,"omega_ini_dcdm",¶m2,&flag2,errmsg), + class_call(parser_read_double(pfc,"omega_dcdmdr",¶m2,&flag2,errmsg), errmsg, errmsg); class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), errmsg, - "In input file, you can only enter one of Omega_ini_dcdm or omega_ini_dcdm, choose one"); + "In input file, you can only enter one of Omega_dcdmdr or omega_dcdmdr, choose one"); if (flag1 == _TRUE_) - pba->Omega_ini_dcdm = param1; + pba->Omega0_dcdmdr = param1; if (flag2 == _TRUE_) - pba->Omega_ini_dcdm = param2/pba->h/pba->h; + pba->Omega0_dcdmdr = param2/pba->h/pba->h; - /** - Read Gamma in same units as H0, i.e. km/(s Mpc)*/ - class_read_double("Gamma_dcdm",pba->Gamma_dcdm); - /* Convert to Mpc */ - pba->Gamma_dcdm *= (1.e3 / _c_); + if (pba->Omega0_dcdmdr > 0) { + + Omega_tot += pba->Omega0_dcdmdr; + + /** - Read Omega_ini_dcdm or omega_ini_dcdm */ + class_call(parser_read_double(pfc,"Omega_ini_dcdm",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_ini_dcdm",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_ini_dcdm or omega_ini_dcdm, choose one"); + if (flag1 == _TRUE_) + pba->Omega_ini_dcdm = param1; + if (flag2 == _TRUE_) + pba->Omega_ini_dcdm = param2/pba->h/pba->h; + + /** - Read Gamma in same units as H0, i.e. km/(s Mpc)*/ + class_read_double("Gamma_dcdm",pba->Gamma_dcdm); + /* Convert to Mpc */ + pba->Gamma_dcdm *= (1.e3 / _c_); + + } /** - non-cold relics (ncdm) */ class_read_int("N_ncdm",N_ncdm); if ((flag1 == _TRUE_) && (N_ncdm > 0)){ pba->N_ncdm = N_ncdm; - /* Precision parameters for ncdm has to be read now since they are used here:*/ - class_read_double("tol_M_ncdm",ppr->tol_M_ncdm); - class_read_double("tol_ncdm_newtonian",ppr->tol_ncdm_newtonian); - class_read_double("tol_ncdm_synchronous",ppr->tol_ncdm_synchronous); - class_read_double("tol_ncdm_bg",ppr->tol_ncdm_bg); + if (ppt->gauge == synchronous) ppr->tol_ncdm = ppr->tol_ncdm_synchronous; if (ppt->gauge == newtonian) ppr->tol_ncdm = ppr->tol_ncdm_newtonian; + /* Quadrature modes, 0 is qm_auto. */ + class_read_list_of_integers_or_default("Quadrature strategy",pba->ncdm_quadrature_strategy,0,N_ncdm); + /* Number of momentum bins */ + class_read_list_of_integers_or_default("Number of momentum bins",pba->ncdm_input_q_size,-1,N_ncdm); + + /* qmax, if relevant */ + class_read_list_of_doubles_or_default("Maximum q",pba->ncdm_qmax,15,N_ncdm); + /* Read temperatures: */ class_read_list_of_doubles_or_default("T_ncdm",pba->T_ncdm,pba->T_ncdm_default,N_ncdm); @@ -959,7 +1270,7 @@ int input_read_parameters( * 1) set each Omega0 and add to the total for each specified component. * 2) go through the components in order {lambda, fld, scf} and * fill using first unspecified component. - */ + */ /* Step 1 */ if (flag1 == _TRUE_){ @@ -975,14 +1286,31 @@ int input_read_parameters( Omega_tot += pba->Omega0_scf; } /* Step 2 */ - if (flag1 == _FALSE_) //Fill with Lambda + if (flag1 == _FALSE_) { + //Fill with Lambda pba->Omega0_lambda= 1. - pba->Omega0_k - Omega_tot; - else if (flag2 == _FALSE_) // Fill up with fluid + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_Lambda = %e\n",pba->Omega0_lambda); + } + else if (flag2 == _FALSE_) { + // Fill up with fluid pba->Omega0_fld = 1. - pba->Omega0_k - Omega_tot; - else if ((flag3 == _TRUE_) && (param3 < 0.)){ // Fill up with scalar field + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_fld = %e\n",pba->Omega0_fld); + } + else if ((flag3 == _TRUE_) && (param3 < 0.)){ + // Fill up with scalar field pba->Omega0_scf = 1. - pba->Omega0_k - Omega_tot; + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_scf = %e\n",pba->Omega0_scf); } + /* + fprintf(stderr,"%e %e %e %e %e\n", + pba->Omega0_lambda, + pba->Omega0_fld, + pba->Omega0_scf, + pba->Omega0_k, + Omega_tot); + */ + /** - Test that the user have not specified Omega_scf = -1 but left either Omega_lambda or Omega_fld unspecified:*/ class_test(((flag1 == _FALSE_)||(flag2 == _FALSE_)) && ((flag3 == _TRUE_) && (param3 < 0.)), @@ -990,9 +1318,55 @@ int input_read_parameters( "It looks like you want to fulfil the closure relation sum Omega = 1 using the scalar field, so you have to specify both Omega_lambda and Omega_fld in the .ini file"); if (pba->Omega0_fld != 0.) { - class_read_double("w0_fld",pba->w0_fld); - class_read_double("wa_fld",pba->wa_fld); - class_read_double("cs2_fld",pba->cs2_fld); + + class_call(parser_read_string(pfc, + "use_ppf", + &string1, + &flag1, + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_){ + if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ + pba->use_ppf = _TRUE_; + class_read_double("c_gamma_over_c_fld",pba->c_gamma_over_c_fld); + } + else { + pba->use_ppf = _FALSE_; + } + } + + class_call(parser_read_string(pfc,"fluid_equation_of_state",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"CLP") != NULL) || (strstr(string1,"clp") != NULL)) { + pba->fluid_equation_of_state = CLP; + } + + else if ((strstr(string1,"EDE") != NULL) || (strstr(string1,"ede") != NULL)) { + pba->fluid_equation_of_state = EDE; + } + + else { + class_stop(errmsg,"incomprehensible input '%s' for the field 'fluid_equation_of_state'",string1); + } + } + + if (pba->fluid_equation_of_state == CLP) { + class_read_double("w0_fld",pba->w0_fld); + class_read_double("wa_fld",pba->wa_fld); + class_read_double("cs2_fld",pba->cs2_fld); + } + + if (pba->fluid_equation_of_state == EDE) { + class_read_double("w0_fld",pba->w0_fld); + class_read_double("Omega_EDE",pba->Omega_EDE); + class_read_double("cs2_fld",pba->cs2_fld); + } } /* Additional SCF parameters: */ @@ -1021,8 +1395,8 @@ int input_read_parameters( &string1, &flag1, errmsg), - errmsg, - errmsg); + errmsg, + errmsg); if (flag1 == _TRUE_){ if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ @@ -1031,8 +1405,8 @@ int input_read_parameters( else{ pba->attractor_ic_scf = _FALSE_; class_test(pba->scf_parameters_size<2, - errmsg, - "Since you are not using attractor initial conditions, you must specify phi and its derivative phi' as the last two entries in scf_parameters. See explanatory.ini for more details."); + errmsg, + "Since you are not using attractor initial conditions, you must specify phi and its derivative phi' as the last two entries in scf_parameters. See explanatory.ini for more details."); pba->phi_ini_scf = pba->scf_parameters[pba->scf_parameters_size-2]; pba->phi_prime_ini_scf = pba->scf_parameters[pba->scf_parameters_size-1]; } @@ -1097,10 +1471,14 @@ int input_read_parameters( pth->reio_parametrization=reio_many_tanh; flag2=_TRUE_; } + if (strcmp(string1,"reio_inter") == 0) { + pth->reio_parametrization=reio_inter; + flag2=_TRUE_; + } class_test(flag2==_FALSE_, errmsg, - "could not identify reionization_parametrization value, check that it is one of 'reio_none', 'reio_camb', 'reio_bins_tanh', 'reio_half_tanh', 'reio_many_tanh'..."); + "could not identify reionization_parametrization value, check that it is one of 'reio_none', 'reio_camb', 'reio_bins_tanh', 'reio_half_tanh', 'reio_many_tanh', 'reio_inter'..."); } /** - reionization parameters if reio_parametrization=reio_camb */ @@ -1121,6 +1499,7 @@ int input_read_parameters( if (flag2 == _TRUE_) { pth->tau_reio=param2; pth->reio_z_or_tau=reio_tau; + } class_read_double("reionization_exponent",pth->reionization_exponent); @@ -1146,6 +1525,13 @@ int input_read_parameters( class_read_double("many_tanh_width",pth->many_tanh_width); } + /** - reionization parameters if reio_parametrization=reio_many_tanh */ + if (pth->reio_parametrization == reio_inter) { + class_read_int("reio_inter_num",pth->reio_inter_num); + class_read_list_of_doubles("reio_inter_z",pth->reio_inter_z,pth->reio_inter_num); + class_read_list_of_doubles("reio_inter_xe",pth->reio_inter_xe,pth->reio_inter_num); + } + /** - energy injection parameters from CDM annihilation/decay */ class_read_double("annihilation",pth->annihilation); @@ -1251,6 +1637,21 @@ int input_read_parameters( if ((strstr(string1,"mPk") != NULL) || (strstr(string1,"MPk") != NULL) || (strstr(string1,"MPK") != NULL)) { ppt->has_pk_matter=_TRUE_; ppt->has_perturbations = _TRUE_; + + /*if (pba->Omega0_ncdm_tot != 0.0){ + class_call(parser_read_string(pfc,"pk_only_cdm_bar",&string1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_){ + if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ + ppt->pk_only_cdm_bar = _TRUE_; + } + else { + ppt->pk_only_cdm_bar = _FALSE_; + } + } + }*/ + } if ((strstr(string1,"mTk") != NULL) || (strstr(string1,"MTk") != NULL) || (strstr(string1,"MTK") != NULL) || @@ -1266,6 +1667,27 @@ int input_read_parameters( } + /* The following lines make sure that if perturbations are not computed, idm_dr and idr parameters are still freed */ + + if(ppt->has_perturbations == _FALSE_) { + + if (ppt->alpha_idm_dr != NULL) + free(ppt->alpha_idm_dr); + + if (ppt->beta_idr != NULL) + free(ppt->beta_idr); + } + + if (ppt->has_density_transfers == _TRUE_) { + class_call(parser_read_string(pfc,"extra metric transfer functions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"y") != NULL))) { + ppt->has_metricpotential_transfers = _TRUE_; + } + } + if (ppt->has_cl_cmb_temperature == _TRUE_) { class_call(parser_read_string(pfc,"temperature contributions",&string1,&flag1,errmsg), @@ -1367,7 +1789,7 @@ int input_read_parameters( class_test(class_none_of_three(ppt->has_scalars,ppt->has_vectors,ppt->has_tensors), errmsg, - "You wrote: modes=%s. Could not identify any of the modes ('s', 'v', 't') in such input",string1); + "You wrote: modes='%s'. Could not identify any of the modes ('s', 'v', 't') in such input",string1); } if (ppt->has_scalars == _TRUE_) { @@ -1399,7 +1821,7 @@ int input_read_parameters( class_test(ppt->has_ad==_FALSE_ && ppt->has_bi ==_FALSE_ && ppt->has_cdi ==_FALSE_ && ppt->has_nid ==_FALSE_ && ppt->has_niv ==_FALSE_, errmsg, - "You wrote: ic=%s. Could not identify any of the initial conditions ('ad', 'bi', 'cdi', 'nid', 'niv') in such input",string1); + "You wrote: ic='%s'. Could not identify any of the initial conditions ('ad', 'bi', 'cdi', 'nid', 'niv') in such input",string1); } } @@ -1718,6 +2140,10 @@ int input_read_parameters( class_read_double("r",ppm->r); + if (ppt->has_scalars == _FALSE_) { + class_read_double("A_s",ppm->A_s); + } + if (ppm->r <= 0) { ppt->has_tensors = _FALSE_; } @@ -2089,6 +2515,17 @@ int input_read_parameters( } } + /** Do we want density and velocity transfer functions in Nbody gauge? */ + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)){ + class_call(parser_read_string(pfc,"Nbody gauge transfer functions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"y") != NULL))) { + ppt->has_Nbody_gauge_transfers = _TRUE_; + } + } + /* deal with selection functions */ if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { @@ -2111,7 +2548,7 @@ int input_read_parameters( ppt->selection=dirac; } else { - class_stop(errmsg,"In selection function input: type %s is unclear",string1); + class_stop(errmsg,"In selection function input: type '%s' is unclear",string1); } } @@ -2128,7 +2565,7 @@ int input_read_parameters( class_test(int1 > _SELECTION_NUM_MAX_, errmsg, - "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/transfer.h to at least this number", + "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/perturbations.h to at least this number", int1); ppt->selection_num = int1; @@ -2256,8 +2693,9 @@ int input_read_parameters( errmsg); if ((flag1 == _TRUE_)) { - if ((strstr(string1,"analytic") != NULL)) + if ((strstr(string1,"analytic") != NULL)){ ptr->has_nz_analytic = _TRUE_; + } else{ ptr->has_nz_file = _TRUE_; class_read_string("dNdz_selection",ptr->nz_file_name); @@ -2273,8 +2711,9 @@ int input_read_parameters( errmsg); if ((flag1 == _TRUE_)) { - if ((strstr(string1,"analytic") != NULL)) + if ((strstr(string1,"analytic") != NULL)){ ptr->has_nz_evo_analytic = _TRUE_; + } else{ ptr->has_nz_evo_file = _TRUE_; class_read_string("dNdz_evolution",ptr->nz_evo_file_name); @@ -2323,7 +2762,7 @@ int input_read_parameters( for (bin=0; binselection_num; bin++) { - /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times() */ + /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times() */ if (ppt->selection==gaussian) { z_max = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma; } @@ -2341,7 +2780,13 @@ int input_read_parameters( } /* end of z_max section */ - class_read_string("root",pop->root); + class_call(parser_read_string(pfc,"root",&string1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_){ + class_test(strlen(string1)>_FILENAMESIZE_-32,errmsg,"Root directory name is too long. Please install in other directory, or increase _FILENAMESIZE_ in common.h"); + strcpy(pop->root,string1); + } class_call(parser_read_string(pfc, "headers", @@ -2368,7 +2813,7 @@ int input_read_parameters( pop->output_format = camb_format; else class_stop(errmsg, - "You wrote: format=%s. Could not identify any of the possible formats ('class', 'CLASS', 'camb', 'CAMB')",string1); + "You wrote: format='%s'. Could not identify any of the possible formats ('class', 'CLASS', 'camb', 'CAMB')",string1); } } @@ -2388,9 +2833,77 @@ int input_read_parameters( if ((strstr(string1,"halofit") != NULL) || (strstr(string1,"Halofit") != NULL) || (strstr(string1,"HALOFIT") != NULL)) { pnl->method=nl_halofit; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->halofit_min_k_max,ppr->nonlinear_min_k_max)); ppt->has_nl_corrections_based_on_delta_m = _TRUE_; } + if ((strstr(string1,"hmcode") != NULL) || (strstr(string1,"HMCODE") != NULL) || (strstr(string1,"HMcode") != NULL) || (strstr(string1,"Hmcode") != NULL)) { + pnl->method=nl_HMcode; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + class_read_int("extrapolation_method",pnl->extrapolation_method); + + class_call(parser_read_string(pfc, + "feedback model", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if (strstr(string1,"emu_dmonly") != NULL) { + pnl->feedback = nl_emu_dmonly; + } + if (strstr(string1,"owls_dmonly") != NULL) { + pnl->feedback = nl_owls_dmonly; + } + if (strstr(string1,"owls_ref") != NULL) { + pnl->feedback = nl_owls_ref; + } + if (strstr(string1,"owls_agn") != NULL) { + pnl->feedback = nl_owls_agn; + } + if (strstr(string1,"owls_dblim") != NULL) { + pnl->feedback = nl_owls_dblim; + } + } + + class_call(parser_read_double(pfc,"eta_0",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"c_min",¶m3,&flag3,errmsg), + errmsg, + errmsg); + + class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), + errmsg, + "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); + + if ((flag2 == _TRUE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + class_read_double("c_min", pnl->c_min); + } + else if ((flag2 == _TRUE_) && (flag3 == _FALSE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + pnl->c_min = (0.98 - pnl->eta_0)/0.12; + } + else if ((flag2 == _FALSE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("c_min", pnl->c_min); + pnl->eta_0 = 0.98 - 0.12*pnl->c_min; + } + + class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_read_double("z_infinity", pnl->z_infinity); + } + } } /** (g) amount of information sent to standard output (none if all set to zero) */ @@ -2422,98 +2935,6 @@ int input_read_parameters( class_read_int("output_verbose", pop->output_verbose); - /** (h) all precision parameters */ - - /** - (h.1.) parameters related to the background */ - - class_read_double("a_ini_over_a_today_default",ppr->a_ini_over_a_today_default); - class_read_double("back_integration_stepsize",ppr->back_integration_stepsize); - class_read_double("tol_background_integration",ppr->tol_background_integration); - class_read_double("tol_initial_Omega_r",ppr->tol_initial_Omega_r); - class_read_double("tol_ncdm_initial_w",ppr->tol_ncdm_initial_w); - class_read_double("safe_phi_scf",ppr->safe_phi_scf); - - /** - (h.2.) parameters related to the thermodynamics */ - - class_read_string("sBBN file",ppr->sBBN_file); - - class_read_double("recfast_z_initial",ppr->recfast_z_initial); - - class_read_int("recfast_Nz0",ppr->recfast_Nz0); - class_read_double("tol_thermo_integration",ppr->tol_thermo_integration); - - class_read_int("recfast_Heswitch",ppr->recfast_Heswitch); - class_read_double("recfast_fudge_He",ppr->recfast_fudge_He); - - class_read_int("recfast_Hswitch",ppr->recfast_Hswitch); - class_read_double("recfast_fudge_H",ppr->recfast_fudge_H); - if (ppr->recfast_Hswitch == _TRUE_) { - class_read_double("recfast_delta_fudge_H",ppr->recfast_delta_fudge_H); - class_read_double("recfast_AGauss1",ppr->recfast_AGauss1); - class_read_double("recfast_AGauss2",ppr->recfast_AGauss2); - class_read_double("recfast_zGauss1",ppr->recfast_zGauss1); - class_read_double("recfast_zGauss2",ppr->recfast_zGauss2); - class_read_double("recfast_wGauss1",ppr->recfast_wGauss1); - class_read_double("recfast_wGauss2",ppr->recfast_wGauss2); - } - - class_read_double("recfast_z_He_1",ppr->recfast_z_He_1); - class_read_double("recfast_delta_z_He_1",ppr->recfast_delta_z_He_1); - class_read_double("recfast_z_He_2",ppr->recfast_z_He_2); - class_read_double("recfast_delta_z_He_2",ppr->recfast_delta_z_He_2); - class_read_double("recfast_z_He_3",ppr->recfast_z_He_3); - class_read_double("recfast_delta_z_He_3",ppr->recfast_delta_z_He_3); - class_read_double("recfast_x_He0_trigger",ppr->recfast_x_He0_trigger); - class_read_double("recfast_x_He0_trigger2",ppr->recfast_x_He0_trigger2); - class_read_double("recfast_x_He0_trigger_delta",ppr->recfast_x_He0_trigger_delta); - class_read_double("recfast_x_H0_trigger",ppr->recfast_x_H0_trigger); - class_read_double("recfast_x_H0_trigger2",ppr->recfast_x_H0_trigger2); - class_read_double("recfast_x_H0_trigger_delta",ppr->recfast_x_H0_trigger_delta); - class_read_double("recfast_H_frac",ppr->recfast_H_frac); - - class_read_string("Alpha_inf hyrec file",ppr->hyrec_Alpha_inf_file); - class_read_string("R_inf hyrec file",ppr->hyrec_R_inf_file); - class_read_string("two_photon_tables hyrec file",ppr->hyrec_two_photon_tables_file); - - class_read_double("reionization_z_start_max",ppr->reionization_z_start_max); - class_read_double("reionization_sampling",ppr->reionization_sampling); - class_read_double("reionization_optical_depth_tol",ppr->reionization_optical_depth_tol); - class_read_double("reionization_start_factor",ppr->reionization_start_factor); - - class_read_int("thermo_rate_smoothing_radius",ppr->thermo_rate_smoothing_radius); - - /** - (h.3.) parameters related to the perturbations */ - - class_read_int("evolver",ppr->evolver); - - class_read_double("k_scalar_min_tau0",ppr->k_min_tau0); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_sub",ppr->k_step_sub); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_super",ppr->k_step_super); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_transition",ppr->k_step_transition); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_k_per_decade_for_pk",ppr->k_per_decade_for_pk); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_k_per_decade_for_bao",ppr->k_per_decade_for_bao); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_bao_center",ppr->k_bao_center); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_bao_width",ppr->k_bao_width); // obsolete precision parameter: read for compatibility with old precision files - - class_read_double("k_min_tau0",ppr->k_min_tau0); - class_read_double("k_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); - class_read_double("k_step_sub",ppr->k_step_sub); - class_read_double("k_step_super",ppr->k_step_super); - class_read_double("k_step_transition",ppr->k_step_transition); - class_read_double("k_step_super_reduction",ppr->k_step_super_reduction); - class_read_double("k_per_decade_for_pk",ppr->k_per_decade_for_pk); - class_read_double("k_per_decade_for_bao",ppr->k_per_decade_for_bao); - class_read_double("k_bao_center",ppr->k_bao_center); - class_read_double("k_bao_width",ppr->k_bao_width); - - class_read_double("start_small_k_at_tau_c_over_tau_h",ppr->start_small_k_at_tau_c_over_tau_h); - class_read_double("start_large_k_at_tau_h_over_tau_k",ppr->start_large_k_at_tau_h_over_tau_k); - class_read_double("tight_coupling_trigger_tau_c_over_tau_h",ppr->tight_coupling_trigger_tau_c_over_tau_h); - class_read_double("tight_coupling_trigger_tau_c_over_tau_k",ppr->tight_coupling_trigger_tau_c_over_tau_k); - class_read_double("start_sources_at_tau_c_over_tau_h",ppr->start_sources_at_tau_c_over_tau_h); - - class_read_int("tight_coupling_approximation",ppr->tight_coupling_approximation); if (ppt->has_tensors == _TRUE_) { /** - ---> Include ur and ncdm shear in tensor computation? */ @@ -2535,31 +2956,6 @@ int input_read_parameters( pth->compute_cb2_derivatives = _TRUE_; } - class_read_int("l_max_g",ppr->l_max_g); - class_read_int("l_max_pol_g",ppr->l_max_pol_g); - class_read_int("l_max_dr",ppr->l_max_dr); - class_read_int("l_max_ur",ppr->l_max_ur); - if (pba->N_ncdm>0) - class_read_int("l_max_ncdm",ppr->l_max_ncdm); - class_read_int("l_max_g_ten",ppr->l_max_g_ten); - class_read_int("l_max_pol_g_ten",ppr->l_max_pol_g_ten); - class_read_double("curvature_ini",ppr->curvature_ini); - class_read_double("entropy_ini",ppr->entropy_ini); - class_read_double("gw_ini",ppr->gw_ini); - class_read_double("perturb_integration_stepsize",ppr->perturb_integration_stepsize); - class_read_double("tol_tau_approx",ppr->tol_tau_approx); - class_read_double("tol_perturb_integration",ppr->tol_perturb_integration); - class_read_double("perturb_sampling_stepsize",ppr->perturb_sampling_stepsize); - - class_read_int("radiation_streaming_approximation",ppr->radiation_streaming_approximation); - class_read_double("radiation_streaming_trigger_tau_over_tau_k",ppr->radiation_streaming_trigger_tau_over_tau_k); - class_read_double("radiation_streaming_trigger_tau_c_over_tau",ppr->radiation_streaming_trigger_tau_c_over_tau); - - class_read_int("ur_fluid_approximation",ppr->ur_fluid_approximation); - class_read_int("ncdm_fluid_approximation",ppr->ncdm_fluid_approximation); - class_read_double("ur_fluid_trigger_tau_over_tau_k",ppr->ur_fluid_trigger_tau_over_tau_k); - class_read_double("ncdm_fluid_trigger_tau_over_tau_k",ppr->ncdm_fluid_trigger_tau_over_tau_k); - class_test(ppr->ur_fluid_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, errmsg, "please choose different values for precision parameters ur_fluid_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); @@ -2575,48 +2971,35 @@ int input_read_parameters( "please choose different values for precision parameters ncdm_fluid_trigger_tau_over_tau_k and ur_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); } + if (pba->Omega0_idr != 0.){ + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); - class_read_double("neglect_CMB_sources_below_visibility",ppr->neglect_CMB_sources_below_visibility); - - /** - (h.4.) parameter related to the primordial spectra */ - - class_read_double("k_per_decade_primordial",ppr->k_per_decade_primordial); - class_read_double("primordial_inflation_ratio_min",ppr->primordial_inflation_ratio_min); - class_read_double("primordial_inflation_ratio_max",ppr->primordial_inflation_ratio_max); - class_read_int("primordial_inflation_phi_ini_maxit",ppr->primordial_inflation_phi_ini_maxit); - class_read_double("primordial_inflation_pt_stepsize",ppr->primordial_inflation_pt_stepsize); - class_read_double("primordial_inflation_bg_stepsize",ppr->primordial_inflation_bg_stepsize); - class_read_double("primordial_inflation_tol_integration",ppr->primordial_inflation_tol_integration); - class_read_double("primordial_inflation_attractor_precision_pivot",ppr->primordial_inflation_attractor_precision_pivot); - class_read_double("primordial_inflation_attractor_precision_initial",ppr->primordial_inflation_attractor_precision_initial); - class_read_int("primordial_inflation_attractor_maxit",ppr->primordial_inflation_attractor_maxit); - class_read_double("primordial_inflation_tol_curvature",ppr->primordial_inflation_tol_curvature); - class_read_double("primordial_inflation_aH_ini_target",ppr->primordial_inflation_aH_ini_target); - class_read_double("primordial_inflation_end_dphi",ppr->primordial_inflation_end_dphi); - class_read_double("primordial_inflation_end_logstep",ppr->primordial_inflation_end_logstep); - class_read_double("primordial_inflation_small_epsilon",ppr->primordial_inflation_small_epsilon); - class_read_double("primordial_inflation_small_epsilon_tol",ppr->primordial_inflation_small_epsilon_tol); - class_read_double("primordial_inflation_extra_efolds",ppr->primordial_inflation_extra_efolds); - - /** - (h.5.) parameter related to the transfer functions */ - - class_read_double("l_logstep",ppr->l_logstep); - class_read_int("l_linstep",ppr->l_linstep); - - class_read_double("hyper_x_min",ppr->hyper_x_min); - class_read_double("hyper_sampling_flat",ppr->hyper_sampling_flat); - class_read_double("hyper_sampling_curved_low_nu",ppr->hyper_sampling_curved_low_nu); - class_read_double("hyper_sampling_curved_high_nu",ppr->hyper_sampling_curved_high_nu); - class_read_double("hyper_nu_sampling_step",ppr->hyper_nu_sampling_step); - class_read_double("hyper_phi_min_abs",ppr->hyper_phi_min_abs); - class_read_double("hyper_x_tol",ppr->hyper_x_tol); - class_read_double("hyper_flat_approximation_nu",ppr->hyper_flat_approximation_nu); - - class_read_double("q_linstep",ppr->q_linstep); - class_read_double("q_logstep_spline",ppr->q_logstep_spline); - class_read_double("q_logstep_open",ppr->q_logstep_open); - class_read_double("q_logstep_trapzd",ppr->q_logstep_trapzd); - class_read_double("q_numstep_transition",ppr->q_numstep_transition); + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->ur_fluid_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and ur_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->ncdm_fluid_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and ncdm_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + } + + + /** + * Here we can place all obsolete (deprecated) names for the precision parameters, + * so they will still get read. + * The new parameter names should be used preferrably + * */ + class_read_double("k_scalar_min_tau0",ppr->k_min_tau0); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_sub",ppr->k_step_sub); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_super",ppr->k_step_super); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_transition",ppr->k_step_transition); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_pk",ppr->k_per_decade_for_pk); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_bao",ppr->k_per_decade_for_bao); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_center",ppr->k_bao_center); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_width",ppr->k_bao_width); // obsolete precision parameter: read for compatibility with old precision files class_read_double("k_step_trans_scalars",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files class_read_double("k_step_trans_tensors",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files @@ -2624,22 +3007,6 @@ int input_read_parameters( class_read_double("q_linstep_trans",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files class_read_double("q_logstep_trans",ppr->q_logstep_spline); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("transfer_neglect_delta_k_S_t0",ppr->transfer_neglect_delta_k_S_t0); - class_read_double("transfer_neglect_delta_k_S_t1",ppr->transfer_neglect_delta_k_S_t1); - class_read_double("transfer_neglect_delta_k_S_t2",ppr->transfer_neglect_delta_k_S_t2); - class_read_double("transfer_neglect_delta_k_S_e",ppr->transfer_neglect_delta_k_S_e); - class_read_double("transfer_neglect_delta_k_V_t1",ppr->transfer_neglect_delta_k_V_t1); - class_read_double("transfer_neglect_delta_k_V_t2",ppr->transfer_neglect_delta_k_V_t2); - class_read_double("transfer_neglect_delta_k_V_e",ppr->transfer_neglect_delta_k_V_e); - class_read_double("transfer_neglect_delta_k_V_b",ppr->transfer_neglect_delta_k_V_b); - class_read_double("transfer_neglect_delta_k_T_t2",ppr->transfer_neglect_delta_k_T_t2); - class_read_double("transfer_neglect_delta_k_T_e",ppr->transfer_neglect_delta_k_T_e); - class_read_double("transfer_neglect_delta_k_T_b",ppr->transfer_neglect_delta_k_T_b); - - class_read_double("transfer_neglect_late_source",ppr->transfer_neglect_late_source); - - class_read_double("l_switch_limber",ppr->l_switch_limber); - class_call(parser_read_string(pfc, "l_switch_limber_for_cl_density_over_z", &string1, @@ -2652,30 +3019,6 @@ int input_read_parameters( errmsg, "You passed in input a precision parameter called l_switch_limber_for_cl_density_over_z. This syntax is deprecated since v2.5.0. Please use instead the two precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z, defined in include/common.h, and allowing for better performance."); - class_read_double("l_switch_limber_for_nc_local_over_z",ppr->l_switch_limber_for_nc_local_over_z); - class_read_double("l_switch_limber_for_nc_los_over_z",ppr->l_switch_limber_for_nc_los_over_z); - - class_read_double("selection_cut_at_sigma",ppr->selection_cut_at_sigma); - class_read_double("selection_sampling",ppr->selection_sampling); - class_read_double("selection_sampling_bessel",ppr->selection_sampling_bessel); - class_read_double("selection_sampling_bessel_los",ppr->selection_sampling_bessel_los); - class_read_double("selection_tophat_edge",ppr->selection_tophat_edge); - - /** - (h.6.) parameters related to nonlinear calculations */ - - class_read_double("halofit_dz",ppr->halofit_dz); - class_read_double("halofit_min_k_nonlinear",ppr->halofit_min_k_nonlinear); - class_read_double("halofit_k_per_decade",ppr->halofit_k_per_decade); - class_read_double("halofit_sigma_precision",ppr->halofit_sigma_precision); - - /** - (h.7.) parameter related to lensing */ - - class_read_int("accurate_lensing",ppr->accurate_lensing); - class_read_int("delta_l_max",ppr->delta_l_max); - if (ppr->accurate_lensing == _TRUE_) { - class_read_int("num_mu_minus_lmax",ppr->num_mu_minus_lmax); - class_read_int("tol_gauss_legendre",ppr->tol_gauss_legendre); - } /** (i) Write values in file */ if (ple->has_lensed_cls == _TRUE_) ppt->l_scalar_max+=ppr->delta_l_max; @@ -2746,6 +3089,33 @@ int input_read_parameters( } + /** - (i.5) special steps if we want Halofit with wa_fld non-zero: + so-called "Pk_equal method" of 0810.0190 and 1601.07230 */ + + if ((pnl->method == nl_halofit) && (pba->Omega0_fld != 0.) && (pba->wa_fld != 0.)){ + + class_call(parser_read_string(pfc,"pk_eq",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + pnl->has_pk_eq = _TRUE_; + + } + } + + if (pnl->has_pk_eq == _TRUE_) { + + if (input_verbose > 0) { + printf(" -> since you want to use Halofit with a non-zero wa_fld, calling background module to\n"); + printf(" extract the effective w(tau), Omega_m(tau) parameters required by the Pk_equal method\n"); + } + class_call(input_prepare_pk_eq(ppr,pba,pth,pnl,input_verbose,errmsg), + errmsg, + errmsg); + } + return _SUCCESS_; } @@ -2778,7 +3148,6 @@ int input_default_params( ) { double sigma_B; /* Stefan-Boltzmann constant in \f$ W/m^2/K^4 = Kg/K^4/s^3 \f$*/ - int filenum; sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); @@ -2805,6 +3174,9 @@ int input_default_params( pba->T_cmb = 2.7255; pba->Omega0_g = (4.*sigma_B/_c_*pow(pba->T_cmb,4.)) / (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); pba->Omega0_ur = 3.046*7./8.*pow(4./11.,4./3.)*pba->Omega0_g; + pba->Omega0_idr = 0.0; + pba->Omega0_idm_dr = 0.0; + pba->T_idr = 0.0; pba->Omega0_b = 0.022032/pow(pba->h,2); pba->Omega0_cdm = 0.12038/pow(pba->h,2); pba->Omega0_dcdmdr = 0.0; @@ -2833,12 +3205,16 @@ int input_default_params( pba->Omega0_k = 0.; pba->K = 0.; pba->sgnK = 0; - pba->Omega0_lambda = 1.-pba->Omega0_k-pba->Omega0_g-pba->Omega0_ur-pba->Omega0_b-pba->Omega0_cdm-pba->Omega0_ncdm_tot-pba->Omega0_dcdmdr; + pba->Omega0_lambda = 1.-pba->Omega0_k-pba->Omega0_g-pba->Omega0_ur-pba->Omega0_b-pba->Omega0_cdm-pba->Omega0_ncdm_tot-pba->Omega0_dcdmdr-pba->Omega0_idm_dr-pba->Omega0_idr; pba->Omega0_fld = 0.; pba->a_today = 1.; - pba->w0_fld=-1.; - pba->wa_fld=0.; - pba->cs2_fld=1.; + pba->use_ppf = _TRUE_; + pba->c_gamma_over_c_fld = 0.4; + pba->fluid_equation_of_state = CLP; + pba->w0_fld = -1.; + pba->wa_fld = 0.; + pba->Omega_EDE = 0.; + pba->cs2_fld = 1.; pba->shooting_failed = _FALSE_; @@ -2875,6 +3251,11 @@ int input_default_params( pth->compute_damping_scale = _FALSE_; + pth->a_idm_dr = 0.; + pth->b_idr = 0.; + pth->nindex_idm_dr = 4.; + pth->m_idm = 1.e11; + /** - perturbation structure */ ppt->has_cl_cmb_temperature = _FALSE_; @@ -2885,6 +3266,7 @@ int input_default_params( ppt->has_pk_matter = _FALSE_; ppt->has_density_transfers = _FALSE_; ppt->has_velocity_transfers = _FALSE_; + ppt->has_metricpotential_transfers = _FALSE_; ppt->has_nl_corrections_based_on_delta_m = _FALSE_; @@ -2893,6 +3275,8 @@ int input_default_params( ppt->has_nc_lens = _FALSE_; ppt->has_nc_gr = _FALSE_; + //ppt->pk_only_cdm_bar=_FALSE_; + ppt->switch_sw = 1; ppt->switch_eisw = 1; ppt->switch_lisw = 1; @@ -2919,21 +3303,16 @@ int input_default_params( ppt->l_vector_max=500; ppt->l_tensor_max=500; ppt->l_lss_max=300; - ppt->k_max_for_pk=0.1; + ppt->k_max_for_pk=1.; ppt->gauge=synchronous; + ppt->idr_nature=idr_free_streaming; + + ppt->has_Nbody_gauge_transfers = _FALSE_; + ppt->k_output_values_num=0; ppt->store_perturbations = _FALSE_; - ppt->number_of_scalar_titles=0; - ppt->number_of_vector_titles=0; - ppt->number_of_tensor_titles=0; - for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ - ppt->scalar_perturbations_data[filenum] = NULL; - ppt->vector_perturbations_data[filenum] = NULL; - ppt->tensor_perturbations_data[filenum] = NULL; - } - ppt->index_k_output_values=NULL; ppt->three_ceff2_ur=1.; ppt->three_cvis2_ur=1.; @@ -3024,10 +3403,19 @@ int input_default_params( ppm->custom9=0.; ppm->custom10=0.; + /** - nonlinear structure */ + + pnl->method = nl_none; + pnl->extrapolation_method = extrap_max_scaled; + pnl->has_pk_eq = _FALSE_; + + pnl->feedback = nl_emu_dmonly; + pnl->z_infinity = 10.; + /** - transfer structure */ ptr->selection_bias[0]=1.; - ptr->selection_magnification_bias[0]=1.; + ptr->selection_magnification_bias[0]=0.; ptr->lcmb_rescale=1.; ptr->lcmb_pivot=0.1; ptr->lcmb_tilt=0.; @@ -3037,6 +3425,15 @@ int input_default_params( ptr->has_nz_evo_analytic = _FALSE_; ptr->has_nz_evo_file = _FALSE_; + /** - spectra structure */ + + psp->z_max_pk = pop->z_pk[0]; + psp->non_diag=0; + + /** - lensing structure */ + + ple->has_lensed_cls = _FALSE_; + /** - output structure */ pop->z_pk_num = 1; @@ -3049,21 +3446,6 @@ int input_default_params( pop->write_perturbations = _FALSE_; pop->write_primordial = _FALSE_; - /** - spectra structure */ - - psp->z_max_pk = pop->z_pk[0]; - psp->non_diag=0; - - /** - nonlinear structure */ - - /** - lensing structure */ - - ple->has_lensed_cls = _FALSE_; - - /** - nonlinear structure */ - - pnl->method = nl_none; - /** - all verbose parameters */ pba->background_verbose = 0; @@ -3093,252 +3475,21 @@ int input_default_params( int input_default_precision ( struct precision * ppr ) { - /** Initialize presicion parameters for different structures: - * - parameters related to the background - */ - - ppr->a_ini_over_a_today_default = 1.e-14; - ppr->back_integration_stepsize = 7.e-3; - ppr->tol_background_integration = 1.e-2; - - ppr->tol_initial_Omega_r = 1.e-4; - ppr->tol_M_ncdm = 1.e-7; - ppr->tol_ncdm = 1.e-3; - ppr->tol_ncdm_synchronous = 1.e-3; - ppr->tol_ncdm_newtonian = 1.e-5; - ppr->tol_ncdm_bg = 1.e-5; - ppr->tol_ncdm_initial_w=1.e-3; - - /** - * - parameters related to the thermodynamics - */ - - /* for bbn */ - sprintf(ppr->sBBN_file,__CLASSDIR__); - strcat(ppr->sBBN_file,"/bbn/sBBN.dat"); - - /* for recombination */ - - ppr->recfast_z_initial=1.e4; - - ppr->recfast_Nz0=20000; - ppr->tol_thermo_integration=1.e-2; - - ppr->recfast_Heswitch=6; /* from recfast 1.4 */ - ppr->recfast_fudge_He=0.86; /* from recfast 1.4 */ - - ppr->recfast_Hswitch = _TRUE_; /* from recfast 1.5 */ - ppr->recfast_fudge_H = 1.14; /* from recfast 1.4 */ - ppr->recfast_delta_fudge_H = -0.015; /* from recfast 1.5.2 */ - ppr->recfast_AGauss1 = -0.14; /* from recfast 1.5 */ - ppr->recfast_AGauss2 = 0.079; /* from recfast 1.5.2 */ - ppr->recfast_zGauss1 = 7.28; /* from recfast 1.5 */ - ppr->recfast_zGauss2 = 6.73; /* from recfast 1.5.2 */ - ppr->recfast_wGauss1 = 0.18; /* from recfast 1.5 */ - ppr->recfast_wGauss2 = 0.33; /* from recfast 1.5 */ - - ppr->recfast_z_He_1 = 8000.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_1 = 50.; /* found to be OK on 3.09.10 */ - ppr->recfast_z_He_2 = 5000.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_2 = 100.; /* found to be OK on 3.09.10 */ - ppr->recfast_z_He_3 = 3500.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_3 = 50.; /* found to be OK on 3.09.10 */ - ppr->recfast_x_He0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Helium */ - ppr->recfast_x_He0_trigger2 = 0.995; /* raised from 0.985 to same as previous one for smoother Helium */ - ppr->recfast_x_He0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ - ppr->recfast_x_H0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Hydrogen */ - ppr->recfast_x_H0_trigger2 = 0.995; /* raised from 0.98 to same as previous one for smoother Hydrogen */ - ppr->recfast_x_H0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ - - ppr->recfast_H_frac=1.e-3; /* from recfast 1.4 */ - - sprintf(ppr->hyrec_Alpha_inf_file,__CLASSDIR__); - strcat(ppr->hyrec_Alpha_inf_file,"/hyrec/Alpha_inf.dat"); - sprintf(ppr->hyrec_R_inf_file,__CLASSDIR__); - strcat(ppr->hyrec_R_inf_file,"/hyrec/R_inf.dat"); - sprintf(ppr->hyrec_two_photon_tables_file,__CLASSDIR__); - strcat(ppr->hyrec_two_photon_tables_file,"/hyrec/two_photon_tables.dat"); - - /* for reionization */ - - ppr->reionization_z_start_max = 50.; - ppr->reionization_sampling=5.e-2; - ppr->reionization_optical_depth_tol=1.e-4; - ppr->reionization_start_factor=8.; - - /* general */ - - ppr->thermo_rate_smoothing_radius=50; - - /** - * - parameters related to the perturbations - */ - - ppr->evolver = ndf15; - - ppr->k_min_tau0=0.1; - ppr->k_max_tau0_over_l_max=2.4; // very relevant for accuracy of lensed ClTT at highest l's - ppr->k_step_sub=0.05; - ppr->k_step_super=0.002; - ppr->k_step_transition=0.2; - ppr->k_step_super_reduction=0.1; - ppr->k_per_decade_for_pk=10.; - ppr->k_per_decade_for_bao=70.; - ppr->k_bao_center=3.; - ppr->k_bao_width=4.; - - ppr->start_small_k_at_tau_c_over_tau_h = 0.0015; /* decrease to start earlier in time */ - ppr->start_large_k_at_tau_h_over_tau_k = 0.07; /* decrease to start earlier in time */ - ppr->tight_coupling_trigger_tau_c_over_tau_h=0.015; /* decrease to switch off earlier in time */ - ppr->tight_coupling_trigger_tau_c_over_tau_k=0.01; /* decrease to switch off earlier in time */ - ppr->start_sources_at_tau_c_over_tau_h = 0.008; /* decrease to start earlier in time */ - ppr->tight_coupling_approximation=(int)compromise_CLASS; - - ppr->l_max_g=12; - ppr->l_max_pol_g=10; - ppr->l_max_dr=17; - ppr->l_max_ur=17; - ppr->l_max_ncdm=17; - ppr->l_max_g_ten=5; - ppr->l_max_pol_g_ten=5; - - ppr->curvature_ini=1.; /* initial curvature; used to fix adiabatic initial conditions; must remain fixed to one as long as the primordial adiabatic spectrum stands for the curvature power spectrum */ - ppr->entropy_ini=1.; /* initial entropy; used to fix isocurvature initial conditions; must remain fixed to one as long as the primordial isocurvature spectrum stands for an entropy power spectrum */ - //ppr->gw_ini=0.25; /* to match normalization convention for GW in most of literature and ensure standard definition of r */ - ppr->gw_ini=1.; - - ppr->perturb_integration_stepsize=0.5; - - ppr->tol_tau_approx=1.e-10; - ppr->tol_perturb_integration=1.e-5; - ppr->perturb_sampling_stepsize=0.10; - - ppr->radiation_streaming_approximation = rsa_MD_with_reio; - ppr->radiation_streaming_trigger_tau_over_tau_k = 45.; - ppr->radiation_streaming_trigger_tau_c_over_tau = 5.; - - ppr->ur_fluid_approximation = ufa_CLASS; - ppr->ur_fluid_trigger_tau_over_tau_k = 30.; - - ppr->ncdm_fluid_approximation = ncdmfa_CLASS; - ppr->ncdm_fluid_trigger_tau_over_tau_k = 31.; - - ppr->neglect_CMB_sources_below_visibility = 1.e-3; - - /** - * - parameter related to the primordial spectra - */ - - ppr->k_per_decade_primordial = 10.; - - ppr->primordial_inflation_ratio_min=100.; - ppr->primordial_inflation_ratio_max=1/50.; - ppr->primordial_inflation_phi_ini_maxit=10000; - ppr->primordial_inflation_pt_stepsize=0.01; - ppr->primordial_inflation_bg_stepsize=0.005; - ppr->primordial_inflation_tol_integration=1.e-3; - ppr->primordial_inflation_attractor_precision_pivot=0.001; - ppr->primordial_inflation_attractor_precision_initial=0.1; - ppr->primordial_inflation_attractor_maxit=10; - ppr->primordial_inflation_tol_curvature=1.e-3; - ppr->primordial_inflation_aH_ini_target=0.9; - ppr->primordial_inflation_end_dphi=1.e-10; - ppr->primordial_inflation_end_logstep=10.; - ppr->primordial_inflation_small_epsilon=0.1; - ppr->primordial_inflation_small_epsilon_tol=0.01; - ppr->primordial_inflation_extra_efolds=2.; - - /** - * - parameter related to the transfer functions - */ - - ppr->l_logstep=1.12; - ppr->l_linstep=40; - - ppr->hyper_x_min = 1.e-5; - ppr->hyper_sampling_flat = 8.; - ppr->hyper_sampling_curved_low_nu = 6.0; - ppr->hyper_sampling_curved_high_nu = 3.0; - ppr->hyper_nu_sampling_step = 1000.; - ppr->hyper_phi_min_abs = 1.e-10; - ppr->hyper_x_tol = 1.e-4; - ppr->hyper_flat_approximation_nu = 4000.; - - ppr->q_linstep=0.45; - ppr->q_logstep_spline=170.; - ppr->q_logstep_open=6.; - ppr->q_logstep_trapzd=20.; - ppr->q_numstep_transition=250.; - - ppr->transfer_neglect_delta_k_S_t0 = 0.15; - ppr->transfer_neglect_delta_k_S_t1 = 0.04; - ppr->transfer_neglect_delta_k_S_t2 = 0.15; - ppr->transfer_neglect_delta_k_S_e = 0.11; - ppr->transfer_neglect_delta_k_V_t1 = 1.; - ppr->transfer_neglect_delta_k_V_t2 = 1.; - ppr->transfer_neglect_delta_k_V_e = 1.; - ppr->transfer_neglect_delta_k_V_b = 1.; - ppr->transfer_neglect_delta_k_T_t2 = 0.2; - ppr->transfer_neglect_delta_k_T_e = 0.25; - ppr->transfer_neglect_delta_k_T_b = 0.1; - - ppr->transfer_neglect_late_source = 400.; - - ppr->l_switch_limber=10.; - // For density Cl, we recommend not to use the Limber approximation - // at all, and hence to put here a very large number (e.g. 10000); but - // if you have wide and smooth selection functions you may wish to - // use it; then 100 might be OK - ppr->l_switch_limber_for_nc_local_over_z=100.; - // For terms integrated along the line-of-sight involving spherical - // Bessel functions (but not their derivatives), Limber - // approximation works well. High precision can be reached with 2000 - // only. But if you have wide and smooth selection functions you may - // reduce to e.g. 30. - ppr->l_switch_limber_for_nc_los_over_z=30.; - - ppr->selection_cut_at_sigma=5.; - ppr->selection_sampling=50; - ppr->selection_sampling_bessel=20; - ppr->selection_sampling_bessel_los=ppr->selection_sampling_bessel; - ppr->selection_tophat_edge=0.1; - - /** - * - parameters related to spectra module - */ - - /* nothing */ - - /** - * - parameters related to nonlinear module - */ - - ppr->halofit_dz=0.1; - ppr->halofit_min_k_nonlinear=0.0035; - ppr->halofit_k_per_decade = 80.; - ppr->halofit_sigma_precision=0.05; - ppr->halofit_min_k_max=5.; - - /** - * - parameter related to lensing - */ - - ppr->accurate_lensing=_FALSE_; - ppr->num_mu_minus_lmax=70; - ppr->delta_l_max=500; // 750 for 0.2% near l_max, 1000 for 0.1% - /** * - automatic estimate of machine precision */ + ppr->smallest_allowed_variation=DBL_EPSILON; //get_machine_precision(&(ppr->smallest_allowed_variation)); - ppr->smallest_allowed_variation=DBL_EPSILON; class_test(ppr->smallest_allowed_variation < 0, ppr->error_message, "smallest_allowed_variation = %e < 0",ppr->smallest_allowed_variation); - ppr->tol_gauss_legendre = ppr->smallest_allowed_variation; + +#define __ASSIGN_DEFAULT_PRECISION__ +#include "precisions.h" +#undef __ASSIGN_DEFAULT_PRECISION__ return _SUCCESS_; @@ -3497,20 +3648,37 @@ int input_try_unknown_parameters(double * unknown_parameter, struct nonlinear nl; /* for non-linear spectra */ struct lensing le; /* for lensed spectra */ struct output op; /* for output files */ + int i; double rho_dcdm_today, rho_dr_today; struct fzerofun_workspace * pfzw; int input_verbose; int flag; int param; + short compute_sigma8 = _FALSE_; pfzw = (struct fzerofun_workspace *) voidpfzw; - + /** - Read input parameters */ for (i=0; i < unknown_parameters_size; i++) { sprintf(pfzw->fc.value[pfzw->unknown_parameters_index[i]], "%e",unknown_parameter[i]); } + class_call(input_read_precisions(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + class_call(input_read_parameters(&(pfzw->fc), &pr, &ba, @@ -3533,81 +3701,114 @@ int input_try_unknown_parameters(double * unknown_parameter, errmsg), errmsg, errmsg); + if (flag == _TRUE_) input_verbose = param; else input_verbose = 0; - // Optimise flags for sigma8 calculation. - pt.k_max_for_pk=1.0; - pt.has_pk_matter=_TRUE_; - pt.has_perturbations = _TRUE_; - pt.has_cl_cmb_temperature = _FALSE_; - pt.has_cls = _FALSE_; - pt.has_cl_cmb_polarization = _FALSE_; - pt.has_cl_cmb_lensing_potential = _FALSE_; - pt.has_cl_number_count = _FALSE_; - pt.has_cl_lensing_potential=_FALSE_; - pt.has_density_transfers=_FALSE_; - pt.has_velocity_transfers=_FALSE_; - - - /** - Do computations */ + + /** - Optimise flags for sigma8 calculation.*/ + for (i=0; i < unknown_parameters_size; i++) { + if (pfzw->target_name[i] == sigma8) { + compute_sigma8 = _TRUE_; + } + } + if (compute_sigma8 == _TRUE_) { + pt.k_max_for_pk=1.0; + pt.has_pk_matter=_TRUE_; + pt.has_perturbations = _TRUE_; + pt.has_cl_cmb_temperature = _FALSE_; + pt.has_cls = _FALSE_; + pt.has_cl_cmb_polarization = _FALSE_; + pt.has_cl_cmb_lensing_potential = _FALSE_; + pt.has_cl_number_count = _FALSE_; + pt.has_cl_lensing_potential=_FALSE_; + pt.has_density_transfers=_FALSE_; + pt.has_velocity_transfers=_FALSE_; + + } + + /** - Shoot forward into class up to required stage */ if (pfzw->required_computation_stage >= cs_background){ if (input_verbose>2) printf("Stage 1: background\n"); ba.background_verbose = 0; - class_call(background_init(&pr,&ba), ba.error_message, errmsg); + class_call(background_init(&pr,&ba), + ba.error_message, + errmsg + ); } if (pfzw->required_computation_stage >= cs_thermodynamics){ - if (input_verbose>2) - printf("Stage 2: thermodynamics\n"); + if (input_verbose>2) + printf("Stage 2: thermodynamics\n"); pr.recfast_Nz0 = 10000; th.thermodynamics_verbose = 0; - class_call(thermodynamics_init(&pr,&ba,&th), th.error_message, errmsg); + class_call_except(thermodynamics_init(&pr,&ba,&th), + th.error_message, + errmsg, + background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_perturbations){ - if (input_verbose>2) - printf("Stage 3: perturbations\n"); + if (input_verbose>2) + printf("Stage 3: perturbations\n"); pt.perturbations_verbose = 0; - class_call(perturb_init(&pr,&ba,&th,&pt), pt.error_message, errmsg); + class_call_except(perturb_init(&pr,&ba,&th,&pt), + pt.error_message, + errmsg, + thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_primordial){ if (input_verbose>2) printf("Stage 4: primordial\n"); pm.primordial_verbose = 0; - class_call(primordial_init(&pr,&pt,&pm), pm.error_message, errmsg); + class_call_except(primordial_init(&pr,&pt,&pm), + pm.error_message, + errmsg, + perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_nonlinear){ if (input_verbose>2) printf("Stage 5: nonlinear\n"); nl.nonlinear_verbose = 0; - class_call(nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl), nl.error_message, errmsg); + class_call_except(nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl), + nl.error_message, + errmsg, + primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_transfer){ if (input_verbose>2) printf("Stage 6: transfer\n"); tr.transfer_verbose = 0; - class_call(transfer_init(&pr,&ba,&th,&pt,&nl,&tr), tr.error_message, errmsg); + class_call_except(transfer_init(&pr,&ba,&th,&pt,&nl,&tr), + tr.error_message, + errmsg, + nonlinear_free(&nl);primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_spectra){ if (input_verbose>2) printf("Stage 7: spectra\n"); sp.spectra_verbose = 0; - class_call(spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp),sp.error_message, errmsg); + class_call_except(spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp), + sp.error_message, + errmsg, + transfer_free(&tr);nonlinear_free(&nl);primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } - + /** - Get the corresponding shoot variable and put into output */ for (i=0; i < pfzw->target_size; i++) { switch (pfzw->target_name[i]) { - case tn_sigma8: - output[i] = sp.sigma8 - pfzw->target_value[i]; - break; case theta_s: output[i] = 100.*th.rs_rec/th.ra_rec-pfzw->target_value[i]; break; @@ -3641,6 +3842,9 @@ int input_try_unknown_parameters(double * unknown_parameter, rho_dr_today = 0.; output[i] = -(rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)+ba.Omega0_dcdmdr; break; + case sigma8: + output[i] = nl.sigma8[nl.index_pk_m]-pfzw->target_value[i]; + break; } } @@ -3698,6 +3902,22 @@ int input_get_guess(double *xguess, /* Cheat to read only known parameters: */ pfzw->fc.size -= pfzw->target_size; + + class_call(input_read_precisions(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + class_call(input_read_parameters(&(pfzw->fc), &pr, &ba, @@ -3712,6 +3932,7 @@ int input_get_guess(double *xguess, errmsg), errmsg, errmsg); + pfzw->fc.size += pfzw->target_size; /** Summary: */ /** - Here we should write reasonable guesses for the unknown parameters. @@ -3720,11 +3941,6 @@ int input_get_guess(double *xguess, for (index_guess=0; index_guess < pfzw->target_size; index_guess++) { switch (pfzw->target_name[index_guess]) { - case tn_sigma8: - // Assume linear relationship between A_s and sigma8 and fix coefficient according to vanilla LambdaCDM. Should be good enough ... - xguess[index_guess] = 2.43e-9/0.87659*pfzw->target_value[index_guess]; - dxdy[index_guess] = 2.43e-9/0.87659; - break; case theta_s: xguess[index_guess] = 3.54*pow(pfzw->target_value[index_guess],2)-5.455*pfzw->target_value[index_guess]+2.548; dxdy[index_guess] = (7.08*pfzw->target_value[index_guess]-5.455); @@ -3733,7 +3949,7 @@ int input_get_guess(double *xguess, ba.H0 = ba.h * 1.e5 / _c_; break; case Omega_dcdmdr: - Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+ba.Omega0_dcdmdr+ba.Omega0_b; /* This formula is exact in a Matter + Lambda Universe, but only for Omega_dcdm, not the combined. sqrt_one_minus_M = sqrt(1.0 - Omega_M); @@ -3752,7 +3968,7 @@ int input_get_guess(double *xguess, //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; case omega_dcdmdr: - Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+ba.Omega0_dcdmdr+ba.Omega0_b; /* This formula is exact in a Matter + Lambda Universe, but only for Omega_dcdm, not the combined. sqrt_one_minus_M = sqrt(1.0 - Omega_M); @@ -3768,16 +3984,16 @@ int input_get_guess(double *xguess, a_decay = pow(1+(gamma*gamma-1.)/Omega_M,-1./3.); xguess[index_guess] = pfzw->target_value[index_guess]/ba.h/ba.h/a_decay; dxdy[index_guess] = 1./a_decay/ba.h/ba.h; - //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); + //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; case Omega_scf: - /** - This guess is arbitrary, something nice using WKB should be implemented. - * - * - Version 2: use a fit: `xguess[index_guess] = 1.77835*pow(ba.Omega0_scf,-2./7.); - * dxdy[index_guess] = -0.5081*pow(ba.Omega0_scf,-9./7.)`; - * - * - Version 3: use attractor solution */ + /** - This guess is arbitrary, something nice using WKB should be implemented. + * + * - Version 2: use a fit: `xguess[index_guess] = 1.77835*pow(ba.Omega0_scf,-2./7.); + * dxdy[index_guess] = -0.5081*pow(ba.Omega0_scf,-9./7.)`; + * + * - Version 3: use attractor solution */ if (ba.scf_tuning_index == 0){ xguess[index_guess] = sqrt(3.0/ba.Omega0_scf); @@ -3796,7 +4012,7 @@ int input_get_guess(double *xguess, Omega_ini_dcdm -> Omega_dcdmdr and omega_ini_dcdm -> omega_dcdmdr */ Omega0_dcdmdr *=pfzw->target_value[index_guess]; - Omega_M = ba.Omega0_cdm+Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+Omega0_dcdmdr+ba.Omega0_b; gamma = ba.Gamma_dcdm/ba.H0; if (gamma < 1) a_decay = 1.0; @@ -3809,6 +4025,13 @@ int input_get_guess(double *xguess, //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; + + case sigma8: + /* Assume linear relationship between A_s and sigma8 and fix coefficient + according to vanilla LambdaCDM. Should be good enough... */ + xguess[index_guess] = 2.43e-9/0.87659*pfzw->target_value[index_guess]; + dxdy[index_guess] = 2.43e-9/0.87659; + break; } //printf("xguess = %g\n",xguess[index_guess]); } @@ -3836,17 +4059,19 @@ int input_find_root(double *xzero, class_call(input_get_guess(&x1, &dxdy, pfzw, errmsg), errmsg, errmsg); // printf("x1= %g\n",x1); + class_call(input_fzerofun_1d(x1, pfzw, &f1, errmsg), - errmsg, errmsg); + errmsg, errmsg); + (*fevals)++; //printf("x1= %g, f1= %g\n",x1,f1); dx = 1.5*f1*dxdy; - /** - Do linear hunt for boundaries */ + /** - Then we do a linear hunt for the boundaries */ for (iter=1; iter<=15; iter++){ //x2 = x1 + search_dir*dx; x2 = x1 - dx; @@ -3914,10 +4139,10 @@ int input_auxillary_target_conditions(struct file_content * pfc, ErrorMsg errmsg){ *aux_flag = _TRUE_; /* - double param1; - int int1, flag1; - int input_verbose = 0; - class_read_int("input_verbose",input_verbose); + double param1; + int int1, flag1; + int input_verbose = 0; + class_read_int("input_verbose",input_verbose); */ switch (target_name){ case Omega_dcdmdr: @@ -3938,11 +4163,11 @@ int input_auxillary_target_conditions(struct file_content * pfc, } int compare_integers (const void * elem1, const void * elem2) { - int f = *((int*)elem1); - int s = *((int*)elem2); - if (f > s) return 1; - if (f < s) return -1; - return 0; + int f = *((int*)elem1); + int s = *((int*)elem2); + if (f > s) return 1; + if (f < s) return -1; + return 0; } int compare_doubles(const void *a,const void *b) { @@ -3954,3 +4179,194 @@ int compare_doubles(const void *a,const void *b) { (*x > *y) return 1; return 0; } + + +/** + * Perform preliminary steps fur using the method called Pk_equal, + * described in 0810.0190 and 1601.07230, extending the range of + * validity of HALOFIT from constant w to (w0,wa) models. In that + * case, one must compute here some effective values of w0_eff(z_i) + * and Omega_m_eff(z_i), that will be interpolated later at arbitrary + * redshift in the non-linear module. + * + * Returns table of values [z_i, tau_i, w0_eff_i, Omega_m_eff_i] + * stored in nonlinear structure. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param pnl Input/Output: pointer to nonlinear structure + * @param input_verbose Input: verbosity of this input module + * @param errmsg Input/Ouput: error message + */ + +int input_prepare_pk_eq( + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct nonlinear *pnl, + int input_verbose, + ErrorMsg errmsg + ) { + + /** Summary: */ + + /** - define local variables */ + + double tau_of_z; + double delta_tau; + double error; + double delta_tau_eq; + double * pvecback; + int last_index=0; + int index_pk_eq_z; + int index_eq; + int true_background_verbose; + int true_thermodynamics_verbose; + double true_w0_fld; + double true_wa_fld; + double * z; + + /** - store the true cosmological parameters (w0, wa) somwhere before using temporarily some fake ones in this function */ + + true_background_verbose = pba->background_verbose; + true_thermodynamics_verbose = pth->thermodynamics_verbose; + true_w0_fld = pba->w0_fld; + true_wa_fld = pba->wa_fld; + + /** - the fake calls of the background and thermodynamics module will be done in non-verbose mode */ + + pba->background_verbose = 0; + pth->thermodynamics_verbose = 0; + + /** - allocate indices and arrays for storing the results */ + + pnl->pk_eq_tau_size = 10; + class_alloc(pnl->pk_eq_tau,pnl->pk_eq_tau_size*sizeof(double),errmsg); + class_alloc(z,pnl->pk_eq_tau_size*sizeof(double),errmsg); + + index_eq = 0; + class_define_index(pnl->index_pk_eq_w,_TRUE_,index_eq,1); + class_define_index(pnl->index_pk_eq_Omega_m,_TRUE_,index_eq,1); + pnl->pk_eq_size = index_eq; + class_alloc(pnl->pk_eq_w_and_Omega,pnl->pk_eq_tau_size*pnl->pk_eq_size*sizeof(double),errmsg); + class_alloc(pnl->pk_eq_ddw_and_ddOmega,pnl->pk_eq_tau_size*pnl->pk_eq_size*sizeof(double),errmsg); + + /** - call the background module in order to fill a table of tau_i[z_i] */ + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + z[index_pk_eq_z] = exp(log(1.+ppr->pk_eq_z_max)/(pnl->pk_eq_tau_size-1)*index_pk_eq_z)-1.; + class_call(background_tau_of_z(pba,z[index_pk_eq_z],&tau_of_z), + pba->error_message, errmsg); + pnl->pk_eq_tau[index_pk_eq_z] = tau_of_z; + } + class_call(background_free_noinput(pba), pba->error_message, errmsg); + + /** - loop over z_i values. For each of them, we will call the + background and thermodynamics module for fake models. The goal is + to find, for each z_i, and effective w0_eff[z_i] and + Omega_m_eff{z_i], such that: the true model with (w0,wa) and the + equivalent model with (w0_eff[z_i],0) have the same conformal + distance between z_i and z_recombination, namely chi = tau[z_i] - + tau_rec. It is thus necessary to call both the background and + thermodynamics module for each fake model and to re-compute + tau_rec for each of them. Once the eqauivalent model is found we + compute and store Omega_m_effa(z_i) of the equivalent model */ + + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + + if (input_verbose > 2) + printf(" * computing Pk_equal parameters at z=%e\n",z[index_pk_eq_z]); + + /* get chi = (tau[z_i] - tau_rec) in true model */ + + pba->w0_fld = true_w0_fld; + pba->wa_fld = true_wa_fld; + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + class_call(thermodynamics_init(ppr,pba,pth), pth->error_message, errmsg); + + delta_tau = pnl->pk_eq_tau[index_pk_eq_z] - pth->tau_rec; + + /* launch iterations in order to coverge to effective model with wa=0 but the same chi = (tau[z_i] - tau_rec) */ + + pba->wa_fld=0.; + + do { + class_call(background_free_noinput(pba), pba->error_message, errmsg); + class_call(thermodynamics_free(pth), pth->error_message, errmsg); + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + class_call(background_tau_of_z(pba,z[index_pk_eq_z],&tau_of_z), pba->error_message, errmsg); + class_call(thermodynamics_init(ppr,pba,pth), pth->error_message, errmsg); + + delta_tau_eq = tau_of_z - pth->tau_rec; + + error = 1.-delta_tau_eq/delta_tau; + pba->w0_fld = pba->w0_fld*pow(1.+error,10.); + + } + while(fabs(error) > ppr->pk_eq_tol); + + /* Equivalent model found. Store w0(z) in that model. Find Omega_m(z) in that model and store it. */ + + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_w] = pba->w0_fld; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + class_call(background_at_tau(pba, + tau_of_z, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, errmsg); + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_Omega_m] = pvecback[pba->index_bg_Omega_m]; + free(pvecback); + + class_call(background_free_noinput(pba), pba->error_message, errmsg); + class_call(thermodynamics_free(pth), pth->error_message, errmsg); + + } + + /** - restore cosmological parameters (w0, wa) to their true values before main call to CLASS modules */ + + pba->background_verbose = true_background_verbose; + pth->thermodynamics_verbose = true_thermodynamics_verbose; + pba->w0_fld = true_w0_fld; + pba->wa_fld = true_wa_fld; + + /* in verbose mode, report the results */ + + if (input_verbose > 1) { + + fprintf(stdout," Effective parameters for Pk_equal:\n"); + + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + + fprintf(stdout," * at z=%e, tau=%e w=%e Omega_m=%e\n", + z[index_pk_eq_z], + pnl->pk_eq_tau[index_pk_eq_z], + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_w], + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_Omega_m] + ); + } + } + + free(z); + + /** - spline the table for later interpolation */ + + class_call(array_spline_table_lines( + pnl->pk_eq_tau, + pnl->pk_eq_tau_size, + pnl->pk_eq_w_and_Omega, + pnl->pk_eq_size, + pnl->pk_eq_ddw_and_ddOmega, + _SPLINE_NATURAL_, + errmsg), + errmsg,errmsg); + + return _SUCCESS_; + +} diff --git a/class/source/lensing.c b/class/source/lensing.c old mode 100644 new mode 100755 index 1d4e4ad3..94a3bdbd --- a/class/source/lensing.c +++ b/class/source/lensing.c @@ -88,7 +88,7 @@ int lensing_init( struct nonlinear * pnl, struct lensing * ple ) { - + /** Summary: */ /** - Define local variables */ @@ -100,25 +100,25 @@ int lensing_init( double ** d00; /* dmn[index_mu][index_l] */ double ** d11; double ** d2m2; - double ** d22; - double ** d20; + double ** d22 = NULL; + double ** d20 = NULL; double ** d1m1; - double ** d31; - double ** d40; - double ** d3m1; - double ** d3m3; - double ** d4m2; - double ** d4m4; + double ** d31 = NULL; + double ** d40 = NULL; + double ** d3m1 = NULL; + double ** d3m3 = NULL; + double ** d4m2 = NULL; + double ** d4m4 = NULL; double * buf_dxx; /* buffer */ double * Cgl; /* Cgl[index_mu] */ double * Cgl2; /* Cgl2[index_mu] */ double * sigma2; /* sigma[index_mu] */ - double * ksi; /* ksi[index_mu] */ - double * ksiX; /* ksiX[index_mu] */ - double * ksip; /* ksip[index_mu] */ - double * ksim; /* ksim[index_mu] */ + double * ksi = NULL; /* ksi[index_mu] */ + double * ksiX = NULL; /* ksiX[index_mu] */ + double * ksip = NULL; /* ksip[index_mu] */ + double * ksim = NULL; /* ksim[index_mu] */ double fac,fac1; double X_000; @@ -135,9 +135,9 @@ int lensing_init( double ll; double * cl_unlensed; /* cl_unlensed[index_ct] */ double * cl_tt; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_te; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_ee; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_bb; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_te = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_ee = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_bb = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ double * cl_pp; /* potential cl, to be filled to avoid repeated calls to spectra_cl_at_l */ double res,resX,lens; @@ -605,8 +605,12 @@ int lensing_init( if (ple->has_te==_TRUE_ || ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { /* X_022 = exp(-(fac-1.)*sigma2[index_mu]); */ X_022 = X_000 * (1+sigma2[index_mu]*(1+0.5*sigma2[index_mu])); /* Order 2 */ - X_p022 = (fac-1.)*X_022; - /* X_242 = 0.25*sqrt4[l] * exp(-(fac-5./2.)*sigma2[index_mu]); */ + X_p022 = -(fac-1.)*X_022; /* Old versions were missing the + minus sign in this line, which introduced a very small error + on the high-l C_l^TE lensed spectrum [credits for bug fix: + Selim Hotinli] */ + + /* X_242 = 0.25*sqrt4[l] * exp(-(fac-5./2.)*sigma2[index_mu]); */ X_242 = 0.25*sqrt4[l] * X_000; /* Order 0 */ if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { diff --git a/class/source/nonlinear.c b/class/source/nonlinear.c old mode 100644 new mode 100755 index f6c4444d..71a8b0f1 --- a/class/source/nonlinear.c +++ b/class/source/nonlinear.c @@ -13,690 +13,4434 @@ #include "nonlinear.h" -int nonlinear_k_nl_at_z( - struct background *pba, - struct nonlinear * pnl, - double z, - double * k_nl - ) { +/** + * Return the P(k,z) for a given redshift z and pk type (_m, _cb) + * (linear if pk_output = pk_linear, nonlinear if pk_output = pk_nonlinear) + * + * In the linear case, if there are several initial conditions *and* the + * input pointer out_pk_ic is not set to NULL, the function also + * returns the decomposition into different IC contributions. + * + * Hints on input index_pk: + * + * a. if you want the total matter spectrum P_m(k,z), pass in input + * pnl->index_pk_total + * (this index is always defined) + * + * b. if you want the power spectrum relevant for galaxy or halos, + * given by P_cb if there is non-cold-dark-matter (e.g. massive neutrinos) + * and to P_m otherwise, pass in input + * pnl->index_pk_cluster + * (this index is always defined) + * + * c. there is another possible syntax (use it only if you know what you are doing): + * if pnl->has_pk_m == _TRUE_ you may pass pnl->index_pk_m to get P_m + * if pnl->has_pk_cb == _TRUE_ you may pass pnl->index_pk_cb to get P_cb + * + * Output format: + * + * 1. if mode = logarithmic (most straightforward for the code): + * out_pk = ln(P(k)) + * out_pk_ic[diagonal] = ln(P_ic(k)) + * out_pk_ic[non-diagonal] = cos(correlation angle icxic) + * + * 2. if mode = linear (a conversion is done internally in this function) + * out_pk = P(k) + * out_pk_ic[diagonal] = P_ic(k) + * out_pk_ic[non-diagonal] = P_icxic(k) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param mode Input: linear or logarithmic + * @param pk_output Input: linear or nonlinear + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param out_pk Output: P(k) returned as out_pk_l[index_k] + * @param out_pk_ic Output: P_ic(k) returned as out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ +int nonlinear_pk_at_z( + struct background * pba, + struct nonlinear *pnl, + enum linear_or_logarithmic mode, + enum pk_outputs pk_output, + double z, + int index_pk, + double * out_pk, // array out_pk[index_k] + double * out_pk_ic // array out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { double tau; - - class_call(background_tau_of_z(pba, - z, - &tau), - pba->error_message, - pnl->error_message); - - if (pnl->tau_size == 1) { - *k_nl = pnl->k_nl[0]; - } - else { - class_call(array_interpolate_two(pnl->tau, - 1, - 0, - pnl->k_nl, - 1, - pnl->tau_size, - tau, - k_nl, - 1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - } - - return _SUCCESS_; -} - -int nonlinear_init( - struct precision *ppr, - struct background *pba, - struct thermo *pth, - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl - ) { - - int index_ncdm; + double ln_tau; int index_k; - int index_tau; - double *pk_l; - double *pk_nl; - double *lnk_l; - double *lnpk_l; - double *ddlnpk_l; - short print_warning=_FALSE_; - double * pvecback; + int index_ic1; + int index_ic2; + int index_ic1_ic1; + int index_ic2_ic2; + int index_ic1_ic2; int last_index; - double a,z; + short do_ic = _FALSE_; - /** Summary - * - * (a) First deal with the case where non non-linear corrections requested */ + /** - check whether we need the decomposition into contributions from each initial condition */ - if (pnl->method == nl_none) { - if (pnl->nonlinear_verbose > 0) - printf("No non-linear spectra requested. Nonlinear module skipped.\n"); - } + if ((pk_output == pk_linear) && (pnl->ic_size > 1) && (out_pk_ic != NULL)) + do_ic = _TRUE_; - /** (b) Compute for HALOFIT non-linear spectrum */ + /** - case z=0 requiring no interpolation in z */ + if (z == 0) { - else if (pnl->method == nl_halofit) { - if (pnl->nonlinear_verbose > 0) - printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); + for (index_k=0; index_kk_size; index_k++) { - if (pba->has_ncdm) { - for (index_ncdm=0;index_ncdm < pba->N_ncdm; index_ncdm++){ - if (pba->m_ncdm_in_eV[index_ncdm] > _M_EV_TOO_BIG_FOR_HALOFIT_) - fprintf(stdout,"Warning: Halofit is proved to work for CDM, and also with a small HDM component thanks to Bird et al.'s update. But it sounds like you are running with a WDM component of mass %f eV, which makes the use of Halofit suspicious.\n",pba->m_ncdm_in_eV[index_ncdm]); + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][(pnl->ln_tau_size-1)*pnl->k_size+index_k]; + + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = + pnl->ln_pk_ic_l[index_pk][((pnl->ln_tau_size-1)*pnl->k_size+index_k)*pnl->ic_ic_size+index_ic1_ic2]; + } + } + } + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][(pnl->ln_tau_size-1)*pnl->k_size+index_k]; } } + } - /** - copy list of (k,tau) from perturbation module */ + /** - interpolation in z */ + else { - pnl->k_size = ppt->k_size[ppt->index_md_scalars]; - class_alloc(pnl->k,pnl->k_size*sizeof(double),pnl->error_message); - for (index_k=0; index_kk_size; index_k++) - pnl->k[index_k] = ppt->k[ppt->index_md_scalars][index_k]; + class_test(pnl->ln_tau_size == 1, + pnl->error_message, + "You are asking for the matter power spectrum at z=%e but the code was asked to store it only at z=0. You probably forgot to pass the input parameter z_max_pk (see explanatory.ini)",z); - pnl->tau_size = ppt->tau_size; - class_alloc(pnl->tau,pnl->tau_size*sizeof(double),pnl->error_message); - for (index_tau=0; index_tautau_size; index_tau++) - pnl->tau[index_tau] = ppt->tau_sampling[index_tau]; + /** --> get value of contormal time tau */ + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + ln_tau = log(tau); + last_index = pnl->ln_tau_size-1; - class_alloc(pnl->nl_corr_density,pnl->tau_size*pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(pnl->k_nl,pnl->tau_size*sizeof(double),pnl->error_message); + /** -> check that tau is in pre-computed table */ - class_alloc(pk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(pk_nl,pnl->k_size*sizeof(double),pnl->error_message); + if (ln_tau <= pnl->ln_tau[0]) { - class_alloc(lnk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(lnpk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(ddlnpk_l,pnl->k_size*sizeof(double),pnl->error_message); + /** --> if ln(tau) much too small, raise an error */ + class_test(ln_tauln_tau[0]-_EPSILON_, + pnl->error_message, + "requested z was not inside of tau tabulation range (Requested ln(tau_=%.10e, Min %.10e). Solution might be to increase input parameter z_max_pk (see explanatory.ini)",ln_tau,pnl->ln_tau[0]); - /** - loop over time */ + /** --> if ln(tau) too small but within tolerance, round it and get right values without interpolating */ + ln_tau = pnl->ln_tau[0]; - for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + for (index_k = 0 ; index_k < pnl->k_size; index_k++) { + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][index_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = pnl->ln_pk_ic_l[index_pk][index_k * pnl->ic_ic_size + index_ic1_ic2]; + } + } + } + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][index_k]; + } + } + } + + else if (ln_tau >= pnl->ln_tau[pnl->ln_tau_size-1]) { - /* get P_L(k) at this time */ - class_call(nonlinear_pk_l(ppt,ppm,pnl,index_tau,pk_l,lnk_l,lnpk_l,ddlnpk_l), + /** --> if ln(tau) much too large, raise an error */ + class_test(ln_tau>pnl->ln_tau[pnl->ln_tau_size-1]+_EPSILON_, pnl->error_message, - pnl->error_message); + "requested z was not inside of tau tabulation range (Requested ln(tau_=%.10e, Max %.10e) ",ln_tau,pnl->ln_tau[pnl->ln_tau_size-1]); - /* - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e\n",pnl->k[index_k],pk_l[index_k]); - } - */ + /** --> if ln(tau) too large but within tolerance, round it and get right values without interpolating */ + ln_tau = pnl->ln_tau[pnl->ln_tau_size-1]; - //class_stop(pnl->error_message,"stop here"); - - /* get P_NL(k) at this time */ - if (nonlinear_halofit(ppr, - pba, - ppm, - pnl, - pnl->tau[index_tau], - pk_l, - pk_nl, - lnk_l, - lnpk_l, - ddlnpk_l, - &(pnl->k_nl[index_tau])) == _SUCCESS_) { - - /* - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e %e\n",pnl->k[index_k],pk_l[index_k],pk_nl[index_k]); + for (index_k = 0 ; index_k < pnl->k_size; index_k++) { + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][(pnl->ln_tau_size-1) * pnl->k_size + index_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = pnl->ln_pk_ic_l[index_pk][((pnl->ln_tau_size-1) * pnl->k_size + index_k) * pnl->ic_ic_size + index_ic1_ic2]; + } } - fprintf(stdout,"\n\n"); - */ - - for (index_k=0; index_kk_size; index_k++) { - pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = sqrt(pk_nl[index_k]/pk_l[index_k]); } - } - else { - /* when Halofit failed, use 1 as the non-linear correction, and print a warning */ - for (index_k=0; index_kk_size; index_k++) { - pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = 1.; + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][(pnl->ln_tau_size-1) * pnl->k_size + index_k]; } - if ((pnl->nonlinear_verbose > 0) && (print_warning == _FALSE_)) { - class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); - class_call(background_at_tau(pba,pnl->tau[index_tau],pba->short_info,pba->inter_normal,&last_index,pvecback), - pba->error_message, + } + } + + /** -> tau is in pre-computed table: interpolate */ + else { + + if (pk_output == pk_linear) { + + /** --> interpolate P_l(k) at tau from pre-computed array */ + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_l[index_pk], + pnl->ddln_pk_l[index_pk], + pnl->k_size, + ln_tau, + &last_index, + out_pk, + pnl->k_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** --> interpolate P_ic_l(k) at tau from pre-computed array */ + if (do_ic == _TRUE_) { + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_ic_l[index_pk], + pnl->ddln_pk_ic_l[index_pk], + pnl->k_size*pnl->ic_ic_size, + ln_tau, + &last_index, + out_pk_ic, + pnl->k_size*pnl->ic_ic_size, + pnl->error_message), + pnl->error_message, pnl->error_message); - a = pvecback[pba->index_bg_a]; - z = pba->a_today/a-1.; - fprintf(stdout, - " -> [WARNING:] Halofit non-linear corrections could not be computed at redshift z=%5.2f and higher.\n This is probably because k_max is too small for Halofit to be able to compute the scale k_NL at this redshift.\n If non-linear corrections at such high redshift really matter for you,\n just try to increase P_k_max_h/Mpc or P_k_max_1/Mpc until reaching desired z.\n", - z); - free(pvecback); } - print_warning = _TRUE_; } - } + else { - /* - for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e\n",pnl->k[index_k],pnl->nl_corr_density[index_tau * pnl->k_size + index_k]); + /** --> interpolate P_nl(k) at tau from pre-computed array */ + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_nl[index_pk], + pnl->ddln_pk_nl[index_pk], + pnl->k_size, + ln_tau, + &last_index, + out_pk, + pnl->k_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); } - fprintf(stdout,"\n\n"); } - */ + } - free(pk_l); - free(pk_nl); + /** - so far, all output stored in logarithmic format. Eventually, convert to linear one. */ - free(lnk_l); - free(lnpk_l); - free(ddlnpk_l); - } + if (mode == linear) { - else { - class_stop(pnl->error_message, - "Your non-linear method variable is set to %d, out of the range defined in nonlinear.h",pnl->method); - } + /** --> loop over k */ + for (index_k=0; index_kk_size; index_k++) { - return _SUCCESS_; -} + /** --> convert total spectrum */ + out_pk[index_k] = exp(out_pk[index_k]); -int nonlinear_free( - struct nonlinear *pnl - ) { + if (do_ic == _TRUE_) { + /** --> convert contribution of each ic (diagonal elements) */ + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); - if (pnl->method > nl_none) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] = exp(out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1]); + } - if (pnl->method == nl_halofit) { - /* free here */ - free(pnl->k); - free(pnl->tau); - free(pnl->nl_corr_density); - free(pnl->k_nl); + /** --> convert contribution of each ic (non-diagonal elements) */ + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2=index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); + + /* P_ic1xic2 = cos(angle) * sqrt(P_ic1 * P_ic2) */ + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + = out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + *sqrt(out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] + *out_pk_ic[index_k * pnl->ic_ic_size + index_ic2_ic2]); + } + } + } } } return _SUCCESS_; - } -int nonlinear_pk_l( - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl, - int index_tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk) { - - int index_md; - int index_k; - int index_ic1,index_ic2,index_ic1_ic2; - double * primordial_pk; - double source_ic1,source_ic2; - - index_md = ppt->index_md_scalars; +/* + * Same as nonlinear_pk_at_z() (see the comments there about + * the input/output format), excepted that we don't pass in input one + * type of P(k) through index_pk. Instead, we get all existing types + * in output. This function is maintained to enhance compatibility + * with old versions, but the use of nonlinear_pk_at_z() should + * be preferred. + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param out_pk_l Output: P_m(k) returned as out_pk_l[index_k] + * @param out_pk_ic_l Output: P_m_ic(k) returned as out_pk_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @param out_pk_cb_l Output: P_cb(k) returned as out_pk_cb_l[index_k] + * @param out_pk_cb_ic_l Output: P_cb_ic(k) returned as out_pk_cb_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ - class_alloc(primordial_pk,ppm->ic_ic_size[index_md]*sizeof(double),pnl->error_message); +int nonlinear_pks_at_z( + struct background * pba, + struct nonlinear * pnl, + enum linear_or_logarithmic mode, + enum pk_outputs pk_output, + double z, + double * out_pk, // array out_pk[index_k] + double * out_pk_ic, // array out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + double * out_pk_cb, // array out_pk_cb[index_k] + double * out_pk_cb_ic // array out_pk_cb_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { - for (index_k=0; index_kk_size; index_k++) { + if (pnl->has_pk_cb) { - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - pnl->k[index_k], - primordial_pk), - ppm->error_message, + class_call(nonlinear_pk_at_z(pba, + pnl, + mode, + pk_output, + z, + pnl->index_pk_cb, + out_pk_cb, + out_pk_cb_ic + ), + pnl->error_message, pnl->error_message); + } + + if (pnl->has_pk_m) { - pk_l[index_k] = 0; + class_call(nonlinear_pk_at_z(pba, + pnl, + mode, + pk_output, + z, + pnl->index_pk_m, + out_pk, + out_pk_ic + ), + pnl->error_message, + pnl->error_message); + } - /* part diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + return _SUCCESS_; +} - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); +/** + * Return the P(k,z) for a given (k,z) and pk type (_m, _cb) + * (linear if pk_output = pk_linear, nonlinear if pk_output = pk_nonlinear) + * + * In the linear case, if there are several initial conditions *and* the + * input pointer out_pk_ic is not set to NULL, the function also + * returns the decomposition into different IC contributions. + * + * Hints on input index_pk: + * + * a. if you want the total matter spectrum P_m(k,z), pass in input + * pnl->index_pk_total + * (this index is always defined) + * + * b. if you want the power spectrum relevant for galaxy or halos, + * given by P_cb if there is non-cold-dark-matter (e.g. massive neutrinos) + * and to P_m otherwise, pass in input + * pnl->index_pk_cluster + * (this index is always defined) + * + * c. there is another possible syntax (use it only if you know what you are doing): + * if pnl->has_pk_m == _TRUE_ you may pass pnl->index_pk_m to get P_m + * if pnl->has_pk_cb == _TRUE_ you may pass pnl->index_pk_cb to get P_cb + * + * Output format: + * + * out_pk = P(k) + * out_pk_ic[diagonal] = P_ic(k) + * out_pk_ic[non-diagonal] = P_icxic(k) + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: linear or nonlinear + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param out_pk Output: pointer to P + * @param out_pk_ic Ouput: P_ic returned as out_pk_ic_l[index_ic1_ic2] + * @return the error status + */ - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; +int nonlinear_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear *pnl, + enum pk_outputs pk_output, + double k, + double z, + int index_pk, + double * out_pk, // number *out_pk_l + double * out_pk_ic // array out_pk_ic_l[index_ic_ic] + ) { - pk_l[index_k] += 2.*_PI_*_PI_/pow(pnl->k[index_k],3) - *source_ic1*source_ic1 - *primordial_pk[index_ic1_ic2]; - } + double * out_pk_at_z; + double * out_pk_ic_at_z = NULL; + double * ddout_pk_at_z; + double * ddout_pk_ic_at_z; + int last_index; + int index_ic1; + int index_ic2; + int index_ic1_ic1; + int index_ic2_ic2; + int index_ic1_ic2; + double kmin; + double * pk_primordial_k; + double * pk_primordial_kmin; + short do_ic = _FALSE_; - /* part non-diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + /** - preliminary: check whether we need the decomposition into contributions from each initial condition */ - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + if ((pk_output == pk_linear) && (pnl->ic_size > 1) && (out_pk_ic != NULL)) + do_ic = _TRUE_; - if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + /** - first step: check that k is in valid range [0:kmax] + (the test for z will be done when calling nonlinear_pk_linear_at_z()) */ - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; + class_test((k < 0.) || (k > exp(pnl->ln_k[pnl->k_size-1])), + pnl->error_message, + "k=%e out of bounds [%e:%e]",k,0.,exp(pnl->ln_k[pnl->k_size-1])); - source_ic2 = ppt->sources[index_md] - [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; + /** - deal with case k = 0 for which P(k) is set to zero + (this non-physical result can be useful for interpolations) */ - pk_l[index_k] += 2.*2.*_PI_*_PI_/pow(pnl->k[index_k],3) - *source_ic1*source_ic2 - *primordial_pk[index_ic1_ic2]; // extra 2 factor (to include the symmetric term ic2,ic1) + if (k == 0.) { + *out_pk = 0.; - } + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] = 0.; } } - - lnk[index_k] = log(pnl->k[index_k]); - lnpk[index_k] = log(pk_l[index_k]); } - class_call(array_spline_table_columns(lnk, - pnl->k_size, - lnpk, - 1, - ddlnpk, - _SPLINE_NATURAL_, - pnl->error_message), - pnl->error_message, - pnl->error_message); + /** - deal with 0 < k <= kmax */ - free(primordial_pk); + else { - return _SUCCESS_; + class_alloc(out_pk_at_z, + pnl->k_size*sizeof(double), + pnl->error_message); -} + if (do_ic == _TRUE_) { + class_alloc(out_pk_ic_at_z, + pnl->k_size*pnl->ic_ic_size*sizeof(double), + pnl->error_message); + } -int nonlinear_halofit( - struct precision *ppr, - struct background *pba, - struct primordial *ppm, - struct nonlinear *pnl, - double tau, - double *pk_l, - double *pk_nl, - double *lnk_l, - double *lnpk_l, - double *ddlnpk_l, - double *k_nl - ) { + /** - deal with standard case kmin <= k <= kmax */ - double Omega_m,Omega_v,fnu,Omega0_m, w0; + if (k > exp(pnl->ln_k[0])) { - /** Determine non linear ratios (from pk) **/ + /** --> First, get P(k) at the right z (in logarithmic format for more accurate interpolation, and then convert to linear format) */ - int index_k; - double pk_lin,pk_quasi,pk_halo,rk; - double sigma,rknl,rneff,rncur,d1,d2; - double diff,xlogr1,xlogr2,rmid; + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + z, + index_pk, + out_pk_at_z, + out_pk_ic_at_z + ), + pnl->error_message, + pnl->error_message); - double gam,a,b,c,xmu,xnu,alpha,beta,f1,f2,f3; - double pk_linaa; - double y; - double f1a,f2a,f3a,f1b,f2b,f3b,frac; + /** --> interpolate total spectrum */ - double * pvecback; + class_alloc(ddout_pk_at_z, + pnl->k_size*sizeof(double), + pnl->error_message); - int last_index; - int counter; - double sum1,sum2,sum3; - double anorm; + class_call(array_spline_table_lines(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + 1, + ddout_pk_at_z, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); - double *integrand_array; - int integrand_size; - int index_ia_k; - int index_ia_pk; - int index_ia_sum1; - int index_ia_ddsum1; - int index_ia_sum2; - int index_ia_ddsum2; - int index_ia_sum3; - int index_ia_ddsum3; - int ia_size; - int index_ia; + class_call(array_interpolate_spline(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + ddout_pk_at_z, + 1, + log(k), + &last_index, + out_pk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); - double k_integrand; - double lnpk_integrand; + free(ddout_pk_at_z); - double x2,R; + // uncomment this part if you prefer a linear interpolation - class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + /* + class_call(array_interpolate_linear(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + 1, + log(k), + &last_index, + out_pk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + */ - Omega0_m = (pba->Omega0_cdm + pba->Omega0_b + pba->Omega0_ncdm_tot + pba->Omega0_dcdm); - w0 = pba->w0_fld; - fnu = pba->Omega0_ncdm_tot/Omega0_m; - anorm = 1./(2*pow(_PI_,2)); + /** --> convert from logarithmic to linear format */ - /* Until the 17.02.2015 the values of k used for integrating sigma(R) quantities needed by Halofit where the same as in the perturbation module. - Since then, we sample these integrals on more values, in order to get more precise integrals (thanks Matteo Zennaro for noticing the need for this). + *out_pk = exp(*out_pk); - We create a temporary integrand_array which columns will be: - - k in 1/Mpc - - just linear P(k) in Mpc**3 - - 1/(2(pi**2)) P(k) k**2 exp(-(kR)**2) - - second derivative of previous line with spline - - 1/(2(pi**2)) P(k) k**2 2 (kR) exp(-(kR)**2) - - second derivative of previous line with spline - - 1/(2(pi**2)) P(k) k**2 4 (kR)(1-kR) exp(-(kR)**2) - - second derivative of previous line with spline - */ + /** --> interpolate each ic component */ - index_ia=0; - class_define_index(index_ia_k, _TRUE_,index_ia,1); - class_define_index(index_ia_pk, _TRUE_,index_ia,1); - class_define_index(index_ia_sum1, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum1,_TRUE_,index_ia,1); - class_define_index(index_ia_sum2, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum2,_TRUE_,index_ia,1); - class_define_index(index_ia_sum3, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum3,_TRUE_,index_ia,1); - ia_size = index_ia; + if (do_ic == _TRUE_) { - integrand_size=(int)(log(pnl->k[pnl->k_size-1]/pnl->k[0])/log(10.)*ppr->halofit_k_per_decade)+1; + class_alloc(ddout_pk_ic_at_z, + pnl->k_size*pnl->ic_ic_size*sizeof(double), + pnl->error_message); - class_alloc(integrand_array,integrand_size*ia_size*sizeof(double),pnl->error_message); + class_call(array_spline_table_lines(pnl->ln_k, + pnl->k_size, + out_pk_ic_at_z, + pnl->ic_ic_size, + ddout_pk_ic_at_z, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); - /* we fill integrand_array with values of k and P(k) using interpolation */ + class_call(array_interpolate_spline(pnl->ln_k, + pnl->k_size, + out_pk_ic_at_z, + ddout_pk_ic_at_z, + pnl->ic_ic_size, + log(k), + &last_index, + out_pk_ic, + pnl->ic_ic_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); - last_index=0; + free(ddout_pk_ic_at_z); - for (index_k=0; index_k < integrand_size; index_k++) { + /** --> convert each ic component from logarithmic to linear format */ - k_integrand=pnl->k[0]*pow(10.,index_k/ppr->halofit_k_per_decade); + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + out_pk_ic[index_ic1_ic1] = exp(out_pk_ic[index_ic1_ic1]); + } + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2=index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); + out_pk_ic[index_ic1_ic2] + = out_pk_ic[index_ic1_ic2]*sqrt(out_pk_ic[index_ic1_ic1]*out_pk_ic[index_ic2_ic2]); + } + } + } + } - class_call(array_interpolate_spline(lnk_l, - pnl->k_size, - lnpk_l, - ddlnpk_l, - 1, - log(k_integrand), - &last_index, - &lnpk_integrand, - 1, - pnl->error_message), - pnl->error_message, - pnl->error_message); + /** --> deal with case 0 < k < kmin that requires extrapolation + * P(k) = [some number] * k * P_primordial(k) + * so + * P(k) = P(kmin) * (k P_primordial(k)) / (kmin P_primordial(kmin)) + * (note that the result is accurate only if kmin is such that [a0 kmin] << H0) + * + * This is accurate for the synchronous gauge; TODO: write + * newtonian gauge case. Also, In presence of isocurvature + * modes, we assumes for simplicity that the mode with + * index_ic1_ic2=0 dominates at small k: exact treatment should be + * written if needed. + */ - integrand_array[index_k*ia_size + index_ia_k] = k_integrand; - integrand_array[index_k*ia_size + index_ia_pk] = exp(lnpk_integrand); + else { - } + /** --> First, get P(k) at the right z (in linear format) */ - class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), - pba->error_message, - pnl->error_message); + class_call(nonlinear_pk_at_z(pba, + pnl, + linear, + pk_output, + z, + index_pk, + out_pk_at_z, + out_pk_ic_at_z + ), + pnl->error_message, + pnl->error_message); - Omega_m = pvecback[pba->index_bg_Omega_m]; - Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + /* get P(kmin) */ + *out_pk = out_pk_at_z[0]; - /* minimum value of R such that the integral giving sigma_R is converged */ - R=sqrt(-log(ppr->halofit_sigma_precision))/integrand_array[(integrand_size-1)*ia_size + index_ia_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] = out_pk_ic_at_z[index_ic1_ic2]; + } + } - /* corresponding value of sigma_R */ - sum1=0.; - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); - } - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_EST_DERIV_, - pnl->error_message), - pnl->error_message, - pnl->error_message); - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - sigma = sqrt(sum1); + /* compute P_primordial(k) */ - class_test_except(sigma < 1., - pnl->error_message, - free(pvecback);free(integrand_array), - "Your k_max=%g 1/Mpc is too small for Halofit to find the non-linearity scale z_nl at z=%g. Increase input parameter P_k_max_h/Mpc or P_k_max_1/Mpc", - pnl->k[pnl->k_size-1], - pba->a_today/pvecback[pba->index_bg_a]-1.); + class_alloc(pk_primordial_k, + sizeof(double)*pnl->ic_ic_size, + pnl->error_message); - xlogr1 = log(R)/log(10.); + class_call(primordial_spectrum_at_k(ppm, + pnl->index_md_scalars, + linear, + k, + pk_primordial_k), + ppm->error_message, + pnl->error_message); - /* maximum value of R in the bisection algorithm leading to the determination of R_nl */ - R=1./ppr->halofit_min_k_nonlinear; + /* compute P_primordial(kmin) */ - /* corresponding value of sigma_R */ - sum1=0.; - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); + kmin = exp(pnl->ln_k[0]); + + class_alloc(pk_primordial_kmin, + sizeof(double)*pnl->ic_ic_size, + pnl->error_message); + + class_call(primordial_spectrum_at_k(ppm, + pnl->index_md_scalars, + linear, + kmin, + pk_primordial_kmin), + ppm->error_message, + pnl->error_message); + + /* finally, infer P(k) */ + + *out_pk *= (k*pk_primordial_k[0]/kmin/pk_primordial_kmin[0]); + + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] *= (k*pk_primordial_k[index_ic1_ic2] + /kmin/pk_primordial_kmin[index_ic1_ic2]); + } + } + + free(pk_primordial_k); + free(pk_primordial_kmin); + } + + free(out_pk_at_z); + if (do_ic == _TRUE_) { + free(out_pk_ic_at_z); + } } - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_EST_DERIV_, - pnl->error_message), - pnl->error_message, - pnl->error_message); - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - sigma = sqrt(sum1); - class_test_except(sigma > 1., - pnl->error_message, - free(pvecback);free(integrand_array), - "Your input value for the precision parameter halofit_min_k_nonlinear=%e is too large, the non-linear wavenumber k_nl must be smaller than that", - ppr->halofit_min_k_nonlinear); + return _SUCCESS_; +} - xlogr2 = log(R)/log(10.); +/* + * Same as nonlinear_pk_at_k_and_z() (see the comments there about + * the input/output format), excepted that we don't pass in input one + * type of P(k) through index_pk. Instead, we get all existing types + * in output. This function is maintained to enhance compatibility + * with old versions, but the use of nonlinear_pk_at_k_and_z() should + * be preferred. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param k Input: wavenumber + * @param z Input: redshift + * @param out_pk_l Output: P_m(k) returned as out_pk_l[index_k] + * @param out_pk_ic_l Output: P_m_ic(k) returned as out_pk_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @param out_pk_cb_l Output: P_cb(k) returned as out_pk_cb_l[index_k] + * @param out_pk_cb_ic_l Output: P_cb_ic(k) returned as out_pk_cb_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ - counter = 0; - do { - rmid = pow(10,(xlogr2+xlogr1)/2.0); - counter ++; +int nonlinear_pks_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear *pnl, + enum pk_outputs pk_output, + double k, + double z, + double * out_pk, // number P_m(k) + double * out_pk_ic, // array P_m_ic(k) of index [index_ic1_ic2] + double * out_pk_cb, // number P_cb(k) + double * out_pk_cb_ic // array P__cb_ic(k)of index [index_ic1_ic2] + ) { - /* in original halofit, this is the function wint() */ - sum1=0.; - sum2=0.; - sum3=0.; - - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k],2)*rmid*rmid; - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); - integrand_array[index_k*ia_size + index_ia_sum2] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*2.*x2*exp(-x2); - integrand_array[index_k*ia_size + index_ia_sum3] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*4.*x2*(1.-x2)*exp(-x2); - } - - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_NATURAL_, - pnl->error_message), - pnl->error_message, - pnl->error_message); + if (pnl->has_pk_cb) { - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum2, - index_ia_ddsum2, - _SPLINE_NATURAL_, - pnl->error_message), + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k, + z, + pnl->index_pk_cb, + out_pk_cb, + out_pk_cb_ic + ), pnl->error_message, pnl->error_message); + } + if (pnl->has_pk_m) { - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum3, - index_ia_ddsum3, - _SPLINE_NATURAL_, - pnl->error_message), + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k, + z, + pnl->index_pk_m, + out_pk, + out_pk_ic + ), pnl->error_message, pnl->error_message); + } - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); + return _SUCCESS_; +} - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum2, - index_ia_ddsum2, - &sum2, - pnl->error_message), +/** + * Return the P(k,z) for a grid of (k_i,z_j) passed in input, + * for all available pk types (_m, _cb), + * either linear or nonlinear depending on input. + * + * If there are several initial conditions, this function is not + * designed to return individual contributions. + * + * The main goal of this routine is speed. Unlike + * nonlinear_pk_at_k_and_z(), it performs no extrapolation when an + * input k_i falls outside the pre-computed range [kmin,kmax]: in that + * case, it just returns P(k,z)=0 for such a k_i + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: pk_linear or pk_nonlinear + * @param kvec Input: array of wavenumbers in ascending order (in 1/Mpc) + * @param kvec_size Input: size of array of wavenumbers + * @param zvec Input: array of redshifts in arbitrary order + * @param zvec_size Input: size of array of redshifts + * @param out_pk Output: P(k_i,z_j) for total matter (if available) in Mpc**3 + * @param out_pk_cb Output: P_cb(k_i,z_j) for cdm+baryons (if available) in Mpc**3 + * @return the error status + */ + +int nonlinear_pks_at_kvec_and_zvec( + struct background * pba, + struct nonlinear * pnl, + enum pk_outputs pk_output, + double * kvec, // kvec[index_kvec] + int kvec_size, + double * zvec, // zvec[index_zvec] + int zvec_size, + double * out_pk, // output_pk[index_zvec*kvec_size+index_kvec], + // already allocated + //(or NULL if user knows there is no _m output) + double * out_pk_cb // output_pk[index_zvec*kvec_size+index_kvec], + //already allocated + //(or NULL if user knows there is no _cb output) + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_k, index_kvec, index_zvec; + double * ln_kvec; + double * ln_pk_table = NULL; + double * ddln_pk_table = NULL; + double * ln_pk_cb_table = NULL; + double * ddln_pk_cb_table = NULL; + double h, a, b; + + /** - Allocate arrays */ + + class_alloc(ln_kvec, sizeof(double)*kvec_size, + pnl->error_message); + + if (pnl->has_pk_m) { + class_alloc(ln_pk_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + class_alloc(ddln_pk_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + } + if (pnl->has_pk_cb) { + class_alloc(ln_pk_cb_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + class_alloc(ddln_pk_cb_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + } + + /** - Construct table of log(P(k_n,z_j)) for pre-computed wavenumbers but requested redshifts: */ + + for (index_zvec=0; index_zvechas_pk_m) { + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + zvec[index_zvec], + pnl->index_pk_m, + &(ln_pk_table[index_zvec * pnl->k_size]), + NULL), + pnl->error_message, + pnl->error_message); + } + if (pnl->has_pk_cb) { + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + zvec[index_zvec], + pnl->index_pk_cb, + &(ln_pk_cb_table[index_zvec * pnl->k_size]), + NULL), + pnl->error_message, + pnl->error_message); + } + } + + /** - Spline it for interpolation along k */ + + if (pnl->has_pk_m) { + + class_call(array_spline_table_columns2(pnl->ln_k, + pnl->k_size, + ln_pk_table, + zvec_size, + ddln_pk_table, + _SPLINE_NATURAL_, + pnl->error_message), pnl->error_message, pnl->error_message); + } + if (pnl->has_pk_cb) { - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum3, - index_ia_ddsum3, - &sum3, - pnl->error_message), + class_call(array_spline_table_columns2(pnl->ln_k, + pnl->k_size, + ln_pk_cb_table, + zvec_size, + ddln_pk_cb_table, + _SPLINE_NATURAL_, + pnl->error_message), pnl->error_message, pnl->error_message); + } - sigma = sqrt(sum1); - d1 = -sum2/sum1; - d2 = -sum2*sum2/sum1/sum1 - sum3/sum1; - /* in original halofit, this is the end of the function wint() */ + /** - Construct ln(kvec): */ - diff = sigma - 1.0; + for (index_kvec=0; index_kvec0.001){ - xlogr1=log10(rmid); + /** - Loop over first k values. If k= pnl->ln_k[0]) + break; + + /* deal with khas_pk_m) out_pk[index_zvec*kvec_size+index_kvec] = 0.; + if (pnl->has_pk_cb) out_pk_cb[index_zvec*kvec_size+index_kvec] = 0.; + /* (If needed, one could add instead some extrapolation here) */ } - else if (diff < -0.001) { - xlogr2 = log10(rmid); + } + + /** - Deal with case kmin<=k<=kmax. For better performance, do not + loop through kvec, but through pre-computed k values. */ + + for (index_k=0; index_k < (pnl->k_size-1); index_k++){ + + /** --> Loop through k_i's that fall in interval [k_n,k_n+1] */ + + while ((index_kvec < kvec_size) && (ln_kvec[index_kvec] <= pnl->ln_k[index_k+1])){ + + /** --> for each of them, perform spine interpolation */ + + h = pnl->ln_k[index_k+1]-pnl->ln_k[index_k]; + b = (ln_kvec[index_kvec] - pnl->ln_k[index_k])/h; + a = 1.-b; + + for (index_zvec = 0; index_zvec < zvec_size; index_zvec++) { + + if (pnl->has_pk_m) { + + out_pk[index_zvec*kvec_size+index_kvec] = + exp( + a * ln_pk_table[index_zvec * pnl->k_size + index_k] + + b * ln_pk_table[index_zvec * pnl->k_size + index_k+1] + + ((a*a*a-a) * ddln_pk_table[index_zvec * pnl->k_size + index_k] + +(b*b*b-b) * ddln_pk_table[index_zvec * pnl->k_size + index_k+1]) + *h*h/6.0 + ); + } + if (pnl->has_pk_cb) { + + out_pk_cb[index_zvec*kvec_size+index_kvec] = + exp( + a * ln_pk_cb_table[index_zvec * pnl->k_size + index_k] + + b * ln_pk_cb_table[index_zvec * pnl->k_size + index_k+1] + + ((a*a*a-a) * ddln_pk_cb_table[index_zvec * pnl->k_size + index_k] + +(b*b*b-b) * ddln_pk_cb_table[index_zvec * pnl->k_size + index_k+1]) + *h*h/6.0 + ); + } + } + index_kvec++; + } + } + + /** - Loop over possible remaining k values with k > kmax, to fill output with zeros. */ + + while (index_kvec < kvec_size) { + + for (index_zvec = 0; index_zvec < zvec_size; index_zvec++) { + if (pnl->has_pk_m) out_pk[index_zvec*kvec_size+index_kvec] = 0.; + if (pnl->has_pk_cb) out_pk_cb[index_zvec*kvec_size+index_kvec] = 0.; + /* (If needed, one could add instead some extrapolation here) */ } + index_kvec++; + } - class_test_except(counter > _MAX_IT_, - pnl->error_message, - free(pvecback);free(integrand_array), - "could not converge within maximum allowed number of iterations"); + free(ln_kvec); + if (pnl->has_pk_m) { + free(ln_pk_table); + free(ddln_pk_table); + } + if (pnl->has_pk_cb) { + free(ln_pk_cb_table); + free(ddln_pk_cb_table); + } - } while (fabs(diff) > 0.001); + return _SUCCESS_; +} - rknl = 1./rmid; - rneff = -3.-d1; - rncur = -d2; +/** + * Return the logarithmic slope of P(k,z) for a given (k,z), a given pk type (_m, _cb) + * (computed with linear P_L if pk_output = pk_linear, nonlinear P_NL if pk_output = pk_nonlinear) + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: linear or nonlinear + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param n_eff Output: logarithmic slope of P(k,z) + * @return the error status + */ - *k_nl = rknl; +int nonlinear_pk_tilt_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear * pnl, + enum pk_outputs pk_output, + double k, + double z, + int index_pk, + double * pk_tilt + ) { - //fprintf(stderr,"Here\n"); + double dlnk; + double out_pk1,out_pk2; - for (index_k = 0; index_k < pnl->k_size; index_k++){ + /* typical step dln(k) on which we believe that out results are not + dominated by numerical errors and that the P(k,z) is slowly + varying */ - rk = pnl->k[index_k]; + dlnk = pnl->ln_k[pnl->k_size-1] - pnl->ln_k[pnl->k_size-2]; - if (rk > ppr->halofit_min_k_nonlinear) { + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k/(1.+dlnk), + z, + index_pk, + &out_pk1, + NULL), + pnl->error_message, + pnl->error_message); - pk_lin = pk_l[index_k]*pow(pnl->k[index_k],3)*anorm; + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k*(1.+dlnk), + z, + index_pk, + &out_pk2, + NULL), + pnl->error_message, + pnl->error_message); - /* in original halofit, this is the beginning of the function halofit() */ + /* logarithmic derivative: n_eff = (logPk2 - logPk1)/(logk2-logk1) */ - /*SPB11: Standard halofit underestimates the power on the smallest - * scales by a factor of two. Add an extra correction from the - * simulations in Bird, Viel,Haehnelt 2011 which partially accounts for - * this.*/ - /*SPB14: This version of halofit is an updated version of the fit to the massive neutrinos - * based on the results of Takahashi 2012, (arXiv:1208.2701). - */ - gam=0.1971-0.0843*rneff+0.8460*rncur; - a=1.5222+2.8553*rneff+2.3706*rneff*rneff+0.9903*rneff*rneff*rneff+ 0.2250*rneff*rneff*rneff*rneff-0.6038*rncur+0.1749*Omega_v*(1.+w0); - a=pow(10,a); - b=pow(10, (-0.5642+0.5864*rneff+0.5716*rneff*rneff-1.5474*rncur+0.2279*Omega_v*(1.+w0))); - c=pow(10, 0.3698+2.0404*rneff+0.8161*rneff*rneff+0.5869*rncur); - xmu=0.; - xnu=pow(10,5.2105+3.6902*rneff); - alpha=fabs(6.0835+1.3373*rneff-0.1959*rneff*rneff-5.5274*rncur); - beta=2.0379-0.7354*rneff+0.3157*pow(rneff,2)+1.2490*pow(rneff,3)+0.3980*pow(rneff,4)-0.1682*rncur + fnu*(1.081 + 0.395*pow(rneff,2)); + *pk_tilt = (log(out_pk2)-log(out_pk1))/(2.*log(1.+dlnk)); - if(fabs(1-Omega_m)>0.01) { /*then omega evolution */ - f1a=pow(Omega_m,(-0.0732)); - f2a=pow(Omega_m,(-0.1423)); - f3a=pow(Omega_m,(0.0725)); - f1b=pow(Omega_m,(-0.0307)); - f2b=pow(Omega_m,(-0.0585)); - f3b=pow(Omega_m,(0.0743)); - frac=Omega_v/(1.-Omega_m); - f1=frac*f1b + (1-frac)*f1a; - f2=frac*f2b + (1-frac)*f2a; - f3=frac*f3b + (1-frac)*f3a; - } - else { - f1=1.; - f2=1.; - f3=1.; - } + return _SUCCESS_; - y=(rk/rknl); - pk_halo = a*pow(y,f1*3.)/(1.+b*pow(y,f2)+pow(f3*c*y,3.-gam)); - pk_halo=pk_halo/(1+xmu*pow(y,-1)+xnu*pow(y,-2))*(1+fnu*(0.977-18.015*(Omega0_m-0.3))); - // rk is in 1/Mpc, 47.48and 1.5 in Mpc**-2, so we need an h**2 here (Credits Antonio J. Cuesta) - pk_linaa=pk_lin*(1+fnu*47.48*pow(rk/pba->h,2)/(1+1.5*pow(rk/pba->h,2))); - pk_quasi=pk_lin*pow((1+pk_linaa),beta)/(1+pk_linaa*alpha)*exp(-y/4.0-pow(y,2)/8.0); +} - pk_nl[index_k] = (pk_halo+pk_quasi)/pow(pnl->k[index_k],3)/anorm; +/** + * This routine computes the variance of density fluctuations in a + * sphere of radius R at redshift z, sigma(R,z), or other similar derived + * quantitites, for one given pk type (_m, _cb). + * + * The integral is performed until the maximum value of k_max defined + * in the perturbation module. Here there is not automatic checking + * that k_max is large enough for the result to be well + * converged. E.g. to get an accurate sigma8 at R = 8 Mpc/h, the user + * should pass at least about P_k_max_h/Mpc = 1. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param index_pk Input: type of pk (_m, _cb) + * @param sigma_output Input: quantity to be computed (sigma, sigma', ...) + * @param result Output: result + * @return the error status + */ - /* in original halofit, this is the end of the function halofit() */ +int nonlinear_sigmas_at_z( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + double R, + double z, + int index_pk, + enum out_sigmas sigma_output, + double * result + ) { + + double * out_pk; + double * ddout_pk; + + /** - allocate temporary array for P(k,z) as a function of k */ + + class_alloc(out_pk, pnl->k_size*sizeof(double), pnl->error_message); + class_alloc(ddout_pk, pnl->k_size*sizeof(double), pnl->error_message); + + /** - get P(k,z) as a function of k, for the right z */ + + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_linear, + z, + index_pk, + out_pk, + NULL), + pnl->error_message, + pnl->error_message); + + /** - spline it along k */ + + class_call(array_spline_table_columns(pnl->ln_k, + pnl->k_size, + out_pk, + 1, + ddout_pk, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - calll the function computing the sigmas */ + + class_call(nonlinear_sigmas(pnl, + R, + out_pk, + ddout_pk, + pnl->k_size, + ppr->sigma_k_per_decade, + sigma_output, + result), + pnl->error_message, + pnl->error_message); + + /** - free allocated arrays */ + + free(out_pk); + free(ddout_pk); + + return _SUCCESS_; +} + +/** + * Return the value of the non-linearity wavenumber k_nl for a given redshift z + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param k_nl Output: k_nl value + * @param k_nl_cb Ouput: k_nl value of the cdm+baryon part only, if there is ncdm + * @return the error status + */ + +int nonlinear_k_nl_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * k_nl, + double * k_nl_cb + ) { + + double tau; + + /** - convert input redshift into a conformal time */ + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + /** - interpolate the precomputed k_nl array at the needed valuetime */ + + if (pnl->has_pk_m == _TRUE_) { + + if (pnl->tau_size == 1) { + *k_nl = pnl->k_nl[pnl->index_pk_m][0]; } else { - pk_nl[index_k] = pk_l[index_k]; + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnl->k_nl[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + k_nl, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); } } - free(pvecback); - free(integrand_array); + /** - if needed, do the same for the baryon part only */ + + if (pnl->has_pk_cb) { + + if (pnl->tau_size == 1) { + *k_nl_cb = pnl->k_nl[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnl->k_nl[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + k_nl_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + + /* otherwise, return the same for k_nl_cb as for k_nl */ + + else{ + *k_nl_cb = *k_nl; + } + + return _SUCCESS_; +} + +/** + * Initialize the nonlinear structure, and in particular the + * nl_corr_density and k_nl interpolation tables. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to therodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input/Output: pointer to initialized nonlinear structure + * @return the error status + */ + +int nonlinear_init( + struct precision *ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl + ) { + + int index_ncdm; + int index_k; + int index_tau; + int index_tau_sources; + int index_tau_late; + int index_pk; + + double **pk_nl; + double **lnpk_l; + double **ddlnpk_l; + + short nl_corr_not_computable_at_this_k = _FALSE_; + + double * pvecback; + int last_index; + double a,z; + + struct nonlinear_workspace nw; + struct nonlinear_workspace * pnw; + + /** - preliminary tests */ + + /** --> This module only makes sense for dealing with scalar + perturbations, so it should do nothing if there are no + scalars */ + if (ppt->has_scalars == _FALSE_) { + pnl->method = nl_none; + printf("No scalar modes requested. Nonlinear module skipped.\n"); + return _SUCCESS_; + } + + /** --> Nothing to be done if we don't want the matter power spectrum */ + + pnl->has_pk_matter = ppt->has_pk_matter; + + if ((pnl->has_pk_matter == _FALSE_) && (pnl->method == nl_none)) { + if (pnl->nonlinear_verbose > 0) + printf("No Fourier spectra nor nonlinear corrections requested. Nonlinear module skipped.\n"); + return _SUCCESS_; + } + else { + if (pnl->nonlinear_verbose > 0) + printf("Computing linear Fourier spectra.\n"); + } + + /** --> check applicability of Halofit and HMcode */ + if (pnl->method > nl_none) { + + if (pba->has_ncdm) { + for (index_ncdm=0;index_ncdm < pba->N_ncdm; index_ncdm++){ + if (pba->m_ncdm_in_eV[index_ncdm] > _M_EV_TOO_BIG_FOR_HALOFIT_) + fprintf(stdout,"Warning: Halofit and HMcode are proved to work for CDM, and also with a small HDM component. But it sounds like you are running with a WDM component of mass %f eV, which makes the use of Halofit suspicious.\n",pba->m_ncdm_in_eV[index_ncdm]); + } + } + if (pba->has_idm_dr){ + fprintf(stdout,"Warning: Halofit and HMcode are proved to work for CDM, and also with a small HDM component. But you have requested interacting dark matter (idm_dr), which makes the use of Halofit or HMCode unreliable.\n"); + } + } + + /** - define indices in nonlinear structure (and allocate some arrays in the structure) */ + + class_call(nonlinear_indices(ppr,pba,ppt,ppm,pnl), + pnl->error_message, + pnl->error_message); + + /** - get the linear power spectrum at each time */ + + for (index_tau=0; index_tauln_tau_size;index_tau++) { + + /* If the user only wants z=0, then pnl->ln_tau_size=1 and we go + only through index_tau=0. However we must pick up the last + value of the source, index_tau_sources = ppt->tau_size-1. If + the user wants several values of z, they correspond to the last + ppt->ln_tau_size values of the sources (those that were also + part of the array ppt->late_sources in the perturbation + module). In all cases, the following formula gives the + correspondance between index_tau in the current array and in + the sources array: + */ + + index_tau_sources = ppt->tau_size-ppt->ln_tau_size+index_tau; + + /** --> loop over required pk types (_m, _cb) */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + /** --> get the linear power spectrum for this time and this type */ + + class_call(nonlinear_pk_linear( + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau_sources, + pnl->k_size, + &(pnl->ln_pk_l[index_pk][index_tau * pnl->k_size]), + &(pnl->ln_pk_ic_l[index_pk][index_tau * pnl->k_size * pnl->ic_ic_size]) + ), + pnl->error_message, + pnl->error_message); + + + /** --> if interpolation of \f$P(k,\tau)\f$ will be needed (as a + function of tau), compute array of second derivatives in view of + spline interpolation */ + + if (pnl->ln_tau_size > 1) { + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_l[index_pk], + pnl->k_size, + pnl->ddln_pk_l[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_ic_l[index_pk], + pnl->k_size*pnl->ic_ic_size, + pnl->ddln_pk_ic_l[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + } + + /** - compute and store sigma8 (variance of density fluctuations in + spheres of radius 8/h Mpc at z=0, always computed by + convention using the linear power spectrum) */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + class_call(nonlinear_sigmas_at_z(ppr, + pba, + pnl, + 8./pba->h, + 0., + index_pk, + out_sigma, + &(pnl->sigma8[index_pk])), + pnl->error_message, + pnl->error_message); + } + + if (pnl->nonlinear_verbose>0) { + + if (pnl->has_pk_m == _TRUE_) + fprintf(stdout," -> sigma8=%g for total matter (computed till k = %g h/Mpc)\n", + pnl->sigma8[pnl->index_pk_m], + pnl->k[pnl->k_size-1]/pba->h); + + if (pnl->has_pk_cb == _TRUE_) + fprintf(stdout," -> sigma8=%g for baryons+cdm (computed till k = %g h/Mpc)\n", + pnl->sigma8[pnl->index_pk_cb], + pnl->k[pnl->k_size-1]/pba->h); + } + + /** - get the non-linear power spectrum at each time */ + + /** --> First deal with the case where non non-linear corrections requested */ + + if (pnl->method == nl_none) { + if (pnl->nonlinear_verbose > 0) + printf("No non-linear spectra requested. Nonlinear calculations skipped.\n"); + } + + /** --> Then go through common preliminary steps to the HALOFIT and HMcode methods */ + else if ((pnl->method == nl_halofit) || ((pnl->method == nl_HMcode))) { + + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_halofit)) + printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); + + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_HMcode)) + printf("Computing non-linear matter power spectrum with HMcode \n"); + + /** --> allocate temporary arrays for spectra at each given time/redshift */ + + class_alloc(pk_nl, + pnl->k_size*sizeof(double), + pnl->error_message); + + class_alloc(lnpk_l, + pnl->k_size*sizeof(double), + pnl->error_message); + + class_alloc(ddlnpk_l, + pnl->k_size*sizeof(double), + pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pk_nl[index_pk],pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(lnpk_l[index_pk],pnl->k_size_extra*sizeof(double),pnl->error_message); + class_alloc(ddlnpk_l[index_pk],pnl->k_size_extra*sizeof(double),pnl->error_message); + } + + /** --> Then go through preliminary steps specific to HMcode */ + + if (pnl->method == nl_HMcode){ + + pnw = &nw; + + class_call(nonlinear_hmcode_workspace_init(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_dark_energy_correction(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_baryonic_feedback(pnl), + pnl->error_message, + pnl->error_message); + } + + /** --> Loop over decreasing time/growing redhsift. For each + time/redshift, compute P_NL(k,z) using either Halofit or + HMcode */ + + /* this flag will become _TRUE_ at the minimum redshift such that + the non-lienar corrections cannot be consistently computed */ + nl_corr_not_computable_at_this_k = _FALSE_; + + /* this index will refer to the value of time corresponding to + that redhsift */ + pnl->index_tau_min_nl = 0; + + for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + + /* loop over index_pk, defined such that it is ensured + * that index_pk starts at index_pk_cb when neutrinos are + * included. This is necessary for hmcode, since the sigmatable + * needs to be filled for sigma_cb only. Thus, when HMcode + * evalutes P_m_nl, it needs both P_m_l and P_cb_l. */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + /* get P_L(k) at this time */ + class_call(nonlinear_pk_linear( + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->k_size_extra, + lnpk_l[index_pk], + NULL + ), + pnl->error_message, + pnl->error_message); + + /* spline P_L(k) at this time along k */ + class_call(array_spline_table_columns( + pnl->ln_k, + pnl->k_size_extra, + lnpk_l[index_pk], + 1, + ddlnpk_l[index_pk], + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /* if we are still in a range of time where P_NL(k) should be computable */ + if (nl_corr_not_computable_at_this_k == _FALSE_) { + + /* get P_NL(k) at this time with Halofit */ + if (pnl->method == nl_halofit) { + + class_call(nonlinear_halofit( + ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l[index_pk], + ddlnpk_l[index_pk], + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k), + pnl->error_message, + pnl->error_message); + + } + + /* get P_NL(k) at this time with HMcode */ + else if (pnl->method == nl_HMcode) { + + /* (preliminary step: fill table of sigma's, only for _cb if there is both _cb and _m) */ + if (index_pk == 0) { + class_call(nonlinear_hmcode_fill_sigtab(ppr, + pba, + ppt, + ppm, + pnl, + index_tau, + lnpk_l[index_pk], + ddlnpk_l[index_pk], + pnw), + pnl->error_message, pnl->error_message); + } + + class_call(nonlinear_hmcode(ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l, + ddlnpk_l, + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k, + pnw), + pnl->error_message, + pnl->error_message); + } + + /* infer and store R_NL=(P_NL/P_L)^1/2 */ + if (nl_corr_not_computable_at_this_k == _FALSE_) { + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = sqrt(pk_nl[index_pk][index_k]/exp(lnpk_l[index_pk][index_k])); + } + } + + /* otherwise we met the first problematic value of time */ + else { + + /* store the index of that value */ + pnl->index_tau_min_nl = MIN(pnl->tau_size-1,index_tau+1); //this MIN() ensures that index_tau_min_nl is never out of bounds + + /* store R_NL=1 for that time */ + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = 1.; + } + + /* send a warning to inform user about the corresponding value of redshift */ + if (pnl->nonlinear_verbose > 0) { + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + class_call(background_at_tau(pba,pnl->tau[index_tau],pba->short_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + a = pvecback[pba->index_bg_a]; + z = pba->a_today/a-1.; + fprintf(stdout, + " -> [WARNING:] Non-linear corrections could not be computed at redshift z=%5.2f and higher.\n This is because k_max is too small for the algorithm (Halofit or HMcode) to be able to compute the scale k_NL at this redshift.\n If non-linear corrections at such high redshift really matter for you,\n just try to increase one of the parameters P_k_max_h/Mpc or P_k_max_1/Mpc or halofit_min_k_max (the code will take the max of these parameters) until reaching desired z.\n",z); + + free(pvecback); + } + } + } + + /* if we are still in a range of time where P_NL(k) should NOT be computable */ + else { + /* store R_NL=1 for that time */ + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = 1.; + } + + } + + /** --> fill the array of nonlinear power spectra (only if we + are at a late time where P(k) and T(k) are supposed to + be stored, i.e., such that z(tau < z_max_pk) */ + + if (index_tau >= pnl->tau_size - pnl->ln_tau_size) { + + index_tau_late = index_tau - (pnl->tau_size - pnl->ln_tau_size); + + for (index_k=0; index_kk_size; index_k++) { + pnl->ln_pk_nl[index_pk][index_tau_late * pnl->k_size + index_k] = pnl->ln_pk_l[index_pk][index_tau_late * pnl->k_size + index_k] + 2.*log(pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k]); + } + } + + } // end loop over index_pk + } //end loop over index_tau + + + /** --> spline the array of nonlinear power spectrum */ + + if (pnl->ln_tau_size > 1) { + for (index_pk=0; index_pkpk_size; index_pk++) { + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_nl[index_pk], + pnl->k_size, + pnl->ddln_pk_nl[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + + /* --> free temporary arrays */ + + for (index_pk=0; index_pkpk_size; index_pk++){ + free(pk_nl[index_pk]); + free(lnpk_l[index_pk]); + free(ddlnpk_l[index_pk]); + } + + free(pk_nl); + free(lnpk_l); + free(ddlnpk_l); + + /** --> free the nonlinear workspace */ + + if (pnl->method == nl_HMcode) { + + class_call(nonlinear_hmcode_workspace_free(pnl,pnw), + pnl->error_message, + pnl->error_message); + } + } + + /** - if the nl_method could not be identified */ + else { + class_stop(pnl->error_message, + "Your non-linear method variable is set to %d, out of the range defined in nonlinear.h",pnl->method); + } + + return _SUCCESS_; +} + +/** + * Free all memory space allocated by nonlinear_init(). + * + * + * @param pnl Input: pointer to nonlineard structure (to be freed) + * @return the error status + */ + +int nonlinear_free( + struct nonlinear *pnl + ) { + int index_pk; + + if ((pnl->has_pk_matter == _TRUE_) || (pnl->method > nl_none)) { + + free(pnl->k); + free(pnl->ln_k); + free(pnl->ln_tau); + + for (index_pk=0; index_pkpk_size; index_pk++) { + free(pnl->ln_pk_ic_l[index_pk]); + free(pnl->ln_pk_l[index_pk]); + if (pnl->ln_tau_size>1) { + free(pnl->ddln_pk_ic_l[index_pk]); + free(pnl->ddln_pk_l[index_pk]); + } + } + free(pnl->ln_pk_ic_l); + free(pnl->ln_pk_l); + + free (pnl->sigma8); + + if (pnl->ln_tau_size>1) { + free(pnl->ddln_pk_ic_l); + free(pnl->ddln_pk_l); + } + } + + if (pnl->method > nl_none) { + + free(pnl->tau); + for(index_pk=0;index_pkpk_size;index_pk++){ + free(pnl->nl_corr_density[index_pk]); + free(pnl->k_nl[index_pk]); + free(pnl->ln_pk_nl[index_pk]); + if (pnl->ln_tau_size > 1) + free(pnl->ddln_pk_nl[index_pk]); + } + free(pnl->nl_corr_density); + free(pnl->k_nl); + free(pnl->ln_pk_nl); + if (pnl->ln_tau_size > 1) + free(pnl->ddln_pk_nl); + } + + if (pnl->has_pk_eq == _TRUE_) { + free(pnl->pk_eq_tau); + free(pnl->pk_eq_w_and_Omega); + free(pnl->pk_eq_ddw_and_ddOmega); + } + + return _SUCCESS_; +} + +/** + * Define indices in the nonlinear array, and when possible, allocate + * arrays in this structure given the index sizes found here + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_indices( + struct precision *ppr, + struct background *pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl + ) { + + int index_ic1_ic2; + int index_pk; + + /** - define indices for initial conditions (and allocate related arrays) */ + pnl->index_md_scalars = ppt->index_md_scalars; + pnl->ic_size = ppm->ic_size[pnl->index_md_scalars]; + pnl->ic_ic_size = ppm->ic_ic_size[pnl->index_md_scalars]; + class_alloc(pnl->is_non_zero,sizeof(short)*pnl->ic_ic_size,pnl->error_message); + for (index_ic1_ic2=0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) + pnl->is_non_zero[index_ic1_ic2] = ppm->is_non_zero[pnl->index_md_scalars][index_ic1_ic2]; + + /** - define flags indices for pk types (_m, _cb). Note: due to some + dependencies in HMcode, when pnl->index_pk_cb exists, it must + come first (e.g. the calculation of the non-linear P_m depends on + sigma_cb so the cb-related quantitites must be evaluated + first) */ + + pnl->has_pk_m = _TRUE_; + if (pba->has_ncdm == _TRUE_) { + pnl->has_pk_cb = _TRUE_; + } + else { + pnl->has_pk_cb = _FALSE_; + } + + index_pk = 0; + class_define_index(pnl->index_pk_cb, pnl->has_pk_cb, index_pk,1); + class_define_index(pnl->index_pk_m, pnl->has_pk_m, index_pk,1); + pnl->pk_size = index_pk; + + /* and two redundent but useful indices: */ + + if (pnl->has_pk_cb == _TRUE_) { + pnl->index_pk_total = pnl->index_pk_m; + pnl->index_pk_cluster = pnl->index_pk_cb; + } + else { + pnl->index_pk_total = pnl->index_pk_m; + pnl->index_pk_cluster = pnl->index_pk_m; + } + + /** - get list of k values */ + + class_call(nonlinear_get_k_list(ppr,ppt,pnl), + pnl->error_message, + pnl->error_message); + + /** - get list of tau values */ + + class_call(nonlinear_get_tau_list(ppt,pnl), + pnl->error_message, + pnl->error_message); + + /** - given previous indices, we can allocate the array of linear power spectrum values */ + + class_alloc(pnl->ln_pk_ic_l,pnl->pk_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ln_pk_l ,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++) { + class_alloc(pnl->ln_pk_ic_l[index_pk],pnl->ln_tau_size*pnl->k_size*pnl->ic_ic_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ln_pk_l[index_pk] ,pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + + /** - if interpolation of \f$P(k,\tau)\f$ will be needed (as a function of tau), + compute also the array of second derivatives in view of spline interpolation */ + + if (pnl->ln_tau_size > 1) { + + class_alloc(pnl->ddln_pk_ic_l,pnl->pk_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ddln_pk_l ,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++) { + class_alloc(pnl->ddln_pk_ic_l[index_pk],pnl->ln_tau_size*pnl->k_size*pnl->ic_ic_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ddln_pk_l[index_pk] ,pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + } + + /** - array of sigma8 values */ + + class_alloc(pnl->sigma8,pnl->pk_size*sizeof(double*),pnl->error_message); + + /** - if non-linear computations needed, allocate array of + non-linear correction ratio R_nl(k,z), k_nl(z) and P_nl(k,z) + for each P(k) type */ + + if (pnl->method > nl_none) { + + class_alloc(pnl->k_nl, + pnl->pk_size*sizeof(double *), + pnl->error_message); + + class_alloc(pnl->nl_corr_density, + pnl->pk_size*sizeof(double *), + pnl->error_message); + + class_alloc(pnl->ln_pk_nl,pnl->pk_size*sizeof(double*),pnl->error_message); + if (pnl->ln_tau_size > 1) + class_alloc(pnl->ddln_pk_nl,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pnl->k_nl[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnl->nl_corr_density[index_pk],pnl->tau_size*pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(pnl->ln_pk_nl[index_pk],pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + if (pnl->ln_tau_size > 1) + class_alloc(pnl->ddln_pk_nl[index_pk],pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + } + + return _SUCCESS_; +} + +/** + * Copy list of k from perturbation module, and extended it if + * necessary to larger k for extrapolation (currently this + * extrapolation is required only by HMcode) + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_get_k_list( + struct precision *ppr, + struct perturbs * ppt, + struct nonlinear * pnl + ) { + + double k=0; + double k_max,exponent; + int index_k; + + pnl->k_size = ppt->k_size[pnl->index_md_scalars]; + k_max = ppt->k[pnl->index_md_scalars][pnl->k_size-1]; + + /** - if k extrapolation necessary, compute number of required extra values */ + if (pnl->method == nl_HMcode){ + index_k=0; + while(k < ppr->hmcode_max_k_extra && index_k < _MAX_NUM_EXTRAPOLATION_){ + index_k++; + k = k_max * pow(10,(double)index_k/ppr->k_per_decade_for_pk); + } + class_test(index_k == _MAX_NUM_EXTRAPOLATION_, + pnl->error_message, + "could not reach extrapolated value k = %.10e starting from k = %.10e with k_per_decade of %.10e in _MAX_NUM_INTERPOLATION_=%i steps", + ppr->hmcode_max_k_extra,k_max,ppr->k_per_decade_for_pk,_MAX_NUM_EXTRAPOLATION_ + ); + pnl->k_size_extra = pnl->k_size+index_k; + } + /** - otherwise, same number of values as in perturbation module */ + else { + pnl->k_size_extra = pnl->k_size; + } + + /** - allocate array of k */ + class_alloc(pnl->k, pnl->k_size_extra*sizeof(double),pnl->error_message); + class_alloc(pnl->ln_k,pnl->k_size_extra*sizeof(double),pnl->error_message); + + /** - fill array of k (not extrapolated) */ + for (index_k=0; index_kk_size; index_k++) { + k = ppt->k[pnl->index_md_scalars][index_k]; + pnl->k[index_k] = k; + pnl->ln_k[index_k] = log(k); + } + + /** - fill additional values of k (extrapolated) */ + for (index_k=pnl->k_size; index_kk_size_extra; index_k++) { + exponent = (double)(index_k-(pnl->k_size-1))/ppr->k_per_decade_for_pk; + pnl->k[index_k] = k * pow(10,exponent); + pnl->ln_k[index_k] = log(k) + exponent*log(10.); + } + + return _SUCCESS_; +} + +/** + * Copy list of tau from perturbation module + * + * @param ppt Input: pointer to perturbation structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_get_tau_list( + struct perturbs * ppt, + struct nonlinear * pnl + ) { + + int index_tau; + + /** -> for linear calculations: only late times are considered, given the value z_max_pk inferred from the ionput */ + pnl->ln_tau_size = ppt->ln_tau_size; + + if (ppt->ln_tau_size > 1) { + + class_alloc(pnl->ln_tau,pnl->ln_tau_size*sizeof(double),pnl->error_message); + + for (index_tau=0; index_tauln_tau_size;index_tau++) { + pnl->ln_tau[index_tau] = ppt->ln_tau[index_tau]; + } + } + + /** -> for non-linear calculations: we wills store a correction factor for all times */ + if (pnl->method > nl_none) { + + pnl->tau_size = ppt->tau_size; + + class_alloc(pnl->tau,pnl->tau_size*sizeof(double),pnl->error_message); + + for (index_tau=0; index_tautau_size; index_tau++) { + pnl->tau[index_tau] = ppt->tau_sampling[index_tau]; + } + } + return _SUCCESS_; +} + +/** + * Get sources for a given wavenumber (and for a given time, type, ic, + * mode...) either directly from precomputed valkues (computed ain + * perturbation module), or by analytic extrapolation + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param pnl Input: pointer to nonlinear structure + * @param index_k Input: index of required k value + * @param index_ic Input: index of required ic value + * @param index_tp Input: index of required tp value + * @param index_tau Input: index of required tau value + * @param sources Input: array containing the original sources + * @param source Output: desired value of source + * @return the error status + */ + +int nonlinear_get_source( + struct background * pba, + struct perturbs * ppt, + struct nonlinear * pnl, + int index_k, + int index_ic, + int index_tp, + int index_tau, + double ** sources, + double * source + ) { + + double k,k_max,k_previous; + double source_max,source_previous; + double scaled_factor; + + /** - use precomputed values */ + if (index_k < pnl->k_size) { + *source = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + index_k]; + } + /** - extrapolate **/ + else { + + k = pnl->k[index_k]; + + /** + * --> Get last source and k, which are used in (almost) all methods + */ + k_max = pnl->k[pnl->k_size-1]; + source_max = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + pnl->k_size - 1]; + + /** + * --> Get previous source and k, which are used in best methods + */ + k_previous = pnl->k[pnl->k_size-2]; + source_previous = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + pnl->k_size - 2]; + + switch(pnl->extrapolation_method){ + /** + * --> Extrapolate by assuming the source to vanish Has terrible + * discontinuity + */ + case extrap_zero: + { + *source=0.0; + break; + } + /** + * --> Extrapolate starting from the maximum value, assuming growth ~ ln(k) + * Has a terrible bend in log slope, discontinuity only in derivative + */ + case extrap_only_max: + { + *source = source_max*(log(k)/log(k_max)); + break; + } + /** + * --> Extrapolate starting from the maximum value, assuming + * growth ~ ln(k) Here we use k in h/Mpc instead of 1/Mpc as it + * is done in the CAMB implementation of HMcode Has a terrible + * bend in log slope, discontinuity only in derivative + */ + case extrap_only_max_units: + { + *source = source_max*(log(k/pba->h)/log(k_max/pba->h)); + break; + } + /** + * --> Extrapolate assuming source ~ ln(a*k) where a is obtained + * from the data at k_0 Mostly continuous derivative, quite good + */ + case extrap_max_scaled: + { + scaled_factor = exp((source_previous*log(k_max)-source_max*log(k_previous))/(source_max-source_previous)); + *source = source_max*(log(scaled_factor*k)/log(scaled_factor*k_max)); + break; + } + /** + * --> Extrapolate assuming source ~ ln(e+a*k) where a is + * estimated like is done in original HMCode + */ + case extrap_hmcode: + { + scaled_factor = 1.8/(13.41*pba->a_eq*pba->H_eq); + *source = source_max*(log(_E_+scaled_factor*k)/log(_E_+scaled_factor*k_max)); + break; + } + /** + * --> If the user has a complicated model and wants to + * interpolate differently, they can define their interpolation + * here and switch to using it instead + */ + case extrap_user_defined: + { + class_stop(pnl->error_message,"Method of source extrapolation 'user_defined' was not yet defined."); + break; + } + } + } + return _SUCCESS_; +} + +/** + * This routine computes all the components of the matter power + * spectrum P(k), given the source functions and the primordial + * spectra, at a given time within the pre-computed table of sources + * (= Fourier transfer functions) of the perturbation module, for a + * given type (total matter _m or baryon+CDM _cb), and for the same + * array of k values as in the pre-computed table. + * + * If the input array of k values pnl->ln_k contains wavemumbers + * larger than those of the pre-computed table, the sources will be + * extrapolated analytically. + * + * On the opther hand, if the primordial spectrum has sharp features + * and needs to be sampled on a finer grid than the sources, this + * function has to be modified to capture the features. + * + * There are two output arrays, because we consider: + * + * - the total matter (_m) or CDM+baryon (_cb) power spectrum + * + * - in the quantitites labelled _ic, the splitting of one of these + * spectra in different modes for different initial conditions. If the + * pointer ln_pk_ic is NULL in input, the function will ignore this + * part; thus, to get the result, one should allocate the array before + * calling the function. Then the convention is the following: + * + * -- the index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) + * (since the primordial spectrum is symmetric in (index_ic1, + * index_ic2)). + * + * -- for diagonal elements (index_ic1 = index_ic2) this + * arrays contains ln[P(k)] where P(k) is positive by construction. + * + * -- for non-diagonal elements this arrays contains the k-dependent + * cosine of the correlation angle, namely P(k)_(index_ic1, + * index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2]. E.g. for fully + * correlated or anti-correlated initial conditions, this non-diagonal + * element is independent on k, and equal to +1 or -1. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of required P(k) type (_m, _cb) + * @param index_tau Input: index of time + * @param k_size Input: wavenumber array size + * @param lnpk Output: log of matter power spectrum for given type/time, for all wavenumbers + * @param lnpk_ic Output: log of matter power spectrum for given type/time, for all wavenumbers and initial conditions + * @return the error status + */ + +int nonlinear_pk_linear( + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + int k_size, + double * lnpk, //lnpk[index_k] + double * lnpk_ic //lnpk[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { + + int index_k; + int index_tp; + int index_ic1,index_ic2,index_ic1_ic1,index_ic1_ic2,index_ic2_ic2; + double * primordial_pk; + double pk; + double * pk_ic; + double source_ic1; + double source_ic2; + double cosine_correlation; + + /** - allocate temporary vector where the primordial spectrum will be stored */ + + class_alloc(primordial_pk,pnl->ic_ic_size*sizeof(double),pnl->error_message); + + class_alloc(pk_ic,pnl->ic_ic_size*sizeof(double),pnl->error_message); + + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + index_tp = ppt->index_tp_delta_m; + } + else if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + index_tp = ppt->index_tp_delta_cb; + } + else { + class_stop(pnl->error_message,"P(k) is set neither to total matter nor to cold dark matter + baryons"); + } + + /** - loop over k values */ + + for (index_k=0; index_k get primordial spectrum */ + class_call(primordial_spectrum_at_k(ppm,pnl->index_md_scalars,logarithmic,pnl->ln_k[index_k],primordial_pk), + ppm->error_message, + pnl->error_message); + + /** --> initialize a local variable for P_m(k) and P_cb(k) to zero */ + pk = 0.; + + /** --> here we recall the relations relevant for the nomalization fo the power spectrum: + For adiabatic modes, the curvature primordial spectrum thnat we just read was: + P_R(k) = 1/(2pi^2) k^3 + Thus the primordial curvature correlator is given by: + = (2pi^2) k^-3 P_R(k) + So the delta_m correlator reads: + P(k) = = (source_m)^2 = (2pi^2) k^-3 (source_m)^2 P_R(k) + + For isocurvature or cross adiabatic-isocurvature parts, + one would just replace one or two 'R' by 'S_i's */ + + /** --> get contributions to P(k) diagonal in the initial conditions */ + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { + + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic1, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic1), + pnl->error_message, + pnl->error_message); + + pk_ic[index_ic1_ic1] = 2.*_PI_*_PI_/exp(3.*pnl->ln_k[index_k]) + *source_ic1*source_ic1 + *exp(primordial_pk[index_ic1_ic1]); + + pk += pk_ic[index_ic1_ic1]; + + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] = log(pk_ic[index_ic1_ic1]); + } + } + + /** --> get contributions to P(k) non-diagonal in the initial conditions */ + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic1, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic1), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic2, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic2), + pnl->error_message, + pnl->error_message); + + cosine_correlation = primordial_pk[index_ic1_ic2]*SIGN(source_ic1)*SIGN(source_ic2); + + pk_ic[index_ic1_ic2] = cosine_correlation * sqrt(pk_ic[index_ic1_ic1]*pk_ic[index_ic2_ic2]); + + pk += 2.*pk_ic[index_ic1_ic2]; + + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = cosine_correlation; + } + } + else { + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = 0.; + } + } + } + } + + lnpk[index_k] = log(pk); + } + + free(primordial_pk); + free(pk_ic); + + return _SUCCESS_; + +} + +/** + * Calculate intermediate quantities for hmcode (sigma, sigma', ...) + * for a given scale R and a given input P(k). + * + * This function has several differences w.r.t. the standard external + * function non_linear_sigma (format of input, of output, integration + * stepsize, management of extrapolation at large k, ...) and is + * overall more precise for sigma(R). + * + * @param pnl Input: pointer to nonlinear structure + * @param R Input: scale at which to compute sigma + * @param lnpk_l Input: array of ln(P(k)) + * @param ddlnpk_l Input: its spline along k + * @param k_size Input: dimension of array lnpk_l, normally pnl->k_size, but inside hmcode it its increased by extrapolation to pnl->k_extra_size + * @param k_per_decade Input: logarithmic step for the integral (recommended: pass ppr->sigma_k_per_decade) + * @param sigma_output Input: quantity to be computed (sigma, sigma', ...) + * @param result Output: result + * @return the error status + */ + +int nonlinear_sigmas( + struct nonlinear * pnl, + double R, + double * lnpk_l, + double * ddlnpk_l, + int k_size, + double k_per_decade, + enum out_sigmas sigma_output, + double * result + ) { + double pk, lnpk; + + double * array_for_sigma; + int index_num; + int index_x; + int index_y; + int index_ddy; + int i=0; + int integrand_size; + int last_index=0; + + double k,W,W_prime,x,t; + + /** - allocate temporary array for an integral over y(x) */ + + class_define_index(index_x, _TRUE_,i,1); // index for x + class_define_index(index_y, _TRUE_,i,1); // index for integrand + class_define_index(index_ddy,_TRUE_,i,1); // index for its second derivative (spline method) + index_num=i; // number of columns in the array + + integrand_size=(int)(log(pnl->k[k_size-1]/pnl->k[0])/log(10.)*k_per_decade)+1; + class_alloc(array_for_sigma, + integrand_size*index_num*sizeof(double), + pnl->error_message); + + /** - fill the array with values of k and of the integrand */ + + for (i=0; ik[0]*pow(10.,i/k_per_decade); + + if (i==0) { + pk = exp(lnpk_l[0]); + } + else { + class_call(array_interpolate_spline( + pnl->ln_k, + k_size, + lnpk_l, + ddlnpk_l, + 1, + log(k), + &last_index, + &lnpk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + pk = exp(lnpk); + } + + t = 1./(1.+k); + if (i == (integrand_size-1)) k *= 0.9999999; // to prevent rounding error leading to k being bigger than maximum value + x=k*R; + + switch (sigma_output) { + + case out_sigma: + if (x<0.01) + W = 1.-x*x/10.; + else + W = 3./x/x/x*(sin(x)-x*cos(x)); + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = t; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = k*k*k*pk*W*W/(t*(1.-t)); + break; + + case out_sigma_prime: + if (x<0.01) { + W = 1.-x*x/10.; + W_prime = -0.2*x; + } + else { + W = 3./x/x/x*(sin(x)-x*cos(x)); + W_prime = 3./x/x*sin(x)-9./x/x/x/x*(sin(x)-x*cos(x)); + } + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = t; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = k*k*k*pk*2.*k*W*W_prime/(t*(1.-t)); + break; + + case out_sigma_disp: + if (x<0.01) + W = 1.-x*x/10.; + else + W = 3./x/x/x*(sin(x)-x*cos(x)); + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = k; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = -pk*W*W; + break; + } + } + + /** - spline the integrand */ + + class_call(array_spline(array_for_sigma, + index_num, + integrand_size, + index_x, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - integrate */ + + class_call(array_integrate_all_trapzd_or_spline(array_for_sigma, + index_num, + integrand_size, + 0, //integrand_size-1, + index_x, + index_y, + index_ddy, + result, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - preperly normalize the final result */ + + switch (sigma_output) { + + case out_sigma: + *result = sqrt(*result/(2.*_PI_*_PI_)); + break; + + case out_sigma_prime: + *result = *result/(2.*_PI_*_PI_); + break; + + case out_sigma_disp: + *result = sqrt(*result/(2.*_PI_*_PI_*3.)); + break; + } + + /** - free allocated array */ + + free(array_for_sigma); + + return _SUCCESS_; +} + +/** + * This routine computes the variance of density fluctuations in a + * sphere of radius R at redshift z, sigma(R,z) for one given pk type (_m, _cb). + * + * Try to use instead nonlinear_sigmas_at_z(). This function is just + * maintained for compatibility with the deprecated function + * spectra_sigma() + * + * The integral is performed until the maximum value of k_max defined + * in the perturbation module. Here there is not automatic checking + * that k_max is large enough for the result to be well + * converged. E.g. to get an accurate sigma8 at R = 8 Mpc/h, the user + * should pass at least about P_k_max_h/Mpc = 1. + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param index_pk Input: type of pk (_m, _cb) + * @param k_per_decade Input: logarithmic step for the integral (recommended: pass ppr->sigma_k_per_decade) + * @param result Output: result + * @return the error status + */ + +int nonlinear_sigma_at_z( + struct background * pba, + struct nonlinear * pnl, + double R, + double z, + int index_pk, + double k_per_decade, + double * result + ) { + + double * out_pk; + double * ddout_pk; + + /** - allocate temporary array for P(k,z) as a function of k */ + + class_alloc(out_pk, pnl->k_size*sizeof(double), pnl->error_message); + class_alloc(ddout_pk, pnl->k_size*sizeof(double), pnl->error_message); + + /** - get P(k,z) as a function of k, for the right z */ + + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_linear, + z, + index_pk, + out_pk, + NULL), + pnl->error_message, + pnl->error_message); + + /** - spline it along k */ + + class_call(array_spline_table_columns(pnl->ln_k, + pnl->k_size, + out_pk, + 1, + ddout_pk, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - calll the function computing the sigmas */ + + class_call(nonlinear_sigmas(pnl, + R, + out_pk, + ddout_pk, + pnl->k_size, + k_per_decade, + out_sigma, + result), + pnl->error_message, + pnl->error_message); + + /** - free allocated arrays */ + + free(out_pk); + free(ddout_pk); + + return _SUCCESS_; +} + +/** + * Calculation of the nonlinear matter power spectrum with Halofit + * (includes Takahashi 2012 + Bird 2013 revisions). + * + * At high redshift it is possible that the non-linear corrections are + * so small that they can be computed only by going to very large + * wavenumbers. Thius, for some combination of (z, k_max), the + * calculation is not possible. In this case a _FALSE_ will be + * returned in the flag halofit_found_k_max. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of component are we looking at (total matter or cdm+baryons?) + * @param tau Input: conformal time at which we want to do the calculation + * @param pk_nl Output: non linear spectrum at the relevant time + * @param lnpk_l Input: array of log(P(k)_linear) + * @param ddlnpk_l Input: array of second derivative of log(P(k)_linear) wrt k, for spline interpolation + * @param k_nl Output: non-linear wavenumber + * @param nl_corr_not_computable_at_this_k Ouput: flag concerning the status of the calculation (_TRUE_ if not possible) + * @return the error status + */ + +int nonlinear_halofit( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + double tau, + double *pk_nl, + double *lnpk_l, + double *ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k + ) { + + double Omega_m,Omega_v,fnu,w0, dw_over_da_fld, integral_fld; + + /** Determine non linear ratios (from pk) **/ + + int index_k; + double pk_lin,pk_quasi,pk_halo,rk; + double sigma,rknl,rneff,rncur,d1,d2; + double diff,xlogr1,xlogr2,rmid; + + double gam,a,b,c,xmu,xnu,alpha,beta,f1,f2,f3; + double pk_linaa; + double y; + double f1a,f2a,f3a,f1b,f2b,f3b,frac; + + double * pvecback; + + int last_index=0; + int counter; + double sum1,sum2,sum3; + double anorm; + + double *integrand_array; + int integrand_size; + int index_ia_k; + int index_ia_pk; + int index_ia_sum; + int index_ia_ddsum; + /* + int index_ia_sum2; + int index_ia_ddsum2; + int index_ia_sum3; + int index_ia_ddsum3; + */ + int ia_size; + int index_ia; + + double k_integrand; + double lnpk_integrand; + + double R; + + double * w_and_Omega; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + fnu = pba->Omega0_ncdm_tot/pba->Omega0_m; + } + else if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + fnu = 0.; + } + else { + class_stop(pnl->error_message,"P(k) is set neither to total matter nor to cold dark matter + baryons"); + } + + if (pnl->has_pk_eq == _FALSE_) { + + /* default method to compute w0 = w_fld today, Omega_m(tau) and Omega_v=Omega_DE(tau), + all required by HALFIT fitting formulas */ + + class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), pba->error_message, pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m]; + Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + + } + else { + + /* alternative method called Pk_equal, described in 0810.0190 and + 1601.07230, extending the range of validity of + HALOFIT from constant w to (w0,wa) models. In that + case, some effective values of w0(tau_i) and + Omega_m(tau_i) have been pre-computed in the + input module, and we just ned to interpolate + within tabulated arrays, to get them at the + current tau value. */ + + class_alloc(w_and_Omega,pnl->pk_eq_size*sizeof(double),pnl->error_message); + + class_call(array_interpolate_spline( + pnl->pk_eq_tau, + pnl->pk_eq_tau_size, + pnl->pk_eq_w_and_Omega, + pnl->pk_eq_ddw_and_ddOmega, + pnl->pk_eq_size, + tau, + &last_index, + w_and_Omega, + pnl->pk_eq_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + w0 = w_and_Omega[pnl->index_pk_eq_w]; + Omega_m = w_and_Omega[pnl->index_pk_eq_Omega_m]; + Omega_v = 1.-Omega_m; + + free(w_and_Omega); + } + + anorm = 1./(2*pow(_PI_,2)); + + /* Until the 17.02.2015 the values of k used for integrating sigma(R) quantities needed by Halofit where the same as in the perturbation module. + Since then, we sample these integrals on more values, in order to get more precise integrals (thanks Matteo Zennaro for noticing the need for this). + + We create a temporary integrand_array which columns will be: + - k in 1/Mpc + - just linear P(k) in Mpc**3 + - 1/(2(pi**2)) P(k) k**2 exp(-(kR)**2) or 1/(2(pi**2)) P(k) k**2 2 (kR) exp(-(kR)**2) or 1/(2(pi**2)) P(k) k**2 4 (kR)(1-kR) exp(-(kR)**2) + - second derivative of previous line with spline + */ + + index_ia=0; + class_define_index(index_ia_k, _TRUE_,index_ia,1); + class_define_index(index_ia_pk, _TRUE_,index_ia,1); + class_define_index(index_ia_sum, _TRUE_,index_ia,1); + class_define_index(index_ia_ddsum, _TRUE_,index_ia,1); + ia_size = index_ia; + + integrand_size=(int)(log(pnl->k[pnl->k_size-1]/pnl->k[0])/log(10.)*ppr->halofit_k_per_decade)+1; + + class_alloc(integrand_array,integrand_size*ia_size*sizeof(double),pnl->error_message); + + + /* we fill integrand_array with values of k and P(k) using interpolation */ + + last_index=0; + + for (index_k=0; index_k < integrand_size; index_k++) { + + k_integrand=pnl->k[0]*pow(10.,index_k/ppr->halofit_k_per_decade); + + if (index_k ==0 ) { + lnpk_integrand = lnpk_l[0]; + } + else { + + class_call(array_interpolate_spline( + pnl->ln_k, + pnl->k_size, + lnpk_l, + ddlnpk_l, + 1, + log(k_integrand), + &last_index, + &lnpk_integrand, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + integrand_array[index_k*ia_size + index_ia_k] = k_integrand; + integrand_array[index_k*ia_size + index_ia_pk] = exp(lnpk_integrand); + + } + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m]; + Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + + // for debugging: + //printf("Call Halofit at z=%e\n",pba->a_today/pvecback[pba->index_bg_a]-1.); + + /* minimum value of R such that the integral giving sigma_R is + converged. The parameter halofit_sigma_precision should be + understood as follows: we trust our calculation of sigma(R) as + long as the integral reaches a value k_max such that the factor + exp(-(Rk_max)**2) is already as low as halofit_sigma_precisio, + shoing that the integreal is converged. In practise this + condition is tested only for R_max, the highest value of R in our + bisection algorithm. Hence a smaller value of + halofit_sigma_precision will lead to a more precise halofit + result at the *highest* redshift at which halofit can make + computations, at the expense of requiring a larger k_max; but + this parameter is not relevant for the precision on P_nl(k,z) at + other redshifts, so there is normally no need to change i + */ + + R=sqrt(-log(ppr->halofit_sigma_precision))/integrand_array[(integrand_size-1)*ia_size + index_ia_k]; + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + R, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + /* the following error should not stop the code: it will arrive + inevitably at some large redshift, and then the code should not + stop, but just give up computing P_NL(k,z). This is why we have a + special error handling here (using class_test_except and free() + commands to avoid memory leaks, and calling this whole function + not through a class_call) */ + + /* + class_test_except(sigma < 1., + pnl->error_message, + free(pvecback);free(integrand_array), + "Your k_max=%g 1/Mpc is too small for Halofit to find the non-linearity scale z_nl at z=%g. Increase input parameter P_k_max_h/Mpc or P_k_max_1/Mpc", + pnl->k[pnl->k_size-1], + pba->a_today/pvecback[pba->index_bg_a]-1.); + */ + + if (sigma < 1.) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(pvecback); + free(integrand_array); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + xlogr1 = log(R)/log(10.); + + /* maximum value of R in the bisection algorithm leading to the + determination of R_nl. For this value we can make a + conservaitive guess: 1/halofit_min_k_nonlinear, where + halofit_min_k_nonlinear is the minimum value of k at which we ask + halofit to give us an estimate of P_nl(k,z). By assumption we + treat all smaller k's as linear, so we know that + sigma(1/halofit_min_k_nonlinear) must be <<1 (and if it is not + the test below will alert us) */ + + R=1./ppr->halofit_min_k_nonlinear; + + /* corresponding value of sigma_R */ + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + R, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + class_test(sigma > 1., + pnl->error_message, + "Your input value for the precision parameter halofit_min_k_nonlinear=%e is too large, such that sigma(R=1/halofit_min_k_nonlinear)=% > 1. For self-consistency, it should have been <1. Decrease halofit_min_k_nonlinear", + ppr->halofit_min_k_nonlinear,sigma); + + xlogr2 = log(R)/log(10.); + + counter = 0; + do { + rmid = pow(10,(xlogr2+xlogr1)/2.0); + counter ++; + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + diff = sigma - 1.0; + + if (diff > ppr->halofit_tol_sigma){ + xlogr1=log10(rmid); + } + else if (diff < -ppr->halofit_tol_sigma) { + xlogr2 = log10(rmid); + } + + /* The first version of this test woukld let the code continue: */ + /* + class_test_except(counter > _MAX_IT_, + pnl->error_message, + free(pvecback);free(integrand_array), + "could not converge within maximum allowed number of iterations"); + */ + /* ... but in this situation it sounds better to make it stop and return an error! */ + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->halofit_tol_sigma); + + /* evaluate all the other integrals at R=rmid */ + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_two, + &sum2 + ), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_three, + &sum3 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + d1 = -sum2/sum1; + d2 = -sum2*sum2/sum1/sum1 - sum3/sum1; + + rknl = 1./rmid; + rneff = -3.-d1; + rncur = -d2; + + *k_nl = rknl; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + rk = pnl->k[index_k]; + + if (rk > ppr->halofit_min_k_nonlinear) { + + pk_lin = exp(lnpk_l[index_k])*pow(pnl->k[index_k],3)*anorm; + + /* in original halofit, this is the beginning of the function halofit() */ + + /*SPB11: Standard halofit underestimates the power on the smallest + * scales by a factor of two. Add an extra correction from the + * simulations in Bird, Viel,Haehnelt 2011 which partially accounts for + * this.*/ + /*SPB14: This version of halofit is an updated version of the fit to the massive neutrinos + * based on the results of Takahashi 2012, (arXiv:1208.2701). + */ + gam=0.1971-0.0843*rneff+0.8460*rncur; + a=1.5222+2.8553*rneff+2.3706*rneff*rneff+0.9903*rneff*rneff*rneff+ 0.2250*rneff*rneff*rneff*rneff-0.6038*rncur+0.1749*Omega_v*(1.+w0); + a=pow(10,a); + b=pow(10, (-0.5642+0.5864*rneff+0.5716*rneff*rneff-1.5474*rncur+0.2279*Omega_v*(1.+w0))); + c=pow(10, 0.3698+2.0404*rneff+0.8161*rneff*rneff+0.5869*rncur); + xmu=0.; + xnu=pow(10,5.2105+3.6902*rneff); + alpha=fabs(6.0835+1.3373*rneff-0.1959*rneff*rneff-5.5274*rncur); + beta=2.0379-0.7354*rneff+0.3157*pow(rneff,2)+1.2490*pow(rneff,3)+0.3980*pow(rneff,4)-0.1682*rncur + fnu*(1.081 + 0.395*pow(rneff,2)); + + if(fabs(1-Omega_m)>0.01) { /*then omega evolution */ + f1a=pow(Omega_m,(-0.0732)); + f2a=pow(Omega_m,(-0.1423)); + f3a=pow(Omega_m,(0.0725)); + f1b=pow(Omega_m,(-0.0307)); + f2b=pow(Omega_m,(-0.0585)); + f3b=pow(Omega_m,(0.0743)); + frac=Omega_v/(1.-Omega_m); + f1=frac*f1b + (1-frac)*f1a; + f2=frac*f2b + (1-frac)*f2a; + f3=frac*f3b + (1-frac)*f3a; + } + else { + f1=1.; + f2=1.; + f3=1.; + } + + y=(rk/rknl); + pk_halo = a*pow(y,f1*3.)/(1.+b*pow(y,f2)+pow(f3*c*y,3.-gam)); + pk_halo=pk_halo/(1+xmu*pow(y,-1)+xnu*pow(y,-2))*(1+fnu*(0.977-18.015*(pba->Omega0_m-0.3))); + // rk is in 1/Mpc, 47.48and 1.5 in Mpc**-2, so we need an h**2 here (Credits Antonio J. Cuesta) + pk_linaa=pk_lin*(1+fnu*47.48*pow(rk/pba->h,2)/(1+1.5*pow(rk/pba->h,2))); + pk_quasi=pk_lin*pow((1+pk_linaa),beta)/(1+pk_linaa*alpha)*exp(-y/4.0-pow(y,2)/8.0); + + pk_nl[index_k] = (pk_halo+pk_quasi)/pow(pnl->k[index_k],3)/anorm; + + /* in original halofit, this is the end of the function halofit() */ + } + else { + pk_nl[index_k] = exp(lnpk_l[index_k]); + } + } + + free(pvecback); + free(integrand_array); + return _SUCCESS_; +} + +/** + * Internal routione of Halofit. In original Halofit, this is + * equivalent to the function wint(). It performs convolutions of the + * linear spectrum with two window functions. + * + * @param pnl Input: pointer to non linear structure + * @param integrand_array Input: array with k, P_L(k) values + * @param integrand_size Input: one dimension of that array + * @param ia_size Input: other dimension of that array + * @param index_ia_k Input: index for k + * @param index_ia_pk Input: index for pk + * @param index_ia_sum Input: index for the result + * @param index_ia_ddsum Input: index for its spline + * @param R Input: radius + * @param type Input: which window function to use + * @param sum Output: result of the integral + * @return the error status + */ + +int nonlinear_halofit_integrate( + struct nonlinear *pnl, + double * integrand_array, + int integrand_size, + int ia_size, + int index_ia_k, + int index_ia_pk, + int index_ia_sum, + int index_ia_ddsum, + double R, + enum halofit_integral_type type, + double * sum + ) { + + double k,pk,x2,integrand; + int index_k; + double anorm = 1./(2*pow(_PI_,2)); + + for (index_k=0; index_k < integrand_size; index_k++) { + k = integrand_array[index_k*ia_size + index_ia_k]; + pk = integrand_array[index_k*ia_size + index_ia_pk]; + x2 = k*k*R*R; + + integrand = pk*k*k*anorm*exp(-x2); + if (type == halofit_integral_two) integrand *= 2.*x2; + if (type == halofit_integral_three) integrand *= 4.*x2*(1.-x2); + + integrand_array[index_k*ia_size + index_ia_sum] = integrand; + } + + /* fill in second derivatives */ + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum, + index_ia_ddsum, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /* integrate */ + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum, + index_ia_ddsum, + sum, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + return _SUCCESS_; +} + +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 1505.07833 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ) { + + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + + double sigma_disp, sigma_disp100, sigma8; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp; + double pk_lin, pk_2h, pk_1h; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + free(pvecback); + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + + // virialized overdensity + Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + alpha = 3.24*pow(1.85, n_eff); + + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + conc[index_mass] = pnl->c_min; + } else { + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*pnw->dark_energy_correction; + } + } + + + /** Compute the nonlinear correction */ + eta = pnl->eta_0 - 0.3*sigma8; // halo bloating parameter + k_star=0.584/sigma_disp; // Damping wavenumber of the 1-halo term at very large scales; + fdamp = 0.0095*pow(sigma_disp100*pba->h, 1.37); // Damping factor for 2-halo term + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + if (pow(pnl->k[index_k]/k_star, 2)>7.){ + fac = 0.; //prevents problems if (k/k*)^2 is large + } + else{ + fac=exp(-pow((pnl->k[index_k]/k_star), 2.)); + } + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(1.-fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h=pk_lin*(1.-fdamp*pow(tanh(pnl->k[index_k]*sigma_disp/sqrt(fdamp)), 2.)); //dimensionless power + } + if (pk_2h<0.) pk_2h=0.; + pk_nl[index_k] = pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; //converted back to P_k + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 && tau==pba->conformal_age) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " fdamp: %e\n", fdamp); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + + } + + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + + return _SUCCESS_; +} + +/** + * allocate and fill arrays of nonlinear workspace (currently used only by HMcode) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_workspace_init( + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ){ + + int ng; + int index_pk; + + /** - allocate arrays of the nonlinear workspace */ + + class_alloc(pnw->rtab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->stab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->ddstab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + + ng = ppr->n_hmcode_tables; + + class_alloc(pnw->growtable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->ztable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->tautable,ng*sizeof(double),pnl->error_message); + + class_alloc(pnw->sigma_8,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_disp,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_disp_100,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_prime,pnl->pk_size*sizeof(double *),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pnw->sigma_8[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_disp[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_disp_100[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_prime[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + } + + /** - fill table with scale independent growth factor */ + + class_call(nonlinear_hmcode_fill_growtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + return _SUCCESS_; +} + +/** + * deallocate arrays in the nonlinear worksapce (currently used only + * by HMcode) + * + * @param pnl Input: pointer to nonlinear structure + * @param pnw Input: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_workspace_free( + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + int index_pk; + + free(pnw->rtab); + free(pnw->stab); + free(pnw->ddstab); + + free(pnw->growtable); + free(pnw->ztable); + free(pnw->tautable); + + for (index_pk=0; index_pkpk_size; index_pk++){ + free(pnw->sigma_8[index_pk]); + free(pnw->sigma_disp[index_pk]); + free(pnw->sigma_disp_100[index_pk]); + free(pnw->sigma_prime[index_pk]); + } + + free(pnw->sigma_8); + free(pnw->sigma_disp); + free(pnw->sigma_disp_100); + free(pnw->sigma_prime); + + return _SUCCESS_; +} + +/** + * set the HMcode dark energy correction (if w is not -1) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_dark_energy_correction( + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + + int last_index; + double * pvecback; + double tau_growth; + double g_lcdm,g_wcdm; + double w0,dw_over_da_fld,integral_fld; + + /** - if there is dynamical Dark Energy (w is not -1) modeled as a fluid */ + + if (pba->has_fld==_TRUE_){ + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_tau_of_z( + pba, + pnl->z_infinity, + &tau_growth + ), + pba->error_message, + pnl->error_message); + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), + pba->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),-1.,0.,&g_lcdm), + pnl->error_message, pnl->error_message); + + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),w0,dw_over_da_fld*(-1.),&g_wcdm), + pnl->error_message, + pnl->error_message); + + free(pvecback); + + pnw->dark_energy_correction = pow(g_wcdm/g_lcdm, 1.5); + } + + /** - otherwise, we assume no dynamical Dark Energy (w is -1) */ + + else { + pnw->dark_energy_correction = 1.; + } + + return _SUCCESS_; +} + +/** + * set the HMcode baryonic feedback parameters according to the chosen feedback model + * + * @param pnl Output: pointer to nonlinear structure + * @return the error status + */ + +int nonlinear_hmcode_baryonic_feedback( + struct nonlinear *pnl + ) { + + switch (pnl->feedback) { + + case nl_emu_dmonly: + { + pnl->eta_0 = 0.603; + pnl->c_min = 3.13; + break; + } + + case nl_owls_dmonly: + { + pnl->eta_0 = 0.64; + pnl->c_min = 3.43; + break; + } + + case nl_owls_ref: + { + pnl->eta_0 = 0.68; + pnl->c_min = 3.91; + break; + } + + case nl_owls_agn: + { + pnl->eta_0 = 0.76; + pnl->c_min = 2.32; + break; + } + + case nl_owls_dblim: + { + pnl->eta_0 = 0.70; + pnl->c_min = 3.01; + break; + } + + case nl_user_defined: + { + /* eta_0 and c_min already passed in input */ + break; + } + } + return _SUCCESS_; +} + +/** + * Function that fills pnw->rtab, pnw->stab and pnw->ddstab with (r, + * sigma, ddsigma) logarithmically spaced in r. Called by + * nonlinear_init at for all tau to account for scale-dependant growth + * before nonlinear_hmcode is called + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param lnpk_l Input: logarithm of the linear power spectrum for either index_m or index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for either index_m or index_cb + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_fill_sigtab( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl, + int index_tau, + double *lnpk_l, + double *ddlnpk_l, + struct nonlinear_workspace * pnw + ) { + + double r; + double rmin, rmax; + double sig; + double * sigtab; + int i, index_r, index_sig, index_ddsig, index_n, nsig; + + rmin = ppr->rmin_for_sigtab/pba->h; + rmax = ppr->rmax_for_sigtab/pba->h; + nsig = ppr->n_hmcode_tables; + + i=0; + index_r=i; + i++; + index_sig=i; + i++; + index_ddsig=i; + i++; + index_n=i; + + class_alloc((sigtab),(nsig*index_n*sizeof(double)),pnl->error_message); + + for (i=0;ik_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sig), + pnl->error_message, + pnl->error_message); + + sigtab[i*index_n+index_r]=r; + sigtab[i*index_n+index_sig]=sig; + } + + class_call(array_spline(sigtab, + index_n, + nsig, + index_r, + index_sig, + index_ddsig, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + if (index_tau == pnl->tau_size-1){ + for (i=0;irtab[i] = sigtab[i*index_n+index_r]; + pnw->stab[i] = sigtab[i*index_n+index_sig]; + pnw->ddstab[i] = sigtab[i*index_n+index_ddsig]; + } + } + else{ + for (i=0;istab[i] = sigtab[i*index_n+index_sig]; + pnw->ddstab[i] = sigtab[i*index_n+index_ddsig]; + } + } + + free(sigtab); + + return _SUCCESS_; +} + + +/** + * Function that fills pnw->tautable and pnw->growtable with (tau, D(tau)) + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_fill_growtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + + double z, ainit, amax, scalefactor, tau_growth; + int index_scalefactor, last_index, ng; + double * pvecback; + + ng = ppr->n_hmcode_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + + last_index = 0; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + for (index_scalefactor=0;index_scalefactorztable[index_scalefactor] = z; + + class_call(background_tau_of_z( + pba, + z, + &tau_growth + ), + pba->error_message, pnl->error_message); + + pnw->tautable[index_scalefactor] = tau_growth; + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + pnw->growtable[index_scalefactor] = pvecback[pba->index_bg_D]; + + } + + free(pvecback); + + return _SUCCESS_; +} + +/** + * This function finds the scale independent growth factor by + * integrating the approximate relation d(lnD)/d(lna) = + * Omega_m(z)^gamma by Linder & Cahn 2007 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param a Input: scalefactor + * @param w0 Input: dark energy equation of state today + * @param wa Input: dark energy equation of state varying with a: w=w0+(1-a)wa + * @param growth Output: scale independent growth factor at a + * @return the error status + */ + +int nonlinear_hmcode_growint( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + double a, + double w0, + double wa, + double * growth + ){ + + double z, ainit, amax, scalefactor, gamma, X_de, Hubble2, Omega_m; + int i, index_scalefactor, index_a, index_growth, index_ddgrowth, index_gcol, ng; // index_scalefactor is a running index while index_a is a column index + double * pvecback; + double * integrand; + + ng = 1024; // number of growth values (stepsize of the integral), should not be hardcoded and replaced by a precision parameter + ainit = a; + amax = 1.; + + i=0; + index_a = i; + i++; + index_growth = i; + i++; + index_ddgrowth = i; + i++; + index_gcol = i; + + class_alloc(integrand,ng*index_gcol*sizeof(double),pnl->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + if (ainit == amax) { + *growth = 1.; + } + else { + + for (index_scalefactor=0;index_scalefactorOmega0_m*pow((1.+z), 3.) + pba->Omega0_k*pow((1.+z), 2.) + pba->Omega0_de*X_de); + Omega_m = (pba->Omega0_m*pow((1.+z), 3.))/Hubble2; + /* Samuel brieden: TBC: check that the matching between the + background quantity and this fitting formula improves by + using Omega_cb (as it is done in background). Carefull: + Hubble remains with Omega0_m */ + + if (w0 == -1.){ + gamma = 0.55; + } + else if (w0 < -1.){ + gamma = 0.55+0.02*(1+w0); + } + else { + gamma = 0.55+0.05*(1+w0); + } + integrand[index_scalefactor*index_gcol+index_a] = scalefactor; + integrand[index_scalefactor*index_gcol+index_growth]= -pow(Omega_m, gamma)/scalefactor; + } + + class_call(array_spline(integrand, + index_gcol, + ng, + index_a, + index_growth, + index_ddgrowth, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline(integrand, + index_gcol, + ng, + 0, //ng-1, + index_a, + index_growth, + index_ddgrowth, + growth, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + *growth = exp(*growth); + + } + //fprintf(stdout, "%e %e \n", a, *growth); + free(pvecback); + free(integrand); + + return _SUCCESS_; +} + +/** + * This is the fourier transform of the NFW density profile. + * + * @param pnl Input: pointer to nonlinear structure + * @param k Input: wave vector + * @param rv Input: virial radius + * @param c Input: concentration = rv/rs (with scale radius rs) + * @param window_nfw Output: Window Function of the NFW profile + * @return the error status + */ + +int nonlinear_hmcode_window_nfw( + struct nonlinear * pnl, + double k, + double rv, + double c, + double *window_nfw + ){ + double si1, si2, ci1, ci2, ks; + double p1, p2, p3; + + ks = k*rv/c; + + class_call(sine_integral( + ks*(1.+c), + &si2, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(sine_integral( + ks, + &si1, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(cosine_integral( + ks*(1.+c), + &ci2, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(cosine_integral( + ks, + &ci1, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + p1=cos(ks)*(ci2-ci1); + p2=sin(ks)*(si2-si1); + p3=sin(ks*c)/(ks*(1.+c)); + + *window_nfw=p1+p2-p3; + *window_nfw=*window_nfw/(log(1.+c)-c/(1.+c)); + + return _SUCCESS_; +} + +/** + * This is the Sheth-Tormen halo mass function (1999, MNRAS, 308, 119) + * + * @param nu Input: the \f$ \nu \f$ parameter that depends on the halo mass via \f$ \nu(M) = \delta_c/\sigma(M) \f$ + * @param hmf Output: Value of the halo mass function at this \f$ \nu \f$ + * @return the error status + */ + +int nonlinear_hmcode_halomassfunction( + double nu, + double * hmf + ){ + + double p, q, A; + + p=0.3; + q=0.707; + A=0.21616; + + *hmf=A*(1.+(pow(q*nu*nu, -p)))*exp(-q*nu*nu/2.); + + return _SUCCESS_; +} + +/** + * Compute sigma8(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_8 Output: sigma8(z) + * @param sigma_8_cb Output: sigma8_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigma8_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_8, + double * sigma_8_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_8 = pnw->sigma_8[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_8[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_8, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_8_cb = pnw->sigma_8[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_8[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_8_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_8_cb = *sigma_8; + } + + + + return _SUCCESS_; +} + +/** + * Compute sigmadisp(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_disp Output: sigmadisp(z) + * @param sigma_disp_cb Output: sigmadisp_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmadisp_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_disp, + double * sigma_disp_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_disp = pnw->sigma_disp[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_disp, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_disp_cb = pnw->sigma_disp[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_disp_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_disp_cb = *sigma_disp; + } + + + + return _SUCCESS_; +} + +/** + * Compute sigmadisp100(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_disp_100 Output: sigmadisp100(z) + * @param sigma_disp_100_cb Output: sigmadisp100_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmadisp100_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_disp_100, + double * sigma_disp_100_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_disp_100 = pnw->sigma_disp_100[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp_100[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_disp_100, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_disp_100_cb = pnw->sigma_disp_100[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp_100[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_disp_100_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_disp_100_cb = *sigma_disp_100; + } + + + return _SUCCESS_; +} + +/** + * Compute sigma'(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_prime Output: sigma'(z) + * @param sigma_prime_cb Output: sigma'_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmaprime_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_prime, + double * sigma_prime_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_prime = pnw->sigma_prime[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_prime[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_prime, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_prime_cb = pnw->sigma_prime[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_prime[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_prime_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_prime_cb = *sigma_prime; + } + + return _SUCCESS_; } diff --git a/class/source/output.c b/class/source/output.c old mode 100644 new mode 100755 index 779c0bde..24f7408d --- a/class/source/output.c +++ b/class/source/output.c @@ -144,14 +144,16 @@ int output_init( if (ppt->has_pk_matter == _TRUE_) { - class_call(output_pk(pba,ppt,psp,pop), + class_call(output_pk(pba,ppt,pnl,pop,pk_linear), pop->error_message, pop->error_message); if (pnl->method != nl_none) { - class_call(output_pk_nl(pba,ppt,psp,pop), - pop->error_message, - pop->error_message); + + class_call(output_pk(pba,ppt,pnl,pop,pk_nonlinear), + pop->error_message, + pop->error_message); + } } @@ -159,9 +161,10 @@ int output_init( if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - class_call(output_tk(pba,ppt,psp,pop), + class_call(output_tk(pba,ppt,pop), pop->error_message, pop->error_message); + } /** - deal with background quantities */ @@ -590,434 +593,296 @@ int output_cl( } /** - * This routines writes the output in files for Fourier matter power spectra P(k)'s. + * This routines writes the output in files for Fourier matter power spectra P(k)'s + * (linear or non-linear) * - * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) - * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure - * @param pop Input: pointer to output structure + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param ppt Input: pointer perturbation structure + * @param pnl Input: pointer to nonlinear structure + * @param pop Input: pointer to output structure + * @param pk_output Input: pk_linear or pk_nonlinear */ int output_pk( struct background * pba, struct perturbs * ppt, - struct spectra * psp, - struct output * pop + struct nonlinear * pnl, + struct output * pop, + enum pk_outputs pk_output ) { /** Summary: */ /** - define local variables */ - FILE ** out_ic=NULL; /* array of pointers to files with argument - out_ic[index_ic1_ic2] - (will contain P(k)'s for each pair of initial conditions) */ - - FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ + FILE ** out_pk_ic = NULL; /* out_pk_ic[index_ic1_ic2] is a pointer to a file with P(k) for each pair of ic */ + FILE * out_pk; /* out_pk[index_pk] is a pointer to a file with total P(k) summed over ic */ - double * pk_ic=NULL; /* array with argument - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] */ + double * ln_pk_ic = NULL; /* array ln_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] */ + double * ln_pk; /* array ln_pk[index_k] */ - double * pk_tot; /* array with argument - pk_tot[index_k] */ - - int index_md; int index_ic1,index_ic2; int index_ic1_ic2=0; int index_k; int index_z; + int index_pk; FileName file_name; - FileName redshift_suffix; - char first_line[_LINE_LENGTH_MAX_]; - index_md=ppt->index_md_scalars; + char redshift_suffix[7]; // 7 is enough to write "z%d_" as long as there are at most 10'000 bins + char type_suffix[9]; // 6 is enough to write "pk_cb_nl" plus closing character \0 + char first_line[_LINE_LENGTH_MAX_]; + short do_ic = _FALSE_; - for (index_z = 0; index_z < pop->z_pk_num; index_z++) { + /** - preliminary: check whether we need to output the decomposition into contributions from each initial condition */ - /** - first, check that requested redshift z_pk is consistent */ + if ((pk_output == pk_linear) && (pnl->ic_size > 1)) + do_ic = _TRUE_; - class_test((pop->z_pk[index_z] > psp->z_max_pk), - pop->error_message, - "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); - - if (pop->z_pk_num == 1) - redshift_suffix[0]='\0'; - else - sprintf(redshift_suffix,"z%d_",index_z+1); + /** - allocate arrays to store the P(k) */ - /** - second, open only the relevant files and write a heading in each of them */ - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk.dat"); + class_alloc(ln_pk, + pnl->k_size*sizeof(double), + pop->error_message); - class_call(output_open_pk_file(pba, - psp, - pop, - &out, - file_name, - "", - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); + if (do_ic == _TRUE_) { - class_alloc(pk_tot, - psp->ln_k_size*sizeof(double), + class_alloc(ln_pk_ic, + pnl->k_size*pnl->ic_ic_size*sizeof(double), pop->error_message); - if (psp->ic_size[index_md] > 1) { - - class_alloc(out_ic, - psp->ic_ic_size[index_md]*sizeof(FILE *), - pop->error_message); - - class_alloc(pk_ic, - psp->ln_k_size*psp->ic_ic_size[index_md]*sizeof(double), - pop->error_message); - - for (index_ic1 = 0; index_ic1 < ppt->ic_size[index_md]; index_ic1++) { - - for (index_ic2 = index_ic1; index_ic2 < ppt->ic_size[index_md]; index_ic2++) { - - if ((ppt->has_ad == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + /** - allocate pointer to output files */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad.dat"); - strcpy(first_line,"for adiabatic (AD) mode "); - } - - if ((ppt->has_bi == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi.dat"); - strcpy(first_line,"for baryon isocurvature (BI) mode "); - } - - if ((ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi.dat"); - strcpy(first_line,"for CDM isocurvature (CDI) mode "); - } + class_alloc(out_pk_ic, + pnl->ic_ic_size*sizeof(FILE *), + pop->error_message); + } - if ((ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + /** - loop over pk type (_cb, _m) */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid.dat"); - strcpy(first_line,"for neutrino density isocurvature (NID) mode "); - } + for (index_pk=0; index_pkpk_size; index_pk++) { - if ((ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + if (pk_output == pk_linear) + sprintf(type_suffix,"pk"); + else + sprintf(type_suffix,"pk_nl"); + } + if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + if (pk_output == pk_linear) + sprintf(type_suffix,"pk_cb"); + else + sprintf(type_suffix,"pk_cb_nl"); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_niv.dat"); - strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode "); - } + /** - loop over z */ - if ((ppt->has_ad == _TRUE_) && - (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + for (index_z = 0; index_z < pop->z_pk_num; index_z++) { - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_bi.dat"); - strcpy(first_line,"for cross ADxBI mode "); - } + /** - first, check that requested redshift z_pk is consistent */ - if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + class_test((pop->z_pk[index_z] > ppt->z_max_pk), + pop->error_message, + "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",ppt->z_max_pk,pop->z_pk[index_z]); - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_cdi.dat"); - strcpy(first_line,"for cross ADxCDI mode "); - } + if (pop->z_pk_num == 1) + redshift_suffix[0]='\0'; + else + sprintf(redshift_suffix,"z%d_",index_z+1); - if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + /** - second, open only the relevant files and write a header in each of them */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_nid.dat"); - strcpy(first_line,"for scalar cross ADxNID mode "); - } + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,".dat"); - if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + class_call(output_open_pk_file(pba, + pnl, + pop, + &out_pk, + file_name, + "", + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_niv.dat"); - strcpy(first_line,"for cross ADxNIV mode "); - } + if (do_ic == _TRUE_) { - if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_cdi.dat"); - strcpy(first_line,"for cross BIxCDI mode "); - } + for (index_ic2 = index_ic1; index_ic2 < pnl->ic_size; index_ic2++) { - if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + if ((ppt->has_ad == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad.dat"); + strcpy(first_line,"for adiabatic (AD) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_nid.dat"); - strcpy(first_line,"for cross BIxNID mode "); - } + if ((ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi.dat"); + strcpy(first_line,"for baryon isocurvature (BI) mode "); + } - if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi.dat"); + strcpy(first_line,"for CDM isocurvature (CDI) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_niv.dat"); - strcpy(first_line,"for cross BIxNIV mode "); - } + if ((ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_nid.dat"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode "); + } - if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + if ((ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_niv.dat"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_nid.dat"); - strcpy(first_line,"for cross CDIxNID mode "); - } + if ((ppt->has_ad == _TRUE_) && (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_bi.dat"); + strcpy(first_line,"for cross ADxBI mode "); + } - if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_cdi.dat"); + strcpy(first_line,"for cross ADxCDI mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_niv.dat"); - strcpy(first_line,"for cross CDIxNIV mode "); - } + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_nid.dat"); + strcpy(first_line,"for scalar cross ADxNID mode "); + } - if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_niv.dat"); + strcpy(first_line,"for cross ADxNIV mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid_niv.dat"); - strcpy(first_line,"for cross NIDxNIV mode "); - } + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_cdi.dat"); + strcpy(first_line,"for cross BIxCDI mode "); + } - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_nid.dat"); + strcpy(first_line,"for cross BIxNID mode "); + } - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_niv.dat"); + strcpy(first_line,"for cross BIxNIV mode "); + } - class_call(output_open_pk_file(pba, - psp, - pop, - &(out_ic[index_ic1_ic2]), - file_name, - first_line, - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); - } - } - } - } + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi_nid.dat"); + strcpy(first_line,"for cross CDIxNID mode "); + } - /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi_niv.dat"); + strcpy(first_line,"for cross CDIxNIV mode "); + } - /* if z_pk = 0, no interpolation needed */ + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_nid_niv.dat"); + strcpy(first_line,"for cross NIDxNIV mode "); + } - if (pop->z_pk[index_z] == 0.) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); - for (index_k=0; index_kln_k_size; index_k++) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { - if (psp->ic_size[index_md] == 1) { - pk_tot[index_k] = exp(psp->ln_pk[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); - } - else { - pk_tot[index_k] = 0.; - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(psp->ln_pk[((psp->ln_tau_size-1) * psp->ln_k_size + index_k) * psp->ic_ic_size[index_md] + index_ic1_ic2]); - pk_tot[index_k] += pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; - } - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = - psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] - *sqrt(pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * - pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - pk_tot[index_k] += 2.*pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; + class_call(output_open_pk_file(pba, + pnl, + pop, + &(out_pk_ic[index_ic1_ic2]), + file_name, + first_line, + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); } } } } - } - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { + /** - third, compute P(k) for each k */ - class_call(spectra_pk_at_z(pba, - psp, - linear, - pop->z_pk[index_z], - pk_tot, - pk_ic), - psp->error_message, + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + pop->z_pk[index_z], + index_pk, + ln_pk, + ln_pk_ic + ), + pnl->error_message, pop->error_message); - } - /** - fourth, write in files */ + /** - fourth, write in files */ - for (index_k=0; index_kln_k_size; index_k++) { + for (index_k=0; index_kk_size; index_k++) { - class_call(output_one_line_of_pk(out, - exp(psp->ln_k[index_k])/pba->h, - pk_tot[index_k]*pow(pba->h,3)), - pop->error_message, - pop->error_message); + class_call(output_one_line_of_pk(out_pk, + exp(pnl->ln_k[index_k])/pba->h, + exp(ln_pk[index_k])*pow(pba->h,3) + ), + pop->error_message, + pop->error_message); - if (psp->ic_size[index_md] > 1) { + if (do_ic == _TRUE_) { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { - class_call(output_one_line_of_pk(out_ic[index_ic1_ic2], - exp(psp->ln_k[index_k])/pba->h, - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]*pow(pba->h,3)), - pop->error_message, - pop->error_message); + class_call(output_one_line_of_pk(out_pk_ic[index_ic1_ic2], + exp(pnl->ln_k[index_k])/pba->h, + exp(ln_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2])*pow(pba->h,3)), + pop->error_message, + pop->error_message); + } } } - } - } + } /* end loop over k */ - /** - fifth, free memory and close files */ + /** - fifth, close files */ - free(pk_tot); - fclose(out); + fclose(out_pk); - if (psp->ic_size[index_md] > 1) { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - fclose(out_ic[index_ic1_ic2]); + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { + fclose(out_pk_ic[index_ic1_ic2]); + } } } - free(out_ic); - free(pk_ic); - } - - } - - return _SUCCESS_; - -} -/** - * This routines writes the output in files for Fourier non-linear matter power spectra P(k)'s. - * - * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) - * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure - * @param pop Input: pointer to output structure - */ - -int output_pk_nl( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp, - struct output * pop - ) { - - /** Summary: */ - - /** - define local variables */ - - FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ - - double * pk_tot; /* array with argument pk_tot[index_k] */ - - int index_k; - int index_z; - - FileName file_name; - FileName redshift_suffix; - - for (index_z = 0; index_z < pop->z_pk_num; index_z++) { - - /** - first, check that requested redshift z_pk is consistent */ - - class_test((pop->z_pk[index_z] > psp->z_max_pk), - pop->error_message, - "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); - - if (pop->z_pk_num == 1) - redshift_suffix[0]='\0'; - else - sprintf(redshift_suffix,"z%d_",index_z+1); - - /** - second, open only the relevant files, and write a heading in each of them */ + } /* end loop over index_z */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nl.dat"); - - class_call(output_open_pk_file(pba, - psp, - pop, - &out, - file_name, - "", - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); - - class_alloc(pk_tot, - psp->ln_k_size*sizeof(double), - pop->error_message); - - /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ - - /* if z_pk = 0, no interpolation needed */ - - if (pop->z_pk[index_z] == 0.) { - - for (index_k=0; index_kln_k_size; index_k++) { - - pk_tot[index_k] = exp(psp->ln_pk_nl[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); - - } - } - - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { - - class_call(spectra_pk_nl_at_z(pba, - psp, - linear, - pop->z_pk[index_z], - pk_tot), - psp->error_message, - pop->error_message); - } - - /** - fourth, write in files */ - - for (index_k=0; index_kln_k_size; index_k++) { - - class_call(output_one_line_of_pk(out, - exp(psp->ln_k[index_k])/pba->h, - pk_tot[index_k]*pow(pba->h,3)), - pop->error_message, - pop->error_message); - - } - - /** - fifth, free memory and close files */ - - fclose(out); - free(pk_tot); + } /* end loop over index_pk */ + /* free arrays and pointers */ + free(ln_pk); + if (pk_output == pk_linear) { + free(ln_pk_ic); + free(out_pk_ic); } return _SUCCESS_; - } - /** * This routines writes the output in files for matter transfer functions \f$ T_i(k)\f$'s. * * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure * @param pop Input: pointer to output structure */ int output_tk( struct background * pba, struct perturbs * ppt, - struct spectra * psp, struct output * pop ) { @@ -1037,9 +902,10 @@ int output_tk( double z; FileName file_name; - FileName redshift_suffix; + char redshift_suffix[7]; // 7 is enough to write "z%d_" as long as there are at most 10'000 bins char first_line[_LINE_LENGTH_MAX_]; - FileName ic_suffix; + char ic_suffix[4]; // 4 is enough to write "ad", "bi", "cdi", "nid", "niv", ... + index_md=ppt->index_md_scalars; @@ -1055,13 +921,13 @@ int output_tk( } - class_call(spectra_output_tk_titles(pba,ppt,pop->output_format,titles), + class_call(perturb_output_titles(pba,ppt,pop->output_format,titles), pba->error_message, pop->error_message); number_of_titles = get_number_of_titles(titles); - size_data = number_of_titles*psp->ln_k_size; + size_data = number_of_titles*ppt->k_size[index_md]; - class_alloc(data, sizeof(double)*psp->ic_size[index_md]*size_data, pop->error_message); + class_alloc(data, sizeof(double)*ppt->ic_size[index_md]*size_data, pop->error_message); for (index_z = 0; index_z < pop->z_pk_num; index_z++) { @@ -1069,9 +935,9 @@ int output_tk( /** - first, check that requested redshift z_pk is consistent */ - class_test((pop->z_pk[index_z] > psp->z_max_pk), + class_test((pop->z_pk[index_z] > ppt->z_max_pk), pop->error_message, - "T_i(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); + "T_i(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",ppt->z_max_pk,pop->z_pk[index_z]); if (pop->z_pk_num == 1) redshift_suffix[0]='\0'; @@ -1080,21 +946,20 @@ int output_tk( /** - second, open only the relevant files, and write a heading in each of them */ - class_call(spectra_output_tk_data(pba, + class_call(perturb_output_data(pba, ppt, - psp, pop->output_format, pop->z_pk[index_z], number_of_titles, data ), - psp->error_message, + ppt->error_message, pop->error_message); for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - class_call(spectra_firstline_and_ic_suffix(ppt, index_ic, first_line, ic_suffix), - pop->error_message, pop->error_message); + class_call(perturb_output_firstline_and_ic_suffix(ppt, index_ic, first_line, ic_suffix), + ppt->error_message, pop->error_message); if ((ppt->has_ad == _TRUE_) && (ppt->ic_size[index_md] == 1) ) sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"tk.dat"); @@ -1106,8 +971,8 @@ int output_tk( if (pop->write_header == _TRUE_) { if (pop->output_format == class_format) { fprintf(tkfile,"# Transfer functions T_i(k) %sat redshift z=%g\n",first_line,z); - fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",ppt->k[index_md][0]/pba->h,ppt->k[index_md][ppt->k_size[index_md]-1]/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",ppt->k_size[index_md]); if (ppt->has_density_transfers == _TRUE_) { fprintf(tkfile,"# d_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); fprintf(tkfile,"# d_tot stands for (delta rho_tot/rho_tot)(k,z) with rho_Lambda NOT included in rho_tot\n"); @@ -1123,8 +988,8 @@ int output_tk( else if (pop->output_format == camb_format) { fprintf(tkfile,"# Rescaled matter transfer functions [-T_i(k)/k^2] %sat redshift z=%g\n",first_line,z); - fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",ppt->k[index_md][0]/pba->h,ppt->k[index_md][ppt->k_size[index_md]-1]/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",ppt->k_size[index_md]); fprintf(tkfile,"# T_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); fprintf(tkfile,"# The rescaling factor [-1/k^2] with k in 1/Mpc is here to match the CMBFAST/CAMB output convention\n"); fprintf(tkfile,"#\n"); @@ -1138,7 +1003,7 @@ int output_tk( titles, data+index_ic*size_data, size_data); - + /** - free memory and close files */ fclose(tkfile); @@ -1207,7 +1072,7 @@ int output_thermodynamics( struct background * pba, struct thermo * pth, struct output * pop - ) { + ) { FileName file_name; FILE * thermofile; @@ -1234,15 +1099,25 @@ int output_thermodynamics( if (pop->write_header == _TRUE_) { fprintf(thermofile,"# Table of selected thermodynamics quantities\n"); fprintf(thermofile,"# The following notation is used in column titles:\n"); - fprintf(thermofile,"# x_e = electron ionization fraction\n"); - fprintf(thermofile,"# -kappa = optical depth\n"); - fprintf(thermofile,"# kappa' = Thomson scattering rate, prime denotes conformal time derivatives\n"); - fprintf(thermofile,"# g = kappa' e^-kappa = visibility function \n"); - fprintf(thermofile,"# Tb = baryon temperature \n"); - fprintf(thermofile,"# c_b^2 = baryon sound speed squared \n"); - fprintf(thermofile,"# tau_d = baryon drag optical depth \n"); - if (pth->compute_damping_scale == _TRUE_) { - fprintf(thermofile,"# r_d = simplest analytic approximation to photon comoving damping scale \n"); + fprintf(thermofile,"# x_e = electron ionization fraction\n"); + fprintf(thermofile,"# -kappa = optical depth\n"); + fprintf(thermofile,"# kappa' = Thomson scattering rate, prime denotes conformal time derivatives\n"); + fprintf(thermofile,"# g = kappa' e^-kappa = visibility function \n"); + fprintf(thermofile,"# Tb = baryon temperature \n"); + fprintf(thermofile,"# w_b = baryon equation of state parameter \n"); + fprintf(thermofile,"# c_b^2 = baryon sound speed squared \n"); + fprintf(thermofile,"# tau_d = baryon drag optical depth \n"); + if (pth->compute_damping_scale == _TRUE_) + fprintf(thermofile,"# r_d = approximate comoving value of photon damping scale \n"); + if(pba->has_idm_dr == _TRUE_) { + fprintf(thermofile,"# dmu_idm_dr = scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1/Mpc)\n"); + fprintf(thermofile,"# ddmu_idm_dr = derivative of this rate\n"); + fprintf(thermofile,"# tau_idm_dr = optical depth of idm_dr (due to interactions with idr) \n"); + fprintf(thermofile,"# tau_idr = optical depth of idr (due to self-interactions) \n"); + fprintf(thermofile,"# g_idm_dr = visibility function of idm_idr \n"); + fprintf(thermofile,"# c_idm_dr^2 = interacting dark matter squared sound speed \n"); + fprintf(thermofile,"# T_idm_dr = temperature of DM interacting with DR \n"); + fprintf(thermofile,"# dmu_idr = idr self-interaction rate \n"); } } @@ -1371,7 +1246,7 @@ int output_print_data(FILE *out, char *pch; /** Summary*/ - + /** - First we print the titles */ fprintf(out,"#"); @@ -1420,7 +1295,7 @@ int output_open_cl_file( int lmax ) { /** Summary */ - + int index_d1,index_d2; int colnum = 1; char tmp[60]; //A fixed number here is ok, since it should just correspond to the largest string which is printed to tmp. @@ -1428,7 +1303,7 @@ int output_open_cl_file( class_open(*clfile,filename,"w",pop->error_message); if (pop->write_header == _TRUE_) { - + /** - First we deal with the entries that are dependent of format type */ if (pop->output_format == class_format) { @@ -1446,6 +1321,26 @@ int output_open_cl_file( } fprintf(*clfile,"# -> if you don't want to see such a header, set 'headers' to 'no' in input file\n"); + + if (psp->has_pp == _TRUE_) { + if (pop->output_format == class_format) { + fprintf(*clfile,"# -> for CMB lensing (phi), these are C_l^phi-phi for the lensing potential.\n"); + } + if (pop->output_format == camb_format) { + fprintf(*clfile,"# -> for CMB lensing (d), these are C_l^dd for the deflection field.\n"); + } + } + + if (psp->has_ll == _TRUE_) { + fprintf(*clfile,"# -> for galaxy lensing (lens[i]), these are C_l^phi-phi for the lensing potential.\n"); + } + + if (psp->has_pp == _TRUE_ || psp->has_ll == _TRUE_) { + fprintf(*clfile,"# Remember the conversion factors:\n"); + fprintf(*clfile,"# C_l^dd (deflection) = l(l+1) C_l^phi-phi\n"); + fprintf(*clfile,"# C_l^gg (shear/convergence) = 1/4 (l(l+1))^2 C_l^phi-phi\n"); + } + fprintf(*clfile,"#\n"); if (0==1){ @@ -1610,7 +1505,7 @@ int output_one_line_of_cl( * a heading with some general information concerning its content. * * @param pba Input: pointer to background structure (needed for h) - * @param psp Input: pointer to spectra structure + * @param pnl Input: pointer to nonlinear structure * @param pop Input: pointer to output structure * @param pkfile Output: returned pointer to file pointer * @param filename Input: name of the file @@ -1621,7 +1516,7 @@ int output_one_line_of_cl( int output_open_pk_file( struct background * pba, - struct spectra * psp, + struct nonlinear * pnl, struct output * pop, FILE * * pkfile, FileName filename, @@ -1635,9 +1530,9 @@ int output_open_pk_file( if (pop->write_header == _TRUE_) { fprintf(*pkfile,"# Matter power spectrum P(k) %sat redshift z=%g\n",first_line,z); fprintf(*pkfile,"# for k=%g to %g h/Mpc,\n", - exp(psp->ln_k[0])/pba->h, - exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(*pkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + exp(pnl->ln_k[0])/pba->h, + exp(pnl->ln_k[pnl->k_size-1])/pba->h); + fprintf(*pkfile,"# number of wavenumbers equal to %d\n",pnl->k_size); fprintf(*pkfile,"#"); class_fprintf_columntitle(*pkfile,"k (h/Mpc)",_TRUE_,colnum); diff --git a/class/source/perturbations.c b/class/source/perturbations.c index 5149a3b4..046f001a 100644 --- a/class/source/perturbations.c +++ b/class/source/perturbations.c @@ -36,7 +36,7 @@ * @param ppt Input: pointer to perturbation structure containing interpolation tables * @param index_md Input: index of requested mode * @param index_ic Input: index of requested initial condition - * @param index_type Input: index of requested source function type + * @param index_tp Input: index of requested source function type * @param tau Input: any value of conformal time * @param psource Output: vector (already allocated) of source function as a function of k * @return the error status @@ -46,29 +46,388 @@ int perturb_sources_at_tau( struct perturbs * ppt, int index_md, int index_ic, - int index_type, + int index_tp, double tau, double * psource ) { - /** Summary: */ + /** - define local variables */ + + int last_index; + double logtau; + + logtau = log(tau); + /** - interpolate in pre-computed table contained in ppt */ - class_call(array_interpolate_two_bis(ppt->tau_sampling, - 1, - 0, - ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], - ppt->k_size[index_md], - ppt->tau_size, - tau, - psource, - ppt->k_size[index_md], - ppt->error_message), - ppt->error_message, - ppt->error_message); + /** - linear interpolation at early times (z>z_max_pk), available, + but actually never used by default version of CLASS */ + + if ((logtau < ppt->ln_tau[0]) || (ppt->ln_tau_size <= 1)) { + + class_call(array_interpolate_two_bis(ppt->tau_sampling, + 1, + 0, + ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], + ppt->k_size[index_md], + ppt->tau_size, + tau, + psource, + ppt->k_size[index_md], + ppt->error_message), + ppt->error_message, + ppt->error_message); + } + + /** - more accurate spline interpolation at late times (zln_tau, + ppt->ln_tau_size, + ppt->late_sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md], + logtau, + &last_index, + psource, + ppt->k_size[index_md], + ppt->error_message), + ppt->error_message, + ppt->error_message); + } + + return _SUCCESS_; +} + +/** + * Function called by the output module or the wrappers, which returns all + * the source functions \f$ S^{X} (k, \tau) \f$ at a given conformal + * time tau corresponding to the input redshift z. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param output_format Input: choice of ordering and normalisation for the output quantities + * @param z Input: redshift + * @param number_of_titles Input: number of requested source functions (found in perturb_output_titles) + * @param data Output: vector of all source functions for all k values and initial conditions (previously allocated with the right size) + * @return the error status + */ + +int perturb_output_data( + struct background * pba, + struct perturbs * ppt, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ) { + + int n_ncdm; + double k, k_over_h, k2; + double * tkfull=NULL; /* array with argument + pk_ic[(index_k * psp->ic_size[index_md] + index_ic)*psp->tr_size+index_tr] */ + double *tk; + double *dataptr; + + double * pvecsources; + + double tau; + + int index_md = ppt->index_md_scalars; + int index_ic; + int index_k; + int index_tp; + int storeidx; + + if (ppt->k_size[index_md]*ppt->ic_size[index_md]*ppt->tp_size[index_md] > 0) { + class_alloc(tkfull, + ppt->k_size[index_md]*ppt->ic_size[index_md]*ppt->tp_size[index_md]*sizeof(double), + ppt->error_message); + } + + /** - compute \f$T_i(k)\f$ for each k (if several ic's, compute it for each ic; if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + + /* if z_pk = 0, no interpolation needed */ + + if (z == 0.) { + + for (index_k=0; index_kk_size[index_md]; index_k++) { + for (index_tp=0; index_tptp_size[index_md]; index_tp++) { + for (index_ic=0; index_icic_size[index_md]; index_ic++) { + tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md] + index_tp] + = ppt->sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp][(ppt->tau_size-1) * ppt->k_size[index_md] + index_k]; + } + } + } + } + + /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ + else { + + /* check the time corresponding to the highest redshift requested in output plus one */ + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + ppt->error_message); + + class_test(log(tau) < ppt->ln_tau[0], + "Asking sources at a z bigger than z_max_pk, something probably went wrong\n", + ppt->error_message); + + class_alloc(pvecsources, + ppt->k_size[index_md]*sizeof(double), + ppt->error_message); + + for (index_k=0; index_kk_size[index_md]; index_k++) { + for (index_tp=0; index_tptp_size[index_md]; index_tp++) { + for (index_ic=0; index_icic_size[index_md]; index_ic++) { + class_call(perturb_sources_at_tau(ppt, + index_md, + index_ic, + index_tp, + tau, + pvecsources), + ppt->error_message, + ppt->error_message); + + tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md] + index_tp] = + pvecsources[index_k]; + } + } + } + free(pvecsources); + } + + /** - store data */ + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + for (index_k=0; index_kk_size[index_md]; index_k++) { + + storeidx = 0; + dataptr = data+index_ic*(ppt->k_size[index_md]*number_of_titles)+index_k*number_of_titles; + tk = &(tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md]]); + k = ppt->k[index_md][index_k]; + k2 = k*k; + k_over_h = k/pba->h; + + class_store_double(dataptr, k_over_h, _TRUE_,storeidx); + + /* indices for species associated with a velocity transfer function in Fourier space */ + + if (output_format == class_format) { + + if (ppt->has_density_transfers == _TRUE_) { + class_store_double(dataptr,tk[ppt->index_tp_delta_g],ppt->has_source_delta_g,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_b],ppt->has_source_delta_b,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_cdm],ppt->has_source_delta_cdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_idm_dr],ppt->has_source_delta_idm_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_fld],ppt->has_source_delta_fld,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_ur],ppt->has_source_delta_ur,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_idr],ppt->has_source_delta_idr,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[ppt->index_tp_delta_ncdm1+n_ncdm],ppt->has_source_delta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[ppt->index_tp_delta_dcdm],ppt->has_source_delta_dcdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_dr],ppt->has_source_delta_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_scf],ppt->has_source_delta_scf,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_tot],ppt->has_source_delta_tot,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_phi],ppt->has_source_phi,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_psi],ppt->has_source_psi,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_phi_prime],ppt->has_source_phi_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_h],ppt->has_source_h,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_h_prime],ppt->has_source_h_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_eta],ppt->has_source_eta,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_eta_prime],ppt->has_source_eta_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_H_T_Nb_prime],ppt->has_source_H_T_Nb_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_k2gamma_Nb],ppt->has_source_k2gamma_Nb,storeidx); + } + if (ppt->has_velocity_transfers == _TRUE_) { + + class_store_double(dataptr,tk[ppt->index_tp_theta_g],ppt->has_source_theta_g,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_b],ppt->has_source_theta_b,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_cdm],ppt->has_source_theta_cdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_idm_dr],ppt->has_source_theta_idm_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_fld],ppt->has_source_theta_fld,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_ur],ppt->has_source_theta_ur,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_idr],ppt->has_source_theta_idr,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[ppt->index_tp_theta_ncdm1+n_ncdm],ppt->has_source_theta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[ppt->index_tp_theta_dcdm],ppt->has_source_theta_dcdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_dr],ppt->has_source_theta_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_scf],ppt->has_source_theta_scf,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_tot],ppt->has_source_theta_tot,storeidx); + + } + + } + else if (output_format == camb_format) { + + /* rescale and reorder the matter transfer functions following the CMBFAST/CAMB convention */ + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_cdm]/k2,ppt->has_source_delta_cdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_idm_dr]/k2,ppt->has_source_delta_idm_dr,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_b]/k2,ppt->has_source_delta_b,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_g]/k2,ppt->has_source_delta_g,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_ur]/k2,ppt->has_source_delta_ur,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_idr]/k2,ppt->has_source_delta_idr,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_ncdm1]/k2,ppt->has_source_delta_ncdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_tot]/k2,_TRUE_,storeidx,0.0); + } + } + } + + //Necessary because the size could be zero (if ppt->tp_size is zero) + if (tkfull != NULL) + free(tkfull); + + return _SUCCESS_; +} + +/** + * Fill array of strings with the name of the requested 'mTk, vTk' functions + * (transfer functions as a function of wavenumber for fixed times). + * + * @param pba Input: pointer to the background structure + * @param ppt Input: pointer to the perturbation structure + * @param output_format Input: flag for the format + * @param titles Output: name strings + * @return the error status + */ + +int perturb_output_titles( + struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + int n_ncdm; + char tmp[40]; + + if (output_format == class_format) { + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + if (ppt->has_density_transfers == _TRUE_) { + class_store_columntitle(titles,"d_g",_TRUE_); + class_store_columntitle(titles,"d_b",_TRUE_); + class_store_columntitle(titles,"d_cdm",pba->has_cdm); + class_store_columntitle(titles,"d_idm_dr",pba->has_idm_dr); + class_store_columntitle(titles,"d_fld",pba->has_fld); + class_store_columntitle(titles,"d_ur",pba->has_ur); + class_store_columntitle(titles,"d_idr",pba->has_idr); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"d_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"d_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"d_dr",pba->has_dr); + class_store_columntitle(titles,"d_scf",pba->has_scf); + class_store_columntitle(titles,"d_tot",_TRUE_); + class_store_columntitle(titles,"phi",ppt->has_source_phi); + class_store_columntitle(titles,"psi",ppt->has_source_psi); + class_store_columntitle(titles,"phi_prime",ppt->has_source_phi_prime); + class_store_columntitle(titles,"h",ppt->has_source_h); + class_store_columntitle(titles,"h_prime",ppt->has_source_h_prime); + class_store_columntitle(titles,"eta",ppt->has_source_eta); + class_store_columntitle(titles,"eta_prime",ppt->has_source_eta_prime); + class_store_columntitle(titles,"H_T_Nb_prime",ppt->has_source_H_T_Nb_prime); + class_store_columntitle(titles,"k2gamma_Nb",ppt->has_source_k2gamma_Nb); + } + if (ppt->has_velocity_transfers == _TRUE_) { + class_store_columntitle(titles,"t_g",_TRUE_); + class_store_columntitle(titles,"t_b",_TRUE_); + class_store_columntitle(titles,"t_cdm",((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous))); + class_store_columntitle(titles,"t_idm_dr",pba->has_idm_dr); + class_store_columntitle(titles,"t_fld",pba->has_fld); + class_store_columntitle(titles,"t_ur",pba->has_ur); + class_store_columntitle(titles,"t_idr",pba->has_idr); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"t_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"t_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"t_dr",pba->has_dr); + class_store_columntitle(titles,"t__scf",pba->has_scf); + class_store_columntitle(titles,"t_tot",_TRUE_); + } + } + + else if (output_format == camb_format) { + + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + class_store_columntitle(titles,"-T_cdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_idm_dr/k2",_TRUE_); + class_store_columntitle(titles,"-T_b/k2",_TRUE_); + class_store_columntitle(titles,"-T_g/k2",_TRUE_); + class_store_columntitle(titles,"-T_ur/k2",_TRUE_); + class_store_columntitle(titles,"-T_idr/k2",_TRUE_); + class_store_columntitle(titles,"-T_ncdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_tot/k2",_TRUE_); + + } + + return _SUCCESS_; +} + +/** + * Fill strings that will be used when writing the transfer functions + * and the spectra in files (in the file names and in the comment at the beginning of each file). + * + * @param ppt Input: pointer to the perturbation structure + * @param index_ic Input: index of the initial condition + * @param first_line Output: line of comment + * @param ic_suffix Output: suffix for the output file name + * @return the error status + * + */ + +int perturb_output_firstline_and_ic_suffix( + struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix + ){ + + first_line[0]='\0'; + ic_suffix[0]='\0'; + + if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { + strcpy(ic_suffix,"ad"); + strcpy(first_line,"for adiabatic (AD) mode (normalized to initial curvature=1) "); + } + + if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + strcpy(ic_suffix,"bi"); + strcpy(first_line,"for baryon isocurvature (BI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + strcpy(ic_suffix,"cdi"); + strcpy(first_line,"for CDM isocurvature (CDI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { + strcpy(ic_suffix,"nid"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode (normalized to initial entropy=1)"); + } + if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { + strcpy(ic_suffix,"niv"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode (normalized to initial entropy=1)"); + } return _SUCCESS_; } @@ -112,8 +471,12 @@ int perturb_init( int index_ic; /* running index for wavenumbers */ int index_k; + /* running index for type of perturbation */ + int index_tp; /* pointer to one struct perturb_workspace per thread (one if no openmp) */ struct perturb_workspace ** pppw; + /* background quantities */ + double w_fld_ini, w_fld_0,dw_over_da_fld,integral_fld; /* number of threads (always one if no openmp) */ int number_of_threads=1; /* index of the thread (always 0 if no openmp) */ @@ -160,6 +523,13 @@ int perturb_init( ppt->error_message, "your radiation_streaming_approximation is set to %d, out of range defined in perturbations.h",ppr->radiation_streaming_approximation); + if (pba->has_idr == _TRUE_){ + class_test ((ppr->idr_streaming_approximation < rsa_idr_none) || + (ppr->idr_streaming_approximation > rsa_idr_MD), + ppt->error_message, + "your idr_radiation_streaming_approximation is set to %d, out of range defined in perturbations.h",ppr->idr_streaming_approximation); + } + if (pba->has_ur == _TRUE_) { class_test ((ppr->ur_fluid_approximation < ufa_mb) || @@ -174,21 +544,37 @@ int perturb_init( (ppr->ncdm_fluid_approximation > ncdmfa_none), ppt->error_message, "your ncdm_fluid_approximation is set to %d, out of range defined in perturbations.h",ppr->ncdm_fluid_approximation); + + if (ppt->has_nc_density == _TRUE_) { + if (ppt->perturbations_verbose > 0) { + fprintf(stdout," -> [WARNING:] You request the number count Cl's in presence of non-cold dark matter.\n Like in all previous CLASS and CLASSgal versions, this will be inferred from the total matter density,\n but it could make much more sense physically to compute it from the CDM+baryon density only.\n To get the latter behavior you would just need to change one line in transfer.c:\n search there for a comment starting with 'use here delta_cb'\n"); + } + } + } if (pba->has_fld == _TRUE_) { - class_test(pba->w0_fld+pba->wa_fld >= 0., - ppt->error_message, - "So far, the fluid is meant to be negligible at early time, and not to be important for defining the initial conditions of other species. You are using parameters for which this assumption may break down, so maybe it's the case to fully implement the fluid in the initial condition routine"); + /* check values of w_fld at initial time and today */ + class_call(background_w_fld(pba, 0., &w_fld_ini,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + class_call(background_w_fld(pba,pba->a_today,&w_fld_0,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); - class_test((pba->w0_fld==-1.) && (pba->wa_fld==0.), + class_test(w_fld_ini >= 0., ppt->error_message, - "Your choice of a fluid with (w0,wa)=(-1,0) is not valid due to instabilities in the unphysical perturbations of such a fluid. Try instead with a plain cosmological constant"); + "The fluid is meant to be negligible at early time, and unimportant for defining the initial conditions of other species. You are using parameters for which this assumption may break down, since at early times you have w_fld(a--->0) = %e >= 0",w_fld_ini); - class_test(((pba->w0_fld + pba->wa_fld +1.0)*(pba->w0_fld+1.0)) < 0.0, - ppt->error_message, - "w crosses -1 between the infinite past and today, and this would lead to divergent perturbation equations for the fluid."); + if (pba->use_ppf == _FALSE_) { + + class_test((w_fld_ini +1.0)*(w_fld_0+1.0) <= 0.0, + ppt->error_message, + "w crosses -1 between the infinite past and today, and this would lead to divergent perturbation equations for the fluid perturbations. Try to switch to PPF scheme: use_ppf = yes"); + + /* the next check is meaningful at least for w(a) = w0 + wa*(1-a/a0); for general formulas and with use_ppf=no, you may prefer to comment it out... */ + class_test((w_fld_0 == -1.) && (dw_over_da_fld == 0.), + ppt->error_message, + "Your choice of a fluid with (w0,wa)=(-1,0) is not valid due to instabilities in the unphysical perturbations of such a fluid. Try instead with a plain cosmological constant or with PPF scheme: use_ppf = yes"); + + } } @@ -232,6 +618,20 @@ int perturb_init( } } + class_test((pba->h > _h_BIG_) || (pba->h < _h_SMALL_), + ppt->error_message, + "Your value of pba->h=%e is out of the bounds [%e , %e] and could cause a crash of the perturbation ODE integration. If you want to force this barrier, you may comment it out in perturbation.c", + pba->h, + _h_SMALL_, + _h_BIG_); + + class_test((pba->Omega0_b*pba->h*pba->h < _omegab_SMALL_) || (pba->Omega0_b*pba->h*pba->h > _omegab_BIG_), + ppt->error_message, + "Your value of omega_b=%e is out of the bounds [%e , %e] and could cause a crash of the perturbation ODE integration. If you want to force this barrier, you may comment it out in perturbation.c", + pba->Omega0_b*pba->h*pba->h, + _omegab_SMALL_, + _omegab_BIG_); + /** - initialize all indices and lists in perturbs structure using perturb_indices_of_perturbs() */ class_call(perturb_indices_of_perturbs(ppr, @@ -250,7 +650,7 @@ int perturb_init( ppt->z_max_pk, pth->z_rec); - class_test(ppt->has_source_delta_m == _TRUE_, + class_test(ppt->has_source_delta_m == _TRUE_, ppt->error_message, "You requested a very high z_pk=%e, higher than z_rec=%e. This works very well when you ask only transfer functions, e.g. with 'output=mTk' or 'output=mTk,vTk'. But if you need the total matter (e.g. with 'mPk', 'dCl', etc.) there is an issue with the calculation of delta_m at very early times. By default, delta_m is a gauge-invariant variable (the density fluctuation in comoving gauge) and this quantity is hard to get accurately at very early times. The solution is to define delta_m as the density fluctuation in the current gauge, synchronous or newtonian. For the moment this must be done manually by commenting the line 'ppw->delta_m += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_m/k2;' in perturb_sources(). In the future there will be an option for doing it in an easier way.", ppt->z_max_pk, @@ -270,12 +670,12 @@ int perturb_init( ppt->error_message, ppt->error_message); - /** - if we want to store perturbations, write titles and allocate storage */ - class_call(perturb_prepare_output(pba,ppt), + /** - if we want to store perturbations for given k values, write titles and allocate storage */ + + class_call(perturb_prepare_k_output(pba,ppt), ppt->error_message, ppt->error_message); - /** - create an array of workspaces in multi-thread case */ #ifdef _OPENMP @@ -299,9 +699,9 @@ int perturb_init( sz = sizeof(struct perturb_workspace); -#pragma omp parallel \ - shared(pppw,ppr,pba,pth,ppt,index_md,abort,number_of_threads) \ - private(thread) \ +#pragma omp parallel \ + shared(pppw,ppr,pba,pth,ppt,index_md,abort,number_of_threads) \ + private(thread) \ num_threads(number_of_threads) { @@ -333,11 +733,10 @@ int perturb_init( for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - if (ppt->perturbations_verbose > 1) + if (ppt->perturbations_verbose > 1) { printf("Evolving ic %d/%d\n",index_ic+1,ppt->ic_size[index_md]); - - if (ppt->perturbations_verbose > 1) - printf("evolving %d wavenumbers\n",ppt->k_size[index_md]); + printf("evolving %d wavenumbers\n",ppt->k_size[index_md]); + } abort = _FALSE_; @@ -392,7 +791,7 @@ int perturb_init( } /* end of loop over wavenumbers */ #ifdef _OPENMP - if (ppt->perturbations_verbose>1) + if (ppt->perturbations_verbose>2) printf("In %s: time spent in parallel region (loop over k's) = %e s for thread %d\n", __func__,tspent,omp_get_thread_num()); #endif @@ -405,9 +804,9 @@ int perturb_init( abort = _FALSE_; -#pragma omp parallel \ - shared(pppw,ppt,index_md,abort,number_of_threads) \ - private(thread) \ +#pragma omp parallel \ + shared(pppw,ppt,index_md,abort,number_of_threads) \ + private(thread) \ num_threads(number_of_threads) { @@ -428,6 +827,49 @@ int perturb_init( free(pppw); + /** - spline the source array with respect to the time variable */ + + if (ppt->ln_tau_size > 1) { + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + abort = _FALSE_; + +#pragma omp parallel \ + shared(ppt,index_md,index_ic,abort,number_of_threads) \ + private(index_tp) \ + num_threads(number_of_threads) + + { + +#pragma omp for schedule (dynamic) + + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + + class_call_parallel(array_spline_table_lines(ppt->ln_tau, + ppt->ln_tau_size, + ppt->late_sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md], + ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md] + index_tp], + _SPLINE_EST_DERIV_, + ppt->error_message), + ppt->error_message, + ppt->error_message); + + } + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + } /* end of loop over initial condition */ + + } /* end of loop over mode */ + + } + return _SUCCESS_; } @@ -445,7 +887,7 @@ int perturb_free( struct perturbs * ppt ) { - int index_md,index_ic,index_type; + int index_md,index_ic,index_tp; int filenum; if (ppt->has_perturbations == _TRUE_) { @@ -454,21 +896,26 @@ int perturb_free( for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { - free(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type]); + free(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp]); + if (ppt->ln_tau_size > 1) + free(ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp]); } - } free(ppt->sources[index_md]); + free(ppt->late_sources[index_md]); + free(ppt->ddlate_sources[index_md]); free(ppt->k[index_md]); } free(ppt->tau_sampling); + if (ppt->ln_tau_size > 1) + free(ppt->ln_tau); free(ppt->tp_size); @@ -483,6 +930,14 @@ int perturb_free( free(ppt->k_size); free(ppt->sources); + free(ppt->late_sources); + free(ppt->ddlate_sources); + + if (ppt->alpha_idm_dr != NULL) + free(ppt->alpha_idm_dr); + + if (ppt->beta_idr != NULL) + free(ppt->beta_idr); /** Stuff related to perturbations output: */ @@ -530,6 +985,7 @@ int perturb_indices_of_perturbs( int index_md; int index_ic; int index_type_common; + int filenum; /** - count modes (scalar, vector, tensor) and assign corresponding indices */ @@ -553,7 +1009,23 @@ int perturb_indices_of_perturbs( /** - allocate array of arrays of source functions for each mode, ppt->source[index_md] */ - class_alloc(ppt->sources,ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->sources, ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->late_sources, ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->ddlate_sources,ppt->md_size * sizeof(double *),ppt->error_message); + + /** - initialize variables for the output of k values */ + + ppt->index_k_output_values=NULL; + + ppt->number_of_scalar_titles=0; + ppt->number_of_vector_titles=0; + ppt->number_of_tensor_titles=0; + + for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ + ppt->scalar_perturbations_data[filenum] = NULL; + ppt->vector_perturbations_data[filenum] = NULL; + ppt->tensor_perturbations_data[filenum] = NULL; + } /** - initialization of all flags to false (will eventually be set to true later) */ @@ -563,6 +1035,8 @@ int perturb_indices_of_perturbs( ppt->has_source_t = _FALSE_; ppt->has_source_p = _FALSE_; ppt->has_source_delta_m = _FALSE_; + ppt->has_source_delta_cb = _FALSE_; + ppt->has_source_delta_tot = _FALSE_; ppt->has_source_delta_g = _FALSE_; ppt->has_source_delta_b = _FALSE_; ppt->has_source_delta_cdm = _FALSE_; @@ -571,8 +1045,12 @@ int perturb_indices_of_perturbs( ppt->has_source_delta_scf = _FALSE_; ppt->has_source_delta_dr = _FALSE_; ppt->has_source_delta_ur = _FALSE_; + ppt->has_source_delta_idr = _FALSE_; + ppt->has_source_delta_idm_dr = _FALSE_; ppt->has_source_delta_ncdm = _FALSE_; ppt->has_source_theta_m = _FALSE_; + ppt->has_source_theta_cb = _FALSE_; + ppt->has_source_theta_tot = _FALSE_; ppt->has_source_theta_g = _FALSE_; ppt->has_source_theta_b = _FALSE_; ppt->has_source_theta_cdm = _FALSE_; @@ -581,11 +1059,19 @@ int perturb_indices_of_perturbs( ppt->has_source_theta_scf = _FALSE_; ppt->has_source_theta_dr = _FALSE_; ppt->has_source_theta_ur = _FALSE_; + ppt->has_source_theta_idr = _FALSE_; + ppt->has_source_theta_idm_dr = _FALSE_; ppt->has_source_theta_ncdm = _FALSE_; ppt->has_source_phi = _FALSE_; ppt->has_source_phi_prime = _FALSE_; ppt->has_source_phi_plus_psi = _FALSE_; ppt->has_source_psi = _FALSE_; + ppt->has_source_h = _FALSE_; + ppt->has_source_h_prime = _FALSE_; + ppt->has_source_eta = _FALSE_; + ppt->has_source_eta_prime = _FALSE_; + ppt->has_source_H_T_Nb_prime = _FALSE_; + ppt->has_source_k2gamma_Nb = _FALSE_; /** - source flags and indices, for sources that all modes have in common (temperature, polarization, ...). For temperature, the @@ -643,10 +1129,15 @@ int perturb_indices_of_perturbs( if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_nl_corrections_based_on_delta_m)) { ppt->has_lss = _TRUE_; ppt->has_source_delta_m = _TRUE_; + + if (pba->has_ncdm == _TRUE_){ + ppt->has_source_delta_cb = _TRUE_; + } } if (ppt->has_density_transfers == _TRUE_) { ppt->has_lss = _TRUE_; + ppt->has_source_delta_tot = _TRUE_; ppt->has_source_delta_g = _TRUE_; ppt->has_source_delta_b = _TRUE_; if (pba->has_cdm == _TRUE_) @@ -659,6 +1150,10 @@ int perturb_indices_of_perturbs( ppt->has_source_delta_scf = _TRUE_; if (pba->has_ur == _TRUE_) ppt->has_source_delta_ur = _TRUE_; + if (pba->has_idr == _TRUE_) + ppt->has_source_delta_idr = _TRUE_; + if (pba->has_idm_dr == _TRUE_) + ppt->has_source_delta_idm_dr = _TRUE_; if (pba->has_dr == _TRUE_) ppt->has_source_delta_dr = _TRUE_; if (pba->has_ncdm == _TRUE_) @@ -673,6 +1168,7 @@ int perturb_indices_of_perturbs( if (ppt->has_velocity_transfers == _TRUE_) { ppt->has_lss = _TRUE_; + ppt->has_source_theta_tot = _TRUE_; ppt->has_source_theta_g = _TRUE_; ppt->has_source_theta_b = _TRUE_; if ((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous)) @@ -685,6 +1181,10 @@ int perturb_indices_of_perturbs( ppt->has_source_theta_scf = _TRUE_; if (pba->has_ur == _TRUE_) ppt->has_source_theta_ur = _TRUE_; + if (pba->has_idr == _TRUE_) + ppt->has_source_theta_idr = _TRUE_; + if (pba->has_idm_dr == _TRUE_) + ppt->has_source_theta_idm_dr = _TRUE_; if (pba->has_dr == _TRUE_) ppt->has_source_theta_dr = _TRUE_; if (pba->has_ncdm == _TRUE_) @@ -698,7 +1198,13 @@ int perturb_indices_of_perturbs( } if (ppt->has_nc_rsd == _TRUE_) { ppt->has_source_theta_m = _TRUE_; + if (pba->has_ncdm == _TRUE_) + /* we may not need theta_cb at all, rsd always defined for + the total matter, but at least this is made + available */ + ppt->has_source_theta_cb = _TRUE_; } + if (ppt->has_nc_lens == _TRUE_) { ppt->has_source_phi_plus_psi = _TRUE_; } @@ -710,20 +1216,52 @@ int perturb_indices_of_perturbs( } } + if ( ppt->has_metricpotential_transfers == _TRUE_ ) { + if (ppt->gauge == newtonian) { + ppt->has_source_phi = _TRUE_; + ppt->has_source_psi = _TRUE_; + ppt->has_source_phi_prime = _TRUE_; + } + if (ppt->gauge == synchronous) { + ppt->has_source_h = _TRUE_; + ppt->has_source_h_prime = _TRUE_; + ppt->has_source_eta = _TRUE_; + ppt->has_source_eta_prime = _TRUE_; + } + ppt->has_source_H_T_Nb_prime = _TRUE_; + ppt->has_source_k2gamma_Nb = _TRUE_; + } + + if (ppt->has_Nbody_gauge_transfers == _TRUE_){ + if (ppt->gauge == synchronous) { + ppt->has_source_h_prime = _TRUE_; + ppt->has_source_eta_prime = _TRUE_; + } + ppt->has_source_H_T_Nb_prime = _TRUE_; + /** gamma is not neccessary for converting output to Nbody gauge but is included anyway. */ + ppt->has_source_k2gamma_Nb = _TRUE_; + } + index_type = index_type_common; class_define_index(ppt->index_tp_t0, ppt->has_source_t, index_type,1); class_define_index(ppt->index_tp_t1, ppt->has_source_t, index_type,1); class_define_index(ppt->index_tp_delta_m, ppt->has_source_delta_m, index_type,1); + class_define_index(ppt->index_tp_delta_cb, ppt->has_source_delta_cb, index_type,1); + class_define_index(ppt->index_tp_delta_tot, ppt->has_source_delta_tot, index_type,1); class_define_index(ppt->index_tp_delta_g, ppt->has_source_delta_g, index_type,1); class_define_index(ppt->index_tp_delta_b, ppt->has_source_delta_b, index_type,1); class_define_index(ppt->index_tp_delta_cdm, ppt->has_source_delta_cdm, index_type,1); class_define_index(ppt->index_tp_delta_dcdm, ppt->has_source_delta_dcdm,index_type,1); class_define_index(ppt->index_tp_delta_fld, ppt->has_source_delta_fld, index_type,1); class_define_index(ppt->index_tp_delta_scf, ppt->has_source_delta_scf, index_type,1); - class_define_index(ppt->index_tp_delta_dr, ppt->has_source_delta_dr, index_type,1); + class_define_index(ppt->index_tp_delta_dr, ppt->has_source_delta_dr, index_type,1); class_define_index(ppt->index_tp_delta_ur, ppt->has_source_delta_ur, index_type,1); + class_define_index(ppt->index_tp_delta_idr, ppt->has_source_delta_idr, index_type,1); + class_define_index(ppt->index_tp_delta_idm_dr, ppt->has_source_delta_idm_dr, index_type,1); class_define_index(ppt->index_tp_delta_ncdm1,ppt->has_source_delta_ncdm,index_type,pba->N_ncdm); class_define_index(ppt->index_tp_theta_m, ppt->has_source_theta_m, index_type,1); + class_define_index(ppt->index_tp_theta_cb, ppt->has_source_theta_cb, index_type,1); + class_define_index(ppt->index_tp_theta_tot, ppt->has_source_theta_tot, index_type,1); class_define_index(ppt->index_tp_theta_g, ppt->has_source_theta_g, index_type,1); class_define_index(ppt->index_tp_theta_b, ppt->has_source_theta_b, index_type,1); class_define_index(ppt->index_tp_theta_cdm, ppt->has_source_theta_cdm, index_type,1); @@ -732,11 +1270,19 @@ int perturb_indices_of_perturbs( class_define_index(ppt->index_tp_theta_scf, ppt->has_source_theta_scf, index_type,1); class_define_index(ppt->index_tp_theta_dr, ppt->has_source_theta_dr, index_type,1); class_define_index(ppt->index_tp_theta_ur, ppt->has_source_theta_ur, index_type,1); + class_define_index(ppt->index_tp_theta_idr, ppt->has_source_theta_idr, index_type,1); + class_define_index(ppt->index_tp_theta_idm_dr, ppt->has_source_theta_idm_dr, index_type,1); class_define_index(ppt->index_tp_theta_ncdm1,ppt->has_source_theta_ncdm,index_type,pba->N_ncdm); class_define_index(ppt->index_tp_phi, ppt->has_source_phi, index_type,1); class_define_index(ppt->index_tp_phi_prime, ppt->has_source_phi_prime, index_type,1); class_define_index(ppt->index_tp_phi_plus_psi,ppt->has_source_phi_plus_psi,index_type,1); class_define_index(ppt->index_tp_psi, ppt->has_source_psi, index_type,1); + class_define_index(ppt->index_tp_h, ppt->has_source_h, index_type,1); + class_define_index(ppt->index_tp_h_prime, ppt->has_source_h_prime, index_type,1); + class_define_index(ppt->index_tp_eta, ppt->has_source_eta, index_type,1); + class_define_index(ppt->index_tp_eta_prime, ppt->has_source_eta_prime, index_type,1); + class_define_index(ppt->index_tp_H_T_Nb_prime,ppt->has_source_H_T_Nb_prime,index_type,1); + class_define_index(ppt->index_tp_k2gamma_Nb, ppt->has_source_k2gamma_Nb,index_type,1); ppt->tp_size[index_md] = index_type; class_test(index_type == 0, @@ -770,9 +1316,9 @@ int perturb_indices_of_perturbs( ppt->tp_size[index_md] = index_type; /* - class_test(index_type == 0, - ppt->error_message, - "inconsistent input: you asked for vectors, so you should have at least one non-zero vector source type (temperature or polarization). Please adjust your input."); + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for vectors, so you should have at least one non-zero vector source type (temperature or polarization). Please adjust your input."); */ /** - --> initial conditions for vectors*/ @@ -793,9 +1339,9 @@ int perturb_indices_of_perturbs( ppt->tp_size[index_md] = index_type; /* - class_test(index_type == 0, - ppt->error_message, - "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); */ /** - --> only one initial condition for tensors*/ @@ -812,6 +1358,14 @@ int perturb_indices_of_perturbs( ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), ppt->error_message); + class_alloc(ppt->late_sources[index_md], + ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), + ppt->error_message); + + class_alloc(ppt->ddlate_sources[index_md], + ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), + ppt->error_message); + } return _SUCCESS_; @@ -845,8 +1399,9 @@ int perturb_timesampling_for_sources( int counter; int index_md; - int index_type; + int index_tp; int index_ic; + int index_tau; int last_index_back; int last_index_thermo; int first_index_back; @@ -1179,17 +1734,80 @@ int perturb_timesampling_for_sources( free(pvecback); free(pvecthermo); + /** - check the maximum redshift z_max_pk at which the Fourier + transfer functions \f$ T_i(k,z)\f$ should be computable by + interpolation. If it is equal to zero, only \f$ T_i(k,z=0)\f$ + needs to be computed. If it is higher, we will store a table of + log(tau) in the relevant time range, generously encompassing the + range 0z_max_pk < 0, + ppt->error_message, + "asked for negative redshift z=%e",ppt->z_max_pk); + + /* if z_max_pk=0, there is just one value to store */ + if (ppt->z_max_pk == 0.) { + ppt->ln_tau_size=1; + } + + /* if z_max_pk>0, store several values (with a comfortable margin above z_max_pk) in view of interpolation */ + else{ + /* find the first relevant value of tau (last value in the table tau_sampling before tau(z_max)) and infer the number of values of tau at which P(k) must be stored */ + + class_call(background_tau_of_z(pba,ppt->z_max_pk,&tau_lower), + pba->error_message, + ppt->error_message); + + index_tau=0; + class_test((tau_lower <= ppt->tau_sampling[index_tau]), + ppt->error_message, + "you asked for zmax=%e, i.e. taumin=%e, smaller than or equal to the first possible value =%e; it should be strictly bigger for a successfull interpolation",ppt->z_max_pk,tau_lower,ppt->tau_sampling[0]); + + while (ppt->tau_sampling[index_tau] < tau_lower){ + index_tau++; + } + index_tau --; + class_test(index_tau<0, + ppt->error_message, + "by construction, this should never happen, a bug must have been introduced somewhere"); + + /* whenever possible, take a few more values in to avoid boundary effects in the interpolation */ + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + ppt->ln_tau_size=ppt->tau_size-index_tau; + + /* allocate and fill array of log(tau) */ + class_alloc(ppt->ln_tau,ppt->ln_tau_size * sizeof(double),ppt->error_message); + + for (index_tau=0; index_tauln_tau_size; index_tau++) { + ppt->ln_tau[index_tau]=log(ppt->tau_sampling[index_tau-ppt->ln_tau_size+ppt->tau_size]); + } + } + /** - loop over modes, initial conditions and types. For each of them, allocate array of source functions. */ for (index_md = 0; index_md < ppt->md_size; index_md++) { for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { - class_alloc(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], + class_alloc(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], ppt->k_size[index_md] * ppt->tau_size * sizeof(double), ppt->error_message); + if (ppt->ln_tau_size > 1) { + /* late_sources is just a pointer to the end of sources (starting from the relevant time index) */ + ppt->late_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp] = &(ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [(ppt->tau_size-ppt->ln_tau_size) * ppt->k_size[index_md]]); + + class_alloc(ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], + ppt->k_size[index_md] * ppt->ln_tau_size * sizeof(double), + ppt->error_message); + } } } } @@ -1209,11 +1827,11 @@ int perturb_timesampling_for_sources( */ int perturb_get_k_list( - struct precision * ppr, - struct background * pba, - struct thermo * pth, - struct perturbs * ppt - ) { + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { int index_k, index_k_output, index_mode; double k,k_min=0.,k_rec,step,tau1; double * k_max_cmb; @@ -1327,12 +1945,9 @@ int perturb_get_k_list( /* find k_max: */ - if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_nl_corrections_based_on_delta_m == _TRUE_)) k_max = MAX(k_max,ppt->k_max_for_pk); - if (ppt->has_nl_corrections_based_on_delta_m == _TRUE_) - k_max = MAX(k_max,ppr->halofit_min_k_max); - /** - --> test that result for k_min, k_max make sense */ class_test(k_min<0., @@ -1358,10 +1973,21 @@ int perturb_get_k_list( K=0, K<0, K>0 */ /* allocate array with, for the moment, the largest possible size */ - class_alloc(ppt->k[ppt->index_md_scalars], - ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ - (int)(MAX(ppr->k_per_decade_for_pk,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) - *sizeof(double),ppt->error_message); + + /* the following is a boost on k_per_decade_for_pk for the interacting idm-idr cases (relevant for large k and a_idm_dr) */ + if((pba->has_idm_dr==_TRUE_)&&(pth->nindex_idm_dr>=2)){ + class_alloc(ppt->k[ppt->index_md_scalars], + ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ + (int)(MAX(ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) + *sizeof(double),ppt->error_message); + } + + else{ + class_alloc(ppt->k[ppt->index_md_scalars], + ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ + (int)(MAX(ppr->k_per_decade_for_pk,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) + *sizeof(double),ppt->error_message); + } /* first value */ @@ -1433,10 +2059,16 @@ int perturb_get_k_list( /* values until k_max */ while (k < k_max) { - - k *= pow(10.,1./(ppr->k_per_decade_for_pk - +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) - *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + if((pba->has_idm_dr==_TRUE_)&&(pth->nindex_idm_dr>=2)){ + k *= pow(10.,1./(ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + } + else{ + k *= pow(10.,1./(ppr->k_per_decade_for_pk + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + } ppt->k[ppt->index_md_scalars][index_k] = k; index_k++; @@ -1719,7 +2351,8 @@ int perturb_get_k_list( } /** - If user asked for k_output_values, add those to all k lists: */ - if (ppt->k_output_values_num>0){ + if (ppt->k_output_values_num > 0) { + /* Allocate storage */ class_alloc(ppt->index_k_output_values,sizeof(double)*ppt->md_size*ppt->k_output_values_num,ppt->error_message); @@ -1779,13 +2412,13 @@ int perturb_get_k_list( /* For testing, can be useful to print the k list in a file: - FILE * out=fopen("output/k","w"); + FILE * out=fopen("output/k","w"); - for (index_k=0; index_k < ppt->k_size[0]; index_k++) { + for (index_k=0; index_k < ppt->k_size[0]; index_k++) { - fprintf(out,"%e\n",ppt->k[0][index_k],pba->K); + fprintf(out,"%e\n",ppt->k[0][index_k],pba->K); - } + } fclose(out); */ @@ -1851,6 +2484,7 @@ int perturb_workspace_init( if (_scalars_) { ppw->max_l_max = MAX(ppr->l_max_g, ppr->l_max_pol_g); if (pba->has_ur == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ur); + if ((pba->has_idr == _TRUE_) && (ppt->idr_nature == idr_free_streaming)) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_idr); if (pba->has_ncdm == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ncdm); if (pba->has_dr == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_dr); } @@ -1940,6 +2574,8 @@ int perturb_workspace_init( class_define_index(ppw->index_ap_ufa,pba->has_ur,index_ap,1); class_define_index(ppw->index_ap_ncdmfa,pba->has_ncdm,index_ap,1); + class_define_index(ppw->index_ap_tca_idm_dr,pba->has_idm_dr,index_ap,1); + class_define_index(ppw->index_ap_rsa_idr,pba->has_idr,index_ap,1); } @@ -1956,6 +2592,12 @@ int perturb_workspace_init( ppw->approx[ppw->index_ap_tca]=(int)tca_on; ppw->approx[ppw->index_ap_rsa]=(int)rsa_off; + + if (pba->has_idr == _TRUE_) + ppw->approx[ppw->index_ap_rsa_idr]=(int)rsa_idr_off; + if (pba->has_idm_dr == _TRUE_) + ppw->approx[ppw->index_ap_tca_idm_dr]=(int)tca_idm_dr_on; + if (pba->has_ur == _TRUE_) { ppw->approx[ppw->index_ap_ufa]=(int)ufa_off; } @@ -2080,7 +2722,7 @@ int perturb_solve( int tau_actual_size; /* running index over types (temperature, etc) */ - int index_type; + int index_tp; /* Fourier mode */ double k; @@ -2328,11 +2970,6 @@ int perturb_solve( if (ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout] == index_k){ ppw->index_ikout = index_ikout; perhaps_print_variables = perturb_print_variables; - /* class_call(perturb_prepare_output_file( - pba,ppt,ppw,index_ikout,index_md), - ppt->error_message, - ppt->error_message); - */ } } @@ -2417,9 +3054,9 @@ int perturb_solve( the last integrated time tau_max and tau_today. */ for (index_tau = tau_actual_size; index_tau < ppt->tau_size; index_tau++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_type] + [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size[index_md] + index_k] = 0.; } } @@ -2440,9 +3077,18 @@ int perturb_solve( return _SUCCESS_; } -int perturb_prepare_output(struct background * pba, - struct perturbs * ppt){ +/** + * Fill array of strings with the name of the 'k_output_values' + * functions (transfer functions as a function of time, for fixed + * values of k). + * + * @param pba Input: pointer to the background structure + * @param ppt Input/Output: pointer to the perturbation structure + * @return the error status + */ +int perturb_prepare_k_output(struct background * pba, + struct perturbs * ppt){ int n_ncdm; char tmp[40]; @@ -2475,6 +3121,14 @@ int perturb_prepare_output(struct background * pba, class_store_columntitle(ppt->scalar_titles,"delta_ur",pba->has_ur); class_store_columntitle(ppt->scalar_titles,"theta_ur",pba->has_ur); class_store_columntitle(ppt->scalar_titles,"shear_ur",pba->has_ur); + /* Interacting dark radiation */ + class_store_columntitle(ppt->scalar_titles,"delta_idr",pba->has_idr); + class_store_columntitle(ppt->scalar_titles,"theta_idr",pba->has_idr); + if ((pba->has_idr == _TRUE_)&&(ppt->idr_nature == idr_free_streaming)) + class_store_columntitle(ppt->scalar_titles,"shear_idr",_TRUE_); + /* Interacting dark matter */ + class_store_columntitle(ppt->scalar_titles,"delta_idm_dr",pba->has_idm_dr); + class_store_columntitle(ppt->scalar_titles,"theta_idm_dr",pba->has_idm_dr); /* Cold dark matter */ class_store_columntitle(ppt->scalar_titles,"delta_cdm",pba->has_cdm); class_store_columntitle(ppt->scalar_titles,"theta_cdm",pba->has_cdm); @@ -2501,6 +3155,10 @@ int perturb_prepare_output(struct background * pba, /* Scalar field scf */ class_store_columntitle(ppt->scalar_titles, "delta_scf", pba->has_scf); class_store_columntitle(ppt->scalar_titles, "theta_scf", pba->has_scf); + /** Fluid */ + class_store_columntitle(ppt->scalar_titles, "delta_rho_fld", pba->has_fld); + class_store_columntitle(ppt->scalar_titles, "rho_plus_p_theta_fld", pba->has_fld); + class_store_columntitle(ppt->scalar_titles, "delta_p_fld", pba->has_fld); ppt->number_of_scalar_titles = get_number_of_titles(ppt->scalar_titles); @@ -2544,7 +3202,6 @@ int perturb_prepare_output(struct background * pba, } - /** * For a given mode and wavenumber, find the number of intervals of * time between tau_ini and tau_end such that the approximation @@ -2856,6 +3513,18 @@ int perturb_find_approximation_switches( (interval_approx[index_switch][ppw->index_ap_rsa]==(int)rsa_on)) fprintf(stdout,"Mode k=%e: will switch on radiation streaming approximation at tau=%e\n",k,interval_limit[index_switch]); + if (pba->has_idr == _TRUE_){ + if ((interval_approx[index_switch-1][ppw->index_ap_rsa_idr]==(int)rsa_idr_off) && + (interval_approx[index_switch][ppw->index_ap_rsa_idr]==(int)rsa_idr_on)) + fprintf(stdout,"Mode k=%e: will switch on dark radiation streaming approximation at tau=%e\n",k,interval_limit[index_switch]); + } + + if (pba->has_idm_dr == _TRUE_){ + if ((interval_approx[index_switch-1][ppw->index_ap_tca_idm_dr]==(int)tca_idm_dr_on) && + (interval_approx[index_switch][ppw->index_ap_tca_idm_dr]==(int)tca_idm_dr_off)) + fprintf(stdout,"Mode k=%e: will switch off dark tight-coupling approximation at tau=%e\n",k,interval_limit[index_switch]); + } + if (pba->has_ur == _TRUE_) { if ((interval_approx[index_switch-1][ppw->index_ap_ufa]==(int)ufa_off) && (interval_approx[index_switch][ppw->index_ap_ufa]==(int)ufa_on)) { @@ -3007,6 +3676,12 @@ int perturb_vector_init( "ppr->l_max_ur should be at least 4, i.e. we must integrate at least over neutrino/relic density, velocity, shear, third and fourth momentum"); } + if (pba->has_idr == _TRUE_){ + class_test(((ppr->l_max_idr < 4)&&(ppt->idr_nature == idr_free_streaming)), + ppt->error_message, + "ppr->l_max_idr should be at least 4, i.e. we must integrate at least over interacting dark radiation density, velocity, shear, third and fourth momentum"); + } + /* photons */ if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ @@ -3044,6 +3719,10 @@ int perturb_vector_init( class_define_index(ppv->index_pt_delta_cdm,pba->has_cdm,index_pt,1); /* cdm density */ class_define_index(ppv->index_pt_theta_cdm,pba->has_cdm && (ppt->gauge == newtonian),index_pt,1); /* cdm velocity */ + /* idm_dr */ + class_define_index(ppv->index_pt_delta_idm_dr,pba->has_idm_dr,index_pt,1); /* idm_dr density */ + class_define_index(ppv->index_pt_theta_idm_dr,pba->has_idm_dr,index_pt,1); /* idm_dr velocity */ + /* dcdm */ class_define_index(ppv->index_pt_delta_dcdm,pba->has_dcdm,index_pt,1); /* dcdm density */ @@ -3057,8 +3736,13 @@ int perturb_vector_init( /* fluid */ - class_define_index(ppv->index_pt_delta_fld,pba->has_fld,index_pt,1); /* fluid density */ - class_define_index(ppv->index_pt_theta_fld,pba->has_fld,index_pt,1); /* fluid velocity */ + if (pba->use_ppf == _FALSE_) { + class_define_index(ppv->index_pt_delta_fld,pba->has_fld,index_pt,1); /* fluid density */ + class_define_index(ppv->index_pt_theta_fld,pba->has_fld,index_pt,1); /* fluid velocity */ + } + else { + class_define_index(ppv->index_pt_Gamma_fld,pba->has_fld,index_pt,1); /* Gamma variable of PPF scheme */ + } /* scalar field */ @@ -3085,6 +3769,23 @@ int perturb_vector_init( } } + /* interacting dark radiation */ + + if (pba->has_idr == _TRUE_){ + if(ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) { + class_define_index(ppv->index_pt_delta_idr,_TRUE_,index_pt,1); /* density of interacting dark radiation */ + class_define_index(ppv->index_pt_theta_idr,_TRUE_,index_pt,1); /* velocity of interacting dark radiation */ + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + class_define_index(ppv->index_pt_shear_idr,_TRUE_,index_pt,1); /* shear of interacting dark radiation */ + ppv->l_max_idr = ppr->l_max_idr; + class_define_index(ppv->index_pt_l3_idr,_TRUE_,index_pt,ppv->l_max_idr-2); /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3) */ + } + } + } + } + + /* non-cold dark matter */ if (pba->has_ncdm == _TRUE_) { @@ -3288,6 +3989,22 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_) { + + /* we don't need interacting dark radiation multipoles + above l=2 (but they are defined only when rsa_idr + and tca_idm_dr are off) */ + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + for (index_pt=ppv->index_pt_l3_idr; index_pt <= ppv->index_pt_delta_idr+ppv->l_max_idr; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { /* we don't need ncdm multipoles above l=2 (but they are @@ -3349,6 +4066,14 @@ int perturb_vector_init( ppt->error_message, "scalar initial conditions assume radiation streaming approximation turned off"); + if (pba->has_idr == _TRUE_) { + class_test(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on, + ppt->error_message, + "scalar initial conditions assume dark radiation approximation turned off"); + + } + + /* we do not need to do a check for tca_idm_dr, as the initial conditions are consistent with any tca_idm_dr */ if (pba->has_ur == _TRUE_) { @@ -3421,6 +4146,12 @@ int perturb_vector_init( ppt->error_message, "at tau=%g: the tight-coupling approximation can be switched off, not on",tau); + if (pba->has_idm_dr == _TRUE_){ + class_test((pa_old[ppw->index_ap_tca] == (int)tca_idm_dr_off) && (ppw->approx[ppw->index_ap_tca] == (int)tca_idm_dr_on), + ppt->error_message, + "at tau=%g: the dark tight-coupling approximation can be switched off, not on",tau); + } + /** - ---> (a.2.) some variables (b, cdm, fld, ...) are not affected by any approximation. They need to be reconducted whatever the approximation switching is. We treat them here. Below @@ -3443,6 +4174,16 @@ int perturb_vector_init( } } + if (pba->has_idm_dr == _TRUE_) { + + ppv->y[ppv->index_pt_delta_idm_dr] = + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr]; + + ppv->y[ppv->index_pt_theta_idm_dr] = + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr]; + } + + if (pba->has_dcdm == _TRUE_) { ppv->y[ppv->index_pt_delta_dcdm] = @@ -3460,11 +4201,17 @@ int perturb_vector_init( if (pba->has_fld == _TRUE_) { - ppv->y[ppv->index_pt_delta_fld] = - ppw->pv->y[ppw->pv->index_pt_delta_fld]; + if (pba->use_ppf == _FALSE_) { + ppv->y[ppv->index_pt_delta_fld] = + ppw->pv->y[ppw->pv->index_pt_delta_fld]; - ppv->y[ppv->index_pt_theta_fld] = - ppw->pv->y[ppw->pv->index_pt_theta_fld]; + ppv->y[ppv->index_pt_theta_fld] = + ppw->pv->y[ppw->pv->index_pt_theta_fld]; + } + else { + ppv->y[ppv->index_pt_Gamma_fld] = + ppw->pv->y[ppw->pv->index_pt_Gamma_fld]; + } } if (pba->has_scf == _TRUE_) { @@ -3506,11 +4253,10 @@ int perturb_vector_init( approximation is switched off) */ ppv->y[ppv->index_pt_shear_g] = ppw->tca_shear_g; - ppv->y[ppv->index_pt_l3_g] = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->s_l[3]*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for l=3 */ - - ppv->y[ppv->index_pt_pol0_g] = 2.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=0 */ + ppv->y[ppv->index_pt_l3_g] = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->s_l[3]*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for l=3 */ + ppv->y[ppv->index_pt_pol0_g] = 2.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=0 */ ppv->y[ppv->index_pt_pol1_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*(5.-2.*ppw->s_l[2])/6.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=1 */ - ppv->y[ppv->index_pt_pol2_g] = 0.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=2 */ + ppv->y[ppv->index_pt_pol2_g] = 0.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=2 */ ppv->y[ppv->index_pt_pol3_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*3.*ppw->s_l[3]/14.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=3 */ if (pba->has_ur == _TRUE_) { @@ -3536,6 +4282,34 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { index_pt = 0; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -3569,7 +4343,6 @@ int perturb_vector_init( ppw->pv->y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; } - /* -- case of switching on radiation streaming approximation. Provide correct initial conditions to new set of variables */ @@ -3579,6 +4352,34 @@ int perturb_vector_init( if (ppt->perturbations_verbose>2) fprintf(stdout,"Mode k=%e: switch on radiation streaming approximation at tau=%e with Omega_r=%g\n",k,tau,ppw->pvecback[pba->index_bg_Omega_r]); + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { index_pt = 0; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -3593,16 +4394,235 @@ int perturb_vector_init( } } - /* -- case of switching on ur fluid - approximation. Provide correct initial conditions to new set - of variables */ + /* -- case of switching on ur fluid + approximation. Provide correct initial conditions to new set + of variables */ + + if (pba->has_ur == _TRUE_) { + + if ((pa_old[ppw->index_ap_ufa] == (int)ufa_off) && (ppw->approx[ppw->index_ap_ufa] == (int)ufa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on ur fluid approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + } + + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and + ppv->q_size_ncdm is updated.*/ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + } + } + + /* Case of switching on rsa for interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + if ((pa_old[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) && (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on dark radiation approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (pba->has_ur == _TRUE_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and + ppv->q_size_ncdm is updated.*/ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + + } + } + + if (pba->has_idm_dr == _TRUE_) { - if (pba->has_ur == _TRUE_) { + /* Case of switching off interacting dark radiation tight coupling approximation */ - if ((pa_old[ppw->index_ap_ufa] == (int)ufa_off) && (ppw->approx[ppw->index_ap_ufa] == (int)ufa_on)) { + if ((pa_old[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on) && (ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off)) { if (ppt->perturbations_verbose>2) - fprintf(stdout,"Mode k=%e: switch on ur fluid approximation at tau=%e\n",k,tau); + fprintf(stdout,"Mode k=%e: switch off dark tight coupling approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_idr_off) { + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + /* idr is always free streaming if tca_idm_dr is on */ + if (ppt->idr_nature == idr_free_streaming){ + ppv->y[ppv->index_pt_shear_idr] = ppw->tca_shear_idm_dr; + ppv->y[ppv->index_pt_l3_idr] = 6./7.*k*ppv->y[ppv->index_pt_shear_idr]/ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[1]; + } + } if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { @@ -3647,16 +4667,31 @@ int perturb_vector_init( } - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + if (pba->has_ur == _TRUE_) { - ppv->y[ppv->index_pt_delta_ur] = - ppw->pv->y[ppw->pv->index_pt_delta_ur]; + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { - ppv->y[ppv->index_pt_theta_ur] = - ppw->pv->y[ppw->pv->index_pt_theta_ur]; - ppv->y[ppv->index_pt_shear_ur] = - ppw->pv->y[ppw->pv->index_pt_shear_ur]; + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } } if (pba->has_ncdm == _TRUE_) { @@ -3665,7 +4700,7 @@ int perturb_vector_init( for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and - ppv->q_size_ncdm is updated.*/ + ppv->q_size_ncdm is updated.*/ ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; index_pt++; @@ -3757,6 +4792,34 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + + a = ppw->pvecback[pba->index_bg_a]; index_pt = ppw->pv->index_pt_psi0_ncdm1; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -4015,6 +5078,7 @@ int perturb_initial_conditions(struct precision * ppr, /** --> Declare local variables */ double a,a_prime_over_a; + double w_fld,dw_over_da_fld,integral_fld; double delta_ur=0.,theta_ur=0.,shear_ur=0.,l3_ur=0.,eta=0.,delta_cdm=0.,alpha, alpha_prime; double delta_dr=0; double q,epsilon,k2; @@ -4062,6 +5126,10 @@ int perturb_initial_conditions(struct precision * ppr, rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; } + if (pba->has_idm_dr == _TRUE_) { + rho_m += ppw->pvecback[pba->index_bg_rho_idm_dr]; + } + if (pba->has_dcdm == _TRUE_) { rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; } @@ -4076,6 +5144,11 @@ int perturb_initial_conditions(struct precision * ppr, rho_nu += ppw->pvecback[pba->index_bg_rho_ur]; } + if (pba->has_idr == _TRUE_) { + rho_r += ppw->pvecback[pba->index_bg_rho_idr]; + rho_nu += ppw->pvecback[pba->index_bg_rho_idr]; + } + if (pba->has_ncdm == _TRUE_) { for(n_ncdm=0; n_ncdmN_ncdm; n_ncdm++){ rho_r += ppw->pvecback[pba->index_bg_rho_ncdm1 + n_ncdm]; @@ -4161,21 +5234,29 @@ int perturb_initial_conditions(struct precision * ppr, /* cdm velocity vanishes in the synchronous gauge */ } + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* idm_dr density */ + } + if (pba->has_dcdm == _TRUE_) { ppw->pv->y[ppw->pv->index_pt_delta_dcdm] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* dcdm density */ /* dcdm velocity velocity vanishes initially in the synchronous gauge */ } - /* fluid (assumes wa=0, if this is not the case the fluid will catch anyway the attractor solution) */ if (pba->has_fld == _TRUE_) { - ppw->pv->y[ppw->pv->index_pt_delta_fld] = - ktau_two/4.*(1.+pba->w0_fld+pba->wa_fld)*(4.-3.*pba->cs2_fld)/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC: curvature + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); - ppw->pv->y[ppw->pv->index_pt_theta_fld] = - k*ktau_three/4.*pba->cs2_fld/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC:curvature + if (pba->use_ppf == _FALSE_) { + ppw->pv->y[ppw->pv->index_pt_delta_fld] = - ktau_two/4.*(1.+w_fld)*(4.-3.*pba->cs2_fld)/(4.-6.*w_fld+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC: curvature + ppw->pv->y[ppw->pv->index_pt_theta_fld] = - k*ktau_three/4.*pba->cs2_fld/(4.-6.*w_fld+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC:curvature + } + /* if use_ppf == _TRUE_, y[ppw->pv->index_pt_Gamma_fld] will be automatically set to zero, and this is what we want (although one could probably work out some small nonzero initial conditions: TODO) */ } if (pba->has_scf == _TRUE_) { @@ -4186,30 +5267,30 @@ int perturb_initial_conditions(struct precision * ppr, * delta_phi_prime \f$ = a^2/\phi' \f$ (delta_rho_phi + V'delta_phi), * and assume theta, delta_rho as for perfect fluid * with \f$ c_s^2 = 1 \f$ and w = 1/3 (ASSUMES radiation TRACKING) - */ + */ ppw->pv->y[ppw->pv->index_pt_phi_scf] = 0.; /* a*a/k/k/ppw->pvecback[pba->index_bg_phi_prime_scf]*k*ktau_three/4.*1./(4.-6.*(1./3.)+3.*1.) * (ppw->pvecback[pba->index_bg_rho_scf] + ppw->pvecback[pba->index_bg_p_scf])* ppr->curvature_ini * s2_squared; */ ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] = 0.; /* delta_fld expression * rho_scf with the w = 1/3, c_s = 1 - a*a/ppw->pvecback[pba->index_bg_phi_prime_scf]*( - ktau_two/4.*(1.+1./3.)*(4.-3.*1.)/(4.-6.*(1/3.)+3.*1.)*ppw->pvecback[pba->index_bg_rho_scf] - ppw->pvecback[pba->index_bg_dV_scf]*ppw->pv->y[ppw->pv->index_pt_phi_scf])* ppr->curvature_ini * s2_squared; */ + a*a/ppw->pvecback[pba->index_bg_phi_prime_scf]*( - ktau_two/4.*(1.+1./3.)*(4.-3.*1.)/(4.-6.*(1/3.)+3.*1.)*ppw->pvecback[pba->index_bg_rho_scf] - ppw->pvecback[pba->index_bg_dV_scf]*ppw->pv->y[ppw->pv->index_pt_phi_scf])* ppr->curvature_ini * s2_squared; */ } /* all relativistic relics: ur, early ncdm, dr */ - if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_) || (pba->has_idr == _TRUE_)) { delta_ur = ppw->pv->y[ppw->pv->index_pt_delta_g]; /* density of ultra-relativistic neutrinos/relics */ - theta_ur = - k*ktau_three/36./(4.*fracnu+15.) * (4.*fracnu+11.+12.*s2_squared-3.*(8.*fracnu*fracnu+50.*fracnu+275.)/20./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini * s2_squared; /* velocity of ultra-relativistic neutrinos/relics */ //TBC + /* velocity of ultra-relativistic neutrinos/relics */ //TBC + theta_ur = - k*ktau_three/36./(4.*fracnu+15.) * (4.*fracnu+11.+12.*s2_squared-3.*(8.*fracnu*fracnu+50.*fracnu+275.)/20./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini * s2_squared; shear_ur = ktau_two/(45.+12.*fracnu) * (3.*s2_squared-1.) * (1.+(4.*fracnu-5.)/4./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini;//TBC /s2_squared; /* shear of ultra-relativistic neutrinos/relics */ //TBC:0 l3_ur = ktau_three*2./7./(12.*fracnu+45.)* ppr->curvature_ini;//TBC if (pba->has_dr == _TRUE_) delta_dr = delta_ur; - } /* synchronous metric perturbation eta */ @@ -4232,6 +5313,10 @@ int perturb_initial_conditions(struct precision * ppr, if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + class_test(pba->has_cdm == _FALSE_, ppt->error_message, "not consistent to ask for CDI in absence of CDM!"); @@ -4260,6 +5345,10 @@ int perturb_initial_conditions(struct precision * ppr, if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracb*om*tau*(-2./3.+om*tau/4.); ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracb*om*ktau_two/12.; @@ -4292,6 +5381,10 @@ int perturb_initial_conditions(struct precision * ppr, ppt->error_message, "not consistent to ask for NID in absence of ur or ncdm species!"); + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracnu/fracg*(-1.+ktau_two/6.); ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracnu/fracg*k*k*tau*(1./4.-fracb/fracg*3./16.*om*tau); @@ -4320,6 +5413,10 @@ int perturb_initial_conditions(struct precision * ppr, ppt->error_message, "not consistent to ask for NIV in absence of ur or ncdm species!"); + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*k*tau*fracnu/fracg* (1. - 3./16.*fracb*(2.+fracg)/fracg*om*tau); /* small diff wrt camb */ @@ -4377,6 +5474,8 @@ int perturb_initial_conditions(struct precision * ppr, delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_cdm]; else if (pba->has_dcdm == _TRUE_) delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_dcdm]; + else if (pba->has_idm_dr == _TRUE_) + delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_idm_dr]; else delta_cdm=0.; @@ -4401,22 +5500,31 @@ int perturb_initial_conditions(struct precision * ppr, ppw->pv->y[ppw->pv->index_pt_theta_cdm] = k*k*alpha; } + if (pba->has_idm_dr == _TRUE_){ + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr] -= 3.*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr] = k*k*alpha; + /* comment on idm_dr initial conditions: theta_idm_dr is set later, together with theta_idr, if the tight coupling is on */ + } + if (pba->has_dcdm == _TRUE_) { ppw->pv->y[ppw->pv->index_pt_delta_dcdm] += (-3.*a_prime_over_a - a*pba->Gamma_dcdm)*alpha; ppw->pv->y[ppw->pv->index_pt_theta_dcdm] = k*k*alpha; } /* fluid */ - if (pba->has_fld == _TRUE_) { - ppw->pv->y[ppw->pv->index_pt_delta_fld] += 3*(1.+pba->w0_fld+pba->wa_fld)*a_prime_over_a*alpha; + if ((pba->has_fld == _TRUE_) && (pba->use_ppf == _FALSE_)) { + + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + + ppw->pv->y[ppw->pv->index_pt_delta_fld] -= 3*(1.+w_fld)*a_prime_over_a*alpha; ppw->pv->y[ppw->pv->index_pt_theta_fld] += k*k*alpha; } /* scalar field: check */ if (pba->has_scf == _TRUE_) { alpha_prime = 0.0; - /* - 2. * a_prime_over_a * alpha + eta - - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; */ + /* - 2. * a_prime_over_a * alpha + eta + - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; */ ppw->pv->y[ppw->pv->index_pt_phi_scf] += alpha*ppw->pvecback[pba->index_bg_phi_prime_scf]; ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] += @@ -4425,7 +5533,7 @@ int perturb_initial_conditions(struct precision * ppr, +ppw->pvecback[pba->index_bg_phi_prime_scf]*alpha_prime); } - if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_) || (pba->has_idr == _TRUE_)) { delta_ur -= 4.*a_prime_over_a*alpha; theta_ur += k*k*alpha; @@ -4452,6 +5560,21 @@ int perturb_initial_conditions(struct precision * ppr, } + if (pba->has_idr == _TRUE_){ + + ppw->pv->y[ppw->pv->index_pt_delta_idr] = delta_ur; + ppw->pv->y[ppw->pv->index_pt_theta_idr] = theta_ur; + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + ppw->pv->y[ppw->pv->index_pt_shear_idr] = shear_ur; + ppw->pv->y[ppw->pv->index_pt_l3_idr] = l3_ur; + } + } + } + if (pba->has_idm_dr == _TRUE_){ + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr] = theta_ur; + } + if (pba->has_ncdm == _TRUE_) { idx = ppw->pv->index_pt_psi0_ncdm1; for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ @@ -4497,111 +5620,111 @@ int perturb_initial_conditions(struct precision * ppr, if (_tensors_) { /** tensor initial conditions take into account the fact that - scalar (resp. tensor) \f$ C_l\f$'s are related to the real space - power spectrum of curvature (resp. of the tensor part of - metric perturbations) + scalar (resp. tensor) \f$ C_l\f$'s are related to the real space + power spectrum of curvature (resp. of the tensor part of + metric perturbations) - \f[ \ \ \sum_{ij} \f] + \f[ \ \ \sum_{ij} \f] - In momentum space it is conventional to use the modes R(k) - and h(k) where the quantity h obeying to the equation of - propagation: + In momentum space it is conventional to use the modes R(k) + and h(k) where the quantity h obeying to the equation of + propagation: - \f[ h'' + \frac{2a'}{a} h + [k2+2K] h = 12\pi Ga2 (\rho+p) \sigma = 8\pi Ga2 p \pi \f] + \f[ h'' + \frac{2a'}{a} h + [k2+2K] h = 12\pi Ga2 (\rho+p) \sigma = 8\pi Ga2 p \pi \f] - and the power spectra in real space and momentum space are related through: + and the power spectra in real space and momentum space are related through: - \f[ = \int \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} \right] = \int \frac{dk}{k} \mathcal{P}_R(k) \f] - \f[\sum_{ij} = \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} F\left(\frac{k^2}{K}\right) \right] = \int \frac{dk}{k} F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + \f[ = \int \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} \right] = \int \frac{dk}{k} \mathcal{P}_R(k) \f] + \f[\sum_{ij} = \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} F\left(\frac{k^2}{K}\right) \right] = \int \frac{dk}{k} F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] - where \f$ \mathcal{P}_R\f$ and \f$ \mathcal{P}_h\f$ are the dimensionless spectrum of - curvature R, and F is a function of k2/K, where K is the curvature - parameter. F is equal to one in flat space (K=0), and coming - from the contraction of the laplacian eigentensor \f$ Q_{ij}\f$ with - itself. We will give F explicitly below. + where \f$ \mathcal{P}_R\f$ and \f$ \mathcal{P}_h\f$ are the dimensionless spectrum of + curvature R, and F is a function of k2/K, where K is the curvature + parameter. F is equal to one in flat space (K=0), and coming + from the contraction of the laplacian eigentensor \f$ Q_{ij}\f$ with + itself. We will give F explicitly below. - Similarly the scalar (S) and tensor (T) \f$ C_l\f$'s are given by + Similarly the scalar (S) and tensor (T) \f$ C_l\f$'s are given by - \f[ C_l^S = 4\pi \int \frac{dk}{k} [\Delta_l^S(q)]^2 \mathcal{P}_R(k) \f] - \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + \f[ C_l^S = 4\pi \int \frac{dk}{k} [\Delta_l^S(q)]^2 \mathcal{P}_R(k) \f] + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] - The usual convention for the tensor-to-scalar ratio - \f$ r = A_t / A_s \f$ at pivot scale - = 16 epsilon in single-field inflation - is such that for constant \f$ \mathcal{P}_R(k)\f$ and \f$ \mathcal{P}_h(k)\f$, + The usual convention for the tensor-to-scalar ratio + \f$ r = A_t / A_s \f$ at pivot scale + = 16 epsilon in single-field inflation + is such that for constant \f$ \mathcal{P}_R(k)\f$ and \f$ \mathcal{P}_h(k)\f$, - \f[ r = 6 \frac{\mathcal{P}_h(k)}{\mathcal{P}_R(k)} \f] + \f[ r = 6 \frac{\mathcal{P}_h(k)}{\mathcal{P}_R(k)} \f] - so + so - \f[ \mathcal{P}_h(k) = \frac{\mathcal{P}_R(k) r}{6} = \frac{A_s r}{6} = \frac{A_t}{6} \f] + \f[ \mathcal{P}_h(k) = \frac{\mathcal{P}_R(k) r}{6} = \frac{A_s r}{6} = \frac{A_t}{6} \f] - A priori it would make sense to say that for a power-law - primordial spectrum there is an extra factor \f$ (k/k_{pivot})^{n_t} \f$ - (and eventually running and so on and so forth...) + A priori it would make sense to say that for a power-law + primordial spectrum there is an extra factor \f$ (k/k_{pivot})^{n_t} \f$ + (and eventually running and so on and so forth...) - However it has been shown that the minimal models of - inflation in a negatively curved bubble lead to - \f$ \mathcal{P}_h(k)=\tanh(\pi*\nu/2)\f$. In open models it is customary to - define the tensor tilt in a non-flat universe as a deviation - from this behavior rather than from true scale-invariance in - the above sense. + However it has been shown that the minimal models of + inflation in a negatively curved bubble lead to + \f$ \mathcal{P}_h(k)=\tanh(\pi*\nu/2)\f$. In open models it is customary to + define the tensor tilt in a non-flat universe as a deviation + from this behavior rather than from true scale-invariance in + the above sense. - Hence we should have + Hence we should have - \f[ \mathcal{P}_h(k) = \frac{A_t}{6} [ \tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)}\f] + \f[ \mathcal{P}_h(k) = \frac{A_t}{6} [ \tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)}\f] - where the brackets \f[ [...] \f] mean "if K<0" + where the brackets \f[ [...] \f] mean "if K<0" - Then + Then - \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \frac{A_t}{6} [\tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)} \f] + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \frac{A_t}{6} [\tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)} \f] - In the code, it is then a matter of choice to write: + In the code, it is then a matter of choice to write: - - In the primordial module: \f$ \mathcal{P}_h(k) = \frac{A_t}{6} \tanh{(\pi*\frac{\nu}{2})} (k/k^*)^{n_T}\f$ - - In the perturbation initial conditions: \f$ h = 1\f$ - - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f$ + - In the primordial module: \f$ \mathcal{P}_h(k) = \frac{A_t}{6} \tanh{(\pi*\frac{\nu}{2})} (k/k^*)^{n_T}\f$ + - In the perturbation initial conditions: \f$ h = 1\f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f$ - or: + or: - - In the primordial module: \f$ \mathcal{P}_h(k) = A_t (k/k^*)^{n_T} \f$ - - In the perturbation initial conditions: \f$ h = \sqrt{[F\left(\frac{k^2}{K}\right) / 6] \tanh{(\pi*\frac{\nu}{2})}} \f$ - - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 \mathcal{P}_h(k) \f$ + - In the primordial module: \f$ \mathcal{P}_h(k) = A_t (k/k^*)^{n_T} \f$ + - In the perturbation initial conditions: \f$ h = \sqrt{[F\left(\frac{k^2}{K}\right) / 6] \tanh{(\pi*\frac{\nu}{2})}} \f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 \mathcal{P}_h(k) \f$ - We choose this last option, such that the primordial and - spectra module differ minimally in flat and non-flat space. Then we must impose + We choose this last option, such that the primordial and + spectra module differ minimally in flat and non-flat space. Then we must impose - \f[ h = \sqrt{\left(\frac{F}{6}\right) \tanh{(\pi*\frac{\nu}{2})}} \f] + \f[ h = \sqrt{\left(\frac{F}{6}\right) \tanh{(\pi*\frac{\nu}{2})}} \f] - The factor F is found to be given by: + The factor F is found to be given by: - \f[ \sum_{ij} = \int \frac{dk}{k} \frac{k2(k2-K)}{(k2+3K)(k2+2K)} \mathcal{P}_h(k) \f] + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{k2(k2-K)}{(k2+3K)(k2+2K)} \mathcal{P}_h(k) \f] - Introducing as usual \f$ q2 = k2 - 3K \f$ and using qdq = kdk this gives + Introducing as usual \f$ q2 = k2 - 3K \f$ and using qdq = kdk this gives - \f[ \sum_{ij} = \int \frac{dk}{k} \frac{(q2-3K)(q2-4K)}{q2(q2-K)} \mathcal{P}_h(k) \f] + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{(q2-3K)(q2-4K)}{q2(q2-K)} \mathcal{P}_h(k) \f] - Using qdq = kdk this is equivalent to + Using qdq = kdk this is equivalent to - \f[ \sum_{ij} = \int \frac{dq}{q} \frac{q2-4K}{q2-K} \mathcal{P}_h(k(q)) \f] + \f[ \sum_{ij} = \int \frac{dq}{q} \frac{q2-4K}{q2-K} \mathcal{P}_h(k(q)) \f] - Finally, introducing \f$ \nu=q/\sqrt{|K|}\f$ and sgnK=SIGN(k)\f$=\pm 1\f$, this could also be written + Finally, introducing \f$ \nu=q/\sqrt{|K|}\f$ and sgnK=SIGN(k)\f$=\pm 1\f$, this could also be written - \f[ \sum_{ij} = \int \frac{d\nu}{\nu} \frac{(\nu2-4sgnK)}{(\nu2-sgnK)} \mathcal{P}_h(k(\nu)) \f] + \f[ \sum_{ij} = \int \frac{d\nu}{\nu} \frac{(\nu2-4sgnK)}{(\nu2-sgnK)} \mathcal{P}_h(k(\nu)) \f] - Equation (43,44) of Hu, Seljak, White, Zaldarriaga is - equivalent to absorbing the above factor - \f$ (\nu2-4sgnK)/(\nu2-sgnK)\f$ in the definition of the primordial - spectrum. Since the initial condition should be written in terms of k rather than nu, they should read + Equation (43,44) of Hu, Seljak, White, Zaldarriaga is + equivalent to absorbing the above factor + \f$ (\nu2-4sgnK)/(\nu2-sgnK)\f$ in the definition of the primordial + spectrum. Since the initial condition should be written in terms of k rather than nu, they should read - \f[ h = \sqrt{ [k2(k2-K)]/[(k2+3K)(k2+2K)] / 6 * \tanh{(\pi*\frac{\nu}{2})} } \f] + \f[ h = \sqrt{ [k2(k2-K)]/[(k2+3K)(k2+2K)] / 6 * \tanh{(\pi*\frac{\nu}{2})} } \f] - We leave the freedom to multiply by an arbitrary number - ppr->gw_ini. The standard convention corresponding to - standard definitions of r, \f$ A_T\f$, \f$ n_T\f$ is however ppr->gw_ini=1. - * - */ + We leave the freedom to multiply by an arbitrary number + ppr->gw_ini. The standard convention corresponding to + standard definitions of r, \f$ A_T\f$, \f$ n_T\f$ is however ppr->gw_ini=1. + * + */ if (index_ic == ppt->index_ic_ten) { ppw->pv->y[ppw->pv->index_pt_gw] = ppr->gw_ini/_SQRT6_; @@ -4757,6 +5880,32 @@ int perturb_approximations( } + if(pba->has_idm_dr == _TRUE_){ + + if(ppw->pvecthermo[pth->index_th_dmu_idm_dr] == 0.){ + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off; + } + else{ + + class_test(1./ppw->pvecthermo[pth->index_th_dmu_idm_dr] < 0., + ppt->error_message, + "negative tau_idm_dr=1/dmu_idm_dr=%e at z=%e, conformal time=%e.\n", + 1./ppw->pvecthermo[pth->index_th_dmu_idm_dr], + 1./ppw->pvecback[pba->index_bg_a]-1., + tau); + + if ((1./tau_h/ppw->pvecthermo[pth->index_th_dmu_idm_dr] < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_h) && + (1./tau_k/ppw->pvecthermo[pth->index_th_dmu_idm_dr] < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_k) && + (pth->nindex_idm_dr>=2) && (ppt->idr_nature == idr_free_streaming)) { + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_on; + } + else{ + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off; + //printf("tca_idm_dr_off = %d\n",tau); + } + } + } + /** - --> (c) free-streaming approximations */ if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) && @@ -4769,6 +5918,37 @@ int perturb_approximations( ppw->approx[ppw->index_ap_rsa] = (int)rsa_off; } + /* interacting dark radiation free streaming approximation*/ + if (pba->has_idr == _TRUE_){ + + if(pba->has_idm_dr==_TRUE_){ + + if ((tau/tau_k > ppr->idr_streaming_trigger_tau_over_tau_k) && + ((tau > pth->tau_idr_free_streaming) && (pth->nindex_idm_dr>=2)) && + (ppr->idr_streaming_approximation != rsa_idr_none)){ + + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_on; + } + + else{ + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_off; + } + } + + else{ + if ((tau/tau_k > ppr->idr_streaming_trigger_tau_over_tau_k) && + (tau > pth->tau_idr_free_streaming) && + (ppr->idr_streaming_approximation != rsa_idr_none)){ + + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_on; + } + + else{ + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_off; + } + } + } + if (pba->has_ur == _TRUE_) { if ((tau/tau_k > ppr->ur_fluid_trigger_tau_over_tau_k) && @@ -5056,6 +6236,7 @@ int perturb_einstein( double k2,a,a2,a_prime_over_a; double s2_squared; double shear_g = 0.; + double shear_idr = 0.; /** - define wavenumber and scale factor related quantities */ @@ -5105,8 +6286,15 @@ int perturb_einstein( class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), ppt->error_message, ppt->error_message); + } + + if ((pba->has_idr)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)){ + class_call(perturb_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); } + } /* synchronous gauge */ @@ -5125,16 +6313,16 @@ int perturb_einstein( class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), ppt->error_message, ppt->error_message); + } - /* update total theta given rsa approximation results */ - - ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_theta_g; + if ((pba->has_idr==_TRUE_)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)) { - if (pba->has_ur == _TRUE_) { + class_call(perturb_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); - ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_theta_ur; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*ppw->rsa_theta_idr; - } } /* second equation involving total velocity */ @@ -5159,6 +6347,13 @@ int perturb_einstein( } + if ((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + + shear_idr = 0.5*8./15./ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[0]*(y[ppw->pv->index_pt_theta_idr]+k2*ppw->pvecmetric[ppw->index_mt_alpha]); + + ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*shear_idr; + } + /* fourth equation involving total shear */ ppw->pvecmetric[ppw->index_mt_alpha_prime] = //TBC - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_alpha] @@ -5184,10 +6379,18 @@ int perturb_einstein( // of decaying dark matter. } + if (ppt->has_source_delta_cb == _TRUE_) { + ppw->delta_cb += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_cb/k2;//check gauge transformation + } + if (ppt->has_source_theta_m == _TRUE_) { if (ppt->gauge == synchronous) { ppw->theta_m += ppw->pvecmetric[ppw->index_mt_alpha]*k2; - + } + } + if (ppt->has_source_theta_cb == _TRUE_){ + if (ppt->gauge == synchronous) { + ppw->theta_cb += ppw->pvecmetric[ppw->index_mt_alpha]*k2; //check gauge transformation } } } @@ -5245,13 +6448,20 @@ int perturb_total_stress_energy( /** - define local variables */ - double a,a2; + double a,a2,a_prime_over_a,k2; + double rho_m=0.; + double delta_rho_m=0.; + double rho_plus_p_m=0.; + double rho_plus_p_theta_m=0.; double delta_g=0.; double theta_g=0.; double shear_g=0.; double delta_ur=0.; double theta_ur=0.; double shear_ur=0.; + double delta_idr=0.; + double theta_idr=0.; + double shear_idr=0.; double rho_delta_ncdm=0.; double rho_plus_p_theta_ncdm=0.; double rho_plus_p_shear_ncdm=0.; @@ -5260,17 +6470,28 @@ int perturb_total_stress_energy( double rho_plus_p_ncdm; int index_q,n_ncdm,idx; double epsilon,q,q2,cg2_ncdm,w_ncdm,rho_ncdm_bg,p_ncdm_bg,pseudo_p_ncdm; - double rho_m,delta_rho_m,rho_plus_p_m,rho_plus_p_theta_m; - double w; + double w_fld,dw_over_da_fld,integral_fld; double gwncdm; double rho_relativistic; double rho_dr_over_f; double delta_rho_scf, delta_p_scf, psi; + /** Variables used for FLD and PPF */ + double c_gamma_k_H_square; + double Gamma_prime_plus_a_prime_over_a_Gamma, s2sq=1.; + double w_prime_fld, ca2_fld; + double alpha, alpha_prime, metric_euler; + double rho_t, p_t, rho_t_prime, p_t_prime; + double rho_fld, p_fld, rho_fld_prime, p_fld_prime; + double X, Y, Z, X_prime, Y_prime, Z_prime; + double Gamma_fld, S, S_prime, theta_t, theta_t_prime, rho_plus_p_theta_fld_prime; + double delta_p_b_over_rho_b; /** - wavenumber and scale factor related quantities */ a = ppw->pvecback[pba->index_bg_a]; a2 = a * a; + a_prime_over_a = ppw->pvecback[pba->index_bg_H]*a; + k2 = k*k; /** - for scalar modes */ @@ -5346,38 +6567,103 @@ int perturb_total_stress_energy( } + /** - ---> (a.3.) baryon pressure perturbation */ + + if ((ppt->has_perturbed_recombination == _TRUE_) &&(ppw->approx[ppw->index_ap_tca] == (int)tca_off)) { + delta_p_b_over_rho_b = ppw->pvecthermo[pth->index_th_wb]*(y[ppw->pv->index_pt_delta_b]+ y[ppw->pv->index_pt_perturbed_recombination_delta_temp]); + } + else { + delta_p_b_over_rho_b = ppw->pvecthermo[pth->index_th_cb2]*y[ppw->pv->index_pt_delta_b]; + } + + /** - ---> (a.4.) interacting dark radiation */ + + if (pba->has_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + delta_idr = y[ppw->pv->index_pt_delta_idr]; + theta_idr = y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + if((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + if(ppt->gauge == newtonian) + shear_idr = 0.5*(8./15./ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[0]*(y[ppw->pv->index_pt_theta_idr])); + else + shear_idr = 0.; /* this is set in perturb_einstein, so here it's set to 0 */ + } + else{ + shear_idr = y[ppw->pv->index_pt_shear_idr]; + } + } + } + else{ + delta_idr = 0.; + theta_idr = 0.; + shear_idr = 0.; + } + } + /** - --> (b) compute the total density, velocity and shear perturbations */ /* photon and baryon contribution */ ppw->delta_rho = ppw->pvecback[pba->index_bg_rho_g]*delta_g - + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; // contribution to total perturbed stress-energy ppw->rho_plus_p_theta = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*theta_g - + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; - ppw->rho_plus_p_shear = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; // contribution to total perturbed stress-energy + ppw->rho_plus_p_shear = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; // contribution to total perturbed stress-energy ppw->delta_p = 1./3.*ppw->pvecback[pba->index_bg_rho_g]*delta_g - + ppw->pvecthermo[pth->index_th_cb2]*ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + + ppw->pvecback[pba->index_bg_rho_b]*delta_p_b_over_rho_b; // contribution to total perturbed stress-energy + ppw->rho_plus_p_tot = 4./3. * ppw->pvecback[pba->index_bg_rho_g] + ppw->pvecback[pba->index_bg_rho_b]; + + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; // contribution to delta rho_matter + rho_m = ppw->pvecback[pba->index_bg_rho_b]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + rho_plus_p_theta_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m = ppw->pvecback[pba->index_bg_rho_b]; + } /* cdm contribution */ if (pba->has_cdm == _TRUE_) { - ppw->delta_rho = ppw->delta_rho + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; // contribution to total perturbed stress-energy if (ppt->gauge == newtonian) - ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; + ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; // contribution to total perturbed stress-energy + + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_cdm]; + + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + if (ppt->gauge == newtonian) + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + } + + /* idm_dr contribution */ + if (pba->has_idm_dr == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_idm_dr]*y[ppw->pv->index_pt_delta_idm_dr]; + ppw->rho_plus_p_theta += ppw->pvecback[pba->index_bg_rho_idm_dr]*y[ppw->pv->index_pt_theta_idm_dr]; + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_idm_dr]; } /* dcdm contribution */ if (pba->has_dcdm == _TRUE_) { ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; ppw->rho_plus_p_theta += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; - } - - /* fluid contribution */ - if (pba->has_fld == _TRUE_) { - w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_dcdm]; - ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; - ppw->rho_plus_p_theta += (1.+w)*ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_theta_fld]; - ppw->delta_p = ppw->delta_p + pba->cs2_fld * ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } } /* ultra-relativistic decay radiation */ @@ -5393,6 +6679,8 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += 4./3.*3./4*k*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+1]; ppw->rho_plus_p_shear += 2./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+2]; ppw->delta_p += 1./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr]; + + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_dr]; } /* ultra-relativistic neutrino/relics contribution */ @@ -5402,8 +6690,29 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*theta_ur; ppw->rho_plus_p_shear = ppw->rho_plus_p_shear + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*shear_ur; ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_ur]*delta_ur; + + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_ur]; } + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_idr]*delta_idr; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*theta_idr; + if (ppt->idr_nature==idr_free_streaming) + ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*shear_idr; + ppw->delta_p += 1./3. * ppw->pvecback[pba->index_bg_rho_idr]*delta_idr; + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_idr]; + } + + /* infer delta_cb abd theta_cb (perturbations from CDM and baryons) before adding ncdm */ + if ((ppt->has_source_delta_m == _TRUE_) && (ppt->has_source_delta_cb == _TRUE_)) + ppw->delta_cb = delta_rho_m/rho_m; + + if (((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) && + ((ppt->has_source_delta_cb == _TRUE_) || (ppt->has_source_theta_cb == _TRUE_))) + ppw->theta_cb = rho_plus_p_theta_m/rho_plus_p_m; + + /* non-cold dark matter contribution */ if (pba->has_ncdm == _TRUE_) { idx = ppw->pv->index_pt_psi0_ncdm1; @@ -5427,6 +6736,9 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += rho_plus_p_ncdm*y[idx+1]; ppw->rho_plus_p_shear += rho_plus_p_ncdm*y[idx+2]; ppw->delta_p += cg2_ncdm*rho_ncdm_bg*y[idx]; + + ppw->rho_plus_p_tot += rho_plus_p_ncdm; + idx += ppw->pv->l_max_ncdm[n_ncdm]+1; } } @@ -5471,6 +6783,21 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += rho_plus_p_theta_ncdm; ppw->rho_plus_p_shear += rho_plus_p_shear_ncdm; ppw->delta_p += delta_p_ncdm; + + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + } + } + if (ppt->has_source_delta_m == _TRUE_) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + delta_rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]*ppw->delta_ncdm[n_ncdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + } + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_plus_p_theta_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]) + *ppw->theta_ncdm[n_ncdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); } } } @@ -5511,86 +6838,124 @@ int perturb_total_stress_energy( ppw->delta_p += delta_p_scf; - } - - - /* store delta_m in the current gauge. In perturb_einstein, this - will be transformed later on into the gauge-independent variable D - = delta_m - 2H'/H \theta_m/k^2 . */ - - if (ppt->has_source_delta_m == _TRUE_) { - - /* include baryons and cold dark matter */ + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_scf]+ppw->pvecback[pba->index_bg_p_scf]; - delta_rho_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; - rho_m = ppw->pvecback[pba->index_bg_rho_b]; - - if (pba->has_cdm == _TRUE_) { - delta_rho_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; - } - - /* include decaying cold dark matter */ - - if (pba->has_dcdm == _TRUE_) { - delta_rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; - } + } - /* include any other species non-relativistic today (like ncdm species) */ + /* add your extra species here */ - if (pba->has_ncdm == _TRUE_) { + /* fluid contribution */ + if (pba->has_fld == _TRUE_) { - for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + w_prime_fld = dw_over_da_fld * a_prime_over_a * a; - delta_rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]*ppw->delta_ncdm[n_ncdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; - } + if (pba->use_ppf == _FALSE_) { + ppw->delta_rho_fld = ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + ppw->rho_plus_p_theta_fld = (1.+w_fld)*ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_theta_fld]; + ca2_fld = w_fld - w_prime_fld / 3. / (1.+w_fld) / a_prime_over_a; + /** We must gauge transform the pressure perturbation from the fluid rest-frame to the gauge we are working in */ + ppw->delta_p_fld = pba->cs2_fld * ppw->delta_rho_fld + (pba->cs2_fld-ca2_fld)*(3*a_prime_over_a*ppw->rho_plus_p_theta_fld/k/k); } + else { + s2sq = ppw->s_l[2]*ppw->s_l[2]; + c_gamma_k_H_square = pow(pba->c_gamma_over_c_fld*k/a_prime_over_a,2)*pba->cs2_fld; + /** The equation is too stiff for Runge-Kutta when c_gamma_k_H_square is large. + Use the asymptotic solution Gamma=Gamma'=0 in that case. + */ + if (c_gamma_k_H_square > ppr->c_gamma_k_H_square_max) + Gamma_fld = 0.; + else + Gamma_fld = y[ppw->pv->index_pt_Gamma_fld]; + + if (ppt->gauge == synchronous){ + alpha = (y[ppw->pv->index_pt_eta]+1.5*a2/k2/s2sq*(ppw->delta_rho+3*a_prime_over_a/k2*ppw->rho_plus_p_theta)-Gamma_fld)/a_prime_over_a; + alpha_prime = -2. * a_prime_over_a * alpha + y[ppw->pv->index_pt_eta] - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; + metric_euler = 0.; + } + else{ + alpha = 0.; + alpha_prime = 0.; + metric_euler = k2*y[ppw->pv->index_pt_phi] - 4.5*a2*ppw->rho_plus_p_shear; + } + ppw->S_fld = ppw->pvecback[pba->index_bg_rho_fld]*(1.+w_fld)*1.5*a2/k2/a_prime_over_a* + (ppw->rho_plus_p_theta/ppw->rho_plus_p_tot+k2*alpha); + // note that the last terms in the ratio do not include fld, that's correct, it's the whole point of the PPF scheme + /** We must now check the stiffenss criterion again and set Gamma_prime_fld accordingly. */ + if (c_gamma_k_H_square > ppr->c_gamma_k_H_square_max){ + ppw->Gamma_prime_fld = 0.; + } + else{ + ppw->Gamma_prime_fld = a_prime_over_a*(ppw->S_fld/(1.+c_gamma_k_H_square) - (1.+c_gamma_k_H_square)*Gamma_fld); + } + Gamma_prime_plus_a_prime_over_a_Gamma = ppw->Gamma_prime_fld+a_prime_over_a*Gamma_fld; + // delta and theta in both gauges gauge: + ppw->rho_plus_p_theta_fld = ppw->pvecback[pba->index_bg_rho_fld]*(1.+w_fld)*ppw->rho_plus_p_theta/ppw->rho_plus_p_tot- + k2*2./3.*a_prime_over_a/a2/(1+4.5*a2/k2/s2sq*ppw->rho_plus_p_tot)* + (ppw->S_fld-Gamma_prime_plus_a_prime_over_a_Gamma/a_prime_over_a); + ppw->delta_rho_fld = -2./3.*k2*s2sq/a2*Gamma_fld-3*a_prime_over_a/k2*ppw->rho_plus_p_theta_fld; + + /** Now construct the pressure perturbation, see 1903.xxxxx. */ + /** Construct energy density and pressure for DE (_fld) and the rest (_t). + Also compute derivatives. */ + rho_fld = ppw->pvecback[pba->index_bg_rho_fld]; + p_fld = w_fld*rho_fld; + rho_fld_prime = -3*a_prime_over_a*(rho_fld+p_fld); + p_fld_prime = w_prime_fld*rho_fld-3*a_prime_over_a*(1+w_fld)*p_fld; + rho_t = ppw->pvecback[pba->index_bg_rho_tot] - rho_fld; + p_t = ppw->pvecback[pba->index_bg_p_tot] - p_fld; + rho_t_prime = -3*a_prime_over_a*(rho_t+p_t); + p_t_prime = ppw->pvecback[pba->index_bg_p_tot_prime]-p_fld_prime; + /** Compute background quantities X,Y,Z and their derivatives. */ + X = c_gamma_k_H_square; + X_prime = -2*X*(a_prime_over_a + ppw->pvecback[pba->index_bg_H_prime]/ppw->pvecback[pba->index_bg_H]); + Y = 4.5*a2/k2/s2sq*(rho_t+p_t); + Y_prime = Y*(2.*a_prime_over_a+(rho_t_prime+p_t_prime)/(rho_t+p_t)); + Z = 2./3.*k2*ppw->pvecback[pba->index_bg_H]/a; + Z_prime = Z*(ppw->pvecback[pba->index_bg_H_prime]/ppw->pvecback[pba->index_bg_H] - a_prime_over_a); + /** Construct theta_t and its derivative from the Euler equation */ + theta_t = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot; + theta_t_prime = -a_prime_over_a*theta_t-(p_t_prime*theta_t-k2*ppw->delta_p +k2*ppw->rho_plus_p_shear)/ppw->rho_plus_p_tot+metric_euler; + S = ppw->S_fld; + S_prime = -Z_prime/Z*S+1./Z*(rho_fld_prime+p_fld_prime)*(theta_t+k2*alpha)+1./Z*(rho_fld+p_fld)*(theta_t_prime+k2*alpha_prime); + /** Analytic derivative of the equation for ppw->rho_plus_p_theta_fld above. */ + rho_plus_p_theta_fld_prime = Z_prime*(S-1./(1.+Y)*(S/(1.+1./X)+Gamma_fld*X)) + + Z*(S_prime + Y_prime/(1.+Y*Y+2*Y)*(S/(1.+1./X)+Gamma_fld*X)- + 1./(1.+Y)*(S_prime/(1.+1./X)+S*X_prime/(1.+X*X+2*X)+ppw->Gamma_prime_fld*X+Gamma_fld*X_prime))- + k2*alpha_prime*(rho_fld+p_fld)-k2*alpha*(rho_fld_prime+p_fld_prime); + + /** We can finally compute the pressure perturbation using the Euler equation for theta_fld */ + ppw->delta_p_fld = (rho_plus_p_theta_fld_prime+4*a_prime_over_a* ppw->rho_plus_p_theta_fld - (rho_fld+p_fld)*metric_euler)/k2; + } + + ppw->delta_rho += ppw->delta_rho_fld; + ppw->rho_plus_p_theta += ppw->rho_plus_p_theta_fld; + ppw->delta_p += ppw->delta_p_fld; + + ppw->rho_plus_p_tot += (1.+w_fld)*ppw->pvecback[pba->index_bg_rho_fld]; + + } + + /* don't add more species here, add them before the fluid contribution: because of the PPF scheme, the fluid must be the last one! */ - /* infer delta_m */ + /* store delta_m in the current gauge. In perturb_einstein, this + will be transformed later on into the gauge-independent variable D + = delta_m + 3 a H \theta_m/k^2 . */ + if (ppt->has_source_delta_m == _TRUE_) ppw->delta_m = delta_rho_m/rho_m; - } - /* store theta_m in the current gauge. In perturb_einstein, this will be transformed later on into the gauge-independent variable - Theta . Note that computing theta_m is necessary also if we want - the delta_m source only, because the gauge-invariant delta_m - involves theta_m in the current gauge. */ - - if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { - - /* include baryons and cold dark matter */ - - rho_plus_p_theta_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; - rho_plus_p_m = ppw->pvecback[pba->index_bg_rho_b]; - - if (pba->has_cdm == _TRUE_) { - if (ppt->gauge == newtonian) - rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; - rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_cdm]; - } - - if (pba->has_dcdm == _TRUE_) { - rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; - rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_dcdm]; - } - - /* include any other species non-relativistic today (like ncdm species) */ - - if (pba->has_ncdm == _TRUE_) { - for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ - rho_plus_p_theta_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm])*ppw->theta_ncdm[n_ncdm]; - rho_plus_p_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); - } - } - - /* infer theta_m */ + Theta . Note that computing theta_m is necessary also if we want + the delta_m source only, because the gauge-invariant delta_m + involves theta_m in the current gauge. */ + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) ppw->theta_m = rho_plus_p_theta_m/rho_plus_p_m; - } + + /* could include Lambda contribution to rho_tot (not done to match CMBFAST/CAMB definition) */ + } /** - for vector modes */ @@ -5738,7 +7103,7 @@ int perturb_sources( /** - define local variables */ double P; - int index_type; + int index_tp; struct perturb_parameters_and_workspace * pppaw; struct precision * ppr; @@ -5758,10 +7123,14 @@ int perturb_sources( double delta_g, delta_rho_scf, rho_plus_p_theta_scf; double a_prime_over_a=0.; /* (a'/a) */ double a_prime_over_a_prime=0.; /* (a'/a)' */ + double w_fld,dw_over_da_fld,integral_fld; int switch_isw = 1; double a_rel, a2_rel, f_dr; + double H_T_Nb_prime=0., rho_tot; + double theta_over_k2,theta_shift; + /** - rename structure fields (just to avoid heavy notations) */ pppaw = parameters_and_workspace; @@ -5805,11 +7174,8 @@ int perturb_sources( a_rel = ppw->pvecback[pba->index_bg_a]/pba->a_today; a2_rel = a_rel * a_rel; - /* derived background quantities, useful only in synchronous gauge */ - if (ppt->gauge == synchronous) { - a_prime_over_a = pvecback[pba->index_bg_a] * pvecback[pba->index_bg_H]; /* (a'/a)=aH */ - a_prime_over_a_prime = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + pow(pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a],2); /* (a'/a)' = aH'+(aH)^2 */ - } + a_prime_over_a = pvecback[pba->index_bg_a] * pvecback[pba->index_bg_H]; /* (a'/a)=aH */ + a_prime_over_a_prime = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + pow(pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a],2); /* (a'/a)' = aH'+(aH)^2 */ /** - for scalars */ if (_scalars_) { @@ -5932,6 +7298,34 @@ int perturb_sources( /* now, non-CMB sources */ + if ((ppt->has_Nbody_gauge_transfers == _TRUE_) || (ppt->has_source_H_T_Nb_prime == _TRUE_) || (ppt->has_source_k2gamma_Nb == _TRUE_)) { + + /* H_T_prime in N-body gauge. (H_T=3zeta where zeta is the comoving curvature perturbation.). + See equation A.5 in 1811.00904.*/ + H_T_Nb_prime = 3*a_prime_over_a/ppw->rho_plus_p_tot*(-ppw->delta_p+ + pvecback[pba->index_bg_p_tot_prime]*ppw->rho_plus_p_theta/ppw->rho_plus_p_tot/k/k+ + ppw->rho_plus_p_shear); + if (ppt->has_source_H_T_Nb_prime == _TRUE_) { + _set_source_(ppt->index_tp_H_T_Nb_prime) = H_T_Nb_prime; + } + + /** gamma in N-body gauge. Eq. A.2 in 1811.00904 gives k2gamma = + (a'/a)H_T' + k2(phi-psi) - H_T''. The last term is cubersome + to calculate (one would need finite derivatives) but usually + small. Here we only compute an approximate k2gamma without + this last term. If needed, the term could be restored: you + can see how T. Tram did it in a previous commit + beec79548877e1e43403d1f4de5ddee6741a3c16 (28.02.2019) - then + it had to go to spectra.c, now it could stay in this + module. Later this feature was removed for simplicity. Note + that to compute the transfer functions in the N-body gauge + we do not need k2gamma anyway. */ + + if (ppt->has_source_k2gamma_Nb == _TRUE_){ + _set_source_(ppt->index_tp_k2gamma_Nb) = -a_prime_over_a*H_T_Nb_prime+9./2.*a2_rel*ppw->rho_plus_p_shear; + } + } + /* Bardeen potential -PHI_H = phi in Newtonian gauge */ if (ppt->has_source_phi == _TRUE_) { @@ -5980,34 +7374,88 @@ int perturb_sources( a_prime_over_a * pvecmetric[ppw->index_mt_alpha] + pvecmetric[ppw->index_mt_alpha_prime]; } - /* total matter over density (gauge-invariant, defined as in arXiv:1307.1459) */ + /* the metric potentials h and eta in synchronous gauge */ + if (ppt->gauge == synchronous) { + + /* cdm is always on in synchronous gauge, see error message above that checks gauge and has_cdm */ + if (ppt->has_source_h == _TRUE_) + _set_source_(ppt->index_tp_h) = - 2 * y[ppw->pv->index_pt_delta_cdm]; + + if (ppt->has_source_h_prime == _TRUE_) + _set_source_(ppt->index_tp_h_prime) = pvecmetric[ppw->index_mt_h_prime]; + + if (ppt->has_source_eta == _TRUE_) + _set_source_(ppt->index_tp_eta) = y[ppw->pv->index_pt_eta]; + + if (ppt->has_source_eta_prime == _TRUE_) + _set_source_(ppt->index_tp_eta_prime) = dy[ppw->pv->index_pt_eta]; + + } + + /* total matter overdensity (gauge-invariant, defined as in arXiv:1307.1459) */ if (ppt->has_source_delta_m == _TRUE_) { _set_source_(ppt->index_tp_delta_m) = ppw->delta_m; } + /* cdm and baryon over density */ + if (ppt->has_source_delta_cb == _TRUE_) { + _set_source_(ppt->index_tp_delta_cb) = ppw->delta_cb; + } + + /* compute the corrections that have to be applied to each (delta_i, theta_i) in N-body gauge */ + if (ppt->has_Nbody_gauge_transfers == _TRUE_){ + theta_over_k2 = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot/k/k; + theta_shift = H_T_Nb_prime; + if (ppt->gauge == synchronous) theta_shift += pvecmetric[ppw->index_mt_alpha]*k*k; + } + else{ + theta_over_k2 = 0.; + theta_shift = 0.; + } + + /* delta_tot */ + if (ppt->has_source_delta_tot == _TRUE_) { + + /** We follow the (debatable) CMBFAST/CAMB convention of not including rho_lambda in rho_tot */ + if (pba->has_lambda == _TRUE_){ + rho_tot = pvecback[pba->index_bg_rho_tot] - pvecback[pba->index_bg_rho_lambda]; + } + else{ + rho_tot = pvecback[pba->index_bg_rho_tot]; + } + + _set_source_(ppt->index_tp_delta_tot) = ppw->delta_rho/rho_tot + + 3*a_prime_over_a*(1+pvecback[pba->index_bg_p_tot]/pvecback[pba->index_bg_rho_tot])*theta_over_k2; + } + /* delta_g */ if (ppt->has_source_delta_g == _TRUE_) { - _set_source_(ppt->index_tp_delta_g) = delta_g; + _set_source_(ppt->index_tp_delta_g) = delta_g + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_baryon */ if (ppt->has_source_delta_b == _TRUE_) { - _set_source_(ppt->index_tp_delta_b) = y[ppw->pv->index_pt_delta_b]; + _set_source_(ppt->index_tp_delta_b) = y[ppw->pv->index_pt_delta_b] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_cdm */ if (ppt->has_source_delta_cdm == _TRUE_) { - _set_source_(ppt->index_tp_delta_cdm) = y[ppw->pv->index_pt_delta_cdm]; + _set_source_(ppt->index_tp_delta_cdm) = y[ppw->pv->index_pt_delta_cdm] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_dcdm */ if (ppt->has_source_delta_dcdm == _TRUE_) { - _set_source_(ppt->index_tp_delta_dcdm) = y[ppw->pv->index_pt_delta_dcdm]; + _set_source_(ppt->index_tp_delta_dcdm) = y[ppw->pv->index_pt_delta_dcdm] + + (3.*a_prime_over_a+a_rel*pba->Gamma_dcdm)*theta_over_k2; // N-body gauge correction; } /* delta_fld */ if (ppt->has_source_delta_fld == _TRUE_) { - _set_source_(ppt->index_tp_delta_fld) = y[ppw->pv->index_pt_delta_fld]; + _set_source_(ppt->index_tp_delta_fld) = ppw->delta_rho_fld/pvecback[pba->index_bg_rho_fld] + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_w_fld])*theta_over_k2; // N-body gauge correction } /* delta_scf */ @@ -6015,13 +7463,15 @@ int perturb_sources( if (ppt->gauge == synchronous){ delta_rho_scf = 1./3.* (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] - + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]) + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf])*theta_over_k2; // N-body gauge correction } else{ delta_rho_scf = 1./3.* (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] - - 1./a2_rel*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]); + - 1./a2_rel*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]) + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf])*theta_over_k2; // N-body gauge correction } _set_source_(ppt->index_tp_delta_scf) = delta_rho_scf/pvecback[pba->index_bg_rho_scf]; } @@ -6029,83 +7479,154 @@ int perturb_sources( /* delta_dr */ if (ppt->has_source_delta_dr == _TRUE_) { f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; - _set_source_(ppt->index_tp_delta_dr) = y[ppw->pv->index_pt_F0_dr]/f_dr; + _set_source_(ppt->index_tp_delta_dr) = y[ppw->pv->index_pt_F0_dr]/f_dr + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_ur */ if (ppt->has_source_delta_ur == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_delta_ur) = y[ppw->pv->index_pt_delta_ur]; + _set_source_(ppt->index_tp_delta_ur) = y[ppw->pv->index_pt_delta_ur] + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction else - _set_source_(ppt->index_tp_delta_ur) = ppw->rsa_delta_ur; + _set_source_(ppt->index_tp_delta_ur) = ppw->rsa_delta_ur + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + } + + /* delta_idr */ + if (ppt->has_source_delta_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) + _set_source_(ppt->index_tp_delta_idr) = y[ppw->pv->index_pt_delta_idr] + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + else + _set_source_(ppt->index_tp_delta_idr) = ppw->rsa_delta_idr + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + } + + /* delta_idm_dr */ + if (ppt->has_source_delta_idm_dr == _TRUE_) { + _set_source_(ppt->index_tp_delta_idm_dr) = y[ppw->pv->index_pt_delta_idm_dr] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_ncdm1 */ if (ppt->has_source_delta_ncdm == _TRUE_) { - for (index_type = ppt->index_tp_delta_ncdm1; index_type < ppt->index_tp_delta_ncdm1+pba->N_ncdm; index_type++) { - _set_source_(index_type) = ppw->delta_ncdm[index_type - ppt->index_tp_delta_ncdm1]; + for (index_tp = ppt->index_tp_delta_ncdm1; index_tp < ppt->index_tp_delta_ncdm1+pba->N_ncdm; index_tp++) { + _set_source_(index_tp) = ppw->delta_ncdm[index_tp - ppt->index_tp_delta_ncdm1] + + 3.*a_prime_over_a*(1+pvecback[index_tp - ppt->index_tp_delta_ncdm1 + pba->index_bg_p_ncdm1] + /pvecback[index_tp - ppt->index_tp_delta_ncdm1 + pba->index_bg_rho_ncdm1])*theta_over_k2; // N-body gauge correction } } - /* total velocity (gauge-invariant, defined as in arXiv:1307.1459) */ + /* total velocity */ + if (ppt->has_source_theta_tot == _TRUE_) { + _set_source_(ppt->index_tp_theta_tot) = ppw->rho_plus_p_theta/(pvecback[pba->index_bg_rho_tot]+pvecback[pba->index_bg_p_tot]) + + theta_shift; // N-body gauge correction + } + + /* total matter velocity (gauge-invariant, defined as in arXiv:1307.1459) */ if (ppt->has_source_theta_m == _TRUE_) { _set_source_(ppt->index_tp_theta_m) = ppw->theta_m; } + /* cdm and baryon velocity */ + if (ppt->has_source_theta_cb == _TRUE_) { + _set_source_(ppt->index_tp_theta_cb) = ppw->theta_cb; + } + + /* total velocity */ + if (ppt->has_source_theta_tot == _TRUE_) { + _set_source_(ppt->index_tp_theta_tot) = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot + + theta_shift; // N-body gauge correction + } + /* theta_g */ if (ppt->has_source_theta_g == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_theta_g) = y[ppw->pv->index_pt_theta_g]; + _set_source_(ppt->index_tp_theta_g) = y[ppw->pv->index_pt_theta_g] + + theta_shift; // N-body gauge correction else - _set_source_(ppt->index_tp_theta_g) = ppw->rsa_theta_g; + _set_source_(ppt->index_tp_theta_g) = ppw->rsa_theta_g + + theta_shift; // N-body gauge correction } /* theta_baryon */ if (ppt->has_source_theta_b == _TRUE_) { - _set_source_(ppt->index_tp_theta_b) = y[ppw->pv->index_pt_theta_b]; + _set_source_(ppt->index_tp_theta_b) = y[ppw->pv->index_pt_theta_b] + + theta_shift; // N-body gauge correction } /* theta_cdm */ if (ppt->has_source_theta_cdm == _TRUE_) { - _set_source_(ppt->index_tp_theta_cdm) = y[ppw->pv->index_pt_theta_cdm]; + _set_source_(ppt->index_tp_theta_cdm) = y[ppw->pv->index_pt_theta_cdm] + + theta_shift; // N-body gauge correction + } + + /* theta_idm_dr */ + if (ppt->has_source_theta_idm_dr == _TRUE_) { + _set_source_(ppt->index_tp_theta_idm_dr) = y[ppw->pv->index_pt_theta_idm_dr] + + theta_shift; // N-body gauge correction } /* theta_dcdm */ if (ppt->has_source_theta_dcdm == _TRUE_) { - _set_source_(ppt->index_tp_theta_dcdm) = y[ppw->pv->index_pt_theta_dcdm]; + _set_source_(ppt->index_tp_theta_dcdm) = y[ppw->pv->index_pt_theta_dcdm] + + theta_shift; // N-body gauge correction } /* theta_fld */ if (ppt->has_source_theta_fld == _TRUE_) { - _set_source_(ppt->index_tp_theta_fld) = y[ppw->pv->index_pt_theta_fld]; + + class_call(background_w_fld(pba,a_rel*pba->a_today,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + + _set_source_(ppt->index_tp_theta_fld) = ppw->rho_plus_p_theta_fld/(1.+w_fld)/pvecback[pba->index_bg_rho_fld] + + theta_shift; // N-body gauge correction } /* theta_scf */ if (ppt->has_source_theta_scf == _TRUE_) { + rho_plus_p_theta_scf = 1./3.* k*k/a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_scf]; - _set_source_(ppt->index_tp_theta_scf) = rho_plus_p_theta_scf/ - (pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]); + + _set_source_(ppt->index_tp_theta_scf) = rho_plus_p_theta_scf/(pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]) + + theta_shift; // N-body gauge correction } /* theta_dr */ if (ppt->has_source_theta_dr == _TRUE_) { + f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; - _set_source_(ppt->index_tp_theta_dr) = 3./4.*k*y[ppw->pv->index_pt_F0_dr+1]/f_dr; + + _set_source_(ppt->index_tp_theta_dr) = 3./4.*k*y[ppw->pv->index_pt_F0_dr+1]/f_dr + + theta_shift; // N-body gauge correction } /* theta_ur */ if (ppt->has_source_theta_ur == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_theta_ur) = y[ppw->pv->index_pt_theta_ur]; + _set_source_(ppt->index_tp_theta_ur) = y[ppw->pv->index_pt_theta_ur] + + theta_shift; // N-body gauge correction + else + _set_source_(ppt->index_tp_theta_ur) = ppw->rsa_theta_ur + + theta_shift; // N-body gauge correction + } + + /* theta_idr */ + if (ppt->has_source_theta_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) + _set_source_(ppt->index_tp_theta_idr) = y[ppw->pv->index_pt_theta_idr] + + theta_shift; // N-body gauge correction else - _set_source_(ppt->index_tp_theta_ur) = ppw->rsa_theta_ur; + _set_source_(ppt->index_tp_theta_idr) = ppw->rsa_theta_idr + + theta_shift; // N-body gauge correction } /* theta_ncdm1 */ if (ppt->has_source_theta_ncdm == _TRUE_) { - for (index_type = ppt->index_tp_theta_ncdm1; index_type < ppt->index_tp_theta_ncdm1+pba->N_ncdm; index_type++) { - _set_source_(index_type) = ppw->theta_ncdm[index_type - ppt->index_tp_theta_ncdm1]; + for (index_tp = ppt->index_tp_theta_ncdm1; index_tp < ppt->index_tp_theta_ncdm1+pba->N_ncdm; index_tp++) { + _set_source_(index_tp) = ppw->theta_ncdm[index_tp - ppt->index_tp_theta_ncdm1] + + theta_shift; // N-body gauge correction } } } @@ -6187,20 +7708,24 @@ int perturb_print_variables(double tau, /** - define local variables */ double k; int index_md; - //struct precision * ppr; + + struct precision * ppr; struct background * pba; struct thermo * pth; struct perturbs * ppt; struct perturb_workspace * ppw; double * pvecback; + double * pvecthermo; double * pvecmetric; double delta_g,theta_g,shear_g,l4_g,pol0_g,pol1_g,pol2_g,pol4_g; double delta_b,theta_b; double delta_cdm=0.,theta_cdm=0.; + double delta_idm_dr=0.,theta_idm_dr=0.; double delta_dcdm=0.,theta_dcdm=0.; double delta_dr=0.,theta_dr=0.,shear_dr=0., f_dr=1.0; double delta_ur=0.,theta_ur=0.,shear_ur=0.,l4_ur=0.; + double delta_idr=0., theta_idr=0., shear_idr=0.; double delta_rho_scf=0., rho_plus_p_theta_scf=0.; double delta_scf=0., theta_scf=0.; /** - ncdm sector begins */ @@ -6227,14 +7752,51 @@ int perturb_print_variables(double tau, pppaw = parameters_and_workspace; k = pppaw->k; index_md = pppaw->index_md; - //ppr = pppaw->ppr; + + ppr = pppaw->ppr; pba = pppaw->pba; pth = pppaw->pth; ppt = pppaw->ppt; ppw = pppaw->ppw; pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; pvecmetric = ppw->pvecmetric; + /** - update background/thermo quantities in this point */ + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_closeby, + &(ppw->last_index_back), + pvecback), + pba->error_message, + error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., + pth->inter_closeby, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + /** - update metric perturbations in this point */ + + class_call(perturb_einstein(ppr, + pba, + pth, + ppt, + index_md, + k, + tau, + y, + ppw), + ppt->error_message, + error_message); + a = pvecback[pba->index_bg_a]; a2 = a*a; H = pvecback[pba->index_bg_H]; @@ -6267,11 +7829,11 @@ int perturb_print_variables(double tau, if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { if (ppw->approx[ppw->index_ap_tca]==(int)tca_on) { shear_g = ppw->tca_shear_g; - //l3_g = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + //l3_g = 6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; pol0_g = 2.5*ppw->tca_shear_g; - pol1_g = 7./12.*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + pol1_g = 7./12.*6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; pol2_g = 0.5*ppw->tca_shear_g; - //pol3_g = 0.25*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + //pol3_g = 0.25*6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; } else { shear_g = y[ppw->pv->index_pt_shear_g]; @@ -6307,6 +7869,34 @@ int perturb_print_variables(double tau, delta_b = y[ppw->pv->index_pt_delta_b]; theta_b = y[ppw->pv->index_pt_theta_b]; + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + delta_idr = y[ppw->pv->index_pt_delta_idr]; + theta_idr = y[ppw->pv->index_pt_theta_idr]; + + if(ppt->idr_nature == idr_free_streaming){ + if((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + shear_idr = ppw->tca_shear_idm_dr; + } + else{ + shear_idr = y[ppw->pv->index_pt_shear_idr]; + } + } + } + else{ + delta_idr = ppw->rsa_delta_idr; + theta_idr = ppw->rsa_theta_idr; + shear_idr = 0.; + } + } + + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + delta_idm_dr = y[ppw->pv->index_pt_delta_idm_dr]; + theta_idm_dr = y[ppw->pv->index_pt_theta_idm_dr]; + } + if (pba->has_cdm == _TRUE_) { delta_cdm = y[ppw->pv->index_pt_delta_cdm]; @@ -6390,11 +7980,6 @@ int perturb_print_variables(double tau, (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); delta_p_over_delta_rho_ncdm[n_ncdm] = delta_p_ncdm/rho_delta_ncdm; - if (delta_p_over_delta_rho_ncdm[n_ncdm] < -0.5){ - FILE * fid = fopen("integrand.dat","w"); - - fclose(fid); - } } } } @@ -6406,6 +7991,7 @@ int perturb_print_variables(double tau, } + if (pba->has_dr == _TRUE_) { f_dr = pow(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; delta_dr = y[ppw->pv->index_pt_F0_dr]/f_dr; @@ -6450,6 +8036,11 @@ int perturb_print_variables(double tau, theta_ur += k*k*alpha; } + if (pba->has_idr == _TRUE_) { + delta_idr -= 4. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_idr += k*k*alpha; + } + if (pba->has_dr == _TRUE_) { delta_dr += (-4.*a*H+a*pba->Gamma_dcdm*pvecback[pba->index_bg_rho_dcdm]/pvecback[pba->index_bg_rho_dr])*alpha; @@ -6461,9 +8052,14 @@ int perturb_print_variables(double tau, theta_cdm += k*k*alpha; } + if (pba->has_idm_dr == _TRUE_) { + delta_idm_dr -= 3. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_idm_dr += k*k*alpha; + } + if (pba->has_ncdm == _TRUE_) { for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ - /** - --> Do gauge transformation of delta, deltaP/rho (?) and theta using -= 3aH(1+w_ncdm) alpha for delta. */ + /** - --> TODO: gauge transformation of delta, deltaP/rho (?) and theta using -= 3aH(1+w_ncdm) alpha for delta. */ } } @@ -6516,6 +8112,14 @@ int perturb_print_variables(double tau, class_store_double(dataptr, delta_ur, pba->has_ur, storeidx); class_store_double(dataptr, theta_ur, pba->has_ur, storeidx); class_store_double(dataptr, shear_ur, pba->has_ur, storeidx); + /* Interacting dark radiation */ + class_store_double(dataptr, delta_idr, pba->has_idr, storeidx); + class_store_double(dataptr, theta_idr, pba->has_idr, storeidx); + if ((pba->has_idr==_TRUE_) && (ppt->idr_nature == idr_free_streaming)) + class_store_double(dataptr, shear_idr, _TRUE_, storeidx); + /* Interacting dark matter */ + class_store_double(dataptr, delta_idm_dr, pba->has_idm_dr, storeidx); + class_store_double(dataptr, theta_idm_dr, pba->has_idm_dr, storeidx); /* Cold dark matter */ class_store_double(dataptr, delta_cdm, pba->has_cdm, storeidx); class_store_double(dataptr, theta_cdm, pba->has_cdm, storeidx); @@ -6538,7 +8142,10 @@ int perturb_print_variables(double tau, /* Scalar field scf*/ class_store_double(dataptr, delta_scf, pba->has_scf, storeidx); class_store_double(dataptr, theta_scf, pba->has_scf, storeidx); - + /** Fluid */ + class_store_double(dataptr, ppw->delta_rho_fld, pba->has_fld, storeidx); + class_store_double(dataptr, ppw->rho_plus_p_theta_fld, pba->has_fld, storeidx); + class_store_double(dataptr, ppw->delta_p_fld, pba->has_fld, storeidx); //fprintf(ppw->perturb_output_file,"\n"); } @@ -6556,10 +8163,10 @@ int perturb_print_variables(double tau, pol4_g = y[ppw->pv->index_pt_pol0_g+4]; } else { - delta_g = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + delta_g = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/pvecthermo[pth->index_th_dkappa]; //TBC shear_g = 0.; l4_g = 0.; - pol0_g = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + pol0_g = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/pvecthermo[pth->index_th_dkappa]; //TBC pol2_g = 0.; pol4_g = 0.; } @@ -6671,7 +8278,7 @@ int perturb_print_variables(double tau, return _SUCCESS_; - } +} /** * Compute derivative of all perturbations to be integrated @@ -6729,7 +8336,8 @@ int perturb_derivs(double tau, /* short-cut notations for the perturbations */ double delta_g=0.,theta_g=0.,shear_g=0.; double delta_b,theta_b; - double cb2,cs2,ca2; + double delta_idr=0., theta_idr=0.; + double cb2,cs2,ca2,delta_p_b_over_rho_b; double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_ufa_class=0.; /* perturbed recombination (just to simplify the notation) */ @@ -6745,7 +8353,7 @@ int perturb_derivs(double tau, double P0,P1,P2; /* for use with fluid (fld): */ - double w,w_prime; + double w_fld,dw_over_da_fld,w_prime_fld,integral_fld; /* for use with non-cold dark matter (ncdm): */ int index_q,n_ncdm,idx; @@ -6759,6 +8367,8 @@ int perturb_derivs(double tau, /* for use with dcdm and dr */ double f_dr, fprime_dr; + double Sinv=0., dmu_idm_dr=0., dmu_idr=0., tca_slip_idm_dr=0.; + /** - rename the fields of the input structure (just to avoid heavy notations) */ pppaw = parameters_and_workspace; @@ -6819,6 +8429,12 @@ int perturb_derivs(double tau, a_prime_over_a = pvecback[pba->index_bg_H] * a; R = 4./3. * pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b]; + if((pba->has_idm_dr==_TRUE_)){ + Sinv = 4./3. * pvecback[pba->index_bg_rho_idr]/ pvecback[pba->index_bg_rho_idm_dr]; + dmu_idm_dr = pvecthermo[pth->index_th_dmu_idm_dr]; + dmu_idr = pth->b_idr/pth->a_idm_dr*pba->Omega0_idr/pba->Omega0_idm_dr*dmu_idm_dr; + } + /** - Compute 'generalised cotK function of argument \f$ \sqrt{|K|}*\tau \f$, for closing hierarchy. (see equation 2.34 in arXiv:1305.3261): */ if (pba->has_curvature == _FALSE_){ @@ -6842,15 +8458,26 @@ int perturb_derivs(double tau, delta_g = y[pv->index_pt_delta_g]; theta_g = y[pv->index_pt_theta_g]; } + + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + delta_idr = y[pv->index_pt_delta_idr]; + theta_idr = y[pv->index_pt_theta_idr]; + } + } + delta_b = y[pv->index_pt_delta_b]; theta_b = y[pv->index_pt_theta_b]; cb2 = pvecthermo[pth->index_th_cb2]; + delta_p_b_over_rho_b = cb2*delta_b; /* for baryons, (delta p)/rho with Ma & Bertschinger approximation: sound speed = adiabatic sound speed */ /** - --> (b) perturbed recombination **/ if ((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca]==(int)tca_off)){ delta_temp= y[ppw->pv->index_pt_perturbed_recombination_delta_temp]; + delta_p_b_over_rho_b = pvecthermo[pth->index_th_wb]*(delta_b+delta_temp); /* for baryons, (delta p)/rho with sound speed from arXiv:0707.2727 */ + delta_chi= y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; chi=pvecthermo[pth->index_th_xe]; @@ -6885,19 +8512,19 @@ int perturb_derivs(double tau, /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) - - Each continuity equation contains a term in (theta+metric_continuity) with - metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge - - Each Euler equation contains a source term metric_euler with - metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge - - Each shear derivative equation contains a source term metric_shear equal to - metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge - - metric_shear_prime is the derivative of metric_shear + - metric_shear_prime is the derivative of metric_shear - - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, - (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ if (ppt->gauge == synchronous) { @@ -6924,9 +8551,14 @@ int perturb_derivs(double tau, theta_g = ppw->rsa_theta_g; } - /** - --> (e) BEGINNING OF ACTUAL SYSTEM OF EQUATIONS OF EVOLUTION */ + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on){ + delta_idr = ppw->rsa_delta_idr; + theta_idr = ppw->rsa_theta_idr; + } + } - /* Note concerning perturbed recombination: $cb2*delta_b$ must be replaced everywhere by $cb2*(delta_b+delta_temp)$. If perturbed recombination is not required, delta_temp is equal to zero. */ + /** - --> (e) BEGINNING OF ACTUAL SYSTEM OF EQUATIONS OF EVOLUTION */ /** - ---> photon temperature density */ @@ -6950,7 +8582,7 @@ int perturb_derivs(double tau, dy[pv->index_pt_theta_b] = - a_prime_over_a*theta_b + metric_euler - + k2*cb2*(delta_b+delta_temp) + + k2*delta_p_b_over_rho_b + R*pvecthermo[pth->index_th_dkappa]*(theta_g-theta_b); } @@ -6965,7 +8597,7 @@ int perturb_derivs(double tau, /* perturbed recombination has an impact **/ dy[pv->index_pt_theta_b] = (-a_prime_over_a*theta_b - +k2*(cb2*(delta_b+delta_temp)+R*(delta_g/4.-s2_squared*ppw->tca_shear_g)) + +k2*(delta_p_b_over_rho_b+R*(delta_g/4.-s2_squared*ppw->tca_shear_g)) +R*ppw->tca_slip)/(1.+R) +metric_euler; @@ -7058,7 +8690,7 @@ int perturb_derivs(double tau, /* perturbed recombination has an impact **/ dy[pv->index_pt_theta_g] = - -(dy[pv->index_pt_theta_b]+a_prime_over_a*theta_b-cb2*k2*(delta_b+delta_temp))/R + -(dy[pv->index_pt_theta_b]+a_prime_over_a*theta_b-k2*delta_p_b_over_rho_b)/R +k2*(0.25*delta_g-s2_squared*ppw->tca_shear_g)+(1.+R)/R*metric_euler; } } @@ -7080,7 +8712,36 @@ int perturb_derivs(double tau, if (ppt->gauge == synchronous) { dy[pv->index_pt_delta_cdm] = -metric_continuity; /* cdm density */ } + } + + /** - ---> idr */ + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + dy[pv->index_pt_delta_idr] = -4./3.*(theta_idr + metric_continuity); + } + } + + /** - ---> idm_dr */ + if (pba->has_idm_dr == _TRUE_){ + + dy[pv->index_pt_delta_idm_dr] = -(y[pv->index_pt_theta_idm_dr]+metric_continuity); /* idm_dr density */ + + if (ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off) { + + dy[pv->index_pt_theta_idm_dr] = - a_prime_over_a*y[pv->index_pt_theta_idm_dr] + metric_euler; /* idm_dr velocity */ + dy[pv->index_pt_theta_idm_dr] -= (Sinv*dmu_idm_dr*(y[pv->index_pt_theta_idm_dr] - theta_idr) - k2*pvecthermo[pth->index_th_cidm_dr2]*y[pv->index_pt_delta_idm_dr]); + } + else{ + + tca_slip_idm_dr = (pth->nindex_idm_dr-2./(1.+Sinv))*a_prime_over_a*(y[pv->index_pt_theta_idm_dr]-theta_idr) + 1./(1.+Sinv)/dmu_idm_dr* + (-(pvecback[pba->index_bg_H_prime] * a + 2. * a_prime_over_a * a_prime_over_a) *y[pv->index_pt_theta_idm_dr] - a_prime_over_a * + (.5*k2*delta_idr + metric_euler) + k2*(pvecthermo[pth->index_th_cidm_dr2]*dy[pv->index_pt_delta_idm_dr] - 1./4.*dy[pv->index_pt_delta_idr])); + ppw->tca_shear_idm_dr = 0.5*8./15./dmu_idm_dr/ppt->alpha_idm_dr[0]*(y[pv->index_pt_theta_idm_dr]+metric_shear); + + dy[pv->index_pt_theta_idm_dr] = 1./(1.+Sinv)*(- a_prime_over_a*y[pv->index_pt_theta_idm_dr] + k2*pvecthermo[pth->index_th_cidm_dr2]* + y[pv->index_pt_delta_idm_dr] + k2*Sinv*(delta_idr/4. - ppw->tca_shear_idm_dr)) + metric_euler + Sinv/(1.+Sinv)*tca_slip_idm_dr; + } } /* perturbed recombination */ @@ -7088,11 +8749,13 @@ int perturb_derivs(double tau, if((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca] == (int)tca_off)){ - // alpha * n_H is in inverse seconds, so we have to multiply it by Mpc_in_sec + /* alpha * n_H is in inverse seconds, so we have to multiply it by Mpc_in_sec */ dy[ppw->pv->index_pt_perturbed_recombination_delta_chi] = - alpha_rec* a * chi*n_H *(delta_alpha_rec + delta_chi + delta_b) * _Mpc_over_m_ / _c_ ; - // see the documentation for this formula - dy[ppw->pv->index_pt_perturbed_recombination_delta_temp] = 2./3. * dy[ppw->pv->index_pt_delta_b] - a * Compton_CR * pow(pba->T_cmb/a, 4) * chi / (1.+chi+fHe) * ( (1.-pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb])*(delta_g + delta_chi*(1.+fHe)/(1.+chi+fHe)) + pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb] *(delta_temp - 1./4. * delta_g) ); + /* see the documentation for this formula */ + dy[ppw->pv->index_pt_perturbed_recombination_delta_temp] = 2./3. * dy[ppw->pv->index_pt_delta_b] - a * Compton_CR + * pow(pba->T_cmb/a, 4) * chi / (1.+chi+fHe) * ( (1.-pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb])*(delta_g + delta_chi*(1.+fHe)/(1.+chi+fHe)) + + pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb] *(delta_temp - 1./4. * delta_g) ); } @@ -7153,27 +8816,34 @@ int perturb_derivs(double tau, if (pba->has_fld == _TRUE_) { - /** - ----> factors w, w_prime, adiabatic sound speed ca2 (all three background-related), - plus actual sound speed in the fluid rest frame cs2 */ + if (pba->use_ppf == _FALSE_){ - w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); - w_prime = - pba->wa_fld * a / pba->a_today * a_prime_over_a; - ca2 = w - w_prime / 3. / (1.+w) / a_prime_over_a; - cs2 = pba->cs2_fld; + /** - ----> factors w, w_prime, adiabatic sound speed ca2 (all three background-related), + plus actual sound speed in the fluid rest frame cs2 */ - /** - ----> fluid density */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + w_prime_fld = dw_over_da_fld * a_prime_over_a * a; - dy[pv->index_pt_delta_fld] = - -(1+w)*(y[pv->index_pt_theta_fld]+metric_continuity) - -3.*(cs2-w)*a_prime_over_a*y[pv->index_pt_delta_fld] - -9.*(1+w)*(cs2-ca2)*a_prime_over_a*a_prime_over_a*y[pv->index_pt_theta_fld]/k2; + ca2 = w_fld - w_prime_fld / 3. / (1.+w_fld) / a_prime_over_a; + cs2 = pba->cs2_fld; - /** - ----> fluid velocity */ + /** - ----> fluid density */ - dy[pv->index_pt_theta_fld] = /* fluid velocity */ - -(1.-3.*cs2)*a_prime_over_a*y[pv->index_pt_theta_fld] - +cs2*k2/(1.+w)*y[pv->index_pt_delta_fld] - +metric_euler; + dy[pv->index_pt_delta_fld] = + -(1+w_fld)*(y[pv->index_pt_theta_fld]+metric_continuity) + -3.*(cs2-w_fld)*a_prime_over_a*y[pv->index_pt_delta_fld] + -9.*(1+w_fld)*(cs2-ca2)*a_prime_over_a*a_prime_over_a*y[pv->index_pt_theta_fld]/k2; + + /** - ----> fluid velocity */ + + dy[pv->index_pt_theta_fld] = /* fluid velocity */ + -(1.-3.*cs2)*a_prime_over_a*y[pv->index_pt_theta_fld] + +cs2*k2/(1.+w_fld)*y[pv->index_pt_delta_fld] + +metric_euler; + } + else { + dy[pv->index_pt_Gamma_fld] = ppw->Gamma_prime_fld; /* Gamma variable of PPF formalism */ + } } @@ -7192,6 +8862,57 @@ int perturb_derivs(double tau, - (k2 + a2*pvecback[pba->index_bg_ddV_scf])*y[pv->index_pt_phi_scf]; //checked } + /** - ---> interacting dark radiation */ + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))) { + + /** - ----> idr velocity */ + if(ppt->idr_nature == idr_free_streaming) + dy[pv->index_pt_theta_idr] = k2*(y[pv->index_pt_delta_idr]/4.-s2_squared*y[pv->index_pt_shear_idr]) + metric_euler; + else + dy[pv->index_pt_theta_idr] = k2/4. * y[pv->index_pt_delta_idr] + metric_euler; + + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_theta_idr] += dmu_idm_dr*(y[pv->index_pt_theta_idm_dr]-y[pv->index_pt_theta_idr]); + + if(ppt->idr_nature == idr_free_streaming){ + + /** - ----> exact idr shear */ + l = 2; + dy[pv->index_pt_shear_idr] = 0.5*(8./15.*(y[pv->index_pt_theta_idr]+metric_shear)-3./5.*k*s_l[3]/s_l[2]*y[pv->index_pt_shear_idr+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_shear_idr]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_shear_idr]; + + /** - ----> exact idr l=3 */ + l = 3; + dy[pv->index_pt_l3_idr] = k/(2.*l+1.)*(l*2.*s_l[l]*s_l[2]*y[pv->index_pt_shear_idr]-(l+1.)*s_l[l+1]*y[pv->index_pt_l3_idr+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_l3_idr]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_l3_idr]; + + /** - ----> exact idr l>3 */ + for (l = 4; l < pv->l_max_idr; l++) { + dy[pv->index_pt_delta_idr+l] = k/(2.*l+1)*(l*s_l[l]*y[pv->index_pt_delta_idr+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_delta_idr+l+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_delta_idr+l]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_delta_idr+l]; + } + + /** - ----> exact idr lmax_dr */ + l = pv->l_max_idr; + dy[pv->index_pt_delta_idr+l] = k*(s_l[l]*y[pv->index_pt_delta_idr+l-1]-(1.+l)*cotKgen*y[pv->index_pt_delta_idr+l]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_delta_idr+l]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_delta_idr+l]; + } + } + else{ + dy[pv->index_pt_theta_idr] = 1./(1.+Sinv)*(- a_prime_over_a*y[pv->index_pt_theta_idm_dr] + k2*pvecthermo[pth->index_th_cidm_dr2]*y[pv->index_pt_delta_idm_dr] + + k2*Sinv*(1./4.*y[pv->index_pt_delta_idr] - ppw->tca_shear_idm_dr)) + metric_euler - 1./(1.+Sinv)*tca_slip_idm_dr; + + } + } + } /** - ---> ultra-relativistic neutrino/relics (ur) */ @@ -7735,6 +9456,15 @@ int perturb_derivs(double tau, return _SUCCESS_; } +/** + * Compute the baryon-photon slip (theta_g - theta_b)' and the photon + * shear in the tight-coupling approximation + * + * @param y Input: vector of perturbations + * @param parameters_and_workspace Input/Output: in input, fixed parameters (e.g. indices); in output, slip and shear + * @param error_message Output: error message + */ + int perturb_tca_slip_and_shear(double * y, void * parameters_and_workspace, ErrorMsg error_message @@ -7773,9 +9503,6 @@ int perturb_tca_slip_and_shear(double * y, double cb2; double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_shear_prime=0.; - /* perturbed recombination */ - double delta_temp=0.; - /* for use with curvature */ double s2_squared; @@ -7814,11 +9541,9 @@ int perturb_tca_slip_and_shear(double * y, delta_b = y[pv->index_pt_delta_b]; theta_b = y[pv->index_pt_theta_b]; cb2 = pvecthermo[pth->index_th_cb2]; - - /* perturbed recombination */ - if ((ppt->has_perturbed_recombination == _TRUE_) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off) ){ - delta_temp = y[pv->index_pt_perturbed_recombination_delta_temp]; - } + /* during TCA one can show that sound speed = adiabatic sound speed, + so no need to take into account corrections from perturbed + recombination here */ /** - --> (b) define short-cut notations used only in tight-coupling approximation */ tau_c = 1./pvecthermo[pth->index_th_dkappa]; /* inverse of opacity */ @@ -7836,19 +9561,19 @@ int perturb_tca_slip_and_shear(double * y, /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) - - Each continuity equation contains a term in (theta+metric_continuity) with - metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge - - Each Euler equation contains a source term metric_euler with - metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge - - Each shear derivative equation contains a source term metric_shear equal to - metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge - - metric_shear_prime is the derivative of metric_shear + - metric_shear_prime is the derivative of metric_shear - - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, - (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ if (ppt->gauge == synchronous) { @@ -7916,8 +9641,7 @@ int perturb_tca_slip_and_shear(double * y, was already consistently included in CAMB) */ /** - ---> intermediate quantities for 2nd order tca: zero order for theta_b' = theta_g' */ - /** - ----> perturbed recombination has an impact **/ - theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*(delta_b+delta_temp)+R/4.*delta_g))/(1.+R) + metric_euler; + theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*delta_b+R/4.*delta_g))/(1.+R) + metric_euler; /** - ---> intermediate quantities for 2nd order tca: shear_g_prime at first order in tight-coupling */ shear_g_prime=16./45.*(tau_c*(theta_prime+metric_shear_prime)+dtau_c*(theta_g+metric_shear)); @@ -7957,9 +9681,8 @@ int perturb_tca_slip_and_shear(double * y, +( a_primeprime_over_a*a_prime_over_a*((2.-3.*cb2)*R-2.)*theta_b/(1.+R) +a_prime_over_a*k2*(1.-3.*cb2)*theta_b/3./(1.+R) - /* perturbed recombination has an impact (next two lines) */ - +a_primeprime_over_a*k2*cb2*(delta_b+delta_temp)/(1.+R) - +k2*k2*(3.*cb2-1.)*cb2*(delta_b+delta_temp)/3./(1.+R) + +a_primeprime_over_a*k2*cb2*delta_b/(1.+R) + +k2*k2*(3.*cb2-1.)*cb2*delta_b/3./(1.+R) +k2*k2*R*(3.*cb2-1.)*delta_g/12./(1.+R) +a_primeprime_over_a*k2*(2.+3.*R)*delta_g/4./(1.+R) +a_prime_over_a*a_prime_over_a*k2*((2.-3.*cb2)*R-1.)*delta_g/2./(1.+R) @@ -8033,6 +9756,23 @@ int perturb_tca_slip_and_shear(double * y, } +/** + * Compute the density delta and velocity theta of photons and + * ultra-relativistic neutrinos in the radiation streaming + * approximation + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param k Input: wavenumber + * @param y Input: vector of perturbations + * @param a_prime_over_a Input: a'/a + * @param pvecthermo Input: vector of thermodynamics quantites + * @param ppw Input/Output: in input, fixed parameters (e.g. indices); in output, delta and theta + * @param error_message Output: error message + */ + int perturb_rsa_delta_and_theta( struct precision * ppr, struct background * pba, @@ -8050,47 +9790,47 @@ int perturb_rsa_delta_and_theta( k2 = k*k; + class_test(ppw->approx[ppw->index_ap_rsa] == (int)rsa_off, + "this function should not have been called now, bug was introduced", + ppt->error_message, + ppt->error_message); + // formulas below TBC for curvaturema /* newtonian gauge */ if (ppt->gauge == newtonian) { - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { - - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_g = 0.; - ppw->rsa_theta_g = 0.; - } - else { + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + ppw->rsa_delta_g = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_g = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + } - ppw->rsa_delta_g = -4.*y[ppw->pv->index_pt_phi]; + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { - ppw->rsa_theta_g = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; - } + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_b]; - if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + +k2*y[ppw->pv->index_pt_phi])); + } - ppw->rsa_delta_g += - -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_b]; + if (pba->has_ur == _TRUE_) { - ppw->rsa_theta_g += - 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]*y[ppw->pv->index_pt_theta_b] - +ppw->pvecthermo[pth->index_th_dkappa]* - (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] - +ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] - +k2*y[ppw->pv->index_pt_phi])); + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; } - - if (pba->has_ur == _TRUE_) { - - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_ur = 0.; - ppw->rsa_theta_ur = 0.; - } - else { - ppw->rsa_delta_ur = -4.*y[ppw->pv->index_pt_phi]; - ppw->rsa_theta_ur = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; - } + else { + ppw->rsa_delta_ur = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_ur = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; } } } @@ -8098,47 +9838,117 @@ int perturb_rsa_delta_and_theta( /* synchronous gauge */ if (ppt->gauge == synchronous) { - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + + ppw->rsa_delta_g = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_g = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + } + + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_b]+0.5*ppw->pvecmetric[ppw->index_mt_h_prime]); + + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]* + (y[ppw->pv->index_pt_theta_b] + +0.5*ppw->pvecmetric[ppw->index_mt_h_prime]) + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + + ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + -a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + +k2*y[ppw->pv->index_pt_eta])); + } + + if (pba->has_ur == _TRUE_) { if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_g = 0.; - ppw->rsa_theta_g = 0.; + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; } else { - - ppw->rsa_delta_g = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - -k2*y[ppw->pv->index_pt_eta]); - ppw->rsa_theta_g = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + ppw->rsa_delta_ur = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_ur = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; } + } + } - if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + /* update total delta and theta given rsa approximation results */ - ppw->rsa_delta_g += - -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_b]+0.5*ppw->pvecmetric[ppw->index_mt_h_prime]); + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_delta_g; + ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_delta_g; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_theta_g; - ppw->rsa_theta_g += - 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]* - (y[ppw->pv->index_pt_theta_b] - +0.5*ppw->pvecmetric[ppw->index_mt_h_prime]) - +ppw->pvecthermo[pth->index_th_dkappa]* - (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] - + ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] - -a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - +k2*y[ppw->pv->index_pt_eta])); - } + if (pba->has_ur == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_delta_ur; + ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_delta_ur; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_theta_ur; + } - if (pba->has_ur == _TRUE_) { + return _SUCCESS_; + +} + +/** + * Compute the density delta and velocity theta of interacting dark + * radiation in its streaming approximation + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param k Input: wavenumber + * @param y Input: vector of perturbations + * @param a_prime_over_a Input: a'/a + * @param pvecthermo Input: vector of thermodynamics quantites + * @param ppw Input/Output: in input, fixed parameters (e.g. indices); in output, delta and theta + * @param error_message Output: error message + */ + +int perturb_rsa_idr_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ) { + /* - define local variables */ + + double k2; + + k2 = k*k; + + // formulas below TBC for curvaturema + + /* newtonian gauge */ + if (ppt->gauge == newtonian) { + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on) { + + ppw->rsa_delta_idr = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_idr = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + + } + } + + if (ppt->gauge == synchronous) { + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on) { + + ppw->rsa_delta_idr = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_idr = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_ur = 0.; - ppw->rsa_theta_ur = 0.; - } - else { - ppw->rsa_delta_ur = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - -k2*y[ppw->pv->index_pt_eta]); - ppw->rsa_theta_ur = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; - } - } } } diff --git a/class/source/primordial.c b/class/source/primordial.c old mode 100644 new mode 100755 index 41613131..83bcc860 --- a/class/source/primordial.c +++ b/class/source/primordial.c @@ -458,11 +458,11 @@ int primordial_init( /** - expression for alpha_s comes from: - `ns_2 = (lnpk_plus-lnpk_pivot)/(dlnk)+1` + `ns_2 = (lnpk_plus-lnpk_pivot)/(dlnk)+1` - `ns_1 = (lnpk_pivot-lnpk_minus)/(dlnk)+1` + `ns_1 = (lnpk_pivot-lnpk_minus)/(dlnk)+1` - `alpha_s = dns/dlnk = (ns_2-ns_1)/dlnk = (lnpk_plus-lnpk_pivot-lnpk_pivot+lnpk_minus)/(dlnk)/(dlnk)` + `alpha_s = dns/dlnk = (ns_2-ns_1)/dlnk = (lnpk_plus-lnpk_pivot-lnpk_pivot+lnpk_minus)/(dlnk)/(dlnk)` **/ @@ -485,8 +485,8 @@ int primordial_init( /** - expression for beta_s: - `ppm->beta_s = (alpha_plus-alpha_minus)/dlnk = (lnpk_plusplus-2.*lnpk_plus+lnpk_pivot - - (lnpk_pivot-2.*lnpk_minus+lnpk_minusminus)/pow(dlnk,3)` + `ppm->beta_s = (alpha_plus-alpha_minus)/dlnk = (lnpk_plusplus-2.*lnpk_plus+lnpk_pivot - + (lnpk_pivot-2.*lnpk_minus+lnpk_minusminus)/pow(dlnk,3)` **/ /* Simplification of the beta_s expression: */ @@ -1433,9 +1433,9 @@ int primordial_inflation_solve_inflation( else if (ppm->behavior == analytical) { class_call_except(primordial_inflation_analytic_spectra(ppt, - ppm, - ppr, - y_ini), + ppm, + ppr, + y_ini), ppm->error_message, ppm->error_message, free(y);free(y_ini);free(dy)); @@ -1649,7 +1649,7 @@ int primordial_inflation_spectra( tspent += tstop-tstart; #endif - } + } #ifdef _OPENMP if (ppm->primordial_verbose>1) @@ -1708,7 +1708,7 @@ int primordial_inflation_one_wavenumber( y[ppm->index_in_dphi] = y_ini[ppm->index_in_dphi]; /** - evolve the background until the relevant initial time for - integrating perturbations */ + integrating perturbations */ class_call(primordial_inflation_evolve_background(ppm, ppr, y, @@ -1722,7 +1722,7 @@ int primordial_inflation_one_wavenumber( ppm->error_message); /** - evolve the background/perturbation equations from this time and - until some time after Horizon crossing */ + until some time after Horizon crossing */ class_call(primordial_inflation_one_k(ppm, ppr, k, @@ -2700,7 +2700,7 @@ int primordial_inflation_find_phi_pivot( case N_star: - class_call(primordial_inflation_evolve_background(ppm, + class_call(primordial_inflation_evolve_background(ppm, ppr, y, dy, @@ -2893,7 +2893,7 @@ int primordial_inflation_find_phi_pivot( case N_star: - class_call(primordial_inflation_evolve_background(ppm, + class_call(primordial_inflation_evolve_background(ppm, ppr, y, dy, diff --git a/class/source/spectra.c b/class/source/spectra.c old mode 100644 new mode 100755 index fdc6344f..3cedcde6 --- a/class/source/spectra.c +++ b/class/source/spectra.c @@ -1,79 +1,19 @@ /** @file spectra.c Documented spectra module * - * Julien Lesgourgues, 25.08.2010 + * Julien Lesgourgues, 1.11.2019 * - * This module computes the anisotropy and Fourier power spectra - * \f$ C_l^{X}, P(k), ... \f$'s given the transfer and Bessel functions - * (for anisotropy spectra), the source functions (for Fourier spectra) - * and the primordial spectra. + * This module computes the harmonic power spectra \f$ C_l^{X} \f$'s + * given the transfer functions and the primordial spectra. * * The following functions can be called from other modules: * * -# spectra_init() at the beginning (but after transfer_init()) - * -# spectra_cl_at_l() at any time for computing \f$ C_l \f$ at any l - * -# spectra_spectrum_at_z() at any time for computing P(k) at any z - * -# spectra_spectrum_at_k_and z() at any time for computing P at any k and z + * -# spectra_cl_at_l() at any time for computing individual \f$ C_l \f$'s at any l * -# spectra_free() at the end */ #include "spectra.h" - - -int spectra_bandpower(struct spectra * psp, - int l1, - int l2, - double * TT_II, - double * TT_RI, - double * TT_RR - ) { - - int l; - int index_md; - double * cl_tot; - double ** cl_md; - double ** cl_md_ic; - - class_alloc(cl_tot,psp->ct_size*sizeof(double),psp->error_message); - class_alloc(cl_md,psp->md_size*sizeof(double*),psp->error_message); - class_alloc(cl_md_ic,psp->md_size*sizeof(double*),psp->error_message); - for (index_md=0;index_mdmd_size; index_md++) { - class_alloc(cl_md[index_md],psp->ct_size*sizeof(double),psp->error_message); - class_alloc(cl_md_ic[index_md],psp->ct_size*psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); - } - - *TT_RR=0.; - *TT_RI=0.; - *TT_II=0.; - - for (l=l1; l<=l2; l++) { - - class_call(spectra_cl_at_l(psp, - (double)l, - cl_tot, - cl_md, - cl_md_ic), - psp->error_message, - psp->error_message); - - *TT_RR += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,0,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; - *TT_RI += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]*2.; - *TT_II += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(1,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; - - } - - for (index_md=0;index_mdmd_size; index_md++) { - free(cl_md[index_md]); - free(cl_md_ic[index_md]); - } - free(cl_tot); - free(cl_md); - free(cl_md_ic); - - return _SUCCESS_; - -} - /** * Anisotropy power spectra \f$ C_l\f$'s for all types, modes and initial conditions. * @@ -306,203 +246,116 @@ int spectra_cl_at_l( } /** - * Matter power spectrum for arbitrary redshift and for all initial conditions. - * - * This routine evaluates the matter power spectrum at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) - * - * - * Can be called in two modes: linear or logarithmic. - * - * - linear: returns P(k) (units: \f$ Mpc^3\f$) - * - * - logarithmic: returns \f$\ln{P(k)}\f$ - * - * One little subtlety: in case of several correlated initial conditions, - * the cross-correlation spectrum can be negative. Then, in logarithmic mode, - * the non-diagonal elements contain the cross-correlation angle \f$ P_{12}/\sqrt{P_{11} P_{22}}\f$ - * (from -1 to 1) instead of \f$\ln{P_{12}}\f$ - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. + * This routine initializes the spectra structure (in particular, + * computes table of anisotropy and Fourier spectra \f$ C_l^{X}, P(k), ... \f$) * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param mode Input: linear or logarithmic - * @param z Input: redshift - * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) - * @param output_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfer structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param psp Output: pointer to initialized spectra structure * @return the error status */ -int spectra_pk_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ - double * output_ic /* array with argument output_tot[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] (must be already allocated only if more than one initial condition) */ - ) { +int spectra_init( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl, + struct transfers * ptr, + struct spectra * psp + ) { /** Summary: */ - /** - define local variables */ - - int index_md; - int last_index; - int index_k; - double tau,ln_tau; - int index_ic1,index_ic2,index_ic1_ic2; - - index_md = psp->index_md_scalars; + /** - check that we really want to compute at least one spectrum */ - /** - first step: convert z into \f$\ln{\tau}\f$ */ + if (ppt->has_cls == _FALSE_) { + psp->md_size = 0; + if (psp->spectra_verbose > 0) + printf("No spectra requested. Spectra module skipped.\n"); + return _SUCCESS_; + } + else { + if (psp->spectra_verbose > 0) + printf("Computing unlensed harmonic spectra\n"); + } - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); + /** - initialize indices and allocate some of the arrays in the + spectra structure */ - class_test(tau <= 0., + class_call(spectra_indices(pba,ppt,ptr,ppm,psp), psp->error_message, - "negative or null value of conformal time: cannot interpolate"); - - ln_tau = log(tau); - - /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + psp->error_message); - /** - --> (a) if only values at tau=tau_today are stored and we want \f$ P(k,z=0)\f$, no need to interpolate */ + /** - deal with \f$ C_l\f$'s, if any */ - if (psp->ln_tau_size == 1) { + if (ppt->has_cls == _TRUE_) { - class_test(z != 0., + class_call(spectra_cls(pba,ppt,ptr,ppm,psp), psp->error_message, - "asked z=%e but only P(k,z=0) has been tabulated",z); + psp->error_message); - for (index_k=0; index_kln_k_size; index_k++) - if (psp->ic_size[index_md] == 1) { - output_tot[index_k] = psp->ln_pk[index_k]; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = - psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; - } - } } - - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ - else { - - if (psp->ic_ic_size[index_md] == 1) { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ddln_pk, - psp->ln_k_size, - ln_tau, - &last_index, - output_tot, - psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - - } - else { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ddln_pk, - psp->ic_ic_size[index_md]*psp->ln_k_size, - ln_tau, - &last_index, - output_ic, - psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - } + psp->ct_size=0; } - /** - third step: if there are several initial conditions, compute the total P(k) and set back all uncorrelated coefficients to exactly zero. Check positivity of total P(k). */ - - if (psp->ic_size[index_md] > 1) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = 0.; - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - if (index_ic1 == index_ic2) { - output_tot[index_k] += exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); - } - else { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - output_tot[index_k] += - 2. * output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] * - sqrt(exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]) * - exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])])); - } - else - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; - } - } - } - - class_test(output_tot[index_k] <= 0., - psp->error_message, - "for k=%e, z=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total=%e results negative", - exp(psp->ln_k[index_k]),z,output_tot[index_k]); + /** - a pointer to the nonlinear structure is stored in the spectra + structure. This odd, unusual and unelegant feature has been + introduced in v2.8 in order to keep in use some deprecated + functions spectra_pk_...() that are now pointing at new + function nonlinear_pk_...(). In the future, if the deprecated + functions are removed, it will be possible to remove also this + pointer. */ - } - } + psp->pnl = pnl; - /** - fourth step: depending on requested mode (linear or logarithmic), apply necessary transformation to the output arrays */ + return _SUCCESS_; +} - /** - --> (a) linear mode: if only one initial condition, convert output_pk to linear format; if several initial conditions, convert output_ic to linear format, output_tot is already in this format */ +/** + * This routine frees all the memory space allocated by spectra_init(). + * + * To be called at the end of each run, only when no further calls to + * spectra_cls_at_l(), spectra_pk_at_z(), spectra_pk_at_k_and_z() are needed. + * + * @param psp Input: pointer to spectra structure (which fields must be freed) + * @return the error status + */ - if (mode == linear) { +int spectra_free( + struct spectra * psp + ) { - if (psp->ic_size[index_md] == 1) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = exp(output_tot[index_k]); - } - } + int index_md; - else { - for (index_k=0; index_kln_k_size; index_k++) { - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); - } - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + if (psp->md_size > 0) { + if (psp->ct_size > 0) { - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] - *sqrt(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - } - } + for (index_md = 0; index_md < psp->md_size; index_md++) { + free(psp->l_max_ct[index_md]); + free(psp->cl[index_md]); + free(psp->ddcl[index_md]); } + free(psp->l); + free(psp->l_size); + free(psp->l_max_ct); + free(psp->l_max); + free(psp->cl); + free(psp->ddcl); } - } - /** - --> (b) logarithmic mode: if only one initial condition, nothing to be done; if several initial conditions, convert output_tot to logarithmic format, output_ic is already in this format */ + for (index_md=0; index_md < psp->md_size; index_md++) + free(psp->is_non_zero[index_md]); - else { + free(psp->is_non_zero); + free(psp->ic_size); + free(psp->ic_ic_size); - if (psp->ic_size[index_md] > 1) { - for (index_k=0; index_kln_k_size; index_k++) { - /* we have already checked above that output_tot was positive */ - output_tot[index_k] = log(output_tot[index_k]); - } - } } return _SUCCESS_; @@ -510,2993 +363,1300 @@ int spectra_pk_at_z( } /** - * Matter power spectrum for arbitrary wavenumber, redshift and initial condition. - * - * This routine evaluates the matter power spectrum at a given value of k and z by - * interpolating in a table of all P(k)'s computed at this z by spectra_pk_at_z() (when kmin <= k <= kmax), - * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): - * the latter case is an approximation, valid when kmin << comoving Hubble scale today. - * Returns zero when k=0. Returns an error when k<0 or k > kmax. - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. + * This routine defines indices and allocates tables in the spectra structure * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ - * @param pk_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3\f$ + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/output: pointer to spectra structure * @return the error status */ -int spectra_pk_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot, /* pointer to a single number (must be already allocated) */ - double * pk_ic /* array of argument pk_ic[index_ic1_ic2] (must be already allocated only if several initial conditions) */ - ) { - - /** Summary: */ - - /** - define local variables */ +int spectra_indices( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ){ + int index_ct; int index_md; - int index_k; - int last_index; - int index_ic1,index_ic2,index_ic1_ic2; + int index_ic1_ic2; - double * spectrum_at_z = NULL; - double * spectrum_at_z_ic = NULL; - double * spline; - double * pk_primordial_k = NULL; - double kmin; - double * pk_primordial_kmin = NULL; + psp->md_size = ppt->md_size; + if (ppt->has_scalars == _TRUE_) + psp->index_md_scalars = ppt->index_md_scalars; - index_md = psp->index_md_scalars; + class_alloc(psp->ic_size, + sizeof(int)*psp->md_size, + psp->error_message); - /** - first step: check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ + class_alloc(psp->ic_ic_size, + sizeof(int)*psp->md_size, + psp->error_message); - class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); + class_alloc(psp->is_non_zero, + sizeof(short *)*psp->md_size, + psp->error_message); - /** - deal with case 0 <= k < kmin */ + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->ic_size[index_md] = ppm->ic_size[index_md]; + psp->ic_ic_size[index_md] = ppm->ic_ic_size[index_md]; + class_alloc(psp->is_non_zero[index_md], + sizeof(short)*psp->ic_ic_size[index_md], + psp->error_message); + for (index_ic1_ic2=0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) + psp->is_non_zero[index_md][index_ic1_ic2] = ppm->is_non_zero[index_md][index_ic1_ic2]; + } - if (k < exp(psp->ln_k[0])) { + if (ppt->has_cls == _TRUE_) { - /** - --> (a) subcase k=0: then P(k)=0 */ + /* types of C_l's relevant for both scalars and tensors: TT, EE, TE */ - if (k == 0.) { - if (psp->ic_size[index_md] == 1) { - *pk_tot=0.; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - pk_ic[index_ic1_ic2] = 0.; - } - } - } + index_ct=0; - /** - --> (b) subcase 0has_cl_cmb_temperature == _TRUE_) { + psp->has_tt = _TRUE_; + psp->index_ct_tt=index_ct; + index_ct++; + } + else { + psp->has_tt = _FALSE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_ee = _TRUE_; + psp->index_ct_ee=index_ct; + index_ct++; + } else { + psp->has_ee = _FALSE_; + } - /* compute P(k,z) which contains P(kmin,z)*/ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - if (psp->ic_size[index_md] > 1) { - class_alloc(spectrum_at_z_ic, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - } - class_call(spectra_pk_at_z(pba, - psp, - linear, - z, - spectrum_at_z, - spectrum_at_z_ic), - psp->error_message, - psp->error_message); - - /* compute P_primordial(k) */ - class_alloc(pk_primordial_k, - sizeof(double)*psp->ic_ic_size[index_md], - psp->error_message); - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - k, - pk_primordial_k), - ppm->error_message,psp->error_message); - - /* compute P_primordial(kmin) */ - kmin = exp(psp->ln_k[0]); - class_alloc(pk_primordial_kmin, - sizeof(double)*psp->ic_ic_size[index_md], - psp->error_message); - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - kmin, - pk_primordial_kmin), - ppm->error_message, - psp->error_message); - - /* apply above analytic approximation for P(k) */ - index_k=0; - if (psp->ic_size[index_md] == 1) { - index_ic1_ic2 = 0; - *pk_tot = spectrum_at_z[index_k] - *k*pk_primordial_k[index_ic1_ic2] - /kmin/pk_primordial_kmin[index_ic1_ic2]; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - pk_ic[index_ic1_ic2] = spectrum_at_z_ic[index_ic1_ic2] - *k*pk_primordial_k[index_ic1_ic2] - /kmin/pk_primordial_kmin[index_ic1_ic2]; - } - } - - free(spectrum_at_z); - if (psp->ic_size[index_md] > 1) - free(spectrum_at_z_ic); - free(pk_primordial_k); - free(pk_primordial_kmin); + if ((ppt->has_cl_cmb_temperature == _TRUE_) && + (ppt->has_cl_cmb_polarization == _TRUE_)) { + psp->has_te = _TRUE_; + psp->index_ct_te=index_ct; + index_ct++; + } + else { + psp->has_te = _FALSE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_bb = _TRUE_; + psp->index_ct_bb=index_ct; + index_ct++; } - } - - /** - deal with case kmin <= k <= kmax */ - - else { - - /* compute P(k,z) (in logarithmic format for more accurate interpolation) */ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - if (psp->ic_size[index_md] > 1) { - class_alloc(spectrum_at_z_ic, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); + else { + psp->has_bb = _FALSE_; } - class_call(spectra_pk_at_z(pba, - psp, - logarithmic, - z, - spectrum_at_z, - spectrum_at_z_ic), - psp->error_message, - psp->error_message); - - /* get its second derivatives with spline, then interpolate, then convert to linear format */ - - class_alloc(spline, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - - if (psp->ic_size[index_md] == 1) { - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - 1, - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - spline, - 1, - log(k), - &last_index, - pk_tot, - 1, - psp->error_message), - psp->error_message, - psp->error_message); - *pk_tot = exp(*pk_tot); + /* types of C_l's relevant only for scalars: phi-phi, T-phi, E-phi, d-d, T-d */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pp = _TRUE_; + psp->index_ct_pp=index_ct; + index_ct++; } else { - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z_ic, - psp->ic_ic_size[index_md], - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z_ic, - spline, - psp->ic_ic_size[index_md], - log(k), - &last_index, - pk_ic, - psp->ic_ic_size[index_md], - psp->error_message), - psp->error_message, - psp->error_message); - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - pk_ic[index_ic1_ic2] = exp(pk_ic[index_ic1_ic2]); - } - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - pk_ic[index_ic1_ic2] = pk_ic[index_ic1_ic2]* - sqrt(pk_ic[index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]* - pk_ic[index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - } - else { - pk_ic[index_ic1_ic2] = 0.; - } - } - } - free(spectrum_at_z_ic); + psp->has_pp = _FALSE_; } - free(spectrum_at_z); - free(spline); - } - - /** - last step: if more than one condition, sum over pk_ic to get pk_tot, and set back coefficients of non-correlated pairs to exactly zero. */ - - if (psp->ic_size[index_md] > 1) { - - *pk_tot = 0.; - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - if (index_ic1 == index_ic2) - *pk_tot += pk_ic[index_ic1_ic2]; - else - *pk_tot += 2.*pk_ic[index_ic1_ic2]; - } - else { - pk_ic[index_ic1_ic2] = 0.; - } - } + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tp = _TRUE_; + psp->index_ct_tp=index_ct; + index_ct++; + } + else { + psp->has_tp = _FALSE_; } - class_test(*pk_tot <= 0., - psp->error_message, - "for k=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total results negative",k); - - } + psp->ct_size = index_ct; - return _SUCCESS_; + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ep = _TRUE_; + psp->index_ct_ep=index_ct; + index_ct++; + } + else { + psp->has_ep = _FALSE_; + } -} + if ((ppt->has_scalars == _TRUE_) && + ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_))) + psp->d_size=ppt->selection_num; + else + psp->d_size=0; -/** - * Non-linear total matter power spectrum for arbitrary redshift. - * - * This routine evaluates the non-linear matter power spectrum at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) - * - * - * Can be called in two modes: linear or logarithmic. - * - * - linear: returns P(k) (units: Mpc^3) - * - * - logarithmic: returns ln(P(k)) - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param mode Input: linear or logarithmic - * @param z Input: redshift - * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) - * @return the error status - */ + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dd = _TRUE_; + psp->index_ct_dd=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_dd = _FALSE_; + } -int spectra_pk_nl_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot /* array with argument output_tot[index_k] (must be already allocated) */ - ) { + /* the computation of C_l^Td would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. - /** Summary: */ + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_td = _TRUE_; + psp->index_ct_td=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_td = _FALSE_; + } + */ + psp->has_td = _FALSE_; - /** - define local variables */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pd = _TRUE_; + psp->index_ct_pd=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_pd = _FALSE_; + } - int last_index; - int index_k; - double tau,ln_tau; + psp->has_td = _FALSE_; - /** - first step: convert z into ln(tau) */ + if ((ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ll = _TRUE_; + psp->index_ct_ll=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_ll = _FALSE_; + } - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); + /* the computation of C_l^Tl would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. - class_test(tau <= 0., - psp->error_message, - "negative or null value of conformal time: cannot interpolate"); + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tl = _TRUE_; + psp->index_ct_tl=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_tl = _FALSE_; + } + */ + psp->has_tl = _FALSE_; - ln_tau = log(tau); + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dl = _TRUE_; + psp->index_ct_dl=index_ct; + index_ct += psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag); + } + else { + psp->has_dl = _FALSE_; + } - /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + psp->ct_size = index_ct; - /** - --> (a) if only values at tau=tau_today are stored and we want P(k,z=0), no need to interpolate */ + /* infer from input quantities the l_max for each mode and type, + l_max_ct[index_md][index_type]. Maximize it over index_ct, and + then over index_md. */ - if (psp->ln_tau_size == 1) { + class_alloc(psp->l_max,sizeof(int*)*psp->md_size,psp->error_message); + class_alloc(psp->l_max_ct,sizeof(int*)*psp->md_size,psp->error_message); + for (index_md=0; index_mdmd_size; index_md++) { + class_calloc(psp->l_max_ct[index_md],psp->ct_size,sizeof(int),psp->error_message); + } - class_test(z != 0., - psp->error_message, - "asked z=%e but only P(k,z=0) has been tabulated",z); + if (ppt->has_scalars == _TRUE_) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = psp->ln_pk_nl[index_k]; - } - } + /* spectra computed up to l_scalar_max */ - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tt] = ppt->l_scalar_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ee] = ppt->l_scalar_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_te] = ppt->l_scalar_max; + if (psp->has_pp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_pp] = ppt->l_scalar_max; + if (psp->has_tp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tp] = ppt->l_scalar_max; + if (psp->has_ep == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ep] = ppt->l_scalar_max; - else { + /* spectra computed up to l_lss_max */ - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk_nl, - psp->ddln_pk_nl, - psp->ln_k_size, - ln_tau, - &last_index, - output_tot, - psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - } + if (psp->has_dd == _TRUE_) + for (index_ct=psp->index_ct_dd; + index_ctindex_ct_dd+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - /** - fourth step: eventually convert to linear format */ + if (psp->has_td == _TRUE_) + for (index_ct=psp->index_ct_td; + index_ctindex_ct_td+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - if (mode == linear) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = exp(output_tot[index_k]); - } - } + if (psp->has_pd == _TRUE_) + for (index_ct=psp->index_ct_pd; + index_ctindex_ct_pd+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - return _SUCCESS_; + if (psp->has_ll == _TRUE_) + for (index_ct=psp->index_ct_ll; + index_ctindex_ct_ll+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; -} + if (psp->has_tl == _TRUE_) + for (index_ct=psp->index_ct_tl; + index_ctindex_ct_tl+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); -/** - * Non-linear total matter power spectrum for arbitrary wavenumber and redshift. - * - * This routine evaluates the matter power spectrum at a given value of k and z by - * interpolating in a table of all P(k)'s computed at this z by spectra_pk_nl_at_z() (when kmin <= k <= kmax), - * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): - * the latter case is an approximation, valid when kmin << comoving Hubble scale today. - * Returns zero when k=0. Returns an error when k<0 or k > kmax. - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ - * @return the error status - */ - -int spectra_pk_nl_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot /* pointer to a single number (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - - double * spectrum_at_z = NULL; - double * spline; - - index_md = psp->index_md_scalars; - - /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ - - class_test((k < exp(psp->ln_k[0])) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); - - /** - compute P(k,z) (in logarithmic format for more accurate interpolation) */ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - - class_call(spectra_pk_nl_at_z(pba, - psp, - logarithmic, - z, - spectrum_at_z), - psp->error_message, - psp->error_message); - - /** - get its second derivatives with spline, then interpolate, then convert to linear format */ - - class_alloc(spline, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - 1, - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - spline, - 1, - log(k), - &last_index, - pk_tot, - 1, - psp->error_message), - psp->error_message, - psp->error_message); - - *pk_tot = exp(*pk_tot); - - free(spectrum_at_z); - free(spline); - - return _SUCCESS_; - -} - - -/** - * Matter transfer functions \f$ T_i(k) \f$ for arbitrary redshift and for all - * initial conditions. - * - * This routine evaluates the matter transfer functions at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want \f$ T_i(k,z=0)\f$) - * - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param z Input: redshift - * @param output Output: matter transfer functions - * @return the error status - */ - -int spectra_tk_at_z( - struct background * pba, - struct spectra * psp, - double z, - double * output /* array with argument output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - int index_k; - int index_tr; - double tau,ln_tau; - int index_ic; - - index_md = psp->index_md_scalars; - - /** - first step: convert z into ln(tau) */ - - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); - - class_test(tau <= 0., - psp->error_message, - "negative or null value of conformal time: cannot interpolate"); - - ln_tau = log(tau); - - /** - second step: store the matter transfer functions in the output array */ - - /** - --> (a) if only values at tau=tau_today are stored and we want \f$ T_i(k,z=0)\f$, no need to interpolate */ - - if (psp->ln_tau_size == 1) { - - class_test(z != 0., - psp->error_message, - "asked z=%e but only T_i(k,z=0) has been tabulated",z); - - for (index_k=0; index_kln_k_size; index_k++) - for (index_tr=0; index_trtr_size; index_tr++) - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) - output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] - = psp->matter_transfer[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr]; - - } - - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ - - else { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->matter_transfer, - psp->ddmatter_transfer, - psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, - ln_tau, - &last_index, - output, - psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - - } - - return _SUCCESS_; - -} - -/** - * Matter transfer functions \f$ T_i(k)\f$ for arbitrary wavenumber, redshift - * and initial condition. - * - * This routine evaluates the matter transfer functions at a given - * value of k and z by interpolating in a table of all \f$ T_i(k,z)\f$'s - * computed at this z by spectra_tk_at_z() (when kmin <= k <= kmax). - * Returns an error when k kmax. - * - * This function can be called from whatever module at whatever time, - * provided that spectra_init() has been called before, and - * spectra_free() has not been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param output Output: matter transfer functions - * @return the error status - */ - -int spectra_tk_at_k_and_z( - struct background * pba, - struct spectra * psp, - double k, - double z, - double * output /* array with argument output[index_ic*psp->tr_size+index_tr] (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - double * tks_at_z; - double * ddtks_at_z; - - index_md = psp->index_md_scalars; - - /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_tk_at_z()) */ - - class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); - - /** - compute T_i(k,z) */ - - class_alloc(tks_at_z, - psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), - psp->error_message); - - class_call(spectra_tk_at_z(pba, - psp, - z, - tks_at_z), - psp->error_message, - psp->error_message); - - /** - get its second derivatives w.r.t. k with spline, then interpolate */ - - class_alloc(ddtks_at_z, - psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), - psp->error_message); - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - tks_at_z, - psp->tr_size*psp->ic_size[index_md], - ddtks_at_z, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - tks_at_z, - ddtks_at_z, - psp->tr_size*psp->ic_size[index_md], - log(k), - &last_index, - output, - psp->tr_size*psp->ic_size[index_md], - psp->error_message), - psp->error_message, - psp->error_message); - - free(tks_at_z); - free(ddtks_at_z); - - return _SUCCESS_; - -} - -/** - * This routine initializes the spectra structure (in particular, - * computes table of anisotropy and Fourier spectra \f$ C_l^{X}, P(k), ... \f$) - * - * @param ppr Input: pointer to precision structure - * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfer structure - * @param ppm Input: pointer to primordial structure - * @param pnl Input: pointer to nonlinear structure - * @param psp Output: pointer to initialized spectra structure - * @return the error status - */ - -int spectra_init( - struct precision * ppr, - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct transfers * ptr, - struct spectra * psp - ) { - - /** Summary: */ - - double TT_II,TT_RI,TT_RR; - int l1,l2; - - /** - check that we really want to compute at least one spectrum */ - - if ((ppt->has_cls == _FALSE_) && - (ppt->has_pk_matter == _FALSE_) && - (ppt->has_density_transfers == _FALSE_) && - (ppt->has_velocity_transfers == _FALSE_)) { - psp->md_size = 0; - if (psp->spectra_verbose > 0) - printf("No spectra requested. Spectra module skipped.\n"); - return _SUCCESS_; - } - else { - if (psp->spectra_verbose > 0) - printf("Computing unlensed linear spectra\n"); - } - - /** - initialize indices and allocate some of the arrays in the - spectra structure */ - - class_call(spectra_indices(pba,ppt,ptr,ppm,psp), - psp->error_message, - psp->error_message); - - /** - deal with \f$ C_l\f$'s, if any */ - - if (ppt->has_cls == _TRUE_) { - - class_call(spectra_cls(pba,ppt,ptr,ppm,psp), - psp->error_message, - psp->error_message); - - } - else { - psp->ct_size=0; - } - - /** - deal with \f$ P(k,\tau)\f$ and \f$ T_i(k,\tau)\f$ */ - - if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - - class_call(spectra_k_and_tau(pba,ppt,psp), - psp->error_message, - psp->error_message); - - if (ppt->has_pk_matter == _TRUE_) { - - class_call(spectra_pk(pba,ppt,ppm,pnl,psp), - psp->error_message, - psp->error_message); - - } - else { - psp->ln_pk=NULL; - } - - if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - - class_call(spectra_matter_transfers(pba,ppt,psp), - psp->error_message, - psp->error_message); - } - else { - psp->matter_transfer=NULL; - } - - } - else { - psp->ln_k_size=0; - } - - /* if there is one isocurvature mode, compute and store in the psp - structure the isocurvature contribution to some bandpowers in - different ranges of l, and the contribution to the primordial - spectrum at different wavenumbers (used in the Planck - analysis) */ - - if ((ppt->has_scalars == _TRUE_) && (ppt->has_cls == _TRUE_) && (ppt->ic_size[ppt->index_md_scalars] == 2)) { - - l1=2; - l2=20; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_2_20=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_2_20=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_2_20=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=21; - l2=200; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_21_200=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_21_200=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_21_200=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=201; - l2=2500; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_201_2500=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_201_2500=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_201_2500=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=2; - l2=2500; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_2_2500=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_2_2500=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_2_2500=TT_RR/(TT_II+TT_RI+TT_RR); - - if (ppt->has_cdi==_TRUE_) { - - psp->alpha_kp=ppm->f_cdi*ppm->f_cdi - /(1.+ppm->f_cdi*ppm->f_cdi); - - psp->alpha_k1=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - - if (ppt->has_nid==_TRUE_) { - - psp->alpha_kp=ppm->f_nid*ppm->f_nid - /(1.+ppm->f_nid*ppm->f_nid); - - psp->alpha_k1=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - - if (ppt->has_niv==_TRUE_) { - - psp->alpha_kp=ppm->f_niv*ppm->f_niv - /(1.+ppm->f_niv*ppm->f_niv); - - psp->alpha_k1=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - } - - return _SUCCESS_; -} - -/** - * This routine frees all the memory space allocated by spectra_init(). - * - * To be called at the end of each run, only when no further calls to - * spectra_cls_at_l(), spectra_pk_at_z(), spectra_pk_at_k_and_z() are needed. - * - * @param psp Input: pointer to spectra structure (which fields must be freed) - * @return the error status - */ - -int spectra_free( - struct spectra * psp - ) { - - int index_md; - - if (psp->md_size > 0) { - - if (psp->ct_size > 0) { - - for (index_md = 0; index_md < psp->md_size; index_md++) { - free(psp->l_max_ct[index_md]); - free(psp->cl[index_md]); - free(psp->ddcl[index_md]); - } - free(psp->l); - free(psp->l_size); - free(psp->l_max_ct); - free(psp->l_max); - free(psp->cl); - free(psp->ddcl); - } - - if (psp->ln_k_size > 0) { - - free(psp->ln_tau); - free(psp->ln_k); - - if (psp->ln_pk != NULL) { - - free(psp->ln_pk); - - if (psp->ln_tau_size > 1) { - free(psp->ddln_pk); - } - - if (psp->ln_pk_nl != NULL) { - - free(psp->ln_pk_nl); - - if (psp->ln_tau_size > 1) { - free(psp->ddln_pk_nl); - } - } - } - - if (psp->matter_transfer != NULL) { - - free(psp->matter_transfer); - if (psp->ln_tau_size > 1) { - free(psp->ddmatter_transfer); - } - } - } - } - - for (index_md=0; index_md < psp->md_size; index_md++) - free(psp->is_non_zero[index_md]); - free(psp->is_non_zero); - free(psp->ic_size); - free(psp->ic_ic_size); - - return _SUCCESS_; - -} - -/** - * This routine defines indices and allocates tables in the spectra structure - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/output: pointer to spectra structure - * @return the error status - */ - -int spectra_indices( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp - ){ - - int index_ct; - int index_md; - int index_ic1_ic2; - int index_tr; - - psp->md_size = ppt->md_size; - if (ppt->has_scalars == _TRUE_) - psp->index_md_scalars = ppt->index_md_scalars; - - class_alloc(psp->ic_size, - sizeof(int)*psp->md_size, - psp->error_message); - - class_alloc(psp->ic_ic_size, - sizeof(int)*psp->md_size, - psp->error_message); - - class_alloc(psp->is_non_zero, - sizeof(short *)*psp->md_size, - psp->error_message); - - for (index_md=0; index_md < psp->md_size; index_md++) { - psp->ic_size[index_md] = ppm->ic_size[index_md]; - psp->ic_ic_size[index_md] = ppm->ic_ic_size[index_md]; - class_alloc(psp->is_non_zero[index_md], - sizeof(short)*psp->ic_ic_size[index_md], - psp->error_message); - for (index_ic1_ic2=0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) - psp->is_non_zero[index_md][index_ic1_ic2] = ppm->is_non_zero[index_md][index_ic1_ic2]; - } - - if (ppt->has_cls == _TRUE_) { - - /* types of C_l's relevant for both scalars and tensors: TT, EE, TE */ - - index_ct=0; - - if (ppt->has_cl_cmb_temperature == _TRUE_) { - psp->has_tt = _TRUE_; - psp->index_ct_tt=index_ct; - index_ct++; - } - else { - psp->has_tt = _FALSE_; - } - - if (ppt->has_cl_cmb_polarization == _TRUE_) { - psp->has_ee = _TRUE_; - psp->index_ct_ee=index_ct; - index_ct++; - } - else { - psp->has_ee = _FALSE_; - } - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && - (ppt->has_cl_cmb_polarization == _TRUE_)) { - psp->has_te = _TRUE_; - psp->index_ct_te=index_ct; - index_ct++; - } - else { - psp->has_te = _FALSE_; - } - - if (ppt->has_cl_cmb_polarization == _TRUE_) { - psp->has_bb = _TRUE_; - psp->index_ct_bb=index_ct; - index_ct++; - } - else { - psp->has_bb = _FALSE_; - } - - /* types of C_l's relevant only for scalars: phi-phi, T-phi, E-phi, d-d, T-d */ - - if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_pp = _TRUE_; - psp->index_ct_pp=index_ct; - index_ct++; - } - else { - psp->has_pp = _FALSE_; - } - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_tp = _TRUE_; - psp->index_ct_tp=index_ct; - index_ct++; - } - else { - psp->has_tp = _FALSE_; - } - - psp->ct_size = index_ct; - - if ((ppt->has_cl_cmb_polarization == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_ep = _TRUE_; - psp->index_ct_ep=index_ct; - index_ct++; - } - else { - psp->has_ep = _FALSE_; - } - - if ((ppt->has_scalars == _TRUE_) && - ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_))) - psp->d_size=ppt->selection_num; - else - psp->d_size=0; - - if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_dd = _TRUE_; - psp->index_ct_dd=index_ct; - index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - } - else { - psp->has_dd = _FALSE_; - } - - /* the computation of C_l^Td would require a very good sampling of - transfer functions over a wide range, and a huge computation - time. In the current version, we prefer to switch it off, rather - than either slowing down the code considerably, or producing - very inaccurate spectra. - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_td = _TRUE_; - psp->index_ct_td=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_td = _FALSE_; - } - */ - psp->has_td = _FALSE_; - - if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_pd = _TRUE_; - psp->index_ct_pd=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_pd = _FALSE_; - } - - psp->has_td = _FALSE_; - - if ((ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_ll = _TRUE_; - psp->index_ct_ll=index_ct; - index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - } - else { - psp->has_ll = _FALSE_; - } - - /* the computation of C_l^Tl would require a very good sampling of - transfer functions over a wide range, and a huge computation - time. In the current version, we prefer to switch it off, rather - than either slowing down the code considerably, or producing - very inaccurate spectra. - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_tl = _TRUE_; - psp->index_ct_tl=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_tl = _FALSE_; - } - */ - psp->has_tl = _FALSE_; - - if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_dl = _TRUE_; - psp->index_ct_dl=index_ct; - index_ct += psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag); - } - else { - psp->has_dl = _FALSE_; - } - - psp->ct_size = index_ct; - - /* infer from input quantities the l_max for each mode and type, - l_max_ct[index_md][index_type]. Maximize it over index_ct, and - then over index_md. */ - - class_alloc(psp->l_max,sizeof(int*)*psp->md_size,psp->error_message); - class_alloc(psp->l_max_ct,sizeof(int*)*psp->md_size,psp->error_message); - for (index_md=0; index_mdmd_size; index_md++) { - class_calloc(psp->l_max_ct[index_md],psp->ct_size,sizeof(int),psp->error_message); - } - - if (ppt->has_scalars == _TRUE_) { - - /* spectra computed up to l_scalar_max */ - - if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tt] = ppt->l_scalar_max; - if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ee] = ppt->l_scalar_max; - if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_te] = ppt->l_scalar_max; - if (psp->has_pp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_pp] = ppt->l_scalar_max; - if (psp->has_tp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tp] = ppt->l_scalar_max; - if (psp->has_ep == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ep] = ppt->l_scalar_max; - - /* spectra computed up to l_lss_max */ - - if (psp->has_dd == _TRUE_) - for (index_ct=psp->index_ct_dd; - index_ctindex_ct_dd+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - if (psp->has_td == _TRUE_) - for (index_ct=psp->index_ct_td; - index_ctindex_ct_td+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_pd == _TRUE_) - for (index_ct=psp->index_ct_pd; - index_ctindex_ct_pd+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_ll == _TRUE_) - for (index_ct=psp->index_ct_ll; - index_ctindex_ct_ll+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - if (psp->has_tl == _TRUE_) - for (index_ct=psp->index_ct_tl; - index_ctindex_ct_tl+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_dl == _TRUE_) - for (index_ct=psp->index_ct_dl; - index_ct < psp->index_ct_dl+(psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag)); - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - } - if (ppt->has_tensors == _TRUE_) { - - /* spectra computed up to l_tensor_max */ - - if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_tt] = ppt->l_tensor_max; - if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_ee] = ppt->l_tensor_max; - if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_te] = ppt->l_tensor_max; - if (psp->has_bb == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_bb] = ppt->l_tensor_max; - } - - /* maximizations */ - psp->l_max_tot = 0.; - for (index_md=0; index_md < psp->md_size; index_md++) { - psp->l_max[index_md] = 0.; - for (index_ct=0.; index_ctct_size; index_ct++) - psp->l_max[index_md] = MAX(psp->l_max[index_md],psp->l_max_ct[index_md][index_ct]); - psp->l_max_tot = MAX(psp->l_max_tot,psp->l_max[index_md]); - } - } - - /* indices for species associated with a matter transfer function in Fourier space */ - - index_tr=0; - class_define_index(psp->index_tr_delta_g,ppt->has_source_delta_g,index_tr,1); - class_define_index(psp->index_tr_delta_b,ppt->has_source_delta_b,index_tr,1); - class_define_index(psp->index_tr_delta_cdm,ppt->has_source_delta_cdm,index_tr,1); - class_define_index(psp->index_tr_delta_dcdm,ppt->has_source_delta_dcdm,index_tr,1); - class_define_index(psp->index_tr_delta_scf,ppt->has_source_delta_scf,index_tr,1); - class_define_index(psp->index_tr_delta_fld,ppt->has_source_delta_fld,index_tr,1); - class_define_index(psp->index_tr_delta_ur,ppt->has_source_delta_ur,index_tr,1); - class_define_index(psp->index_tr_delta_dr,ppt->has_source_delta_dr,index_tr,1); - class_define_index(psp->index_tr_delta_ncdm1,ppt->has_source_delta_ncdm,index_tr,pba->N_ncdm); - class_define_index(psp->index_tr_delta_tot,ppt->has_density_transfers,index_tr,1); - class_define_index(psp->index_tr_phi,ppt->has_source_phi,index_tr,1); - class_define_index(psp->index_tr_psi,ppt->has_source_psi,index_tr,1); - - /* indices for species associated with a velocity transfer function in Fourier space */ - - class_define_index(psp->index_tr_theta_g,ppt->has_source_theta_g,index_tr,1); - class_define_index(psp->index_tr_theta_b,ppt->has_source_theta_b,index_tr,1); - class_define_index(psp->index_tr_theta_cdm,ppt->has_source_theta_cdm,index_tr,1); - class_define_index(psp->index_tr_theta_dcdm,ppt->has_source_theta_dcdm,index_tr,1); - class_define_index(psp->index_tr_theta_scf,ppt->has_source_theta_scf,index_tr,1); - class_define_index(psp->index_tr_theta_fld,ppt->has_source_theta_fld,index_tr,1); - class_define_index(psp->index_tr_theta_ur,ppt->has_source_theta_ur,index_tr,1); - class_define_index(psp->index_tr_theta_dr,ppt->has_source_theta_dr,index_tr,1); - class_define_index(psp->index_tr_theta_ncdm1,ppt->has_source_theta_ncdm,index_tr,pba->N_ncdm); - class_define_index(psp->index_tr_theta_tot,ppt->has_velocity_transfers,index_tr,1); - - psp->tr_size = index_tr; - - return _SUCCESS_; - -} - -/** - * This routine computes a table of values for all harmonic spectra \f$ C_l \f$'s, - * given the transfer functions and primordial spectra. - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_cls( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int index_ic1,index_ic2,index_ic1_ic2; - int index_l; - int index_ct; - int cl_integrand_num_columns; - - double * cl_integrand; /* array with argument cl_integrand[index_k*cl_integrand_num_columns+1+psp->index_ct] */ - double * transfer_ic1; /* array with argument transfer_ic1[index_tt] */ - double * transfer_ic2; /* idem */ - double * primordial_pk; /* array with argument primordial_pk[index_ic_ic]*/ - - /* This code can be optionally compiled with the openmp option for parallel computation. - Inside parallel regions, the use of the command "return" is forbidden. - For error management, instead of "return _FAILURE_", we will set the variable below - to "abort = _TRUE_". This will lead to a "return _FAILURE_" jus after leaving the - parallel region. */ - int abort; - -#ifdef _OPENMP - /* instrumentation times */ - double tstart, tstop; -#endif - - /** - allocate pointers to arrays where results will be stored */ - - class_alloc(psp->l_size,sizeof(int)*psp->md_size,psp->error_message); - class_alloc(psp->cl,sizeof(double *)*psp->md_size,psp->error_message); - class_alloc(psp->ddcl,sizeof(double *)*psp->md_size,psp->error_message); - - psp->l_size_max = ptr->l_size_max; - class_alloc(psp->l,sizeof(double)*psp->l_size_max,psp->error_message); - - /** - store values of l */ - for (index_l=0; index_l < psp->l_size_max; index_l++) { - psp->l[index_l] = (double)ptr->l[index_l]; - } - - /** - loop over modes (scalar, tensors, etc). For each mode: */ - - for (index_md = 0; index_md < psp->md_size; index_md++) { - - /** - --> (a) store number of l values for this mode */ - - psp->l_size[index_md] = ptr->l_size[index_md]; - - /** - --> (b) allocate arrays where results will be stored */ - - class_alloc(psp->cl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); - class_alloc(psp->ddcl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); - cl_integrand_num_columns = 1+psp->ct_size*2; /* one for k, ct_size for each type, ct_size for each second derivative of each type */ - - /** - --> (c) loop over initial conditions */ - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - /* non-diagonal coefficients should be computed only if non-zero correlation */ - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - /* initialize error management flag */ - abort = _FALSE_; - - /* beginning of parallel region */ - -#pragma omp parallel \ - shared(ptr,ppm,index_md,psp,ppt,cl_integrand_num_columns,index_ic1,index_ic2,abort) \ - private(tstart,cl_integrand,primordial_pk,transfer_ic1,transfer_ic2,index_l,tstop) - - { - -#ifdef _OPENMP - tstart = omp_get_wtime(); -#endif - - class_alloc_parallel(cl_integrand, - ptr->q_size*cl_integrand_num_columns*sizeof(double), - psp->error_message); - - class_alloc_parallel(primordial_pk, - psp->ic_ic_size[index_md]*sizeof(double), - psp->error_message); - - class_alloc_parallel(transfer_ic1, - ptr->tt_size[index_md]*sizeof(double), - psp->error_message); - - class_alloc_parallel(transfer_ic2, - ptr->tt_size[index_md]*sizeof(double), - psp->error_message); - -#pragma omp for schedule (dynamic) - - /** - ---> loop over l values defined in the transfer module. - For each l, compute the \f$ C_l\f$'s for all types (TT, TE, ...) - by convolving primordial spectra with transfer functions. - This elementary task is assigned to spectra_compute_cl() */ - - for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - -#pragma omp flush(abort) - - class_call_parallel(spectra_compute_cl(pba, - ppt, - ptr, - ppm, - psp, - index_md, - index_ic1, - index_ic2, - index_l, - cl_integrand_num_columns, - cl_integrand, - primordial_pk, - transfer_ic1, - transfer_ic2), - psp->error_message, - psp->error_message); - - } /* end of loop over l */ - -#ifdef _OPENMP - tstop = omp_get_wtime(); - if (psp->spectra_verbose > 1) - printf("In %s: time spent in parallel region (loop over l's) = %e s for thread %d\n", - __func__,tstop-tstart,omp_get_thread_num()); -#endif - free(cl_integrand); - - free(primordial_pk); - - free(transfer_ic1); - - free(transfer_ic2); - - } /* end of parallel region */ - - if (abort == _TRUE_) return _FAILURE_; - - } - else { - - /* set non-diagonal coefficients to zero if pair of ic's uncorrelated */ - - for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - for (index_ct=0; index_ctct_size; index_ct++) { - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] - = 0.; - } - } - } - } - } - - /** - --> (d) now that for a given mode, all possible \f$ C_l\f$'s have been computed, - compute second derivative of the array in which they are stored, - in view of spline interpolation. */ - - class_call(array_spline_table_lines(psp->l, - psp->l_size[index_md], - psp->cl[index_md], - psp->ic_ic_size[index_md]*psp->ct_size, - psp->ddcl[index_md], - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - } - - return _SUCCESS_; - -} - -/** - * This routine computes the \f$ C_l\f$'s for a given mode, pair of initial conditions - * and multipole, but for all types (TT, TE...), by convolving the - * transfer functions with the primordial spectra. - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/Output: pointer to spectra structure (result stored here) - * @param index_md Input: index of mode under consideration - * @param index_ic1 Input: index of first initial condition in the correlator - * @param index_ic2 Input: index of second initial condition in the correlator - * @param index_l Input: index of multipole under consideration - * @param cl_integrand_num_columns Input: number of columns in cl_integrand - * @param cl_integrand Input: an allocated workspace - * @param primordial_pk Input: table of primordial spectrum values - * @param transfer_ic1 Input: table of transfer function values for first initial condition - * @param transfer_ic2 Input: table of transfer function values for second initial condition - * @return the error status - */ - -int spectra_compute_cl( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp, - int index_md, - int index_ic1, - int index_ic2, - int index_l, - int cl_integrand_num_columns, - double * cl_integrand, - double * primordial_pk, - double * transfer_ic1, - double * transfer_ic2 - ) { - - int index_q; - int index_tt; - int index_ct; - int index_d1,index_d2; - double k; - double clvalue; - int index_ic1_ic2; - double transfer_ic1_temp=0.; - double transfer_ic2_temp=0.; - double * transfer_ic1_nc=NULL; - double * transfer_ic2_nc=NULL; - double factor; - int index_q_spline=0; - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (ppt->has_cl_number_count == _TRUE_) { - class_alloc(transfer_ic1_nc,psp->d_size*sizeof(double),psp->error_message); - class_alloc(transfer_ic2_nc,psp->d_size*sizeof(double),psp->error_message); - } - - for (index_q=0; index_q < ptr->q_size; index_q++) { - - //q = ptr->q[index_q]; - k = ptr->k[index_md][index_q]; - - cl_integrand[index_q*cl_integrand_num_columns+0] = k; - - class_call(primordial_spectrum_at_k(ppm,index_md,linear,k,primordial_pk), - ppm->error_message, - psp->error_message); - - /* above routine checks that k>0: no possible division by zero below */ - - for (index_tt=0; index_tt < ptr->tt_size[index_md]; index_tt++) { - - transfer_ic1[index_tt] = - ptr->transfer[index_md] - [((index_ic1 * ptr->tt_size[index_md] + index_tt) - * ptr->l_size[index_md] + index_l) - * ptr->q_size + index_q]; - - if (index_ic1 == index_ic2) { - transfer_ic2[index_tt] = transfer_ic1[index_tt]; - } - else { - transfer_ic2[index_tt] = ptr->transfer[index_md] - [((index_ic2 * ptr->tt_size[index_md] + index_tt) - * ptr->l_size[index_md] + index_l) - * ptr->q_size + index_q]; - } - } - - /* define combinations of transfer functions */ - - if (ppt->has_cl_cmb_temperature == _TRUE_) { - - if (_scalars_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t0] + transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t0] + transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - - } - - if (_vectors_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - - } - - if (_tensors_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t2]; - - } - } - - if (ppt->has_cl_number_count == _TRUE_) { - - for (index_d1=0; index_d1d_size; index_d1++) { - - transfer_ic1_nc[index_d1] = 0.; - transfer_ic2_nc[index_d1] = 0.; - - if (ppt->has_nc_density == _TRUE_) { - transfer_ic1_nc[index_d1] += transfer_ic1[ptr->index_tt_density+index_d1]; - transfer_ic2_nc[index_d1] += transfer_ic2[ptr->index_tt_density+index_d1]; - } - - if (ppt->has_nc_rsd == _TRUE_) { - transfer_ic1_nc[index_d1] - += transfer_ic1[ptr->index_tt_rsd+index_d1] - + transfer_ic1[ptr->index_tt_d0+index_d1] - + transfer_ic1[ptr->index_tt_d1+index_d1]; - transfer_ic2_nc[index_d1] - += transfer_ic2[ptr->index_tt_rsd+index_d1] - + transfer_ic2[ptr->index_tt_d0+index_d1] - + transfer_ic2[ptr->index_tt_d1+index_d1]; - } - - if (ppt->has_nc_lens == _TRUE_) { - transfer_ic1_nc[index_d1] += - psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic1[ptr->index_tt_nc_lens+index_d1]; - transfer_ic2_nc[index_d1] += - psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic2[ptr->index_tt_nc_lens+index_d1]; - } - - if (ppt->has_nc_gr == _TRUE_) { - transfer_ic1_nc[index_d1] - += transfer_ic1[ptr->index_tt_nc_g1+index_d1] - + transfer_ic1[ptr->index_tt_nc_g2+index_d1] - + transfer_ic1[ptr->index_tt_nc_g3+index_d1] - + transfer_ic1[ptr->index_tt_nc_g4+index_d1] - + transfer_ic1[ptr->index_tt_nc_g5+index_d1]; - transfer_ic2_nc[index_d1] - += transfer_ic2[ptr->index_tt_nc_g1+index_d1] - + transfer_ic2[ptr->index_tt_nc_g2+index_d1] - + transfer_ic2[ptr->index_tt_nc_g3+index_d1] - + transfer_ic2[ptr->index_tt_nc_g4+index_d1] - + transfer_ic2[ptr->index_tt_nc_g5+index_d1]; - } - - } - } - - /* integrand of Cl's */ - - /* note: we must integrate - - C_l = int [4 pi dk/k calP(k) Delta1_l(q) Delta2_l(q)] - - where calP(k) is the dimensionless - power spectrum equal to a constant in the scale-invariant case, - and to P(k) = A_s k^(ns-1) otherwise and q=sqrt(k2+K) (scalars) - or sqrt(k2+2K) (vectors) or sqrt(k2+3K) (tensors) - - In the literature, people often rewrite the integral in terms - of q and absorb the Jacobian of the change of variables in a redefinition of the primodial - spectrum. Let us illustrate this for scalars: - - dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-K)] = q2dq * 1/[q(q2-K)] - - This factor 1/[q(q2-K)] is commonly absorbed in the definition of calP. Then one would have - - C_l = int [4 pi q2 dq {A_s k^(ns-1)/[q(q2-K)]} Delta1_l(q) Delta2_l(q)] - - Sometimes in the literature, the factor (k2-3K)=(q2-4K) present - in the initial conditions of scalar transfer functions (if - normalized to curvature R=1) is also absorbed in the definition - of the power spectrum. Then the curvature power spectrum reads - - calP = (q2-4K)/[q(q2-K)] * (k/k)^ns - - In CLASS we prefer to define calP = (k/k)^ns like in the flat - case, to have the factor (q2-4K) in the initialk conditions, - and the factor 1/[q(q2-K)] doesn't need to be there since we - integrate over dk/k. - - For tensors, the change of variable described above gives a slightly different result: - - dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-3K)] = q2dq * 1/[q(q2-3K)] - - But for tensors there are extra curvature-related correction factors to - take into account. See the comments in the perturbation module, - related to initial conditions for tensors. - - */ - - factor = 4. * _PI_ / k; - - if (psp->has_tt == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tt]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_temp - * transfer_ic2_temp - * factor; - - if (psp->has_ee == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ee]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_e] - * transfer_ic2[ptr->index_tt_e] - * factor; - - if (psp->has_te == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_te]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_e] + - transfer_ic1[ptr->index_tt_e] * transfer_ic2_temp) - * factor; - - if (_tensors_ && (psp->has_bb == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_bb]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_b] - * transfer_ic2[ptr->index_tt_b] - * factor; - - if (_scalars_ && (psp->has_pp == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pp]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_lcmb] - * transfer_ic2[ptr->index_tt_lcmb] - * factor; - - if (_scalars_ && (psp->has_tp == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tp]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lcmb] + - transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_temp) - * factor; - - if (_scalars_ && (psp->has_ep == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ep]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1[ptr->index_tt_e] * transfer_ic2[ptr->index_tt_lcmb] + - transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2[ptr->index_tt_e]) - * factor; - - if (_scalars_ && (psp->has_dd == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dd+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_nc[index_d1] - * transfer_ic2_nc[index_d2] - * factor; - index_ct++; - } - } - } - - if (_scalars_ && (psp->has_td == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_td+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2_nc[index_d1] + - transfer_ic1_nc[index_d1] * transfer_ic2_temp) - * factor; - } - } - - if (_scalars_ && (psp->has_pd == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pd+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_nc[index_d1] + - transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lcmb]) - * factor; - } - } - - if (_scalars_ && (psp->has_ll == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ll+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_lensing+index_d1] - * transfer_ic2[ptr->index_tt_lensing+index_d2] - * factor; - index_ct++; - } - } - } - - if (_scalars_ && (psp->has_tl == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tl+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lensing+index_d1] + - transfer_ic1[ptr->index_tt_lensing+index_d1] * transfer_ic2_temp) - * factor; - } - } - - if (_scalars_ && (psp->has_dl == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dl+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lensing+index_d2] - * factor; - index_ct++; - } - } - } - } - - for (index_ct=0; index_ctct_size; index_ct++) { - - /* treat null spectra (C_l^BB of scalars, C_l^pp of tensors, etc. */ - - if ((_scalars_ && (psp->has_bb == _TRUE_) && (index_ct == psp->index_ct_bb)) || - (_tensors_ && (psp->has_pp == _TRUE_) && (index_ct == psp->index_ct_pp)) || - (_tensors_ && (psp->has_tp == _TRUE_) && (index_ct == psp->index_ct_tp)) || - (_tensors_ && (psp->has_ep == _TRUE_) && (index_ct == psp->index_ct_ep)) || - (_tensors_ && (psp->has_dd == _TRUE_) && (index_ct == psp->index_ct_dd)) || - (_tensors_ && (psp->has_td == _TRUE_) && (index_ct == psp->index_ct_td)) || - (_tensors_ && (psp->has_pd == _TRUE_) && (index_ct == psp->index_ct_pd)) || - (_tensors_ && (psp->has_ll == _TRUE_) && (index_ct == psp->index_ct_ll)) || - (_tensors_ && (psp->has_tl == _TRUE_) && (index_ct == psp->index_ct_tl)) || - (_tensors_ && (psp->has_dl == _TRUE_) && (index_ct == psp->index_ct_dl)) - ) { - - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] = 0.; - - } - /* for non-zero spectra, integrate over q */ - else { - - /* spline the integrand over the whole range of k's */ - - class_call(array_spline(cl_integrand, - cl_integrand_num_columns, - ptr->q_size, - 0, - 1+index_ct, - 1+psp->ct_size+index_ct, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - /* Technical point: we will now do a spline integral over the - whole range of k's, excepted in the closed (K>0) case. In - that case, it is a bad idea to spline over the values of k - corresponding to nuindex_q_flat_approximation, to tell the integration - routine that below this index, it should treat the integral - as a trapezoidal one. For testing, one is free to set - index_q_spline to 0, to enforce spline integration - everywhere, or to (ptr->q_size-1), to enforce trapezoidal - integration everywhere. */ - - if (pba->sgnK == 1) { - index_q_spline = ptr->index_q_flat_approximation; - } - - class_call(array_integrate_all_trapzd_or_spline(cl_integrand, - cl_integrand_num_columns, - ptr->q_size, - index_q_spline, - 0, - 1+index_ct, - 1+psp->ct_size+index_ct, - &clvalue, - psp->error_message), - psp->error_message, - psp->error_message); - - /* in the closed case, instead of an integral, we have a - discrete sum. In practice, this does not matter: the previous - routine does give a correct approximation of the discrete - sum, both in the trapezoidal and spline regions. The only - error comes from the first point: the previous routine - assumes a weight for the first point which is too small - compared to what it would be in the an actual discrete - sum. The line below correct this problem in an exact way. - */ - - if (pba->sgnK == 1) { - clvalue += cl_integrand[1+index_ct] * ptr->q[0]/ptr->k[0][0]*sqrt(pba->K)/2.; - } - - /* we have the correct C_l now. We can store it in the transfer structure. */ - - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] - = clvalue; - - } - } - - if (ppt->has_cl_number_count == _TRUE_) { - free(transfer_ic1_nc); - free(transfer_ic2_nc); - } - - return _SUCCESS_; - -} - -/** - * This routine computes the values of k and tau at which the matter - * power spectra \f$ P(k,\tau)\f$ and the matter transfer functions \f$ T_i(k,\tau)\f$ - * will be stored. - * - * @param pba Input: pointer to background structure (for z to tau conversion) - * @param ppt Input: pointer to perturbation structure (contain source functions) - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_k_and_tau( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_k; - int index_tau; - double tau_min; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - /** - check the maximum redshift z_max_pk at which \f$P(k,z)\f$ and \f$ T_i(k,z)\f$ should be - computable by interpolation. If it is equal to zero, only \f$ P(k,z=0)\f$ - needs to be computed. If it is higher, we will store in a table - various P(k,tau) at several values of tau generously encompassing - the range 0z_max_pk < 0), - psp->error_message, - "asked for negative redshift z=%e",psp->z_max_pk); - - /* if z_max_pk=0, there is just one value to store */ - if (psp->z_max_pk == 0.) { - psp->ln_tau_size=1; - } - - /* if z_max_pk>0, store several values (with a comfortable margin above z_max_pk) in view of interpolation */ - else{ - - /* find the first relevant value of tau (last value in the table tau_ampling before tau(z_max)) and infer the number of values of tau at which P(k) must be stored */ - - class_call(background_tau_of_z(pba,psp->z_max_pk,&tau_min), - pba->error_message, - psp->error_message); - - index_tau=0; - class_test((tau_min <= ppt->tau_sampling[index_tau]), - psp->error_message, - "you asked for zmax=%e, i.e. taumin=%e, smaller than or equal to the first possible value =%e; it should be strictly bigger for a successfull interpolation",psp->z_max_pk,tau_min,ppt->tau_sampling[0]); - - while (ppt->tau_sampling[index_tau] < tau_min){ - index_tau++; - } - index_tau --; - class_test(index_tau<0, - psp->error_message, - "by construction, this should never happen, a bug must have been introduced somewhere"); - - /* whenever possible, take a few more values in to avoid boundary effects in the interpolation */ - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - psp->ln_tau_size=ppt->tau_size-index_tau; - - } - - /** - allocate and fill table of tau values at which \f$P(k,\tau)\f$ and \f$T_i(k,\tau)\f$ are stored */ - - class_alloc(psp->ln_tau,sizeof(double)*psp->ln_tau_size,psp->error_message); - - for (index_tau=0; index_tauln_tau_size; index_tau++) { - psp->ln_tau[index_tau]=log(ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size]); - } - - /** - allocate and fill table of k values at which \f$ P(k,\tau)\f$ is stored */ - - psp->ln_k_size = ppt->k_size[ppt->index_md_scalars]; - class_alloc(psp->ln_k,sizeof(double)*psp->ln_k_size,psp->error_message); - - for (index_k=0; index_kln_k_size; index_k++) { - class_test(ppt->k[ppt->index_md_scalars][index_k] <= 0., - psp->error_message, - "stop to avoid segmentation fault"); - psp->ln_k[index_k]=log(ppt->k[ppt->index_md_scalars][index_k]); - } - - return _SUCCESS_; -} - -/** - * This routine computes a table of values for all matter power spectra P(k), - * given the source functions and primordial spectra. - * - * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) - * @param ppt Input: pointer to perturbation structure (contain source functions) - * @param ppm Input: pointer to primordial structure - * @param pnl Input: pointer to nonlinear structure - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_pk( - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int index_ic1,index_ic2,index_ic1_ic2; - int index_k; - int index_tau; - double * primordial_pk; /* array with argument primordial_pk[index_ic_ic] */ - double source_ic1; - double source_ic2; - double ln_pk_tot; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - index_md = psp->index_md_scalars; - - /** - allocate temporary vectors where the primordial spectrum and the background quantities will be stored */ - - class_alloc(primordial_pk,psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); - - /** - allocate and fill array of \f$P(k,\tau)\f$ values */ - - class_alloc(psp->ln_pk, - sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md], - psp->error_message); - - if (pnl->method != nl_none) { - class_alloc(psp->ln_pk_nl, - sizeof(double)*psp->ln_tau_size*psp->ln_k_size, - psp->error_message); - } - else { - psp->ln_pk_nl = NULL; - } - - for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { - for (index_k=0; index_kln_k_size; index_k++) { - - class_call(primordial_spectrum_at_k(ppm,index_md,logarithmic,psp->ln_k[index_k],primordial_pk), - ppm->error_message, - psp->error_message); - - ln_pk_tot =0; - - /* curvature primordial spectrum: - P_R(k) = 1/(2pi^2) k^3 - so, primordial curvature correlator: - = (2pi^2) k^-3 P_R(k) - so, delta_m correlator: - P(k) = = (2pi^2) k^-3 (source_m)^2 P_R(k) - - For isocurvature or cross adiabatic-isocurvature parts, - replace one or two 'R' by 'S_i's */ - - /* part diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = - log(2.*_PI_*_PI_/exp(3.*psp->ln_k[index_k]) - *source_ic1*source_ic1 - *exp(primordial_pk[index_ic1_ic2])); - - ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; - - } - - /* part non-diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - source_ic2 = ppt->sources[index_md] - [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = - primordial_pk[index_ic1_ic2]*SIGN(source_ic1)*SIGN(source_ic2); - - ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; - - } - else { - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; - } - } - } - - /* if non-linear corrections required, compute the total non-linear matter power spectrum */ - - if (pnl->method != nl_none) { - - psp->ln_pk_nl[index_tau * psp->ln_k_size + index_k] = - ln_pk_tot - + 2.*log(pnl->nl_corr_density[(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]); - - } - } - } - - /**- if interpolation of \f$P(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (psp->ln_tau_size > 1) { - - class_alloc(psp->ddln_pk,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); - - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->ddln_pk, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - } - - /* compute sigma8 (mean variance today in sphere of radius 8/h Mpc */ - - class_call(spectra_sigma(pba,ppm,psp,8./pba->h,0.,&(psp->sigma8)), - psp->error_message, - psp->error_message); - - if (psp->spectra_verbose>0) - fprintf(stdout," -> sigma8=%g (computed till k = %g h/Mpc)\n", - psp->sigma8, - exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - - /**- if interpolation of \f$ P_{NL}(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (pnl->method != nl_none) { - if (psp->ln_tau_size > 1) { - - class_alloc(psp->ddln_pk_nl,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); - - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk_nl, - psp->ln_k_size, - psp->ddln_pk_nl, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - } - } - - free (primordial_pk); - - return _SUCCESS_; -} - -/** - * This routine computes sigma(R) given P(k) (does not check that k_max is large - * enough) - * - * @param pba Input: pointer to background structure - * @param ppm Input: pointer to primordial structure - * @param psp Input: pointer to spectra structure - * @param z Input: redshift - * @param R Input: radius in Mpc - * @param sigma Output: variance in a sphere of radius R (dimensionless) - */ - -int spectra_sigma( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double R, - double z, - double * sigma - ) { - - double pk; - double * pk_ic = NULL; - - double * array_for_sigma; - int index_num; - int index_k; - int index_y; - int index_ddy; - int i; - - double k,W,x; - - if (psp->ic_ic_size[psp->index_md_scalars]>1) - class_alloc(pk_ic, - psp->ic_ic_size[psp->index_md_scalars]*sizeof(double), - psp->error_message); - - i=0; - index_k=i; - i++; - index_y=i; - i++; - index_ddy=i; - i++; - index_num=i; - - class_alloc(array_for_sigma, - psp->ln_k_size*index_num*sizeof(double), - psp->error_message); - - for (i=0;iln_k_size;i++) { - k=exp(psp->ln_k[i]); - if (i == (psp->ln_k_size-1)) k *= 0.9999999; // to prevent rounding error leading to k being bigger than maximum value - x=k*R; - W=3./x/x/x*(sin(x)-x*cos(x)); - class_call(spectra_pk_at_k_and_z(pba,ppm,psp,k,z,&pk,pk_ic), - psp->error_message, - psp->error_message); - array_for_sigma[i*index_num+index_k]=k; - array_for_sigma[i*index_num+index_y]=k*k*pk*W*W; - } - - class_call(array_spline(array_for_sigma, - index_num, - psp->ln_k_size, - index_k, - index_y, - index_ddy, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); + if (psp->has_dl == _TRUE_) + for (index_ct=psp->index_ct_dl; + index_ct < psp->index_ct_dl+(psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag)); + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - class_call(array_integrate_all_spline(array_for_sigma, - index_num, - psp->ln_k_size, - index_k, - index_y, - index_ddy, - sigma, - psp->error_message), - psp->error_message, - psp->error_message); + } + if (ppt->has_tensors == _TRUE_) { - free(array_for_sigma); + /* spectra computed up to l_tensor_max */ - if (psp->ic_ic_size[psp->index_md_scalars]>1) - free(pk_ic); + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_tt] = ppt->l_tensor_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_ee] = ppt->l_tensor_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_te] = ppt->l_tensor_max; + if (psp->has_bb == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_bb] = ppt->l_tensor_max; + } - *sigma = sqrt(*sigma/(2.*_PI_*_PI_)); + /* maximizations */ + psp->l_max_tot = 0.; + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->l_max[index_md] = 0.; + for (index_ct=0.; index_ctct_size; index_ct++) + psp->l_max[index_md] = MAX(psp->l_max[index_md],psp->l_max_ct[index_md][index_ct]); + psp->l_max_tot = MAX(psp->l_max_tot,psp->l_max[index_md]); + } + } return _SUCCESS_; } /** - * This routine computes a table of values for all matter power spectra P(k), - * given the source functions and primordial spectra. + * This routine computes a table of values for all harmonic spectra \f$ C_l \f$'s, + * given the transfer functions and primordial spectra. * - * @param pba Input: pointer to background structure (will provide density of each species) - * @param ppt Input: pointer to perturbation structure (contain source functions) + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure * @param psp Input/Output: pointer to spectra structure * @return the error status */ -int spectra_matter_transfers( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ) { +int spectra_cls( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ) { /** Summary: */ /** - define local variables */ int index_md; - int index_ic; - int index_k; - int index_tau; - int last_index_back; - double * pvecback_sp_long; /* array with argument pvecback_sp_long[pba->index_bg] */ - double delta_i,theta_i,rho_i; - double delta_rho_tot,rho_tot; - double rho_plus_p_theta_tot,rho_plus_p_tot; - int n_ncdm; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - index_md = psp->index_md_scalars; - - /** - allocate and fill array of \f$ T_i(k,\tau)\f$ values */ - - class_alloc(psp->matter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); - - /** - allocate temporary vectors where the background quantities will be stored */ - - class_alloc(pvecback_sp_long,pba->bg_size*sizeof(double),psp->error_message); - - for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { - - class_call(background_at_tau(pba, - ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size], - /* for this last argument we could have passed - exp(psp->ln_tau[index_tau]) but we would then loose - precision in the exp(log(x)) operation) */ - pba->long_info, - pba->inter_normal, - &last_index_back, - pvecback_sp_long), - pba->error_message, - psp->error_message); - - for (index_k=0; index_kln_k_size; index_k++) { - - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { - - delta_rho_tot=0.; - rho_tot=0.; - rho_plus_p_theta_tot=0.; - rho_plus_p_tot=0.; - - /* T_g(k,tau) */ - - rho_i = pvecback_sp_long[pba->index_bg_rho_g]; + int index_ic1,index_ic2,index_ic1_ic2; + int index_l; + int index_ct; + int cl_integrand_num_columns; - if (ppt->has_source_delta_g == _TRUE_) { + double * cl_integrand; /* array with argument cl_integrand[index_k*cl_integrand_num_columns+1+psp->index_ct] */ + double * transfer_ic1; /* array with argument transfer_ic1[index_tt] */ + double * transfer_ic2; /* idem */ + double * primordial_pk; /* array with argument primordial_pk[index_ic_ic]*/ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_g] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" jus after leaving the + parallel region. */ + int abort; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_g] = delta_i; +#ifdef _OPENMP + /* instrumentation times */ + double tstart, tstop; +#endif - delta_rho_tot += rho_i * delta_i; + /** - allocate pointers to arrays where results will be stored */ - rho_tot += rho_i; + class_alloc(psp->l_size,sizeof(int)*psp->md_size,psp->error_message); + class_alloc(psp->cl,sizeof(double *)*psp->md_size,psp->error_message); + class_alloc(psp->ddcl,sizeof(double *)*psp->md_size,psp->error_message); - } + psp->l_size_max = ptr->l_size_max; + class_alloc(psp->l,sizeof(double)*psp->l_size_max,psp->error_message); - if (ppt->has_source_theta_g == _TRUE_) { + /** - store values of l */ + for (index_l=0; index_l < psp->l_size_max; index_l++) { + psp->l[index_l] = (double)ptr->l[index_l]; + } - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_g] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /** - loop over modes (scalar, tensors, etc). For each mode: */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_g] = theta_i; + for (index_md = 0; index_md < psp->md_size; index_md++) { - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + /** - --> (a) store number of l values for this mode */ - rho_plus_p_tot += 4./3. * rho_i; + psp->l_size[index_md] = ptr->l_size[index_md]; - } + /** - --> (b) allocate arrays where results will be stored */ - /* T_b(k,tau) */ + class_alloc(psp->cl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + class_alloc(psp->ddcl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + cl_integrand_num_columns = 1+psp->ct_size*2; /* one for k, ct_size for each type, ct_size for each second derivative of each type */ - rho_i = pvecback_sp_long[pba->index_bg_rho_b]; + /** - --> (c) loop over initial conditions */ - if (ppt->has_source_delta_b == _TRUE_) { + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_b] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* non-diagonal coefficients should be computed only if non-zero correlation */ + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_b] = delta_i; + /* initialize error management flag */ + abort = _FALSE_; - delta_rho_tot += rho_i * delta_i; + /* beginning of parallel region */ - } +#pragma omp parallel \ + shared(ptr,ppm,index_md,psp,ppt,cl_integrand_num_columns,index_ic1,index_ic2,abort) \ + private(tstart,cl_integrand,primordial_pk,transfer_ic1,transfer_ic2,index_l,tstop) - rho_tot += rho_i; + { - if (ppt->has_source_theta_b == _TRUE_) { +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_b] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + class_alloc_parallel(cl_integrand, + ptr->q_size*cl_integrand_num_columns*sizeof(double), + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_b] = theta_i; + class_alloc_parallel(primordial_pk, + psp->ic_ic_size[index_md]*sizeof(double), + psp->error_message); - rho_plus_p_theta_tot += rho_i * theta_i; + class_alloc_parallel(transfer_ic1, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); - } + class_alloc_parallel(transfer_ic2, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); - rho_plus_p_tot += rho_i; +#pragma omp for schedule (dynamic) - /* T_cdm(k,tau) */ + /** - ---> loop over l values defined in the transfer module. + For each l, compute the \f$ C_l\f$'s for all types (TT, TE, ...) + by convolving primordial spectra with transfer functions. + This elementary task is assigned to spectra_compute_cl() */ - if (pba->has_cdm == _TRUE_) { + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - rho_i = pvecback_sp_long[pba->index_bg_rho_cdm]; +#pragma omp flush(abort) - if (ppt->has_source_delta_cdm == _TRUE_) { + class_call_parallel(spectra_compute_cl(pba, + ppt, + ptr, + ppm, + psp, + index_md, + index_ic1, + index_ic2, + index_l, + cl_integrand_num_columns, + cl_integrand, + primordial_pk, + transfer_ic1, + transfer_ic2), + psp->error_message, + psp->error_message); - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_cdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + } /* end of loop over l */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_cdm] = delta_i; +#ifdef _OPENMP + tstop = omp_get_wtime(); + if (psp->spectra_verbose > 1) + printf("In %s: time spent in parallel region (loop over l's) = %e s for thread %d\n", + __func__,tstop-tstart,omp_get_thread_num()); +#endif + free(cl_integrand); - delta_rho_tot += rho_i * delta_i; + free(primordial_pk); - } + free(transfer_ic1); - rho_tot += rho_i; + free(transfer_ic2); - if (ppt->has_source_theta_cdm == _TRUE_) { + } /* end of parallel region */ - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_cdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (abort == _TRUE_) return _FAILURE_; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_cdm] = theta_i; + } + else { - rho_plus_p_theta_tot += rho_i * theta_i; + /* set non-diagonal coefficients to zero if pair of ic's uncorrelated */ + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { + for (index_ct=0; index_ctct_size; index_ct++) { + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = 0.; + } } - - rho_plus_p_tot += rho_i; - } + } + } - /* T_dcdm(k,tau) */ + /** - --> (d) now that for a given mode, all possible \f$ C_l\f$'s have been computed, + compute second derivative of the array in which they are stored, + in view of spline interpolation. */ - if (pba->has_dcdm == _TRUE_) { + class_call(array_spline_table_lines(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + psp->ddcl[index_md], + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + } - rho_i = pvecback_sp_long[pba->index_bg_rho_dcdm]; + return _SUCCESS_; - if (ppt->has_source_delta_dcdm == _TRUE_) { +} - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dcdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +/** + * This routine computes the \f$ C_l\f$'s for a given mode, pair of initial conditions + * and multipole, but for all types (TT, TE...), by convolving the + * transfer functions with the primordial spectra. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/Output: pointer to spectra structure (result stored here) + * @param index_md Input: index of mode under consideration + * @param index_ic1 Input: index of first initial condition in the correlator + * @param index_ic2 Input: index of second initial condition in the correlator + * @param index_l Input: index of multipole under consideration + * @param cl_integrand_num_columns Input: number of columns in cl_integrand + * @param cl_integrand Input: an allocated workspace + * @param primordial_pk Input: table of primordial spectrum values + * @param transfer_ic1 Input: table of transfer function values for first initial condition + * @param transfer_ic2 Input: table of transfer function values for second initial condition + * @return the error status + */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dcdm] = delta_i; +int spectra_compute_cl( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + int index_md, + int index_ic1, + int index_ic2, + int index_l, + int cl_integrand_num_columns, + double * cl_integrand, + double * primordial_pk, + double * transfer_ic1, + double * transfer_ic2 + ) { - delta_rho_tot += rho_i * delta_i; + int index_q; + int index_tt; + int index_ct; + int index_d1,index_d2; + double k; + double clvalue; + int index_ic1_ic2; + double transfer_ic1_temp=0.; + double transfer_ic2_temp=0.; + double * transfer_ic1_nc=NULL; + double * transfer_ic2_nc=NULL; + double factor; + int index_q_spline=0; - } + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - rho_tot += rho_i; + if (ppt->has_cl_number_count == _TRUE_) { + class_alloc(transfer_ic1_nc,psp->d_size*sizeof(double),psp->error_message); + class_alloc(transfer_ic2_nc,psp->d_size*sizeof(double),psp->error_message); + } - if (ppt->has_source_theta_dcdm == _TRUE_) { + for (index_q=0; index_q < ptr->q_size; index_q++) { - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dcdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + //q = ptr->q[index_q]; + k = ptr->k[index_md][index_q]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dcdm] = theta_i; + cl_integrand[index_q*cl_integrand_num_columns+0] = k; - rho_plus_p_theta_tot += rho_i * theta_i; + class_call(primordial_spectrum_at_k(ppm,index_md,linear,k,primordial_pk), + ppm->error_message, + psp->error_message); - } + /* above routine checks that k>0: no possible division by zero below */ - rho_plus_p_tot += rho_i; + for (index_tt=0; index_tt < ptr->tt_size[index_md]; index_tt++) { - } + transfer_ic1[index_tt] = + ptr->transfer[index_md] + [((index_ic1 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; - /* T_scf(k,tau) */ + if (index_ic1 == index_ic2) { + transfer_ic2[index_tt] = transfer_ic1[index_tt]; + } + else { + transfer_ic2[index_tt] = ptr->transfer[index_md] + [((index_ic2 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; + } + } - if (pba->has_scf == _TRUE_) { + /* define combinations of transfer functions */ - rho_i = pvecback_sp_long[pba->index_bg_rho_scf]; + if (ppt->has_cl_cmb_temperature == _TRUE_) { - if (ppt->has_source_delta_scf == _TRUE_) { + if (_scalars_) { - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_scf] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t0] + transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t0] + transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_scf] = delta_i; + } - delta_rho_tot += rho_i * delta_i; + if (_vectors_) { - } + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - rho_tot += rho_i; + } - if (ppt->has_source_theta_scf == _TRUE_) { + if (_tensors_) { - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_scf] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t2]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_scf] = theta_i; + } + } - rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]) * theta_i; + if (ppt->has_cl_number_count == _TRUE_) { - } + for (index_d1=0; index_d1d_size; index_d1++) { - rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]); + transfer_ic1_nc[index_d1] = 0.; + transfer_ic2_nc[index_d1] = 0.; + if (ppt->has_nc_density == _TRUE_) { + transfer_ic1_nc[index_d1] += transfer_ic1[ptr->index_tt_density+index_d1]; + transfer_ic2_nc[index_d1] += transfer_ic2[ptr->index_tt_density+index_d1]; } + if (ppt->has_nc_rsd == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_rsd+index_d1] + + transfer_ic1[ptr->index_tt_d0+index_d1] + + transfer_ic1[ptr->index_tt_d1+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_rsd+index_d1] + + transfer_ic2[ptr->index_tt_d0+index_d1] + + transfer_ic2[ptr->index_tt_d1+index_d1]; + } - /* T_fld(k,tau) */ + if (ppt->has_nc_lens == _TRUE_) { + transfer_ic1_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic1[ptr->index_tt_nc_lens+index_d1]; + transfer_ic2_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic2[ptr->index_tt_nc_lens+index_d1]; + } - if (pba->has_fld == _TRUE_) { + if (ppt->has_nc_gr == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_nc_g1+index_d1] + + transfer_ic1[ptr->index_tt_nc_g2+index_d1] + + transfer_ic1[ptr->index_tt_nc_g3+index_d1] + + transfer_ic1[ptr->index_tt_nc_g4+index_d1] + + transfer_ic1[ptr->index_tt_nc_g5+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_nc_g1+index_d1] + + transfer_ic2[ptr->index_tt_nc_g2+index_d1] + + transfer_ic2[ptr->index_tt_nc_g3+index_d1] + + transfer_ic2[ptr->index_tt_nc_g4+index_d1] + + transfer_ic2[ptr->index_tt_nc_g5+index_d1]; + } - rho_i = pvecback_sp_long[pba->index_bg_rho_fld]; + } + } - if (ppt->has_source_delta_fld == _TRUE_) { + /* integrand of Cl's */ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_fld] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* note: we must integrate - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_fld] = delta_i; + C_l = int [4 pi dk/k calP(k) Delta1_l(q) Delta2_l(q)] - delta_rho_tot += rho_i * delta_i; + where calP(k) is the dimensionless + power spectrum equal to a constant in the scale-invariant case, + and to P(k) = A_s k^(ns-1) otherwise and q=sqrt(k2+K) (scalars) + or sqrt(k2+2K) (vectors) or sqrt(k2+3K) (tensors) - } + In the literature, people often rewrite the integral in terms + of q and absorb the Jacobian of the change of variables in a redefinition of the primodial + spectrum. Let us illustrate this for scalars: - rho_tot += rho_i; + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-K)] = q2dq * 1/[q(q2-K)] - if (ppt->has_source_theta_fld == _TRUE_) { + This factor 1/[q(q2-K)] is commonly absorbed in the definition of calP. Then one would have - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_fld] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + C_l = int [4 pi q2 dq {A_s k^(ns-1)/[q(q2-K)]} Delta1_l(q) Delta2_l(q)] - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_fld] = theta_i; + Sometimes in the literature, the factor (k2-3K)=(q2-4K) present + in the initial conditions of scalar transfer functions (if + normalized to curvature R=1) is also absorbed in the definition + of the power spectrum. Then the curvature power spectrum reads - rho_plus_p_theta_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i * theta_i; + calP = (q2-4K)/[q(q2-K)] * (k/k)^ns - } + In CLASS we prefer to define calP = (k/k)^ns like in the flat + case, to have the factor (q2-4K) in the initialk conditions, + and the factor 1/[q(q2-K)] doesn't need to be there since we + integrate over dk/k. - rho_plus_p_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i; + For tensors, the change of variable described above gives a slightly different result: - } + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-3K)] = q2dq * 1/[q(q2-3K)] - /* T_ur(k,tau) */ + But for tensors there are extra curvature-related correction factors to + take into account. See the comments in the perturbation module, + related to initial conditions for tensors. - if (pba->has_ur == _TRUE_) { + */ - rho_i = pvecback_sp_long[pba->index_bg_rho_ur]; + factor = 4. * _PI_ / k; - if (ppt->has_source_delta_ur == _TRUE_) { + if (psp->has_tt == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tt]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_temp + * transfer_ic2_temp + * factor; - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ur] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (psp->has_ee == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ee]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_e] + * transfer_ic2[ptr->index_tt_e] + * factor; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ur] = delta_i; + if (psp->has_te == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_te]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_e] + + transfer_ic1[ptr->index_tt_e] * transfer_ic2_temp) + * factor; - delta_rho_tot += rho_i * delta_i; + if (_tensors_ && (psp->has_bb == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_bb]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_b] + * transfer_ic2[ptr->index_tt_b] + * factor; - } + if (_scalars_ && (psp->has_pp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pp]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lcmb] + * transfer_ic2[ptr->index_tt_lcmb] + * factor; - rho_tot += rho_i; + if (_scalars_ && (psp->has_tp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tp]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_temp) + * factor; - if (ppt->has_source_theta_ur == _TRUE_) { + if (_scalars_ && (psp->has_ep == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ep]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_e] * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2[ptr->index_tt_e]) + * factor; - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ur] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (_scalars_ && (psp->has_dd == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dd+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] + * transfer_ic2_nc[index_d2] + * factor; + index_ct++; + } + } + } - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ur] = theta_i; + if (_scalars_ && (psp->has_td == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_td+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2_temp) + * factor; + } + } - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + if (_scalars_ && (psp->has_pd == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pd+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lcmb]) + * factor; + } + } - } + if (_scalars_ && (psp->has_ll == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ll+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lensing+index_d1] + * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; + } + } + } - rho_plus_p_tot += 4./3. * rho_i; + if (_scalars_ && (psp->has_tl == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tl+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lensing+index_d1] + + transfer_ic1[ptr->index_tt_lensing+index_d1] * transfer_ic2_temp) + * factor; + } + } + if (_scalars_ && (psp->has_dl == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dl+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; } + } + } + } - /* T_dr(k,tau) */ - - if (pba->has_dr == _TRUE_) { + for (index_ct=0; index_ctct_size; index_ct++) { - rho_i = pvecback_sp_long[pba->index_bg_rho_dr]; + /* treat null spectra (C_l^BB of scalars, C_l^pp of tensors, etc. */ - if (ppt->has_source_delta_dr == _TRUE_) { + if ((_scalars_ && (psp->has_bb == _TRUE_) && (index_ct == psp->index_ct_bb)) || + (_tensors_ && (psp->has_pp == _TRUE_) && (index_ct == psp->index_ct_pp)) || + (_tensors_ && (psp->has_tp == _TRUE_) && (index_ct == psp->index_ct_tp)) || + (_tensors_ && (psp->has_ep == _TRUE_) && (index_ct == psp->index_ct_ep)) || + (_tensors_ && (psp->has_dd == _TRUE_) && (index_ct == psp->index_ct_dd)) || + (_tensors_ && (psp->has_td == _TRUE_) && (index_ct == psp->index_ct_td)) || + (_tensors_ && (psp->has_pd == _TRUE_) && (index_ct == psp->index_ct_pd)) || + (_tensors_ && (psp->has_ll == _TRUE_) && (index_ct == psp->index_ct_ll)) || + (_tensors_ && (psp->has_tl == _TRUE_) && (index_ct == psp->index_ct_tl)) || + (_tensors_ && (psp->has_dl == _TRUE_) && (index_ct == psp->index_ct_dl)) + ) { - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dr] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] = 0.; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dr] = delta_i; + } + /* for non-zero spectra, integrate over q */ + else { - delta_rho_tot += rho_i * delta_i; + /* spline the integrand over the whole range of k's */ - } + class_call(array_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); - rho_tot += rho_i; + /* Technical point: we will now do a spline integral over the + whole range of k's, excepted in the closed (K>0) case. In + that case, it is a bad idea to spline over the values of k + corresponding to nuindex_q_flat_approximation, to tell the integration + routine that below this index, it should treat the integral + as a trapezoidal one. For testing, one is free to set + index_q_spline to 0, to enforce spline integration + everywhere, or to (ptr->q_size-1), to enforce trapezoidal + integration everywhere. */ - if (ppt->has_source_theta_dr == _TRUE_) { + if (pba->sgnK == 1) { + index_q_spline = ptr->index_q_flat_approximation; + } - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dr] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + class_call(array_integrate_all_trapzd_or_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + index_q_spline, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + &clvalue, + psp->error_message), + psp->error_message, + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dr] = theta_i; + /* in the closed case, instead of an integral, we have a + discrete sum. In practice, this does not matter: the previous + routine does give a correct approximation of the discrete + sum, both in the trapezoidal and spline regions. The only + error comes from the first point: the previous routine + assumes a weight for the first point which is too small + compared to what it would be in the an actual discrete + sum. The line below correct this problem in an exact way. + */ - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + if (pba->sgnK == 1) { + clvalue += cl_integrand[1+index_ct] * ptr->q[0]/ptr->k[0][0]*sqrt(pba->K)/2.; + } - } + /* we have the correct C_l now. We can store it in the transfer structure. */ - rho_plus_p_tot += 4./3. * rho_i; + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = clvalue; - } + } + } - /* T_ncdm_i(k,tau) */ + if (ppt->has_cl_number_count == _TRUE_) { + free(transfer_ic1_nc); + free(transfer_ic2_nc); + } - if (pba->has_ncdm == _TRUE_) { + return _SUCCESS_; - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { +} - rho_i = pvecback_sp_long[pba->index_bg_rho_ncdm1+n_ncdm]; + /* deprecated functions (since v2.8) */ - if (ppt->has_source_delta_ncdm == _TRUE_) { +/** + * Matter power spectrum for arbitrary redshift and for all initial conditions. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @param output_cb_tot Output: CDM+baryon power spectrum P_cb(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_cb_ic Output: for each pair of initial conditions, CDM+baryon power spectra P_cb(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @return the error status + */ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ncdm1+n_ncdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ + double * output_ic, /* array with argument output_tot[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] (must be already allocated only if more than one initial condition) */ + double * output_cb_tot, /* same as output_tot for the baryon+CDM only */ + double * output_cb_ic /* same as output_ic for the baryon+CDM only */ + ) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ncdm1+n_ncdm] = delta_i; + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_at_z() which is deprecated since v2.8. Try using nonlinear_pk_at_z() instead.\n"); - delta_rho_tot += rho_i * delta_i; + class_call(nonlinear_pks_at_z( + pba, + psp->pnl, + mode, + pk_linear, + z, + output_tot, + output_ic, + output_cb_tot, + output_cb_ic + ), + psp->pnl->error_message, + psp->error_message); - } + return _SUCCESS_; - rho_tot += rho_i; +} - if (ppt->has_source_theta_ncdm == _TRUE_) { +/** + * Matter power spectrum for arbitrary wavenumber, redshift and initial condition. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_linear_at_k_and_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ + * @param pk_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3\f$ + * @param pk_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3 \f$ + * @param pk_cb_ic Output: for each pair of initial conditions, b+CDM power spectra P(k) in \f$ Mpc^3\f$ + * @return the error status + */ - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ncdm1+n_ncdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, /* pointer to a single number (must be already allocated) */ + double * pk_ic, /* array of argument pk_ic[index_ic1_ic2] + (must be already allocated only if several initial conditions) */ + double * pk_cb_tot, /* same as pk_tot for baryon+CDM part only */ + double * pk_cb_ic /* same as pk_ic for baryon+CDM part only */ + ) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ncdm1+n_ncdm] = theta_i; + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_at_k_and_z() which is deprecated since v2.8. Try using nonlinear_pk_linear_at_k_and_z() instead.\n"); - rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]) * theta_i; + class_call(nonlinear_pks_at_k_and_z(pba, + ppm, + psp->pnl, + pk_linear, + k, + z, + pk_tot, + pk_ic, + pk_cb_tot, + pk_cb_ic), + psp->pnl->error_message, + psp->error_message); - } + return _SUCCESS_; +} - rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]); +/** + * Non-linear total matter power spectrum for arbitrary redshift. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) + * @return the error status + */ - } +int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ + double * output_cb_tot + ) { - } + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_nl_at_z() which is deprecated since v2.8. Try using nonlinear_pk_at_z() instead.\n"); - if (ppt->has_source_phi == _TRUE_) { + class_call(nonlinear_pks_at_z(pba, + psp->pnl, + mode, + pk_nonlinear, + z, + output_tot, + NULL, + output_cb_tot, + NULL + ), + psp->pnl->error_message, + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_phi] = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_phi] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + return _SUCCESS_; - } +} - if (ppt->has_source_psi == _TRUE_) { +/** + * Non-linear total matter power spectrum for arbitrary wavenumber and redshift. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_k_and_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ + * @param pk_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3\f$ + * @return the error status + */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_psi] = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_psi] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, /* pointer to a single number (must be already allocated) */ + double * pk_cb_tot /* same as pk_tot for baryon+CDM only */ + ) { - } + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_nl_at_k_and_z() which is deprecated since v2.8. Try using nonlinear_pk_at_k_and_z() instead.\n"); - /* could include homogeneous component in rho_tot if uncommented (leave commented to match CMBFAST/CAMB definition) */ + class_call(nonlinear_pks_at_k_and_z(pba, + ppm, + psp->pnl, + pk_nonlinear, + k, + z, + pk_tot, + NULL, + pk_cb_tot, + NULL + ), + psp->pnl->error_message, + psp->error_message); - /* if (pba->has_lambda == _TRUE_) { */ + return _SUCCESS_; - /* rho_i = pvecback_sp_long[pba->index_bg_rho_lambda]; */ +} - /* rho_tot += rho_i; */ - /* } */ +/** + * Return the P(k,z) for a grid of (k_i,z_j) passed in input, + * for all available pk types (_m, _cb), + * either linear or nonlinear depending on input. + * + * This function is deprecated since v2.8. Try using nonlinear_pks_at_kvec_and_zvec() instead. + * + * @param pba Input: pointer to background structure + * @param psp Input: pointer to spectra structure + * @param kvec Input: array of wavenumbers in ascending order (in 1/Mpc) + * @param kvec_size Input: size of array of wavenumbers + * @param zvec Input: array of redshifts in arbitrary order + * @param zvec_size Input: size of array of redshifts + * @param pk_tot_out Output: P(k_i,z_j) for total matter (if available) in Mpc**3 + * @param pk_cb_tot_out Output: P_cb(k_i,z_j) for cdm+baryons (if available) in Mpc**3 + * @param nonlinear Input: _TRUE_ or _FALSE_ (to output nonlinear or linear P(k,z)) + * @return the error status + */ - /* T_tot(k,tau) */ +int spectra_fast_pk_at_kvec_and_zvec( + struct background * pba, + struct spectra * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, // pk_tot_out[index_zvec*kvec_size+index_kvec], + // already allocated + //(or NULL if user knows there is no _m output) + double * pk_cb_tot_out, // idem + int nonlinear + ) { + enum pk_outputs pk_output; + + fprintf(stderr," -> [WARNING:] You are calling the function spectra_fast_pks_at_kvec_and_zvec() which is deprecated since v2.8. Try using nonlinear_pk_at_kvec_and_zvec() instead.\n"); + + if (nonlinear == _TRUE_) + pk_output = pk_nonlinear; + else + pk_output = pk_linear; + + class_call(nonlinear_pks_at_kvec_and_zvec( + pba, + psp->pnl, + pk_output, + kvec, + kvec_size, + zvec, + zvec_size, + pk_tot_out, + pk_cb_tot_out), + psp->pnl->error_message, + psp->error_message); - if (ppt->has_density_transfers == _TRUE_) { + return _SUCCESS_; +} - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_tot] = delta_rho_tot/rho_tot; +/** + * This routine computes sigma(R) given P(k) for total matter power + * spectrum (does not check that k_max is large enough) + * + * This function is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param sigma Output: variance in a sphere of radius R (dimensionless) + * @return the error status + */ - } +int spectra_sigma( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double * sigma + ) { - if (ppt->has_velocity_transfers == _TRUE_) { + fprintf(stderr," -> [WARNING:] You are calling the function spectra_sigma() which is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead.\n"); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_tot] = rho_plus_p_theta_tot/rho_plus_p_tot; + if (psp->pnl->has_pk_m) { - } + class_call(nonlinear_sigma_at_z(pba, + psp->pnl, + R, + z, + psp->pnl->index_pk_m, + 80., // hardcoded, yes, but the function is deprecated... + sigma), + psp->pnl->error_message, + psp->error_message); - } - } } - /**- if interpolation of \f$ P(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (psp->ln_tau_size > 1) { + return _SUCCESS_; +} - class_alloc(psp->ddmatter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); +/** + * This routine computes sigma(R) given P(k) for baryon+cdm power + * spectrum (does not check that k_max is large enough) + * + * This function is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param sigma_cb Output: variance in a sphere of radius R (dimensionless) + * @return the error status + */ - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->matter_transfer, - psp->ic_size[index_md]*psp->ln_k_size*psp->tr_size, - psp->ddmatter_transfer, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, +int spectra_sigma_cb( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double * sigma_cb + ) { + + fprintf(stderr," -> [WARNING:] You are calling the function spectra_sigma_cb() which is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead.\n"); + + if (psp->pnl->has_pk_cb) { + + class_call(nonlinear_sigma_at_z(pba, + psp->pnl, + R, + z, + psp->pnl->index_pk_cb, + 80., // hardcoded, yes, but the function is deprecated... + sigma_cb), + psp->pnl->error_message, psp->error_message); - } - free (pvecback_sp_long); - return _SUCCESS_; } -int spectra_output_tk_titles(struct background *pba, - struct perturbs *ppt, - enum file_format output_format, - char titles[_MAXTITLESTRINGLENGTH_] - ){ - int n_ncdm; - char tmp[40]; - - if (output_format == class_format) { - class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); - if (ppt->has_density_transfers == _TRUE_) { - class_store_columntitle(titles,"d_g",_TRUE_); - class_store_columntitle(titles,"d_b",_TRUE_); - class_store_columntitle(titles,"d_cdm",pba->has_cdm); - class_store_columntitle(titles,"d_fld",pba->has_fld); - class_store_columntitle(titles,"d_ur",pba->has_ur); - if (pba->has_ncdm == _TRUE_) { - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { - sprintf(tmp,"d_ncdm[%d]",n_ncdm); - class_store_columntitle(titles,tmp,_TRUE_); - } - } - class_store_columntitle(titles,"d_dcdm",pba->has_dcdm); - class_store_columntitle(titles,"d_dr",pba->has_dr); - class_store_columntitle(titles,"d_scf",pba->has_scf); - class_store_columntitle(titles,"d_tot",_TRUE_); - class_store_columntitle(titles,"phi",ppt->has_source_phi); - class_store_columntitle(titles,"psi",ppt->has_source_psi); - } - if (ppt->has_velocity_transfers == _TRUE_) { - class_store_columntitle(titles,"t_g",_TRUE_); - class_store_columntitle(titles,"t_b",_TRUE_); - class_store_columntitle(titles,"t_cdm",((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous))); - class_store_columntitle(titles,"t_fld",pba->has_fld); - class_store_columntitle(titles,"t_ur",pba->has_ur); - if (pba->has_ncdm == _TRUE_) { - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { - sprintf(tmp,"t_ncdm[%d]",n_ncdm); - class_store_columntitle(titles,tmp,_TRUE_); - } - } - class_store_columntitle(titles,"t_dcdm",pba->has_dcdm); - class_store_columntitle(titles,"t_dr",pba->has_dr); - class_store_columntitle(titles,"t__scf",pba->has_scf); - class_store_columntitle(titles,"t_tot",_TRUE_); - } - } + /* deprecated functions (since v2.1) */ + +/** + * Obsolete function, superseeded by perturb_sources_at_tau() + * (at the time of the switch, this function was anyway never used anywhere) + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ - else if (output_format == camb_format) { +int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output /* array with argument output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] (must be already allocated) */ + ) { - class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); - class_store_columntitle(titles,"-T_cdm/k2",_TRUE_); - class_store_columntitle(titles,"-T_b/k2",_TRUE_); - class_store_columntitle(titles,"-T_g/k2",_TRUE_); - class_store_columntitle(titles,"-T_ur/k2",_TRUE_); - class_store_columntitle(titles,"-T_ncdm/k2",_TRUE_); - class_store_columntitle(titles,"-T_tot/k2",_TRUE_); - } + class_stop(psp->error_message, + "The function spectra_tk_at_z() is obsolete, use instead perturb_sources_at_tau(), it does the same"); return _SUCCESS_; } -int spectra_output_tk_data( +/** + * Obsolete function, superseeded by perturb_sources_at_tau() + * (at the time of the switch, this function was anyway never used anywhere) + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ + +int spectra_tk_at_k_and_z( struct background * pba, - struct perturbs * ppt, struct spectra * psp, - enum file_format output_format, + double k, double z, - int number_of_titles, - double *data + double * output /* array with argument output[index_ic*psp->tr_size+index_tr] (must be already allocated) */ ) { - int n_ncdm; - double k, k_over_h, k2; - double * tkfull=NULL; /* array with argument - pk_ic[(index_k * psp->ic_size[index_md] + index_ic)*psp->tr_size+index_tr] */ - double *tk; - double *dataptr; - - int index_md=0; - int index_ic; - int index_k; - int index_tr; - int storeidx; - - if (psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size > 0){ - class_alloc(tkfull, - psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size*sizeof(double), - psp->error_message); - } - - /** - compute \f$T_i(k)\f$ for each k (if several ic's, compute it for each ic; if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ - - /* if z_pk = 0, no interpolation needed */ - - if (z == 0.) { - - for (index_k=0; index_kln_k_size; index_k++) { - for (index_tr=0; index_trtr_size; index_tr++) { - for (index_ic=0; index_icic_size[index_md]; index_ic++) { - tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] = psp->matter_transfer[(((psp->ln_tau_size-1)*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr]; - } - } - } - } - - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { - - class_call(spectra_tk_at_z(pba, - psp, - z, - tkfull), - psp->error_message, - psp->error_message); - } - - /** - store data */ - - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { - - for (index_k=0; index_kln_k_size; index_k++) { - - storeidx = 0; - dataptr = data+index_ic*(psp->ln_k_size*number_of_titles)+index_k*number_of_titles; - tk = &(tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size]); - k = exp(psp->ln_k[index_k]); - k2 = k*k; - k_over_h = k/pba->h; - - class_store_double(dataptr, k_over_h, _TRUE_,storeidx); + class_stop(psp->error_message, + "The function spectra_tk_at_k_and_z() is obsolete, use instead perturb_sources_at_tau(), it does the same provided that you interpolate its output at some wavenumber k"); - /* indices for species associated with a velocity transfer function in Fourier space */ - - if (output_format == class_format) { - - if (ppt->has_density_transfers == _TRUE_) { - - class_store_double(dataptr,tk[psp->index_tr_delta_g],ppt->has_source_delta_g,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_b],ppt->has_source_delta_b,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_cdm],ppt->has_source_delta_cdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_fld],ppt->has_source_delta_fld,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_ur],ppt->has_source_delta_ur,storeidx); - if (pba->has_ncdm == _TRUE_){ - for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ - class_store_double(dataptr,tk[psp->index_tr_delta_ncdm1+n_ncdm],ppt->has_source_delta_ncdm,storeidx); - } - } - class_store_double(dataptr,tk[psp->index_tr_delta_dcdm],ppt->has_source_delta_dcdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_dr],ppt->has_source_delta_dr,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_scf],ppt->has_source_delta_scf,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_tot],_TRUE_,storeidx); - class_store_double(dataptr,tk[psp->index_tr_phi],ppt->has_source_phi,storeidx); - class_store_double(dataptr,tk[psp->index_tr_psi],ppt->has_source_psi,storeidx); - } - if (ppt->has_velocity_transfers == _TRUE_) { - - class_store_double(dataptr,tk[psp->index_tr_theta_g],ppt->has_source_theta_g,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_b],ppt->has_source_theta_b,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_cdm],ppt->has_source_theta_cdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_fld],ppt->has_source_theta_fld,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_ur],ppt->has_source_theta_ur,storeidx); - if (pba->has_ncdm == _TRUE_){ - for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ - class_store_double(dataptr,tk[psp->index_tr_theta_ncdm1+n_ncdm],ppt->has_source_theta_ncdm,storeidx); - } - } - class_store_double(dataptr,tk[psp->index_tr_theta_dcdm],ppt->has_source_theta_dcdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_dr],ppt->has_source_theta_dr,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_scf],ppt->has_source_theta_scf,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_tot],_TRUE_,storeidx); - - } - - } - else if (output_format == camb_format) { - - /* rescale and reorder the matter transfer functions following the CMBFAST/CAMB convention */ - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_cdm]/k2,ppt->has_source_delta_cdm,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_b]/k2,ppt->has_source_delta_b,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_g]/k2,ppt->has_source_delta_g,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ur]/k2,ppt->has_source_delta_ur,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ncdm1]/k2,ppt->has_source_delta_ncdm,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_tot]/k2,_TRUE_,storeidx,0.0); - } - } - } - - //Necessary because the size could be zero (if psp->tr_size is zero) - if (tkfull != NULL) - free(tkfull); + return _SUCCESS_; - return _SUCCESS_; } - int spectra_firstline_and_ic_suffix(struct perturbs *ppt, - int index_ic, - char first_line[_LINE_LENGTH_MAX_], - FileName ic_suffix){ - - first_line[0]='\0'; - ic_suffix[0]='\0'; - - - if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { - strcpy(ic_suffix,"ad"); - strcpy(first_line,"for adiabatic (AD) mode (normalized to initial curvature=1) "); - } - - if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { - strcpy(ic_suffix,"bi"); - strcpy(first_line,"for baryon isocurvature (BI) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { - strcpy(ic_suffix,"cdi"); - strcpy(first_line,"for CDM isocurvature (CDI) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { - strcpy(ic_suffix,"nid"); - strcpy(first_line,"for neutrino density isocurvature (NID) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { - strcpy(ic_suffix,"niv"); - strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode (normalized to initial entropy=1)"); - } - return _SUCCESS_; -} + /* end deprecated functions */ diff --git a/class/source/thermodynamics.c b/class/source/thermodynamics.c index 25d69e37..d02dffb9 100644 --- a/class/source/thermodynamics.c +++ b/class/source/thermodynamics.c @@ -155,9 +155,13 @@ int thermodynamics_at_z( /* Calculate Tb */ pvecthermo[pth->index_th_Tb] = pba->T_cmb*(1.+z); - /* Calculate cb2 (cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz)) */ + /* Calculate baryon equation of state parameter wb = (k_B/mu) Tb */ /* note that m_H / mu = 1 + (m_H/m_He-1) Y_p + x_e (1-Y_p) */ - pvecthermo[pth->index_th_cb2] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+z) * 4. / 3.; + pvecthermo[pth->index_th_wb] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+z); + + /* Calculate baryon adiabatic sound speed cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) */ + /* note that m_H / mu = 1 + (m_H/m_He-1) Y_p + x_e (1-Y_p) */ + pvecthermo[pth->index_th_cb2] = pvecthermo[pth->index_th_wb] * 4. / 3.; /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ if (pth->compute_cb2_derivatives == _TRUE_) { @@ -172,6 +176,37 @@ int thermodynamics_at_z( /* in this regime, variation rate = dkappa/dtau */ pvecthermo[pth->index_th_rate] = pvecthermo[pth->index_th_dkappa]; + /* quantities related to DM interacting with DR */ + if(pba->has_idm_dr == _TRUE_){ + + /* calculate dmu_idm_dr and approximate its derivatives as zero */ + pvecthermo[pth->index_th_dmu_idm_dr] = pth->a_idm_dr*pow((1.+z)/1.e7,pth->nindex_idm_dr)*pba->Omega0_idm_dr*pow(pba->h,2); + pvecthermo[pth->index_th_ddmu_idm_dr] = -pvecback[pba->index_bg_H] * pth->nindex_idm_dr / (1+z) * pvecthermo[pth->index_th_dmu_idm_dr]; + pvecthermo[pth->index_th_dddmu_idm_dr] = (pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]/ (1.+z) - pvecback[pba->index_bg_H_prime]) + * pth->nindex_idm_dr / (1.+z) * pvecthermo[pth->index_th_dmu_idm_dr]; + + /* calculate dmu_idr (self interaction) */ + pvecthermo[pth->index_th_dmu_idr] = pth->b_idr*pow((1.+z)/1.e7,pth->nindex_idm_dr)*pba->Omega0_idr*pow(pba->h,2); + + /* extrapolate optical depth of idm_dr and idr */ + pvecthermo[pth->index_th_tau_idm_dr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]+ + (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]-pth->thermodynamics_table[(pth->tt_size-2)*pth->th_size+pth->index_th_tau_idm_dr]) + *(z-pth->z_table[pth->tt_size-1])/(pth->z_table[pth->tt_size-1]-pth->z_table[pth->tt_size-2]); + + pvecthermo[pth->index_th_tau_idr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]+ + (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]-pth->thermodynamics_table[(pth->tt_size-2)*pth->th_size+pth->index_th_tau_idr]) + *(z-pth->z_table[pth->tt_size-1])/(pth->z_table[pth->tt_size-1]-pth->z_table[pth->tt_size-2]); + + /* extrapolate idm_dr visibility function */ + pvecthermo[pth->index_th_g_idm_dr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_g_idm_dr]; + + /* calculate interacting dark matter sound speed */ + pvecthermo[pth->index_th_cidm_dr2] = 4*_k_B_*pba->T_idr*(1.+z)/_eV_/3./pth->m_idm; + + /* calculate interacting dark matter temperature (equal to idr temperature at this redhsift) */ + pvecthermo[pth->index_th_Tidm_dr] = pba->T_idr*(1.+z); + } + } /** - interpolate in table with array_interpolate_spline() (normal @@ -181,7 +216,8 @@ int thermodynamics_at_z( else { /* some very specific cases require linear interpolation because of a break in the derivative of the functions */ - if ((pth->reio_parametrization == reio_half_tanh) && (z < 2*pth->z_reio)) { + if (((pth->reio_parametrization == reio_half_tanh) && (z < 2*pth->z_reio)) + || ((pth->reio_parametrization == reio_inter) && (z < 50.))) { class_call(array_interpolate_linear( pth->z_table, @@ -272,6 +308,8 @@ int thermodynamics_init( double * tau_table_growing; /* conformal time of reionization */ double tau_reio; + /* R = (3./4.)*(rho_b/rho_g) */ + double R; /* structures for storing temporarily information on recombination and reionization */ struct recombination reco; @@ -279,15 +317,17 @@ int thermodynamics_init( struct recombination * preco; struct reionization * preio; - double tau; + double tau,tau_ini; double g_max; int index_tau_max; + double dkappa_ini; - /** - initialize pointers, allocate background vector */ + double z_idm_dr, z_idr, tau_idm_dr, tau_idr, Gamma_heat_idm_dr, dTdz_idm_dr, T_idm_dr, z, T_idr, dz, T_adia, z_adia; - preco=&reco; - preio=&reio; - class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + double tau_idm_dr_fs=0.; + int index_tau_fs; + int n, N_sub_steps; + double dz_sub_step; if (pth->thermodynamics_verbose > 0) printf("Computing thermodynamics"); @@ -338,9 +378,9 @@ int thermodynamics_init( pth->error_message, "characteristic annihilation redshift cannot be negative"); - class_test((pth->annihilation>0)&&(pba->has_cdm==_FALSE_), + class_test((pth->annihilation>0) && ((pba->has_cdm==_FALSE_)&&(pba->has_idm_dr==_FALSE_)), pth->error_message, - "CDM annihilation effects require the presence of CDM!"); + "CDM annihilation effects require the presence of CDM or IDM!"); class_test((pth->annihilation_f_halo>0) && (pth->recombination==recfast), pth->error_message, @@ -362,9 +402,9 @@ int thermodynamics_init( pth->error_message, "decay parameter cannot be negative"); - class_test((pth->decay>0)&&(pba->has_cdm==_FALSE_), + class_test((pth->decay>0)&&((pba->has_cdm==_FALSE_)&&(pba->has_idm_dr==_FALSE_)), pth->error_message, - "CDM decay effects require the presence of CDM!"); + "CDM decay effects require the presence of CDM or IDM!"); /* tests in order to prevent segmentation fault in the following */ class_test(_not4_ == 0., @@ -374,24 +414,35 @@ int thermodynamics_init( pth->error_message, "stop to avoid division by zero"); + /** - initialize pointers */ + + preco=&reco; + preio=&reio; + /** - assign values to all indices in the structures with thermodynamics_indices()*/ - class_call(thermodynamics_indices(pth,preco,preio), + class_call(thermodynamics_indices(pba,pth,preco,preio), pth->error_message, pth->error_message); + /** - allocate background vector */ + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + /** - solve recombination and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_recombination() */ - class_call(thermodynamics_recombination(ppr,pba,pth,preco,pvecback), - pth->error_message, - pth->error_message); + class_call_except(thermodynamics_recombination(ppr,pba,pth,preco,pvecback), + pth->error_message, + pth->error_message, + free(pvecback)); /** - if there is reionization, solve reionization and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_reionization()*/ if (pth->reio_parametrization != reio_none) { - class_call(thermodynamics_reionization(ppr,pba,pth,preco,preio,pvecback), - pth->error_message, - pth->error_message); + class_call_except(thermodynamics_reionization(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message, + free(preco->recombination_table);free(pvecback)); } else { preio->rt_size=0; @@ -401,7 +452,7 @@ int thermodynamics_init( /** - merge tables in recombination and reionization structures into a single table in thermo structure */ - class_call(thermodynamics_merge_reco_and_reio(ppr,pth,preco,preio), + class_call(thermodynamics_merge_reco_and_reio(ppr,pba,pth,preco,preio), pth->error_message, pth->error_message); @@ -423,7 +474,7 @@ int thermodynamics_init( /** - fill missing columns (quantities not computed previously but related) */ - /** - --> baryon drag interaction rate time minus one, -[R * kappa'], stored temporarily in column ddkappa */ + /** - --> minus the baryon drag interaction rate, -dkappa_d/dtau = -[1/R * kappa'], with R = 3 rho_b / 4 rho_gamma, stored temporarily in column ddkappa */ last_index_back = pba->bg_size-1; @@ -438,13 +489,32 @@ int thermodynamics_init( pba->error_message, pth->error_message); + R = 3./4.*pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_g]; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = - -4./3.*pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b] - *pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]; + -1./R*pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]; + + if(pba->has_idm_dr == _TRUE_) { + /* - --> idr interaction rate with idm_dr (i.e. idr opacity to idm_dr scattering) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idm_dr] = + pth->a_idm_dr*pow((1.+pth->z_table[index_tau])/1.e7,pth->nindex_idm_dr)*pba->Omega0_idm_dr*pow(pba->h,2); + + /* - --> idm_dr interaction rate with idr (i.e. idm_dr opacity + to idr scattering), [Sinv*dmu_idm_dr] with Sinv = (4 + rho_idr) / (3 rho_idm_dr), stored temporarily in + ddmu_idm_dr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddmu_idm_dr] = + 4./3.*pvecback[pba->index_bg_rho_idr]/pvecback[pba->index_bg_rho_idm_dr] + *pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idm_dr]; + + /* - --> idr self-interaction rate */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idr] = + pth->b_idr*pow((1.+pth->z_table[index_tau])/1.e7,pth->nindex_idm_dr)*pba->Omega0_idr*pow(pba->h,2); + } } - /** - --> second derivative of this rate, -[R * kappa']'', stored temporarily in column dddkappa */ + /** - --> second derivative of this rate, -[1/R * kappa']'', stored temporarily in column dddkappa */ class_call(array_spline_table_line_to_line(tau_table, pth->tt_size, pth->thermodynamics_table, @@ -469,24 +539,99 @@ int thermodynamics_init( pth->error_message); /* the temporary quantities stored in columns ddkappa and dddkappa - will not be used anymore, they will be overwritten */ + will not be used anymore, so they can be overwritten by other + intermediate steps of other computations */ + + if(pba->has_idm_dr == _TRUE_){ + + /** --> second derivative of idm_dr interaction rate (with idr), [Sinv*dmu_idm_dr]'', stored temporarily in column dddmu */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute optical depth of idm, tau_idm_dr = [int_{tau_today}^{tau} dtau [Sinv*dmu_idm_dr] ]. + This step gives -tau_idm_dr. The resulty is mutiplied by -1 later on. */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_tau_idm_dr, + pth->error_message), + pth->error_message, + pth->error_message); + + + /** - --> second derivative of idr interaction rate (with idm_dr), [dmu_idm_idr]'', stored temporarily in column dddmu */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute optical depth of idr, tau_idr = [int_{tau_today}^{tau} dtau [dmu_idm_idr] ]. + This step gives -tau_idr. The resulty is mutiplied by -1 later on. */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_tau_idr, + pth->error_message), + pth->error_message, + pth->error_message); + } + + /** - --> compute damping scale: + + r_d = 2pi/k_d = 2pi * [int_{tau_ini}^{tau} dtau (1/kappa') 1/6 (R^2+16/15(1+R))/(1+R)^2]^1/2 + = 2pi * [int_{tau_ini}^{tau} dtau (1/kappa') 1/6 (R^2/(1+R)+16/15)/(1+R)]^1/2 + + which is like in CosmoTherm (CT), but slightly + different from Wayne Hu (WH)'s thesis eq. (5.59): + the factor 16/15 in CT is 4/5 in WH */ - /** - --> compute r_d = [int_{tau_ini}^{tau} dtau [1/kappa'] */ if (pth->compute_damping_scale == _TRUE_) { class_alloc(tau_table_growing,pth->tt_size*sizeof(double),pth->error_message); - /* compute integrand 1/kappa' and store temporarily in column "ddkappa" */ + /* compute integrand and store temporarily in column "ddkappa" */ for (index_tau=0; index_tau < pth->tt_size; index_tau++) { tau_table_growing[index_tau]=tau_table[pth->tt_size-1-index_tau]; + class_call(background_at_tau(pba, + tau_table_growing[index_tau], + pba->normal_info, + pba->inter_closeby, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + R = 3./4.*pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_g]; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = - 1./pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_dkappa]; + 1./6./pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_dkappa] + *(R*R/(1+R)+16./15.)/(1.+R); } - /* compute second derivative of integrand 1/kappa' and store temporarily in column "dddkappa" */ + /* compute second derivative of integrand, and store temporarily in column "dddkappa" */ class_call(array_spline_table_line_to_line(tau_table_growing, pth->tt_size, pth->thermodynamics_table, @@ -498,37 +643,39 @@ int thermodynamics_init( pth->error_message, pth->error_message); - /* compute integrated quantity r_d^2 and store temporarily in column "g" */ - class_call(array_integrate_spline_table_line_to_line(tau_table_growing, - pth->tt_size, - pth->thermodynamics_table, - pth->th_size, - pth->index_th_ddkappa, - pth->index_th_dddkappa, - pth->index_th_g, - pth->error_message), - pth->error_message, - pth->error_message); - free(tau_table_growing); + /* compute integral and store temporarily in column "g" */ + class_call(array_integrate_spline_table_line_to_line(tau_table_growing, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + pth->index_th_g, + pth->error_message), + pth->error_message, + pth->error_message); - /* an analytic calculation shows that in the early - radiation-dominated and ionized universe, when kappa' is - proportional to (1+z)^2 and tau is proportional to the scale - factor, r_d^2 is equal to eta/(3 kappa'). So [r_d,ini^2] = - [tau_ini/3/kappa'_ini] should be added to the integral in - order to account for the integration between 0 and tau_ini */ + free(tau_table_growing); - /* compute r_d */ - for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + /* we could now write the result as r_d = 2pi * sqrt(integral), + but we will first better acount for the contribution frokm the tau_ini boundary. + Close to this boundary, R=0 and the integrand is just 16/(15*6)/kappa' + Using kappa' propto 1/a^2 and tau propro a during RD, we get the analytic result: + int_0^{tau_ini} dtau / kappa' = tau_ini / 3 / kappa'_ini + Thus r_d = 2pi * sqrt( 16/(15*6*3) * (tau_ini/ kappa'_ini) * integral) */ - pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_r_d] = - sqrt(tau_table[pth->tt_size-1]/3./pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_dkappa] - +pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_g]); + tau_ini = tau_table[pth->tt_size-1]; + dkappa_ini = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_dkappa]; - } + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { - } + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_r_d] = + 2.*_PI_*sqrt(16./(15.*6.*3.)*tau_ini/dkappa_ini + +pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_g]); + } + + } // end of damping scale calculation /** - --> second derivative with respect to tau of dkappa (in view of spline interpolation) */ class_call(array_spline_table_line_to_line(tau_table, @@ -595,8 +742,6 @@ int thermodynamics_init( pth->error_message); } - free(tau_table); - /** - --> compute visibility: \f$ g= (d \kappa/d \tau) e^{- \kappa} \f$ */ /* loop on z (decreasing z, increasing time) */ @@ -642,6 +787,20 @@ int thermodynamics_init( +fabs(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dddkappa]/ pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa])); + /* - ---> restore correct sign for idm_dr and idr optical depth, and calculate idm_dr visibility function */ + if(pba->has_idm_dr == _TRUE_){ + + /* restore the correct sign for tau_idm_dr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idm_dr] *= -1.; + + /* restore the correct sign for tau_idr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idr] *= -1.; + + /* visibility function for idm_dr : g_idm_dr = [Sinv*dmu_idm_dr] * exp(-tau_idm_dr) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g_idm_dr] = + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddmu_idm_dr] + * exp(-pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idm_dr]); + } } /** - smooth the rate (details of smoothing unimportant: only the @@ -655,6 +814,176 @@ int thermodynamics_init( pth->error_message, pth->error_message); + /* - ---> fill columns for ddmu_idm_dr and dddmu_idm_dr with true values, and compute idm_dr temperature and sound speed */ + if(pba->has_idm_dr == _TRUE_){ + + /** - --> second derivative with respect to tau of dmu_idm_dr (in view of spline interpolation) */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> first derivative with respect to tau of dmu_idm_dr (using spline interpolation) */ + class_call(array_derive_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_ddmu_idm_dr, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> now compute idm_dr temperature and sound speed in various regimes */ + + /* (A) - initial value of T_idm_dr at the maximum z (minimum tau) */ + + z = pth->z_table[pth->tt_size-1]; + + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + + /* (A1) --> if Gamma is not much smaller than H, set T_idm_dr to T_idm_dr = T_idr = xi*T_gamma (tight coupling solution) */ + if(Gamma_heat_idm_dr > 1.e-3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]){ + T_idm_dr = pba->T_idr*(1.+z); + dTdz_idm_dr = pba->T_idr; + } + + /* (A2) --> otherwise, if Gamma << H, set initial T_idm_dr to the + approximate analytic solution (Gamma/aH)/(1+(Gamma/aH)*T_idr) + (eq. (A62) in ETHOS I ) */ + else { + T_idr = pba->T_idr*(1.+z); + T_idm_dr = Gamma_heat_idm_dr/(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]) + /(1. + Gamma_heat_idm_dr/(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]))*T_idr; + dTdz_idm_dr = 2.*T_idm_dr - Gamma_heat_idm_dr/pvecback[pba->index_bg_H] * (T_idr - T_idm_dr); + } + + pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_Tidm_dr] = T_idm_dr; + pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_cidm_dr2] = _k_B_*T_idm_dr/_eV_/pth->m_idm*(1.+dTdz_idm_dr/3./T_idm_dr); + + /* T_adia and z_adia will be used later. They are defined as "the + last T_idm_dr(z) at which the temperature was evaluated + explicitely, rather than scaled like a^{-2} (decoupled DM + regime)". Here we just initialize them. They will be updated + each time that we recompte T_idm_dr explicitely. */ + T_adia = T_idm_dr; + z_adia = z; + + /* (B) - iterate over growing tau / decreasing z to find other + values. At each new z we need to compute the following + quantities: T_idr, T_idm_dr, Gamma_heat_idm_dr, a, H, dT_idm_dr,/dz, + c_s_idm_dr^2. They all needed to be known from step to step, even + if the final goal is only to store T_idm_dr, c_s_idm^2 */ + for (index_tau=pth->tt_size-2; index_tau>=0; index_tau--) { + + /* (B1) --> tight-coupling solution: Gamma >> H implies T_idm_dr=T_idr=xi*T_gamma */ + if(Gamma_heat_idm_dr > 1.e3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]){ + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr = T_idr; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr =pba->T_idr; + } + + /* (B2) --> intermediate solution: integrate differential equation equation dT_idm_dr/dz = 2 a T_DM - Gamma/H (T_idr - T_idm_dr) */ + else if (Gamma_heat_idm_dr > 1.e-3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]) { + + dz = pth->z_table[index_tau+1] - pth->z_table[index_tau]; + + /* (B2a) ----> if dz << H/Gamma the equation is not too stiff and the traditional forward Euler method converges */ + if (dz < pvecback[pba->index_bg_H]/Gamma_heat_idm_dr/10.) { + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr -= dTdz_idm_dr*dz; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2.*pvecback[pba->index_bg_a]*T_idm_dr-Gamma_heat_idm_dr/(pvecback[pba->index_bg_H])*(T_idr-T_idm_dr); + } + + /* (B2b) ----> otherwise, the equation is too stiff and the + traditional forward Euler method diverges with this + stepsize. But we can just decreasee dz to bring it back + well within the convergence radius H/Gamma of the + equation. */ + else { + N_sub_steps = (int)(dz/ (pvecback[pba->index_bg_H]/Gamma_heat_idm_dr/10.))+1; + dz_sub_step = dz/N_sub_steps; + + /* loop over sub-steps */ + for (n=0; nz_table[index_tau]; + + T_idr = pba->T_idr*(1.+z); + T_idm_dr -= dTdz_idm_dr*dz_sub_step; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2.*pvecback[pba->index_bg_a]*T_idm_dr-Gamma_heat_idm_dr/(pvecback[pba->index_bg_H])*(T_idr-T_idm_dr); + } + } + + /* update T_adia, z_adia */ + T_adia = T_idm_dr; + z_adia = z; + } + + /* (B3) --> decoupled solution: T_idm_dr scales like a^-2 */ + else { + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr = T_adia * pow((1.+z)/(1.+z_adia),2); + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2./(1+z)*T_idm_dr; + } + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_Tidm_dr] = T_idm_dr; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_cidm_dr2] = _k_B_*T_idm_dr/_eV_/pth->m_idm*(1.+dTdz_idm_dr/3./T_idm_dr); + } + } + + free(tau_table); + /** - fill tables of second derivatives with respect to z (in view of spline interpolation) */ class_call(array_spline_table_lines(pth->z_table, @@ -730,8 +1059,8 @@ int thermodynamics_init( pba->error_message, pth->error_message); - while (1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/tau - < ppr->radiation_streaming_trigger_tau_c_over_tau) { + while ((1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/tau < ppr->radiation_streaming_trigger_tau_c_over_tau) + && (index_tau>0)) { index_tau--; @@ -743,6 +1072,90 @@ int thermodynamics_init( pth->tau_free_streaming = tau; + /** - Find interacting dark radiation free-streaming time */ + index_tau_fs = index_tau; + + if(pba->has_idr == _TRUE_) { + + if(pba->has_idm_dr == _TRUE_) { + + if(pth->nindex_idm_dr>=2){ + index_tau=index_tau_fs-1; + /* comment: using index_tau_max (index_tau_fs) instead of pth->tt_size-1 ensures that the switch is always after recombination (free streaming) */ + } + else{ + index_tau=0; + } + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + while ((1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dmu_idm_dr]/tau + < ppr->idr_streaming_trigger_tau_c_over_tau) && + ((pth->nindex_idm_dr >= 2 && index_tau > 0) || + (pth->nindex_idm_dr < 2 && index_tau < pth->tt_size-1))) { + + if(pth->nindex_idm_dr>=2){ + index_tau--; + } + else{ + index_tau++; + } + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + } + + tau_idm_dr_fs = tau; + pth->tau_idr_free_streaming = tau; + } + + /* case of idr alone without idm_dr */ + else { + index_tau=index_tau_fs-1; + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message) + tau_idm_dr_fs = tau; + pth->tau_idr_free_streaming = tau; + } + } + + /** - find z_star (when optical depth kappa crosses one, using linear + interpolation) and sound horizon at that time */ + + index_tau=0; + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa] > 1./_E_) && (index_tau < pth->tt_size)) + index_tau++; + + pth->z_star = pth->z_table[index_tau-1]+ + (1./_E_-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,pth->z_star,&(pth->tau_star)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,pth->tau_star, pba->long_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + pth->rs_star=pvecback[pba->index_bg_rs]; + pth->ds_star=pth->rs_star*pba->a_today/(1.+pth->z_star); + pth->da_star=pvecback[pba->index_bg_ang_distance]; + pth->ra_star=pth->da_star*(1.+pth->z_star)/pba->a_today; + + if (pth->compute_damping_scale == _TRUE_) { + + pth->rd_star = (pth->z_table[index_tau+1]-pth->z_star)/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_r_d] + +(pth->z_star-pth->z_table[index_tau])/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_r_d]; + + } + /** - find baryon drag time (when tau_d crosses one, using linear interpolation) and sound horizon at that time */ @@ -766,6 +1179,39 @@ int thermodynamics_init( pth->rs_d=pvecback[pba->index_bg_rs]; pth->ds_d=pth->rs_d*pba->a_today/(1.+pth->z_d); + /** - find idm_dr and idr drag times */ + if(pba->has_idm_dr == _TRUE_){ + + if((pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]>1.) && (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]>1.)){ + index_tau=0; + + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idm_dr] < 1.) && (index_tau < pth->tt_size-1)) + index_tau++; + + z_idm_dr = pth->z_table[index_tau-1]+(1.-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idm_dr]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idm_dr]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idm_dr]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,z_idm_dr,&(tau_idm_dr)), + pba->error_message, + pth->error_message); + + index_tau=0; + + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idr] < 1.) && (index_tau < pth->tt_size-1)) + index_tau++; + + z_idr = pth->z_table[index_tau-1]+ + (1.-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idr]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idr]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idr]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,z_idr,&(tau_idr)), + pba->error_message, + pth->error_message); + } + } + /** - find time above which visibility falls below a given fraction of its maximum */ index_tau=index_tau_max; @@ -781,7 +1227,17 @@ int thermodynamics_init( /** - if verbose flag set to next-to-minimum value, print the main results */ if (pth->thermodynamics_verbose > 0) { - printf(" -> recombination at z = %f\n",pth->z_rec); + + if(pba->has_idm_dr == _TRUE_) { + if((pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]>1.) && (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]>1.)){ + printf(" -> idr decouples at tau_idr = %e Mpc\n",tau_idr); + printf(" -> idm_dr decouples at tau_idm_dr = %e Mpc\n",tau_idm_dr); + } + else{ + printf(" -> computation of decoupling time of idm_dr and idr skipped, because z would not be in z_table\n"); + } + } + printf(" -> recombination at z = %f (max of visibility function)\n",pth->z_rec); printf(" corresponding to conformal time = %f Mpc\n",pth->tau_rec); printf(" with comoving sound horizon = %f Mpc\n",pth->rs_rec); printf(" angular diameter distance = %f Mpc\n",pth->da_rec); @@ -790,6 +1246,8 @@ int thermodynamics_init( printf(" and with comoving photon damping scale = %f Mpc\n",pth->rd_rec); printf(" or comoving damping wavenumber k_d = %f 1/Mpc\n",2.*_PI_/pth->rd_rec); } + printf(" Thomson optical depth crosses one at z_* = %f\n",pth->z_star); + printf(" giving an angle 100*theta_* = %f\n",100.*pth->rs_star/pth->ra_star); printf(" -> baryon drag stops at z = %f\n",pth->z_d); printf(" corresponding to conformal time = %f Mpc\n",pth->tau_d); printf(" with comoving sound horizon rs = %f Mpc\n",pth->rs_d); @@ -809,10 +1267,17 @@ int thermodynamics_init( if (pth->reio_parametrization == reio_many_tanh) { printf(" -> many-step reionization gives optical depth = %f\n",pth->tau_reio); } + if (pth->reio_parametrization == reio_inter) { + printf(" -> interpolated reionization history gives optical depth = %f\n",pth->tau_reio); + } if (pth->thermodynamics_verbose > 1) { printf(" -> free-streaming approximation can be turned on as soon as tau=%g Mpc\n", pth->tau_free_streaming); } + if ((pba->has_idr)&&(pth->thermodynamics_verbose > 1)) { + printf(" -> dark free-streaming approximation can be turned on as soon as tau=%g Mpc\n", + tau_idm_dr_fs); + } } free(pvecback); @@ -844,6 +1309,7 @@ int thermodynamics_free( * as well as in vector containing reionization parameters. * * + * @param pba Input: pointer to background structure * @param pth Input/Output: pointer to thermo structure * @param preco Input/Output: pointer to recombination structure * @param preio Input/Output: pointer to reionization structure @@ -851,6 +1317,7 @@ int thermodynamics_free( */ int thermodynamics_indices( + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio @@ -886,9 +1353,32 @@ int thermodynamics_indices( index++; pth->index_th_Tb = index; index++; + pth->index_th_wb = index; + index++; pth->index_th_cb2 = index; index++; + if(pba->has_idm_dr == _TRUE_){ + pth->index_th_dmu_idm_dr = index; + index++; + pth->index_th_ddmu_idm_dr = index; + index++; + pth->index_th_dddmu_idm_dr = index; + index++; + pth->index_th_tau_idm_dr = index; + index++; + pth->index_th_tau_idr = index; + index++; + pth->index_th_g_idm_dr = index; + index++; + pth->index_th_cidm_dr2 = index; + index++; + pth->index_th_Tidm_dr = index; + index++; + pth->index_th_dmu_idr = index; + index++; + } + /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ if (pth->compute_cb2_derivatives == _TRUE_) { pth->index_th_dcb2 = index; @@ -919,6 +1409,8 @@ int thermodynamics_indices( index++; preco->index_re_Tb = index; index++; + preco->index_re_wb = index; + index++; preco->index_re_cb2 = index; index++; @@ -934,6 +1426,8 @@ int thermodynamics_indices( index++; preio->index_re_Tb = index; index++; + preio->index_re_wb = index; + index++; preio->index_re_cb2 = index; index++; preio->index_re_dkappadtau = index; @@ -991,7 +1485,6 @@ int thermodynamics_indices( preio->index_reio_step_sharpness = index; index++; - preio->reio_num_params = index; } /* case where x_e(z) has many tanh jumps */ @@ -1010,7 +1503,18 @@ int thermodynamics_indices( preio->index_reio_step_sharpness = index; index++; - preio->reio_num_params = index; + } + + /* case where x_e(z) must be interpolated */ + if (pth->reio_parametrization == reio_inter) { + + preio->reio_num_z=pth->reio_inter_num; + + preio->index_reio_first_z = index; + index+= preio->reio_num_z; + preio->index_reio_first_xe = index; + index+= preio->reio_num_z; + } preio->reio_num_params = index; @@ -1086,8 +1590,8 @@ int thermodynamics_helium_from_bbn( pth->error_message); Neff_bbn = (pvecback[pba->index_bg_Omega_r] - *pvecback[pba->index_bg_rho_crit] - -pvecback[pba->index_bg_rho_g]) + *pvecback[pba->index_bg_rho_crit] + -pvecback[pba->index_bg_rho_g]) /(7./8.*pow(4./11.,4./3.)*pvecback[pba->index_bg_rho_g]); free(pvecback); @@ -1176,25 +1680,29 @@ int thermodynamics_helium_from_bbn( omega_b=pba->Omega0_b*pba->h*pba->h; - class_test(omega_b < omegab[0], - pth->error_message, - "You have asked for an unrealistic small value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - omega_b); - - class_test(omega_b > omegab[num_omegab-1], - pth->error_message, - "You have asked for an unrealistic high value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - omega_b); - - class_test(DeltaNeff < deltaN[0], - pth->error_message, - "You have asked for an unrealistic small value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - DeltaNeff); - - class_test(DeltaNeff > deltaN[num_deltaN-1], - pth->error_message, - "You have asked for an unrealistic high value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - DeltaNeff); + class_test_except(omega_b < omegab[0], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic small value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test_except(omega_b > omegab[num_omegab-1], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic high value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test_except(DeltaNeff < deltaN[0], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic small value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); + + class_test_except(DeltaNeff > deltaN[num_deltaN-1], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic high value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); /** - interpolate in one dimension (along deltaN) */ class_call(array_interpolate_spline(deltaN, @@ -1296,7 +1804,7 @@ int thermodynamics_onthespot_energy_injection( +pow(log((preco->annihilation_zmin+1.)/(preco->annihilation_zmax+1.)),2))); } - rho_cdm_today = pow(pba->H0*_c_/_Mpc_over_m_,2)*3/8./_PI_/_G_*pba->Omega0_cdm*_c_*_c_; /* energy density in J/m^3 */ + rho_cdm_today = pow(pba->H0*_c_/_Mpc_over_m_,2)*3/8./_PI_/_G_*(pba->Omega0_idm_dr+pba->Omega0_cdm)*_c_*_c_; /* energy density in J/m^3 */ u_min = (1+z)/(1+preco->annihilation_z_halo); @@ -1349,7 +1857,7 @@ int thermodynamics_energy_injection( nH0 = 3.*preco->H0*preco->H0*pba->Omega0_b/(8.*_PI_*_G_*_m_H_)*(1.-preco->YHe); /* factor = c sigma_T n_H(0) / (H(0) \sqrt(Omega_m)) (dimensionless) */ - factor = _sigma_ * nH0 / pba->H0 * _Mpc_over_m_ / sqrt(pba->Omega0_b+pba->Omega0_cdm); + factor = _sigma_ * nH0 / pba->H0 * _Mpc_over_m_ / sqrt(pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_idm_dr); /* integral over z'(=zp) with step dz */ dz=1.; @@ -1514,14 +2022,14 @@ int thermodynamics_reionization_function( been replaced by the simpler and more robust expression below. - *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] - +0.5*(tanh((2.*(z-preio->reionization_parameters[preio->index_reio_first_z+i]) - /(preio->reionization_parameters[preio->index_reio_first_z+i+1] - -preio->reionization_parameters[preio->index_reio_first_z+i])-1.) - /preio->reionization_parameters[preio->index_reio_step_sharpness]) - /tanh(1./preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) - *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] - -preio->reionization_parameters[preio->index_reio_first_xe+i]); + *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] + +0.5*(tanh((2.*(z-preio->reionization_parameters[preio->index_reio_first_z+i]) + /(preio->reionization_parameters[preio->index_reio_first_z+i+1] + -preio->reionization_parameters[preio->index_reio_first_z+i])-1.) + /preio->reionization_parameters[preio->index_reio_step_sharpness]) + /tanh(1./preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) + *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); */ /* compute the central redshift value of the tanh jump */ @@ -1591,6 +2099,54 @@ int thermodynamics_reionization_function( } + /** - implementation of reio_inter */ + + if (pth->reio_parametrization == reio_inter) { + + /** - --> case z > z_reio_start */ + + if (z > preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]) { + *xe = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1]; + class_stop(pth->error_message,"Check: is it normal that we are here?"); + } + + else { + + i=0; + while (preio->reionization_parameters[preio->index_reio_first_z+i+1] < z) i++; + + double z_min = preio->reionization_parameters[preio->index_reio_first_z+i]; + double z_max = preio->reionization_parameters[preio->index_reio_first_z+i+1]; + + class_test(zerror_message, + ""); + + class_test(z>z_max, + pth->error_message, + ""); + + double x=(z-preio->reionization_parameters[preio->index_reio_first_z+i]) + /(preio->reionization_parameters[preio->index_reio_first_z+i+1] + -preio->reionization_parameters[preio->index_reio_first_z+i]); + + *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] + + x*(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); + + class_test(*xe<0., + pth->error_message, + "%e %e %e\n", + x, + preio->reionization_parameters[preio->index_reio_first_xe+i], + preio->reionization_parameters[preio->index_reio_first_xe+i+1]); + + } + + return _SUCCESS_; + + } + class_test(0 == 0, pth->error_message, "value of reio_parametrization=%d unclear",pth->reio_parametrization); @@ -1668,6 +2224,7 @@ int thermodynamics_reionization( double z_sup,z_mid,z_inf; double tau_sup,tau_mid,tau_inf; int bin; + int point; double xe_input,xe_actual; /** - allocate the vector of parameters defining the function \f$ X_e(z) \f$ */ @@ -1785,9 +2342,10 @@ int thermodynamics_reionization( tau_sup=preio->reionization_optical_depth; - class_test(tau_sup < pth->tau_reio, - pth->error_message, - "parameters are such that reionization cannot start after z_start_max"); + class_test_except(tau_sup < pth->tau_reio, + pth->error_message, + free(preio->reionization_parameters);free(preio->reionization_table), + "parameters are such that reionization cannot start after z_start_max"); /* lower value */ @@ -1861,6 +2419,8 @@ int thermodynamics_reionization( } + /** - (b) if reionization implemented with reio_bins_tanh scheme */ + if (pth->reio_parametrization == reio_bins_tanh) { /* this algorithm requires at least two bin centers (i.e. at least @@ -1894,7 +2454,7 @@ int thermodynamics_reionization( preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] +2.*(preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] - -preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-3]); + -preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-3]); /* copy this value in reio_start */ preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; @@ -1917,9 +2477,9 @@ int thermodynamics_reionization( /* check it's not too small */ /* 6.06.2015: changed this test to simply imposing that the first z is at least zero */ /* - class_test(preio->reionization_parameters[preio->index_reio_first_z] < 0, - pth->error_message, - "final redshift for reionization = %e, you must change the binning or redefine the way in which the code extrapolates below the first value of z_i",preio->reionization_parameters[preio->index_reio_first_z]); + class_test(preio->reionization_parameters[preio->index_reio_first_z] < 0, + pth->error_message, + "final redshift for reionization = %e, you must change the binning or redefine the way in which the code extrapolates below the first value of z_i",preio->reionization_parameters[preio->index_reio_first_z]); */ if (preio->reionization_parameters[preio->index_reio_first_z] < 0) { preio->reionization_parameters[preio->index_reio_first_z] = 0.; @@ -1951,6 +2511,8 @@ int thermodynamics_reionization( } + /** - (c) if reionization implemented with reio_many_tanh scheme */ + if (pth->reio_parametrization == reio_many_tanh) { /* this algorithm requires at least one jump centers */ @@ -2066,6 +2628,97 @@ int thermodynamics_reionization( } + /** - (d) if reionization implemented with reio_inter scheme */ + + if (pth->reio_parametrization == reio_inter) { + + /* this parametrization requires at least one point (z,xe) */ + class_test(pth->reio_inter_num<1, + pth->error_message, + "current implementation of reio_inter requires at least one point (z,xe)"); + + /* this parametrization requires that the first z value is zero */ + class_test(pth->reio_inter_z[0] != 0., + pth->error_message, + "For reio_inter scheme, the first value of reio_inter_z[...] should always be zero, you passed %e", + pth->reio_inter_z[0]); + + /* check that z input can be interpreted by the code */ + for (point=1; pointreio_inter_num; point++) { + class_test(pth->reio_inter_z[point-1]>=pth->reio_inter_z[point], + pth->error_message, + "value of reionization bin centers z_i expected to be passed in growing order, unlike: %e, %e", + pth->reio_inter_z[point-1], + pth->reio_inter_z[point]); + } + + /* this parametrization requires that the last x_i value is zero + (the code will substitute it with the value that one would get in + absence of reionization, as compute by the recombination code) */ + class_test(pth->reio_inter_xe[pth->reio_inter_num-1] != 0., + pth->error_message, + "For reio_inter scheme, the last value of reio_inter_xe[...] should always be zero, you passed %e", + pth->reio_inter_xe[pth->reio_inter_num-1]); + + /* copy here the (z,xe) values passed in input. */ + + for (point=0; pointreio_num_z; point++) { + + preio->reionization_parameters[preio->index_reio_first_z+point] = pth->reio_inter_z[point]; + + /* check that xe input can be interpreted by the code */ + xe_input = pth->reio_inter_xe[point]; + if (xe_input >= 0.) { + xe_actual = xe_input; + } + //-1 means "after hydrogen + first helium recombination" + else if ((xe_input<-0.9) && (xe_input>-1.1)) { + xe_actual = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); + } + //-2 means "after hydrogen + second helium recombination" + else if ((xe_input<-1.9) && (xe_input>-2.1)) { + xe_actual = 1. + 2.*pth->YHe/(_not4_*(1.-pth->YHe)); + } + //other negative number is nonsense + else { + class_stop(pth->error_message, + "Your entry for reio_inter_xe[%d] is %e, this makes no sense (either positive or 0,-1,-2)", + point,pth->reio_inter_xe[point]); + } + + preio->reionization_parameters[preio->index_reio_first_xe+point] = xe_actual; + } + + /* copy highest redshift in reio_start */ + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; + + /* check it's not too big */ + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization = %e, reionization_z_start_max = %e, you must change the binning or increase reionization_z_start_max", + preio->reionization_parameters[preio->index_reio_start], + ppr->reionization_z_start_max); + + /* infer xe before reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1], + &(preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1])), + pth->error_message, + pth->error_message); + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + pth->tau_reio=preio->reionization_optical_depth; + + return _SUCCESS_; + + } + class_test(0 == 0, pth->error_message, "value of reio_z_or_tau=%d unclear",pth->reio_z_or_tau); @@ -2190,8 +2843,11 @@ int thermodynamics_reionization_sample( /** - --> after recombination, Tb scales like (1+z)**2. Compute constant factor Tb/(1+z)**2. */ //Tba2 = Tb/(1+z)/(1+z); - /** - --> get baryon sound speed */ - reio_vector[preio->index_re_cb2] = 5./3. * _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * Yp + xe * (1.-Yp)) * Tb; + /** - --> get baryon equation of state */ + reio_vector[preio->index_re_wb] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * Yp + xe * (1.-Yp)) * Tb; + + /** - --> get baryon adiabatic sound speed */ + reio_vector[preio->index_re_cb2] = 5./3. * reio_vector[preio->index_re_wb]; /** - --> store these values in growing table */ class_call(gt_add(&gTable,_GT_END_,(void *) reio_vector,sizeof(double)*(preio->re_size)), @@ -2373,10 +3029,16 @@ int thermodynamics_reionization_sample( preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] = preio->reionization_table[i*preio->re_size+preio->index_re_Tb]-dTdz*dz; - /** - --> get baryon sound speed */ + /** - --> get baryon equation of state */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_wb] = + _k_B_/ ( _c_ * _c_ * mu) + * preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb]; - preio->reionization_table[(i-1)*preio->re_size+preio->index_re_cb2] = _k_B_/ ( _c_ * _c_ * mu) - * preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] + /** - --> get baryon adiabatic sound speed */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_cb2] = + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_wb] *(1.+(1+z)/3.*dTdz/preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb]); } @@ -2485,16 +3147,18 @@ int thermodynamics_recombination_with_hyrec( int buf_size; double tau; int last_index_back; + double w_fld,dw_over_da_fld,integral_fld; /** - Fill hyrec parameter structure */ param.T0 = pba->T_cmb; param.obh2 = pba->Omega0_b*pba->h*pba->h; - param.omh2 = (pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_ncdm_tot)*pba->h*pba->h; + param.omh2 = (pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_idm_dr+pba->Omega0_ncdm_tot)*pba->h*pba->h; param.okh2 = pba->Omega0_k*pba->h*pba->h; param.odeh2 = (pba->Omega0_lambda+pba->Omega0_fld)*pba->h*pba->h; - param.w0 = pba->w0_fld; - param.wa = pba->wa_fld; + class_call(background_w_fld(pba,pba->a_today,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, pth->error_message); + param.w0 = w_fld; + param.wa = -dw_over_da_fld*pba->a_today; param.Y = pth->YHe; param.Nnueff = pba->Neff; param.nH0 = 11.223846333047*param.obh2*(1.-param.Y); /* number density of hydrogen today in m-3 */ @@ -2643,6 +3307,7 @@ int thermodynamics_recombination_with_hyrec( /* get (xe,Tm) by interpolating in pre-computed tables */ + class_call(array_interpolate_cubic_equal(-log(1.+param.zstart), param.dlna, xe_output, @@ -2699,10 +3364,15 @@ int thermodynamics_recombination_with_hyrec( /* Tb */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_Tb)=Tm; + /* wb = (k_B/mu) Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + xe * (1.-pth->YHe)) * Tm; + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) with (1+z)dlnTb/dz= - [dlnTb/dlna] */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) - = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + xe * (1.-pth->YHe)) * Tm * (1. - rec_dTmdlna(xe, Tm, pba->T_cmb*(1.+z), Hz, param.fHe, param.nH0*pow((1+z),3)*1e-6, energy_injection_rate(¶m,z)) / Tm / 3.); + = *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + * (1. - rec_dTmdlna(xe, Tm, pba->T_cmb*(1.+z), Hz, param.fHe, param.nH0*pow((1+z),3)*1e-6, energy_injection_rate(¶m,z)) / Tm / 3.); /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) @@ -3108,9 +3778,14 @@ int thermodynamics_recombination_with_recfast( pth->error_message, pth->error_message); + /* wb = (k_B/mu) Tb = (k_B/mu) Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * preco->YHe + x0 * (1.-preco->YHe)) * y[2]; + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) - = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * preco->YHe + x0 * (1.-preco->YHe)) * y[2] * (1. + (1.+zend) * dy[2] / y[2] / 3.); + = *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + * (1. + (1.+zend) * dy[2] / y[2] / 3.); /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) @@ -3349,6 +4024,9 @@ int thermodynamics_derivs_with_recfast( /* evolution of hydrogen ionisation fraction: */ + // JL: test for debugginf reio_inter + //fprintf(stdout,"%e %e %e %e\n",z,Tmat,K*_Lambda_*n,K*Rup*n); + dy[0] = (x*x_H*n*Rdown - Rup*(1.-x_H)*exp(-preco->CL/Tmat)) * C / (Hz*(1.+z)) /* Peeble's equation with fudged factors */ -energy_rate*chi_ion_H/n*(1./_L_H_ion_+(1.-C)/_L_H_alpha_)/(_h_P_*_c_*Hz*(1.+z)); /* energy injection (neglect fraction going to helium) */ @@ -3427,6 +4105,7 @@ int thermodynamics_derivs_with_recfast( int thermodynamics_merge_reco_and_reio( struct precision * ppr, + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio @@ -3436,6 +4115,7 @@ int thermodynamics_merge_reco_and_reio( /** - define local variables */ int i,index_th,index_re; + double x0; /** - first, a little check that the two tables match each other and can be merged */ @@ -3450,6 +4130,9 @@ int thermodynamics_merge_reco_and_reio( pth->tt_size = ppr->recfast_Nz0 + preio->rt_size - preio->index_reco_when_reio_start - 1; + /** - add more points to start earlier in presence of interacting DM */ + + if(pba->has_idm_dr == _TRUE_) pth->tt_size += ppr->thermo_Nz1_idm_dr + ppr->thermo_Nz2_idm_dr - 1; /** - allocate arrays in thermo structure */ @@ -3468,6 +4151,8 @@ int thermodynamics_merge_reco_and_reio( preio->reionization_table[i*preio->re_size+preio->index_re_dkappadtau]; pth->thermodynamics_table[i*pth->th_size+pth->index_th_Tb]= preio->reionization_table[i*preio->re_size+preio->index_re_Tb]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_wb]= + preio->reionization_table[i*preio->re_size+preio->index_re_wb]; pth->thermodynamics_table[i*pth->th_size+pth->index_th_cb2]= preio->reionization_table[i*preio->re_size+preio->index_re_cb2]; } @@ -3482,10 +4167,43 @@ int thermodynamics_merge_reco_and_reio( preco->recombination_table[index_re*preco->re_size+preco->index_re_dkappadtau]; pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_Tb]= preco->recombination_table[index_re*preco->re_size+preco->index_re_Tb]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_wb]; pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_cb2]= preco->recombination_table[index_re*preco->re_size+preco->index_re_cb2]; } + /** - add more points at larger redshift in presence of interacting + DM. This is necessary because the value of integrated + quantitites like tau_idm_dr or tau_idr will then be computed + exactly up to high redshift. With extrapolations in + thermodynamics_at_z() we could not obtain this. */ + + if(pba->has_idm_dr == _TRUE_){ + + for (i=0; ithermo_Nz2_idm_dr+ppr->thermo_Nz1_idm_dr-1; i++){ + + /* with an intermediate step Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr/thermo_Nz1_idm_dr */ + if (ithermo_Nz2_idm_dr-1) { + index_th=i+preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 1; + pth->z_table[index_th]= ppr->recfast_z_initial + ((double)i+1.) * (ppr->thermo_z_initial_idm_dr - ppr->recfast_z_initial) / (double)ppr->thermo_Nz1_idm_dr / (double)ppr->thermo_Nz2_idm_dr; + } + /* with a large step Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr */ + else { + index_th=(i-ppr->thermo_Nz2_idm_dr+1)+preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 1 + ppr->thermo_Nz2_idm_dr - 1; + pth->z_table[index_th]= ppr->recfast_z_initial + ((double)(i-ppr->thermo_Nz2_idm_dr+1)+1.) * (ppr->thermo_z_initial_idm_dr - ppr->recfast_z_initial) / (double)ppr->thermo_Nz1_idm_dr; + } + /* same extrapolation formulas as in thermodynamics_at_z() */ + x0=pth->thermodynamics_table[(preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 2)*pth->th_size+pth->index_th_xe]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_xe]=x0; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_dkappa]=(1.+pth->z_table[index_th]) * (1.+pth->z_table[index_th]) * pth->n_e * x0 * _sigma_ * _Mpc_over_m_; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_Tb]=pba->T_cmb*(1.+pth->z_table[index_th]); + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb]=_k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+pth->z_table[index_th]); + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_cb2]=pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb] * 4./3.; + } + + } + /** - free the temporary structures */ free(preco->recombination_table); @@ -3516,11 +4234,24 @@ int thermodynamics_output_titles(struct background * pba, //class_store_columntitle(titles,"g'",_TRUE_); //class_store_columntitle(titles,"g''",_TRUE_); class_store_columntitle(titles,"Tb [K]",_TRUE_); + class_store_columntitle(titles,"w_b",_TRUE_); class_store_columntitle(titles,"c_b^2",_TRUE_); class_store_columntitle(titles,"tau_d",_TRUE_); - //class_store_columntitle(titles,"max. rate",_TRUE_,colnum); + //class_store_columntitle(titles,"max. rate",_TRUE_); class_store_columntitle(titles,"r_d",pth->compute_damping_scale); + if(pba->has_idm_dr == _TRUE_){ + class_store_columntitle(titles,"dmu_idm_dr",_TRUE_); + //class_store_columntitle(titles,"ddmu_idm_dr",_TRUE_); + //class_store_columntitle(titles,"dddmu_idm_dr",_TRUE_); + class_store_columntitle(titles,"tau_idm_dr",_TRUE_); + class_store_columntitle(titles,"tau_idr",_TRUE_); + class_store_columntitle(titles,"g_idm_dr [Mpc^-1]",_TRUE_); + class_store_columntitle(titles,"c_idm_dr^2",_TRUE_); + class_store_columntitle(titles,"T_idm_dr",_TRUE_); + class_store_columntitle(titles,"dmu_idr",_TRUE_); + } + return _SUCCESS_; } @@ -3564,11 +4295,23 @@ int thermodynamics_output_data(struct background * pba, //class_store_double(dataptr,pvecthermo[pth->index_th_dg],_TRUE_,storeidx); //class_store_double(dataptr,pvecthermo[pth->index_th_ddg],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_Tb],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_wb],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_cb2],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_tau_d],_TRUE_,storeidx); //class_store_double(dataptr,pvecthermo[pth->index_th_rate],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_r_d],pth->compute_damping_scale,storeidx); + if(pba->has_idm_dr == _TRUE_){ + class_store_double(dataptr,pvecthermo[pth->index_th_dmu_idm_dr],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_ddmu_idm_dr],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_dddmu_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_tau_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_tau_idr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_g_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_cidm_dr2],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_Tidm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_dmu_idr],_TRUE_,storeidx); + } } return _SUCCESS_; @@ -3583,5 +4326,4 @@ int thermodynamics_tanh(double x, *result = before + (after-before)*(tanh((x-center)/width)+1.)/2.; - return _SUCCESS_; -} + return _SUCCESS_;} diff --git a/class/source/transfer.c b/class/source/transfer.c old mode 100644 new mode 100755 index 01cf0ce2..74908420 --- a/class/source/transfer.c +++ b/class/source/transfer.c @@ -292,14 +292,25 @@ int transfer_init( ptr->error_message, ptr->error_message); + /** - precompute window function for integrated nCl/sCl quantities*/ + double* window; + class_call(transfer_precompute_selection(ppr, + pba, + ppt, + ptr, + tau_rec, + tau_size_max, + &(window)), + ptr->error_message, + ptr->error_message); + /* (a.3.) workspace, allocated in a parallel zone since in openmp - version there is one workspace per thread */ + version there is one workspace per thread */ /* initialize error management flag */ abort = _FALSE_; /* beginning of parallel region */ - #pragma omp parallel \ shared(tau_size_max,ptr,ppr,pba,ppt,tp_of_tt,tau_rec,sources_spline,abort,BIS,tau0) \ private(ptw,index_q,tstart,tstop,tspent) @@ -311,6 +322,8 @@ int transfer_init( /* allocate workspace */ + ptw = NULL; + class_call_parallel(transfer_workspace_init(ptr, ppr, &ptw, @@ -356,6 +369,7 @@ int transfer_init( tau_rec, sources, sources_spline, + window, ptw), ptr->error_message, ptr->error_message); @@ -386,6 +400,7 @@ int transfer_init( if (abort == _TRUE_) return _FAILURE_; /** - finally, free arrays allocated outside parallel zone */ + free(window); class_call(transfer_perturbation_sources_spline_free(ppt,ptr,sources_spline), ptr->error_message, @@ -643,7 +658,9 @@ int transfer_perturbation_copy_sources_and_nl_corrections( if ((pnl->method != nl_none) && (_scalars_) && (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || + ((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb)) || ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || @@ -655,13 +672,25 @@ int transfer_perturbation_copy_sources_and_nl_corrections( for (index_tau=0; index_tautau_size; index_tau++) { for (index_k=0; index_kk_size[index_md]; index_k++) { - sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_tp] - [index_tau * ppt->k_size[index_md] + index_k] = - ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_tp] - [index_tau * ppt->k_size[index_md] + index_k] - * pnl->nl_corr_density[index_tau * ppt->k_size[index_md] + index_k]; + if (((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb))){ + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] = + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] + * pnl->nl_corr_density[pnl->index_pk_cb][index_tau * ppt->k_size[index_md] + index_k]; + } + else{ + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] = + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] + * pnl->nl_corr_density[pnl->index_pk_m][index_tau * ppt->k_size[index_md] + index_k]; + } } } } @@ -736,6 +765,8 @@ int transfer_perturbation_sources_free( if ((pnl->method != nl_none) && (_scalars_) && (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb)) || ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || @@ -1245,7 +1276,7 @@ int transfer_get_k_list( if (ptr->k[index_md][0] < ppt->k[index_md][0]){ /* If ptr->k[index_md][0] < ppt->k[index_md][0] at the level of rounding, - adjust first value of k_list to avoid interpolation errors: */ + adjust first value of k_list to avoid interpolation errors: */ if ((ppt->k[index_md][0]-ptr->k[index_md][0]) < 10.*DBL_EPSILON){ ptr->k[index_md][0] = ppt->k[index_md][0]; } @@ -1259,12 +1290,12 @@ int transfer_get_k_list( } /* - class_test(ptr->k[index_md][0] < ppt->k[index_md][0], - ptr->error_message, - "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", - ppt->k[0][0], - index_md, - ptr->k[index_md][0]); + class_test(ptr->k[index_md][0] < ppt->k[index_md][0], + ptr->error_message, + "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", + ppt->k[0][0], + index_md, + ptr->k[index_md][0]); */ class_test(ptr->k[index_md][ptr->q_size-1] > ppt->k[0][ppt->k_size_cl[0]-1], ptr->error_message, @@ -1295,7 +1326,7 @@ int transfer_get_source_correspondence( struct transfers * ptr, int ** tp_of_tt ) { -/** Summary: */ + /** Summary: */ /** - running index on modes */ int index_md; @@ -1329,6 +1360,8 @@ int transfer_get_source_correspondence( tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + /* use here delta_cb rather than delta_m if density number counts calculated only for cold dark matter + baryon */ + /* (this important comment is referenced in a WARNING message in perturbations.c) */ tp_of_tt[index_md][index_tt]=ppt->index_tp_delta_m; if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) @@ -1519,14 +1552,7 @@ int transfer_source_tau_size( } /* density Cl's */ - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_nonintegrated_ncl_) { /* bin number associated to particular redshift bin and selection function */ if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) @@ -1583,18 +1609,14 @@ int transfer_source_tau_size( We need to cut the interval (tau_max-tau_min) in pieces of size [Delta tau]=2pi/k_max. This gives the number below. */ - *tau_size=MAX(*tau_size,(int)((tau_max-tau_min)/((tau0-tau_mean)/l_limber))*ppr->selection_sampling_bessel); + *tau_size=MAX(*tau_size,(int)((tau_max-tau_min)/((tau0-tau_mean)/MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel); } } /* galaxy lensing Cl's, differs from density Cl's since the source function will spread from the selection function region up to tau0 */ - if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_integrated_ncl_) { /* bin number associated to particular redshift bin and selection function */ if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) @@ -1629,7 +1651,7 @@ int transfer_source_tau_size( if(_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { /* Even if G5 is integrated along the line-of-sight, we do not apply the same Limber criteria as for the other integrated terms, because here we have the derivative of the Bessel. */ l_limber=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[bin]; - *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel); + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel); } else { l_limber=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[bin]; @@ -1641,7 +1663,7 @@ int transfer_source_tau_size( We need to cut the interval (tau_0-tau_min) in pieces of size [Delta tau]=2pi/k_max. This gives the number below. */ - *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel_los); + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel_los); } } } @@ -1667,6 +1689,7 @@ int transfer_compute_for_each_q( double tau_rec, double *** pert_sources, double *** pert_sources_spline, + double * window, struct transfer_workspace * ptw ) { @@ -1684,8 +1707,8 @@ int transfer_compute_for_each_q( int index_l; /** - we deal with workspaces, i.e. with contiguous memory zones (one - per thread) containing various fields used by the integration - routine */ + per thread) containing various fields used by the integration + routine */ /* - first workspace field: perturbation source interpolated from perturbation structure */ double * interpolated_sources; @@ -1785,6 +1808,8 @@ int transfer_compute_for_each_q( index_md, index_tt, sources, + window, + tau_size_max, tau0_minus_tau, w_trapz, tau_size), @@ -2049,6 +2074,8 @@ int transfer_interpolate_sources( * @param index_md Input: index of mode * @param index_tt Input: index of type of (transfer) source * @param sources Output: transfer source + * @param window Input: window functions for each type and time + * @param tau_size_max Input: number of times at wich window fucntions are sampled * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample * @param w_trapz Output: trapezoidal weights for integration over tau * @param tau_size_out Output: pointer to size of previous two arrays, converted to double @@ -2066,6 +2093,8 @@ int transfer_sources( int index_md, int index_tt, double * sources, + double * window, + int tau_size_max, double * tau0_minus_tau, double * w_trapz, int * tau_size_out @@ -2087,52 +2116,19 @@ int transfer_sources( /* minimum tau index kept in transfer sources */ int index_tau_min; - /* for calling background_at_eta */ - int last_index; - double * pvecback = NULL; - /* conformal time */ double tau, tau0; - /* geometrical quantities */ - double sinKgen_source=0.; - double sinKgen_source_to_lens=0.; - double cotKgen_source=0.; - double cscKgen_lens=0.; - /* rescaling factor depending on the background at a given time */ double rescaling=0.; /* flag: is there any difference between the perturbation and transfer source? */ short redefine_source; - /* array of selection function values at different times */ - double * selection; - - /* array of time sampling for lensing source selection function */ - double * tau0_minus_tau_lensing_sources; - - /* trapezoidal weights for lensing source selection function */ - double * w_trapz_lensing_sources; - - /* index running on time in previous two arrays */ - int index_tau_sources; - - /* number of time values in previous two arrays */ - int tau_sources_size; - - /* source evolution factor */ - double f_evo = 0.; - - /* when the selection function is multiplied by a function dNdz */ - double z; - double dNdz; - double dln_dNdz_dz; - /** - in which cases are perturbation and transfer sources are different? - I.e., in which case do we need to multiply the sources by some - background and/or window function, and eventually to resample it, - or redefine its time limits? */ + I.e., in which case do we need to multiply the sources by some + background and/or window function, and eventually to resample it, + or redefine its time limits? */ redefine_source = _FALSE_; @@ -2143,21 +2139,7 @@ int transfer_sources( redefine_source = _TRUE_; /* number count Cl's */ - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens))|| - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) - redefine_source = _TRUE_; - - /* galaxy lensing potential */ - if ((ppt->has_cl_lensing_potential == _TRUE_) && (index_tt >= ptr->index_tt_lensing) && (index_tt < ptr->index_tt_lensing+ppt->selection_num)) + if (_nonintegrated_ncl_ || _integrated_ncl_) redefine_source = _TRUE_; } @@ -2166,7 +2148,7 @@ int transfer_sources( tau0 = pba->conformal_age; /** - case where we need to redefine by a window function (or any - function of the background and of k) */ + function of the background and of k) */ if (redefine_source == _TRUE_) { class_call(transfer_source_tau_size(ppr, @@ -2250,44 +2232,11 @@ int transfer_sources( ptr->error_message); } - /* density source: redefine the time sampling, multiply by - coefficient of Poisson equation, and multiply by selection - function */ - - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - ) { - - /* bin number associated to particular redshift bin and selection function */ - if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) - bin = index_tt - ptr->index_tt_density; - - if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_rsd; - - if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_d0; - - if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_d1; - - if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g1; + /* Non-integrated contributions to dCl/nCl need selection time sampling*/ - if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g2; - - if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g3; + if (_nonintegrated_ncl_) { - /* allocate temporary arrays for storing sources and for calling background */ - class_alloc(selection,tau_size*sizeof(double),ptr->error_message); - class_alloc(pvecback,pba->bg_size*sizeof(double),ptr->error_message); + _get_bin_nonintegrated_ncl_(index_tt) /* redefine the time sampling */ class_call(transfer_selection_sampling(ppr, @@ -2327,110 +2276,9 @@ int transfer_sources( ptr->error_message, ptr->error_message); - /* compute values of selection function at sampled values of tau */ - class_call(transfer_selection_compute(ppr, - pba, - ppt, - ptr, - selection, - tau0_minus_tau, - w_trapz, - tau_size, - pvecback, - tau0, - bin), - ptr->error_message, - ptr->error_message); - /* loop over time and rescale */ for (index_tau = 0; index_tau < tau_size; index_tau++) { - /* conformal time */ - tau = tau0 - tau0_minus_tau[index_tau]; - - /* geometrical quantity */ - switch (pba->sgnK){ - case 1: - cotKgen_source = sqrt(pba->K)/ptr->k[index_md][index_q] - *cos(tau0_minus_tau[index_tau]*sqrt(pba->K)) - /sin(tau0_minus_tau[index_tau]*sqrt(pba->K)); - break; - case 0: - cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); - break; - case -1: - cotKgen_source = sqrt(-pba->K)/ptr->k[index_md][index_q] - *cosh(tau0_minus_tau[index_tau]*sqrt(-pba->K)) - /sinh(tau0_minus_tau[index_tau]*sqrt(-pba->K)); - break; - } - - /* corresponding background quantities */ - class_call(background_at_tau(pba, - tau, - pba->long_info, - pba->inter_normal, - &last_index, - pvecback), - pba->error_message, - ptr->error_message); - - /* Source evolution, used by number counf rsd and number count gravity terms */ - - if ((_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr))) { - - if((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)){ - - f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]/tau0_minus_tau[index_tau] - + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; - - z = pba->a_today/pvecback[pba->index_bg_a]-1.; - - if (ptr->has_nz_evo_file ==_TRUE_) { - - class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), - ptr->error_message, - "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", - ptr->nz_evo_z[0], - ptr->nz_evo_z[ptr->nz_evo_size-1], - z); - - - class_call(array_interpolate_spline( - ptr->nz_evo_z, - ptr->nz_evo_size, - ptr->nz_evo_dlog_nz, - ptr->nz_evo_dd_dlog_nz, - 1, - z, - &last_index, - &dln_dNdz_dz, - 1, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - } - else { - - class_call(transfer_dNdz_analytic(ptr, - z, - &dNdz, - &dln_dNdz_dz), - ptr->error_message, - ptr->error_message); - } - - f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; - } - else { - f_evo = 0.; - } - - } - /* matter density source = [- (dz/dtau) W(z)] * delta_m(k,tau) = W(tau) delta_m(k,tau) with @@ -2441,146 +2289,24 @@ int transfer_sources( regulated anyway by Bessel). */ - if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) - rescaling = ptr->selection_bias[bin]*selection[index_tau]; - - /* redshift space distortion source = - [- (dz/dtau) W(z)] * (k/H) * theta(k,tau) */ - - if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) - rescaling = selection[index_tau]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + rescaling = window[index_tt*tau_size_max+index_tau]; if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) - rescaling = (f_evo-3.)*selection[index_tau]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a] - /ptr->k[index_md][index_q]/ptr->k[index_md][index_q]; + rescaling *= 1./ptr->k[index_md][index_q]/ptr->k[index_md][index_q]; // Factor from original ClassGAL paper ( arXiv 1307.1459 ) if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) - - rescaling = selection[index_tau]*(1. - +pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - +(2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau[index_tau] // in flat space - *cotKgen_source*ptr->k[index_md][index_q] // in general case - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - +5.*ptr->selection_magnification_bias[bin] - -f_evo - )/ptr->k[index_md][index_q]; - - if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) - - rescaling = selection[index_tau]; - - if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) - - rescaling = -selection[index_tau]*(3. - +pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - +(2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau[index_tau] // in flat space - *cotKgen_source*ptr->k[index_md][index_q] // in general case - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - -f_evo - ); - - if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - rescaling = selection[index_tau]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]; + rescaling *= 1./ptr->k[index_md][index_q]; // Factor from original ClassGAL paper ( arXiv 1307.1459 ) sources[index_tau] *= rescaling; - } - - /* deallocate temporary arrays */ - free(pvecback); - free(selection); } + /* End normal contributions */ - /* lensing potential: eliminate early times, and multiply by selection - function */ + /* Integrated contributions to dCl/nCl/sCl need integrated selection time sampling */ - if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_integrated_ncl_) { - /* bin number associated to particular redshift bin and selection function */ - if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) - bin = index_tt - ptr->index_tt_lensing; - - if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) - bin = index_tt - ptr->index_tt_nc_lens; - - if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g4; - - if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g5; - - /* allocate temporary arrays for storing sources and for calling background */ - class_alloc(pvecback, - pba->bg_size*sizeof(double), - ptr->error_message); - - /* dirac case */ - if (ppt->selection == dirac) { - tau_sources_size=1; - } - /* other cases (gaussian, tophat...) */ - else { - tau_sources_size=ppr->selection_sampling; - } - - class_alloc(selection, - tau_sources_size*sizeof(double), - ptr->error_message); - - class_alloc(tau0_minus_tau_lensing_sources, - tau_sources_size*sizeof(double), - ptr->error_message); - - class_alloc(w_trapz_lensing_sources, - tau_sources_size*sizeof(double), - ptr->error_message); - - /* time sampling for source selection function */ - class_call(transfer_selection_sampling(ppr, - pba, - ppt, - ptr, - bin, - tau0_minus_tau_lensing_sources, - tau_sources_size), - ptr->error_message, - ptr->error_message); - - /* Compute trapezoidal weights for integration over tau */ - class_call(array_trapezoidal_mweights(tau0_minus_tau_lensing_sources, - tau_sources_size, - w_trapz_lensing_sources, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - /* compute values of selection function at sampled values of tau */ - class_call(transfer_selection_compute(ppr, - pba, - ppt, - ptr, - selection, - tau0_minus_tau_lensing_sources, - w_trapz_lensing_sources, - tau_sources_size, - pvecback, - tau0, - bin), - ptr->error_message, - ptr->error_message); + _get_bin_integrated_ncl_(index_tt) /* redefine the time sampling */ class_call(transfer_lensing_sampling(ppr, @@ -2629,179 +2355,14 @@ int transfer_sources( regulated anyway by Bessel). */ - if (index_tau == tau_size-1) { - rescaling=0.; - } - else { - - rescaling = 0.; - - - for (index_tau_sources=0; - index_tau_sources < tau_sources_size; - index_tau_sources++) { - - switch (pba->sgnK){ - case 1: - sinKgen_source = ptr->k[index_md][index_q]*sin(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sqrt(pba->K); - sinKgen_source_to_lens = ptr->k[index_md][index_q]*sin((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(pba->K))/sqrt(pba->K); - cotKgen_source = cos(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sinKgen_source; - cscKgen_lens = sqrt(pba->K)/ptr->k[index_md][index_q]/sin(sqrt(pba->K)*tau0_minus_tau[index_tau]); - break; - case 0: - sinKgen_source = ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]; - sinKgen_source_to_lens = ptr->k[index_md][index_q]*(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]); - cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]); - cscKgen_lens = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); - break; - case -1: - sinKgen_source = ptr->k[index_md][index_q]*sinh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sqrt(-pba->K); - sinKgen_source_to_lens = ptr->k[index_md][index_q]*sinh((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(-pba->K))/sqrt(-pba->K); - cotKgen_source = cosh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sinKgen_source; - cscKgen_lens = sqrt(-pba->K)/ptr->k[index_md][index_q]/sinh(sqrt(-pba->K)*tau0_minus_tau[index_tau]); - break; - } - - - /* condition for excluding from the sum the sources located in z=zero */ - if ((tau0_minus_tau_lensing_sources[index_tau_sources] > 0.) && (tau0_minus_tau_lensing_sources[index_tau_sources]-tau0_minus_tau[index_tau] > 0.)) { - - if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) { - - rescaling += - // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) - // /tau0_minus_tau[index_tau] - // /tau0_minus_tau_lensing_sources[index_tau_sources] - ptr->k[index_md][index_q] - *sinKgen_source_to_lens - *cscKgen_lens - /sinKgen_source - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) { - - rescaling -= - (2.-5.*ptr->selection_magnification_bias[bin])/2. - // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) - // /tau0_minus_tau[index_tau] - // /tau0_minus_tau_lensing_sources[index_tau_sources] - *ptr->k[index_md][index_q] - *sinKgen_source_to_lens - *cscKgen_lens - /sinKgen_source - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) { - - rescaling += - (2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau_lensing_sources[index_tau_sources] - * cotKgen_source*ptr->k[index_md][index_q] - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - - } - - if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { - - /* background quantities at time tau_lensing_source */ - - class_call(background_at_tau(pba, - tau0-tau0_minus_tau_lensing_sources[index_tau_sources], - pba->long_info, - pba->inter_normal, - &last_index, - pvecback), - pba->error_message, - ptr->error_message); - - /* Source evolution at time tau_lensing_source */ - - if ((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)) { - - f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]*cotKgen_source*ptr->k[index_md][index_q] - + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; - - z = pba->a_today/pvecback[pba->index_bg_a]-1.; - - if (ptr->has_nz_evo_file == _TRUE_) { - - class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), - ptr->error_message, - "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", - ptr->nz_evo_z[0], - ptr->nz_evo_z[ptr->nz_evo_size-1], - z); - - class_call(array_interpolate_spline( - ptr->nz_evo_z, - ptr->nz_evo_size, - ptr->nz_evo_dlog_nz, - ptr->nz_evo_dd_dlog_nz, - 1, - z, - &last_index, - &dln_dNdz_dz, - 1, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - } - else { - - class_call(transfer_dNdz_analytic(ptr, - z, - &dNdz, - &dln_dNdz_dz), - ptr->error_message, - ptr->error_message); - } - - f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; - } - else { - f_evo = 0.; - } - - rescaling += - (1. - + pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - + (2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau_lensing_sources[index_tau_sources] - * cotKgen_source*ptr->k[index_md][index_q] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - + 5.*ptr->selection_magnification_bias[bin] - - f_evo) - * ptr->k[index_md][index_q] - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - } - } - } - /* copy from input array to output array */ - sources[index_tau] *= rescaling; + sources[index_tau] *= window[index_tt*tau_size_max+index_tau]; + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + sources[index_tau] *= ptr->k[index_md][index_q]; // Factor from chi derivative of d/dchi j_ell(k*chi)= d/d(kchi) j_ell(k chi) * k = k * j_ell'(kchi) } - - /* deallocate temporary arrays */ - free(pvecback); - free(selection); - free(tau0_minus_tau_lensing_sources); - free(w_trapz_lensing_sources); - } + /* End integrated contributions */ } } @@ -2832,7 +2393,7 @@ int transfer_sources( } /** - return tau_size value that will be stored in the workspace (the - workspace wants a double) */ + workspace wants a double) */ *tau_size_out = tau_size; @@ -3014,7 +2575,8 @@ int transfer_dNdz_analytic( double z0,alpha,beta; - z0 = 0.55; + //Euclid IST dNdz, do not change this! + z0 = 0.9/pow(2.,1./2.); alpha = 2.0; beta = 1.5; @@ -4475,7 +4037,7 @@ int transfer_radial_function( factor = 1.0; for (j=0; jindex_md_scalars; + int index_tt; + + /* allocate temporary arrays for storing selections, weights, times, and output; and for calling background */ + class_alloc(tau0_minus_tau,tau_size_max*sizeof(double),ptr->error_message); + class_alloc(selection,tau_size_max*sizeof(double),ptr->error_message); + class_alloc(w_trapz,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*window),tau_size_max*ptr->tt_size[index_md]*sizeof(double),ptr->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),ptr->error_message); + + /* conformal time today */ + tau0 = pba->conformal_age; + + /* Loop through different types to be precomputed */ + for (index_tt = 0; index_tt < ptr->tt_size[index_md]; index_tt++) { + + /* First set the corresponding tau size */ + class_call(transfer_source_tau_size(ppr, + pba, + ppt, + ptr, + tau_rec, + tau0, + index_md, + index_tt, + &tau_size), + ptr->error_message, + ptr->error_message); + + /* Start with non-integrated contributions */ + if (_nonintegrated_ncl_) { + + _get_bin_nonintegrated_ncl_(index_tt) + + /* redefine the time sampling */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + class_test(tau0 - tau0_minus_tau[0] > ppt->tau_sampling[ppt->tau_size-1], + ptr->error_message, + "this should not happen, there was probably a rounding error, if this error occurred, then this must be coded more carefully"); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau, + w_trapz, + tau_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* conformal time */ + tau = tau0 - tau0_minus_tau[index_tau]; + + /* geometrical quantity */ + switch (pba->sgnK){ + case 1: + cotKgen_source = sqrt(pba->K) + *cos(tau0_minus_tau[index_tau]*sqrt(pba->K)) + /sin(tau0_minus_tau[index_tau]*sqrt(pba->K)); + break; + case 0: + cotKgen_source = 1./(tau0_minus_tau[index_tau]); + break; + case -1: + cotKgen_source = sqrt(-pba->K) + *cosh(tau0_minus_tau[index_tau]*sqrt(-pba->K)) + /sinh(tau0_minus_tau[index_tau]*sqrt(-pba->K)); + break; + } + + /* corresponding background quantities */ + class_call(background_at_tau(pba, + tau, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution, used by nCl doppler and nCl gravity terms */ + + if ((_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr))) + { + class_call(transfer_f_evo(pba,ptr,pvecback,last_index,cotKgen_source,&f_evo), + ptr->error_message, + ptr->error_message); + /* Error in old CLASS 2.6.3 : Number count evolution did not respect curvature */ + } + + /* matter density source = [- (dz/dtau) W(z)] * delta_m(k,tau) + = W(tau) delta_m(k,tau) + with + delta_m = total matter perturbation (defined in gauge-independent way, see arXiv 1307.1459) + W(z) = redshift space selection function = dN/dz + W(tau) = same wrt conformal time = dN/dtau + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + rescaling = ptr->selection_bias[bin]*selection[index_tau]; + + /* redshift space distortion source = - [- (dz/dtau) W(z)] * (k/H) * theta(k,tau) */ + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = (f_evo-3.)*selection[index_tau]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + + rescaling = selection[index_tau]*(1. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + +5.*ptr->selection_magnification_bias[bin] + -f_evo + ); + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = selection[index_tau]; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = -selection[index_tau]*(3. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + -f_evo + ); + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]; + + /* finally store in array */ + (*window)[index_tt*tau_size_max+index_tau] = rescaling; + } + } + /* End non-integrated contribution */ + + /* Now deal with integrated contributions */ + if (_integrated_ncl_) { + + _get_bin_integrated_ncl_(index_tt) + + /* dirac case */ + if (ppt->selection == dirac) { + tau_sources_size=1; + } + /* other cases (gaussian, tophat...) */ + else { + tau_sources_size=ppr->selection_sampling; + } + + class_alloc(tau0_minus_tau_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + class_alloc(w_trapz_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + /* time sampling for source selection function */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau_lensing_sources, + tau_sources_size), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau_lensing_sources, + tau_sources_size, + w_trapz_lensing_sources, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau_lensing_sources, + w_trapz_lensing_sources, + tau_sources_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* redefine the time sampling */ + class_call(transfer_lensing_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* lensing source = - W(tau) (phi(k,tau) + psi(k,tau)) Heaviside(tau-tau_rec) + with + psi,phi = metric perturbation in newtonian gauge (phi+psi = Phi_A-Phi_H of Bardeen) + W = (tau-tau_rec)/(tau_0-tau)/(tau_0-tau_rec) + H(x) = Heaviside + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (index_tau == tau_size-1) { + rescaling=0.; + } + else { + + rescaling = 0.; + + for (index_tau_sources=0; + index_tau_sources < tau_sources_size; + index_tau_sources++) { + + switch (pba->sgnK){ + case 1: + sinKgen_source = sin(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sqrt(pba->K); + sinKgen_source_to_lens = sin((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(pba->K))/sqrt(pba->K); + cotKgen_source = cos(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sinKgen_source; + cscKgen_lens = sqrt(pba->K)/sin(sqrt(pba->K)*tau0_minus_tau[index_tau]); + break; + case 0: + sinKgen_source = tau0_minus_tau_lensing_sources[index_tau_sources]; + sinKgen_source_to_lens = (tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]); + cotKgen_source = 1./(tau0_minus_tau_lensing_sources[index_tau_sources]); + cscKgen_lens = 1./(tau0_minus_tau[index_tau]); + break; + case -1: + sinKgen_source = sinh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sqrt(-pba->K); + sinKgen_source_to_lens = sinh((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(-pba->K))/sqrt(-pba->K); + cotKgen_source = cosh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sinKgen_source; + cscKgen_lens = sqrt(-pba->K)/sinh(sqrt(-pba->K)*tau0_minus_tau[index_tau]); + break; + } + + /* condition for excluding from the sum the sources located in z=zero */ + if ((tau0_minus_tau_lensing_sources[index_tau_sources] > 0.) && (tau0_minus_tau_lensing_sources[index_tau_sources]-tau0_minus_tau[index_tau] > 0.)) { + + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) { + + rescaling += + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) { + + rescaling -= + (2.-5.*ptr->selection_magnification_bias[bin])/2. + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + *sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) { + + rescaling += + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { + + /* background quantities at time tau_lensing_source */ + + class_call(background_at_tau(pba, + tau0-tau0_minus_tau_lensing_sources[index_tau_sources], + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution at time tau_lensing_source */ + + class_call(transfer_f_evo(pba,ptr,pvecback,last_index,cotKgen_source,&f_evo), + ptr->error_message, + ptr->error_message); + + + rescaling += + (1. + + pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + + 5.*ptr->selection_magnification_bias[bin] + - f_evo) + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + } + } + } + + /* Finally store integrated result for later use */ + (*window)[index_tt*tau_size_max+index_tau] = rescaling; + } + + /* deallocate temporary arrays */ + free(tau0_minus_tau_lensing_sources); + free(w_trapz_lensing_sources); + } + /* End integrated contribution */ + } + + /* deallocate temporary arrays */ + free(selection); + free(tau0_minus_tau); + free(w_trapz); + free(pvecback); + return _SUCCESS_; +} + +int transfer_f_evo( + struct background* pba, + struct transfers * ptr, + double* pvecback, + int last_index, + double cotKgen, /* Should be FILLED with values of corresponding time */ + double* f_evo + ){ + /* Allocate temporary variables for calculation of f_evo */ + double z; + double dNdz; + double dln_dNdz_dz; + double temp_f_evo; + + if ((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)){ + + temp_f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]*cotKgen + + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + if (ptr->has_nz_evo_file ==_TRUE_) { + + class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), + ptr->error_message, + "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", + ptr->nz_evo_z[0], + ptr->nz_evo_z[ptr->nz_evo_size-1], + z); + + + class_call(array_interpolate_spline( + ptr->nz_evo_z, + ptr->nz_evo_size, + ptr->nz_evo_dlog_nz, + ptr->nz_evo_dd_dlog_nz, + 1, + z, + &last_index, + &dln_dNdz_dz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + temp_f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; + } + else { + temp_f_evo = 0.; + } + + /* after obtaining f_evo, store it in output */ + *f_evo = temp_f_evo; + + return _SUCCESS_; +} diff --git a/class/test/chi2.c b/class/test/chi2.c new file mode 100755 index 00000000..85aeff03 --- /dev/null +++ b/class/test/chi2.c @@ -0,0 +1,310 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "stdio.h" +#include "stdlib.h" +#include "math.h" +#include "string.h" +#include "float.h" + +#define _PI_ 3.14159 + +int chi2_simple( + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + int i,l_max,l; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + double * param; + + FILE * output; + char filename[200]; + char results_name[200]; + char junk_string[200]; + int l_read; + + /*******************************/ + + l_max = 3000; + + cl=malloc(2*sizeof(double**)); + for (i=0; i<2; i++) { + cl[i]=malloc((l_max+1)*sizeof(double*)); + for (l=2; l <= l_max; l++) { + cl[i][l]=malloc(3*sizeof(double)); + } + } + + noise=calloc((l_max+1),sizeof(double*)); + for (l=2; l <= l_max; l++) { + noise[l]=calloc(3,sizeof(double)); + } + + sprintf(filename,"output/chi2pl0.1_cl_lensed.dat"); + + /* read file and fill cl[param_num] */ + output = fopen(filename,"r"); + fprintf(stderr,"Read reference in file %s\n",filename); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + //fgets(junk_string,200,output); + //fgets(junk_string,200,output); + //fgets(junk_string,200,output); + float cl_read; + for (l=2; l <= l_max; l++) { + fscanf(output,"%d",&l_read); + //fprintf(stderr,"%d\n",l_read); + fscanf(output,"%e",&cl_read); + //fprintf(stderr," %e\n",cl_read); + cl[0][l][0]=(double)cl_read*2.*_PI_/l/(l+1); + // fprintf(stderr,"%d %e\n",l_read,cl[ref_run][l][sp.index_ct_tt]); + fscanf(output,"%e",&cl_read); + cl[0][l][1]=(double)cl_read*2.*_PI_/l/(l+1); + fscanf(output,"%e",&cl_read); + cl[0][l][2]=(double)cl_read*2.*_PI_/l/(l+1); + //fprintf(stderr," %e %d\n",cl_read,sp.index_ct_te); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + } + + fclose(output); + + sprintf(filename,"output/cl_ref_cl_lensed.dat"); + + /* read file and fill cl[param_num] */ + output = fopen(filename,"r"); + fprintf(stderr,"Read degraded precision in file %s\n",filename); + fgets(junk_string,200,output); + //fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + //float cl_read; + //fprintf(stderr,"get here\n"); + for (l=2; l <= l_max; l++) { + fscanf(output,"%d",&l_read); + // fprintf(stderr,"%d",l_read); + fscanf(output,"%e",&cl_read); + // fprintf(stderr," %e\n",cl_read); + cl[1][l][0]=(double)cl_read*2.*_PI_/l/(l+1); + // fprintf(stderr,"%d %e\n",l_read,cl[ref_run][l][sp.index_ct_tt]); + fscanf(output,"%e",&cl_read); + cl[1][l][1]=(double)cl_read*2.*_PI_/l/(l+1); + fscanf(output,"%e",&cl_read); + cl[1][l][2]=(double)cl_read*2.*_PI_/l/(l+1); + //fprintf(stderr," %e %d\n",cl_read,sp.index_ct_te); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + //fscanf(output,"%e",&cl_read); + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + } + + fclose(output); + + fprintf(stderr,"get here\n"); + + + + noise_planck(noise,l_max); + + fprintf(stderr,"get here\n"); + + chi2_planck(cl[0],cl[1],noise,l_max,&chi2); + + fprintf(stderr,"get here\n"); + + fprintf(stderr,"chi2=%2g \n",chi2); + + return 0; + +} + +int chi2_simple( + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][0]-cl2[l][0]) + /cl2[l][0]),2) + + pow(((cl1[l][2]-cl2[l][2]) + /cl2[l][2]),2) + + pow(((cl1[l][1]-cl2[l][1]) + /cl2[l][1]),2); + } + + return 0; + +} + +int chi2_planck( + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][0]+nl[l][0]; + clEE_th = cl1[l][1]+nl[l][1]; + clTE_th = cl1[l][2]; + + clTT_obs = cl2[l][0]+nl[l][0]; + clEE_obs = cl2[l][1]+nl[l][1]; + clTE_obs = cl2[l][2]; + + //printf("%e %e %e %e %e %e\n",clTT_th,clTT_obs,clEE_th,clEE_obs,clTE_th,clTE_obs); + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return 0; + +} + +int noise_planck( + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + double Tcmb = 2.726; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/Tcmb); + deltaP[1]=(11.4e-6/Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/Tcmb); + deltaP[2]=(26.7e-6/Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channel%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /* read model with appropriate lensing potential */ + + sprintf(filename,"output/lensing_cl.dat"); + + output = fopen(filename,"r"); + fprintf(stderr,"Read reference in file %s\n",filename); + + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + + index_l=0; + + for (l=2; l <= sp.l_max_tot; l++) { + fscanf(output,"%d",&l_read); // l + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + + fscanf(output,"%e",&cl_read); // TT + fscanf(output,"%e",&cl_read); // TE + fscanf(output,"%e",&cl_read); // EE + fscanf(output,"%e",&cl_read); // BB + fscanf(output,"%e",&cl_read); // phiphi + + if (l == (int)sp.l[index_l]) { + + factor = l*(l+1)/2./_PI_; + + sp.cl[sp.index_md_scalars][index_l*sp.ct_size+sp.index_ct_pp]=cl_read/factor; + index_l++; + + } + + fscanf(output,"%e",&cl_read); // Tphi + fscanf(output,"%e",&cl_read); // Ephi + } + + fclose(output); + + /* spline the spectra (redundent excepted for the new phiphi column) */ + + class_call(array_spline_table_lines(sp.l, + sp.l_size[sp.index_md_scalars], + sp.cl[sp.index_md_scalars], + sp.ic_ic_size[sp.index_md_scalars]*sp.ct_size, + sp.ddcl[sp.index_md_scalars], + _SPLINE_EST_DERIV_, + sp.error_message), + sp.error_message, + sp.error_message); + + /* carry on the calculation */ + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&pt,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** all calculations done, now free the structures ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_2D_quadrature.c b/class/test/test_2D_quadrature.c new file mode 100644 index 00000000..da90a475 --- /dev/null +++ b/class/test/test_2D_quadrature.c @@ -0,0 +1,33 @@ +#include "common.h" +#include "quadrature.h" + +int main(){ + double I,fxy; + int i,n; + double *x,*y,*w; + ErrorMsg error_message; + + n=2; + + class_call(quadrature_in_rectangle(-2.0,2.0,1.0,4.0,&n,&x,&y,&w,error_message), + error_message, + error_message); + + + for(i=0,I=0.0; i%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + /****** here you can output the evolution of any background + quanitity you are interested in ******/ + + int index_tau; + + for (index_tau=0; index_tau%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_bessel.c b/class/test/test_bessel.c new file mode 100755 index 00000000..5080f093 --- /dev/null +++ b/class/test/test_bessel.c @@ -0,0 +1,85 @@ +/** @file class.c + * Julien Lesgourgues, 18.04.2010 + */ + +#include "class.h" + +main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + /* + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + */ + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + /****** here you could output the bessel functions ******/ + + int index_l=10; + int index_x; + for (index_x=0; index_x%s\n",bs.error_message); + return _FAILURE_; + } + + /* + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + */ + +} diff --git a/class/test/test_degeneracy.c b/class/test/test_degeneracy.c new file mode 100755 index 00000000..9637f98b --- /dev/null +++ b/class/test/test_degeneracy.c @@ -0,0 +1,710 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ +#include "class.h" +#include +#include +#define TINy 1.0e-1 +#define NMAX 100000 +#define GET_PSUM \ + for (j=0;j%s\n",errmsg); + return _FAILURE_; + } + + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl,errmsg); + chi2_planck(&sp,cl,cl_ref,noise,&chi2); + + for (l=2; l <= l_max; l++) { + free(cl[l]); + } + free(cl); + /*fprintf(stderr,"here, YHe = %s, h = %s, omega_c = %s, n_s = %s, A_s = %s, chi2 = %e\n",fc.value[4],fc.value[5],fc.value[6],fc.value[8],fc.value[9],chi2);*/ + + /*fprintf(stderr,"YHe:%e, h:%e, omega_cdm:%e, chi2:%e\n",param[0],param[1],param[2],chi2);*/ + return chi2; +} + +void amoeba(double **p,double y[],int ndim,double ftol, double (*funk)(double [])){ + + double amotry(double **p,double y[], double psum[], int ndim, double (*funk)(double []),int ihi,double fac); + int i,ihi,ilo,inhi,j,mpts=ndim+1; + int k; + double rtol,sum,swap,ysave,ytry,*psum; + psum = calloc(ndim,sizeof(double)); + int nfunk=0; + GET_PSUM + for (;;) { + ilo=0; + /*First we must determine which point is the highest (worst), next-highest, and lowest (best), by looping over the points in the simplex.*/ + ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1); + for (i=0;i y[ihi]) { + inhi=ihi; + ihi=i; + } + else if (y[i] > y[inhi] && i != ihi) inhi=i; + } + rtol=fabs(y[ihi]-y[ilo]); //Compute the fractional range from highest to lowest and return if satisfactory. + /*fprintf(stderr,"--> y[ihi]:%e y[ilo]:%e rtol %e\n\n",y[ihi],y[ilo],rtol);*/ + if (rtol < ftol) { //If returning, put best point and value in slot 1. + SWAP(y[0],y[ilo]); + for (i=0;i= NMAX) fprintf(stderr,"NMAX exceeded\n"); + nfunk += 2; + //Begin a new iteration. First extrapolate by a factor −1 through the face of the simplex across from the high point, i.e., reflect the simplex from the high point. + + ytry=amotry(p,y,psum,ndim,funk,ihi,-1.0); + if (ytry <= y[ilo]){ + //Gives a result better than the best point, so try an additional extrapolation by a factor 2. + /*fprintf(stderr,"is better, going twice as far\n");*/ + ytry=amotry(p,y,psum,ndim,funk,ihi,2.0);} + else if (ytry >= y[inhi]) { + /*fprintf(stderr,"is worse, trying half\n");*/ + //The reflected point is worse than the second-highest, so look for an intermediate lower point, i.e., do a one-dimensional contraction. + ysave=y[ihi]; + ytry=amotry(p,y,psum,ndim,funk,ihi,0.5); + if (ytry >= ysave) { //Can’t seem to get rid of that high point. Better + for (k=0;k%s\n",errmsg); + return _FAILURE_; + } + noise_planck(&ba,&th,&sp,noise); + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl_ref,errmsg); + double alpha; + double random_number; + + // Looping on all values of parameter + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl,errmsg); + chi2_planck(&sp,cl,cl_ref,noise,&chi2[k]); + + } + amoeba(p,chi2,ndim,ftol,get_chi2); + if (j==0){ + storage = (chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.; + } + fprintf(stderr,"run %d, chi2:%f\n",j,(chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.); + if ((chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6. < storage){ + storage = (chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.; + } + if (j==4){ + fprintf(stderr,"final chi2: %f\n",storage); + } + // Initialization of the simplex method, compute ndim+1 points. + } + + + + + + fprintf(stdout,"%e %e %e %e %e %e %e\n",parameter[i],(p[0][0]+p[1][0]+p[2][0]+p[3][0]+p[4][0]+p[5][0])/6., + (p[0][1]+p[1][1]+p[2][1]+p[3][1]+p[4][1]+p[5][1])/6., + (p[0][2]+p[1][2]+p[2][2]+p[3][2]+p[4][1]+p[5][1])/6., + (p[0][3]+p[1][3]+p[2][3]+p[3][3]+p[4][3]+p[5][3])/6., + (p[0][4]+p[1][4]+p[2][4]+p[3][4]+p[4][4]+p[5][4])/6., + storage); + } + /*fprintf(stdout,"%e %e %e %e %e\n",parameter[i],(p[0][0]+p[1][0]+p[2][0]+p[3][0])/4.,*/ + /*(p[0][1]+p[1][1]+p[2][1]+p[3][1])/4.,*/ + /*(p[0][2]+p[1][2]+p[2][2]+p[3][2])/4.,*/ + /*chi2[0]);*/ + /*fprintf(stdout,"%e %e %e\n",parameter[i],(p[0][0]+p[1][0])/2.,chi2[0]);*/ + return _SUCCESS_; + + } + + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + /*fprintf(stderr,"h = %e, omga_c = %e, omega_b = %e, Omega_Lambda = %e, Omega_ur = %e, z_eq = %e\n",pba->h,pba->Omega0_cdm*pba->h*pba->h,pba->Omega0_b*pba->h*pba->h,pba->Omega0_lambda,pba->Omega0_ur,(pba->Omega0_b+pba->Omega0_cdm)/(pba->Omega0_g+pba->Omega0_ur));*/ + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppt,pbs,ptr,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_;} + } + + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= l_max; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** noise, + double * chi2) { + + int l; + double fsky=0.65; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= l_max; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+noise[l][0])/ + (cl1[l][0]+noise[l][0])+ + log((cl1[l][0]+noise[l][0])/(cl2[l][0]+noise[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*noise[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+noise[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+noise[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+noise[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+noise[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** noise + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->T_cmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->T_cmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->T_cmb); + deltaP[1]=(11.4e-6/pba->T_cmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->T_cmb); + deltaP[2]=(26.7e-6/pba->T_cmb); + + for (l=2; l<=l_max; l++) { + + for (channel=0; channelhas_tt) { + noise[l][psp->index_ct_tt] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + noise[l][psp->index_ct_ee] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + noise[l][psp->index_ct_tt] = 1./noise[l][psp->index_ct_tt]; + } + if (psp->has_ee) { + noise[l][psp->index_ct_ee] = 1./noise[l][psp->index_ct_ee]; + } + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} + diff --git a/class/test/test_hyperspherical.c b/class/test/test_hyperspherical.c new file mode 100644 index 00000000..76af5667 --- /dev/null +++ b/class/test/test_hyperspherical.c @@ -0,0 +1,157 @@ +#include "common.h" +#include "hyperspherical.h" + + +int main(){ + + int sgnK; + double nu; + int *lvec; + int l_size; + int index_l, index_x, index_nu; + double xmax, sampling, supersampling; + double *xvec, *Phi, *nuvec; + int nu_size; + double dx; + double Inum; + double Iexact, l; + FILE * outnum, *outexact, *out; + double maxerr; + + HyperInterpStruct HIS; + ErrorMsg error_message; + + sgnK = 1; + + switch(sgnK){ + case 0: + outnum = fopen("I_num.dat","w"); + outexact = fopen("I_exact.dat","w"); + case -1: + outnum = fopen("I_num_open.dat","w"); + outexact = fopen("I_exact.dat","w"); + case 1: + outnum = fopen("I_num_closed.dat","w"); + outexact = fopen("I_exact.dat","w"); +} + + + l_size = 400; + int l_size_in = l_size; + nu_size = 100; + + nu = 10.0; + + lvec = malloc(sizeof(int)*l_size); + out = fopen("lvec.dat","w"); + for (index_l=0; index_l=nu){ + l_size = k-1; + break; + } + } + } + + + sampling = 6.0; + + class_call(hyperspherical_HIS_create(sgnK, + nu, + l_size, + lvec, + 1e-6, + xmax, + sampling, + lvec[l_size-1]+1, + 1e-20, + &HIS, + error_message), + error_message, + error_message); + + supersampling = 100*HIS.x_size; + xvec = malloc(sizeof(double)*supersampling); + Phi = malloc(sizeof(double)*supersampling); + + for (index_x=0; index_xerror_message, + errmsg); + + class_call(thermodynamics_init(ppr,pba,pth), + pth->error_message, + errmsg); + + class_call(perturb_init(ppr,pba,pth,ppt), + ppt->error_message, + errmsg); + + class_call(primordial_init(ppr,ppt,ppm), + ppm->error_message, + errmsg); + + class_call(nonlinear_init(ppr,pba,pth,ppt,ppm,pnl), + pnl->error_message, + errmsg); + + class_call(transfer_init(ppr,pba,pth,ppt,pnl,ptr), + ptr->error_message, + errmsg); + + class_call(spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp), + psp->error_message, + errmsg); + + class_call(lensing_init(ppr,ppt,psp,pnl,ple), + ple->error_message, + errmsg); + + /****** write the Cl values in the input array cl[l] *******/ + + for (l=2; l <= l_max; l++) { + + class_call(output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]), + psp->error_message, + errmsg); + } + + /****** all calculations done, now free the structures ******/ + + class_call(lensing_free(ple), + ple->error_message, + errmsg); + + class_call(spectra_free(psp), + psp->error_message, + errmsg); + + class_call(transfer_free(ptr), + ptr->error_message, + errmsg); + + class_call(nonlinear_free(pnl), + pnl->error_message, + errmsg); + + class_call(primordial_free(ppm), + ppm->error_message, + errmsg); + + class_call(perturb_free(ppt), + ppt->error_message, + errmsg); + + class_call(thermodynamics_free(pth), + pth->error_message, + errmsg); + + class_call(background_free(pba), + pba->error_message, + errmsg); + + return _SUCCESS_; + +} + +int main() { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + int i; + int l,l_max; + int num_ct_max=7; + double ** cl; + struct file_content fc; + + /* choose a value of l_max in C_l's */ + l_max=3000; + + /* all parameters for which we don't want to keep default values + should be passed to the code through a file_content + structure. Create such a structure with the size you need: 9 in + this exemple */ + parser_init(&fc,10,"",errmsg); + + /* assign values to these 9 parameters. Some will be fixed, some + will be varied in the loop. */ + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl,lCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + + strcpy(fc.name[2],"lensing"); + sprintf(fc.value[2],"yes"); + + strcpy(fc.name[3],"H0"); + sprintf(fc.value[3],"%e",72.); + + strcpy(fc.name[4],"omega_b"); + sprintf(fc.value[4],"%e",0.024); + + strcpy(fc.name[5],"omega_cdm"); + sprintf(fc.value[5],"%e",0.05); + + strcpy(fc.name[6],"z_reio"); + sprintf(fc.value[6],"%e",10.); + + strcpy(fc.name[7],"A_s"); + sprintf(fc.value[7],"%e",2.3e-9); + + strcpy(fc.name[8],"n_s"); + sprintf(fc.value[8],"%e",1.); + + strcpy(fc.name[9],"T_cmb"); + sprintf(fc.value[9],"%e",2.726); + + /* allocate the array where calculated Cl's will be written (we + could add another array with P(k), or extract other results from + the code - here we assume that we are interested in the C_l's + only */ + cl=malloc((l_max+1)*sizeof(double*)); + for (l=0;l<=l_max;l++) + cl[l]=malloc(num_ct_max*sizeof(double)); + + /* now, loop over values of some of these parameters: in this + exemple, omega_b */ + for (i=0; i<=10; i++) { + + /* assign one value to omega_b */ + sprintf(fc.value[4],"%e",0.01+i*0.002); + printf("#run with omega_b = %s\n",fc.value[4]); + + /* calls class and return the C_l's*/ + if (class(&fc,&pr,&ba,&th,&pt,&pm,&nl,&tr,&sp,&le,&op,l_max,cl,errmsg) == _FAILURE_) { + printf("\n\nError in class \n=>%s\n",errmsg); + return _FAILURE_; + } + + /* print the lensed C_l^TT, C_l^EE, C_l^TE's for this run */ + for (l=2;l<=l_max;l++) { + fprintf(stdout,"%d %e %e %e\n", + l, + cl[l][sp.index_ct_tt], + cl[l][sp.index_ct_ee], + cl[l][sp.index_ct_te]); + } + fprintf(stdout,"\n"); + } + + for (l=0;lerror_message, + errmsg); + + class_call(thermodynamics_init(ppr,pba,pth), + pth->error_message, + errmsg); + + class_call(perturb_init(ppr,pba,pth,ppt), + ppt->error_message, + errmsg); + + class_call(primordial_init(ppr,ppt,ppm), + ppm->error_message, + errmsg); + + class_call(nonlinear_init(ppr,pba,pth,ppt,ppm,pnl), + pnl->error_message, + errmsg); + + class_call(transfer_init(ppr,pba,pth,ppt,pnl,ptr), + ptr->error_message, + errmsg); + + class_call(spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp), + psp->error_message, + errmsg); + + class_call(lensing_init(ppr,ppt,psp,pnl,ple), + ple->error_message, + errmsg); + + /****** write the Cl values in the input array cl[l] *******/ + + for (l=2; l <= l_max; l++) { + + class_call(output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]), + psp->error_message, + errmsg); + } + + /****** all calculations done, now free the structures ******/ + + class_call(lensing_free(ple), + ple->error_message, + errmsg); + + class_call(spectra_free(psp), + psp->error_message, + errmsg); + + class_call(transfer_free(ptr), + ptr->error_message, + errmsg); + + class_call(nonlinear_free(pnl), + pnl->error_message, + errmsg); + + class_call(primordial_free(ppm), + ppm->error_message, + errmsg); + + class_call(perturb_free(ppt), + ppt->error_message, + errmsg); + + class_call(thermodynamics_free(pth), + pth->error_message, + errmsg); + + class_call(background_free(pba), + pba->error_message, + errmsg); + + return _SUCCESS_; + +} + +int main() { + + /* shared variable that will be common to all CLASS instances */ + int i; + int l,l_max; + int num_ct_max=7; + int num_loops=10; + + struct file_content fc; + ErrorMsg errmsg_parser; + + int total_number_of_threads; + int number_of_class_instances; + int number_of_threads_inside_class; + + int index_ct_tt; + int index_ct_ee; + int index_ct_te; + + /* dealing with the openMP part (number of instances, number of + threads per instance...) */ + +#ifdef _OPENMP + + /* Determine the number of threads, class instances and nested + threads */ + total_number_of_threads = omp_get_max_threads(); + + /* User-fixed number of CLASS instances to be run in parallel (Total + number of threads should be dividable by this number) */ + number_of_class_instances=2; + + if ((total_number_of_threads % number_of_class_instances) != 0) + printf("The total number of threads, %d, is not a mutiple of the requested number of CLASS instances, %d\n",total_number_of_threads,number_of_class_instances); + number_of_threads_inside_class = total_number_of_threads/number_of_class_instances; + + /* inferred number of threads per instance */ + printf("# Total number of available threads = %d, used to run\n", + total_number_of_threads); + printf("# -> %d CLASS executables in parallel\n", + number_of_class_instances); + printf("# -> %d threads inside each CLASS executables\n", + number_of_threads_inside_class); + + /* Turn on nested parallelism */ + omp_set_nested(1); +#endif + + /* choose a value of l_max in C_l's */ + l_max=3000; + + /* all parameters for which we don't want to keep default values + should be passed to the code through a file_content + structure. Create such a structure with the size you need: 10 in + this exemple */ + parser_init(&fc,10,"",errmsg_parser); + + /* assign values to these 9 parameters. Some will be fixed, some + will be varied in the loop. */ + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl,lCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + + strcpy(fc.name[2],"lensing"); + sprintf(fc.value[2],"yes"); + + strcpy(fc.name[3],"H0"); + sprintf(fc.value[3],"%e",72.); + + strcpy(fc.name[4],"omega_b"); + sprintf(fc.value[4],"%e",0.024); + + strcpy(fc.name[5],"omega_cdm"); + sprintf(fc.value[5],"%e",0.05); + + strcpy(fc.name[6],"z_reio"); + sprintf(fc.value[6],"%e",10.); + + strcpy(fc.name[7],"A_s"); + sprintf(fc.value[7],"%e",2.3e-9); + + strcpy(fc.name[8],"n_s"); + sprintf(fc.value[8],"%e",1.); + + strcpy(fc.name[9],"perturbations_verbose"); + sprintf(fc.value[9],"%d",0); // Trick: set to 2 to cross-check actual number of threads per CLASS instance + + /* Create an array of Cl's where all results will be stored for each parameter value in the loop */ + double *** cl; + cl = malloc(num_loops*sizeof(double**)); + + /* Create one thread for each instance of CLASS */ +#pragma omp parallel num_threads(number_of_class_instances) + { + + /* set the number of threads inside each CLASS instance */ +#ifdef _OPENMP + omp_set_num_threads(number_of_threads_inside_class); +#endif + + /* for each thread/instance, create all CLASS input/output + structures (these variables are being declared insode the + parallel zone, hence they are openMP private variables) */ + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + struct file_content fc_local; + int j,iam; + + /* copy the shared file content into the local file content used by each instance */ + parser_init(&fc_local,fc.size,"",errmsg); + for (j=0; j < fc.size; j++) { + strcpy(fc_local.value[j],fc.value[j]); + strcpy(fc_local.name[j],fc.name[j]); + fc_local.read[j]=fc.read[j]; + } + + /* loop over (num_loops) values of some parameters: in this exemple, omega_b */ +#pragma omp for schedule(static,1) + for (i=0; i<=num_loops; i++) { + +#ifdef _OPENMP + iam=omp_get_thread_num(); +#else + iam=0; +#endif + + /* assign one value to omega_b */ + sprintf(fc_local.value[4],"%e",0.01+i*0.002); + + printf("# %d\tthread=%d : running with omega_b = %s\n",i,iam,fc_local.value[4]); + + /* allocate the array where the Cl's calculated by one instance + will be written (we could add another array with P(k), or + extract other results from the code - here we assume that we + are interested in the C_l's only */ + cl[i]=malloc((l_max+1)*sizeof(double*)); + for (l=0;l<=l_max;l++) + cl[i][l]=malloc(num_ct_max*sizeof(double)); + + /* calls class and return the C_l's*/ + if (class(&fc_local,&pr,&ba,&th,&pt,&pm,&nl,&tr,&sp,&le,&op,l_max,cl[i],errmsg) == _FAILURE_) { + printf("\n\nError in class \n=>%s\n",errmsg); + //return _FAILURE_; + } + + /* if this is the first call, extract dynamically the value of indices used in the output */ + if ((i==0) && (iam==0)) { + index_ct_tt=sp.index_ct_tt; + index_ct_te=sp.index_ct_te; + index_ct_ee=sp.index_ct_ee; + } + + } // end of loop over parameters + } // end parallel zone + + /* write in file the lensed C_l^TT, C_l^EE, C_l^TE's obtained in all runs */ + + FILE * out=fopen("output/test_loops_omp.dat","w"); + + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /****** output the transfer functions ******/ + + double z,k_nl,k; + FILE * output; + double * pvecback; + int index_tau,index_k; + int junk; + double r_nl; + + if (nl.method == nl_halofit) { + + printf("Non-linear scale k_NL found by halofit:\n"); + + z=0.; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + z=0.5; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + z=1.0; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + printf("Non-linear correction factor r_nl=sqrt(P_nl/P_l) written in file with columns (z, k, r_nl\n"); + + output=fopen("output/r_nl.dat","w"); + + pvecback=malloc(ba.bg_size_short*sizeof(double)); + + for (index_tau=0; index_tau%s\n",ba.error_message); + return _FAILURE_; + } + + z=ba.a_today/pvecback[ba.index_bg_a]-1.; + + for (index_k=0; index_k%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_optimize.c b/class/test/test_optimize.c new file mode 100755 index 00000000..04ef2514 --- /dev/null +++ b/class/test/test_optimize.c @@ -0,0 +1,641 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + struct spectra * psp, + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + + ErrorMsg errmsg; + + int i,l_max,l; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + double * param; + + FILE * output; + FILE * results; + char filename[60]; + char results_name[60]; + char junk_string[120]; + int l_read; + +/*******************************/ + + param = &(pr.perturb_sampling_stepsize); + //param = &(pr.radiation_streaming_trigger_tau_over_tau_k); + //param = &(pr.radiation_streaming_trigger_tau_c_over_tau); + + parameter_initial=0.15; + parameter_logstep=1.1; + + param_num=10; + ref_run=-1; + + /* if ref_run<0, the reference is taken in the following external file: */ + + sprintf(filename,"output/cl_ref_cl_lensed.dat"); + +/*******************************************************/ + + if (input_init_from_arguments(argc,argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + //l_max = pt.l_scalar_max; + l_max=3000; + + class_alloc(parameter,param_num*sizeof(double),errmsg); + + class_calloc(noise,(l_max+1),sizeof(double*),errmsg); + for (l=2; l <= l_max; l++) { + class_calloc(noise[l],2,sizeof(double),errmsg); + } + + + if (ref_run >= param_num) { + fprintf(stderr,"ref_run=%d out of allowed range\n",ref_run); + return _FAILURE_; + } + + else if (ref_run >= 0) { + class_alloc(cl,param_num*sizeof(double**),errmsg); + for (i=0; i%s\n",bs.error_message); + return _FAILURE_; + } + + for (i=0; i%s\n",bs.error_message); + return _FAILURE_; + } + + noise_planck(&ba,&th,&sp,noise,l_max); + + for (i=0; i10.) { + fprintf(stderr,"parameter=%e BAD: chi2=%e \n", + parameter[i],chi2); + } + else { + fprintf(stderr,"parameter=%e OK : chi2=%e \n", + parameter[i],chi2); + } + } + + return _SUCCESS_; + +} + + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(ppr,pbs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(pbs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + //fprintf(stderr,"%d %e %e %e\n",l,cl[l][0],cl[l][1],cl[l][2]); + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + + //fprintf(stderr,"%d %e %e %e\n",l,cl1[l][0],cl1[l][1],cl1[l][2]); + //fprintf(stderr,"%d %e %e %e\n",l,cl2[l][0],cl2[l][1],cl2[l][2]); + //fprintf(stderr,"%d %e %e\n",l,nl[l][0],nl[l][1]); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + //printf("%e %e %e %e %e %e\n",clTT_th,clTT_obs,clEE_th,clEE_obs,clTE_th,clTE_obs); + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->Tcmb); + deltaP[1]=(11.4e-6/pba->Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->Tcmb); + deltaP[2]=(26.7e-6/pba->Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channelhas_tt) { + nl[l][0] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + nl[l][1] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + nl[l][0] = 1./nl[l][0]; + } + if (psp->has_ee) { + nl[l][1] = 1./nl[l][1]; + } + + //fprintf(stderr,"%d %e %e\n",l,nl[l][0],nl[l][1]); + + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} diff --git a/class/test/test_optimize_1D.c b/class/test/test_optimize_1D.c new file mode 100755 index 00000000..7249d0c2 --- /dev/null +++ b/class/test/test_optimize_1D.c @@ -0,0 +1,595 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + struct spectra * psp, + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + + ErrorMsg errmsg; + + int i,l_max,l; + + struct file_content fc; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + l_max=2500; + + parser_init(&fc,4,errmsg); + + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + +/* strcpy(fc.name[2],"perturbations_verbose"); */ +/* sprintf(fc.value[2],"%d",2); */ + +/*******************************************************/ + + strcpy(fc.name[2],"lensing"); + strcpy(fc.value[2],"no"); + + strcpy(fc.name[3],"transfer_cut_threshold_cl"); + + parameter_initial=1.e-7; + parameter_logstep=1.3; + + param_num=30; + ref_run=0; + +/*******************************************************/ + + class_alloc(cl,param_num*sizeof(double**),errmsg); + class_alloc(parameter,param_num*sizeof(double),errmsg); + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + if (i==0) { + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + } + + + /* class(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,l_max,cl[i],errmsg); */ + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,l_max,cl[i],errmsg); + + +/* for (l=2; l <= 2500; l++) */ +/* printf("%d %e %e %e\n",l, */ + /* (l*(l+1)/2./_PI_)*cl[i][l][0], */ /* here cl is the dimensionless C_l */ + /* (l*(l+1)/2./_PI_)*cl[i][l][1], */ /* multiply by pow((th.Tcmb*1.e6),2) for muK */ +/* (l*(l+1)/2./_PI_)*cl[i][l][2]); */ + +/* printf("\n"); */ + + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + +/* for (i=0; i max_percentage) { */ +/* max_percentage = percentage; */ +/* max_l = l; */ +/* } */ +/* } */ + +/* chi2_simple(cl[i],cl[param_num-1],2500,&chi2_bis); */ + +/* fprintf(stderr,"parameter=%e chi2=%e (%e) l=%d percentage=%g\n", */ +/* parameter[i],chi2,chi2_bis,max_l,max_percentage); */ +/* } */ + + noise_planck(&ba,&th,&sp,noise,l_max); + +/* for (l=2;l<=l_max;l++) { */ +/* printf("%d %e %e %e %e %e %e\n",l, */ +/* (l*(l+1)/2./_PI_)*cl[0][l][0]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*cl[0][l][1]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*cl[0][l][2]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][0]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][1]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][2]*pow(th.Tcmb*1.e6,2)); */ +/* } */ + + for (i=0; i0.1) { + fprintf(stderr,"parameter=%e BAD: chi2=%2g \n", + parameter[i],chi2); + } + else { + fprintf(stderr,"parameter=%e OK : chi2=%e \n", + parameter[i],chi2); + } + } + + return _SUCCESS_; + +} + + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(ppr,pbs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(pbs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing * ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->Tcmb); + deltaP[1]=(11.4e-6/pba->Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->Tcmb); + deltaP[2]=(26.7e-6/pba->Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channelhas_tt) { + nl[l][psp->index_ct_tt] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + nl[l][psp->index_ct_ee] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + nl[l][psp->index_ct_tt] = 1./nl[l][psp->index_ct_tt]; + } + if (psp->has_ee) { + nl[l][psp->index_ct_ee] = 1./nl[l][psp->index_ct_ee]; + } + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} diff --git a/class/test/test_pbc.c b/class/test/test_pbc.c new file mode 100755 index 00000000..ae439e98 --- /dev/null +++ b/class/test/test_pbc.c @@ -0,0 +1,196 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensing spectra */ + struct output op; /* for output files */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,&nl,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&pt,&sp,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** done ******/ + + int index_mode=0; + int index_eta; + int index_ic=0; + int index_k; + double delta_rho_bc,rho_bc; + double delta_i,rho_i; + double P_bc; + int last_index_back; + double * pvecback_long; + double k,pk; + FILE * output; + double z,eta; + double * tki; + + if(pt.has_matter_transfers == _FALSE_) { + printf("You need to switch on mTk calculation for this code\n"); + return _FAILURE_; + } + + output=fopen("output/Pcb.dat","w"); + + class_alloc(pvecback_long,sizeof(double)*ba.bg_size,errmsg); + class_alloc(tki,sizeof(double)*sp.ln_k_size*sp.tr_size,errmsg); + + z=0.; + + if(background_eta_of_z(&ba,z,&eta) == _FAILURE_) { + printf("\n\nError running background_eta_of_z \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if(background_at_eta(&ba, + eta, + long_info, + normal, + &last_index_back, + pvecback_long) == _FAILURE_) { + printf("\n\nError running background_at_eta \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (spectra_tk_at_z(&ba,&sp,z,tki) == _FAILURE_) { + printf("\n\nError in spectra_tk_at_z \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + for (index_k=0; index_k%s\n",pm.error_message); + return _FAILURE_; + } + + P_bc=pk*pow(delta_rho_bc/rho_bc,2)*2.*_PI_*_PI_/k/k/k; + + fprintf(output,"%e %e\n",k,P_bc); + + } + + /******************/ + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_perturbations.c b/class/test/test_perturbations.c new file mode 100755 index 00000000..3ea594ea --- /dev/null +++ b/class/test/test_perturbations.c @@ -0,0 +1,101 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* this main runs only the background, thermodynamics and perturbation part */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (pt.has_perturbations == _TRUE_) { + + /*********************************************************************/ + /* here you can output the source function S(k,tau) of your choice */ + /*********************************************************************/ + + FILE * output; + int index_k,index_tau; + + /* choose a mode (scalar, tensor, ...) */ + int index_md=pt.index_md_scalars; + + /* choose a type (temperature, polarization, grav. pot., ...) */ + int index_type=pt.index_tp_t0; + + /* choose an initial condition (ad, bi, cdi, nid, niv, ...) */ + int index_ic=pt.index_ic_ad; + + output=fopen("output/source.dat","w"); + fprintf(output,"# k tau S\n"); + + for (index_k=0; index_k < pt.k_size[index_md]; index_k++) { + for (index_tau=0; index_tau < pt.tau_size; index_tau++) { + + fprintf(output,"%e %e %e\n", + pt.k[index_md][index_k], + pt.tau_sampling[index_tau], + pt.sources[index_md] + [index_ic * pt.tp_size[index_md] + index_type] + [index_tau * pt.k_size[index_md] + index_k] + ); + } + fprintf(output,"\n"); + } + + fclose(output); + + } + + /****** all calculations done, now free the structures ******/ + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_spectra.c b/class/test/test_spectra.c new file mode 100755 index 00000000..0190332d --- /dev/null +++ b/class/test/test_spectra.c @@ -0,0 +1,125 @@ +/** @file test_spectra.c + * + * Julien Lesgourgues, 26.08.2010 + * + * main intended for computing power spectra, not using the output module. + * + */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct primordial pm; /* for primordial spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct transfers tr; /* for transfer functions */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + /****** output Cls ******/ + + FILE * output; + int index_mode=0; + int index_ic1_ic2=0; + int index_ct=0; + int index_l; + + if (pt.has_cmb == _TRUE_) { + + output=fopen("output/testing_cls.dat","w"); + + for (index_l=0; index_l < sp.l_size[index_mode]; index_l++) + fprintf(output,"%g %g\n", + sp.l[index_l], + sp.cl[index_mode][(index_l * sp.ic_ic_size[index_mode] + index_ic1_ic2) * sp.ct_size + index_ct]); + + fclose(output); + + } + + /****************************/ + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_thermodynamics.c b/class/test/test_thermodynamics.c new file mode 100755 index 00000000..4b4ee25d --- /dev/null +++ b/class/test/test_thermodynamics.c @@ -0,0 +1,134 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* th main runs only the background and thermodynamics parts */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed sepctra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error message */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + /********************************************/ + /***** output thermodynamics quantities *****/ + /********************************************/ + + int i; + double tau; + double z; + int last_index; + double pvecback[30]; + double pvecthermo[30]; + + printf("#1: redshift z\n"); + printf("#2: conformal time tau\n"); + printf("#3: electron ionization fraction x_e\n"); + printf("#4: Thomson scattering rate kappa'\n"); + printf("#5: Thomson scattering rate derivative kappa''\n"); + printf("#6: Thomson scattering rate derivative kappa'''\n"); + printf("#7: exponential of optical depth e^-kappa\n"); + printf("#8: visibility function g = kappa' e^-kappa \n"); + printf("#9: derivative of visibility function g' \n"); + printf("#10: second derivative of visibility function g'' \n"); + printf("#11: squared baryon temperature\n"); + printf("#12: squared baryon sound speed c_b^2 \n"); + printf("#13: baryon drag optical depth tau_d \n"); + printf("#14: variation rate \n"); + + /* first, quantities stored in table */ + + for (i=0; i < th.tt_size; i++) { + + background_tau_of_z(&ba,th.z_table[i],&tau); + + printf("%.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e\n", + th.z_table[i], + tau, + th.thermodynamics_table[i*th.th_size+th.index_th_xe], + th.thermodynamics_table[i*th.th_size+th.index_th_dkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_ddkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_dddkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_exp_m_kappa], + th.thermodynamics_table[i*th.th_size+th.index_th_g], + th.thermodynamics_table[i*th.th_size+th.index_th_dg], + th.thermodynamics_table[i*th.th_size+th.index_th_ddg], + th.thermodynamics_table[i*th.th_size+th.index_th_Tb], + th.thermodynamics_table[i*th.th_size+th.index_th_cb2], + th.thermodynamics_table[i*th.th_size+th.index_th_tau_d], + th.thermodynamics_table[i*th.th_size+th.index_th_rate] + ); + + } + + /* the function thermodynamics_at_z knows how to extrapolate at + redshifts above the maximum redshift in the table. Here we add to + the previous output a few more points at higher redshift. */ + + for (z = th.z_table[th.tt_size-1]; z < 1000*th.z_table[th.tt_size-1]; z *= 2.) { + + background_tau_of_z(&ba,z,&tau); + + background_at_tau(&ba,tau,ba.normal_info,ba.inter_normal,&last_index,pvecback); + + thermodynamics_at_z(&ba,&th,z,th.inter_normal,&last_index,pvecback,pvecthermo); + + printf("%.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e\n", + z, + tau, + pvecthermo[th.index_th_xe], + pvecthermo[th.index_th_dkappa], + pvecthermo[th.index_th_ddkappa], + pvecthermo[th.index_th_dddkappa], + pvecthermo[th.index_th_exp_m_kappa], + pvecthermo[th.index_th_g], + pvecthermo[th.index_th_dg], + pvecthermo[th.index_th_ddg], + pvecthermo[th.index_th_Tb], + pvecthermo[th.index_th_cb2], + pvecthermo[th.index_th_tau_d], + pvecthermo[th.index_th_rate] + ); + + } + + /****** all calculations done, now free the structures ******/ + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_timing.c b/class/test/test_timing.c new file mode 100755 index 00000000..4e8d6739 --- /dev/null +++ b/class/test/test_timing.c @@ -0,0 +1,155 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" +#include + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; + + double start_perturb, end_perturb; + double cpu_time_perturb; + double start_other, end_other; + double cpu_time_other; + double start_lensing, end_lensing; + double cpu_time_lensing; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + start_other = omp_get_wtime(); + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + start_perturb = omp_get_wtime(); + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + end_perturb = omp_get_wtime(); + + cpu_time_perturb = (end_perturb-start_perturb); + + printf("time in perturb=%4.3f s\n",cpu_time_perturb); + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + end_other = omp_get_wtime(); + start_lensing = end_other; + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + end_lensing = omp_get_wtime(); + + cpu_time_other = (end_other-start_other); + cpu_time_lensing = (end_lensing-start_lensing); + printf("time in other = %4.3f s\n",cpu_time_other); + printf("time in lensing = %4.3f s\n",cpu_time_lensing); + + + if (output_init(&ba,&pt,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** done ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_transfer.c b/class/test/test_transfer.c new file mode 100755 index 00000000..d3804aa7 --- /dev/null +++ b/class/test/test_transfer.c @@ -0,0 +1,170 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* this main only runs the modules up to the transfer one */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + /****** output the transfer functions ******/ + + printf("Output of transfer functions (l, q, k, nu, Delta)\n"); + printf("(in flat space, q=k and nu=inf) \n"); + + /* 1) select the mode, initial condition, type and multipole of the + function you want to plot: */ + + int index_mode=pt.index_md_scalars; + int index_ic =pt.index_ic_ad; + int index_type=tr.index_tt_t0; + + /* 2) here is an illustration of how to output the transfer + functions at some (k,l)'s of your choice */ + + /* + int index_l = 0; + double q=3.6e-4; + double transfer; + + if (transfer_functions_at_q(&tr, + index_mode, + index_ic, + index_type, + index_l, + q, + &transfer + ) == _FAILURE_) { + printf("\n\nError in transfer_function_at_k \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + printf("%d %e %e\n",tr.l[index_l],q,transfer); + */ + + /* 3) here you can output the full tabulated arrays for all k and l's*/ + + int index_q; + int index_l; + double transfer; + FILE * output; + + output=fopen("output/test.trsf","w"); + + for (index_l=0; index_l%s\n",tr.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_trg.c b/class/test/test_trg.c new file mode 100755 index 00000000..b55495ac --- /dev/null +++ b/class/test/test_trg.c @@ -0,0 +1,122 @@ +/** @file test_trg.c + * + */ + +#include "precision.h" +#include "background.h" +#include "thermodynamics.h" +#include "perturbations.h" +#include "bessel.h" +#include "transfer.h" +#include "primordial.h" +#include "spectra.h" +#include "output.h" +#include "trg.h" + +main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct output op; + struct lensing le; + struct spectra sp; /* for output spectra */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,&nl,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (trg_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in trg_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /****** done ******/ + + + if (trg_free(&nl) == _FAILURE_) { + printf("\n\nError in trg_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/tools/arrays.c b/class/tools/arrays.c old mode 100644 new mode 100755 index c27cdc1e..9acd80bf --- a/class/tools/arrays.c +++ b/class/tools/arrays.c @@ -589,6 +589,7 @@ int array_spline_table_lines( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. index_x=0; @@ -749,6 +750,7 @@ int array_logspline_table_lines( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. index_x=0; @@ -910,6 +912,8 @@ int array_spline_table_columns( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + index_x=0; if (spline_mode == _SPLINE_NATURAL_) { @@ -1079,6 +1083,8 @@ int array_spline_table_columns2( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ 3 x-values are needed. + #pragma omp parallel \ shared(x,x_size,y_array,y_size,ddy_array,spline_mode,p,qn,un,u) \ private(index_y,index_x,sig,dy_first,dy_last) @@ -1201,6 +1207,8 @@ int array_spline_table_one_column( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + /************************************************/ index_x=0; @@ -1334,6 +1342,8 @@ int array_logspline_table_one_column( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + /************************************************/ index_x=0; @@ -1750,6 +1760,72 @@ int array_interpolate_spline( return _SUCCESS_; } + /** + * Get the y[i] for which y[i]>c + * + * Called by nonlinear_HMcode() + */ +int array_search_bisect( + int n_lines, + double * __restrict__ array, + double c, + int * __restrict__ last_index, + ErrorMsg errmsg) { + + int inf,sup,mid; + + inf=0; + sup=n_lines-1; + + if (array[inf] < array[sup]){ + + if (c < array[inf]) { + sprintf(errmsg,"%s(L:%d) : c=%e < y_min=%e",__func__,__LINE__,c,array[inf]); + return _FAILURE_; + } + + if (c > array[sup]) { + sprintf(errmsg,"%s(L:%d) : c=%e > y_max=%e",__func__,__LINE__,c,array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (c < array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (c < array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,c,array[sup]); + return _FAILURE_; + } + + if (c > array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,c,array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (c > array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + return _SUCCESS_; +} + /** * interpolate to get y_i(x), when x and y_i are in different arrays * @@ -2642,17 +2718,18 @@ int array_interpolate_two_arrays_one_column( int inf,sup,mid; double weight; + double epsilon=1e-9; inf=0; sup=n_lines-1; if (array_x[inf] < array_x[sup]){ - class_test(x < array_x[inf], + class_test(x < array_x[inf]-epsilon, errmsg, "x=%e < x_min=%e",x,array_x[inf]); - class_test(x > array_x[sup], + class_test(x > array_x[sup]+epsilon, errmsg, "x=%e > x_max=%e",x,array_x[sup]); @@ -2668,11 +2745,11 @@ int array_interpolate_two_arrays_one_column( else { - class_test(x < array_x[sup], + class_test(x < array_x[sup]-epsilon, errmsg, "x=%e < x_min=%e",x,array_x[sup]); - class_test(x > array_x[inf], + class_test(x > array_x[inf]+epsilon, errmsg, "x=%e > x_max=%e",x,array_x[inf]); diff --git a/class/tools/dei_rkck.c b/class/tools/dei_rkck.c old mode 100644 new mode 100755 diff --git a/class/tools/evolver_ndf15.c b/class/tools/evolver_ndf15.c old mode 100644 new mode 100755 index f5937636..790ced55 --- a/class/tools/evolver_ndf15.c +++ b/class/tools/evolver_ndf15.c @@ -301,6 +301,9 @@ int evolver_ndf15( done = _FALSE_; at_hmin = _FALSE_; while (done==_FALSE_){ + /**class_test(stepstat[2] > 1e5, error_message, + "Too many steps in evolver! Current stepsize:%g, in interval: [%g:%g]\n", + absh,t0,tfinal);*/ hmin = minimum_variation; maxtmp = MAX(hmin,absh); absh = MIN(hmax, maxtmp); @@ -659,6 +662,13 @@ int evolver_ndf15( error_message, error_message); + if (print_variables!=NULL){ + /** If we are printing variables, we must store the final point */ + class_call((*print_variables)(tnew,ynew+1,f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + } + if (verbose > 0){ printf("\n End of evolver. Next=%d, t=%e and tnew=%e.",next,t,tnew); printf("\n Statistics: [%d %d %d %d %d %d] \n",stepstat[0],stepstat[1], diff --git a/class/tools/evolver_rkck.c b/class/tools/evolver_rkck.c old mode 100644 new mode 100755 diff --git a/class/tools/growTable.c b/class/tools/growTable.c old mode 100644 new mode 100755 diff --git a/class/tools/hyperspherical.c b/class/tools/hyperspherical.c old mode 100644 new mode 100755 diff --git a/class/tools/parser.c b/class/tools/parser.c index e830fc5f..f7912e18 100644 --- a/class/tools/parser.c +++ b/class/tools/parser.c @@ -93,7 +93,9 @@ int parser_read_line( char * left; char * right; - /* check that there is an '=' */ + /* check that there is an '=' (if you want the role of '=' to be + played by ':' you only need to substitute it in the next line and + recompile) */ pequal=strchr(line,'='); if (pequal == NULL) {*is_data = _FALSE_; return _SUCCESS_;} @@ -109,13 +111,24 @@ int parser_read_line( while (left[0]==' ') { left++; } + /* Ignore any of " ' */ + if(left[0]=='\'' || left[0]=='\"'){ + left++; + } right=pequal-1; while (right[0]==' ') { right--; } + if(right[0]=='\'' || right[0]=='\"'){ + right--; + } - if (right-left < 0) {*is_data = _FALSE_; return _SUCCESS_;} + /* deal with missing variable names */ + + class_test(right-left < 0, + errmsg, + "Syntax error in the input line '%s': no name passed on the left of the '=' sign",line); class_test(right-left+1 >= _ARGUMENT_LENGTH_MAX_, errmsg, @@ -184,7 +197,7 @@ int parser_read_int( class_test(sscanf(pfc->value[index],"%d",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -198,7 +211,7 @@ int parser_read_int( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -236,7 +249,7 @@ int parser_read_double( class_test(sscanf(pfc->value[index],"%lg",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -250,7 +263,7 @@ int parser_read_double( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -289,7 +302,7 @@ int parser_read_double_and_position( class_test(sscanf(pfc->value[index],"%lg",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -303,7 +316,7 @@ int parser_read_double_and_position( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -355,7 +368,7 @@ int parser_read_string( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -426,7 +439,7 @@ int parser_read_list_of_doubles( } class_test(sscanf(string_with_one_value,"%lg",&(list[i-1])) != 1, errmsg, - "could not read %dth value of list of parameters %s in file %s\n", + "could not read %dth value of list of parameters '%s' in file '%s'\n", i, name, pfc->filename); @@ -445,7 +458,7 @@ int parser_read_list_of_doubles( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -516,7 +529,7 @@ int parser_read_list_of_integers( } class_test(sscanf(string_with_one_value,"%d",&(list[i-1])) != 1, errmsg, - "could not read %dth value of list of parameters %s in file %s\n", + "could not read %dth value of list of parameters '%s' in file '%s'\n", i, name, pfc->filename); @@ -535,7 +548,7 @@ int parser_read_list_of_integers( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -619,7 +632,7 @@ int parser_read_list_of_strings( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ return _SUCCESS_; diff --git a/class/tools/quadrature.c b/class/tools/quadrature.c index 4c728889..053cd040 100644 --- a/class/tools/quadrature.c +++ b/class/tools/quadrature.c @@ -5,6 +5,60 @@ /******************************************/ #include "quadrature.h" +int get_qsampling_manual(double *x, + double *w, + int N, + double qmax, + enum ncdm_quadrature_method method, + double *qvec, + int qsiz, + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg) { + + double y, h, t; + double *b, *c; + int i; + switch (method){ + case (qm_auto) : + return _FAILURE_; + case (qm_Laguerre) : + /* Allocate storage for Laguerre coefficients: */ + class_alloc(b,N*sizeof(double),errmsg); + class_alloc(c,N*sizeof(double),errmsg); + compute_Laguerre(x,w,N,0.0,b,c,_TRUE_); + for (i=0; i Date: Wed, 24 Jun 2020 23:00:45 -0700 Subject: [PATCH 05/24] fix halo mass function --- theory/.cosmo3D.c.swp | Bin 0 -> 16384 bytes theory/.halo.c.swm | Bin 36864 -> 40960 bytes theory/halo.c | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 theory/.cosmo3D.c.swp diff --git a/theory/.cosmo3D.c.swp b/theory/.cosmo3D.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..6328d57a3b79a0ab7c4f85f9ac54e424be441415 GIT binary patch literal 16384 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

XX1yleY^fN0W9c-gA_bk>vN1hGV{i`bH!gEKw7O zPCxKbH^7P2V3bHvX%#Oj?6rXim+_Cn)?^asK)~Sbf{u(t$?qA;&(b8!6iD4`TwXQM zxz*q%w=Cf%M3T#>k?kc#l={`zvzrXWxCn8c)N3KFr{#5=rM+veCI>6QD37jRQn?H4<9>- z>SU3r27)+kZXtJ<`V%5>lTF^yZR@ga*xm%~Y)&IJlAm-=$y4aYg&fT$i$LSm8d;cQ zmWkOUWCW&w3voZnM$Tn?7mAtIOa97g>c+rxZl literal 0 HcmV?d00001 diff --git a/theory/.halo.c.swm b/theory/.halo.c.swm index 8bd47cf5fa1ce855ffa0667edb8cdfcaf9fdccc8..b3b14ae8d1b63d42443c3be1e4ce3bba7e4f39a0 100644 GIT binary patch delta 1559 zcmXxkdrVVT9Ki9@hX}>msxyT!#wpB-Sb4=M|A@=R79N2>HAV$R5#|uYjI2iiM1j$ojCO|6wrig_UHS3GsL5zA8EtHJf-$xjZIMY2IX`mrNvnMiZwkgS zPhk9|91mwRy3g!)h~f~=VFdfojV`pH8D%IzF>;ZOQL7MFa2Zjwp%f*s!i;gEIgihf zhE&Y3h#X;|Gf5dHa1{rz6D_F1a=7t;^iG?!gYI-aT2X7#-5J}=F0o5U+1lU_w6@61 z`i5rz=30{5rL}qf)PtU`@egj|I{v^A zPNEv?uohmJaKp|z^q>pd;IoVO#Y{T=vxN8o`_PSc1h5_+Sn-@7?_wB7& zLBBgK5LQ8Af*ayPA#yP~lWL#`jo6BEl%W)vc)>lm zhf(w+f^tl8zW>Dw1d)R!VSa3Q%E2DPZQR1I7{XzEjT)@PG9+V~v;Gjru^$nv!zz4$ zB&hrFE!!HwrwAY&5^B5WA;Y02n)1A|en+6Lxj{DNd!I5}ub1DbIzfsk57{M^kpa@yW z!~oU(0ueN$70PYAT5IhoE%4~6)eo$0b)g2KO2%vce_k=3GUm&4cdo~wJ*sNdoZdohk#F{Y Dd&~6{ delta 1346 zcmZA0eN0Vp9LMor$JK*M_cp0z>GmYER7~@SS*54tx|J*CVU;4ISwdTSShuwKL)L?z z8I!AIBupGj7-K84($hwUG1fe_5wo>5!~5j+kF&k*?|1Gwzw|IA39KhEl9<3_&`A~<6EYmqdFKC&y{Igx2Tn-Fb6~K z4k5gG_PF*|Oi(BdRhO-=<_Pf;FEEPd*o*1gD%qA2n#~dOEQnpgKlIZ31L`(X40|Y z44O~`Gor8%&X^#akLbq@)GKUAEuEE!!U|~n^F=o9^OdHvyVdAJUCweS#Gv}se$=VD zZA+EL4llVZ&s)vPyXa?4VWo)-(l&Iav`0vxA6-yUgB(ne$}2p>Fv?MigV>BU(4oVf z1aTY<*nss&LkNOkzz;XJZ^DiJ#8(Vs5Vz5Z)5u2#%!tH%c;SyLTL~LVkc>D)U>*$k zN&fFK02^|U0IfDwVcdo9|1;r#LJP`}1OrMbfP7?PlF+-*i3Zf67+OK>Ln;E`f=RL; zMmvfz^Q8ySw^0WfNXIhxTKQ2R@P{H8!+Z4OI%=>JS%|?R=rKw$+(kR8P=-B-#u9WB hX* Date: Wed, 24 Jun 2020 23:01:14 -0700 Subject: [PATCH 06/24] fix halo mass function --- theory/.cosmo3D.c.swo | Bin 16384 -> 0 bytes theory/.cosmo3D.c.swp | Bin 16384 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 theory/.cosmo3D.c.swo delete mode 100644 theory/.cosmo3D.c.swp diff --git a/theory/.cosmo3D.c.swo b/theory/.cosmo3D.c.swo deleted file mode 100644 index c0c455717396ebfdde3a73598f4b2debd7c7797a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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

" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 444 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b005ba9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pNL0/pCAMB_NL - 1, label=\"NL DM\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fd9e8f36", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAInCAYAAAB5idPCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAABBv0lEQVR4nO3dd7hcVb3/8fc3hZCEUEIV6T1WpEiJSrsiKCIqXMsVLyBN8AKKVxQVghWvBWxosAAiRbGhVwV+igEBawCFSy+hCKgQwBQSSr6/P/Y+MGdyyuxTpp3363nmmZm91177O9nnED5Za9aOzESSJEmS1JhxrS5AkiRJkjqJIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSapgQqsLkOpFxN3AysC8FpciSZKk7rUR8K/M3LjqgYYotaOVJ0+ePH3GjBnTW12IJEmSutPNN9/ME088MaRjDVFqR/NmzJgxfe7cua2uQ5IkSV1q22235dprr503lGP9TpQkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRV4nyhJkiR1hWXLljF//nwWLFjA0qVLycxWl6QmiQgmTZrEtGnTmD59OuPGje5YkSFKkiRJHW/ZsmXcd999LF68uNWlqAUykyVLlrBkyRIWLVrE+uuvP6pByhAlSZKkjjd//nwWL17MhAkTWGeddZg6deqoj0aofSxbtoxFixbx0EMPsXjxYubPn88aa6wxaufzJ0uSJEkdb8GCBQCss846TJs2zQA1xowbN45p06axzjrrAM/9PIza+Ua1d0mSJKkJli5dCsDUqVNbXIlaqef69/w8jBZDlCRJkjpezyISjkCNbREBMOqLivhTJkmSJKkr9ISo0WaIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJXSQiiAg23HBDlixZ0mebjTbaiIjg6aef7vPY4Zg1axYRwaxZs/ptc/bZZxMRHHTQQcM6V6sYoiRJkqQudO+993L66ae3uoyuZIiSJEmSusxqq63G9OnTOfXUU3n44YdbXU7XMURJkiRJXWbKlCl89KMf5fHHH+eUU05pdTkN+dCHPkREcM455/S5f+7cuUQE++yzT5MrW54hSpIkSepCRx99NJtuuimzZ8/m9ttvb3U5gzriiCMYN24cZ555Zp/7Z8+eDcCRRx7ZzLL6NKHVBUiSJEkaeRMnTuTUU0/lgAMO4IQTTuBHP/pRU88/Z86cfheXuP7665fbttFGG7H33nvz85//nBtvvJEXvehFz+5bsGABF1xwAeuvvz577733KFXcOEOUJEmSut5GH/x5q0to2LxTXzdife2///7stNNO/PjHP+aqq67iFa94xYj1PZgrrriCK664otIx7373u/n5z3/O7Nmz+fKXv/zs9vPPP5+FCxfy3//934wfP36kS63M6XySJElSF/v85z8PwPvf//6mnvfkk08mM/t8nHXWWX0es/fee7Pxxhtz7rnnsnjx4me3n3nmmUyYMIFDDz20WeUPyBAlSZIkdbGddtqJ/fffnz/84Q9873vfa3U5Axo3bhxHHHEEjz/++LO1zp07l2uvvZZ99tmHddddt8UVFpzOJ0mSpK43klPkOtGnP/1pLr74Yj70oQ/xxje+sdXlDOiQQw7h5JNPZvbs2Rx88MHPLihxxBFHtLiy5zgSJUmSJHW5zTbbjKOOOoq7776713eN2tGaa6757MjZ1VdfzQUXXMDGG2/Mnnvu2erSnmWIkiRJksaAk046iVVXXZVPfvKTLFy4sNXlDOjd7343AG95y1tYuHAhhx12GOPGtU90cTqfJEmSNAZMnz6dE088kQ984AODtj3ooIP63XfGGWcwZcqUEaxseTNnzuSlL30pf/nLX5g4cSKHHHLIqJ6vKkOUJEmSNEYcc8wxnHHGGcybN2/Aduecc06/+04//fRRD1EABx98MMcddxxveMMbWHvttUf9fFUYoiRJkqQukpn97ps0aRJ33333kI5t1KxZs/q9yW6Pgw46aMDRLoDrrrsOgCOPPHLYNY209plYKEmSJEnAfffdx4UXXsiMGTPYfffdW13OchyJkiRJktQWzj//fG677TYuvPBCli5dysc//nEiotVlLccQJUmSJKktnHnmmVx55ZWsv/76nHbaabz5zW9udUl9MkRJkiRJagtz5sxpdQkN8TtRkiRJklSBIUqSJEmSKjBESZIkSeoKI7FEeyMMUZIkSep4PSu4LVu2rMWVqJV6QtRor+hniJIkSVLHmzRpEgCLFi1qcSVqpZ7r3/PzMFoMUZIkSep406ZNA+Chhx5iwYIFLFu2rGlTu9RamcmyZctYsGABDz30EPDcz8NocYlzSZIkdbzp06ezaNEiFi9ezP3339/qctRCU6ZMYfr06aN6DkOUJEmSOt64ceNYf/31mT9/PgsWLGDp0qWORI0hEcGkSZOYNm0a06dPZ9y40Z1wZ4iSJElSVxg3bhxrrLEGa6yxRqtLUZfzO1GSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkNUh4qI9SLi2xHxQEQsjYh5EXF6RKxWsZ/p5XHzyn4eKPtdr8Hj3xERWT4OHdqnkSRJkjqH94nqQBGxKXANsBZwMXAL8HLgWGCviJiZmY800M/qZT9bAJcDFwJbAQcDr4uInTLzrgGOXx/4CrAQWGlYH0qSJEnqEI5EdaYzKALUMZm5X2Z+MDN3B04DtgQ+2WA/n6IIUF/IzD3KfvajCGNrlefpU0QEcBbwCPD1IX8SSZIkqcMYojpMOQq1JzAP+Grd7pOBRcCBETF1kH5WAg4s28+q2/0V4B7gNRGxST9dHAPsTjFqtajxTyBJkiR1NkNU59mtfL4sM5fV7sjMBcDVwBRgx0H62RGYDFxdHlfbzzLg0rrzPSsiZgCnAl/MzCsrfwJJkiSpg/mdqM6zZfl8Wz/7b6cYqdoC+PUw+6Hs51kRMQE4F7gXOHGwYgcSEXP72bXVcPqVJEmSRpMhqvOsUj4/3s/+nu2rjlI/JwEvA16RmU8Mcg5JkiSp6xii1LCI2IFi9Onzmfm74faXmdv2c565wDbD7V+SJEkaDX4nqvP0jBCt0s/+nu2PjWQ/5TS+71BM//voYEVKkiRJ3coQ1XluLZ+36Gf/5uVzf991Gmo/K5VtZwBLam6wmxSrAgJ8o9x2+iDnliRJkjqW0/k6z2/K5z0jYlztCn0RMQ2YCSwGfj9IP78HngBmRsS02hX6ImIcxeIUtedbCnyrn762ofie1FUU4WzYU/0kSZKkdmWI6jCZeWdEXEYRco4Gvlyz+xRgKjA7M5+9d1NEbFUee0tNPwsj4lzgcIr7RB1f0897gI2ASzPzrrL9E8ChfdUUEbMoQtQ5mfnN4X1CSZIkqb0ZojrTUcA1wJciYg/gZmAHins63QZ8uK79zeVz1G0/EdgVeF9EbA38kWK63huAf1CENEmSJEk1/E5UB8rMO4HtgLMpwtPxwKbAF4EdM/ORBvt5BNgJ+BKwWdnPDsBZwLbleSRJkiTVcCSqQ2XmfcDBDbatH4Gq3TcfOLZ8DLWWWRRTAiVJkqSu50iUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ1SHioj1IuLbEfFARCyNiHkRcXpErFaxn+nlcfPKfh4o+12vj7arR8ShEfHjiLgjIp6IiMcj4qqIeFdE+PMkSZKkrjeh1QWouojYFLgGWAu4GLgFeDlwLLBXRMzMzEca6Gf1sp8tgMuBC4GtgIOB10XETpl5V80hBwBfAx4EfgPcC6wNvAn4JrB3RByQmTkiH1SSJElqQ4aoznQGRYA6JjO/3LMxIr4AvBf4JHBkA/18iiJAfSEzj6/p5xjgi+V59qppfxuwL/DzzFxW0/5E4I/AmykC1Q+H9rEkSZKk9uf0qw5TjkLtCcwDvlq3+2RgEXBgREwdpJ+VgAPL9rPqdn8FuAd4TURs0rMxMy/PzJ/VBqhy+0PA18u3u1b4OJIkSVLHMUR1nt3K58v6CDMLgKuBKcCOg/SzIzAZuLo8rrafZcCldecbzFPl89MNtpckSZI6ktP5Os+W5fNt/ey/nWKkagvg18Psh7KfAUXEBOCd5dtLBmtfc9zcfnZt1WgfkiRJUrM5EtV5VimfH+9nf8/2VZvUD8CpwIuAX2TmpYM1liRJkjqZI1EalnIRiuMpVgg8sMqxmbltP33OBbYZfnWSJEnSyHMkqvP0jBCt0s/+nu2PjXY/EfEeilX8bgJ2y8z5g5xTkiRJ6nhdOxIVEWsDF5RvMzP3aGU9I+jW8rm/7yptXj73912nEeknIo4DTgNuBPbIzH8Mcj5JkiSpK3RtiAJW5Lnltrvp5q+/KZ/3jIhxdfdrmgbMBBYDvx+kn98DTwAzI2Ja7Qp9ETGOYnGK2vNRs/8Eiu9BXQ+8OjMfHuJnkSRJkjqO0/k6TGbeCVwGbAQcXbf7FGAqcG5mLurZGBFbRUSvFe8ycyFwbtl+Vl0/7yn7vzQz76rdEREfpQhQcylGoAxQkiRJGlO6eSSqmx0FXAN8KSL2AG4GdqC4p9NtwIfr2t9cPkfd9hMpRuveFxFbA38EZgBvAP5BXUiLiP8EPgY8A/wWOCaivkvmZebZQ/tYkiRJUvszRHWgzLwzIrajCDR7Aa8FHqRY5OGUzHy0wX4eiYidgJOB/YBXAo8AZwEnZeb9dYdsXD6PB47rp9srgLMb/SySJElSpzFEdajMvA84uMG2yw0X1eybDxxbPgbrZxbLT/2TJEmSxpSmh6iIeGeTTrVGk84jSZIkaQxpxUjU2TRvtbxk+e8BSZIkSdKQtXI6XzPCTTctbS5JkiSpDbRyiXMDjiRJkqSO04qRqCeBieXr+4FvjdJ5VqWBxRIkSZIkqYpWhKi/AtuVr1fKzFNG4yQRsSGGKEmSJEkjrBXT+f5U83qViNi8BTVIkiRJ0pC0OkQBbN+CGiRJkiRpSFoRov5YPvcsLGGIkiRJktQxWhGibgYW1rwf7RDlKoCSJEmSRkzTQ1RmJjCX4j5RAWwdEaNZhzfblSRJkjRiWnWz3a8A19e8Xw14ZCRPkJn30Nr7YEmSJEnqQi0JUZn5Q+CHrTi3JEmSJA2HIzWSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqYIJrS6gioiYBuxUs+mKzFzaqnokSZIkjT0dFaKALYBLgCzfbwzc27pyJEmSJI01nTqdL1pdgCRJkqSxqVNDlCRJkiS1hCFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqYIJrS6gogXA1TXvl7SqEEmSJEljU0eFqMy8DXhlq+uQJEmSNHY5nU+SJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYaoDhUR60XEtyPigYhYGhHzIuL0iFitYj/Ty+Pmlf08UPa73mifW5IkSepEE1pdgKqLiE2Ba4C1gIuBW4CXA8cCe0XEzMx8pIF+Vi/72QK4HLgQ2Ao4GHhdROyUmXeNxrklSZKkTuVIVGc6gyLEHJOZ+2XmBzNzd+A0YEvgkw328ymKAPWFzNyj7Gc/ikC0Vnme0Tq3JEmS1JEMUR2mHAnaE5gHfLVu98nAIuDAiJg6SD8rAQeW7WfV7f4KcA/wmojYZKTPLUmSJHWyjp/OFxHLgGWZ2fGfpUG7lc+XZeay2h2ZuSAirqYIOjsCvx6gnx2ByWU/C+r6WRYRlwKHl+frmdI3UuduO3//1xLueWRxq8uQJEkaszZfayVWm7pCq8toSLcEj2h1AU20Zfl8Wz/7b6cIMlswcJBppB/Kfkb63ABExNx+dm314IMPElFc1pNPPplZs2b1anD88cfzhS98AYDPfe5zHH/88b32H3744XzjG98AYPbs2Rx++OG99r/97W/nggsuAOC8887jqY125uSf/t+z+//xg1N44s4/AbDmmz/KlM126HX8Q+d/kKX33QjA2m/7FCtu8JJe+x88+1ie/PudAKzzn6czaZ3Neu3/25mH8/SjDwCw7mGzmTj9+b323//Vd/LMwvkAPP+oc5gwbfVe++897QDyyScAWP+47zNu0pRe++/5zD7Pvt7whP/ttW/Z0sXcd/q/AxArTGaD917Ua//TCx7hb2f8JwDjV5rOekd/p9f+p+b/jQe+cQQAE1Zbl+cffmav/UsfuoOHzjkOgBXW3pTnHfTFXvuX3PtX/n7BiQBMWv9FrPP2U3vtX3zHH/jnDz8OwORNt2et/U/utX/RTXN4+GefA2DKjF1Yc9//7rV/wfWXMP/SrwCw0ktfw+p7/Vev/f/644949DffBmDa9vsxffdDe+1/7KrzePzq4mdjlZlvY9VX/Eev/fMv/yYL/vQTAFbb7RBWfvmbeu1/5JIvs/AvlwIw/TXvYdrWe/Xa/8+ffpbFN18BwBqvfz9TX7Brr/3+7PmzB/7s+bPnz14tf/bGzs/eRWeexqtfsPaz+0f6//fe/va399p/5513MlRO5+s8q5TPj/ezv2f7qqPQz0idW5IkSepYbTMSFRETgBeXb2/MzKdaWY9GX2Zu29f2coRqm2bWsta0SWy/0XMrtF89ZQWeKF9vvtZKrLtR79Xb56w4kaXl6y3XmcZadft/tcIEnixfv/B501htw977H5k4noXl6xc/f2Wmrd17/9/HB8+Ur7defxUmr9p7/98Cni5fb7PhqkxcsffX0O6peb19XW1PLVmB+8rX42P5/U889jR/K19PHB/L7V8weQEPlK9XnDh+uf2PxjQeKl9PWWHCcvv/8eQ0/l6+nrbixOX2P/Cvlfhn+XrVKSsst//ef0zl4fL16lOX33/XfVOYX75ec9oktq3bf9sdU3i0fL3Oyivy0rr9/3fj5Gf/NWDdVSfzwrr9f1l5RXrmv64/fQpb1O2fO23Ss9d2o9WnsEnd/j9MXYGeiaObrDGVDer2+7NX8GfPnz1/9p7jz54/ezA2fvZWnTKRThGZ2ZwTRWxM8Z2aqzLztrp9+wLfANYoNz0KHJWZ32+g32VAZub4ES65LUXEZ4H3A+/PzM/3sf8rwNEUf35fG6CfoykWkPhKZv5XH/vfD3wW+J/MPGEkzz2YiJi7zTbbbDN3bn+z/SRJkqTh2Xbbbbn22muv7e8f9gfSzOl8hwFnAktqN0bElsD3gDWBeynuO7QacF5EvKyJ9XWKW8vnLfrZv3n53N/3lobTz0idW5IkSepYzQxRrwCuy8x767YfB0wCvpqZG2fmC4EDgPHAe5pYX6f4Tfm8Z0T0un4RMQ2YCSwGfj9IP78HngBmlsfV9jOOYoGI2vON5LklSZKkjtXMELUx8Mc+tu8FPAmc2LMhM38EXAW8sjmlQURMjYj/jIjjI2KXmu3bR8SlETE/Ih6LiIsjYkaz6qqXmXcClwEbUUydq3UKMBU4NzMX9WyMiK0iYqu6fhYC55btZ9X1856y/0sz866aYyqfW5IkSeo2zVxYYk149rtnAETE6sCGwG/r71UEXAccShNExHTgGp6bjkZEfBq4iGL0pXYty9cDO0fEyzLz/mbU14ejKOr9UkTsAdwM7EDxnbPbgA/Xtb+5fK5fCv5EYFfgfRGxNUXInQG8AfgHyweloZxbkiRJ6irNHIl6ClirblvPjQD+3Ef7hX1sGy0nUHzP51rgNIoAdzzwCYow8WpgZYrA9yVg9fKYlihHhLYDzqb4Mzwe2BT4IrBjZj7SYD+PADtRfKbNyn52AM4Cti3PMyrnliRJkjpVM0eibgP2iohxmbms3LYPkBQjG/XWBR5sUm2vB+4CdsrMp8vl1m8CXgvsm5k9N45dCBwXEa8AXtOk2vqUmfcBBzfYtt+bEWfmfODY8jHi55YkSZK6TTNHon4IrA9cHBH7RsT7gEMogsklfbSfCdzRpNo2Ai7JzKcByufLyn19BbyrgfWaU5okSZKkdtLMkajTgbcAr6MY4YHiOzofrl+IICK2o5heNrtJta0Iz95rrMfDAJn56PLNmU+xoqAkSZKkMaZpISozF0fETOC9wI4UQeSizPxpH823AS4G+to3aiUO8l6SJEmSmjoS1bOs9scbaHcmxY15JUmSJKmtNDVEtbl3lgtG9NgEICIu66PtJs0pSZIkSVK7aZsQVa6I9+Ly7Y2Z+VSTS9iEvsPRv/XT3ul+kiRJ0hjUtBAVERtT3JD1qsy8rW7fvsA3gDXKTY9GxFGZ+f0mlbdxk84jSZIkqcM1cyTqMOAD1I32RMSWwPcoVru7B1gMbAWcFxG3Z+Z1o11YZt4z2ueQJEmS1B2aeZ+oVwDXZea9dduPowhQX83MjTPzhcABwHjgPU2sT5IkSZIG1cwQtTHwxz627wU8CZzYsyEzfwRcBbyyOaVJkiRJUmOaOZ1vTYp7Qz0rIlYHNgR+m5kL6tpfBxzajMIi4skhHJaZ6Q13JUmSpDGmmSHqKWCtum07lM9/7qP9wtEtp5cJFPU90MRzSpIkSepAzQxRtwF7RcS4zFxWbtuHYqnwa/povy7wYJNqexqYCDwKfAs4LzMfa9K5JUmSJHWQZn4n6ofA+sDFEbFvRLwPOIRixOmSPtrPBO5oUm3rAScAk4EvAw9ExHcjYrcmnV+SJElSh2hmiDoduAF4HfBj4LPACsDHMnNRbcOI2A7YDPh/zSgsM/+RmZ/NzBnAq4DvA/sBv4qIOyPiwxGxXjNqkSRJktTemhaiMnMxxejSyRQjT+cD+2Xm5/tovg1wMfDTZtXXIzOvysyDgOcBRwGPAB8H7o6In0fEps2uSZIkSVL7aOZ3osjMhRSBZLB2ZwJnRsSao19VvzUsAGYDsyPiFcAFFMuxvxC4s1V1SZIkSWqtZk7na1hE7BURPwDqb8zb7DpeFRHnUIycPZ8iPM1rZU2SJEmSWqupI1EDiYgNgHcBB1Es9BDAwy2o43llDQcDmwJLKBbF+FZmXtHseiRJkiS1l5aGqIiYCLyRIjztQRGclgG/BL5Nk74TFRHjgX3LOvak+HOZCxwNnJ+Z/2pGHZIkSZLaX0tCVES8ADgUeAewOkV4ugXYCjgrMw9vckkPAGsA84EzKEadbmhyDZIkSZI6QNNCVERMBd5KEZ5eThGc5gNfA87JzD9FxLIBuhhNawJPATcBLwA+HxGDHZOZ+ZrRLkySJElSe2nmSNSDwFTgGeB/gXOAn2XmU02sYSATgVdWaJ+jVYgkSZKk9tXMELUSxfedvgR8ITMfaOK5B7NxqwuQJEmS1BmaGaK+DrwNeC9wbERcTjEa9ePMfKKJdSwnM++pekwr72ElSZIkqXWadp+ozDwKeB7F0uHXAK8GzgUeiohvR8RuzaplONrlHlaSJEmSWqOpN9vNzCWZ+Z3M3AXYAvgcsIjivky/ovie0QsiYvNm1jWYiNggIk6JiHuAnwNvAha0uCxJkiRJLdDUEFUrM+/IzBOA9SlCyS8pvjO1M3BLRPw2Ig5uVX0RMTEi/j0iLgXuAj4CrFvWuX/5WpIkSdIY09Kb7QJk5jPAT4CfRMS6FNP9DgZmUgSqs5pZTxvew0qSJElSG2nZSFRfMvOBzPxkZm4G/BtwYTPOGxFTI+JdEfE74AbgOIo/m68BO2TmC5pRhyRJkqT21/KRqAFsT7EQRTO0+z2sJEmSJLWJdg5RWwG7NOlc7XwPK0mSJEltpK2m87XQ1ylW23svcE9EXBoRb4+IyS2uS5IkSVKbMUTRPfewkiRJkjT6DFGlTr2HlSRJkqTmMkT1od3vYSVJkiSpdQxRA8jMZzLzJ5m5D7Ah8FHgbop7WH2zpcVJkiRJaommrc4XEZdVPKSt7s1Urtj3SeCTEbEHcEiLS5IkSZLUAs1c4vzfhnBMjngVIyAzfw38utV1SJIkSWq+ZoaojZt4rsoi4hvAeOCI/m6yGxErALOBpZl5ZDPrkyRJktQemhaiMvOeZp2rqojYj2J63uH9BSiAzHwyIq4EvhkRv8jMnzarRkmSJEntwYUlCm8D/g6c3UDbc4CHgANHsyBJkiRJ7ampISoivlHevHbiAG1WiIizIuLrTSxtB+DXmfnMYA0zcxnF96G2H/WqJEmSJLWdpoWomilzVw82ZQ64EjgsIvZtUnnrAPdWaH8/sPYo1SJJkiSpjTVzJKqdp8w9CUyq0H4FoN8gKEmSJKl7NTNEtfOUub8BL6nQ/sUUo1GSJEmSxphmhqh2njJ3BbBrRGw6WMOyzW7lMZIkSZLGmGaGqHaeMvdVintEXRQRa/XXKCLWBC6i+HM7o0m1SZIkSWojzbzZbttOmcvMGyLiM8AHgf+LiNnA5TXnfz6wB3A4sAbw6cy8oRm1SZIkSWovzQxRVwCHRMSmmXnnQA1rpsx9qymVAZl5YkQ8CZwIfKh89CoLeBo4JTNPaVZdkiRJktpLM6fztf2UucycBWwJfBKYA9xSPuYAHwe2NEBJkiRJY1vTRqJaMWUuInYB3glsRRHgHqS4B9V5mfmPfuq8GzhpOOeVJEmS1L2aOZ2vqVPmIuJjwIf72LUvMCsijs/Mbw7nHJIkSZLGnqaGKCimzEXEOcDBwEyKpc+huLnuVcDZ5WjQkEXEbsBHgKQIZvWmAbMjIjLzG8M5lyRJkqSxZURCVNVpc02YMvfumtezgW+WNT0feD1wHLAScFpEXJKZ941iLZIkSZK6yLBDVJtOm9uRYhTqgsysDVQPAH+KiIsoRr1WAo6k7/olSZIkaTnDWp2vZtocFNPm6h890+YOG855hqBn9b/z+9pZLlhxKkWN+zarKEmSJEmdb7hLnNdPm9seWA/YAfgEsJAiqJwWEesP81xVrFA+3ztAmx+Vz1tFxIqjXI8kSZKkLjHcENVr2lxmzs3MBzLzT5l5EsXCEQuAyRTT5ppt2QD7ehavGEexpLokSZIkDWq4Iapjp81l5pM1b1dqWSGSJEmSOspwQ1S7T5vra3nzvgz3z0GSJEnSGDFS94mqMm3u/hE6ZyP+HBE3AdcB15fPf8nMhU2sQZIkSVIXGfWb7WbmkxHPDgg1c9pcAJOArcvHsyVFxF0UoarH5KZVJUmSJKmjjVSIardpcwcCLysfLwWm1+wLYDNgU4pFMQD+GBH3AX8tH38pn2/LzESSJEmSSiMVotpq2lxmngec1/M+IjagGI16Wc3zBnWHbQCsD7yuZtuS8nP9JTMPHcWSK4mInSnuz7UjxSja7cC3gS9n5jMV+3oBMAvYFVgZuAe4EDg1M5+oa7s58CbgNcDmwNrAo8DvgdMz8zdD/lCSJElShxiJENX20+Yy816KxS9+2rMtIlZj+WC1Jb3/TCYD2wLbAG0RoiLiDcAPgSXA94D5wOuB0yiWlD+gQl87AJcDE4EfAPcBuwMnAXtExB6ZubTmkI8DbwFuAn5RnntLipUX942IYzPzS8P6gJIkSVKbG26I6thpc5n5KPCb8lEUHDEJeDG9g9WLgSnNrK0/EbEy8A3gGWDXzPxzuf2jFGFo/4h4a2Ze2EBf44GzKD7bGzLzp+X2ccD3gTcD76VYor7HJcBnMvO6ur52Af4f8NmIuCgzHxzeJ5UkSZLa17BCVLdNmytHXf5cPgCIYlWMLVpVU539gTWB7/QEKIDMXBIRHwF+DbybYjreYHYBZgBX9gSosq9lEfEBihB1ZER8pifgZubZfXWUmVdExBzg1cDOFCNlkiRJUlca0dX5umnaXI8yQNza6jpKu5fPl/Sx70pgMbBzREyqm4ZXqa/MvCsibqMIj5sAdzZQ21Pl89MNtJUkSZI6VjOWOO+4aXNtbMvy+bb6HZn5dETcDbyQIvjcPNS+SrdThKgtGCRERcSGwB4UIe7KQc5be9zcfnZt1WgfkiRJUrONeojqSwdMm2tXq5TPj/ezv2f7qs3qqwzE51EsLvKBMjRLkiRJXaslIaovQ502l5nNuvfUiIiIecCGFQ45LzPfMUrlDEu5OMW5FKsCfg/4XJXjM3PbfvqdSzG1U5IkSWo7bROixpA7KZYnb9QDNa97RodW6athzfbHGuh3WH2VAeq7FEuqfx94hzcmliRJ0lhgiGqyzNxjGIffCmxHMe2x1/eJImICsDHFwg53NdgX9D+FcvPyebnvTEXERIopfAcA5wPvrHqTX0mSJKlTddRUOHF5+bxXH/teRbEwxzUNrMw3YF8RsQlFuLqHukAWESsAF1EEqO8ABxqgJEmSNJYYojrLD4CHgbdGxHY9GyNiReAT5duv1R4QEVMiYqvyHl61rqBYwe9VEbFvTftxwGfKt1+vnaJXLiLxY+ANwLeAgzNz2Yh8MkmSJKlDOJ2vg2TmvyLiMIowNSciLgTmA/tSLFn+A4oFHmq9nGJ5+SuAXWv6eiYiDqYYkfpBRPyA4h5fe1BMGbwaOK2ur68Dr6UIcn8DTioWVexlTmbOGdYHlSRJktqYIarDZOZPImIX4MPAm4EVgTuA9wFfqrK4Q2b+ISK2B04B9gSmUUzh+xhwah/TAjcun9cAThqg6zmN1iBJkiR1GkNUB8rMqylGhBppOwdYbrioZv9NFN9vaqSvXRtpJ0mSJHUzvxMlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAENWBImLniPhFRMyPiCci4q8RcVxEjB9CXy+IiO9HxD8iYklE3BoRp0TE5AaP/2ZEZPnYrPqnkSRJkjqLIarDRMQbgCuBVwE/Br4CrACcBlxYsa8dgD8B+wG/Ar4I/As4Cfh/ETFpkONfD7wLWFjpQ0iSJEkdzBDVQSJiZeAbwDPArpn5rsz8b2Br4HfA/hHx1gb7Gg+cBUwB9s/Mt2fmCcAOwA+BmcB7Bzh+zbKW7wFzh/yhJEmSpA5jiOos+wNrAhdm5p97NmbmEuAj5dt3N9jXLsAM4MrM/GlNX8uAD5Rvj4yI6Of4M8vnoxs8nyRJktQVDFGdZffy+ZI+9l0JLAZ2Hmwa3mB9ZeZdwG3AhsAm9fsj4iCKKYBHZOYjDZxLkiRJ6hoTWl2AKtmyfL6tfkdmPh0RdwMvpAg+Nw+1r9LtwBbl486ejRGxIcV3p76bmRc3XvryIqK/aYBbDadfSZIkaTQ5EtVZVimfH+9nf8/2VUejr4gYB5xDsZDEMQ2cQ5IkSeo6jkQ1WUTMo5gm16jzMvMdo1ROVe+l+C7V6zLz0eF2lpnb9rW9HKHaZrj9S5IkSaPBENV8dwJLKrR/oOZ1z+jQKn01rNn+WAP9VuorIrYAPgmclZm/aKB/SZIkqSsZoposM/cYxuG3AttRfE+p1/eJImICsDHwNHBXg31R9tWXzcvnnu9MvQCYBBwcEQf3c8zt5WJ+b8zMnzRQgyRJktRxDFGd5XLgP4C9gAvq9r2K4p5PV2bm0gb7+nDZ16drd0TEJhTh6h6eC2TzgG/109frgHWAiyhu1juvgfNLkiRJHckQ1Vl+AHwGeGtEfLnnXlERsSLwibLN12oPiIgpwAbA4sy8t2bXFRQr+L0qIvbtuVdUuXjEZ8o2X8/MBMjM64FD+yoqIuZQhKgTM/OO4X5ISZIkqZ0ZojpIZv4rIg6jCFNzIuJCYD6wL8WS5T8Avld32MuB31CEpl1r+nqmnJZ3OfCDiPgBcC+wB8WUwauB00b1A0mSJEkdyCXOO0z5XaNdKG6u+2bgv4CngPcBb+0ZOWqwrz8A2wMXA3tSrL63CvAx4NUNTguUJEmSxhRHojpQZl4NvLbBtnOAGGD/TcABw6xn1+EcL0mSJHUSR6IkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVEJnZ6hqkXiLikcmTJ0+fMWNGq0uRJElSl7r55pt54okn5mfm6lWPNUSp7UTE3cDKwLyazeOAtYG/A8vqDhnKvr62b1U+3zKsDzAyBvpMzeyvynGNtB2sTbddy5G+jsPps92vZX/tvZbDO240r2XV7d16LYfTXydey3a5jjB2r2W3/V0JrbuWGwH/ysyNK58hM334aPsHsC6QwLojsa+v7cBcYG6rP+tgn6mZ/VU5rpG2g7Xptms50texm6/lANfXa9mm13II27vyWg6nv068lu1yHcfytRzKPq/lyD/8TpQkSZIkVWCIkiRJkqQKDFHqFAuAU8rnkdg30DHtYKTrG2p/VY5rpO1gbbrtWo5Gbd16Ldv5OoLXssrv3li7lsPpz2s5PGP1Wnbb35XQXteyIS4sIZUiYi5AZm7b6lo0PF7L7uG17B5ey+7gdeweXsvhcSRKkiRJkipwJEqSJEmSKnAkSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJJGQUR8KCIyIr7S6lpUXUQcHRF/jYh/lY/fRcTrWl2Xqit/F/9UXsd/RsTPIuJFra5L1UXEqyLipxHxt/K/rwe1uiYNLiKOioi7I2JJRMyNiFe2uiZV5+/f8gxR0giLiB2Bw4G/troWDdn9wAnANsB2wOXATyLiJS2tSkOxK3AGsDOwO/A08KuImN7KojQkKwE3AscCT7S4FjUgIt4CfBH4FPAy4BrglxGxQUsL01D4+1fHm+1KIygiVgGuBQ4FTgZuzMz3tLYqjYSImA98KDNnt7oWDV1ErAQ8DuyXmT9rdT0amohYCLwnM89udS3qX0T8AfhrZh5Ws+124AeZ+aHWVabh8Pev4EiUOlZE7B8RX46I35ZTdTIivjvIMetFxLcj4oGIWBoR8yLi9IhYbYTKOpPiL4ffjFB/Y0KbXsue84yPiLdS/CvcNSPZdzdq52tZmkbxd9+jo9B3V+mAa6lhGs1rHBErANsCl9V1cRnFyLBGkL+vzTeh1QVIw/AR4KXAQorpV1sN1DgiNqX4n+C1gIuBW4CXUwxN7xURMzPzkaEWExGHAZsB7xhqH2NYW13L8hwvBn4HrFjW9cbMvGE4fY4RbXct63wRuJ7i2mpg7X4tNXyjeY3XAMYDf6/r5u/Av43UB9Cz/H1ttsz04aMjH8BuwOZAUHzvIYHvDtD+0rLNf9Vt/0K5/et12z9Rbh/osWvZdkvgn8CWNcfPAb7S6j+nTni007WsOWYFilC8LfBp4GHgRa3+s2r3Rztey7o+HwA2afWfUyc82vxaLgQOavWfUac/RvMaA+uW215V1/Yk4NZWf/Zue4z272tdG3//Mv1OlLpDROwK/AY4LzOXGwkq/8XlDmAesGlmLqvZNw14kOI/PGtl5qJy+xoU/5I2kHszc3G5Ss1ZwDM1+8ZT/IdoGTA1M5cO5bONNa2+lgPU9Svgnsx8V5XPM5a107WMiNOAtwK7ZeYtQ/xIY1Y7XcvyWL+TMcJG+hqX0/kWA2/LzItq2n6V4h+kdhm9TzO2jcbva93x/v7hdD6NHbuVz5fV/scCIDMXRMTVwJ7AjsCvy+0PU4w+NOInwJ/rtp0F3E6xKtGTQytbfRjta9mfccCkYfah3ppyLSPii8BbMECNplb9Xqp5Kl3jzHwyIuYCrwYuqmn+auCHzShY/ar8+6rlubCExooty+fb+tl/e/m8xVA6z8zHMvPG2gewCJhfvnfId+SM6rUEiIhTI+KVEbFRRLw4Ij5NMT3ivKH2qT4141p+FTgYeDvwaESsUz5WGmqf6lMzruVKEbF1RGxN8f8vG5TvXS67OYZyjb8AHBQRh0bEjPIfNNYFvj5KNaoxla+lv3/LM0RprFilfH68n/0921cd/VI0TM24lusA3wVupfhXuO2BvTPzl8PoU8trxrU8imJFvl9TTFHpebx/GH1qec24ltsB15WPycAp5euPDaNPNa7yNc7M7wHHUSx6cD3wCuC1mXnPqFSoRg3l99XfvzpO55NGSWbu2uoaNDSZeVCra9DIyMxodQ0aGZk5h+J7GuogmXkGxQ2v1cH8/VueI1EaK3r+VWWVfvb3bH9s9EvRMHktu4fXsnt4Lbuf17h7eC1HgCFKY8Wt5XN/8/E3L5/7mx+s9uG17B5ey+7htex+XuPu4bUcAYYojRW/KZ/3jIheP/flcp4zKZZi/X2zC1NlXsvu4bXsHl7L7uc17h5eyxFgiNKYkJl3ApcBGwFH1+0+BZgKnNvX/RDUXryW3cNr2T28lt3Pa9w9vJYjw5vtqmNFxH7AfuXbdYDXAHcBvy23PZyZ769pvylwDbAWcDFwM7ADxf0SbgN2zsxHmlG7evNadg+vZffwWnY/r3H38Fo2nyFKHSsiZgEnD9DknszcqO6Y9SmW49wLWJ1iqeMfA6dk5qOjU6kG47XsHl7L7uG17H5e4+7htWw+Q5QkSZIkVeB3oiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklSBIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSVJHiYirIiLLxw1tVs+Nra5HkjT6DFGSpI4REQG8tGbT9S0qBWh+PRExOSIW1YS2A2r2bVSzvfZxf0QM6e/7iDihnz4/N3KfSpI6jyFKktRJNgdWqnl/fYvq6NHsev4NmFK+fhK4pIFjng/sPsTzvXOIx0lSVzNESZI6ycvq3l/fiiJqNLue19e8npOZCxo8rnIYiojtgBdUPU6SxgJDlCSpk9SHlutaUsVzmhaiyqmD+9Rs+tkghzxV8/pNETG14ilrg9dT/baSpDHIECVJ6iS1oeW+zJzfskoKtfU8kJkPj+K5tgeeV/P+p4O0nwM8Ub6eCry50RNFxETgbTWbftHosZI0FhiiJEmdpDa0XN+qImo0s57aqXx/ycx7B2n/L+DimvcHVjjXa4E1ytdPA+dXOFaSup4hSpLUESLi+cCaNZuub1EpQEvq2bfm9WBT+Xp8p+b17mXNjaidyncp8I8Gj5OkMWFCqwuQJKlBHbWoRERMBmYCM4CVKUaG/g+4KjOfrHKiiNgAeEnNpsGm8vW4DPg7sDbFP5y+A/jMIOdajd7fvTq38UobExGrU/zZrAdMAx4ErsvMYd/3KyLGA9tSrJy4JsVUxgXAPIoRvHuGew5JMkRJkjpF5UUlImJdiqlou9Rs/hXw9sz85wjXc315zucDpwBvByb3cdwDEXF8Zl5Y4Vy1o1APAn9u5KDMfCYizgfeW246kEFCFPBWYIXy9eMUUwJ3bLxUiIiDgLNqNu2WmXMiYjPgE8Aba85Re9xNwAczs9GRttpjNwM+AuwHrDJAuzuAi4CvZeZ9Vc8jSeB0PklS56gNLY9n5t0DNY6IPSmCTU+AWgZ8HHjNCASo+noWAndGxGHATcC76DtAAawLXBARh1Q4V22I+t/MzArH1k7pe2FEbDtI+9qpfBdl5pIK5+pXROxBEXzfQh8BqvQC4KcR8dVyNcJG+o2I+DhwM/CfDBCgSpsBHwKOb6hwSeqDI1GSpE6xdc3rv/TXqJzOdQrF/yj3/GPhI8B/ZOalo1TPDcCHgY/VbbujfL0F8MK640+LiB9n5qMDnSQiptF7JK3RqXwAZOb1EXED8OJy0zuBuf2cawt6jzp9p692Q7AV8D88d2PiR4A/AY9RhMod6R2sjqJYVv24gTotr/WFwP597L6V4s//cYrplJtTXIeGwpkkDcSRKElS24uIVYGNazZd30+75wG/pgg0PX/H/QHYZiQDVB/1bEYRoBKYDWyYmS/JzDeVjxcBr6b4flKPlYE3NHC6vXguYCym+HxV1Yaht0ZEf/+IWjsKdTdw1RDO1ZdPU3z3aQFwBPC8zNw7M9+WmbtQLN3+9bpjjo2I1wzS78foHaAS+DawSWZulZn7ZOZ/ZObrM3MrihUHD6UIcJI0ZIYoSVIn2Lru/XLfh4qIV9N7+h7Al4FXNbAc+HDrWZPinkz7ZuaRfZ0vM38FHDlIP32pXdr8V5n5RL8t+3ce8Ez5ei2KYNZLOX3uHTWbzq04bXAgqwJLgNdl5pmZ2evmvZk5PzPfTTGCWOurEdHn/6tExPYUo409ngbekZnv6m+qZ3meb2XmyymCnSQNiSFKktQJ+l0JLyLGl9+JuYQiIEAx4vGWzDym6kp4Q6wny/P97yDH/aJs22PA7++U09VeW7Op8oILAJn5IMWCGj3e2UezXYANa96P1FS+Hp/JzN8O0uYUeo8SbUofga90Ir2n5n0yMxu+n1Vm/n3wVpLUN0OUJKkT1IaWpygWb6idvvcRnvs77UZg+8z8fpPqATizwRXlnqIYMemxcJD2M4HVy9fJEENUqTYUvb6cklirNlhdk5l3DuNc9Z4APj9Yo3Lk6xN1m/+jvl1ErEXvqZB/Bz41nAIlqQpDlCSpE9SGlpsy88l+pu+dC+yQmbc2sZ6nKVb9a8S6wMSa938bpH3tVL4/DnP05McUI3QAKwL/3rMjIqbQ+7tFIz0K9cvMXDB4s6ItxT21euzUR5td6D0K9Z1RGnGUpD4ZoiRJbS0iVqRY3a3HDX1M31sKHJmZ78zMxU2u59LMHCwM9ZhR936wsFe7tPlwRqEov0v1w5pNB9a8fiPFwg9Q/FmO9Chewws5lN+Xql19cePyBsC1dqh7P9g0QUkaUYYoSVK7ezG9b8nxZnpP37sb2DkzZ7eonl/117APW9e9H2ip9i0pluTuUWlp837UjjDNjIieFQZrp/L972DLrg9B1amBd9S9X6vu/Tp172+u2L8kDYshSpLU7uq/f1R7E9tHgO0y89oW1vP7CsduU/P6cYoA2J/aqXzzMvOGCufpzxygZ+XAAN4ZEesCe9S0GempfNB7el4jHq97v2rd+9Xr3j9WsX9JGhZDlCSp3dWGlmcovjPTY3XgpOaWs1w9f61wbG2Iun6QJcRHbCpfj/J8363ZdCDFsubjy/f/pPefb6cYqaXYJakhhihJUrvbuub1rcABwNyabcdGxHtbVU+j38GKiJWAzWs2LXevq5q204GdazaNxFS+HrUjTZvS+15LF9bfw2mErFyxff3S74/VvZ9f937Viv1L0rAYoiRJbau80epLajZdl5mLgH2Ae2q2fy4i3tSKeiocvjW9/94daAri63hudOhfwBUVzjOgcuXCP9ZsWrXm9WhM5YMirFWxWd37f9S9f6juff2CHZI0qgxRkqR2tiUwpeb9tQCZ+RDFTWgfK7ePA86LiJ0ZXX3W06Bt6t4PFMBqp/JdMgqjQ32FpZsy888jfJ4e2zfaMCImAi+t2XR3Hwtd/K7u/SuHWpgkDYUhSpLUzuoXcXg2eGTmTRQr9fUEjBWBn0bE5oyefutpQG2IWgLc0lejiFgBeE3NppGcytfjQp77c+tx7iicp8feETFt8GZFW3pP/6sPTFCMzC2ref/OMnxJUlMYoiRJ7WzA0JKZlwOH1mxaHfhlRKzZinoGURuibsjMp/tptyvP3bPpaUZhoYfMfITiXkuvrHmcMdLnqTEZOH6wRhERFMvX1zqvvl1m/hP4Sc2mdYAPDqM+SarEECVJame1oeXuzHysvkFmfgc4pWbTpsDPImJyfdtm1NOX8ga9td/bGSh81S5tfnVm1i+iMCIy87rMvKrmUXUZ8qpOiIhXDNLmZHpP/buL4qbKffk0vVflOyki3tJoMRGxdqNtJameIUqS1M5qQ0u/3z/KzFn0/p7PDsD55UIQTa+nDy+h9w16Bzq2NkSNyNLmbeAxiumWv4iIw+qn3kXEahFxBkWIqnVUZi6jD+X3tz5Vs2kCcEFEnBkRG/V1TERMj4hDIuKP9F6VUJIqmTB4E0mSmi8iNgCm12wabOrcocD6wG7l+/2A04FjWlRPrYYWlYiIlwIb1mwaje9DtcKJwGcppimeCXy6DDKPAesCOwEr1B3zxcy8dJB+Twa2ovhuHBQ3ED4MOCwibgbuoFjdcGWK5eW34Ll/QL5mGJ9H0hhniJIktav67x8NOPKTmU+Vy5xfDbyg3PxfEXFPZn6+2fXUqQ1RzwA39NOudhTqlsy8vcI52tnNwJuAHwFTKb67tvcA7b8GDHrvr8x8JiL+nWJq3/vpPcNmBi59LmmUOJ1PktSuKi/iUH5H6bX0vo/QZyPigFbU08+xt2TmE/20q13avFum8gGQmZcB2wI/ZPmVAXvcDOybmUdlZvbTpr7fZZl5AvBi4HvAokEOuZXiO3SfaahwSepDNPjfKEmSNIoiYh3gAYopaQCvzMyrWljSkEXEQcBZNZt2y8w5NfvXAGYC61FM8XuI4kbKfxmBc68A7AxsBKwJTKSY0nc38JfMvH+455Akp/NJktQeXs9zAeph+r4/UlfIzIeBi0ep7yeBOaPRtyT1cDqfJEntoXYq3y8y85mWVSJJGpAjUZIktYffAnPL1131fShJ6jaGKEmS2kBm/k+ra5AkNcbpfJIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSarAm+1KkiRJUgWOREmSJElSBYYoSZIkSarAECVJkiRJFRiiJEmSJKkCQ5QkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRUYoiRJkiSpAkOUJEmSJFVgiJIkSZKkCgxRkiRJklTB/wdAKi7p5A6B8QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 424 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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vYWSZUuQlAcGDx7Mf/3Xf7Ft2zauvPLKtMPpkk996lOEEPjpT3/a7vYFCxYQQuDss8/OcWSSJPW/m/65nEtvfrw5ARo1ZADfedsR/PnDJ3LB8TM4aNJwpowczIGThvGWY6Zxw78dy60fOpGjZ4xsPscjy7fy+mse5IUNO9J6GyXLJEjKEx/84AeZNWsW1157LYsXL047nE69733vo6ysjOuuu67d7ddeey0A73//+3MZliRJ/e62p9fymd8/2bw8b0I1f/7wiZx96KR9jtU9ZMpwfvne4/mPs/anabflm3fx5useYunGnf0dtrLYHU7KE5WVlXz5y1/m/PPP55Of/CS/+93vcnr9e+65p8PiCI899thL1s2YMYNXvepV/PnPf+app57i4IMPbt5WU1PDTTfdxNSpU3nVq17VTxFLkpR7z6+v4aO/fIymHnCHTB7OjRcfy7CBlV06vrwscMmps5k9digf/uWj7KlrZEPNXt7+w39w8/uPt3pcjpgEKS/N+M8/px1Cly398mv67FznnXcexx9/PL///e+5//77OfHEE/vs3J259957uffee7t1zAc+8AH+/Oc/c+211/Ltb3+7ef0vfvELduzYwSc+8QnKy8v7OlRJklKxu7aBD974KLvrGgCYPnowP7nw6C4nQNnOOGgCP7voWC748T/YU9fIqq27uej6f/G7S17G4AF+RO9vdoeT8szXv/51AC677LKcXvfyyy8nxtju4yc/+Um7x7zqVa9i5syZ3HDDDezatat5/XXXXUdFRQXvec97chW+JEn97qu3LWLRuqS8dVVFGd9/x3zG9KKowTEzR3HtO4+isjzpG/fs2ho+cfMTxBg7OVK9ZRIk5Znjjz+e8847j3/84x/86le/SjucfSorK+N973sf27Zta451wYIFPPLII5x99tlMmjQp5QglSeobT67cxvUPvti8fMU5B3HAxGG9Pu8pc8fy+de1dCn/85Nr+NH9L+7jCPUF29qUl/qyi1kh+tKXvsQtt9zCpz71KV7/+tenHc4+XXTRRVx++eVce+21XHjhhc0FEd73vvelHJkkSX2jvqGR//zdE83jgE6aM4a3HD21z87/lmOm8fTq7dzw0DIA/uevizhxzhjmTeh9kqX22RIk5aHZs2dzySWX8OKLL7Yaa5OPxo4d29xy9cADD3DTTTcxc+ZMzjjjjLRDkySpT/zq4RU8vXo7kHSD+8K5B++zClxP/NfZB3LI5OEA1DY08tFfPsbe+oY+vYZamARJeeqzn/0sI0aM4Itf/CI7duT3/AEf+MAHAHjzm9/Mjh07uPjiiykr858XSVLh213bwNV3tExd8aHTZjN99JA+v86AijK++ebDqKpI/v98dm0N19y9pM+vo4Td4aQ8NWrUKD796U/zH//xH53u++53v7vDbddccw2DBw/uw8he6oQTTuCwww7j8ccfp7KykosuuqhfrydJUq5c/+BS1tfsBWBcdRXvOWm/frvW7HHVfOpV87ji1mcA+N49Szj3iMnMHNP3SVepMwmS8tiHP/xhrrnmGpYuXbrP/X760592uO2qq67q9yQI4MILL+SjH/0or3vd6xg/fny/X0+SpP62fU8d37vn+eblj7xyDoMG9O/UD+88fga/f3QVj6/cRm1DI5+95Sl+dtExfd79rtTZX0VKWYyRlStXtrutqqqKF198sblUdUVFxUuO7ewxYsSIfV7/iiuuIMbY4USpkLQ0xRi5/vrrO9zn0UcfBeD973//Pq8nSVKh+MU/lrN9Tz0AM0YP5k1H9V0xhI6UlwW++PpDKMvkPPct3sj/PbOu369bakyCJPXaihUr+OUvf8kBBxzAy1/+8rTDkSSp1/bWN/DjrFLVl5w2m8ry3Hx0PnjycN5x3PTm5f+5bRH1DY05uXapMAmS1GO/+MUvuOKKKzj99NPZu3cvn//8522ulyQVhVseXd1qLNDrDs/t3HcfecUchlYlPUCeX7+D3yxov9eIesYkSFKPXXfddXzuc59j9+7dfPOb3+SNb3xj2iFJktRrMUauu++F5uWLTpxJVUX/jgVqa/TQKt53cksRhm/e8Rx76iyZ3VcsjCCpx+655560Q5Akqc/9/YVNPL8+mZ5iaFUFbzt2Wipx/NtJM/nZQ8vYULOXddv3cvOClbwzq5uces6WIEmSJCnLjf9Y3vz6DUdOZtjAylTiGDygolVr0LX3LqHOsUF9wiRIkiRJythQs5fbnlrbvJxWK1D29UcOTpKwlVt288fHVqcaT7EwCZKUqhhj2iFIktTs1w+voL4x+b/pqOkjmTdhWKrxDB5QwUUnzGxe/t69S/y/sw+YBCkVTRXEGhtt0i11Tf+QW1VOkpS2GCO/fnhF8/Lbj0u3FajJBS+bwZDMJK3Pr9/BA89vSjmiwmcSpFRUVVUBsHPnzpQjUdqafgeafickSUrLI8u3smzTLgCqB1bwqoMnphxRYvigSs6bP6V5+foHl6YXTJEwCVIqqqurAVi7di01NTU0NjbatFtCYow0NjZSU1PD2rVJv+um3wlJktLy+0db5uJ5zSETGViZ27LY+3LBy2Y0v77z2XWs2LwrvWCKgCWylYpRo0axc+dOdu3axcqVTv5V6gYPHsyoUaPSDkOSVMJq6xv50xNrmpfPPWJyitG81KyxQzlpzhjuW7yRGOGGh5bx6VcfkHZYBcuWIKWirKyMqVOnMnbsWAYOHOh4kBIUQmDgwIGMHTuWqVOnUlbmP0eSpPTc+9wGtu6qA2DyiEEcMyP/vpx7d1Zr0G8XrLRcdi/YEqTUlJWVMWbMGMaMGZN2KJIkqcRld4V73eGTKCvLvy9oT91/HBOHD2TNtj1s2lnLXc+u58yDJqQdVkHyq1dJkiSVtJ1767lj4frm5dfnWVe4JuVlgTcc2RLbzQ87pKCnTIIkSZJU0u5etJ7a+qRr2bwJ1cwZn7/Fes6bP7X59d2L1rOhZm+K0RQukyBJkiSVtL8+tbb59VkH53f3spljhnD0jJEANDRG/vDoqpQjKkwmQZIkSSpZe+oauPvZlq5w+Z4EAa3mDLr1idUpRlK4TIIkSZJUsh54fiM7axsAmDF6MPvncVe4JmcdNJHK8qRwwxMrt7Fsk5PPd5dJkCRJkkpWdle4Mw+eUBDTdgwfXMnJc8Y2L2fPb6SuMQmSJElSSapraOT/Fq5rXn7VwRNTjKZ7zj6sJVaToO4zCZIkSVJJ+ueLm5snSJ04fCCHTh6eckRd98oDxjOgIvkov3DNdpZs2JFyRIXFJEiSJEkl6c6suYHOOHB8Xk6Q2pHqgZW8fP9xzcvZ3frUOZMgSZIklaR7FrUkQS8/YHyKkfRMdiW7O7K69alzJkGSJEkqOUs37uSFjUlVtUGV5Rw7c1TKEXXfqfuPpTzTevXYiq2sr9mTckSFwyRIkiRJJefurFagE2aPZmBleYrR9MyIwQM4anoycWqMtJrvSPtmEiRJkqSSc/eiDc2vT80aW1NoTj+wpRvfHQtNgrrKJEiSJEklZVdtPQ+9sKl5+bR5hZsEvSJrLNN9izewp64hxWgKh0mQJEmSSsqDz2+itr4RgP3HVzN5xKCUI+q5mWOGMGvsEAD21DXywPMbU46oMJgESZIkqaRkjwc6dd7YFCPpG6/M6hKX/d7UMZMgSZIklYwYI/c+1zIe6LQCHg/U5JS5LYnc/YttCeoKkyBJkiSVjGWbdrFyy24AhgwoZ36mulohmz99JIMy1e2WbtrFis27Uo4o/5kESZIkqWTcnzVm5rj9RlNZXvgfh6sqyjl2v5Z5ju6zNahThX/XJUmSpC7KLhxwwuwxKUbSt07Mei/3P79hH3sKTIIkSZJUIhoaIw8uaSmNfeKc4kmCTprTMi7ogec30dAYU4wm/5kESZIkqSQ8tWob23bXATCuuoo544amHFHfmTt+KOOqqwDYtruOJ1dtSzmi/GYSJEmSpJKQPR7oxNljCCGkGE3fCiG0atm67zm7xO2LSZAkSZJKQrGOB2pyUlYS9PcXNu1jT5kESZIkqejtrm3g4aVbmpeLMQk6br/Rza8fWb6F2vrGFKPJbyZBkiRJKnr/WrqZ2oYkKZg9bigThg9MOaK+N3H4IKaNGgzAnrpGnly1Nd2A8phJkCRJkoreA0tajwcqVsfMbJkv6B8vbk4xkvxmEiRJkqSi99ALLQnBy2aN3seehS07CfqnSVCHTIIkSZJU1HbsreepTMnoEFonCsXm2Kz39vDSLdQ3OC6oPSZBkiRJKmoLlm1pnjx0//HVjBg8IOWI+s+0UYOZMCwZ77Rjbz0L19SkHFF+MgmSJElSUftHVrno7ApqxSiE0GZckKWy22MSJEmSpKKWXSDguP2KtytcE4sjdM4kSJIkSUVrd20DT6zc2rx8zMzibgmC1knQI8u2EGNMMZr8ZBIkSZKkovXI8i3UNSRJwNzxQxk1pHjHAzWZPXYo1QMrANi0s5YVm3enHFH+MQlKSQhhSgjhxyGE1SGEvSGEpSGEq0III7t4/JAQwttDCL8IITwbQtgZQqgJITwcQrg0hNDhX3gI4cAQwq9DCOtDCHtCCItCCFeGEAb13TuUJElKX/Z4oGNLoBUIoKwscPjUEc3Ljyzfkl4wecokKAUhhFnAAuBC4J/AN4EXgI8Afw8hdOUv9CTg58CZwFPAt4FfAJOBrwF3hxBeMhVyCOFY4F/AucAdwNXAduCzwP+FEKp6894kSZLyyUNZY2KOLYHxQE2OmNbyvfqjJkEvUZF2ACXqGmAc8OEY47ebVoYQvgF8DPgi8P5OzrEWeAdwc4yxNusclwH3AC8DPgh8PWtbOfATYDDwuhjjHzPry4BfA2/MXP/LvXt7kiRJ6dtT18Bjy7c2Lxfz/EBtHTltRPPrR7J+BkrYEpRjmVagM4ClwHfbbL4c2Am8M4QwZF/niTE+FmO8MTsByqyvoSXxObXNYacABwB/a0qAMsc0Av+RWXx/CCF0+Q1JkiTlqUeXb6U2M1nofmOHMK76JZ1kitYRU1taghau2c7u2oYUo8k/JkG5d1rm+fZM8tEsk8A8QNJSc1wvrlGXea5vs/7lmee/tj0gxvgC8BwwHdivF9eWJEnKC9lz5JTKeKAmwwdXMmts8p16fWPkqdXbUo4ov5gE5d7+mefnOti+OPM8txfXuCjz3DbZ6bNrhxAWtPcA5nU/XEmSpL73jxdKa36gtrLHBT2yzHFB2UyCcm945rmjdLxp/YienDyE8CHgLOAx4Me5vLYkSVK+qGto5NEVLR/8S60lCODIVsURtqYXSB6yMEIRCSG8AbiKpGjCG2OMdfs+oudijPM7iGEBcGR/XVeSJKkrFq7Zzp66ZOTBlJGDmDC8dMYDNTmiVXEEW4Ky2RKUe02tLcM72N60fmt3ThpCOBf4JbAeODUzxicn15YkSco3C7K6f82f3qVpGIvO3PHVDKosB2B9zV7Wbd+TckT5wyQo9xZlnjsadzMn89zRuJ2XCCGcD9wMrANOiTEu6mDXPr+2JElSPjIJgvKywEGThjUvP7nS4ghNTIJy7+7M8xmZ+XmahRCqgROAXcBDXTlZCOHtwE3AapIEaPE+dr8r83xWO+fZjyQ5WkYycaskSVLByh4Dkz02ptQcMqWlA9CTq0yCmpgE5ViMcQlwOzCDZDLTbFcCQ4AbYow7m1aGEOaFEF5SdS2E8C7gZ8By4OQOusBluxdYCJwcQjgn6zxlwFcyi9+PMcZuvSlJkqQ8smbbblZt3Q3AoMpy5k2oTjmi9BwyuSUJesokqJmFEdJxCfAg8K0QwitIEpNjSeYQeg74TJv9F2aemycxDSGcRlL9rYykdenCduY43RpjvKppIcbYEEK4kKRF6DchhN+QJFCvAI4imaPom33w/iRJklLzyLKtza8PnzqCivLS/d7/0KyWoCdMgpqZBKUgxrgkhHAU8DmSrmmvBtYAVwNXxhi7Ur5jOi0teRd1sM8ykmpx2df+RwjhaJJWpzOA6sx+nwO+HGPc2713I0mSlF+yK6EdOX1EeoHkgZljhjJ4QDm7ahvYkCmOMH5Y6VXKa8skKCUxxhXAhV3c9yVNPDHG64Hre3jtZ4Dze3KsJElSvrMoQoum4gj/Wpr8TJ5cuY3xB5oElW7boCRJkorOnroGnl7d0u3riKmlnQQBHDJ5RPNru8QlTIIkSZJUNJ5ctY26hqTG035jhzByyICUI0rfIVNaymRbHCFhEiRJkqSi8Uh2V7gSLo2dLbsl6MlV27AQsEmQJEmSiojjgV5qvzFDGDKgHCBTHME6WCZBkiRJKgoxxlaV4UyCEmVlgYMmO2lqNpMgSZIkFYUVm3ezcUctAMMGVjBr7NCUI8ofB09qSYKeWb09xUjyg0mQJEmSisKC5ZubXx8xbSRlZS+ZZaRkzZtY3fz62bUmQSZBkiRJKgqOB+rYgRNbKsQtXGMSZBIkSZKkorBg2dbm10daGa6V2eOGUp5pGVu2eRc799anHFG6TIIkSZJU8HbsrWdRpptXWYDDpg7v5IjSMrCynP3GDAEgRnh2bU3KEaXLJEiSJEkF7/EVW2nMTH+z/4RhVA+sTDegPHSAXeKamQRJkiSp4LUeDzQivUDyWHYSVOrFEUyCJEmSVPCy5wdyPFD7DsiqELdwjd3hJEmSpILV2Bh5xMpwnWrVErRmO41N/QdLkEmQJEmSCtqSDTvYviepdjZm6ACmjRqcckT5aVx1FaOGDABgZ20DK7bsSjmi9JgESZIkqaBljwc6YtpIQnCS1PaEEOwSl2ESJEmSpIKWPR7IrnD7Nm+CFeLAJEiSJEkFboHjgbrMMtkJkyBJkiQVrK27almyYScAFWWBQyY7Seq+ZHeHW7TO7nCSJElSwXl0+dbm1wdNHs7AyvL0gikAs8YOpSwzZGr55l3sqWtIN6CUmARJkiSpYLXqCuf8QJ0aWFneXD0vRnh+/Y6UI0qHSZAkSZIKluOBum/O+JYucYvXl2aXOJMgSZIkFaT6hkYeW7G1efnI6SNSi6WQzB0/tPn14nW2BEmSJEkF49m1NezOjGmZNHwgE4cPSjmiwjA3qyXoOZMgSZIkqXBkzw90pF3humz2uKyWILvDSZIkSYUjezzQkRZF6DIrxJkESZIkqUBZFKFnBlaWM330EKB0K8SZBEmSJKngrN++h5VbdgMwsLKMAycNSzmiwlLqXeJMgiRJklRwsscDHTplBJXlfqztjlKvEOdviyRJkgqO44F6p9QrxJkESZIkqeA8snxr82vHA3XfnHGlPWGqSZAkSZIKyt76Bp5cua15+chpI9ILpkDtN3ZISVeIMwmSJElSQXlq1XZqGxoBmDF6MKOHVqUcUeEp9QpxJkGSJEkqKI8sc5LUvjBrbEtxhCUbTIIkSZKkvJVdGc7xQD03a+yQ5tcvbNiZYiS5ZxIkSZKkghFj5GErw/WJ/bKToI0mQZIkSVJeWrllNxtq9gIwtKqiValndc9+Wd3hXrA7nCRJkpSfsrvCHTFtBOVNJc7Ubdljgl7cuJMYY4rR5JZJkCRJkgrGI3aF6zOjhgxgxOBKAHbVNrB2+56UI8odkyBJkiQVjAXLrQzXl/YbU5rFEUyCJEmSVBB21dazcE0NACHA4VNHpBtQESjVcUEmQZIkSSoIj6/YRkNjMm5l7rhqhg+qTDmiwpddIW6JLUGSJElSfnmkVVe4EekFUkT2G1OaE6aaBEmSJKkgLLAoQp8r1QlTTYIkSZKU9xobY6sk6KgZo1KMpnhMGz2Ypirjq7ftZk9dQ7oB5UjRJkEhhPEhhLsyjzvTjkeSJEk998LGHWzbXQckpZ1njB6cckTFoaqinKmjkp9ljMl8QaWgaJMgYCBwatZDkiRJBaptV7gQnCS1r5RimexiToIkSZJUJB5emt0VzvFAfakUy2SbBEmSJCnvZU+SOt9JUvtUdpnsF+wOJ0mSJKVv887a5m5aleWBQyYPTzmi4jIzqzvc0k0mQZIkSVLqHskaD3Tw5OEMrCxPMZriM2N0SxK0bNOuFCPJnYpcXzCEcEGOLjUmR9eRJElSP2rVFc75gfrchGEDGVBRRm19I5t31rJ9Tx3DBlamHVa/ynkSBFwPxBxdKwKWDpEkSSpgC5Y6Hqg/lZUFpo8azOL1SVGE5Zt2cXCRdzlMsztcyMFDkiRJBay2vpHHV25tXjYJ6h/Ts+ZdKoVxQWkmQblqDZIkSVKBembNdvbWNwIwddQgxg0bmHJExWl6iY0LSqM7XC3Q1MlwJfCjfrrOCOAj/XRuSZIk5cDDSzc3vz5q+qgUIyluM7JbgkqgTHYaSdATwFGZ10NjjFf2x0VCCNMxCZIkSSpoj2QVRTjSrnD9plVL0ObibwlKozvcv7JeDw8hzEkhBkmSJOW5GCMLllkZLhdal8ku/pagtJMggKNTiEGSJEl5buWW3azbvheAoVUV7D+hOuWIitekEQOpKEvqiq3bvpddtfUpR9S/0kiC/pl5biqMYBIkSZKkl8juCnfEtBGUl1n8t79UlJcxZeSg5uXlRd4lLo0kaCGwI2u5v5Mgq9BJkiQVoOyucEfaFa7fZY8LWrrRJKhPxRgjsICWuXwODyH0Zxx+ZSBJklSAHs6aJPWoGSZB/S27QtzyzcU9LiiN6nAA3wEey1oeCWzqywvEGJeR7jxIkiRJ6qEde+t5du12AEKAw6eOSDegEtCqJajI5wpKJQmKMf4W+G0a15YkSVL+e3zFVhozgxr2H19N9cDKfR+gXpue1RJU7BXibCmRJElS3vnniy2TpM53fqCccEyQJEmSlKJ/LW1Jgo6ZOSrFSErH1FGDCJnR9Gu27WZvfUO6AfUjkyBJkiTllbqGRh5dvrV52SQoN6oqypk0PCmT3Rhh1ZbdKUfUf0yCUhJCmBJC+HEIYXUIYW8IYWkI4aoQQpfbe0MIp4cQvh5CuDOEsCmEEEMI93dyTNzH46HevzNJkqTeeWrVNnbXJa0QU0YOYuLwQZ0cob6SPVfQiiJOgtKqDlfSQgizgAeBccAtwLPAMcBHgLNCCCfEGLtSLe+DwOuAPcDzQFe/JlkGXN/O+pVdPF6SJKnfZI8HOmaGrUC5NHXUYP6R+fmvKOIJU02C0nENSQL04Rjjt5tWhhC+AXwM+CLw/i6c5yvAZ0iSqKnAi128/tIY4xXdCViSJClXHA+UnqkjWyrErdhSvEmQ3eFyLNMKdAawFPhum82XAzuBd4YQhtCJGOPfY4xPxxiLd9SaJEkqKY2NkX9lTZJ6tElQTk0d1dIdbuVmu8Op75yWeb49xtiYvSHGWBNCeIAkSToOuLOfYhgRQrgImABsAxbEGB0PJEmSUrd4/Q627a4DYMzQAew3ptPvhdWHpo4qjZYgk6Dc2z/z/FwH2xeTJEFz6b8k6DDgR9krQgiPA++MMT7ZlROEEBZ0sGleL2OTJEkl7J9ZXeGOmj6K0FSzWTnRqjtcEY8Jsjtc7g3PPG/rYHvT+hH9dP1vACcAY4Fq4GjgNySJ0V0hhMn9dF1JkqROtSqKYFe4nBtXXcWAiiRF2LKrjh1761OOqH+YBJWYGOOlMcYHY4wbY4w7YowPxxjPB34LjAEu6+J55rf3ICnSIEmS1G0xRv5lEpSqsrLAlBFZZbKLtDXIJCj3mlp6hnewvWn91v4PpZXvZ55PzvF1JUmSAFi5ZTdrt+8BYGhVBQdMHJZyRKVpyqji7xJnEpR7izLPczvYPifz3NGYof6yIfPs6ENJkpSK7K5wR04fSXmZ44HSMLUEJkw1Ccq9uzPPZ4QQWv38QwjVJON1dgG5rtZ2XOb5hRxfV5IkCWg9P9CxdoVLzVRbgvJLCKE6hHBG1qMq7Zi6K8a4BLgdmAF8sM3mK0laYm6IMe5sWhlCmBdC6HXVtRDCoSGEyvbWk0zQCvDz3l5HkiSpJ7Irwx09wyQoLdkV4lYWaZnsQiuRPRf4KxAzyzOB5emF02OXAA8C3wohvAJYCBxLMofQc8Bn2uy/MPPcqk04hHAi8J7M4tDM85wQwvVN+8QY3511yMeB14YQ7gNWAHtJSlqfBZQDPwBu6sX7kiRJ6pENNXt5YUPyHfCA8jIOndLR8Gn1t+wJU1cU6YSphZYENQm0JEIFJ8a4JIRwFPA5kgTk1cAa4Grgyhjjln0dn2U28K4268a1WffurNd/AIYBhwIvBwYCm4C/AD+IMf6xW29EkiSpjzyc1Qp02NThDKwsTzGa0tZqrqAtu4gxFt18TYWaBBW8GOMK4MIu7tvub12M8Xrg+m5c8w8kiZAkSVJe+fsLm5pfHztzdIqRaMTgSoZWVbBjbz27ahvYvLOW0UMLbhTKPhXUmCBJkiQVp78vaUmCjp9lEpSmEAJTirxCnEmQJEmSUrWhZi+L1+8AkvFA86ePTDkiFXuFOJMgSZIkpeqhrK5wh08b4XigPNB2XFCxMQmSJElSqrLHAx23n13h8kF2d7hVdoeTJEmS+tZD2eOBTILywuSsJGj1VpMgSZIkqc+s276HFzZm5geqKOOIaSPSDUgATB6R1RJkEiRJkiT1neyqcPOnjXQ8UJ5olQRt2U2MBTtFZ7tMgiRJkpQaS2PnpxGDKxmUSUh31jawfXd9yhH1LZMgSZIkpSa7KIJJUP4IITBpxMDm5WLrEmcSJEmSpFSs2rqb5Zk5aAZWlnHYlBHpBqRWJmeVyS624ggmQZIkSUpFdle4o6aPYkCFH03zyWRbgiRJkqS+5Xig/JZdHMGWIEmSJKmXYow88PzG5mWToPwzKSsJWmkSJEmSJPXO8+t3sHb7HgCqB1Zw6OThKUektibZEiRJkiT1nfsWt7QCnTBrDBXlfizNN3aHkyRJkvrQ/Vld4U6cMybFSNSRCcMHEkLyen3NXmrrG9MNqA+ZBEmSJCmnausbeShrfqCTTILyUmV5GeOrkwpxMcLabXtSjqjvmARJkiQppx5ZvoVdtQ0ATBs1mOmjh6QckToyeWR2cYRdKUbSt0yCJEmSlFP3L7YrXKFoXRzBliBJkiSpR+7LGg900myToHxWrMURTIIkSZKUM1t31fLEyq0AlAV42SyToHw2ecTA5terthRPElSRdgDdVAM8kLVcPG1ykiRJJeDBJZuIMXl96JQRDB9cmW5A2qdW3eG2mQSlIsb4HHBS2nFIkiSpZ7LnB7IqXP7LLoywyu5wkiRJUvfEGLlv8Ybm5ZPmjE0xGnXFpDZjgmJTM16BMwmSJElSTrywcScrM+NKhgwo54hpI9INSJ0aNrCS6qqk89ieukY276xNOaK+YRIkSZKknLj72fXNr0+cM4bKcj+KFoJi7BLnb54kSZJy4u5FLUnQafuPSzESdUfbLnHFwCRIkiRJ/W7H3nr++eLm5uVTTYIKxoThLWWy124rjuLMJkGSJEnqdw88v5G6hmRQ/QETh7X6YK38NnFYy71as90kSJIkSeqS7PFAL59nVbhCYkuQJEmS1E0xRscDFbCJw1vGBK0xCZIkSZI698ya7azbvheA4YMqOXzqiHQDUrfYEiRJkiR10z2LWiZIPWXuWCosjV1Q2iZBxTBhqr+BkiRJ6lfZ44FOczxQwRlaVUH1wGTC1NqG4pgw1SRIkiRJ/WbLzloeWb4FgBDg5DkmQYVoYlZrUDGMCzIJkiRJUr/52+INNGZ6Tx0+dQSjh1alG5B6ZEJWcYRiGBdkEiRJkqR+c/sz65pfv9yqcAWr2OYKKvgkKITQGEKoTzsOSZIktba3voF7ssYDnXHQhBSjUW+0Lo6wO8VI+kbBJ0EZIe0AJEmS1Nrfl2xiZ20DANNGDWbu+KEpR6SeckyQJEmS1AXZXeHOOHA8Ifi9daEqtrmCKtIOoEkIoQI4JLP4VIyxLs14JEmS1HONjZE7spKg0w8cn2I06q2JFkbomRDCzBDCRSGEue1sOwdYBTyceawJIbwpV7FJkiSpbz2xahvra/YCMGrIAOZPH5lyROqNCW26wxX6hKm57A53MXAd0Cp1DCHsD/wKGAssB54FRgI3hhCOyGF8kiRJ6iO3P722+fXL542jotxRGIVs2MAKBg8oB2B3XQPbdxd2XbJc/jaeCDwaY1zeZv1HgSrguzHGmTHGg4DzgXLgQzmMT5IkSX3k/9qMB1JhCyG0bg3aXtgV4nKZBM0E/tnO+rOAWuDTTStijL8D7gdOyk1oEEIYEkJ4Vwjh0hDCKVnrjw4h3BZC2BxC2BpCuCWEcECu4pIkSSo0L27cyeL1OwAYWFnGSXPGphyR+kIxVYjLZWGEscDm7BUhhNHAdOC+GGNNm/0fBd6Ti8BCCKOAB4E5Weu+BNwM3A0Mztr9tcDLQghHxBhX5iI+SZKkQnJbVle4k+aMZVCmG5UK24RhxVMcIZctQXVA22mCj808P9zO/jv6N5xWPgnMBR4BvkmSgF0KfAFYD5wODCNJ2L4FjM4cI0mSpDb+/MSa5tdnOkFq0bAlqGeeA84KIZTFGBsz684GIkkrTFuTgDXtrO8PrwVeAI6PMdZnynU/A7waOCfGeGdmvx3AR0MIJwJn5ig2SZKkgrF80y6eXLUNgMryYGnsItJ6riDHBHXVb4GpwC0hhHNCCB8HLiJJLP7azv4nAM/nKLYZwF9jjPUAmefbM9vaS9AeAKbkJjRJkqTC8ecnW77DPnnOWIYPqkwxGvUlW4J65irgzcBrSFpYAALwmRjjzuwdQwhHAbOBa3MU20BgQ5t1GwFijFva2X8zSUU7SZIkZfnzk6ubX7/m0IkpRqK+1rolyCSoS2KMu0IIJwAfA44jSSRujjH+sZ3djwRuAdrb1m8hdrIsSZKkfVi2aSdPrdoOwIDyMl5pV7iiMnF48RRGyGVLEDHGHcDnu7DfdSQTq0qSJKlAtOoKN3cMwwbaFa6YjBxcyYCKMmrrG6nZW8+OvfUMrcppOtFnCjPq/nFBpuBBk/0AQgi3t7PvfrkJSZIkqXBkV4WzK1zxCSEwflgVKzYnRRHWb9/D0LFDU46qZ/ImCcpUZDsks/hUjLEuxyHsR/vJzSs72N/ucpIkSRlLN+7k6dWZrnAVZbzyALvCFaPx1QObk6B12/eyn0nQvoUQZgKnAffHGJ9rs+0c4AfAmMyqLSGES2KMv85ReDNzdB1JkqSi9KcnWgoinDxnLNV2hStK44e1FEdYX1O444Jy2RJ0MfAftGltCSHsD/yKpNraMmAXMA+4MYSwOMb4aH8HFmNc1t/XkCRJKlYxRn736Krm5dceZle4YjVuWEuB5HXbCzcJyuU8QScCj8YYl7dZ/1GSBOi7McaZMcaDgPOBcuBDOYxPkiRJPfDkqm28sCGZ8WTIgHLOOHBCyhGpv2S3BK3bvjfFSHonl0nQTOCf7aw/C6gFPt20Isb4O+B+4KTchCZJkqSe+t0jLa1AZx08kUEDylOMRv1pfJG0BOWyO9xYkrmBmoUQRgPTgftijDVt9n8UeE8uAgsh1PbgsBhjdMJUSZJU0uoaGrn18ZbxQG84cnKK0ai/ja/OGhNUwC1BuUyC6oBxbdYdm3l+uJ39d/RvOK1UkMS3urMdJUmS1OL+xRvZtDP5Pnn8sCqO2290yhGpP2WPCbIwQtc8B5wVQiiLMTZm1p1NUmr6wXb2nwSsaWd9f6gHKoEtwI+AG2OMW3N0bUmSpIKVXRDh3MMnU14WUoxG/W1cmzFBMUZCKLx7nssxQb8FpgK3hBDOCSF8HLiIpMXnr+3sfwLwfI5imwJ8EhgEfBtYHUL4eQjhtBxdX5IkqeDU7Knj9qfXNi+fe4Rd4YpddVUFgyqTMV+76xqo2VufckQ9k8sk6CrgSeA1wO+BrwIDgM/FGHdm7xhCOAqYDfxfLgKLMa6PMX41xngAcDLwa+Bc4I4QwpIQwmdCCFNyEYskSVKh+MtTa9lbn3TwmTehmgMmDks5IvW3EEKr4gjrC7Q4Qs6SoBjjLpLWnctJWn5+AZwbY/x6O7sfCdwC/DFX8TWJMd4fY3w3MBG4BNgEfB54MYTw5xDCrFzHJEmSlI9ufnhF82sLIpSOtl3iClEuxwQRY9xBklB0tt91wHUhhLH9H1WHMdQA1wLXhhBOBG4iKed9ELAkrbgkSZLywfPrd/CvpVsAqCgLvP4IO82UitZzBdkS1GdCCGeFEH4DtJ1YNddxnBxC+ClJy9VkkuRnaZoxSZIk5YNfZ7UCveKAcYytduaQUjG+OnuuIFuCeiWEMA34N+DdJIUKArAxhTgmZmK4EJgF7CEp6vCjGOO9uY5HkiQp39TWN/K7R1Y2L7/l6GkpRqNcsyWol0IIlSGEN4UQbgNeAP4fSWnsvwDnZV7nIo7yEMLrQwh/ApYBXwS2AR8EJsYYL+jrBCiEMCWE8OMQwuoQwt4QwtIQwlUhhJHdOMfpIYSvhxDuDCFsCiHEEML9XTjuwBDCr0MI60MIe0IIi0IIV4YQBvXuXUmSpFJw17Pr2LgjmRtowrCBnDw3tREMSkH2XEEbamwJ6rIQwoHAe4B3AKNJWn2eBeYBP4kxvjfHIa0GxgCbgWtIWn2e7K+LZYorPEgyeewtJO/9GOAjJHMpnRBj3NSFU30QeB1Ja9XzwKguXPtY4C6SeZF+A6wAXg58FnhFCOEVMcbC/G2WJEk58ct/tXSFO/+oKc4NVGLGVRd+S1DOkqAQwhDgLSTJzzEkic9m4HvAT2OM/wohNO7jFP1pLFAHPAMcCHy9C5M+xRjjmT283jUkCdCHY4zfbloZQvgG8DGSlqj3d+E8XwE+Q5JETQVe3NfOIYRy4CfAYOB1McY/ZtaXkZQFf2Pm+l/u5vuRJEklYvXW3dz73Ibm5TcdNTXFaJSG7BLZ62pMgjqzBhgCNAB/An4K3BpjrMthDPtSCZzUjf1jTy6SaQU6g6TAwnfbbL4ceC/wzhDCpW3nT3pJADH+Peu8Xbn8KcABwN+aEqDMeRpDCP9BkgS9P4TwlRhjj96fJEkqbr9ZsJKmTwknzh7D1FGD0w1IOde2RHaMsaufRfNGLpOgoUAj8C3gGzHG1Tm8dmdm5vBap2Web48xtmr5ijHWhBAeIEmSjgPu7ONrvzzz/Ne2G2KML4QQngPmAvthGXBJktRGQ2PkV1ld4d58tK1ApWhoVQVDqyrYsbee2vpGtu2uY8TgAWmH1S25TIK+D7yVpLvVR0IId5G0Bv0+xrg7h3G8RIxxWXeP6cUcRvtnnp/rYPtikiRoLn2fBHXl2nMzj30mQSGEBR1smtez0CRJUr67c+E6Vm1NPraNGjKAMw4an3JESsu4YVXs2FAPJK1BhZYE5aw6XIzxEmAiSenpB4HTgRuAtZkqaaft6/h80QdzGA3PPG/rYHvT+hE9PH++XluSJBW4Gx5q+d74zUdPpaqiPMVolKbxBV4cIafV4WKMe4CfAT8LIcwGLgbeSTIvz7tIxtkcGEKYE2NcnMvY9iVf5jDKJzHG+e2tz7QQHZnjcCRJUj97YcMO7lucfPwpC/D2Y50bqJS1Ko5QgElQavMExRifjzF+kqSq2RtI5gZqBF4GPBtCuC+EcGFa8fXjHEZNrS3DO9jetH5rD8+fr9eWJEkFLLsV6OXzxjNlpAURSln2hKnrC3CuoFTmCcoWY2wA/gD8IYQwiaS73IXACSQJ0U9yGU8O5jBalHme28H2OZnnjsbtFOq1JUlSgdq5t57fLFjZvHzB8dNTjEb5ILtC3Hpbgnonxrg6xvjFGONs4JXAL3Nx3RDCkBDCv4UQ/g48CXyU5GfzPeDYGOOBfXi5uzPPZ2Tm58mOo5ok+dsFPNSH12xyV+b5rLYbQgj7kSRHy0haviRJkgD4w2OrqNmTDILfb8wQTpw9JuWIlLbW3eEKryUor5KgNo4mKaSQC2uA64D5JHMYnQdMjDF+KMb4r768UIxxCXA7MAP4YJvNV5LMpXRD9hxBIYR5IYS+qLp2L7AQODmEcE7W+ctIJl4F+L5zBEmSpCYxRn72YEtXuHccN52yssKaE0Z9b1x2YYQCnDA19e5w+zCPZHLPXMj1HEaXkFTI+1YI4RUkicmxJHMIPQd8ps3+CzPPrf7FCSGcSNJ1D5L3ADAnhHB90z4xxndnvW7IjLO6C/hNVpW7VwBHAQ8A3+zle5MkSUXkvsUbWbSuBoDBA8p54/wpKUekfDCuuqUlaL0tQQXr+0ANyRxGy0IIt4UQ3hZCGNQfF8u0Bh0FXE+S/FwKzAKuBo6LMW7q4qlmk1TVexfwxsy6cVnr3tXOtf9B0sp2C8l8RB8jKYjwOeD0GGPh/RZLkqR+84P7WnrJv+moqQwfVJliNMoXY7OSoA079lJoHYnyuSUoZ2KMl4QQPg68iaQU9ukkY5J2hBB+SzKfUV9fcwVJAYiu7Ntum3OM8XqSRKq7134GOL+7x0mSpNKycM32VmWxLzphZsoRKV8MqapgyIBydtY2UFvfyPbd9QwfXDgJsi1BGTHGPTHGn8UYTyEpEPA1YCfJ3EB3kDWHUXpRSpIk5c4P73ux+fVZB09g2mjLYqtF69agwhoXZBLUjnyfw0iSJKm/rdu+hz8+vqp5+eKT9ksxGuWj7OIIhTYuyCRoH2KMDTHGP8QYzwamA/8FvEhSxvqHqQYnSZLUj65/cCl1Dck4j6Omj+SIaSNTjkj5JrslqNAmTM3ZmKAQwu3dPKQv5+bptUzFuC8CX8xUdLso5ZAkSZL6Rc2eOm58qKUs9ntsBVI7WnWHMwnq0Ct7cExelpmIMd4J3Jl2HJIkSf3hZ39fxvbM5Kgzxwzh9APHpxyR8lHrlqDCGhOUyyQor8uJhBB+AJQD74sx1nWwzwDgWmBvjPH9uYxPkiQpF3bV1vOj+1sKIlxy6izKnRxV7RhnS1DnYozLOt8rHSGEc0m6t723owQIIMZYG0L4G/DDEML/xhj/mKsYJUmScuEX/1jO5p21AEwZOYhzj5icckTKV44JKnxvBdbRtTl3fgp8AXgnYBIkSZKKxp66Bq79W8vkqB84dRaV5dbRUvtmjxvKB06dxdihVew3dkja4XRLTpOgPO5ydixwZ4yxobMdY4yNIYQ7gZP7PyxJkqTcufnhFc3dmsYPq+K8+VNSjkj5bMrIwXzyrHlph9EjOUvts7qcPdBZlzPgb8DFIYRzchTeBGB5N/ZfCThCUJIkFY3a+ka+d8+S5uX3nTyLqoryFCOS+k8u2ze72+VsLUmXs1yoBao63avFAKDDRE6SJKnQ3LxgBau3JRW+xgwdwFuPmZZyRFL/yWUS1K0uZyQlqI/u96gSq4BDu7H/ISStQZIkSQVvT10D377z+ebli0/aj0EDbAVS8cplEpTPXc7uBU4NIczqbMfMPqdljpEkSSp4N/5jOWu3J61AY6uruOD4GekGJPWzXCZB+dzl7LskBRtuDiGM62inEMJY4GaSn9s1OYpNkiSp3+zcW881d7e0An3otNm2Aqno5bI6XN52OYsxPhlC+Arwn8DTIYRrgbuyrj8ZeAXwXmAM8KUY45O5iE2SJKk/Xf/gUjZl5gWaPGIQbzlmasoRSf0vl0nQvcBFIYRZMcYl+9oxq8vZj3ISGRBj/HQIoRb4NPCpzKNVWEA9cGWM8cpcxSVJktRftu2u49p7Wz6WffgVs60Ip5KQy+5wed/lLMZ4BbA/8EXgHuDZzOMe4PPA/iZAkiSpWPzovhfYvqcegBmjB/OGI50XSKUhZy1BaXQ5CyGcAlwAzCNJwNaQzEF0Y4xxfQdxvgh8tjfXlSRJynfra/bww/tfbF7+2OlzqSzP5ffjUnpy2R0up13OQgifAz7TzqZzgCtCCJfGGH/Ym2tIkiQVqqvuWMyu2mTmkv3HV3P2oZNSjkjKnZwmQZB0OQsh/BS4EDiBpHQ2JJOj3g9cn2mN6bEQwmnA/wMiSWLVVjVwbQghxBh/0JtrSZIkFZrF62r45T9bZi751KvnUV7W3kcmqTj1SRLU3W5nOehy9oGs19cCP8zENBl4LfBRYCjwzRDCX2OMK/oxFkmSpLzy5b88S2NMXp84ewynzB2bbkBSjvU6CcrTbmfHkbQC3RRjzE6IVgP/CiHcTNLqNBR4P+3HL0mSVHQeXLKRO59NvqMOIWkFCsFWIJWWXo1+y+p2Bkm3s7aPpm5nF/fmOj3QVH3uF+1tzBRc+DJJjOfkKihJkqQ0NTZG/vt/FzYvv+GIKRw0aXiKEUnp6G0JkLbdzo4GpgDHAl8AdpAkGt8MIeRy5q0Bmefl+9jnd5nneSGEgf0cjyRJUupueXwVT63aDkBVRRmXnTk35YikdPQ2CWrV7SzGuCDGuDrG+K8Y42dJCh/UAINIup3lWuM+tjUVXygjKcktSZJUtHburefLf3m2efnfTpzJxOGDUoxISk9vk6CC7XYWY6zNWhyaWiCSJEk58J27n2fd9r0AjBlaxQdOnZVyRFJ6epsE5Xu3s66O8nNmMEmSVLRe3LiTH93XMgPJp141j+qBlSlGJKWrr+YJ6k63s5V9dM2ueDiE8AzwKPBY5vnxGOOOHMYgSZKUqs//6RlqG5KPa0dMG8Hrj5icckRSuvp9stQYY21W2cVcdjsLQBVweObRHFII4QWSpKiJHWIlSVJRuuvZddyVVRL7ynMOosyJUVXi+ioJyrduZ+8Ejsg8DgNGZW0LwGxgFklRB4B/hhBWAE9kHo9nnp+LMUYkSZIK0N76Bj536zPNy28+aiqHThmRXkBSnuirJCivup3FGG8EbmxaDiFMI2kNOiLreVqbw6YBU4HXZK3bk3lfj8cY39OPIUuSJPW5H93/Iks37QJg2MAKPnHm/ilHJOWHvkiC8r7bWYxxOUnxhj82rQshjOSlidH+tP6ZDALmA0cCJkGSJKlgrNyyi2/f+Xzz8sdPn8vooVUpRiTlj94mQQXb7SzGuAW4O/NIAg6hCjiE1onRIcDgXMYmSZLUGzFGLr/laXbXNQAwb0I17zhuespRSfmjV0lQsXU7izHuBR7OPAAISVUHp1OWJEkF47an13FnVjGEL77+ECrKnRFEatKn1eGKsdtZpoVqUdpxSJIkdcWOvfVc8cenm5ffesw05k8fmWJEUv7JRYlsu51JkiTlyDduf4612/cAMGboAD555ryUI5LyT78nQe2x25kkSVLfe2rVNq5/8MXm5f/3mgMZPrgyxYik/JRKEtSennY7izHawVWSJJW8hsbIp3//JI2ZUlMnzh7D6w6flG5QUp4ygZAkSSoCP39oGU+s3AbAgIoyPn/uwSQdbSS1ZRIkSZJU4NZt38NXb2vpUHPJqbOYOWZIihFJ+c0kSJIkqcBd8cen2bG3HoD9xgzhA6fOSjkiKb+ZBEmSJBWwvzy5hr88tbZ5+QvnHkxVRXmKEUn5zyRIkiSpQG3bVcd/3dIyJ9CbjprCy2aPSTEiqTCYBEmSJBWoz//5GTbu2AvAuOoqPvOaA1OOSCoMJkGSJEkF6G/PbeA3C1Y2L3/+3IMZPsg5gaSuMAmSJEkqMDv31vOp3z3ZvPyaQydy5kETUoxIKiwmQZIkSQXmq7ctYtXW3QCMGFzJFa89KOWIpMJiEiRJklRAHl66mZ/+fWnz8mfPPpCx1VXpBSQVIJMgSZKkArGnroFP/vYJYkyWT91/LK8/YnK6QUkFyCRIkiSpQHz7rsUs2bATgCEDyvni6w8hhJByVFLhMQmSJEkqAE+v3sb3732hefk/XzWPySMGpRiRVLhMgiRJkvJcfUMj//GbJ2hoTPrBHTNjFG8/dnrKUUmFyyRIkiQpz137txd4evV2AKoqyvjyGw+hrMxucFJPmQRJkiTlsUVra7j6jsXNyx995Vz2Gzs0xYikwmcSJEmSlKfqGhq57ObHqW1oBOCwKcO5+KSZKUclFT6TIEmSpDx17b1LeHLVNgAGlJfxtfMPo6Lcj29Sb/lXJEmSlIeeXbudq+9s6Qb3sdPnMmd8dYoRScXDJEiSJCnPNHWDq2tIqsEdNnWE3eCkPmQSJEmSlGe+f88SnlqVVIMbUFHG188/1G5wUh/yr0mSJCmPLFyznW/d1dIN7tLT5zJ7nN3gpL5kEiRJkpQn2naDO2LaCN5z0n4pRyUVH5MgSZKkPHHN3UtaTYr6tfMPo9xJUaU+ZxIkSZKUB55evY1vZ3WDu+yM/ZnlpKhSvzAJkiRJSlltfSOX3fwE9Y1JN7j500dy0YlWg5P6i0mQJElSyr579/MsXNPSDe6r5x1qNzipH5kESZIkpeipVdv47t3PNy9/4sz92c9ucFK/MgmSJElKSdIN7vHmbnBHTR/JhSfYDU7qbyZBKQkhTAkh/DiEsDqEsDeEsDSEcFUIYWQ3zzMqc9zSzHlWZ847pYP9l4YQYgePtX3z7iRJUld8567FPLu2BoCBlWV81WpwUk5UpB1AKQohzAIeBMYBtwDPAscAHwHOCiGcEGPc1IXzjM6cZy5wF/BLYB5wIfCaEMLxMcYX2jl0G3BVO+t3dP/dSJKknnhy5Ta+e8+S5uX/OHMeM8cMSTEiqXSYBKXjGpIE6MMxxm83rQwhfAP4GPBF4P1dOM9/kyRA34gxXpp1ng8DV2euc1Y7x22NMV7R4+glSVKv7K1v4LKbH6ch0w3umBmjePfLZqQblFRC7A6XY5lWoDOApcB322y+HNgJvDOEsM+vgkIIQ4F3Zva/os3m7wDLgDNDCE4zLUlSnvn2nc+zaF3SDW5QZTn/c96hlNkNTsoZW4Jy77TM8+0xxsbsDTHGmhDCAyRJ0nHAnfs4z3HAoMx5atqcpzGEcBvw3sz12naJqwohvAOYRpJEPQH8LcbY0NU3EUJY0MGmeV09hyRJpeiJlVv53r0t3eA+edb+zLAbnJRTJkG5t3/m+bkOti8mSYLmsu8kqCvnIXOetiYAN7RZ92II4cIY4737uKYkSeqFtt3gjp05iguOn5FuUFIJMgnKveGZ520dbG9aP6KfzvMT4D7gaaAG2A/4EEmr0V8yxRQe7+TaxBjnt7c+00J0ZGfHS5JUiq6+YzHPrUvqEA0eUM5XzzvMbnBSCkyCSkyM8co2q54C3h9C2AFcSjK+6PW5jkuSpGL3+IqtfD+rG9x/vmoe00YPTjEiqXRZGCH3mlpohnewvWn91hydp8n3M88nd3F/SZLURXvqGrj05sfJ9ILjuP1G8Y5jp6cblFTCTIJyb1Hmub2xOgBzMs8djfXp6/M02ZB5dmSmJEl97Ko7FvP8ervBSfnCJCj37s48nxFCaPXzDyFUAycAu4CHOjnPQ8Bu4ITMcdnnKSMprpB9vc4cl3lub3JVSZLUQ48u38J1f2vpBvepVx/A1FF2g5PSZBKUYzHGJcDtwAzgg202X0nSEnNDjHFn08oQwrwQQqvS0zHGHSQV3obw0nmCPpQ5/20xxuakJoRwQHvzD4UQZpDMLQTw8+6+J0mS1L49dUk1uKZucC+bNZq3HzMt3aAkWRghJZcADwLfCiG8AlgIHEsyp89zwGfa7L8w89y23fzTwKnAx0MIhwP/BA4AXges56VJ1puBS0MIfyOZTLUGmAW8BhgI/C/wtd69NUmS1OSb//ccSzYk32sOGVDOV97opKhSPjAJSkGMcUkI4Sjgc8BZwKuBNcDVwJUxxi1dPM+mEMLxwOXAucBJwCaSMtifjTGubHPI3STzCx1B0u1uCEnhhPtJWpVuiDHGXr05SZIEwIJlW/jBfS29zD/9GrvBSfnCJCglMcYVwIVd3LfDr4xijJuBj2QenZ3nXsDJUCVJ6md76hr4RFY3uBNnj+FtdoOT8oZjgiRJkvrY129fxAsbk25wQ6sq+PIbDyEEu8FJ+cIkSJIkqQ8tWLaZH97/YvPyZ15zAFNG2g1OyicmQZIkSX1kd20Dl938BE0jbE+aM4a3HD013aAkvYRJkCRJUh/52u2LeLFVN7hD7QYn5SGTIEmSpD7w0Aub+PEDLd3g/uvsA5g8YlCKEUnqiEmQJElSL+3YW89lNz/e3A3ulLljedNRdoOT8pVJkCRJUi99/tZnWLllNwDDB1XyP+fZDU7KZyZBkiRJvXDb02v51cMrmpc/97qDGD9sYIoRSeqMSZAkSVIPra/Zw6d+92Tz8tmHTuScwyalGJGkrjAJkiRJ6oEYI//xmyfYvLMWgAnDBvLFc50UVSoEJkGSJEk98PN/LOeeRRual7/+psMYPrgyxYgkdZVJkCRJUjct2bCDL/75meblfztxJifMHpNiRJK6wyRIkiSpG+oaGvnYrx5jT10jAPuPr+YTZ+6fclSSusMkSJIkqRu++X/P8cTKbQAMKC/jm28+nIGV5SlHJak7TIIkSZK66MHnN/K9e5c0L196xlwOnDQsxYgk9YRJkCRJUhdsqNnLR371GDEmyyfOHsPFJ+2XblCSesQkSJIkqRONjZGP//oxNtTsBWD0kAF8402HUVZmOWypEJkESZIkdeL7f1vCfYs3Ni9/882HM27YwBQjktQbJkGSJEn7sGDZZr5++3PNyx84dRYnzx2bYkSSesskSJIkqQNbd9Xy4Zseo6ExGQg0f/pIPn763JSjktRbJkGSJEntaGyMfPRXj7Fq624Ahg+q5FtvPYLKcj8+SYXOv2JJkqR2fOuuxdyzaEPz8tfOP4zJIwalGJGkvmISJEmS1Mbdi9Zz9Z2Lm5c/cOosTj9wfIoRSepLJkGSJElZVmzexUd/2TIf0AmzR3Op44CkomISJEmSlLFtVx3vvWEB23bXATBx+EC+9ZYjqHAckFRU/IuWJEkCGhoj//7LR1m4ZjsAleWBa95+JKOHVqUcmaS+ZhIkSZIEXH3Hc/ztuZZCCF96w6EcMW1kihFJ6i8mQZIkqeTdvWg937rr+eblD542i/PmT0kxIkn9ySRIkiSVtPXb93Dprx9vXj5x9hg+fvr+KUYkqb+ZBEmSpJJV19DIpTc/zuadtQCMH1bF1W85nPKykHJkkvqTSZAkSSpJjY2RT9z8OPct3ti87ptvOtxCCFIJMAmSJEklJ8bIlbc+zR8eW9287kOnzeZls8ekGJWkXKlIOwBJkqRcqmto5HO3PsMNDy1rXve2Y6dx6RlOiCqVCpMgSZJUMmKM/Odvn+S3j6xsXnf2oRP5/OsOJgTHAUmlwu5wkiSpZFz/4NJWCdBrDpnIN95kIQSp1NgSJEmSSsKDSzbyhT8vbF4+f/4U/ue8Q20BkkqQLUGSJKnordi8iw/e+AgNjRGAw6eO4PPn2gVOKlUmQZIkqajtrm3gfTcsYMuuOgDGVlfx/XfMZ2BlecqRSUqLSZAkSSpa9Q2NXHbz4zyzZjsAleWB77/jSCYMH5hyZJLS5JggSZJUlFZs3sW/3/Qoj63Y2rzuc687mPnTR6UXlKS8YBIkSZKKSoyR3yxYyZf/8iybdtY2r3/ncdN56zHTUoxMUr4wCZIkSUVj2+46/v2mR/nbcxtarX/DkZP53OsOSikqSfnGJEiSJBWFzTtrOeuqv7G+Zm/zuuqqCj7yyjn824kzrQQnqZlJkCRJKniNjZF/v+mRVgnQ6w6fxJfecAiDB/hxR1Jr/qsgSZIK3lf++iwPPL+pefnMg8Zz9VuOSDEiSfnMJEiSJBWsGCNX37mYa//2QvO6Vx8ygW+ZAEnaB5MgSZJUsK6+czFX3bG4efkV88bx7bceSXmZ438kdcwkSJIkFZzGxsh37n6+VQI0tKqCr55/mAmQpE6ZBEmSpIKwp66BR5Zt4dYnVnPnwvWtiiAA/N/HT2bUkAEpRSepkJgESZKkvLdg2Rbe9oOH2Fvf2O72Wz54AhOHD8pxVJIKlUmQJEnKa7c+vpp/v+nRl6wfVFnOBcdP5yOvnGMZbEnd4r8YkiQpbz29ehsf//Vjrda98oBxXHD8DI6fNZrK8rJ0ApNU0EyCJElSXnp69Tbe+aN/UtcQm9d99bxDOf+oqSlGJakYmARJkqS8c9/iDbz7J/+iobElAfrRu47iFQeMTzEqScXCJEiSJOWVWx5bxUd++Vjz8oCKMm646BiO3W90ekFJKiomQZIkKRWNjZGNO/eyZusenl+/g189vIJ/vrj5Jfv9+F1HmwBJ6lMmQZIkKeeeWLmVD9/0KEs37epwn+GDKvn2W4/gxDljchiZpFJgEiRJknJmy85aLrz+Xzy2Yus+9ztw4jB+/O6jmTB8YG4Ck1RSTIIkSVJOPLx0M+d9/+/tbps5ZgiDKssBeO/J+/HqQyYyoMLy15L6h0mQJEnqd/csWs8Hb3yk1bp5E6r5r7MP5ICJwxg1ZEBKkUkqRSZBkiSp3zQ0Rr7w52f4yQNLW61/27HTuPKcg5zsVFIqTIIkSVKf2lvfwA1/X8Y/X9zMHQvXkTXVDxOHD+QHFxzFwZOHpxegpJJnEiRJkrqtsTGyZMMOHl2xlSdWbqVmTz176xrZW9/A3Ys2tHvMxOED+fl7jmXW2KE5jlaSWjMJkiRJXbZpx15++uBSrrvvBfbUNXb5uNcdPon/Oe9QqirK+zE6SeoakyBJktSpzTtrufZvS7j23he6ddz7Tt6P958yi5EWPpCUR0yCJElSu2KMPL5yGz/7+1L+9Pgaahte2vIzeEA5bzhyMkdOG8mgynIGVJQxpKqCCcMGMn30YEIIKUQuSftmEpSSEMIU4HPAWcBoYA3wB+DKGOOWbpxnFPBZ4FxgIrAJ+Cvw2Rjjyv68tiSp+NQ1NPKvFzdz57PrufvZ9bywcedL9hlaVcEnztyfcw+fzLBBFSY6kgqOSVAKQgizgAeBccAtwLPAMcBHgLNCCCfEGDd14TyjM+eZC9wF/BKYB1wIvCaEcHyM8YU2x/TJtSVJhWtvfQObd9aysaaWNdt2s2LLbp5ZvZ2lm3ayYFnH34UdNnUEJ88Zw0UnzLR7m6SCZhKUjmtIkpAPxxi/3bQyhPAN4GPAF4H3d+E8/02SAH0jxnhp1nk+DFyduc5Z/XRtSVIe27qrlmWbdrFs8y6Wb9qZ9XoXa7fv6fJ5hgwo51WHTOQdx03n8Kkj+i9gScqhEGPsfC/1mUxLzPPAUmBWjLExa1s1Sde0AIyLMb60D0LLvkOB9UAjMDHGWJO1rQx4AZieucYLfXntTt7fgiOPPPLIBQsW9ORwSVIXNDZGavbWs21XHau27mb55tZJzrJNO9m+p77H5x8yoJyDJw/nzIMmcN5RUxg2sLIPo5ekvjF//nweeeSRR2KM87t7rC1BuXda5vn27CQEIMZYE0J4ADgDOA64cx/nOQ4YlDlPTfaGGGNjCOE24L2Z6zV1ieura+eVhsbIYyu27nOfzrqrd9abvbP+7p0f39n1Ozl/L7rb9/e1+/38+97chZ9NxzsUwu9F9j4hJNcM2cuZfULLQa2OC7Qc07IuOaCzfV5y7TbXeskxJTIuJMZIbUMjtfXJIwLlIVBWFigvC5SHQGOM1DdGGhoj9Q2N1DdG6hsi9Y2NNDRG6hqSbXXNy8nz7toGtu2ua35s3VXH1qblXbXNr7fvrms1AWl3lQUYM7SK0UOrGFtdxZSRg5g2ajBzxw9l1tihTB89pM9+XpKUj0yCcm//zPNzHWxfTJKIzGXfiUhXzkPmPH19bUIIHTX1zFuzZk3zh6HLL7+cK664otUOl156Kd/4xjcA+NrXvsall17aavt73/tefvCDHwBw7bXX8t73vrfV9re97W3cdNNNANx4442c88Y38cbvPdi8ff1vrmT3kn8BMPaN/8Xg2ce2On7tL/6TvSueAmD8W/+bgdMObbV9zfUfoXbdEgAmvOsqqibMbrV91XXvpX7LagAmXXwtlaMmt9q+8rsX0LBjMwCTL/kpFdWjW21f/s3zibW7AZj60V9TVjW41fZlXzm7+fX0T/6p1bbGvbtYcdWbAAgDBjHtYze32l5fs4lV17wLgPKho5jywZ+12l63eRWrf/A+ACpGTmLye69rtX3v2udZ+9OPAjBg/CwmvvvqVtv3LH+CdTd9GoCqqQcz4W1fbrV91/P/YMNvPw/AoFlHM+68y1tt3/nMPWy89WsADD7gFMae84lW22se+yubb/sOAEMPO5PRZ/17q+3b//k7ttz9YwCqjz6XUS9/T6vtW++/kW0PJL8bw094KyNOfHur7Zvv+iE1//oDACNPu4hhx7yh1fZNf/02Ox6/DYBRZ36I6sNb9ybd8MevsmvhvQCMee1lDDnw1Fbb/d1r+d2b9qHkd68pUarbvIrl1yZ/y5WjJjHzAz9slXDtWbuYpT/8MAADJ85m9sXfySR0iZ1Ln+CFn/4HAENmHMrci76WlYAFtj77d5bc+FkARux/HHMv+DyBQFmAoQMr2P7UPfzjx1cAcOBJr+LMD/43uzIJx/Y9dSy65/cs+f03gda/e00xbvtH4f3uDawsY/qoIUwbPZg7vnoJS59Ktt/0h//ljWefSWV5WfPxmW9TAXj44YeZPrr1l6pz585l8eLkv5VFixYxd+7cVtsnTZrEmjVrAFi1ahWTJk1qtb26upodO3YAsH37dqqrq1ttz06g2/ZQqampYdiwYQAMHTqUmppW3/uxevVqJk9O/hYmTpzI6tWrW21/7rnn2H//5L+/OXPm8Nxzrf8LXLBgAUcddRQARx55JG17Mtxzzz2cdlryHeIpp5zCPffc02r7rbfeyjnnnAPA2Wefza233tpq+y9+8Qve/vbk9+Gtb30rv/jFL1ptv+6663jf+5J/ly+++GKuu671v8tf//rXueyyywD4+Mc/zte//vVW26+44gquvPJKIDf/577tbW9rtf21r30tf/pT8u/FH//4R1772te22n7qqady773J7+7dd9/Nqaee2mp729+9+fP93Wvi717nv3tNvzs9YRKUe8Mzz9s62N60fkQ/nKevri1J+9TcSpH5UFGf1WwRI+ytb11qeW/WpJtNXb2y7altWa5vaGTzztpW23ftqWs5V30D67bvbdm4DXZu2NG8uHTjLn736KpWx9fsqqM9+dxjfGhVBcMHVTKmuoonhg1kaWb9J8+axzve9ArGVVc1f8A79ceDm7dPGD6oVQIkSaXIJEg90lHfy0wL0ZG5jKUswBHTRjQv/31QJbszr/cbO4QJbQby3l9VQdPHo9ljhzK6zfatA8pp+ng1d/xQRkwZ3mr7xooymj6OzZswlCHjWm9fWxZoyLw+cNIwqoa13r4y0Lz9oEnDKR84qNX2ZVmvD548rNWHsPo9FazIet8HTWq9fc/gWpo+2lWUBQ6YOKzVuXeWb6Ppe6oBFWXMm9D6G7FtdYNZm3k9sLL8Jds37xjMuszrwQMq2H986+3rNw5iQ+b1kKoK5o4f2mr7mpUD2Zh5PWxgBXPGtd6+srqKzZnXwwdVMrvN9mVDq2iqWzVy8ABmjW3dZeeFwQOaM/mRgwcws832xkGVNH2PN2pIFdPGtN5eO7CCpo/KY4YOYFKb7burytnVvL2K8aNbt6TUDChv/t0bV13F6Dbbt1aWN//ujaseyIhRrbdvqihr/t2bMKyKISMHtbq/68pC8+/emKFVDBxWRYzQtMvqrN+tkYMHUDlkADFGIsmH+UDLvkOrKiivqshsi7T9rF9VUdayLkJDeeuubmWB5vOWosrywIDyMgZUlBFCYHdFefO28rLAoMpyKsoCFeWB8rIyaqsqmn/3Rg+tYtaEairKAxVlZVSUBR6trmr+3Tti6ghOOmEGwwdVMmJQJcMHV/Kdp0Zx18Jk+xfOPZiL3vWqVonMa/86nKWPJq/njq9m/LCB/f9DkKQCZmGEHAshfBW4DLgsxvj1drZ/B/ggcEmM8Xv7OM8Hge8A34kx/ns72y8Dvgr8T4zxk3157U7en4URpBIVY2yVlGUnYACR2PK6zbp2j+nCPrFlp3av1dAYqdlTz9ZdtWzZVceWXbVEYFBlOYMqyxk2KGlNGT6okmEDK6keWEF5WWgVIy2hAEkyWVZWGuOfJCmfWRihsCzKPM/tYPuczHNH43Z6c56+urYkvUQIrYspdF4aIr+VSJ0HSSpJdgrOvbszz2dkSlk3y5SpPgHYBTzUyXkeAnYDJ2SOyz5PGUmBg+zr9eW1JUmSpIJlEpRjMcYlwO3ADJKuZ9muBIYAN2TP0xNCmBdCmNfmPDuAGzL7X9HmPB/KnP+2pjmCenptSZIkqdjYHS4dlwAPAt8KIbwCWAgcSzKPz3PAZ9rsnxkO+5K+JZ8GTgU+HkI4HPgncADwOpKJVNsmOj25tiRJklRUbAlKQaZF5ijgepIE5FJgFnA1cFyMcVMXz7MJOB74FjA7c55jgZ8A8zPX6ZdrS5IkSYXKlqCUxBhXABd2cd8Oh+fGGDcDH8k8+vzakiRJUrGxJUiSJElSSTEJkiRJklRSTIIkSZIklRSTIEmSJEklxSRIkiRJUkkxCZIkSZJUUkyCJEmSJJUUkyBJkiRJJcUkSJIkSVJJMQmSJEmSVFJMgiRJkiSVlBBjTDsGFZEQwqZBgwaNOuCAA9IORZIkSUVs4cKF7N69e3OMcXR3jzUJUp8KIbwIDAOWZq0uA8YD64DGdg7raHt31s/LPD/bqzfQNzp7v7k8X3eO7cq++9qnJ9u8l/1znPfypQrxXvb2Pna23XvZu/N5L3unr+9jb86ZL/eyu+uL9V5253wzgO0xxpndvkqM0YePfn0Ak4AITOrO9u6sBxYAC9J+r115v7k8X3eO7cq++9qnJ9u8l/1znPeyOO5lb++j99J7mc/3sq/vYzHcyx6sL8p72R+/G+09HBMkSZIkqaSYBEmSJEkqKSZByoUa4MrMc3e2d3d9vujr+Hpzvu4c25V997VPT7Z5L/vnOO/lSxXiveztfexsu/eyd+fzXvZOf8RW6PeyEO8j5M/fZLdYGEFFIYSwACDGOD/tWNQ73svi4b0sHt7L4uG9LB7ey96xJUiSJElSSbElSJIkSVJJsSVIkiRJUkkxCZIkSZJUUkyCJEmSJJUUkyBJkiRJJcUkSJIkSVJJMQmSJEmSVFJMgqR2hBA+FUKIIYTvpB2Lui+E8MEQwhMhhO2Zx99DCK9JOy51X+Zv8V+Z+7ghhHBrCOHgtONS94QQTg4h/DGEsCrzb+u7045JnQshXBJCeDGEsCeEsCCEcFLaMan7/Ptrn0mQ1EYI4TjgvcATaceiHlsJfBI4EjgKuAv4Qwjh0FSjUk+cClwDvAx4OVAP3BFCGJVmUOq2ocBTwEeA3SnHoi4IIbwZuBr4b+AI4EHgLyGEaakGpp7w768dTpYqZQkhDAceAd4DXA48FWP8ULpRqS+EEDYDn4oxXpt2LOq5EMJQYBtwbozx1rTjUfeFEHYAH4oxXp92LOpYCOEfwBMxxouz1i0GfhNj/FR6kak3/PtrYUuQUhNCOC+E8O0Qwn2Zri4xhPDzTo6ZEkL4cQhhdQhhbwhhaQjhqhDCyD4K6zqSf+Dv7qPzlYQ8vZdN1ykPIbyF5JuwB/vy3MUon+9lRjXJ/11b+uHcRaMA7qN6qT/vcQhhADAfuL3NKW4naZVVH/LvNR0VaQegkvb/gMOAHSTdl+bta+cQwiySD7HjgFuAZ4FjSJp3zwohnBBj3NTTYEIIFwOzgXf09BwlLK/uZeYahwB/BwZm4np9jPHJ3pyzROTdvWzjauAxknurjuX7fVTv9ec9HgOUA+vanGYd8Mq+egNq5t9rGmKMPnyk8gBOA+YAgaTffwR+vo/9b8vs8+9t1n8js/77bdZ/IbN+X49TM/vuD2wA9s86/h7gO2n/nArhkU/3MuuYASRJ7XzgS8BG4OC0f1b5/sjHe9nmnKuB/dL+OeX7I8/v4w7g3Wn/jAr90Z/3GJiUWXdym30/CyxK+70X26O//17b7OPfX+bhmCDlhRDCqcDdwI0xxpe0xGS+9XgeWArMijE2Zm2rBtaQ/OMxLsa4M7N+DMm3WfuyPMa4K1Mp5SdAQ9a2cpJ/TBqBITHGvT15b6Um7Xu5j7juAJbFGP+tO++nlOXTvQwhfBN4C3BajPHZHr6lkpRP9zFzrGMS+lhf3+NMd7hdwFtjjDdn7ftdki+TTum/d1Pa+uPvtc3x/v1l2B1OheK0zPPt2X/wADHGmhDCA8AZwHHAnZn1G0m+/e+KPwAPt1n3E2AxSWWc2p6FrXb0973sSBlQ1ctzqLWc3MsQwtXAmzEB6i9p/U0qd7p1j2OMtSGEBcDpwM1Zu58O/DYXAatD3f57VfssjKBCsX/m+bkOti/OPM/tycljjFtjjE9lP4CdwObMsk2mfadf7yVACOHLIYSTQggzQgiHhBC+RNLF4MaenlPtysW9/C5wIfA2YEsIYULmMbSn59RL5OI+Dg0hHB5COJzks8e0zLLllnOjJ/f4G8C7QwjvCSEckPkyYhLw/X6KUV3T7Xvp31/7TIJUKIZnnrd1sL1p/Yj+D0W9lIt7OQH4ObCI5Juwo4FXxRj/0otz6qVycS8vIakIdydJN4+mx2W9OKday8V9PAp4NPMYBFyZef25XpxTXdftexxj/BXwUZJB+48BJwKvjjEu65cI1VU9+Xv1768ddoeTOhBjPDXtGNQzMcZ3px2D+kaMMaQdg3ovxngPyTgFFZAY4zUkkxWrgPn31z5bglQomr7ZGN7B9qb1W/s/FPWS97J4eC+Lg/ex+HmPi4f3so+YBKlQLMo8d9QnfU7muaM+ssof3svi4b0sDt7H4uc9Lh7eyz5iEqRCcXfm+YwQQqvf20xJyBNIynk+lOvA1G3ey+LhvSwO3sfi5z0uHt7LPmISpIIQY1wC3A7MAD7YZvOVwBDghvZq4iu/eC+Lh/eyOHgfi5/3uHh4L/uOk6UqNSGEc4FzM4sTgDOBF4D7Mus2xhgvy9p/FvAgMA64BVgIHEtSM/854GUxxk25iF2teS+Lh/eyOHgfi5/3uHh4L9NhEqTUhBCuAC7fxy7LYowz2hwzlaSk41nAaJJSub8HrowxbumfSNUZ72Xx8F4WB+9j8fMeFw/vZTpMgiRJkiSVFMcESZIkSSopJkGSJEmSSopJkCRJkqSSYhIkSZIkqaSYBEmSJEkqKSZBkiRJkkqKSZAkSZKkkmISJEmSJKmkmARJkiRJKikmQZIkSZJKikmQJEmSpJJiEiRJkiSppJgESZIkSSopJkGSJEmSSopJkCQpp0II94cQYubxZJ7F81Ta8UiS+p9JkCQpZ0IIATgsa9VjKYUC5D6eEMKgEMLOrKTr/KxtM7LWZz9WhhB69P91COGTHZzza333riSp8JgESZJyaQ4wNGv5sZTiaJLreF4JDM68rgX+2oVjJgMv7+H1LujhcZJU1EyCJEm5dESb5cfSCCJLruN5bdbre2KMNV08rtvJTAjhKODA7h4nSaXAJEiSlEttk45HU4miRc6SoEzXu7OzVt3aySF1Wa/fEEIY0s1LZidOdR3uJUklyCRIkpRL2UnHihjj5tQiSWTHszrGuLEfr3U0MDFr+Y+d7H8PsDvzegjwxq5eKIRQCbw1a9X/dvVYSSoFJkGSpFzKTjoeSyuILLmMJ7sr3OMxxuWd7L8duCVr+Z3duNargTGZ1/XAL7pxrCQVPZMgSVJOhBAmA2OzVj2WUihAKvGck/W6s65wTX6W9frlmZi7Irsr3G3A+i4eJ0kloSLtACRJJaOgiiKEEAYBJwAHAMNIWmaeBu6PMdZ250IhhGnAoVmrOusK1+R2YB0wnuSLy3cAX+nkWiNpPfbohq5H2jUhhNEkP5spQDWwBng0xtjreZ9CCOXAfJLKfWNJugLWAEtJWtCW9fYakmQSJEnKlW4XRQghTCLpynVK1uo7gLfFGDf0cTyPZa45GbgSeBswqJ3jVocQLo0x/rIb18puBVoDPNyVg2KMDSGEXwAfy6x6J50kQcBbgAGZ19tIutQd1/VQIYTwbuAnWatOizHeE0KYDXwBeH3WNbKPewb4zxhjV1u6so+dDfw/4Fxg+D72ex64GfhejHFFd68jSWB3OElS7mQnHdtijC/ua+cQwhkkiUlTAtQIfB44sw8SoLbx7ACWhBAuBp4B/o32EyCAScBNIYSLunGt7CToTzHG2I1js7vEHRRCmN/J/tld4W6OMe7pxrU6FEJ4BUni+mbaSYAyDgT+GEL4bqYaXlfOG0IInwcWAu9iHwlQxmzgU8ClXQpcktphS5AkKVcOz3r9eEc7ZbpDXUnyQbfpy7pNwNtjjLf1UzxPAp8BPtdm3fOZ13OBg9oc/80Qwu9jjFv2dZEQQjWtW7K62hUOgBjjYyGEJ4FDMqsuABZ0cK25tG71+Vl7+/XAPOB/aJlYdhPwL2ArSVJ4HK0To0tIynJ/dF8nzdzrXwLntbN5EcnPfxtJd8Q5JPehS8mVJO2LLUGSpH4XQhgBzMxa9VgH+00E7iRJSJr+j/oHcGRfJkDtxDObJAGKwLXA9BjjoTHGN2QeBwOnk4zPaTIMeF0XLncWLQnCLpL3113ZycxbQggdfYmZ3Qr0InB/D67Vni+RjP2pAd4HTIwxvirG+NYY4ykkpb+/3+aYj4QQzuzkvJ+jdQIUgR8D+8UY58UYz44xvj3G+NoY4zySinfvIUnAJKnHTIIkSblweJvll4wHCiGcTuvubwDfBk7uQjnp3sYzlmROnnNijO9v73oxxjuA93dynvZkl8a+I8a4u8M9O3Yj0JB5PY4ksWol0/3sHVmrbuhmt7t9GQHsAV4TY7wuxthq8tUY4+YY4wdIWvCyfTeE0O5njRDC0SStfU3qgXfEGP+to66Smev8KMZ4DEliJkk9YhIkScqFDiuxhRDKM2NC/kryAR+SFoc3xxg/3N1KbD2MJ2au96dOjvvfzL5N9jl+JdPd69VZq7pdMAAgxriGpCBEkwva2e0UYHrWcl91hWvylRjjfZ3scyWtW2lm0U7ClvFpWndt+2KMscvzGcUY13W+lyS1zyRIkpQL2UlHHUnxgezub/+Plv+TngKOjjH+OkfxAFzXxYpmdSQtFk12dLL/CcDozOtID5OgjOyk5rWZLn3ZshOjB2OMS3pxrbZ2A1/vbKdMy9MX2qx+e9v9QgjjaN2VcB3w370JUJK6wyRIkpQL2UnHMzHG2g66v90AHBtjXJTDeOpJqs51xSSgMmt5VSf7Z3eF+2cvWy9+T9JCBjAQeFPThhDCYFqPrenrVqC/xBhrOt8t2ZdkTqUmx7ezzym0bgX6WT+1+ElSu0yCJEn9KoQwkKS6WJMn2+n+thd4f4zxghjjrhzHc1uMsbNkpskBbZY7S9ayS2P3phWIzFii32atemfW69eTFC6A5GfZ161oXS5EkBkvlF39b2ZmAtdsx7ZZ7qybnST1KZMgSVJ/O4TWUzK8kdbd314EXhZjvDaleO7oaMd2HN5meV+lvvcnKencpFulsTuQ3cJzQgihqcJddle4P3VWtrsHutu17vk2y+PaLE9os7ywm+eXpF4xCZIk9be242+yJyHdBBwVY3wkxXge6saxR2a93kaSwHUkuyvc0hjjk924TkfuAZoq1wXgghDCJOAVWfv0dVc4aN29rSu2tVke0WZ5dJvlrd08vyT1ikmQJKm/ZScdDSRjRpqMBj6b23BeEs8T3Tg2Owl6rJMS1H3WFa5J5no/z1r1TpKy2OWZ5Q20/vkWir4q5S1JXWISJEnqb4dnvV4EnA8syFr3kRDCx9KKp6tjkEIIQ4E5WateMtdR1r6jgJdlreqLrnBNslt6ZtF6rp1ftp3Dp48M6+b+bUuHb22zvLnN8ohunl+SesUkSJLUbzITZR6aterRGONO4GxgWdb6r4UQ3pBGPN04/HBa/7+5ry58r6GldWY7cG83rrNPmcp5/8xaNSLrdX90hYMk2eqO2W2W17dZXttmuW3BCUnqVyZBkqT+tD8wOGv5EYAY41qSSUS3ZtaXATeGEF5G/2o3ni46ss3yvhKo7K5wf+2H1pn2kp1nYowP9/F1mhzd1R1DCJXAYVmrXmynUMPf2yyf1NPAJKknTIIkSf2pbRGC5sQhxvgMSaW4pgRhIPDHEMIc+k+H8XRBdhK0B3i2vZ1CCAOAM7NW9WVXuCa/pOXn1uSGfrhOk1eFEKo73y3Zl9bd59omPJC0jDVmLV+QSZ4kKSdMgiRJ/WmfSUeM8S7gPVmrRgN/CSGMTSOeTmQnQU/GGOs72O9UWubsqacfChXEGDeRzLVzUtbjmr6+TpZBwKWd7RRCCCTlz7Pd2Ha/GOMG4A9ZqyYA/9mL+CSpW0yCJEn9KTvpeDHGuLXtDjHGnwFXZq2aBdwaQhjUdt9cxNOezASr2eNW9pU8ZZfGfiDG2LYIQJ+IMT4aY7w/69HdMtbd9ckQwomd7HM5rbvOvUAyKW57vkTrqnCfDSG8uavBhBDGd3VfSWrLJEiS1J+yk44Ox9/EGK+g9TiXY4FfZAoZ5DyedhxK6wlW93VsdhLUJ6Wx88BWku6K/xtCuLht17UQwsgQwjUkSVC2S2KMjbQjM37pv7NWVQA3hRCuCyHMaO+YEMKoEMJFIYR/0roqniR1S0Xnu0iS1H0hhGnAqKxVnXU9ew8wFTgts3wucBXw4ZTiydalogghhMOA6Vmr+mM8UBo+DXyVpJvfdcCXMonIVmAScDwwoM0xV8cYb+vkvJcD80jGhkEyAezFwMUhhIXA8yTV9YaRlCefS8sXuA/24v1IKnEmQZKk/tJ2/M0+W15ijHWZMtkPAAdmVv97CGFZjPHruY6njewkqAF4soP9sluBno0xLu7GNfLZQuANwO+AISRjt161j/2/B3Q691OMsSGE8CaSrnGX0bqHygFYOltSP7E7nCSpv3S7CEFmjM6raT2PzFdDCOenEU8Hxz4bY9zdwX7ZpbGLpSscADHG24H5wG95aWW6JguBc2KMl8QYYwf7tD1vY4zxk8AhwK+AnZ0csohkDNlXuhS4JLUjdPHfKEmStA8hhAnAapIuXQAnxRjvTzGkHgshvBv4Sdaq02KM92RtHwOcAEwh6SK3lmQi3Mf74NoDgJcBM4CxQCVJl7gXgcdjjCt7ew1JsjucJEl947W0JEAbaX9+nKIQY9wI3NJP564F7umPc0tSE7vDSZLUN7K7wv1vjLEhtUgkSftkS5AkSX3jPmBB5nVRjQeSpGJjEiRJUh+IMf5P2jFIkrrG7nCSJEmSSopJkCRJkqSSYhIkSZIkqaSYBEmSJEkqKU6WKkmSJKmk2BIkSZIkqaSYBEmSJEkqKSZBkiRJkkqKSZAkSZKkkmISJEmSJKmkmARJkiRJKikmQZIkSZJKikmQJEmSpJJiEiRJkiSppJgESZIkSSopJkGSJEmSSopJkCRJkqSSYhIkSZIkqaSYBEmSJEkqKSZBkiRJkkrK/wdbaEjEuqhCRwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 276, + "width": 416 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bf36ec47", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb new file mode 100644 index 00000000..f8a5defc --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 37, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "from multiprocessing.pool import Pool\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})\n", + "import seaborn as sns\n", + "sns.color_palette(\"colorblind\")\n", + "plt.style.use(\"MNRAS_Style\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f5a8a3bd", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':0,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "28f881e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter ranges\n", + "Omega_c_min, Omega_c_max = 0.2, 0.4\n", + "Omega_b_min, Omega_b_max = 0.035, 0.065\n", + "Omega_k_min, Omega_k_max = -0.05, 0.05\n", + "h_min, h_max = 0.5, 0.9\n", + "ns_min, ns_max = 0.9, 1.0\n", + "logAs_min, logAs_max = np.log10(5E-10), np.log10(5E-9)\n", + "w0_min, w0_max = -1.3, -0.7\n", + "wa_min, wa_max = -1.73, 1.28\n", + "m_nu_min, m_nu_max = 0., 1.0\n", + "zs = [0.0]#1.008916e+00]\n", + "zs = np.array(zs)\n", + "nuFlag=False\n", + "k = np.logspace(-3,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=0)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " #pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=zs,kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "25528d17", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z3.900000e-02):\n", + " continue\n", + " bolt_names = ['h','Omb','Omcb','ns','Y_p','Neff','smnu','As', 'TAGN']\n", + " \n", + " bolt_cosmo = [h,Omega_b,Omega_c+Omega_b,ns,0.24,3.046,m_nu,10**logAs, TAGN] #this is the choice of Planck TTTEEE in class for nu\n", + " cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + " cosmoall.append(cosmo_dict)\n", + " pool = Pool(24)\n", + " resultall = pool.map(get_result, cosmoall)\n", + " for result in resultall:\n", + " #if result==None:\n", + " # continue\n", + " linearratio.append(result[0])\n", + " HM2020DM.append(result[1])\n", + " HM2020TAGN.append(result[2])\n", + " HM2016.append(result[3])\n", + " cosmorecord.append(result[4])\n", + "\n", + " allresult[z]=[linearratio, HM2020DM,HM2020TAGN,HM2016,cosmoall,cosmorecord]\n", + " pool.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a6dbd1e8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys([0.0])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "allresult.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4afb4236", + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "1", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlinearratio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHM2020DM\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2020TAGN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2016\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcosmo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m: 1" + ] + } + ], + "source": [ + "linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c25e7f39", + "metadata": {}, + "outputs": [], + "source": [ + "cmap = plt.get_cmap('rainbow')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ff1446a3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.028998378897037158 {'h': 0.8032350960341496, 'Omb': 0.05394993197366195, 'Omcb': 0.4194761663721784, 'ns': 0.9354525968129869, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931211213221977, 'As': 4.673777448553246e-09, 'TAGN': 8.2, 'Omcdm': 0.36552623439851645}\n", + "0.028551094211854977 {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n" + ] + }, + { + "ename": "IndexError", + "evalue": "index 1 is out of bounds for axis 0 with size 1", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: index 1 is out of bounds for axis 0 with size 1" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACKUAAATcCAYAAABfiqSFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAEAAElEQVR4nOzdd3hcxdn38e+96r259wKYYnqH0MH0EDqhhRBIeJLwJiHhSYAUSCUhpPCQRhJwaAFjaoBACL2ajungbmxc1Lu0Zd4/zkralXZXK2nl1Uq/z3Xt5XPmzJm5pV37jM/eZ8acc4iIiIiIiIiIiIiIiIiIiIiIpJIv3QGIiIiIiIiIiIiIiIiIiIiIyOijpBQRERERERERERERERERERERSTklpYiIiIiIiIiIiIiIiIiIiIhIyikpRURERERERERERERERERERERSTkkpIiIiIiIiIiIiIiIiIiIiIpJySkoRERERERERERERERERERERkZRTUoqIiIiIiIiIiIiIiIiIiIiIpJySUkREREREREREREREREREREQk5ZSUIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEZERy8zOMzOX4PVUnPMW9nPelRF1r4xT5z0zs0HEnGdmn8Zqc/C/ifQws+OS/Z2nsM8sM1tgZn82s7fMrN7MOs1sk5k9ZWaXmdm4Aba5q5n93cxWmFmbma03s4fN7KQkz68ys4vM7B4zWxVuo8XMVprZXWZ2opklfT01M5+ZnWtmT5jZRjNrNbOPzex6M5s3kJ8tTvv1/Xz+A2a22cw+NLN7zewSM9s6iXZnJWhz70HG+rs47Z03mPZEZOTQNTy9dA3vPj8jruFmdnA/n/uBvM5L0E+RmTWF6z0x2Hgj2ptrZpea2X/C71FT+D3fbGavmdktZvZVM9suQRtPxfgZ1phZRRL9J/r34qmh/nwiMnYN9zhGY5j4NIaJ294FZtbQ37W+nzYKzezLZvZo+FrbbmbVZvaOmf0z3MeUwbQtIiIj02DHNAna+374/333mVn2MIUtIqOUOZdx/z8RkTHCzHYAjg7v/g8wJ7z9c6AOWOucuzPGeUcB88O714T/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28vBW1bpKbwv4DrDf/4H78vBnHT/vdNLL7300iv1r37GHMm+riTx/9ueCvd1ZX/Xzv6ub3F+hiK8pVufw7un7QeqwzH9P6Cgn9/BAuBfeP9P9eMlobwYbrMo1lgg4txEv5dV6X5/9dIr017mnENEREREREREREREREREREREJJV86Q5AhpeZ5ZnZxWb2gplVm1mzmb1rZlf3Xkc0BX3tamZ/N7MVZtZmZuvN7GEzO2mI7f7CzFz4dWWKwhUREREREREREREREREREZFhpKSUUSy8tuxLeFNVzgT+gTe1ZgveuqxvmdnhKerrW8DLwBfxpsf8BfAQcBBwt5ktMrO8BE3Ea3d7vKUlREREREREREREREREREREJINo+Z5RysyKgBeAnfASUxY455oijl8HXAw0A/s5594eQl/nADfjraN2hnNuUcSxbYFngPHAzc65LwygXcNbF+7AiOKrnHNXDjZWERERERERERERERERERER2TI0U8rodTleQkoAODcyISXs28AyoBj4y2A7MbMq4Prw7s2RCSkAzrkP8GZlATjXzI4cQPPn4SWkLB1sfCIiIiIiIiIiIiIiIiIiIpIeSkoZhcysHPhGePdR59zHves45/z0JKPsa2ZHDbK7S4DS8Pb1cercBtSFt69KptFwssuvgI3AjwYZm4iIiIiIiIiIiIiIiIiIiKSJklJGp88CReHthxLUezBi+4xB9tV13ibn3KuxKjjnOoH/hHf3NrNZSbT7K2Ac3owu9YOMTURERERERERERERERERERNJESSmj09ER268nqPch0LWszzED7cTM5gFzkugHIDJh5dh+2v0M8EXgSefcbQONS0RERERERERERERERERERNJPSSmj004R28vjVXLOOWBVeHe8mU0ajn7CVkRs7xivkpnlAH8C/MBXBxiPiIiIiIiIiIiIiIiIiIiIjBBKShllzMwHbB3e9Tvnqvs5ZX3E9rwBdhdZf33cWgPr5xJgPnCNc+6DAcYjIiIiIiIiIiIiIiIiIiIiI4SSUkafYiAnvN2cRP3IOhUD7KsyTjuD6sfMZgI/BFYCPxtgLCIiIiIiIiIiIiIiIiIiIjKCZKc7AEm54ojtjiTqt0dslwxjX8n0839AIfB151zbAGNJmpm54WpbRERkrHHOWbpjGAiNA0RERFIj08YAoHGAiIhIqmgcICIiMnYNZhygmVJkSw3EEvZjZp8Djgfucc49vEUiEhERERERERERERERERERkWGjmVJGn8hlcvKSqF8Qsd00jH3F7cfMioDrwu19Y4AxDJpz6UuMNrOUxTDYtpI9L5l6ierEOzaQ8lT+vgYr3e/ZQM7Re5b+92ug5/VXdzDvV7xjI/H9SnUM+ndxy+iKIVONhN+dPu+Z93kfDeOAwR7PpPcs3e/XQM4brr9j8Y6NxPcr1TFk6nuWiX/HMpk+7/q8JyvV/Y+mccBIfL9SHYP+jm0Z6X7PdM9tYDQOGBp93jPz854J15Rk6ur/llumLY0DBibd79lIHWvHKh9J79dgKCll9GkGAnjvbVES9SOX4KkfYF91cdoZaD9XAdOB7zjnPhlgDCIiIiIiIiIiIiIiIiIiIjICKSlllHHOhczsY2A7INfMxjnnqhOcMiVi+8MBdhdZf0rcWgn6MbP5eLOjrAbuN7NZMc6dFLFd3qtOcz8/n4iIiIiIiIiIiIiIiIiIiKSBklJGp6V4SSkAc4CYSRvmzbEzK7xb45z7dBD9dJnTT93I429HbO+B9zmcCXycRJ/fIHqJn38A5yVxnoiIiIiIiIiIiIiIiIiIiGxBSkoZnf4NnB7e3h14OU69eUBJePvhgXbinPvAzFbhJbbs1k/1PSK2I/t6Ajixn3PnAz8Jb98J3BFxbE2/gYqIiIiIiIiIiIiIiIiIiMgWp6SU0ekBoBUoBI4F/hSn3nER23fEqdOfO4DvARPNbA/n3Ku9K5hZLrAgvPuKc25F1zHn3Br6SSwxs/qI3Q+cc/cNMlYRERERERERERERERERERHZQnzpDkBSzzlXB1wX3l1gZlv3rmNmOcBXwrsvO+f6zJRiZieZ2SYze9vMtonT3bVAU3j763HqnAVUhLevTOJHEBERERERERERERERERERkQxnzrl0xyDDwMyKgRfxlr55CVjgnGuKOH4dcDHQAuzvnHsrRhvrgcnh3dudc2fF6es84CbAAWc45xZFHJsHPAuMB25zzp09iJ/lYODJ8O5VzrkrB9pGr/YcgD77mcPMAL1nmUTvWWbR+5V5RsJ7FhGDpS2IQdA4IPOMhM+7DIzes8yi9yvzpPs9y9QxAGgckInS/XmXgdH7lXn0nmWedL9nGgfIlpTuz7sMjN6vzKP3LLOMhPdrKOMALd8zSjnnms3sOLylfPYB3jezO/CW9TkK2BOoAz4fKyElzOJs9+5roZmNA34B3GFmZwGvAdPwZkkpBO4BLkg2fjM7Ci+hBmBuxKH9zOw74e0G59xfk21TREREREREREREREREREREthzNlDLKmVke3jI9ZwLbAHnAGuBfwHXOuU8SnHsq8EdgE3Cyc+6DfvraDW/2lYPxZlipB94E/uacWzzAuBcCX+in2mrn3KyBtBtuWxnRGWYkZP/JwOg9yyx6vzLPSHjPMvXpKI0DMs9I+LzLwOg9yyx6vzJPut+zTB0DgMYBmSjdn3cZGL1fmUfvWeZJ93umcYBsSen+vMvA6P3KPHrPMstIeL+GMg5QUoqMORp8Zp6R8A+tDIzes8yi9yvzjIT3LFNvRGkckHlGwuddBkbvWWbR+5V50v2eZeoYADQOyETp/rzLwOj9yjx6zzJPut8zjQNkS0r3510GRu9X5tF7lllGwvul5XtEBqHrL04s+gdYREQk8bUy02kcICIiEt9oHgOAxgEiIiKJaBwgIiIydg3XOMA3LK2KiIiIiIiIiIiIiIiIiIiIyJim5XtkzNE0fSIiIkOXqVP2ahwgIiIyNJk6BgCNA0RERIZK4wAREZGxayjjAM2UIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEREREREREREREREREREREZGUU1KKiIiIiIiIiIiIiIiIiIiIiKScklJEREREREREREREREREREREJOWUlCIiIiIiIiIiIiIiIiIiIiIiKaekFBERERERERERERERERERERFJOSWliIiIiIiIiIiIiIiIiIiIiEjKZac7AJF0MbO4x5xzWzASERGRkSnRtTLTaRwgIiIS32geA4DGASIiIoloHCAiIjJ2Ddc4QDOliIiIiIiIiIiIiIiIiIiIiEjKaaYUGbOU9SwiIpJYomtlpj85pXGAiIhIfKN5DAAaB4iIiCSicYCIiMjYNVzjAM2UIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEREREREREREREREREREREZGUU1KKiIiIiIiIiIiIiIiIiIiIiKScklJEREREREREREREREREREREJOWUlCIiIiIiIiIiIiIiIiIiIiIiKZed7gBERKR/9fX1PP/886xdu5aGhgYmT57M3Llz2XffffH50pdf2NraynPPPceaNWuorq5m4sSJzJo1i/3335/c3Ny0xSUiIiIiIiIiIiIiIiIi6aekFBGREWz58uVcfvnl3H///XR0dPQ5PnXqVL785S9z2WWXkZOTs8Xi2rRpE1dccQV33nknTU1NfY5XVVVx7rnnctVVV1FSUrLF4hIRERERERERERERERGRkcOcc+mOQWSLMrN+P/T6eyEjwR133MGXv/zl7qSPnXbaiWOOOYZx48bx0Ucfcccdd9DY2AjA7rvvzuLFi5k1a9awx/XEE09w5plnsnHjRgBmz57NySefzJQpU1i1ahV33nln97G5c+dy1113seuuuw57XCKSembWbx3nXP+VRhCNA0RERPo3GscAoHGAiIhIMjQOEBERGbuGaxygpBQZczT4lEzw4IMPcsIJJxAKhQC49tpr+da3vhV1MaitreWEE07gueeeA2DevHm89NJLlJeXD1tcr732GgceeCCtra0AfOtb3+JXv/oV2dk9E2+1trZy3nnncddddwEwYcIElixZskUSZkQktUbjjSiNA0RERPo3GscAoHGAiIhIMjQOEBERGbuUlCKSIl2DT332ZaRavnw5u+yyC83NzQBceuml/OpXv4pZt7m5mR122IE1a9YAcMwxx/DQQw8NS1z19fXssMMOrF+/HoBTTz2VRYsWxawbCATYb7/9eOWVVwBvlpfXXnstKnlFRDJb1+A0025EaRwgIiIyNJk6BgCNA0RERIZK4wAREZGxayjjAF/KoxERkSG54ooruhNSJk6cyA9/+MO4dYuLi7n66qu79x9++GH+85//DEtcV199dXdCSl5eHr/5zW/i1s3Ozub3v/999/7SpUu58cYbhyUuERERERERERERERERERmZNFOKjDnKiJaRbOnSpeyyyy7dn89LLrmEa6+9NuE5fr+fyZMnU1NTA8Duu+/Oq6++mtK4Nm7cyOzZs2lrawPgpJNO4u677+73vJ133pmlS5cCMGXKFFauXElubm5KYxOR9MjUp6M0DhARERmaTB0DgMYBIiIiQ6VxgIiIyNilmVJEREaJW265Jeo/Rqeeemq/5+Tk5HDiiSd277/22mu8//77KY1r8eLF3QkpycYFcNppp3Vvr1+/nscffzylcYmIiIiIiIiIiIiIiIjIyKWkFBGREeSee+7p3s7NzWW33XZL6rx99903aj+ZWUwGond7vfuLZ7jjEhEREREREREREREREZGRS0kpIiIjxPLly1mxYkX3/k477ZT0Ujd77rln1P5//vOflMXV0dHBs88+270/btw4Zs6cmdS5e+yxx7DFJSIiIiIiIiIiIiIiIiIjm5JSRCTjHHzwwZjZkF5PPfVUun+MPt55552o/Tlz5iR9bu+67777bkpiAvjggw8IBAKDiqu0tJRx48Z1769du5bGxsaUxSYiIiIiIiIiIiIiIiIiI1d2ugMQERms0tJSCgoK+q3X2tpKU1NT977P54tKlBgpeieSTJkyJelzi4qKKC0t7U74qK2tZcOGDUyaNCmtcXXVr66u7t5/77332GeffYYcl4iIiIiIiIiIiIiIiIiMbJopRUQy1u9//3s2bNiQ8LVixQpmz54ddd5VV13F/Pnz+7R33nnnDXkGlv5eCxcujPvzrFq1Kmp/oAklvev3bm+wRmpcIiIiIiIiIiIiIiIiIjKyKSlFREa1Cy+8kKVLl3bvn3DCCVxxxRVpjCi+yNlcgKRmgUlUv3d7gzVS4xIRERERERERERERERGRkU1JKSIyav3ud7/j9ttv797fZpttuPnmmzGzNEYVX+9kjby8vAGdn5+fn7C9wRqpcYmIiIiIiIiIiIiIiIjIyJad7gBE0iVRYoJzbgtGIgN16aWXcvbZZ7P//vvHrfP0009z6aWXdu8XFxdz7733UlpaGvechQsXJlxeZ7i1tbVF7efm5g7o/N71W1tbhxwTjNy4RGT4jdQkvlTQOEBERCS+0TwGAI0DREREEtE4QEREZOwarnGAklJEJOMce+yxCY+vW7eO0047jUAg0F120003sf322w93aEPSe5mbzs7OAZ3fu35hYeGQY4KRG5eIiIiIiIiIiIiIiIiIjGxKSpExS1nPo1NnZycnn3wymzZt6i679NJLOeWUU9IYVXJKSkqi9js6OgZ0fnt7e9R+cXHxkGOCkRuXiAy/RNfKTH9ySuMAERGR+EbzGAA0DhAREUlE4wAREZGxa7jGAb5BnykiMgJdfPHFLFmypHv/sMMO4xe/+EUaI0pe7+SP3svm9Kd3/d7tDdZIjUtERERERERERERERERERjYlpYxyZpZnZheb2QtmVm1mzWb2rpldbWZTU9zXrmb2dzNbYWZtZrbezB42s5OSPL/QzE40sz+Y2RIzqzEzv5k1hmP+q5ntm8qYZXS58cYbueGGG7r3Z8yYwR133EFWVlYao0rerFmzovY3btw4oPN71+/d3mCN1LhEREREREREREREREREZGRTUsooZmbTgZeA64CZwD+A3wAtwHeBt8zs8BT19S3gZeCLwDvAL4CHgIOAu81skZnlJTj/eGAjcA/wVaATuBn4MXAXUAVcALxgZn8ys8zIMpAt5tVXX+WrX/1q935+fj53330348aNS7qN8847DzMb1tfChQvj9r/DDjtE7a9bty7p2FtaWmhoaOjer6ioYPLkyUmfn8hQ4opVf/vttx9yTCIiIiIiIiIiIiIiIiIy8mWnOwAZHmZWBDwI7ISXmLLAOdcUPvxDM7sOuBi418z2c869PYS+zsFLdnHAGc65RRHHrgWeAU4F2oAvxGlmKlAMBIATnXMP9uqjBLgROAW4CFgH/HSwMcvoUl1dzcknn0xHR0d32R/+8Af22GOPNEY1cPPnz4/aX7FiRdLn9q7bO5FkKLbddluys7MJBAIDjquxsZGampru/WnTplFWVpay2ERERERERERERERERERk5NJMKaPX5XgJKQHg3IiElC7fBpbhJYL8ZbCdmFkVcH149+bIhBQA59wHeLOyAJxrZkf20+TveyekhNtpAi4E2sNFF5uZDTZuGT2CwSCnn346a9as6S77yle+wvnnn5/GqAZn7ty5zJ49u3v/7bffxu/3J3Xuq6++GrW/YMGClMWVl5fHAQcc0L1fXV0d9ftO5LXXXsM5NyxxiYiIiIiIiIiIiIiIiMjIpqSUUcjMyoFvhHcfdc593LuOc85PTzLKvmZ21CC7uwQoDW9fH6fObUBdePuqOHWqgbfwluqJyTlXD7wb3p0AjB9IoDI6fe973+OJJ57o3t9nn3247rrrBtXWwoULcc4N6+u8885LGMNJJ53Uvd3R0cEbb7yRVOwvvvhi1P7JJ5884J8/2bgAXnrppaTOG+64RERERERERERERERERGTkUlLK6PRZoCi8/VCCepEzkpwxyL66ztvknHs1VgXnXCfwn/Du3mY2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PlkBQOPB2+AKc9MckIiIiGQyJaWIiIiISLQHb8at/ojGI7aLKs4umEzhuL3TFJSIiIiIiIiIDLumerjzDwB0TimnbdcZ6Y1HREREMp6SUkRERESkx4Y1sOiPtO04Ff+U8qhDpdNOwEzDRxEREREREZFR67bfQnMDzqDhqO3THY2IiIiMAvpWQUREREQ8zsENPyFEgKZe60Xnl+9EXslWaQpMRERERERERIbdB2/AfxcD0LrbDAKTytIckIiIiIwGSkoREREREc+zD8HSF2jebw6h4ryecsumZOpx6YtLRERERERERIZXwA83XAVAsDiPpoO2iTqcX7FLGoISERGR0UBJKSIiIiLirRm98GoC5YW07DU76lDxxIPJzqtMT1wiIiIiIiIiMvweugXWfAxA4xHb4fJzug+ZL4/SqcenKzIRERHJcEpKERERERG4+RpcYx2NC7aD7J4hoi+njKKJh6QxMBERERkpXMif7hBERERkOGxeD4v+CED73PG0bzc56nDJlKPIytVSPiIiIjI4SkoRERERGevefgmevI+ObSbQsdWEqEMlU47Bl5UX50QREREZK1woQN2Kf6Q7DBERERkOf/85dLQRysmi8cjtow7lFE6jcPz+aQpMRERERoPsdAcwXMxsIvDP8K5zzh2WznhERERERqSOdvjLVd6NpyN63Xgqmk1B5W5pCkxERERGCueC1K28lY7GD9IdioiIiKTay0/Aq08C0HzAVgTLCyMOGmUzTsVMzzeLiIjI4I3mkUQ+cHDESySKmcV9iYiIjBn3/AU2rKF5v7kEywoiDvg44Lgr8fl8o/JaqXGAiIhIfJHXxawsH3/+xQl0NLyT7rBSRuMAERGRsLYWuPFnAPgnlNCy16yow3++9RVyi6aNquukxgEiIiLxDdd1cjQnpYiIiIhIIms+hvtuJFBVRMs+s6MOFU34DB8sq05TYCIiIjISmMG1P1jA547aNt2hiIiIyHC4609QvQFn0HD0fPD1fGW0bkMjv/7zC2kMTkREREaLUbt8j0h/nHPpDkFERCR9QiH485W4YICGI3eFrJ4bT76cUoonL0h4rcz0J4g0DhAREYnPOYdzIRrWLKat5uV0h5NyGgeIiIgAqz6EB28GoHW3Gfinlkcdnr/fN2hpvSGqLNPvBYDGASIiIokM13cCmilFREREZCx6bBF89Cbt20+m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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 622, + "width": 1106 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(3,4,figsize=(18,10),sharey=True, sharex=True)\n", + "inum=0\n", + "for j in range(3):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + "\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + " \n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[2][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=\"HMcode2020 TAGN\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][1].set_xscale('log')\n", + " axes[2][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(\"HMcode2020 TAGN\")\n", + " axes[j][3].plot(k,l1, label=\"Linear\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][3].set_xscale('log')\n", + " axes[2][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Linear\")\n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][2].set_xscale('log')\n", + " axes[2][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-1E-2, 4E-2)\n", + " from matplotlib.cm import ScalarMappable\n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,3E-2,\"z={0}\".format(zs[0]), size=20)\n", + " axes[1][0].text(1E-2,3E-2,\"z={0}\".format(zs[1]), size=20)\n", + " axes[2][0].text(1E-2,3E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " sm = ScalarMappable(cmap=cmap)\n", + " cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02b1ebae", + "metadata": {}, + "outputs": [], + "source": [ + "print(inum)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "571fe26f", + "metadata": {}, + "outputs": [], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,z,nu=nuFlag,pk=True,gauge='synchronous')\n", + "# if ceng.sigma8()<0.616:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa0d9686", + "metadata": {}, + "outputs": [], + "source": [ + "ceng.sigma8()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c82f905e", + "metadata": {}, + "outputs": [], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1883262b", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pCAMB_NL_Hy' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m## newtonian vs synch gauge\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL_Hy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"NL Hy\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$k \\ h/\\rm{Mpc} $'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'pCAMB_NL_Hy' is not defined" + ] + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pCAMB_NL_Hy)/np.array(pCAMB_NL) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAInCAYAAACIgohPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB/k0lEQVR4nO3dd3hcxfX/8fdRt+Tebdy7AYOxqaYYMB0CJEAoIQUSQiCVNAJffqGEJJCQQBoJpBASeg0QQu+92FTb2Ma99y6rn98fd7VarVbSrqTdq5U+r+fZZ/femTtzpGuBjmbujLk7IiIiIiIikj45YQcgIiIiIiLS0SnxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeIiIiIiIiaabES0REREREJM3ywg5ApC2Y2WKgO7Ak5FBEREREpOMaAWxz95GpXqjESzqK7l26dOk9ceLE3mEHIiIiIiId09y5c9m1a1eLrlXiJR3FkokTJ/aeOXNm2HGIiIiISAc1depUZs2ataQl1+oZLxERERERkTRT4iUiIiIiIpJmSrxERERERETSTImXiIiIiIhIminxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeWcrMhpjZP8xslZmVm9kSM7vJzHql2E7vyHVLIu2sirQ7pC37NrPdzew+M1tnZmVmNs/MrjazLqnEKyIiIiKSjfLCDkBSZ2ajgdeB/sAjwCfA/sB3gePM7GB335hEO30i7YwDngfuASYA5wEnmtlB7r6otX2b2QGR9vOBB4DlwJHAT4EZZjbD3ctb8r0QEREREckGGvHKTjcTJD7fcfdT3f0n7n4kcCMwHvh5ku38giDp+q27z4i0cypBEtU/0k+r+jazXOA2oBg43d3PcfdLgQOAB4GDgUtS+NpFRERERLKOuXvYMUgKIiNOnwJLgNHuXhNT1g1YDRjQ3913NtFOV2AdUAMMcvftMWU5wCJgeKSPRS3t28yOBJ4DXnb36XExjAIWAkuBkd6Kf4xmNnPKlClTZs6c2dImUnbjM/O5862l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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict = {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_class')\n", + "pk_lin_class = ccl.linear_matter_power(cosmo, k, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "5b54f4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_camb')\n", + "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4aac71cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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e87d+9o2zfESERFJk2R9p1QQIyLdHnhzO2v21HnOff2i+VkVvF66dCJ+X09711XXs2zboRivEBERkWyjIEYics5FfcjQ1NDSzi1/W+c59/4jxmfdXitVZQW8Z553RbJ7Xt2eptaIiIgMb8n6TqkgRkQA+PU/N7OvrqU7nZ/j48bz5qaxRQN35bHeIWWPvLOLmsa2NLVGREREEk1BjIhwuLGVXzy/yXPuU6dMY0JFYZRXZLZTZo32tL2lvZOH3tIEfxERkaFCQYyIcPvzm6hr6dkksrwwl8+eNiONLRocv8+44phJnnOa4C8iIjJ0KIgRGeb21jVz54ubPec+d9oMygpy09SixLj06EmeCf5r9tSxfPvh9DVIREREEkZBjMgw97//2EhzW2d3enRpPtecOCWNLUqMseUFnDnXO8H/3le3pak1IiIikkgKYkSGsR2HGvn9q1s95649YyZFeTlpalFiXRU2wf+v7+yitlkT/EVERLKdghiRYexHT62nraNnnsiEikKuOHZSjFdkl1Nnj2Z8eUF3urmtk4eXa4K/iIhItlMQIzJMbdpXz5+W7fCc+5f3zCI/x5+mFiWe32dcfoy3N+be17RnjIiISLZTECMyTP3o6fV0hizWNX10MR84ckL6GpQklx0zkZD5/azaXcv66rr0NUhEREQGTUGMyDC0rrqOv7y9y3Puy++ZTY5/6H0kjCsv5MQZozznwt+7iIiIZJeh941FRPr0w6fWEbplytyxpVy4aFz6GpRkFy8Z70n/5e1d2jNGREQkiymIERlmVu6q4bEVezzn/uU9s/GFjrkaYs5dOJa8kF6mrQcaeXtHTRpbJCIiIoOhIEYiMrOoD8luP/j7ek964YQyzl0wJk2tSY3ywlxOnzPac+4vb2lImYiISLIl6zulghiRYeTt7Yd5anW159wNZ88eFsHp+47wLlrwyDu76OjUkDIREZFspCBGInLORX1I9vr+39d50kdMquCMOVVRcg8tZ82rojivZ/novXUtvLrpQBpbJCIiMvQl6zulghiRYeLNrQd5bt0+z7mvnDM8emEACnL9nLtgrOecVikTERHJTgpiRIYB5xy3/s3bC3PstJGcPHNUlFcMTe89wrtK2ePv7qGlvSNNrREREZGBUhAjMgw8v34/L230Dp36yjCZCxPq5JmjGFGU252uaWrj6dV709giERERGQgFMSJDXGen4zuPr/GcO2XWKI6bXpmmFqVPrt/He8P2jLnn1W1pao2IiIgMlIIYkSHuobd2snp3refcv543N02tSb8rjpnsSf9zw3627G9IU2tERERkIBTEiAxhzW0dvebCXLxkPAsnlKepRek3f3wZR0yq8Jy793X1xoiIiGQTBTEiQ9hvX97KzsNN3elcv3HjuXPS2KLMcNVx3t6YB97YQWt7Z5paIyIiIv2lIEZkiKppbOMn/9jgOffh46cwaWRRmlqUOd67eDylBTnd6QMNrfxt1Z40tkhERET6Q0GMyBD1w6fXUdPU1p0uzc/hujNnpbFFmaMwz88lR07wnNMEfxERkeyhIEZkCFpfXcdvXt7qOfe502cwsjgvTS3KPFcdN8WTfmnjATZrgr+IiEhWUBAjMsQ457jpryvp6HTd5yaOKOSTJ09LY6syz5yxpSydMsJz7t7X1BsjIiKSDRTEiAwxT66s5sUN3o0t/+PCeRTk+tPUosx11bFhE/zf3EFLe0eaWiMiIiLxUhAjMoQ0t3XwrUdXec6dNLOScxeMTVOLMtuFi8dRFjLB/2BDK0+8qwn+IiIimU5BjERkZlEfkrluf24TOw71LKns9xn/+d4F+u8WRUGun0uOmug5pwn+IiIiiZOs75QKYkSGiI376vlp2JLKHzl+CrPHlKapRdnh6rA9Y17dfJANe+vT1BoRERGJh4IYicg5F/Uhmcc5x78/uILWjp4NGyuL8/jye2ansVXZYdaYUo6Z6p3g//tXt0bJLSIiIv2RrO+UCmJEhoD739jBq5sPes59473zKS/KTVOLsstVYb0xD7yxg/qW9jS1RkRERPqiIEYky+2ra+Hmx1Z7zp06ezQXLxmfphZlnwsWjWNUSc8eOnUt7fzpzR1pbJGIiIjEoiBGJIs55/jGw+9S09TWfa4g18fN71+oyfz9kJ/j77X55V0vbaGzU8MnRUREMpGCGJEs9uflO3k8bEngG86ezaSRRWlqUfb68HGTyfX3BH6b9zfw3Pp9aWyRiIiIRKMgRiRL7TzcxH8+vNJzbvHEcj5x0rQ0tSi7VZUVcOGicZ5zd764JT2NERERkZgUxIhkoc5Ox1f/+DZ1IZPP83N8fP+yI8jx6//WA/WxsADw+XX7tNyyiIhIBtK3HZEs9LPnNvLypgOec/92/lxmVpWkqUVDwxGTKjhycoXn3N0vbUlLW0RERCQ6BTEiWealjfu59W9rPedOmlnJNSdMTU+DhpiPh/XG/GnZDs/CCSIiIpJ+CmJEssje2mauv/ctQhfNGlGUyy2XLsHn02pkiXD+wrGMKcvvTje2dnD/G9vT2CIREREJpyBGJEu0tHdw7T3L2V/f0n3ODH54xZGMKy9MY8uGlly/j48c33u55Q4ttywiIpIxFMSIZAHnHF/70wpe23LQc/66M2Zy2uzRaWrV0HXlsZPJy+n5eNxxqImnV1ensUUiIiISSkGMSBb48TMbeHD5Ts+5k2ZW8qX3zE5Ti4a2ypJ83rdkvOecllsWERHJHApiRDLcg8t28P2/r/Ocm1pZxE+uPAq/5sEkzcdOmupJv7zpAKt316anMSIiIuKhIEYiMrOoD0mdx1bs5qv3v+05V1GUy50fP5YRxXlpatXwsGB8OcdOG+k5p+WWRURE+idZ3ykVxIhkqKdWVXP9vcs9K5Hl+o3bP7yUaaOK09ewYeTjJ071pB96ayf1IRuMioiISHooiJGInHNRH5J8D7+1k8/97k3aQyIYn8EPLz+S46ZXprFlw8vZ88cwvrygO93c1skT7+5JY4tERESyS7K+UyqIEckwv3l5C//yh7c8AYwZ3HLpEi5cPC6NLRt+cvw+3n/kBM+5Py/fkabWiIiISBcFMSIZoq2jk/98+F2+8fBKQn+cMINvf2ARlxw1MX2NG8YuOcobxLy08QC7a5rS1BoREREBBTEiGWF/fQtX3/Eqd7+81XM+x2f88PIjuPLYyWlqmcysKmXRhPLutHPw8Fu70tgiERERURAjkmb/WLuX83/0Aq9t9m5kWZDr45fXHM37jpgQ5ZWSKh8IH1K2bKfmh4mIiKRRVgYxZpZvZteZ2Utmtt/M6s1spZl9x8wS+o3PzI40s1+Z2SYzazKzXWb2mJld0s9yxpnZzWb2brC9B8zsFTP7kpkV9F1Cdzkpe++SXHXNbfzfP6/g43e+zr66Fs+1CRWFPPC5EzljTlWaWiehLj5ivGdPnrXVdazeXZfGFomIiAxvlm2/JprZJOAvwBHALuA+oAE4DzgGOABc4Zx7KgF1fRn4LuAHHgHeACYBVwFFwP3AR5xzLVELCZRzBvBHYBTwJvA4UAhcDkwE3gHe55zb0kc5SX/vZuYA/cqcRM45Hn5rF99+bDV763rfOsdPH8lPrzqKypL8NLROovn4na/xj7X7utNfOH0G/+e8uWlskYiISHbr2ivGOdfvTWOyKogxs2LgJWAx8ApwjnOuLuT6bcB1QD1wonNuxSDq+gjwG8ARCAz+GHJtLvA8MBr4jXPumhjlLABeBkqBnzrnrg25VgL8DTgBeDfY5og/76bqvSuISa6XNu7n+39bxxtbD/W65vcZXzx9BtedNYtcf1Z2kg5pf16+gy//oWfj0SmVRTz71dO1AayIiMgADacg5mbg34F2YL5zbn3Y9VxgFTATeNk5d+IA66kENgFlwN3OuY9FyPNx4NfB5HnOuSejlPVP4CRgQ7DNbWHXZwMrgRzgO865r0UpJ1XvXUFMgjnneHnjAW57Zj2vbDoYMc+0UcV8/7IlHDl5RIpbJ/Gqa25j6beeorW9s/vcI9edzMKQSf8iIiISv8EEMVnzc6+ZVQBfCiafDP8SDxAMEG4PJk8ws/MGWN0NBAIYgJ9EyfN7oOvn9P+KlMHMziYQwADcHh7AADjn1gFdAdD1ZjYyQjkVpO69S4LUt7Tz21e2cu4Pn+eqO16NGMDk+X1ce8ZMHrv+FAUwGa60IJfTZ4/2nPvrO1qlTEREJB2yJogBLgaKg8ePxsj3SMjxFQOsq+t1e51zb0TK4JxrJTAUDOA4M5saIduVIcfxtLmIwPsMl8r3LoPQ2NrOYyt28/nfvcnSb/6drz/0Luuq6yPmPXNuFU9++VS+eu4cCvP8KW6pDET4ZqOPvrNbvZYiIiJpkJPuBvTD+SHHy2LkWwvUEZiDckF/KzGzOcD0OOqBwET/y4PHFwI/Dbve1eaGYLtildPlQuCuKOX01aZBvXfpv+a2DlbuquHFDQd4ccN+lm07RFtH7C+1p8waxb+8ZzZLp6jnJducNW8M+Tk+WoJDynYcauKdHTUsmVSR3oaJiIgMM9kUxCwOOd4YLZNzzpnZFmARMNrMxjrn9iS6nqBNIceLQi+Y2WhgbDC5xTnXSXRRy+lPmxLw3iUK5xz76lvYvK+BtdV1rNhRw7u7allfXUd7Z9+/xPt9xrkLxvCJk6Zx9NReIwYlS5Tk53DGnCqeWNnzf6tHV+xWECMiIpJiWRHEmJkPmBVMtjnn9vfxkl30BANzgP58kZ8TVk5f9UR6Xb/Kcc4dNLMWIB+YYWZ+51wHpPy9D0vtHZ00tnVQ09hGdW0z1bUtwedmdtc0s+VAA5v3NVDX0t7vsidUFPLBoyZw5XGTGVdemITWS6pduHicN4h5ZzdfO3+uVikTERFJoawIYoASIDd4HHmCgVdonv6O2Qn9mbyvumLV059yuvLkE/hvUgocDp5P5XvvZv4c6Ozo12v6mhvQ2enocI6OzsCj0znMDJ+BzwwLPvuC58wM5xztnY62jk7a2h2tHZ2B445OWto7aWhpp7G1o+e5tZ3GluBz6PkY11vaY3WS9d+UyiLOmjuGi5aM48hJFfpyO8ScObeKglwfzW2B+2bn4SaWbz/MUVqYQUREhrFUf9/JpiCmS8yNJYOaQ45Lk1hXrHoG2+bDCSpnQKbc+DAArqMd19kOnR24jnZwnYFgpTtgCR6bj6O/9feQAIXu467AZaiaOKKQoyaP4KSZlZw4YxSTRhalu0mSRMX5OZw5t4rHVnh7YxTEiIiIpE62BDH9lapvzImsJ1FlJfS9mz8n0CsTh/31rYmsOuMU5/mZNrqYaaNKmD+ujEUTylk4oYyKorx0N01S7KLF4z1BzGMrdvN/L5iHz6deNxERGZ4GslrnYHpvsiWICR0ilR9H/tDJB3VRcw2+rlj1JKrNqXzvw5LPoDgvh+L8HKrK8hlTVsCYsnzGlBYwpqyASSOLmD66mKrSfA0NEwDOmFNFYa6fprbAkMvdNc0s336IpVN6L9rw7s4afvjUetZW1zK1spjrzpzFsdO0uIOIiMhgZFMQ006gvcV95AXvEKzD/azrUMhxSdRcfdfTn3Kg53110DuISdV77+b3WVKGgOX4DJ/P8AfnvQB0Ouh0Dhd8Djy8r8n1+8j1G3k5vuBxIF2Sn0NRXg7F+X7vc56fovzgc9j14vwcivNyKMoLHOfn+BScSL8U5vk5a14Vj7yzu/vcI+/s7hXEvLrpAB/99Wvd8662H2zixQ37+fmHl3LOgrGIiIjIwGRFEOOc6zSz9cA8IM/MRvWxStf4kONY+7NEEpp/fNRcfdcTdzlmNhIoCCY3dq1MBil/7902fvsCOjsDk+rbOztp63C0d3TS0elwBKbBOFzwOdCb4Q8GJ/6QQMXvs+7z/R1q44KBjYboSCa6aPE4TxDz2IrdfP3C+d33a11zG9fft7zXwhGdDv71T+9w9NSRjCzWUEQREZGByIogJugdAl/kIbAZZcQv8hb4SX1qMHnAObc7Ur4+6ukyPWqu3tdXhF5wzu01s2pgDDDVzHwx9oqJWk5Im1Lx3j18PiPPZ+ThG0wxA2bBFctEMtHpc6ooyvPT2Br4zaG6toU3th7qHip2xwubqa6NvBbHocY27npxMzecE74yu4iIiMQjPd9OB+bxkOOlMfLNoWdVrsf6W4lzbg2wJZg8qo/sR4ccR6qrq83F9N5HZiDlQBLfu4jEryDXz3vmjfGce/SdwJZQbR2d3PPatpiv/92r22hN8PLeIiIiw0U2BTF/ARqDxxfGyHdRyPF9A6yr63VjzOzoSBnMLA84J5h83Tm3KUY5EF+bm4CHI1xP5XsXkThduHicJ/3U6r045/jbymr21fX0whTn+Xnt38+itKCn8/tgQysvbuxr71oRERGJJGuCGOfcIeC2YPIcM5sVnsfMcoHPBpOvOed69UaY2SVmttfMVpjZ7CjV3UrP5Ppro+S5mp7NJG+K0uYngZeDyc8E2xfentnAucHkT5xzByKUk5D3LiKJdeqs0eTn9HyM7jzcxNrqOn77yhZPvkuOmkhVWQEXhQU9j68Y1IhPERGRYStrgpigm4F3Cexg/xszC9/M8VZgJtAAfCZKGT8BRgMLgf+MlCE4cf76YPKjZnZZ6HUzmwP8TzD5+z4Chs8SWGFsFvD9sHKKgbsIzE1aDXwrRjmJeO8ikkCFeX5OmjnKc+725zbxyqaDnnMfPn4KABcs8gYxL6zfP6B19UVERIa7bJrYj3Ou3swuIjC86nhgtZndR2Co1XnAMQSWNr7SOfd2lGIsynF4XXeZ2Sjgv4H7zOxq4E1gIoFemCLgQeBTfbR5hZl9gMDwrmvN7AQC81UKgSuC5a0E3uucq03yexeRBDtrXhXPrNnbnf7z8p2e68dOG8mcsaXdx/k5vu4Vy3bXNLP1QCNTR8WzerqIiIh0ybaeGJxzW4FjgS8BO4BPAF8hMKH9e8Di4DCuaK4nsLrXKuD/9VHXLcBxwN3AYuDfgYuBF4BLnXMfdM41x9Hmp4BFwHcIBD83EAh+dgWPj3HObY6jnMG+dxFJsDPnVsW83tULA5Cf42fplBGe6y9v6jWCVERERPpgGsogoczMARriItIPl/zviyzbdrjX+QkVhTx74+nk+nt+L/rx0+u59e/rutMXLxnPbVcemYpmioiIZJSuzcadc/3eVCPremJERDLNp0+JvKXU9WfN9AQwACfMqPSk39p+OFnNEhERGbIUxIiIDNK5C8Zy6uzRnnMXLBrLZUdP6pV34YRy/L6eH5y2HWykprEt6W0UEREZSrJqYr+kTlf3XiQaaibi5fMZd3z0aO55dStr9tSxeGIFlx49MeL/jwpy/cyqKmHNnrrucyt21nDyrFG98oqIiGS7WN8pB0NBjIhIAuTl+PjYSdPiyrtoQrkniHln52EFMSIiIv2g4WQSkXMu6kNEBmfxxHJP+t2dNWlqiYiISHIl6zulghgRkRRbOMEbxKzZXRclp4iIiESiIEZEJMVmjyn1pLccaKC5rSNNrREREck+CmJERFKsOD+HCRWF3elOB5v2NaSxRSIiItlFQYyISBrMHlPiSa/fqyFlIiIi8VIQIyKSBuFDytZVJy6Icc6xvrqOfXUtCStTREQkk2iJZRGRNJjVK4ipT0i5Ow418rnfvcm7O2vx+4yvnjOHz58+IyFli4iIZAr1xIiIpEH4cLINewcfxDjn+NJ9b/HuzloAOjod//PEGl7asH/QZYuIiGQSBTEiImkws8obxGxNwAplr20+yJtbD/U6/8sXNg2qXBERkUyjIEZEJA2K8nKYOMK7QtmWA4Nboeze17ZFPP/ihgM0trYPqmwREZFMoiBGRCRNpo0q9qS37B94ENPe0ckza/ZGvNba0ckrmw4MuGwREZFMoyBGRCRNpocFMZsGEcS8veMwtc3Re1te3qggRkREhg4FMSIiaTI1gT0xL23wBim5fvOk39lRM+CyRUREMo2CGBGRNAkfTrZ5EEHM8u2HPenPnDrdk165q5bOTjfg8kVERDKJghiJyMyiPkQkMXoHMY0DKsc5x1thQcx7l4ynvDC3O13f0s7mQS4cICIi0l/J+k6pIEZEJE0mVBR6hn3tr2+hrrmt3+VsP9jEwYbW7nRxnp9ZVaUsnFDmybe+um7gjRUREckgCmIkIudc1IeIJEaO38ekkUWec1sG0BuzfLt3b5hFE8vx+4yZoxO/oaaIiEh/JOs7pYIYEZE06r1CWf8DjVW7aj3pJZMqgN4baiqIERGRoUJBjIhIGk2tDF+hrP89MevChonNHxcYRjYjPIjZpyBGRESGBgUxIiJpNG10+OT+/gca66q9r5lVVQr07onZuLdBK5SJiMiQoCBGRCSNplUObpnluuY2dh5u6k77fcb0YGA0uiSfsoKc7mtNbR3sqmnqVYaIiEi2URAjIpJGvXtiGvo12XF92DyXKZVFFOT6gcCyluFDygYyXE1ERCTTKIgREUmjMaUFFOT2fBTXNrd7lkvuS/iyyXPGlHrSk8NWP9t+SEGMiIhkPwUxIiJp5PNZ78n9/diUcu2esPkwYUHMpBFhQcxBBTEiIpL9FMSIiKTZtPBllvfFH8Ss3xu7J2bSyEJPevshzYkREZHspyBGRCTNegUx/ZjcH7688pyx3jkw6okREZGhSEGMiEiaTR/tDTw2xbmfS01jG9W1Ld3pXL8xJWxo2qSwOTE7NCdGRESGAAUxIiJpNn30wIaThQ8lmz6qhFy/92N9XHkBfp91p/fXt9LY2j7AloqIiGQGBTEiImk2Y1TYMsgHGmjv6OzzdRvClleeOaakV54cv4/xFQWeczs0L0ZERLKcghiJyMyiPkQkscqLchlVktedbutwcQUa4XvEzBzdO4gBmFDhndy/67CCGBERSY1kfadUECMikgGmh/XGbIxjXkyvnpiqyEFMVam3J2ZvXUvEfCIiItlCQYxE5JyL+hCRxJtR1f95MfEHMfme9D4FMSIikiLJ+k6pIEZEJAOE98Rs2h+7J6axtZ2dIcPCfNZ7qeYuVWXeIGZvbfMAWykiIpIZFMSIiGSA8BXKNu6N3RMT3lMzeWQRBbn+iHk1nExERIYaBTEiIhlgRvheMX30xIQvrxxtKBn0Hk6mIEZERLKdghgRkQwwcUQhuX7vfi6HG1uj5g+fDzMjVhATPpysTsPJREQkuymIERHJADl+X685Leuqo/fG9JrUH2V5ZYDR4cPJalu0SIeIiGQ1BTEiIhli7tgyT3rNntqoeeNdmQygrCCH/Jyej/uW9k5qm9sH2EoREZH0UxAjIpIh5o4r9aRX766LmK+1vZMtBxo952INJzOzXkPK9mlImYiIZDEFMSIiGWJenD0xWw400NHZMxxsTFk+ZQW5McsOX6FsX130+TYiIiKZTkGMiEiGCO+JWbunjs7O3nNXVu3yBjfhw9AiGVHkDXJqmhTEiIhI9lIQIyKSIcaWFVBe2BNsNLZ2sP1QY698q3Z7g5j54/sOYiqK8jzpw41tA2yliIhI+imIERHJEGbG3LF9z4tZuavGk14QTxBT6O2JOaQgRkREspiCGBGRDDJvnDcgCQ9YnHO9hpPNHxfHcLLisJ4YDScTyWodnY62jk5a2ztpae+gua2DptYOGlvbaWxtp62jU0upy5CWk+4GiIhIj4UTyj3pt7Yf9qT31DZ7elGK8vxMrfTuLxNJeVhPzOEG9cSIpFNnp+NAQyvVtc1U1zZzsKGVw41tHGps5VBjG4cbA+n6lvZAgNLWQXNbJ81tgYClPcJ8uXBmkOf3kZfjIz/HR57fR36un5L8HErycygtyKGkIIeygtzAuYLAuRFFeYwoymNkceBRUZRLrl+/e0tmURAjEZlZ1Gv6ZUckeY6YVOFJv7X9MJ2dDp8v8P/J8F6YeePKuq/FMiJ8Tox6YkSSqqPTsetwE1sPNLLlQANbDzSwq6aZPcHH3rpm2jqS+/fUucC+UC3tnUResD1+ZQU5jCzOY0RxHiOLgs/FgWCnsiSP0SX5jCrJZ1RpHpXF+eTlKOiRgFjfKQdDQYyISAaZPqqY0oIc6oKbUdY1t7P5QAMzRgf2gXlnh3d4WTxDyQAqijQnRiQZWts72bivnrV76li9p5b11fVsOdDA9oONSQ9SUqm2uZ3a5vZee1RFU1aQw6jSQGATCHDygkFO4FxX4DO6NJ+CXH+SWy9DkYIYiUi9LSLp4fMZR0yq4IX1+7vPLd92uDuIeWPrQU/+RRO9w8+iCQ9iahTEiPRbe0cna6vrWLbtMMu3HWLlzlo27quPa2hXopmBzwwj8Ezgf3T96N3a3kkamtWtK+jZtK+hz7wjinIZV17I+IpCxlcUML6ikHHlBUyoKGRcRSFjSvPJ0XC2rBXrO+VgemkUxIiIZJgjw4KYlzce4ENLJ9LW0cmyrYc9eY+dOjKuMsOXWD7UqOFkIn1p7+jknZ01vLBuPy9v2s87O2pobO1IWPmlBTmMKy9gTFkBo0ryqSjKDc5HyaWiKDAXpawgl8I8PwU5fgpyfRQEj3P91ucXwPaOTlqDk/9bg8PKWto7qW9pp765nbrmNupa2qlr7knXNrdxqLGNQw2tHGxs5VBDK4eb2kjmb5uHGgN1hi8f38VnML6ikCmVRUypLGZqZRGTRxYzdVQRU0YWU5innpzhSEGMiEiGOWHGKG57ZkN3+p8b9nWvStbU1vMFanRpPlMqi+IqM3yzy8CXEpe0scoi2epAfQt/X1XNs2v38dLG/dQGh3YOxMjiPKZUFjG1spgplUVMGlEUCFrKCxhbVkBxfnK/huX4feT4fYT9htFvHZ2OmqY2Dja0cLChjYMNrRxqbOVgQ+Cxv76FA/WB5/31LRxoaE1o0NPpYMehJnYcauLFDQd6XR9Tls+UymJmjC5hVlUJs8eUMmtMCVWl+fqMG8IUxIiIZJijplRQmOvvDliqa1vYuK+eVzZ5/3gfM3VE3H+gC3P95Pl9tHZ0AoGhJk1tHRTl6c+AyN7aZp5cuYfHVuzh1c0H+j0Ma1x5AXPHljJnbBlzx5Yys6qEyZVFlBXk9v3iLOD3WfdKZfHo6HTdwU1ogLOvvoX9dT3nA49WOgY57q26toXq2hZe2+wdbltakMOsqhJmVQWCmplVJcwZW8rYsgIFN0OA/nqJiGSY/Bw/x04byXPr9nWf+8eafTy9Zq8nX7xDySAw7riiKJe9dS3d5w43timIkWGrua2DJ1fu4Q+vb+flTQfi7jmoLM7jyMkjOGpKBUdOGsH8cWWUFw2NYCVR/D5jdGlg0n5fOjod++pa2FXTxK7DTew+3MzOw03srmlid00zuw43sb9+YMNf65rbWbbtMMu2HfacLy/MZe7YUuaNCwSdc8eVMXtMiT4Ps0zW/dcyMx/wYeBjwAKgFNgJPAn82Dm3NsH1zQSuA84HJgL1wCrgbuBu51xnnOWUA18ALgWmE5h/twl4APhf59yhPl5/E/CfcTb7bufcx+LMKyIZ6LTZoz1BzK/+uZm9dc2ePGfNG9OvMsODmEONrYyvKBxcQ0WyzOrdtfzh9e38eflOapr6XuCioiiXk2eO4pRZozh+eiWTRxbpV/wE8vuMseUFjC0v4KjJIyLmaW7rYPvBRrYcaGTrgYbgktWNbD3QyI5Djf3uOatpauPVzQd5NaTnxgymVRYzd1wpc4M9avPGlTGhojCuZewl9bIqiDGzCgJf+s8CDgH3APuBU4AvAp8ws087536foPquAO4AioFng/VVAlcBvwauMbMPxBGALAYeAqYB64CfAQ74APAt4NPBcpYnot0ikv0uWDSObz66qvvX4T213gBm7thSJo2Mbz5Ml4pC71AQrVAmw0V9Szt/fXsX972+nbfDNpCNZO7YUs5bOJYz51axYHw5fn2JTauCXD+zxpQya0xpr2ut7Z3sPNzEpn31rN9bz/rqejbsrWP93vp+LcLgHGza38Cm/Q08tmJP9/mS/BzmjC3t7rGZN7aUOWNLKR0iQwWzWdYEMWbmB/5IIIDZAJzqnNsdcv0G4FbgLjOrds49Ncj6zgB+S+Df6Ebn3C0h124GngdOA+43s/OccxFn/pnZOOAxYAKBQOYy51xb8No3gu/pA8AjZnaMc25XH02bF0fza/rOIiKZbGx5ASfPHOVZpSzUpUdP6neZZYXej/zBTFgWyXTOOZZtO8wfXt/GI+/s7vML7cIJZVywaBznLxzHtFHFKWqlDFZejo9po4qZNqrY0zvd2enYXdvM+uo6NgSDm3V761i7p65fwU19Sztvbj3Em1u9v1dPHFHI3LFlzBvXMyxtSmWxAt4UypogBvgEcHbw+NOhAQyAc+77ZvY+4FTgDjOb7Zwb0CBKM8sDfkXg3+e50AAmWNceM/ss8AyBoOqTwO1RiruFQABzCPhkVwATLKfdzD4FnA6MJxCEXRmrbc65NQN5TyKSfb5w+syIQUxJfg4fOmpiv8sL/+Wwrlk9MTL0HGxo5cFlO/jD69tZv7c+Zt4RRblcctRELj9mErMj/Mov2cvnMyZUFDKhopDT51R1n+/sdOw41MTqPbWs3l3Lmt11rNlTy9aDjf1aUa1rtbSnVld3nyvI9TFnTCkLJ5Rz8sxRnDhjlOZLJVFWBDHBeTBfDyZXOueejZL1xwSCmCkEgp6fD7DKawgM/QL4SaQMzrl/mNlKAvNyvm5mdzjnPKG9mc2hJyi5xzl3MEI5B83sHgLD4S43s//nnFs9wHaLyBBywoxKLjlyAg8u3+k5//WL5g3oD2NZgXpiZGjq7HS8uHE/972+nb+t3ENbR+xvo6fMGsXlx0zi7PljyM/RHiPDic9nTK4sYnJlEecuGNt9vqGlnXXVdazZU8ea3bWsDj7353Oyua2Tt3fU8PaOGn7/6jZ8BksmVXDa7NGcNXcMCyeUaT5VAmVFEAOcDHSNnXg0Rr7HgQ7AD1zBwIOYrsCjE3giRr5HCAQxEwjMy3k27PrlBCbwQ+x2P0IgiLHga27qV2tFZMj6zgcXM7I4jz8v30l+jo/PnjaDy4+ZPKCy1BMjQ82emmbuf2M7f3hjOzsONcXMO7asgMuOnsilR0/q93wyGfqK83M4cvIIjgxZXMA5x+6aZtbsqWX17p4AZ9P+hriWhe50sHzbYZZvO8wPn1rPmLJ8zpw7hvfMq+LEGaO0SecgZUsQc37I8bJomZxzDWa2hkBgcbKZlTnnIm//GoWZFRPozQFY55yL1Rf9RsjxhfQOYuJqd4Rybordyu4hb5VAK3Ao3lXSRCS75OX4+I+L5vMfF80fdFm95sQ0qSdGsk97Ryf/WLuP+17bxj/W7o25MlWOzzhrXhVXHDOZU2eP1nwF6RczY3xFIeMrCjlzbs98m+a2Djbsre8OatbsqWP17loONMSexVBd28K9r23j3te2UZDr46QZozhr3hjOmlfFmLKCZL+dISdbgpjFIccb+8i7iUAQ4wfmA6/0s675wdfGW1eXRaEXLNBf2HWuwTlXTRTOuf1mVkdguej5ZuaLFpSY2dXAtcDR9Pz3azazF4FfAPc7l8h9ckVkqFBPjGSzmqY2/vD6Nu5+aSs7D8fudZlaWcTlx0zmg0snUFWqL4eSWAW5fhZOKGfhhHLP+X11Lby7q4aXNuznhfX7WbOnLmoZzW2dPL1mb2D/rz8HFpY4ddZoZlaVMKWyiNKCXApy/EQbfVZWmEt54fCeb5MtQcyckOO+Vu8KvT6H/gcxg6kr1AQCSzPHU05XnjlAEYGhc1uj5PsdgZ6bfwe2ARXABcDFBBcZMLPLnHNaoUxEPMJ3D6/TnBjJAjsPN3H7cxt54M0dMVeVysvxccHCsVxx7GSOmzZScw8k5UaX5nPGnCrOCC4kUF3bzHPr9vH06mpeWL8/5v377s5a3t3Zr8FDTB9VzNnzx3DZMZOYMbpkUG3PRtkSxIRuSx17qRHv9ci7JqWmrv6UE6msaEHMfwLfDOttud3MLgd+D5wDPBBc9jn+NQTDDOTDXx1AIpmttNfEfvXESObadbiJn/5jA398Y3vMifpzx5Zy5bGTef8RE7QSlGSUMWUFXHb0JC47ehLNbR28sukAz6zZy9Or9/bZmxiPTfsbuP35TfzihU1cccwk/s+5cxlRnNf3C5Mk1T8cZEsQExpetkTNFRC6I9xA1kscaF3hIXB/ygkvK1K77wNedM79PdKLnXN/MLNTgS8A7yGwwtqv46hXRIaJskL1xEjmq2lq47an1/Pbl7fS2hF5umd+jo/3HzGBq46bzOKJ5ep1kYxXkOvn9DlVnD6niv+62LFmTx1Pr67mqdV7eXvH4X4t7xzOObj3te08v24/t39kaa9hbkNVwoIYM5ubiHISsA9KKrsDEllXzLKC/y59/dv8hEAQA3Adgwhi1KsiMvSoJ0YyWUen449vbOeWJ9dGnSA9piyfj54wlSuPnczINP7iLDIYZsa8cWXMG1fGtWfOYl9dCy+s38fa6jo272tgd00zTW0dNLf1DKgJ/VrmnGNPbXOvRS12Hm7isttf5refPJalU0aSagP57jiYHyAS2ROTqL1NIr2benqGa+UTu2ejMOQ4+oyq6EKHdeX3kTe0rvAhY/0pJ7ysgbQb59xqMztAYNWyJWY2MtLeNCIyPGlOjGSqDXvr+Mr97/D29sMRr08aWch1Z8zi/UdOIC/Hl9rGiSTZ6NJ8LunnBsb1Le38beUefvKPDWza19B9vrG1g4/d+Tr3f+4E5o4tS3RTM0q2fBIcCjnua+ZS6PXDaayrP+X0VVZ/bAk+G4FNP0VEgAg9MU1t6nWVtOrodNz+3EYuuO2fEQOYCRWFfOeSRTzzldO57JhJCmBEgkryc7jkqIk88aVT+diJUz3X6prb+cLvl9HQMrR/qEpYT4xzLpkDUtcC04PH44m92tf4sNcNpK5IZfW3rh1AA4EVysbFUW9XWU0EVh0bqNCZYgOZEyQiQ1RBrp+8HB+t7YF5Bu2djua2Tm24JmmxcV89N97/Nsu2He51rSDXxxdOn8lnTp1OQa7uT5Fo8nJ83HTxAkYU5fGDp9Z1n9+0r4Gb/rKS7126JI2tS65s+UnjnZDj6VFzea93AisHUNcqoGsQYrx1AawIvRBcPezdYLLEzKqiFWJmo+gJOFYNcuPK0MBFyyyLiEeZ5sVImnV2On71z81c8KMXIgYw5y4YwzNfOZ3rz5qlAEYkTtefNZPLjvYOSbv/zR28vPFAmlqUfNkSxDwecrw0WiYzKwa6Fhh40TnXvwW3AedcPfBCMDknWGY0R4ccPxbhelzt7qscM7vUzHaY2WkxyujaYLMrsOoANsfKLyLDT+95MQpiJHV21zTxkV+/yjcfWUVLu/f3uoqiXG678kh+/uGljK8ojFKCiERiZvzXxQuZVeWdwfCNh9+lLcoqf9kuW4KYfwI7g8cXxsh3PtD1s819g6iv67W+YJnRXBR83g08F+H6H+lZdSxWu7vKccAfIlwvJrB55vwYZQAcS09PzGsDCeJEZGgLnxdT0zS0x0xL5nj0nd2c98MXeHFD71+G3zNvDH/78qlcvGS8lksWGaDCPD/f+eAiz7n1e+v5w+vb09Si5MqKICa4aeM3g8kFZnZ6lKzXBp+3A7+KlMHMTjKzrWa2xcxOiFLOnfRsNnltpAxmdgawIJj8VqSNJZ1zq+kJSq4ys17r3QXPXRVMPuCcizUE7uoY1wBuDDn+YR95RWQYKlVPjKRYbXMbN/zxLb54zzJqmrz3W2lBDt+/bAm//OhSqkoL0tRCkaFj6ZSRfGipd1jZT/+xgZb2Ae9/nrGyIogJugN4Onj8SzPzTJY3sxuA0wgMo/q0cy7aMszfAyYTWLnrlkgZnHOtwKeAduA0M/tqWF1jgNuDyWeBX8Ro91cILEQwAviVmXX/DBo8viN4bQ9wQ4xyAE4ys/8xM89/NzPzmdnXgQ8GT/3JOffHPsoSkWGorDB8Tox6YiR5Xtt8kPN/+AIPLtvZ69oJ0yt58l9O5ZKjJqr3RSSBbjx3jmclv901zUOyNyaR+8QklXOuw8wuBR4ETgdWmtk9wD7gVOBMAitzfc4592SMoizKcXh9T5nZNcAvge+Z2QUEhoxVEugRGUlg7syHnHNRvwU453aZ2YXAQ8D7g+1+kMDQsQ8QmMOzHXi/c25HlGLWElg6eSrwf4APmtmjBIaxVQIX0DPU7E56NrwUEfEozVdPjCRfR6fjx8+s57an1/fakC/P7+PGc+fwyZOn4fMpeBFJtDFlBVx93GTufHFL97k7XtjM1cdNwT+E/j+XNUEMgHPukJmdBXwUuAa4jMAckJ3Az4Dbgjvbx/KvwO8IBBE3xsronLvHzF4HrgfOA/6NwCaW7wK/Ae6KNIwsQjlvmdkSAkPTPgR8MXhpE/AN4CfOuUMxXv+ymc0AzgDeCxxPIJAqBxoJvP9fAHc4517vqz0iMnz16onRnBhJsL11zVx/73Je2dR7r+U5Y0r54RVHMG/c0N6ETyTdPn/6DH7/6rbuJfW3HWzkmTV7OXv+mDS3LHGyKogBCC4/fFfwMZDXP09gOFm8+dcD1w2krrByaoCbg4+BvL6TwHC6p/vKKyISjebESDK9seUgX/j9MvbW9R7R/cmTp3HjuXO0bLJIClSVFnDxkvE88GbPIJ87X9w8pIKYbJoTIyIig6R9YiQZnHPc9eJmrvjFK70CmFElefzmE8fy9YvmK4ARSaGPnTjVk35p4wHW7Bk6C9cqiBERGUZ698RoOJkMTlNrBzf88W1u+usq2sMmwJw4o5LHvnQKp84enabWiQxfCyeUc+xU78K4Q2mCv4IYicjMoj5EJHuVFXqDmNom9cTIwO041MglP3uJPy/vvfrY50+fwW8/eZyWThZJo4+cMMWT/stbu1K++WWyvlMqiBERGUbCN7tUT4wM1JtbD/L+n77I6t3e4Skl+Tn8/MNL+dfz5g6plZBEstHZ88d4PvcPNLTy7Np9aWxR4iiIkYicc1EfIpK9yjScTAbJOce9r23jyl+8yv76Vs+1mVUlPPTFkzhv4dg0tU5EQhXk+nnvkvGec396M9qOHsmRrO+UCmJERIaR8J4YTeyX/qhpauPae5bztQdX0Bo2JOWc+WN46IsnMbOqJE2tE5FIPnjURE/66TXV1DRm/2e/ghgRkWEkfE6MemIkXm9uPcgFP3qBR1fs7nXtujNn8vMPL6UkP+t2bhAZ8o6aXMG0UcXd6bYOx1Orq9PYosRQECMiMoyEf8msb2mnI3xLdZEwD7+1k8tuf4Wdh5s85wtz/fzoiiP4yjlz8Gn+i0hGMjMuXDTOc+7xd3v/GJFtFMSIiAwjfp9RGh7IqDdGYnhy5R5u+OPbvYLdBePLeOT6k3nfERPS1DIRiVf4PLXn1++nviW7P/sVxIiIDDOaFyPxem7dPq67Z3mvAOaTJ0/jwS+cyIzRmv8ikg0WjC9j8sii7nRreyfPrNmbxhYNnoIYEZFhJnzDSwUxEm77wUZuvP9tPnbna54J/D6D2648kq9fNJ/8HH8aWygi/WFmnB/WG/NElg8pUxAjIjLMlBWG9cQ0ZfeQAkmsx1fs5j3ff47739xB+Aqo3/ngYi4OW65VRLJDryFl6/anfOPLRFIQIyIyzIT3xNSpJ0aC3tx6kGvvXU5Le+8vNv918QIuO3pSGlolIomwZGIFo0ryutP1Le28seVQGls0OApiRESGmbJec2LUEyPQ0NIecQL/lMoifv7hpVxz4tT0NExEEsLnM06bXeU59+za7J0XoyBGRGSYUU+MRPLNR1ax9UCj99z7FvDMV07vNQxFRLLT6XNGe9LPrt2XppYMnnalEhEZZjQnRrqs3l3L61sO8trmgzzyjneS70dPmMJHTpianoaJSFKcOms0PoOuDte11XXsPNzEhIrC9DZsABTEiIgMM+qJkZb2Dv7tTyv48/KdEa9PH13Mv50/N8WtEpFkKy/KZemUEbweMhfm2bV7ufq4KWls1cBoOJmIyDBTpiWWh72b/rIyagBTmOvntiuOpChPv3OKDEWnz/HOi/nHmuwcUqYgRiIys6gPEclu4Ztd1kWY2O+c428r9/C1B1dwy5Nr2XW4KVXNkyR7d2cN9762PeK1CRWF/O5Tx7JwQnmKWyUiqXLabO+8mFc3HaA9iUstJ+s7pX5mEREZZsoKY/fEOOf4+sPv8rtXtnWf+83LW3jg8ycye0xpStooyfOTZzZ40qNK8vjYiVOZP76ME2eMoiBXm1iKDGXzx5UxoiiXQ42Bz/66lnZW7qplyaSK9Dasn9QTIxE556I+RCS79dUT8/tXt3kCGAgsw/yVCMvvSnZZV13HEyv3eM5970NLuPbMWZw5d4wCGJFhwOczjp9e6Tn38qYDSasvWd8pFcSIiAwz4XNiQoOYbQca+fZjqyO+bsXOGp5eXZ3Utkli7atr4bXNB6mubQbgh0+t81xfOKGs15KrIjL0nTAjLIjZmLwgJlk0nExEZJgJ3+zycGMrAM1tHXzxnmU0tnZEfe09r23jnAXaMyQbPLR8J197cAVNbR3k+Iy540p5d2etJ8+1Z8zSXEeRYejEsCDm9S0HaevoJNefPf0b2dNSERFJiJHFefhCvrceamyjua2Dbz6yihU7azx5rzpusif9wvr91DRqNbNMt+NQI//ngXdoagsEpO2drlcAs3BCGecuGJOO5olIms0YXcLo0vzudGNrB+/sOJy+Bg2AghgRkWEmx++jqrTAc+7XL27m969658GcPX8MN79/IbPHlHSf6+h0PLtub0raKQP3v89upLWP1Yb+9by56oURGabMIsyLybIhZQpiRESGoXEV3iDmu0+s9aSnVBZx62VLMDPOmuf9tf7Ztdm5p8Bw0dzWwV/e2hUzz7VnzOSUWZoLIzKcnZDCyf3JoCBGRGQYGl9eGPVart/46VVHdS8AcHrYngKvbzmY1LbJ4Dy3bh/1LT2LNeTn+Ljy2MlMHFHI0ikj+OHlR/CVc2ansYUikgnCJ/cv33Y4qfvFJJom9ouIDENjywuiXrv6uCmezQ6XTKogz+/rHp6041ATu2uaGBcjEJL0+evb3l6YK46ZxH+9b2GaWiMimWpqZRGVxXkcaAgs7tLY2sGaPXVZs9mtemJERIahcTGCmI+dONWTLsj1s2ii94/a61sOJaNZMkiNre08vdo7Z+miJePT1BoRyWRmxtIpIzzn3siinnYFMSIiw9CcsaURzx83bSRTRxX3On/M1JGedDb9oRvKnHOs2FHDC+v30dzWwd9WVnevSAYwvryApZNHxChBRIazo6eGBTFbs+cHKg0nExEZhhZPrMBn0Bm2YfLVx0+JmD/817qVu2oj5pPUaW7r4Pp7l/O3VYENSMeU5VNd2+LJc+Hicfh8WoFMRCIL/2xflkVBjHpiRESGofLCXM6YU+U5N2lkIRcsjLyR5YLxZZ706t21dIZHQJJS33j43e4ABugVwABcfszkXudERLosnFBOXk5POLCrppldh5vS2KL4KYgRERmmvn3JIqZWFgEwqiSfH11xJDlRdmseV15ARVFud7qxtYOtBxtT0k7pbcWOGv74xo6Yed4zbwwzq0pi5hGR4S0/x8/isIn82TKkTMPJRESGqTFlBTzzldPZtL+BySOLPL/GhTMz5o0t8+wjsHp3LdMizJ+R5HLOcfNjq2Lmycvx8e8XzE1Ri0Qkmy2dOsITuCzbeoiLs2BBEPXESERmFvUhIkOHz2fMrCqJGcB0mR82pGyV5sWkxdOr9/LKJu/CChcuGkdhrh+A4jw/t166hOmj1QsjIn0LX/zjzQT3xCTrO6V6YkREJC7zxoUFMbsVxKRaW0cn3358tefcqbNH89Orj+JAfQs7DjUxeWQRI4rz0tRCEck2R4VN7l+zp5aW9g7yc/xpalF81BMjETnnoj5EZHiaHx7EqCcm5X73ylY27WvoTvuM7mFjlSX5LJlUoQBGRPplVEk+Eyp6Ni9u63Cs3l2XsPKT9Z1SQYyIiMRlZlUJuf6e7v89tc3UNLalsUXDy56aZm792zrPuUuXTmLu2LIorxARic/isA2N39lxOD0N6QcFMSIiEpe8HB/TR3nnWaytTtyvdRJdR6fjy394i/qW9u5zpfk5fOWc2WlslYgMFYsnVnjSb2+vSU9D+kFBjIiIxG3O2FJPeu0eDSlLtsdX7Obk/3nGszIcwFfOmU1VWUGaWiUiQ8kS9cSIiMhQ1iuIUU9MUt3z6jY+//tl7K5p9pw/YXolHzlhanoaJSJDzsKwIGbDvnoaQnp+M5GCGBERidvsMd4gZt2e+jS1ZGjbV9fCl+5bzr//eUWva+PLC/jhFUfg92nJexFJjLKCXKaP7tn3yzl4d2dmDylTECMiInGbG9YTs2ZPrVYtTLDXNh/knB88x8Nv7ep17YJFY3nwCycxRsPIRCTBFk8IH1KW2UGM9okREZG4TagopCjPT2NrBwC1ze1U17Ywtjz+L9XOOZ5Zs5enVldTWZzPR0+YMuzndtQ0tfGtR1Zx/5s7Il7P9Rs///BSzpo3JsUtE5HhYvHECh4K+fHk7QyfF6MgRkRE4ubzGbPHlPLW9sPd59bsqe1XEPOdJ9Zw+3ObutN/eGM7D37+RCaNLEpkU7NGe0cnn777DV7bcjDi9XnjyvjOJYtYMqkitQ0TkWFlyaTs6onRcDIREemXOeHzYvoxuf+ZNdWeAAYC8z9ufnR1lFcMfQ+8uSNqAHP9WbP467UnKYARkaSbP67cM9du28FGDjW0prFFsSmIERGRfglfoWzNnviCmM5Ox7cfWxPx2pOr9rBlf0PEa0NZc1sHP3hqXa/zlcV5/PSqo7jh7Nnk+PWnWkSSrzDP32vxllW7M3cZfX0yiohIv4QHMfH2xDy/fh8b9kZezcw5+OvbvSeyD3V/W1VNdW1LdzrXb/zl2pN4+WtnceHicWlsmYgMR/PHlXnSqxXEiIjIUBH+S9366no6OvteoezOF7fEvP7sun2DaVZWemj5Tk/66uOmsHhiBXk5+vMsIqk3f7w3iFm1S0GMZBkzi/oQkeFtdGk+lcV53emW9k62Hog9FGxPTTPPr/cGKT//8FGe9PJth6hpaktcQzOAc46f/mMDp3z3Ga74xcv8c/3+7msH6lt4Pixw+9DSialuoohIt/CemEQMJ0vWd0oFMSIi0m+9Nr3sY0jZX9/eReh2MgsnlHHewnHMqirpPtfp4J0MX9Kzv3794ha+9+Rath9s4pVNB/n4Xa91r+z26IrdtIf0YM2qKmFB2K+gIiKpFB7EbNhbT3NbR5paE5uCGInIORf1ISLS38n9D73lHTb1/iMmAHDU5BGe88u3HR584zJES3sHP35mvedcW4fjhj++RVNrB38OG0r2/iMnqLdbRNKqvCiXCRWF3en2Thd1LmO8kvWdUkGMiIj0W38m92/YW8fKkHHVZnDxkvEAHDm5wpN3+bZDiWtkmj21ai+HG3sPj9u0r4Hr7l3WK2Dr+jcREUmnbJkXoyBGRET6LXw42doYPTEPLfeuOnbijEqqygKbYy6eWBF3Ocnypzd38N4f/5Pzfvg8d724OWE9zve/uT3qtadW7/Wkj5k6Ythu9ikimSUZ82KSISfdDRARkewze0yJJ73lQCPNbR0U5Po9551zPPy2d9jU+4JDyQBmVBXj91n36ma7apqpa26jtCA3SS33uve1bXztwRXd6Zv+ugoHfPykaYMqd09Nc69J+7FcfszkQdUnIpIo87IkiFFPjIiI9FtpgXfcdEenY+O+3uOm39h6iO0Hm7rTeTk+zls4tjudn+Nn2qhiz2vWVQ9u/HW89tQ0c9NfVvY6/9+Pr2Hn4aYIr4jfb1/ZQuiq0/PGlXHHR4+OmHdkcR4XaU8YEckQ4QuMrN5Vm5FzorMuiDEzn5l91MyeMbNqM2s0s/Vm9hMzm5OE+maa2Y/MbF2wrr1m9qyZfdzM+v3vZ2YXm9luM3NmdtMA2/Q+M3vEzHaaWbOZbTazu8ws8l9IEZEkmBs2L+bdnTW98jy4zNsLc/b8MZSF9bLM6edKZ4ly+/MbaWnv7HW+tb2T//3HhgGXu2JHDbc/t8lz7tKlE3nP/DGcu2BMr/z/dv7cXj1YIiLpMnFEIaX5PYO16lra2XFocD/sJENWBTFmVgH8DbgbOAK4H/gusA34IrDczK5OYH1XAG8B1wM7g3X9AVgE/Bp4xsxGRC3AW9YIM/st8DAwtq/8UcrIM7N7gYeAM4HHgW8DbwMfBV4xsxsHUraISH+Fz2d5Y4t3Un5zWwePvOOdD3PJkRMI15/5NYnS0en469u7o15/cNlOGlrao17fdbiJ6trmiOXe+MDbnqWTR5Xk8cHg/i//fcni7sUMcv3G50+fwaXaG0ZEMoiZMS+sN2ZlBk7uz5o5MWbmB/4InAVsAE51zu0OuX4DcCtwl5lVO+eeGmR9ZwC/JfBvdKNz7paQazcDzwOnAfeb2XnOuah/7czsQuAXwDjgHWDxAJv1M+AKYD+B9786pI4PEfj3+a6Z7XfO3TnAOkRE4nLMVO9vOG9s9QYxz6zZS11zz0djZXEep84e3aucOWO982tS0ROzbNsh9te3dKcLcn0U5eVwsKEVgKa2Dp5cuYdLjvIGGO0dnXztwRXc/+YOAK45YQr/+d4F+HyBpZEfWr6z13LT/33JYsoLA71PI4vzePDzJ7K/vhW/zxgZsmmoiEimmD+ujNc2H+xOr9pd6xkKnAmyqSfmE8DZweNPhwYwAM657xMILHKAO8xswH8Zgq/9VbCs50IDmGBde4DPBpNnAZ+MUdb1wCNAe7D9Pxhgm84m8G8AgaBqdeh159wDBIIugB+Z2aiB1CMiEq8jJlfg9/Xsa7J5fwP76noCgweX7fDkf++S8eT6e//ZmVnl7YmJNLcm0V7csN+TPnv+WC492huwPL3Gu4IYBBYC6ApgAO5+eWv3fi8dna7XvjDvO2I8Z8/3DiEzM0aX5iuAEZGMNW+c93N5fYqG+fZHVgQxwbknXw8mVzrnno2S9cfB5yn0fOEfiGuArqVpfhIpg3PuH0DXjNCvB3uKIplGICBa5Jx7ehBtuin4fAj4fZQ8Xe+/FPjqIOoSEelTUV4OC8OGHLy86QAAu2ua+Mda7+pclxzVeygZwJTKInJCgqHq2hbqmnvvr5JIb20/7EmfMnMU5y3w/sr4ysYDvSaz3vd672WT73ppCwCPvLOLLQcau8/n+IyvnpPwqZoiIknXa5ivgpgBOxmYFDx+NEa+x4GO4PEVg6jvyuBzJ/BEjHyPBJ8nAKdEyXOzc+5TzrkBDyY0s8nAicHk351zEf+6O+feAKqDycsHWp+ISLyOn17pST+zOvARdM+r27qXTYbA5P1FE8ojlpHr9zGl0rtHyqZ9DQluaQ/nXK8g5ojJFSyaUE5JyGTWAw2tnpXSdhxqjDgufMXOGlbuquGnYYsBXHLUBO39IiJZaVZYELM1uIx+JsmWIOb8kONl0TI55xqANcHkyWZWFi1vNGZWDJwaTK5zzsUa1/BGyPGFUdq0P9L5forr/Qd1tWmqmS1IQN0iIlGdNc87VOqZNXvZV9fC717Z6jn/4ROmYGZEM2O0d15MMoeUbTnQyOHGnt+CSvNzmDm6hBy/j6PD5vm8HRLsvLTxQNQyr7tnuSfg8Rl8/vSZiWu0iEgKleTn9FpGP5k/Lg1EtgQxoRPhN/aRt2tdSz8wfwB1zQ++tj91QWDFsmQZyPuH5LZJRISjJld45nbUNrdz/o9e4FBYkPCBCKuShZpRlbog5q3t3gUIlkyq6J6YH77i2oqQZaPX7I4+nGLTfu8f9/cuGd9r/xsRkWwyZ2x6lr+PV7YEMaGDindFzdX7+kAGI6eyrnhlYptERMjx+/hg2FyX0FW/AD51ynTPMK1IevXE7I38i19zWwcrdtRQH2P5476EByOLJ/YMc1scNuTNE8TsiX9U8BfPUC+MiGS3WWNSv3Jkf2RLEDMy5Livn+dCr8e1h0sa64pXyttkZv1+iMjw9JHjp3om5ocaXZrPp06ZFvFaqBmjvb0WkXpi3t1Zw4nfeYb3/uSfnPbdf/DqpujDu2IJ/0Mc+mvjooneIGb17lraOjpxzvVaOnnhhMgjls9dMKbXpFgRkWzT342IU/3dMVuCmNBQsCVqroDQ3ccG8ldkoHWVRM01eKl8/yIi/TK5sihqz8N3LllEcR+9MADTw3pithxooL2jszvd0en40n3Lu/dxOdDQyhfvWUZTa/8nmobOXQHvKjxjygoYXZrfnW5p72R9dT376lu664bAvjLfuWQx4bFbrt+48dy5/W6TiEimyfQVyhK22aWZJeRT2zm3pu9csYtIRDsysK54JaRN4cuKiojE8qWzZtHc1sEd/9xMR6ejtCCHb75vYa+J/9GUF+YyujS/e5+Ztg7H9kNN3fNKnl5dzcawSaX761t5dMVuPtSPHe/rW9rZebipO+33GdPDeoEWTyj37BHz7q4axpUXePLMHlPKwgnl/Ot5c/nvxwN/tszgG+9dwMyqZP6mJSKSGjOrSvAZdC00uf1gE42t7RTlRQ4fBvLdcTC9MQkLYoDVfWeJS6R3U0/P0Kh8YvdGFIYcDyRkDP2JLj9qrt51JXN3toG2KbNCZhEZsnw+42sXzOOTJ09j+6Em5o0rjfqHLpoZo4s9m2Vu3FvfHcT8fVV1xNc8t25fv4KY8A3bplQWkZ/j3eZrQVgQs2pXLbVN3pXtu4ZZfPa0GZw1r4q3t9dw9NQRTKnUZH4RGRoKcv1MqSxmc8jCJeur61kyqSJ9jQqRLcPJQpeS6esnrtDrhzO8rnhlYptERHqpKitg6ZQR/Q5gIPYyy69uPhjxNS9t2E9nZ/y//q0PH0pW1XvU7YKwDTzf3VnT+3UhwyxmVpXywaUTFcCIyJAzO2xyfyYNKUtYEOOcs0Q8ohS/NuR4fB9NCb2+Nmqu6FJZV7wysU0iIgkVHsRs2BsIHHYdbmLbwcaIrznQ0Mqm/fF3hIdPTA3/Aw2wMGyFslW7a1kT9rrwVXtERIai8Mn94b3Z6ZQtPTHvhBxP7yNv1/VOYOUA6loFdM0UjbcugBUDqCteA3n/kNw2iYgkVLS9Yl7dHHsVslUx9m8Jt26vN+AJ35UaYHx5ARVFud3pxtYOz6aX0HvCq4jIUBT+Gbm2OpmzJ/onW4KYx0OOl0bLZGbFQNcCAy865+Jf1D/IOVcPvBBMzgmWGc3RIceP9beufngi5Djq+w+7vs05926S2iMiknC9l1luwDnHKxsjDyXrsmpX/B/16/aE98T0DkbMjIXjy3ud71Kan9Nror+IyFAUvuGlemL675/AzuDxhTHynQ90zdC8bxD1db3WFywzmouCz7uB5wZRX0zOuS3AK8Hk2WaWGymfmR0NjA0m/5Cs9oiIJMP48kIKc3sm2dc0tXGgobVXT8ylYRP5V+2OL4ipaWxjT23PKvS5futeOCDcgih7wADMHFOivbFEZFiYUlmEP2Qt+d01zTQMYrPhRMqKIMY51wF8M5hcYGanR8l6bfB5O/CrSBnM7CQz22pmW8zshCjl3AlsDSszvJwzgAXB5LeCbUymm4LPI4Cro+S5LvhcD9yS5PaIiCSUL8Jyxy9u2M+WAz3zYXL9xtXHT/HkifeXwfAJqdNHlZCXE/nP4IIYPTHhY8RFRIaq/Bw/k0cWec6FrlaWTlkRxATdATwdPP6lmY0LvWhmNwCnEZjP8mnnXLRlmL8HTAamEOWLvnOuFfgU0A6cZmZfDatrDHB7MPks8Iv+vpn+cs49CdwdTH7PzOaFtelDwEeCyS875/YiIpJlwif3/+6VrZ704okVzB9X1uuXwbpm7xLIkazd4+2xCR8mEWrh+Og9MUdNGRH1mojIUNN7qG9mzItJ5D4xSeWc6zCzS4EHgdOBlWZ2D7APOBU4E2gCPhf8wh+NRTkOr+8pM7sG+CWBoOECAkPGKgn0hIwkMHfmQ865mP1qYUFQ6DyaE8Ou/aKPeTyfIbAPzGXAG2Z2L4Eeo6XAxQQWM/gP59wdsdojIpKp5owthbd70q9vOeS5fty0keTl+JhaWeTZ/HLD3nqOnDwi5HUHufnR1ayvruP0OVX8v/ctYE3YfJhYQczUymIqi/M40NDa69px00b2922JiGStGaNLeGp1z2/jG/cqiOk359whMzsL+ChwDYEv86UE5sv8DLjNObemj2L+FfgdgZ3tb+yjvnvM7HXgeuA84N8IDNV6F/gNcFecw8i+F+X82cFHlweAqEFMsIfocjO7j0BP0YUEhpdVB9/Tj51zr8fRHhGRjHTU5Ni9HMdPrwRgVlWpJ4hZHxLEbD/YyDW/fo3G1sDH86MrdrPjcFOv/WRiDQvz+Ywz51Zx/5s7POfHlRf0GlohIjKU9d7DKzOGk2VVEAPgnOsE7go+BvL65wkMJ4s3/3p65poMSIz9bwZa3p+BPyeyTBGRTLBkUjl+n9ERYQPLPL+PpcGhXLPGlPBEyCL6G0J+GfzVPzd3BzBdwpdIhtiT9wEuWDyuVxDz/iMnaFK/iAwrM6oyczhZNs2JERGRIa4oL4clEyNPqj9xZiXF+YHf3maG7SnTNbm/ua2DPy3b0eu14SaOKGRceWHMPKfPHs25C8Z0p6ePKuZzp87os2wRkaFk+ijv5+2m/Q0Rf2hKtazriRERkaHt4iXjWbbtcK/z58wf233cK4gJ9sQs23aIuua+l/88dmrf81rMjJ9edRTPrdtHQ2sHp88ZTVlBxBXuRUSGrBHFeZ45gq3tnew41MiUylhbKSafemIkIjOL+hARSab3Lhnv2S8GYFRJPu8/cnx3esboEkI/jnYcaqKxtZ1XNnr3lInmtDmj48qX4/dx1rwxXLxkvAIYERm2es+LiX9IWbK+UyqIERGRjFJZks8PLj+C4rxAIDOiKJefffgoivJ6Bg8U5Pbeu2DTvgZe2XTQc+57H1rM8dO9vS7jyws4d8FYREQkPr3mxexN/+R+DSeTiJxL/1hHERm+zls4lmOmnsHGfQ3MH19GSX7vP1ezqkrYGrIR5oqdNbwVNoH/xJmjOGf+WL7253d4evVeZowu4ZZLl1AQ1tMjIiLRDaYnJtZ3ysH0xiiIERGRjFRZkk9lSX7U6zOrSj17F9z3+nZaOzq705NGFjKhIjB5/3+vXpq8hoqIDHGDCWKSRcPJREQkK80Km9wfvozyCcE9ZUREZHAyca8YBTEiIpKVZo0piXn9eAUxIiIJMWFEIXk5PWHDwYZWDgZXK0sXBTEiIpKVZo8p9fxRDacgRkQkMfw+Y/oo7+T+TWkeUqYgRkREslJBrp8jJlZEvDZ5ZBHjK2JvZikiIvHLtHkxCmJERCRrHTst8qaV58wfk+KWiIgMbTNGhy2znOZ5MQpiREQka0Xb7+XiI8ZHPC8iIgMzLSyI2bJfQYyIiMiALJxQxskzR3nOnTijkkUTytPUIhGRoWlqZVgQc0BBjIiIyICYGT+9+iguWDSWyuI8zl84lp9dvXRQG6iJiEhv4UHM1gONdHamb3N0bXYpIiJZrbwwV5tZiogk2YjiPMoLc6lpagOgpb2TPbXNaVtERT0xIiIiIiLSp6mjMmdejIIYERERERHp07TKIk96cxrnxSiIERERERGRPk2JMC8mXTQnRiKKNSnWufRN4hIRERGR9JgWNpxscxzDyZK10Ip6YkREREREpE+ZNCdGPTESkXpbRERERCTU1LA5MVsPBpZZ9vkGNoJnML006okREREREZE+VRTlUVGU251ube9kd21zWtqiIEZEREREROISvulluoaUKYgREREREZG4DGRyfzIoiBERERERkbhMCZ8Xk6a9YhTEiIiIiIhIXHr3xKRnrxgFMSIiIiIiEpdec2LUEyMiIiIiIpksPIjZdqCRjs7Ub82hIEZEREREROJSXpTLiNBlljs62V3TlPJ2KIgREREREZG4TR3Vuzcm1RTEiIiIiIhI3CaP9K5Qtu2gghgREREREclgCmJERERERCSrTFIQIyIiIiIi2SS8J2Z7GoKYnJTXKFnBzKJecy71y+iJiIiISGboz3CyWN8pB0M9MSIiIiIiErcxZQXk+XvCiEONbdQ2t6W0DQpiJCLnXNSHiIiIiAxffp8xcUSh51y0IWXJ+k6pIEZERERERPolfHJ/qufFKIgREREREZF+SfcyywpiRERERESkX3qvUNaU0voVxIiIiIiISL9MGumdE6OeGBERERERyWiaEyMiIiIiIlklPIjZcaiJjs7UrWKrIEZERERERPqlrCCXEUW53enWjk6qa5tTVr+CGBERERER6bd0rlCmIEZERERERPotfEiZghgREREREclovZdZVhAjIiIiIiIZTMPJREREREQkqyiIERERERGRrJLOvWJyUlaTZBUzi3rNudStAS4iIiIimWlseQE+g67tYfbXt9Lc1kFBrr87T6zvlIOhnhgREREREem3XL+PceWFnnM7DzelpG4FMRKRcy7qQ0REREQEYEKFN4jZccgbxCTrO6WCGBERERERGZCJI8J6Yg6pJ0ZERERERDLYhBHhPTGpmdyvIEZERERERAakV0+M5sT0ZmY+M/uomT1jZtVm1mhm683sJ2Y2Jwn1zTSzH5nZumBde83sWTP7uJn1+9/OzC42s91m5szspn687mPB18TzeLa/7RIRERERGYgJFd5lljWcLIyZVQB/A+4GjgDuB74LbAO+CCw3s6sTWN8VwFvA9cDOYF1/ABYBvwaeMbMRcZY1wsx+CzwMjE1UG0VERERE0qn3cLLUBDFZsU+MmfmBPwJnARuAU51zu0Ou3wDcCtxlZtXOuacGWd8ZwG8J/Pvc6Jy7JeTazcDzwGnA/WZ2nnOu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5Pp9VJXme85V17QkvB4FMSIiIiIikjCpmBejIEZERERERBKm1wplCmJERERERCST9eqJScLkfgUxEpGZRX2IiIiIiEQTvkLZN77zg4R/p1QQIyIiIiIiCTO+wtsT4y8dlfA6FMRIRM65qA8RERERkWjCg5ijTj4r4d8pFcSIiIiIiEjCjC8Pn9ivOTEiIiIiIpLBKkvy8ft65rzUNLXR3JbYDS8VxIiIiIiISML4fdZrw8s9Ce6NURAjIiIiIiIJNTZsSNmeWgUxIiIiIiKSwcaWeYOYagUxIiIiIiKSycaUJXdyv4IYERERERFJqF7DyRTEiIiIiIhIJtNwMhERERERySrhw8k0sV9ERERERDJa+HCyag0nExERERGRTBY+nGxvXQudnS5h5SuIERERERGRhCrM81NemNudbu907G9oSVj5CmJERERERCThwntjErlCmYIYicjMoj5ERERERPoyJmxezPFnnJew75QKYkREREREJOHGluV70v7SyoSVrSBGInLORX2IiIiIiPQlfDjZN/771oR9p1QQIyIiIiIiCRc+nGxPjSb2i4iIiIhIBgvvialO4IaXCmJERERERCThwje83KMgRkREREREMpmWWBYRERERkawysjiPPH9PuFHf0k59S3tCylYQIyIiIiIiCWdmVIUts5yo3hgFMSIiIiIikhTJmtyvIEZERERERJKi9zLLCmJERERERCSD9Zrcr54YERERERHJZOPKNZxMRERERESyyJiwnpjdGk4mIiIiIiKZLHzDS/XEiIiIiIhIRkvWhpcKYiQiM4v6EBERERGJx+Sqck+6uqYR8/kH/Z1SQYyIiIiIiCRHRzsdTbXdSfP58ReVx3hBfBTESETOuagPEREREZF4OOeYN3W859xbazcP+julghgREREREUma8BXKEjG5X0GMiIiIiIgkzejSfE96b13LoMtUECMiIiIiIklTVertidlbOwyDGDPzmdlHzewZM6s2s0YzW29mPzGzOUmob6aZ/cjM1gXr2mtmz5rZx82sz38/Mysxsw+b2b3BdtabWZOZbTezv5jZNWaW1882vc/MHjGznWbWbGabzewuMzt64O9URERERCTxxpR5e2Kq64bZcDIzqwD+BtwNHAHcD3wX2AZ8EVhuZlcnsL4rgLeA64Gdwbr+ACwCfg08Y2YjYrz+JmAH8FvgYuB1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Lk1wW75LYE30y4HfA2OADmA7cB9wS6TVNSRrZNK99kkCq/hMJHC/RaLNLrNfJt1zmNlUYHPY6TvN7E4A55wluk7JGAm7F51ztWZ2MvBfwD0EemW2A7cC/x1ccUqGt4Tdb9n8uaUgRsIlrYvaOdcE/CH4EEnmvfb+ZJUtWS2pQ3Ccc1uAjP2DLxkl5r3onKsFvhx8iAxW1Pstmz+3NCdm6AvtQsyPI39hyHH4pkkisehek1TTPSeZQveipJLuNxTEDAf1BHZyhZ71xGMJ7aI8nPDWyFCme01STfecZArdi5JKut9QEDPkOec6ga55JnlmNipWfmB8yPHa5LRKhiLda5JquuckU+helFTS/RagIGZ4eCfkeHq0TGZm9GykdcA5tzuZjZIhSfeapJruOckUuhcllYb9/aYgZnh4POR4aYx8c+hZteKx5DVHhjDda5JquuckU+helFQa9vebgpjh4S9AY/D4whj5QjfWui95zZEhTPeapJruOckUuhcllYb9/aYgZhhwzh0CbgsmzzGzWeF5zCwX+Gww+ZpzbkhF65Iautck1XTPSabQvSippPtNQcxwcjPwLoEdXn9jZuEbvd0KzAQagM+kuG0ytOhek1TTPSeZQveipNKwvt+02WUWMLNPA+XB5IyQSwvM7Ksh6T8457ZHKsM5V29mFxHofjweWG1m9xHoijwPOAY4BFzpnHs70e9BsoPuNUk13XOSKXQvSirpfhs8cy6pGxhLApjZFmBKHFnPcM4920dZ+QS6Fq8CZhPYJGkb8FfgNufcjkE1VrKa7jVJNd1zkil0L0oq6X4bPAUxIiIiIiKSVTQnRkREREREsoqCGBERERERySoKYkREREREJKsoiBERERERkayiIEZERERERLKKghgREREREckqCmJERERERCSrKIgREREREZGsoiBGRERERESyioIYERERERHJKgpiREREREQkqyiIERERERGRrKIgRkREREREsoqCGBERERERySoKYkREREREJKsoiBERERERkayiIEZERERERLKKghgREREREckqCmJERERERCSrKIgREREREZGs8v8BQrqE+nuW20UAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 254, + "width": 408 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf0358e8", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':0,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "9b828555", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " #'ncdm_fluid_approximation':3,\n", + " #'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + "\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 253, + "width": 396 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pL0/pCAMB-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ce9c53f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb new file mode 100644 index 00000000..4255da1e --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246}\n", + " # other output and precision parameters\n", + " #'l_max_scalars':3000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "#\n", + "# scalars only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000})\n", + "M.compute()\n", + "cls = M.raw_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# tensors only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "l_max_tensors = 600\n", + "M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors})\n", + "# for l_max=600 we can keep default precision\n", + "# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre\n", + "#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000})\n", + "#M.set({\n", + "#'recfast_Nz0':100000,\n", + "#'tol_thermo_integration':1.e-5,\n", + "#'recfast_x_He0_trigger_delta':0.01,\n", + "#'recfast_x_H0_trigger_delta':0.01,\n", + "#'evolver':0,\n", + "#'k_min_tau0':0.002,\n", + "#'k_max_tau0_over_l_max':3.,\n", + "#'k_step_sub':0.015,\n", + "#'k_step_super':0.0001,\n", + "#'k_step_super_reduction':0.1,\n", + "#'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + "#'start_large_k_at_tau_h_over_tau_k':0.05,\n", + "#'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + "#'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + "#'start_sources_at_tau_c_over_tau_h':0.006,\n", + "#'l_max_g':50,\n", + "#'l_max_pol_g':25,\n", + "#'l_max_ur':50,\n", + "#'tol_perturb_integration':1.e-6,\n", + "#'perturb_sampling_stepsize':0.01,\n", + "#'radiation_streaming_approximation':2,\n", + "#'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + "#'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + "#'ur_fluid_approximation':2,\n", + "#'ur_fluid_trigger_tau_over_tau_k':50.,\n", + "#'l_logstep':1.026,\n", + "#'l_linstep':25,\n", + "#'hyper_sampling_flat':12.,\n", + "#'hyper_nu_sampling_step':10.,\n", + "#'hyper_phi_min_abs':1.e-10,\n", + "#'hyper_x_tol':1.e-4,\n", + "#'hyper_flat_approximation_nu':1.e6,\n", + "#'q_linstep':0.20,\n", + "#'q_logstep_spline':20.,\n", + "#'q_logstep_trapzd':0.5,\n", + "#'q_numstep_transition':250,\n", + "#'transfer_neglect_delta_k_T_t2':100.,\n", + "#'transfer_neglect_delta_k_T_e':100.,\n", + "#'transfer_neglect_delta_k_T_b':100.,\n", + "#'neglect_CMB_sources_below_visibility':1.e-30,\n", + "#'transfer_neglect_late_source':3000.\n", + "#})\n", + "M.compute()\n", + "clt = M.raw_cl(l_max_tensors)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# scalars + tensors (only in this case we can get the correct lensed ClBB)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors})\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.ylim([1.e-8,10])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{XY} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.title(r\"$r=0.1$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "ellt = clt['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "factort = 1.e10*ellt*(ellt+1.)/2./math.pi\n", + "#\n", + "plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\\mathrm{TT(s)}$')\n", + "plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\\mathrm{TT(t)}$')\n", + "plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\\mathrm{EE(s)}$')\n", + "plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\\mathrm{EE(t)}$')\n", + "plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\\mathrm{BB(t)}$')\n", + "plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\\mathrm{BB(lensing)}$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cl_ST.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb new file mode 100644 index 00000000..803687d3 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'}) \n", + "M.compute()\n", + "cl_tsw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl_eisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl_lisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl_dop = M.raw_cl(3000) \n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\\mathrm{T+SW}$')\n", + "plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\\mathrm{early-ISW}$')\n", + "plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\\mathrm{late-ISW}$')\n", + "plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\\mathrm{Doppler}$')\n", + "plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\\mathrm{total}$')\n", + "plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\\mathrm{lensed}$')\n", + "#\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cltt_terms.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb new file mode 100644 index 00000000..50691b09 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# value of k that we want to follow in [1/Mpc]\n", + "#\n", + "k = 0.5 # 1/Mpc\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# we need to set the output field to something although\n", + " # the really releveant outpout here will be set with 'k_output_values'\n", + " 'output':'mPk',\n", + " # value of k we want to polot in [1/Mpc]\n", + " 'k_output_values':k,\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other options and settings\n", + " 'compute damping scale':'yes', # needed to output the time of damping scale crossing\n", + " 'gauge':'newtonian'} \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# load perturbations\n", + "#\n", + "all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values\n", + "print all_k['scalar'][0].viewkeys()\n", + "# \n", + "one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values\n", + "# \n", + "tau = one_k['tau [Mpc]']\n", + "Theta0 = 0.25*one_k['delta_g']\n", + "phi = one_k['phi']\n", + "psi = one_k['psi']\n", + "theta_b = one_k['theta_b']\n", + "a = one_k['a']\n", + "# compute related quantitites \n", + "R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma)\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# get the time of decoupling\n", + "#\n", + "quantities = M.get_current_derived_parameters(['tau_rec'])\n", + "# print times.viewkeys()\n", + "tau_rec = quantities['tau_rec']\n", + "#\n", + "# use table of background quantitites to find the time of\n", + "# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H\n", + "background_k_rs = k * background['comov.snd.hrz.'] # read k * rs\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality)\n", + "#\n", + "tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau)\n", + "tau_at_k_rs = interp1d(background_k_rs,background_tau)\n", + "tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau)\n", + "#\n", + "# finally get these times\n", + "#\n", + "tau_Hubble = tau_at_k_over_aH(2.*math.pi)\n", + "tau_s = tau_at_k_rs(2.*math.pi)\n", + "tau_eq = tau_at_rho_m_over_r(1.)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([tau[0],tau_rec*1.3])\n", + "plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.title(r'$\\mathrm{Transfer} (\\tau,k) \\,\\,\\, \\mathrm{for} \\,\\,\\, k=%g \\,\\,\\, [1/\\mathrm{Mpc}]$'%k)\n", + "plt.grid()\n", + "#\n", + "plt.axvline(x=tau_Hubble,color='r')\n", + "plt.axvline(x=tau_s,color='y')\n", + "plt.axvline(x=tau_eq,color='k')\n", + "plt.axvline(x=tau_rec,color='k')\n", + "#\n", + "plt.annotate(r'Hubble cross.',\n", + " xy=(tau_Hubble,1.08*Theta0_amp),\n", + " xytext=(0.15*tau_Hubble,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'sound hor. cross.',\n", + " xy=(tau_s,-1.0*Theta0_amp),\n", + " xytext=(1.5*tau_s,-1.2*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'eq.',\n", + " xy=(tau_eq,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_eq,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'rec.',\n", + " xy=(tau_rec,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_rec,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# Possibility to add functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,psi,'y-',label=r'$\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_1.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,phi,'r-',label=r'$\\phi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_2.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_3.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\\Theta_0$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_4.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\\Theta_0+\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_5.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,theta_b,'g-',label=r'$\\theta_b$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "plt.savefig('one_k.pdf',bbox_inches='tight')\n", + "#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/Growth_with_w.ipynb b/class/notebooks/Growth_with_w.ipynb index 793be030..bd5e556f 100644 --- a/class/notebooks/Growth_with_w.ipynb +++ b/class/notebooks/Growth_with_w.ipynb @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "w0vec = [-0.7, -1.0, -1.3]\n", @@ -46,9 +44,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import scipy\n", @@ -198,9 +194,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -294,9 +288,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -371,16 +363,16 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3", + "version": "3.9.7" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/class/notebooks/Test HMcode2020.ipynb b/class/notebooks/Test HMcode2020.ipynb new file mode 100644 index 00000000..89b552fe --- /dev/null +++ b/class/notebooks/Test HMcode2020.ipynb @@ -0,0 +1,1653 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "09ce2608", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import camb\n", + "import hmcode\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline \n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b59c8aaa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/groups/risahw/chto/miniconda3/envs/newenv4/lib/python3.9/site-packages/hmcode/__init__.py'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hmcode.__file__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "59fa9372", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.15470606409572227" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0.022032/(0.12038+0.022032)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "287dce89", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "zs = [ 0.] # Redshifts\n", + "initPower = camb.initialpower.InitialPowerLaw(As=2.215e-9, ns= 0.9619)\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020_feedback')#, HMCode_logT_AGN=-20,)\n", + "# Run CAMB\n", + "#omnuh2=0.000644866570625114,\n", + "parameters = camb.CAMBparams(WantCls=False,InitPower=initPower, NonLinearModel =nonlinear, num_nu_massive=1,num_nu_massless=2.044,omnuh2=0.000644866570625114)#,,nu_mass_eigenstates = 1,share_delta_neff=True)\n", + "parameters.set_cosmology(H0=67.556, omch2=0.12038, ombh2=0.022032,omk=0, TCMB=2.725,YHe=0.24, )\n", + "parameters.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "results = camb.get_results(parameters)\n", + "\n", + "# HMcode\n", + "Pk_hmcode = hmcode.power(k_hmcode, zs, results)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fc2cddbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "class: \n", + " Params: \n", + " WantCls = False\n", + " WantTransfer = True\n", + " WantScalars = True\n", + " WantTensors = False\n", + " WantVectors = False\n", + " WantDerivedParameters = True\n", + " Want_cl_2D_array = True\n", + " Want_CMB = True\n", + " Want_CMB_lensing = True\n", + " DoLensing = True\n", + " NonLinear = NonLinear_none\n", + " Transfer: \n", + " high_precision = True\n", + " accurate_massive_neutrinos = False\n", + " kmax = 100.0\n", + " k_per_logint = 0\n", + " PK_num_redshifts = 1\n", + " PK_redshifts = [0.0]\n", + " want_zstar = False\n", + " want_zdrag = False\n", + " min_l = 2\n", + " max_l = 2500\n", + " max_l_tensor = 600\n", + " max_eta_k = 5000.0\n", + " max_eta_k_tensor = 1200.0\n", + " ombh2 = 0.022032\n", + " omch2 = 0.12038\n", + " omk = 0.0\n", + " omnuh2 = 0.0006445117284262014\n", + " H0 = 67.556\n", + " TCMB = 2.725\n", + " YHe = 0.24\n", + " num_nu_massless = 2.0293333333333337\n", + " num_nu_massive = 1\n", + " nu_mass_eigenstates = 1\n", + " share_delta_neff = False\n", + " nu_mass_degeneracies = [1.0146666666666666]\n", + " nu_mass_fractions = [1.0]\n", + " nu_mass_numbers = [1]\n", + " InitPower: \n", + " tensor_parameterization = tensor_param_rpivot\n", + " ns = 0.9619\n", + " nrun = 0.0\n", + " nrunrun = 0.0\n", + " nt = -0.0\n", + " ntrun = -0.0\n", + " r = 0.0\n", + " pivot_scalar = 0.05\n", + " pivot_tensor = 0.05\n", + " As = 2.215e-09\n", + " At = 1.0\n", + " Recomb: \n", + " min_a_evolve_Tm = 0.0011098779505118728\n", + " RECFAST_fudge = 1.125\n", + " RECFAST_fudge_He = 0.86\n", + " RECFAST_Heswitch = 6\n", + " RECFAST_Hswitch = True\n", + " AGauss1 = -0.14\n", + " AGauss2 = 0.079\n", + " zGauss1 = 7.28\n", + " zGauss2 = 6.73\n", + " wGauss1 = 0.18\n", + " wGauss2 = 0.33\n", + " Reion: \n", + " Reionization = True\n", + " use_optical_depth = False\n", + " redshift = 10.0\n", + " optical_depth = 0.0\n", + " delta_redshift = 0.5\n", + " fraction = -1.0\n", + " include_helium_fullreion = True\n", + " helium_redshift = 3.5\n", + " helium_delta_redshift = 0.4\n", + " helium_redshiftstart = 5.5\n", + " tau_solve_accuracy_boost = 1.0\n", + " timestep_boost = 1.0\n", + " max_redshift = 50.0\n", + " DarkEnergy: \n", + " w = -1.0\n", + " wa = 0.0\n", + " cs2 = 1.0\n", + " use_tabulated_w = False\n", + " NonLinearModel: \n", + " Min_kh_nonlinear = 0.005\n", + " halofit_version = mead2020_feedback\n", + " HMCode_A_baryon = 3.13\n", + " HMCode_eta_baryon = 0.603\n", + " HMCode_logT_AGN = 7.8\n", + " Accuracy: \n", + " AccuracyBoost = 1.0\n", + " lSampleBoost = 1.0\n", + " lAccuracyBoost = 1.0\n", + " AccuratePolarization = True\n", + " AccurateBB = False\n", + " AccurateReionization = True\n", + " TimeStepBoost = 1.0\n", + " BackgroundTimeStepBoost = 1.0\n", + " IntTolBoost = 1.0\n", + " SourcekAccuracyBoost = 1.0\n", + " IntkAccuracyBoost = 1.0\n", + " TransferkBoost = 1.0\n", + " NonFlatIntAccuracyBoost = 1.0\n", + " BessIntBoost = 1.0\n", + " LensingBoost = 1.0\n", + " NonlinSourceBoost = 1.0\n", + " BesselBoost = 1.0\n", + " LimberBoost = 1.0\n", + " SourceLimberBoost = 1.0\n", + " KmaxBoost = 1.0\n", + " neutrino_q_boost = 1.0\n", + " SourceTerms: \n", + " limber_windows = False\n", + " limber_phi_lmin = 100\n", + " counts_density = True\n", + " counts_redshift = True\n", + " counts_lensing = False\n", + " counts_velocity = True\n", + " counts_radial = False\n", + " counts_timedelay = True\n", + " counts_ISW = True\n", + " counts_potential = True\n", + " counts_evolve = False\n", + " line_phot_dipole = False\n", + " line_phot_quadrupole = False\n", + " line_basic = True\n", + " line_distortions = True\n", + " line_extra = False\n", + " line_reionization = False\n", + " use_21cm_mK = True\n", + " z_outputs = []\n", + " scalar_initial_condition = initial_adiabatic\n", + " InitialConditionVector = []\n", + " OutputNormalization = 1\n", + " Alens = 1.0\n", + " MassiveNuMethod = Nu_best\n", + " DoLateRadTruncation = True\n", + " Evolve_baryon_cs = False\n", + " Evolve_delta_xe = False\n", + " Evolve_delta_Ts = False\n", + " Do21cm = False\n", + " transfer_21cm_cl = False\n", + " Log_lvalues = False\n", + " use_cl_spline_template = True\n", + " SourceWindows = []\n", + " CustomSources: \n", + " num_custom_sources = 0\n", + " c_source_func = None\n", + " custom_source_ell_scales = []\n", + " ThermoDerivedParams = [13.778237951578754, 1090.3607781945418, 144.6205434765629, 1.0431747230735924, 13.863501509167648, 1059.2264944507895, 147.39116572425826, 0.1405167959541272, 0.161268185730211, 3406.384189774261, 0.01039177698287806, 0.8132312476995828, 0.44965233905835805]\n", + " flat = True\n", + " closed = False\n", + " grhocrit = 1.523378082476592e-07\n", + " grhog = 8.248612717308974e-12\n", + " grhor = 1.873320308646176e-12\n", + " grhob = 7.354171810491997e-09\n", + " grhoc = 4.018224412432038e-08\n", + " grhov = 1.0457420730555495e-07\n", + " grhornomass = 3.801591346345974e-12\n", + " grhok = 0.0\n", + " taurst = 205.5044921823356\n", + " dtaurec = 5.137612304558391\n", + " taurend = 600.2736560172848\n", + " tau_maxvis = 280.72217393163606\n", + " adotrad = 2.1564631333758785e-06\n", + " omega_de = 0.686462595914116\n", + " curv = 0.0\n", + " curvature_radius = 1.0\n", + " Ksign = 0.0\n", + " tau0 = 14143.924013172147\n", + " chi0 = 14143.924013172147\n", + " scale = 1.0\n", + " akthom = 3.857710657408332e-07\n", + " fHe = 0.07951538891741466\n", + " Nnow = 0.1879303473896489\n", + " z_eq = 3406.384189774261\n", + " grhormass = [1.9007956731729867e-12, 0.0, 0.0, 0.0, 0.0]\n", + " nu_masses = [356.65897015559267, 0.0, 0.0, 0.0, 0.0]\n", + " num_transfer_redshifts = 1\n", + " transfer_redshifts = [0.0]\n", + " PK_redshifts_index = [1, 0, 0, 0, 0, 0, 0, ...]\n", + " OnlyTransfers = False\n", + " HasScalarTimeSources = False\n", + " " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9eba8dd0", + "metadata": {}, + "outputs": [], + "source": [ + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "Pk_CAMB = np.zeros(len(k_hmcode))\n", + "Pk_CAMB = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b1053706", + "metadata": {}, + "outputs": [], + "source": [ + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=False).P\n", + "Pk_CAMB_lin = np.zeros(len(k_hmcode))\n", + "Pk_CAMB_lin = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f8f7e7d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "class: \n", + " Params: \n", + " WantCls = False\n", + " WantTransfer = True\n", + " WantScalars = True\n", + " WantTensors = False\n", + " WantVectors = False\n", + " WantDerivedParameters = True\n", + " Want_cl_2D_array = True\n", + " Want_CMB = True\n", + " Want_CMB_lensing = True\n", + " DoLensing = True\n", + " NonLinear = NonLinear_none\n", + " Transfer: \n", + " high_precision = True\n", + " accurate_massive_neutrinos = False\n", + " kmax = 100.0\n", + " k_per_logint = 0\n", + " PK_num_redshifts = 1\n", + " PK_redshifts = [0.0]\n", + " want_zstar = False\n", + " want_zdrag = False\n", + " min_l = 2\n", + " max_l = 2500\n", + " max_l_tensor = 600\n", + " max_eta_k = 5000.0\n", + " max_eta_k_tensor = 1200.0\n", + " ombh2 = 0.022032\n", + " omch2 = 0.12038\n", + " omk = 0.0\n", + " omnuh2 = 0.0006445117284262014\n", + " H0 = 67.556\n", + " TCMB = 2.725\n", + " YHe = 0.24\n", + " num_nu_massless = 2.0293333333333337\n", + " num_nu_massive = 1\n", + " nu_mass_eigenstates = 1\n", + " share_delta_neff = False\n", + " nu_mass_degeneracies = [1.0146666666666666]\n", + " nu_mass_fractions = [1.0]\n", + " nu_mass_numbers = [1]\n", + " InitPower: \n", + " tensor_parameterization = tensor_param_rpivot\n", + " ns = 0.9619\n", + " nrun = 0.0\n", + " nrunrun = 0.0\n", + " nt = -0.0\n", + " ntrun = -0.0\n", + " r = 0.0\n", + " pivot_scalar = 0.05\n", + " pivot_tensor = 0.05\n", + " As = 2.215e-09\n", + " At = 1.0\n", + " Recomb: \n", + " min_a_evolve_Tm = 0.0011098779505118728\n", + " RECFAST_fudge = 1.125\n", + " RECFAST_fudge_He = 0.86\n", + " RECFAST_Heswitch = 6\n", + " RECFAST_Hswitch = True\n", + " AGauss1 = -0.14\n", + " AGauss2 = 0.079\n", + " zGauss1 = 7.28\n", + " zGauss2 = 6.73\n", + " wGauss1 = 0.18\n", + " wGauss2 = 0.33\n", + " Reion: \n", + " Reionization = True\n", + " use_optical_depth = False\n", + " redshift = 10.0\n", + " optical_depth = 0.0\n", + " delta_redshift = 0.5\n", + " fraction = -1.0\n", + " include_helium_fullreion = True\n", + " helium_redshift = 3.5\n", + " helium_delta_redshift = 0.4\n", + " helium_redshiftstart = 5.5\n", + " tau_solve_accuracy_boost = 1.0\n", + " timestep_boost = 1.0\n", + " max_redshift = 50.0\n", + " DarkEnergy: \n", + " w = -1.0\n", + " wa = 0.0\n", + " cs2 = 1.0\n", + " use_tabulated_w = False\n", + " NonLinearModel: \n", + " Min_kh_nonlinear = 0.005\n", + " halofit_version = mead2020_feedback\n", + " HMCode_A_baryon = 3.13\n", + " HMCode_eta_baryon = 0.603\n", + " HMCode_logT_AGN = 7.8\n", + " Accuracy: \n", + " AccuracyBoost = 1.0\n", + " lSampleBoost = 1.0\n", + " lAccuracyBoost = 1.0\n", + " AccuratePolarization = True\n", + " AccurateBB = False\n", + " AccurateReionization = True\n", + " TimeStepBoost = 1.0\n", + " BackgroundTimeStepBoost = 1.0\n", + " IntTolBoost = 1.0\n", + " SourcekAccuracyBoost = 1.0\n", + " IntkAccuracyBoost = 1.0\n", + " TransferkBoost = 1.0\n", + " NonFlatIntAccuracyBoost = 1.0\n", + " BessIntBoost = 1.0\n", + " LensingBoost = 1.0\n", + " NonlinSourceBoost = 1.0\n", + " BesselBoost = 1.0\n", + " LimberBoost = 1.0\n", + " SourceLimberBoost = 1.0\n", + " KmaxBoost = 1.0\n", + " neutrino_q_boost = 1.0\n", + " SourceTerms: \n", + " limber_windows = False\n", + " limber_phi_lmin = 100\n", + " counts_density = True\n", + " counts_redshift = True\n", + " counts_lensing = False\n", + " counts_velocity = True\n", + " counts_radial = False\n", + " counts_timedelay = True\n", + " counts_ISW = True\n", + " counts_potential = True\n", + " counts_evolve = False\n", + " line_phot_dipole = False\n", + " line_phot_quadrupole = False\n", + " line_basic = True\n", + " line_distortions = True\n", + " line_extra = False\n", + " line_reionization = False\n", + " use_21cm_mK = True\n", + " z_outputs = []\n", + " scalar_initial_condition = initial_adiabatic\n", + " InitialConditionVector = []\n", + " OutputNormalization = 1\n", + " Alens = 1.0\n", + " MassiveNuMethod = Nu_best\n", + " DoLateRadTruncation = True\n", + " Evolve_baryon_cs = False\n", + " Evolve_delta_xe = False\n", + " Evolve_delta_Ts = False\n", + " Do21cm = False\n", + " transfer_21cm_cl = False\n", + " Log_lvalues = False\n", + " use_cl_spline_template = True\n", + " SourceWindows = []\n", + " CustomSources: \n", + " num_custom_sources = 0\n", + " c_source_func = None\n", + " custom_source_ell_scales = []\n", + " ThermoDerivedParams = [13.778237951578754, 1090.3607781945418, 144.6205434765629, 1.0431747230735924, 13.863501509167648, 1059.2264944507895, 147.39116572425826, 0.1405167959541272, 0.161268185730211, 3406.384189774261, 0.01039177698287806, 0.8132312476995828, 0.44965233905835805]\n", + " flat = True\n", + " closed = False\n", + " grhocrit = 1.523378082476592e-07\n", + " grhog = 8.248612717308974e-12\n", + " grhor = 1.873320308646176e-12\n", + " grhob = 7.354171810491997e-09\n", + " grhoc = 4.018224412432038e-08\n", + " grhov = 1.0457420730555495e-07\n", + " grhornomass = 3.801591346345974e-12\n", + " grhok = 0.0\n", + " taurst = 205.5044921823356\n", + " dtaurec = 5.137612304558391\n", + " taurend = 600.2736560172848\n", + " tau_maxvis = 280.72217393163606\n", + " adotrad = 2.1564631333758785e-06\n", + " omega_de = 0.686462595914116\n", + " curv = 0.0\n", + " curvature_radius = 1.0\n", + " Ksign = 0.0\n", + " tau0 = 14143.924013172147\n", + " chi0 = 14143.924013172147\n", + " scale = 1.0\n", + " akthom = 3.857710657408332e-07\n", + " fHe = 0.07951538891741466\n", + " Nnow = 0.1879303473896489\n", + " z_eq = 3406.384189774261\n", + " grhormass = [1.9007956731729867e-12, 0.0, 0.0, 0.0, 0.0]\n", + " nu_masses = [356.65897015559267, 0.0, 0.0, 0.0, 0.0]\n", + " num_transfer_redshifts = 1\n", + " transfer_redshifts = [0.0]\n", + " PK_redshifts_index = [1, 0, 0, 0, 0, 0, 0, ...]\n", + " OnlyTransfers = False\n", + " HasScalarTimeSources = False\n", + " " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "60956d93", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HMcode parameters\n", + "Halo mass range: 10^0.0 -> 10^18.0 Msun/h\n", + "Omega_m: 0.313\n", + "Neutrino mass fraction: 0.45%\n", + "Linear growth at z=0: 0.787\n", + "\n", + "Redshift: 0.0\n", + "Scale factor: 1.0\n", + "Omega_m(z): 0.313\n", + "Un-normalisaed growth (= a for a << 1): 0.787\n", + "Normalised growth (= 1 at z = 0): 1.0\n", + "Accumulated growth (= a for a << 1): 0.933\n", + "Linear collapse threshold: 1.676\n", + "Virial halo overdensity: 302.6\n", + "Lagrangian radius range: 0.00014 -> 140.0 Mpc/h\n", + "RMS in matter field range: 15.68 -> 0.04282\n", + "Peak height range: 0.1068 -> 39.13\n", + "Non-linear Lagrangian radius: 2.484 Mpc/h\n", + "RMS in matter field at 8 Mpc/h: 0.8407\n", + "RMS in matter displacement field: 6.036 Mpc/h\n", + "Effective index at collapse scale: -1.992\n", + "Two-halo damping wavenumber; kd: 0.06885 h/Mpc\n", + "Two-halo fractional damping; f: 0.229\n", + "Two-halo damping power; nd: 2.853\n", + "One-halo damping wavenumber; k*: 0.06698 h/Mpc\n", + "Halo bloating; eta: 0.1365\n", + "Minimum halo concentration; B: 5.196\n", + "Transition smoothing; alpha: 0.7323\n", + "Rnl: 2.4840925771079587\n", + "\n", + "zform: [13.14794282 13.06409988 12.98058431 12.89739613 12.81452791 12.73198331\n", + " 12.6497585 12.56784465 12.48625048 12.4049669 12.32398849 12.2433201\n", + " 12.1629564 12.08289735 12.00313037 11.92366773 11.84450327 11.76562985\n", + " 11.68704703 11.60874636 11.53074419 11.45301482 11.37557564 11.29840755\n", + " 11.2215305 11.14491278 11.06857542 10.99250708 10.91670739 10.8411763\n", + " 10.76591403 10.69090598 10.61615084 10.54164732 10.46741248 10.39342956\n", + " 10.31969826 10.24619799 10.17294759 10.09994777 10.02717517 9.95465319\n", + " 9.88235647 9.81031166 9.73849132 9.66689425 9.5955193 9.52436548\n", + " 9.45343202 9.38271843 9.31222454 9.24190784 9.17185251 9.10197071\n", + " 9.03230678 8.96286251 8.89358335 8.82452282 8.75568391 8.68700384\n", + " 8.61854552 8.55024159 8.48208392 8.41422981 8.34644321 8.27888135\n", + " 8.21145865 8.14426765 8.0772132 8.01029027 7.94348701 7.87692743\n", + " 7.81048734 7.74430425 7.67809426 7.61214374 7.54630061 7.48073302\n", + " 7.41510342 7.34974962 7.2844961 7.21934157 7.15427987 7.08929808\n", + " 7.02437248 6.95980946 6.8953182 6.83090312 6.76656489 6.70230001\n", + " 6.63809957 6.57394656 6.50981039 6.44618362 6.38213566 6.31863511\n", + " 6.25515425 6.19119811 6.12785175 6.06453793 6.00126132 5.93802241\n", + " 5.87481663 5.81163215 5.74844559 5.68521394 5.6231209 5.560109\n", + " 5.4969828 5.43356696 5.37212488 5.308874 5.2474269 5.18425871\n", + " 5.12296718 5.05970633 4.99874982 4.93499438 4.87463886 4.81365995\n", + " 4.75236366 4.69100262 4.62975744 4.56872675 4.50652852 4.44587088\n", + " 4.38542028 4.32510534 4.26348993 4.20325709 4.14318681 4.0833048\n", + " 4.02224761 3.96264477 3.90330264 3.84401932 3.78351654 3.72444348\n", + " 3.66572558 3.60721237 3.54761664 3.48944434 3.43154866 3.37376032\n", + " 3.31490494 3.25754858 3.20055381 3.14364536 3.08566256 3.02917045\n", + " 2.97302441 2.91699198 2.85998446 2.80436955 2.74908924 2.69401481\n", + " 2.63917605 2.58323345 2.52890256 2.47476329 2.42087269 2.36591117\n", + " 2.31253283 2.25935835 2.20643774 2.15246433 2.10006022 2.04786107\n", + " 1.99591689 1.94294757 1.89152142 1.84030148 1.78933746 1.73736946\n", + " 1.68691743 1.63667055 1.58667676 1.5356953 1.48619751 1.43689899\n", + " 1.38784474 1.33781191 1.28922389 1.24082081 1.19264413 1.14348534\n", + " 1.0957212 1.04811363 1.00069818 0.9522748 0.90517592 0.8581788\n", + " 0.81130847 0.76336101 0.71664072 0.66994607 0.62330431 0.57551414\n", + " 0.52886052 0.48213742 0.43535389 0.38727521 0.34016825 0.29279743\n", + " 0.2451341 0.19586231 0.14724404 0.09796706 0.04794443 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. ]\n", + "HMcode predictions complete for 1 redshifts\n", + "Total HMcode run time: 0.253s\n" + ] + } + ], + "source": [ + "Pk = hmcode.power(k_hmcode, zs, results, verbose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef47db63", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "f2a28d4f", + "metadata": {}, + "outputs": [], + "source": [ + "interp, _, k_interp = results.get_matter_power_interpolator(nonlinear=False, \n", + " return_z_k=True,\n", + " extrap_kmax=1E10)\n", + "Pk_lin_interp = interp.P\n", + "kmin = k_interp[0] # Minimum wavenumber used for the CAMB interpolator [h/Mpc]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0080dcbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.401267066597939e-05" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kmin" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9877ba65", + "metadata": {}, + "outputs": [], + "source": [ + "z=0\n", + "Pk_lin_interp = interp.P\n", + "sigmaV = hmcode.cosmology.sigmaV(0., lambda k: Pk_lin_interp(z, k), kmin=kmin) " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8c8c14d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.035892896293832" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sigmaV" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "812adc25", + "metadata": {}, + "outputs": [], + "source": [ + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a77ded6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/groups/risahw/chto/miniconda3/envs/newenv4/lib/python3.9/site-packages/classy.cpython-39-x86_64-linux-gnu.so'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import classy\n", + "classy.__file__" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "cb60dd8a", + "metadata": {}, + "outputs": [], + "source": [ + "h = 1#0.67556" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2dfc92c9", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "k = k_hmcode*h #np.logspace(-3,np.log10(30),2000)\n", + "\n", + "\n", + "zs = [ 0.] # Redshifts\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020_feedback',HMCode_logT_AGN=7.8)#, HMCode_logT_AGN=-20,)\n", + "pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + "\n", + "#This function sets up CosmoMC-like settings, with one massive neutrino and helium set using BBN consistency\n", + "pars.set_cosmology(H0=100*h, ombh2 = 0.02225, omch2 = 0.1198, \n", + " tau=0.079, num_massive_neutrinos=1, mnu=0.06,\n", + " standard_neutrino_neff=2.046)\n", + "pars.InitPower.set_params(As=2.2065e-9, ns=0.9645)\n", + "pars.set_for_lmax(4000, max_eta_k=12000, lens_potential_accuracy=4);\n", + "pars.set_accuracy(AccuracyBoost=3, lAccuracyBoost=3, lSampleBoost=3, DoLateRadTruncation=False )\n", + "pars.AccuratePolarization = True\n", + "pars.AccurateReionization = True\n", + "pars.YHe = 0.24\n", + "pars.omegak = 0.\n", + "#pars.set_nonlinear_lensing(True)\n", + "pars.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "\n", + "results = camb.get_results(pars)\n", + "\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "Pk_CAMB = Pk_nonlin_interp(zs[0], k_hmcode)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ced9a5be", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "zs = [ 0.] # Redshifts\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020')#, HMCode_logT_AGN=-20,)\n", + "pars = camb.CAMBparams(NonLinearModel =nonlinear,)\n", + "\n", + "#This function sets up CosmoMC-like settings, with one massive neutrino and helium set using BBN consistency\n", + "pars.InitPower.set_params(As=2.100549e-09, ns=0.9645)\n", + "pars.set_cosmology(H0=100*h, ombh2 = 0.02225, omch2 = 0.1198, \n", + " tau=0.06, num_massive_neutrinos=1, mnu=0.06,)\n", + " #nnu =3.046)\n", + "pars.set_for_lmax(4000, max_eta_k=12000, lens_potential_accuracy=4);\n", + "pars.set_accuracy(AccuracyBoost=3, lAccuracyBoost=3, lSampleBoost=3, DoLateRadTruncation=False )\n", + "pars.AccuratePolarization = True\n", + "pars.AccurateReionization = True\n", + "pars.YHe = 0.24\n", + "pars.omegak = 0.\n", + "#pars.set_nonlinear_lensing(True)\n", + "pars.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "\n", + "results = camb.get_results(pars)\n", + "\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "\n", + "Pk_CAMB_DMonly = Pk_nonlin_interp(zs[0], k_hmcode)\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=False).P\n", + "Pk_CAMB_lin = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "51abf78e", + "metadata": {}, + "outputs": [], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " #'l_switch_limber' : 40.,\n", + " #'accurate_lensing':1,\n", + " #'num_mu_minus_lmax' : 1000.,\n", + " #'delta_l_max' : 1000.,\n", + "#\n", + " #\"recfast_Nz0\":100000,\n", + " #\"tol_thermo_integration\":1.e-5,\n", + " #\"recfast_x_He0_trigger_delta\" : 0.01,\n", + " #\"recfast_x_H0_trigger_delta\" : 0.01,\n", + " #\"evolver\":0,\n", + " #\"k_min_tau0\":0.002,\n", + " #\"k_max_tau0_over_l_max\":10.,\n", + " #\"k_step_sub\":0.015,\n", + " #\"k_step_super\":0.0001,\n", + " #\"k_step_super_reduction\":0.1,\n", + " #\"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " #\"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " #\"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " #\"l_max_g\":50,\n", + " #\"l_max_pol_g\":25,\n", + " #\"l_max_ur\":50,\n", + " #\"tol_perturb_integration\":1.e-6,\n", + " #\"perturb_sampling_stepsize\":0.01,\n", + " #\"radiation_streaming_approximation\" : 2,\n", + " #\"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " #\"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " #\"ur_fluid_approximation\" : 2,\n", + " #\"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " #\"ncdm_fluid_approximation\" : 3,\n", + " #\"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " #\"l_logstep\":1.026,\n", + " #\"l_linstep\":25,\n", + " #\"hyper_sampling_flat\" : 12.,\n", + " #\"hyper_sampling_curved_low_nu\" : 10.,\n", + " #\"hyper_sampling_curved_high_nu\" : 10.,\n", + " #\"hyper_nu_sampling_step\" : 10.,\n", + " #\"hyper_phi_min_abs\" : 1.e-10,\n", + " #\"hyper_x_tol\" : 1.e-4,\n", + " #\"hyper_flat_approximation_nu\" : 1.e6,\n", + " #\"q_linstep\":0.20,\n", + " #\"q_logstep_spline\": 20.,\n", + " #\"q_logstep_trapzd\" : 0.5,\n", + " #\"q_numstep_transition\" : 250,\n", + " #\"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_b\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_b\" : 100.,\n", + " #\"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " #\"transfer_neglect_late_source\" : 3000.,\n", + "#\n", + " 'P_k_max_1/Mpc':40,\n", + " 'hmcode2020log10tagn':7.8,\n", + " 'N_ur':2.046,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06\n", + "}\n", + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass = np.array([cosmo.pk(ki,0) for ki in k])\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "97101ce2", + "metadata": {}, + "source": [ + "# " + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "166f4d10", + "metadata": {}, + "outputs": [], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'n_s' : 0.9645,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " 'l_switch_limber' : 40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax' : 1000.,\n", + " 'delta_l_max' : 1000.,\n", + "\n", + " \"recfast_Nz0\":100000,\n", + " \"tol_thermo_integration\":1.e-5,\n", + " \"recfast_x_He0_trigger_delta\" : 0.01,\n", + " \"recfast_x_H0_trigger_delta\" : 0.01,\n", + " \"evolver\":0,\n", + " \"k_min_tau0\":0.002,\n", + " \"k_max_tau0_over_l_max\":10.,\n", + " \"k_step_sub\":0.015,\n", + " \"k_step_super\":0.0001,\n", + " \"k_step_super_reduction\":0.1,\n", + " \"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " \"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " \"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " \"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " \"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " \"l_max_g\":50,\n", + " \"l_max_pol_g\":25,\n", + " \"l_max_ur\":50,\n", + " \"tol_perturb_integration\":1.e-6,\n", + " \"perturb_sampling_stepsize\":0.01,\n", + " \"radiation_streaming_approximation\" : 2,\n", + " \"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " \"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " \"ur_fluid_approximation\" : 2,\n", + " \"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " \"ncdm_fluid_approximation\" : 3,\n", + " \"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " \"l_logstep\":1.026,\n", + " \"l_linstep\":25,\n", + " \"hyper_sampling_flat\" : 12.,\n", + " \"hyper_sampling_curved_low_nu\" : 10.,\n", + " \"hyper_sampling_curved_high_nu\" : 10.,\n", + " \"hyper_nu_sampling_step\" : 10.,\n", + " \"hyper_phi_min_abs\" : 1.e-10,\n", + " \"hyper_x_tol\" : 1.e-4,\n", + " \"hyper_flat_approximation_nu\" : 1.e6,\n", + " \"q_linstep\":0.20,\n", + " \"q_logstep_spline\": 20.,\n", + " \"q_logstep_trapzd\" : 0.5,\n", + " \"q_numstep_transition\" : 250,\n", + " \"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " \"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " \"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_S_e\" : 100.,\n", + " \"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " \"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_V_e\" : 100.,\n", + " \"transfer_neglect_delta_k_V_b\" : 100.,\n", + " \"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_T_e\" : 100.,\n", + " \"transfer_neglect_delta_k_T_b\" : 100.,\n", + " \"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " \"transfer_neglect_late_source\" : 3000.,\n", + " 'P_k_max_1/Mpc':40,\n", + " #'hmcode2020log10tagn':7.8\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'N_ur':2.0308,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06,\n", + " 'ncdm_fluid_approximation':3,\n", + " #'nonlinear_verbose' = 2\n", + "}\n", + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass_dm = np.array([cosmo.pk(ki,0) for ki in k])\n", + "pkclass_lin = np.array([cosmo.pk_lin(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "5712f582", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pkclass_lin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msemilogx\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpkclass_lin\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mPk_CAMB_lin\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"linear\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'pkclass_lin' is not defined" + ] + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass_lin*h**3)/Pk_CAMB_lin-1, label=\"linear\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3dd10424", + "metadata": {}, + "outputs": [], + "source": [ + "plt.loglog(k/h,Pk_CAMB, label=\"camb\")\n", + "plt.loglog(k/h,(pkclass*h**3))\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f0e2a5f", + "metadata": {}, + "outputs": [], + "source": [ + "plt.loglog(k/h,Pk_CAMB_DMonly, label=\"camb dm\")\n", + "plt.loglog(k/h,(pkclass_dm*h**3))\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21ad8815", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass = np.array([cosmo.pk(ki,0) for ki in k])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "116b1f42", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass*h**3)/(pkclass_dm*h**3)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c4bf5ea1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(Pk_CAMB)/(Pk_CAMB_DMonly)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "be1f0f30", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass_dm*h**3)/(Pk_CAMB_DMonly)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d60a26e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, '')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass*h**3)/Pk_CAMB-1, label=\"hmcode class\")\n", + "plt.xlabel(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "6cc67d86", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#plt.ylim(-2.5E-3,1E-3)\n", + "#plt.semilogx(k/h,Pk_hmcode[0]/Pk_CAMB-1, label=\"hmcode class\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "38b0b927", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b': 0.02225,\n", + " 'omega_cdm': 0.1198,\n", + " 'h': 1,\n", + " 'A_s': 2.100549e-09,\n", + " 'n_s': 0.9645,\n", + " 'tau_reio': 0.06,\n", + " 'YHe': 0.24,\n", + " 'non linear': 'HMcode2020',\n", + " 'l_switch_limber': 40.0,\n", + " 'accurate_lensing': 1,\n", + " 'num_mu_minus_lmax': 1000.0,\n", + " 'delta_l_max': 1000.0,\n", + " 'recfast_Nz0': 100000,\n", + " 'tol_thermo_integration': 1e-05,\n", + " 'recfast_x_He0_trigger_delta': 0.01,\n", + " 'recfast_x_H0_trigger_delta': 0.01,\n", + " 'evolver': 0,\n", + " 'k_min_tau0': 0.002,\n", + " 'k_max_tau0_over_l_max': 10.0,\n", + " 'k_step_sub': 0.015,\n", + " 'k_step_super': 0.0001,\n", + " 'k_step_super_reduction': 0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h': 0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k': 0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h': 0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k': 0.008,\n", + " 'start_sources_at_tau_c_over_tau_h': 0.006,\n", + " 'l_max_g': 50,\n", + " 'l_max_pol_g': 25,\n", + " 'l_max_ur': 50,\n", + " 'tol_perturb_integration': 1e-06,\n", + " 'perturb_sampling_stepsize': 0.01,\n", + " 'radiation_streaming_approximation': 2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k': 240.0,\n", + " 'radiation_streaming_trigger_tau_c_over_tau': 100.0,\n", + " 'ur_fluid_approximation': 2,\n", + " 'ur_fluid_trigger_tau_over_tau_k': 50.0,\n", + " 'ncdm_fluid_approximation': 3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k': 51.0,\n", + " 'l_logstep': 1.026,\n", + " 'l_linstep': 25,\n", + " 'hyper_sampling_flat': 12.0,\n", + " 'hyper_sampling_curved_low_nu': 10.0,\n", + " 'hyper_sampling_curved_high_nu': 10.0,\n", + " 'hyper_nu_sampling_step': 10.0,\n", + " 'hyper_phi_min_abs': 1e-10,\n", + " 'hyper_x_tol': 0.0001,\n", + " 'hyper_flat_approximation_nu': 1000000.0,\n", + " 'q_linstep': 0.2,\n", + " 'q_logstep_spline': 20.0,\n", + " 'q_logstep_trapzd': 0.5,\n", + " 'q_numstep_transition': 250,\n", + " 'transfer_neglect_delta_k_S_t0': 100.0,\n", + " 'transfer_neglect_delta_k_S_t1': 100.0,\n", + " 'transfer_neglect_delta_k_S_t2': 100.0,\n", + " 'transfer_neglect_delta_k_S_e': 100.0,\n", + " 'transfer_neglect_delta_k_V_t1': 100.0,\n", + " 'transfer_neglect_delta_k_V_t2': 100.0,\n", + " 'transfer_neglect_delta_k_V_e': 100.0,\n", + " 'transfer_neglect_delta_k_V_b': 100.0,\n", + " 'transfer_neglect_delta_k_T_t2': 100.0,\n", + " 'transfer_neglect_delta_k_T_e': 100.0,\n", + " 'transfer_neglect_delta_k_T_b': 100.0,\n", + " 'neglect_CMB_sources_below_visibility': 1e-30,\n", + " 'transfer_neglect_late_source': 3000.0,\n", + " 'P_k_max_1/Mpc': 40,\n", + " 'T_ncdm': 0.7133,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': 1,\n", + " 'm_ncdm': 0.06}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "common_settings" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "9c678930", + "metadata": {}, + "outputs": [], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " #'l_switch_limber' : 40.,\n", + " #'accurate_lensing':1,\n", + " #'num_mu_minus_lmax' : 1000.,\n", + " #'delta_l_max' : 1000.,\n", + "#\n", + " #\"recfast_Nz0\":100000,\n", + " #\"tol_thermo_integration\":1.e-5,\n", + " #\"recfast_x_He0_trigger_delta\" : 0.01,\n", + " #\"recfast_x_H0_trigger_delta\" : 0.01,\n", + " #\"evolver\":0,\n", + " #\"k_min_tau0\":0.002,\n", + " #\"k_max_tau0_over_l_max\":10.,\n", + " #\"k_step_sub\":0.015,\n", + " #\"k_step_super\":0.0001,\n", + " #\"k_step_super_reduction\":0.1,\n", + " #\"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " #\"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " #\"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " #\"l_max_g\":50,\n", + " #\"l_max_pol_g\":25,\n", + " #\"l_max_ur\":50,\n", + " #\"tol_perturb_integration\":1.e-6,\n", + " #\"perturb_sampling_stepsize\":0.01,\n", + " #\"radiation_streaming_approximation\" : 2,\n", + " #\"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " #\"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " #\"ur_fluid_approximation\" : 2,\n", + " #\"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " #\"ncdm_fluid_approximation\" : 3,\n", + " #\"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " #\"l_logstep\":1.026,\n", + " #\"l_linstep\":25,\n", + " #\"hyper_sampling_flat\" : 12.,\n", + " #\"hyper_sampling_curved_low_nu\" : 10.,\n", + " #\"hyper_sampling_curved_high_nu\" : 10.,\n", + " #\"hyper_nu_sampling_step\" : 10.,\n", + " #\"hyper_phi_min_abs\" : 1.e-10,\n", + " #\"hyper_x_tol\" : 1.e-4,\n", + " #\"hyper_flat_approximation_nu\" : 1.e6,\n", + " #\"q_linstep\":0.20,\n", + " #\"q_logstep_spline\": 20.,\n", + " #\"q_logstep_trapzd\" : 0.5,\n", + " #\"q_numstep_transition\" : 250,\n", + " #\"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_b\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_b\" : 100.,\n", + " #\"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " #\"transfer_neglect_late_source\" : 3000.,\n", + "#\n", + " 'P_k_max_1/Mpc':40,\n", + " 'N_ur':2.046,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "f2c0d7ad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b': 0.02225,\n", + " 'omega_cdm': 0.1198,\n", + " 'h': 1,\n", + " 'A_s': 2.100549e-09,\n", + " 'tau_reio': 0.06,\n", + " 'YHe': 0.24,\n", + " 'non linear': 'HMcode2020',\n", + " 'P_k_max_1/Mpc': 40,\n", + " 'N_ur': 2.046,\n", + " 'N_ncdm': 1,\n", + " 'm_ncdm': 0.06}" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "common_settings" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "adfafe42", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass_dm = np.array([cosmo.pk(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "b6e67785", + "metadata": {}, + "outputs": [], + "source": [ + "pdict = {}\n", + "from copy import deepcopy as copy\n", + "for Tagn in np.linspace(7.8,8.4,10):\n", + " common_settings_in=copy(common_settings)\n", + " common_settings_in['hmcode2020log10tagn']=Tagn\n", + " cosmo = Class()\n", + " cosmo.set(common_settings_in)\n", + " cosmo.compute()\n", + " pkclass = np.array([cosmo.pk(ki,0) for ki in k])\n", + " pdict[Tagn]=pkclass" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "518b9952", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for Tagn in np.linspace(7.8,8.4,10):\n", + " plt.semilogx(k/h,1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3), label=\"Tagn={0:.2f}\".format(Tagn))\n", + "plt.ylabel(\"slope\")\n", + "plt.xlabel(\"k(h/Mpc)\")\n", + "plt.legend()\n", + "#plt.ylim(0,3)\n", + "#plt.ylim(5E-3, 2E-1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "f6068972", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.0, 3.0)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for Tagn in np.linspace(7.8,8.4,10):\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + " dx = np.gradient(np.log(k/h))\n", + " plt.semilogx(k/h,dy/dx, label=\"Tagn={0:.2f}\".format(Tagn))\n", + "plt.ylabel(\"slope\")\n", + "plt.xlabel(\"k(h/Mpc)\")\n", + "plt.legend()\n", + "plt.ylim(0,3)\n", + "#plt.ylim(5E-3, 2E-1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "48113239", + "metadata": {}, + "outputs": [], + "source": [ + "import astropy" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d53af585", + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.cosmology import Planck15\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5d241522", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$2.0765818 \\; \\mathrm{\\frac{Mpc^{3}}{sr}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=np.linspace(0,2,200)\n", + "def integrand(z):\n", + " return Planck15.differential_comoving_volume(z)*(5000)*(np.pi/180)**2/(4*np.pi)\n", + "from scipy.integrate import trapz\n", + "trapz(integrand(x),x)/1E9*0.7**3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "413c74be", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/cambvsclass-v2.ipynb b/class/notebooks/cambvsclass-v2.ipynb new file mode 100644 index 00000000..0d81d0ff --- /dev/null +++ b/class/notebooks/cambvsclass-v2.ipynb @@ -0,0 +1,1586 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "from multiprocessing.pool import Pool\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})\n", + "import seaborn as sns\n", + "sns.color_palette(\"colorblind\")\n", + "plt.style.use(\"MNRAS_Style\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f5a8a3bd", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " #'recombination': 'RECFAST',\n", + " #'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " #'tol_thermo_integration':1.e-5,\n", + " #'recfast_x_He0_trigger_delta':0.01,\n", + " #'recfast_x_H0_trigger_delta':0.01,\n", + " #'evolver':0,\n", + " #'k_min_tau0':0.002,\n", + " #'k_max_tau0_over_l_max':3.,\n", + " #'k_step_sub':0.015,\n", + " #'k_step_super':0.0001,\n", + " #'k_step_super_reduction':0.1,\n", + " #'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " #'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " #'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " #'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " #'start_sources_at_tau_c_over_tau_h':0.006,\n", + " #'l_max_g':50,\n", + " #'l_max_pol_g':25,\n", + " #'l_max_ur':50,\n", + " #'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " #'l_logstep':1.026,\n", + " #'l_linstep':25,\n", + " #'hyper_sampling_flat':12.,\n", + " #'hyper_sampling_curved_low_nu':10.,\n", + " #'hyper_sampling_curved_high_nu':10.,\n", + " #'hyper_nu_sampling_step':10.,\n", + " #'hyper_phi_min_abs':1.e-10,\n", + " #'hyper_x_tol':1.e-4,\n", + " #'hyper_flat_approximation_nu':1.e6,\n", + " #'q_linstep':0.20,\n", + " #'q_logstep_spline':20.,\n", + " #'q_logstep_trapzd':0.5,\n", + " #'q_numstep_transition':250,\n", + " #'transfer_neglect_delta_k_S_t0':100.,\n", + " #'transfer_neglect_delta_k_S_t1':100.,\n", + " #'transfer_neglect_delta_k_S_t2':100.,\n", + " #'transfer_neglect_delta_k_S_e':100.,\n", + " #'transfer_neglect_delta_k_V_t1':100.,\n", + " #'transfer_neglect_delta_k_V_t2':100.,\n", + " #'transfer_neglect_delta_k_V_e':100.,\n", + " #'transfer_neglect_delta_k_V_b':100.,\n", + " #'transfer_neglect_delta_k_T_t2':100.,\n", + " #'transfer_neglect_delta_k_T_e':100.,\n", + " #'transfer_neglect_delta_k_T_b':100.,\n", + " #'neglect_CMB_sources_below_visibility':1.e-30,\n", + " #'transfer_neglect_late_source':3000.,\n", + " #'halofit_k_per_decade':3000.,\n", + " #'l_switch_limber':40.,\n", + " #'accurate_lensing':0,\n", + " #'num_mu_minus_lmax':1000.,\n", + " #'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " #'radiation_streaming_approximation':2,\n", + " #'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " #'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " #'ur_fluid_approximation':2,\n", + " #'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " #'ncdm_fluid_approximation':3,\n", + " #'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "28f881e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter ranges\n", + "Omega_c_min, Omega_c_max = 0.2, 0.4\n", + "Omega_b_min, Omega_b_max = 0.035, 0.065\n", + "Omega_k_min, Omega_k_max = -0.05, 0.05\n", + "h_min, h_max = 0.5, 0.9\n", + "ns_min, ns_max = 0.9, 1.0\n", + "logAs_min, logAs_max = np.log10(5E-10), np.log10(5E-9)\n", + "w0_min, w0_max = -1.3, -0.7\n", + "wa_min, wa_max = -1.73, 1.28\n", + "m_nu_min, m_nu_max = 0., 1.0\n", + "zs = [0.0]#1.008916e+00]\n", + "zs = np.array(zs)\n", + "nuFlag=False\n", + "k = np.logspace(-3,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=0)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " #pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=zs,kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "25528d17", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z3.900000e-02):\n", + " continue\n", + " bolt_names = ['h','Omb','Omcb','ns','Y_p','Neff','smnu','As', 'TAGN']\n", + " \n", + " bolt_cosmo = [h,Omega_b,Omega_c+Omega_b,ns,0.24,3.046,m_nu,10**logAs, TAGN] #this is the choice of Planck TTTEEE in class for nu\n", + " cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + " cosmoall.append(cosmo_dict)\n", + " pool = Pool(24)\n", + " resultall = pool.map(get_result, cosmoall)\n", + " for result in resultall:\n", + " #if result==None:\n", + " # continue\n", + " linearratio.append(result[0])\n", + " HM2020DM.append(result[1])\n", + " HM2020TAGN.append(result[2])\n", + " HM2016.append(result[3])\n", + " cosmorecord.append(result[4])\n", + "\n", + " allresult[z]=[linearratio, HM2020DM,HM2020TAGN,HM2016,cosmoall,cosmorecord]\n", + " pool.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a6dbd1e8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys([0.0])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "allresult.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4afb4236", + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "1", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlinearratio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHM2020DM\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2020TAGN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2016\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcosmo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m: 1" + ] + } + ], + "source": [ + "linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "c25e7f39", + "metadata": {}, + "outputs": [], + "source": [ + "cmap = plt.get_cmap('rainbow')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ff1446a3", + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "index 1 is out of bounds for axis 0 with size 1", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: index 1 is out of bounds for axis 0 with size 1" + ] + }, + { + "data": { + "image/png": "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95fevwv1BxdddBGnnHLKmqKP3XffnTe96U1MmDCBRx99lIsuuogFCxYAsPfee3PZZZcxZcqUHo/rhhtu4LjjjmPmzJkAbL311hx11FFMnjyZadOmcfHFF685tu2223LppZey55579nhckuovItptk5ntN+pHzAMkSWrfQMwBwDxAkqSOMA+QJGnw6qk8wKIUDTomn2oE11xzDW9/+9tpbm4G4KyzzuL0009f52Iwd+5c3v72t3PzzTcDsOOOO3Lbbbcxfvz4Hovr7rvv5lWvehVLliwB4PTTT+cb3/gGQ4eunXhryZIlnHTSSVx66aUAbLzxxtx+++29UjAjqb4G4htR5gGSJLVvIOYAYB4gSVJHmAdIkjR4WZQi1UlL8unvvvqrJ554gj322INFixYB8MlPfpJvfOMbbbZdtGgRu+yyC9OnTwfgTW96E7/73e96JK758+ezyy67MGPGDACOPvpoLrnkkjbbrlq1igMPPJA777wTKGZ5ufvuu9cpXpHU2FqS00Z7I8o8QJKk7mnUHADMAyRJ6i7zAEmSBq/u5AFNdY9GktQtn/nMZ9YUpGyyySZ87nOfq9p2zJgxfO1rX1uzf+2113L99df3SFxf+9rX1hSkjBgxgm9/+9tV2w4dOpTvfve7a/bvu+8+zj333B6JS5IkSZIkSZIkSVL/5EwpGnSsiFZ/dt9997HHHnus+f382Mc+xllnnVXznJUrVzJp0iTmzJkDwN57781dd91V17hmzpzJ1ltvzdKlSwE48sgjufzyy9s97+Uvfzn33XcfAJMnT+bJJ59k+PDhdY1NUt9o1LujzAMkSeqeRs0BwDxAkqTuMg+QJGnwcqYUSRogfvnLX67zH6Ojjz663XOGDRvGEUccsWb/7rvv5qGHHqprXJdddtmagpSOxgVwzDHHrNmeMWMGf/7zn+salyRJkiRJkiRJkqT+y6IUSepHrrjiijXbw4cPZ6+99urQeQcccMA6+x2ZxaQzWvfXerxqejouSZIkSZIkSZIkSf2XRSmS1E888cQTTJ06dc3+7rvv3uGlbl7xiless3/99dfXLa7ly5dz0003rdmfMGECW221VYfO3WeffXosLkmSJEmSJEmSJEn9m0UpkhrOIYccQkR063HjjTf29bfxEg888MA6+9tss02Hz23d9sEHH6xLTAAPP/wwq1at6lJc48aNY8KECWv2n376aRYsWFC32CRJkiRJkiRJkiT1X0P7OgBJ6qpx48YxatSodtstWbKEhQsXrtlvampap1Civ2hdSDJ58uQOnzt69GjGjRu3puBj7ty5PP/882y66aZ9GldL+9mzZ6/Z/9e//sX+++/f7bgkSZIkSZIkSZIk9W/OlCKpYX33u9/l+eefr/mYOnUqW2+99TrnnXnmmey6664v6e+kk07q9gws7T3OP//8qt/PtGnT1tnvbEFJ6/at++uq/hqXJEmSJEmSJEmSpP7NohRJA9oHPvAB7rvvvjX7b3/72/nMZz7ThxFVVzmbC9ChWWBqtW/dX1f117gkSZIkSZIkSZIk9W8WpUgasL7zne/wq1/9as3+DjvswAUXXEBE9GFU1bUu1hgxYkSnzh85cmTN/rqqv8YlSZIkSZIkSZIkqX8b2tcBSH2lVmFCZvZiJOqsT37ykxx//PEcdNBBVdv89a9/5ZOf/OSa/TFjxvCb3/yGcePGVT3n/PPPr7m8Tk9bunTpOvvDhw/v1Pmt2y9ZsqTbMUH/jUtSz+uvRXz1YB4gSVJ1AzkHAPMASZJqMQ+QJGnw6qk8wKIUSQ3nzW9+c83jzz77LMcccwyrVq1a89x5553Hzjvv3NOhdUvrZW5WrFjRqfNbt19vvfW6HRP037gkSZIkSZIkSZIk9W8WpWjQsup5YFqxYgVHHXUUs2bNWvPcJz/5Sd75znf2YVQdM3bs2HX2ly9f3qnzly1bts7+mDFjuh0T9N+4JPW8WtfKRr9zyjxAkqTqBnIOAOYBkiTVYh4gSdLg1VN5QFOXz5Skfui0007j9ttvX7P/2te+lq9+9at9GFHHtS7+aL1sTntat2/dX1f117gkSZIkSZIkSZIk9W8WpQxwETEiIk6LiFsjYnZELIqIByPiaxGxWZ3H2jMifh4RUyNiaUTMiIhrI+LIDp6/XkQcERE/iIjbI2JORKyMiAVlzD+NiAPqGbMGlnPPPZef/OQna/a33HJLLrroIoYMGdKHUXXclClT1tmfOXNmp85v3b51f13VX+OSJEmSJEmSJEmS1L9ZlDKARcQWwG3A2cBWwC+AbwOLgU8B90bE6+o01unAHcD7gAeArwK/A14NXB4Rl0TEiBrnvxWYCVwBfAhYAVwA/A9wKbARcDJwa0T8KCIao8pAveauu+7iQx/60Jr9kSNHcvnllzNhwoQO93HSSScRET36OP/886uOv8suu6yz/+yzz3Y49sWLF/Piiy+u2d9ggw2YNGlSh8+vpTtxtdV+55137nZMkiRJkiRJkiRJkvq/oX0dgHpGRIwGrgF2pyhMOSwzF5aHPxcRZwOnAb+JiAMz8/5ujHUCRbFLAsdm5iUVx84C/gYcDSwF3lulm82AMcAq4IjMvKbVGGOBc4F3AqcCzwJf6mrMGlhmz57NUUcdxfLly9c894Mf/IB99tmnD6PqvF133XWd/alTp3b43NZtWxeSdMdOO+3E0KFDWbVqVafjWrBgAXPmzFmzv/nmm7P++uvXLTZJkiRJkiRJkiRJ/ZczpQxcZ1AUpKwCTqwoSGnxceBxikKQc7o6SERsBHy/3L2gsiAFIDMfppiVBeDEiHhDO11+t3VBStnPQuADwLLyqdMiIroatwaO1atX8653vYvp06evee6DH/wg73//+/swqq7Zdttt2Xrrrdfs33///axcubJD5951113r7B922GF1i2vEiBEcfPDBa/Znz569zs+7lrvvvpvM7JG4JEmSJEmSJEmSJPVvFqUMQBExHvhIuXtdZj7Wuk1mrmRtMcoBEXF4F4f7GDCu3P5+lTYXAvPK7TOrtJkN3EuxVE+bMnM+8GC5uzEwsTOBamD67//+b2644YY1+/vvvz9nn312l/o6//zzycwefZx00kk1YzjyyCPXbC9fvpx77rmnQ7H//e9/X2f/qKOO6vT339G4AG677bYOndfTcUmSJEmSJEmSJEnqvyxKGZjeBowut39Xo13ljCTHdnGslvNmZeZdbTXIzBXA9eXufhExpY02l2XmHpl5ezvjNVdsL6vaSoPCpZdeyre+9a01+5tssgmXXXYZw4cPr3rORRddxDve8Y4uF670tOOPP57KSYAuueSSGq0Lq1at4je/+c2a/b322oudd965rnEdffTRjBw5slNxtW636aab8rrXva6ucUmSJEmSJEmSJEnqvyxKGZjeWLH9jxrtHgFalvV5U2cHiYgdgW06MA5AZcHKmzs7VjneGGDXcvfOzFzQlX40MDz44IPrLNEzdOhQLrnkEjbbbLOa5z388MNcddVV/OMf7f3K9o099tiDd77znWv2L7zwQhYvXlzznMsvv5zZs2ev2f/yl7/c7jiZyZVXXslZZ53FHXfc0W77TTbZhNNOO23N/u9+9zueffbZmufcfvvt3HvvvWv2P//5z9csGJIkSZIkSZIkSZI0sFiUMjDtXrH9RLVGmZnAtHJ3YkRs2hPjlKZWbO/WyXFafBMYBawAPtrFPjQALFiwgCOPPJJFixatee6b3/wmr3rVq/owqvr5yle+wujRxWRHzz//PF/84hertl28eDGf+tSn1uy/4Q1v4PDD21+N69hjj+WII47gE5/4BPvvvz/nnHNOu+d8+tOfZtNNi38mli1bxsc//vGqbVevXs1HPvKRNfu77rorJ598crtjSJIkSZIkSZIkSRo4LEoZYCKiCdi+3F2ZmbNrtQdmVGzv2MnhKtvPqNqqC+NExJiI2CYi9o6If4uIW4FTgYeB12bmrZ2MVQNEZnLCCSfw6KOPrnnune98J6eeeirLli1r97Fq1ao+jL5jtttuOy688EKamop/or/+9a/zne98h6KObK158+bxpje9iaeeegqA7bffnl/96lft9v/II4+ss6xOZnLmmWe2e94GG2zAVVddxahRowC4+OKL+cQnPvGSn+nSpUs57rjjuP32YjWuCRMmcNVVVzF06NB2x5AkSZIkSZIkSZI0cPgJ4cAzBhhWbi+q1bCNNht0cqwNq/RTj3HeCZxXsb8A+DLwP5m5omPhaSC64ooruPrqq9d57rLLLuOyyy7ro4h6xtvf/nYuuOACTj31VBYtWsTpp5/O+eefz5vf/GY22mgjHnvsMX7961/z4osvArDnnnty2WWXseGGG7bTc/fsu+++XHXVVRx//PHMmjWLs846iyuvvJIjjzySSZMm8dRTT3HRRRcxc+ZMALbeemsuvfRSttlmm3Z6liRJkiRJkiRJkjTQWJQy8Iyp2F7egfbLKrbH9uBYnR3nBuAIYD1gO+AY4DPAyRHxmcz8eWcCbUtEdPqc1jNVqPctXLiwr0PoNe95z3vYb7/9OOOMM7j66qu59957uffee9dps9lmm/GBD3yAT3/60wwfPrxD/e64444cddRRXH755UDxt/DZz362w3G9/vWv57777uOMM87gkksu4YknnuCb3/zmOm023HBDTjzxRM4880zGjRvX4b4l9Y2uXBMbnXmAJEmDMwcA8wBJksA8oDPMAyRJA01v5wHhxXRgiYjJwLPl7vOZOamd9r8Eji93T8zMX3ZirJ8AHyh3T83Mc2q03RZ4vNydmpnbdnSc8vygmCnl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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 622, + "width": 1106 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(3,4,figsize=(18,10),sharey=True, sharex=True)\n", + "inum=0\n", + "for j in range(3):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + "\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + " \n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[2][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=\"HMcode2020 TAGN\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][1].set_xscale('log')\n", + " axes[2][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(\"HMcode2020 TAGN\")\n", + " axes[j][3].plot(k,l1, label=\"Linear\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][3].set_xscale('log')\n", + " axes[2][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Linear\")\n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][2].set_xscale('log')\n", + " axes[2][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-1E-2, 4E-2)\n", + " from matplotlib.cm import ScalarMappable\n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,3E-2,\"z={0}\".format(zs[0]), size=20)\n", + " axes[1][0].text(1E-2,3E-2,\"z={0}\".format(zs[1]), size=20)\n", + " axes[2][0].text(1E-2,3E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " sm = ScalarMappable(cmap=cmap)\n", + " cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "18a6ad7c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 350, + "width": 1115 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(1,4,figsize=(18,5),sharey=True, sharex=True)\n", + "axes=[axes]\n", + "inum=0\n", + "for j in range(1):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + "\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + " \n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[0][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=\"HMcode2020 TAGN\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][1].set_xscale('log')\n", + " axes[0][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(\"HMcode2020 TAGN\")\n", + " axes[j][3].plot(k,l1, label=\"Linear\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][3].set_xscale('log')\n", + " axes[0][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Linear\")\n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][2].set_xscale('log')\n", + " axes[0][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-5E-3,5E-3)\n", + " from matplotlib.cm import ScalarMappable\n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,1E-3,\"z={0}\".format(zs[0]), size=20)\n", + " #axes[1][0].text(1E-2,3E-2,\"z={0}\".format(zs[1]), size=20)\n", + " #axes[2][0].text(1E-2,3E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " #sm = ScalarMappable(cmap=cmap)\n", + " #cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " #fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02b1ebae", + "metadata": {}, + "outputs": [], + "source": [ + "print(inum)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "571fe26f", + "metadata": {}, + "outputs": [], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,z,nu=nuFlag,pk=True,gauge='synchronous')\n", + "# if ceng.sigma8()<0.616:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa0d9686", + "metadata": {}, + "outputs": [], + "source": [ + "ceng.sigma8()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c82f905e", + "metadata": {}, + "outputs": [], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1883262b", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pCAMB_NL_Hy' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m## newtonian vs synch gauge\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL_Hy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"NL Hy\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$k \\ h/\\rm{Mpc} $'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'pCAMB_NL_Hy' is not defined" + ] + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pCAMB_NL_Hy)/np.array(pCAMB_NL) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAInCAYAAACIgohPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB/k0lEQVR4nO3dd3hcxfX/8fdRt+Tebdy7AYOxqaYYMB0CJEAoIQUSQiCVNAJffqGEJJCQQBoJpBASeg0QQu+92FTb2Ma99y6rn98fd7VarVbSrqTdq5U+r+fZZ/femTtzpGuBjmbujLk7IiIiIiIikj45YQcgIiIiIiLS0SnxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeIiIiIiIiaabES0REREREJM3ywg5ApC2Y2WKgO7Ak5FBEREREpOMaAWxz95GpXqjESzqK7l26dOk9ceLE3mEHIiIiIiId09y5c9m1a1eLrlXiJR3FkokTJ/aeOXNm2HGIiIiISAc1depUZs2ataQl1+oZLxERERERkTRT4iUiIiIiIpJmSrxERERERETSTImXiIiIiIhIminxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeWcrMhpjZP8xslZmVm9kSM7vJzHql2E7vyHVLIu2sirQ7pC37NrPdzew+M1tnZmVmNs/MrjazLqnEKyIiIiKSjfLCDkBSZ2ajgdeB/sAjwCfA/sB3gePM7GB335hEO30i7YwDngfuASYA5wEnmtlB7r6otX2b2QGR9vOBB4DlwJHAT4EZZjbD3ctb8r0QEREREckGGvHKTjcTJD7fcfdT3f0n7n4kcCMwHvh5ku38giDp+q27z4i0cypBEtU/0k+r+jazXOA2oBg43d3PcfdLgQOAB4GDgUtS+NpFRERERLKOuXvYMUgKIiNOnwJLgNHuXhNT1g1YDRjQ3913NtFOV2AdUAMMcvftMWU5wCJgeKSPRS3t28yOBJ4DXnb36XExjAIWAkuBkd6Kf4xmNnPKlClTZs6c2dImUnbjM/O5862l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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict = {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_class')\n", + "pk_lin_class = ccl.linear_matter_power(cosmo, k, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "5b54f4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_camb')\n", + "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "4aac71cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'k(Mpc/h)')" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 271, + "width": 439 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)\n", + "plt.xlim(1E-3, 1E0)\n", + "plt.ylim(-5E-3,5E-3)\n", + "plt.ylabel(\"class/camb-1\")\n", + "plt.xlabel(\"k(Mpc/h)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf0358e8", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':0,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "9b828555", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " #'ncdm_fluid_approximation':3,\n", + " #'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + "\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 253, + "width": 396 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pL0/pCAMB-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "2ce9c53f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":2: RuntimeWarning: invalid value encountered in divide\n", + " y = np.sin(x)/x\n" + ] + }, + { + "data": { + "text/plain": [ + "(-0.1, 0.1)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 257, + "width": 413 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x =np.linspace(0,100,10000)\n", + "y = np.sin(x)/x\n", + "plt.plot(x,y)\n", + "plt.ylim(-0.1,0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e3154a5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/cambvsclass.ipynb b/class/notebooks/cambvsclass.ipynb new file mode 100644 index 00000000..d82bc2cf --- /dev/null +++ b/class/notebooks/cambvsclass.ipynb @@ -0,0 +1,825 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})" + ] + }, + { + "cell_type": "markdown", + "id": "b57bd5c9", + "metadata": {}, + "source": [ + "https://github.com/xzackli/Cosmology-Notebooks/blob/master/camb_v_class_2022.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "nuFlag=True\n", + "bolt_names = ['h','Omr','Omb','Omcb','ns','Y_p','Neff','smnu','As']\n", + "h=0.55\n", + "bolt_cosmo = [h,5.042e-5*(0.7/h)**2,0.046*(0.7/h)**2,(0.224+0.046)*(0.7/h)**2,1.0,0.24,3.046,0.1,1e-10*np.exp(3.043)] #this is the choice of Planck TTTEEE in class for nu\n", + "cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + "# cosmo_dict['Omm'] = cosmo_dict['Omcb']+cosmo_dict['smnu']/93.14/cosmo_dict['h']**2\n", + "\n", + "k = np.logspace(-4,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "343c105e", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict={'h': 0.5222271667627512, 'Omb': 0.0602597963311839, 'Omcb': 0.27467162574577264, 'ns': 0.9280611436133656, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1729944451915938, 'As': 1.0791952989168323e-09, 'TAGN': 7.2, 'Omcdm': 0.21441182941458875}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "beb984ef", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.,\n", + " 'nonlinear_verbose' : 2, \n", + " 'z_infinity':10\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " 'tol_ncdm_synchronous':1.e-10,\n", + " 'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "dd878ca2", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=2)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + "\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=[z],kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " zmin,zmax = z,z\n", + " nz=1\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7c0b8ea7", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=7.8\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " #'z_pk': z,\n", + " 'z_max_pk':2\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " # 'z_pk': z+0.1,\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " print(m_ncdm)\n", + " print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z Parameters at redshift z = 0.000000e+00:\n", + " ==================================\n", + " Parameters at redshift z = 1.008916e+00:\n", + " fnu: 1.805822e-02\n", + " sigd [Mpc/h]: 1.974188e+00\n", + " sigd100 [Mpc/h]: 9.949791e-01\n", + " sigma8: 2.378447e-01\n", + " sigma8 cc: 2.378447e-01\n", + " nu min: 8.755116e-01\n", + " nu max: 1.099371e+02\n", + " r_v min [Mpc/h]: 2.520156e-04\n", + " r_v max [Mpc/h]: 2.520156e+01\n", + " r_nl [Mpc/h]: 3.290248e-02\n", + " k_nl [h/Mpc]: 3.039285e+01\n", + " sigma_nl: 9.999996e-01\n", + " neff: -2.619297e+00\n", + " c min: 5.196000e+00\n", + " c max: 6.057967e+00\n", + " Dv: 2.019308e+02\n", + " dc: 1.682642e+00\n", + " g: 4.716504e-01\n", + " G: 4.908571e-01\n", + " eta: 2.161861e-01\n", + " k*: 2.406559e-01\n", + " Abary: 5.196000e+00\n", + " sigma_disp: 1.974188e+00\n", + " alpha: 5.447781e-01\n", + " kd (h/Mpc): 2.722796e-01\n", + " 2halo f: 6.986323e-02\n", + " ksize, kmin, kmax: 149, 1.984343e-07, 9.959319e+01" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "d36ec6d8", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=True)\n", + "#pCAMB, pCAMB_NL_Hy, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "132b990f", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL_Hy, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=False)" + ] + }, + { + "cell_type": "markdown", + "id": "1772dc70", + "metadata": {}, + "source": [ + "WRITE_PARAMETERS: at this redshift\n", + " ==================================\n", + " z: 0.00000\n", + " Dv: 493.00146\n", + " dc: 1.66737\n", + " eta: 0.13674\n", + " k*: 0.06736\n", + " A: 5.19600\n", + " fdamp: 0.22779\n", + " alpha: 0.69330\n", + " GROWTH: Solving growth equation\n", + " GROWTH: ODE done\n", + " GROWTH: Unnormalised g(a=1): 0.636393249034882\n", + " GROWTH: Accumulated G(a=1): 0.864072216027356\n", + " GROWTH: Done\n", + "\n", + " LINEAR POWER: Filling linear power HM_tables\n", + " LINEAR POWER: k_min: 1.000000000000000E-003\n", + " LINEAR POWER: k_max: 100.000000000000\n", + " LINEAR POWER: nk: 512\n", + " LINEAR POWER: z of input: 0.000000000000000E+000\n", + " LINEAR POWER: Delta2_min: 6.003104760469995E-007\n", + " LINEAR POWER: Delta2_max: 18.3881964281764\n", + " LINEAR POWER: sigma_8: 0.835929213772295\n", + " LINEAR POWER: Done\n", + "\n", + " SIGTAB: Filling sigma interpolation table\n", + " SIGTAB: R_min: 9.999999747378752E-005\n", + " SIGTAB: R_max: 1000.00000000000\n", + " SIGTAB: Values: 64\n", + " SIGTAB: sigma_min: 2.533793116562932E-003\n", + " SIGTAB: sigma_max: 16.0818172377472\n", + " SIGTAB: Done\n", + "\n", + " INIT_WIGGLE: Starting\n", + " INIT_WIGGLE: kmin [h/Mpc]: 4.999999888241290E-003\n", + " INIT_WIGGLE: kmax [h/Mpc]: 5.00000000000000\n", + " INIT_WIGGLE: nk: 512\n", + " INIT_WIGGLE: Splitting into wiggle and broad-band\n", + " INIT_WIGGLE: Isolating wiggle\n", + " INIT_WIGGLE: Initialising interpolator\n", + " INIT_WIGGLE: Done\n", + " HALOMOD: Filling look-up HM_tables\n", + " HALOMOD: HM_tables being filled at redshift: 0.000000000000000E+000\n", + " HALOMOD: sigv [Mpc/h]: 7.00395290680539\n", + " HALOMOD: sigv100 [Mpc/h]: 3.60403186675978\n", + " HALOMOD: sig8(z): 0.835929213772295\n", + " HALOMOD: cold sig8(z): 0.835929213772295\n", + " HALOMOD: M_min [log10(Msun/h)]: 0.000000000000000E+000\n", + " HALOMOD: M_max [log10(Msun/h)]: 17.9999999931845\n", + " HALOMOD: m, r, nu, sig, sigf HM_tables filled\n", + " HALOMOD: rv HM_tables filled\n", + " HALOMOD: nu min: 0.113990947250776\n", + " HALOMOD: nu max: 41.9350235664729\n", + " HALOMOD: sig min: 3.976074624562467E-002\n", + " HALOMOD: sig max: 14.6271951505295\n", + " HALOMOD: R_v min [Mpc/h]: 2.362725886259391E-005\n", + " HALOMOD: R_v max [Mpc/h]: 23.6272684671526\n", + " HALOMOD: r_nl [Mpc/h]: 2.14590683514100\n", + " HALOMOD: k_nl [h/Mpc]: 0.466003455333741\n", + " HALOMOD: n_eff: -2.10839791857899\n", + " HALOMOD: c HM_tables filled\n", + " HALOMOD: c min [Msun/h]: 5.20552106893297\n", + " HALOMOD: c max [Msun/h]: 90.5349065194655\n", + " HALOMOD: Done" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4a43b99", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "75e82d24", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL_hmcode2016, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=True, mead=\"mead2016\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "047f69f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ItKVKTiLv1f84xx/r7AgM8vHm/pXAbzdQj1vA5XALL9caD0peIk9Qtvb07Zf9o+R+6Xhp+kfj5e2P3Kz6wzg33gjZv8ATnfO1bfwnmKZ4R9XNfuUiIiIiEgXpuAszpxzK4HngZHAhRG3r8UbHbrPOVceuGhmE80sLNOgc64Mbx1XLk33ObvIr/85P939HreNtw5sKXCYmR0f0qcU4Pf+6e2hUxX95B+PAycAfwfOikzdH8nMpke5lmJmPwMOArYTJZ2/iIiIiEh3oYQgiXEB8CZwk5kdhRf8zMDbh2w5cFXE80v9o0VcvxI4ArjczPYD3sXbMPoEYCtNA7A2t+2cqzezs/BG0B4xs0eAtXgp8afj7Y3254g2bgeOwQuoNgBXh+xRHTDfOTc/5Pw9M1uCl/xjA95atlnA3nijed92zu2O8n5ERERERLoFBWcJ4Jxb6Y8U/RJvuuAxwCbgRuDaKGnmY9Wzw8wOAq4BTgQOBXYAdwNXO+fWd0Tbzrl3zOwAvNG1OUA+3lTGXwK/c85VRxQZ5R/7Alc38xbmh7z+I3Ag3qbXRUADXhB4K3B96AigiIiIiEh3ZG1InCfSpZnZwqlTp05duDDWHtUiIiIiIu0zbdo0Fi1atCjW9k7N0ZozERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgLEHMbKiZ3WVmG82s2sxWm9kNZta7jfUU+eVW+/Vs9Osd2pFtm9lkM3vYzLaaWZWZfWZm15pZdjNlDjaz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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 279, + "width": 435 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "519631be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 249, + "width": 379 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.loglog(k, pNL0)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "bcba396d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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q6++ms2bN5eru3HjRq688kr69u1LWloanTt35owzzmDOnDmVtp2dnc31119Pz549adGiBUOHDuWee+6hpKQkajx/+MMfGDlyJK1ataJ169YcdthhlfaQnHHGGRUSJoBhw4bxgx/8AKDCMLPHH3+c/Px8rrrqqlDCBNC+fXtuvvlmAB5++OFy59x0000VEqbS/RkZGcyfP5/t27eH9jvnQm386U9/KpcYnXbaaRx11FEsWLCADz/8sMqvQ02ZGWeeeSYvvvgiAHfccQcbN26sUC8lJYWLLrqIL7/8krlz55Y7tm3bNl599VXOPPNMOnToUO+YREQa0vpd+5j84KxyCVPbjFTuOG0EM385nimnjmDiiK4M7pJJ93YZ9GiXwfDubZi0X1dumjSU9244hud/ehhHDuwUOn/b3gIuf2oOv397IUXFVf+fJE2PkiaRZmrChAn07du3whC9OXPm8PXXX3PxxRdX2Zuxc+dODj/8cH71q1+xd+9eLr74Yn72s58xbNgwnnjiiXLP3qxcuZIxY8bw0EMPMWDAAG644QYmTpzIW2+9xeGHH86bb75Zru38/HyOO+447r33Xjp16sQ111zDMcccw29/+1uuu+66SuPZtWsXRx55JDfffDPJyclcfPHFXHDBBWzdupVzzz2X3/zmNzX+uqSmpgJUGG5W+vxXZYnkiSeeWK5Odcws1H5yctkDxsuXL2fNmjUMHjyYfv361fs6NTF+/HiOPPJI9u3bV+XzXJdccglmxqOPPlpu/7///W8KCgq49NJLGyweEZGGsHp7Dmc//AlLNu8N7TvlwO68d8MxnH9Y3xpN7mBmHNKvA09dMpZHzx9D1zYtQsce+WgFF//7S3Lyixolfok/Gp4nksCiTdCwa9euqOeaGT/5yU/4v//7Pz755JPQsLJHH32UpKQkLr74YqZPn17puVdeeSVz587l8ssv58EHHyyXXO3du5fi4uJQ+fLLL2fDhg3ceeed3HLLLaH9V1xxBUcffTQXXHABq1evpnXr1gDcfffdfPHFF5xxxhm88MILobZ/9atflRsuF+7aa6/l66+/5q677uKXv/xlaH9eXh6TJ0/m97//PWeddRYjR46M+jXZs2cPL730EmbGCSecUO7Y4sWLARg8eHCF87p160arVq1Yt24dubm5tGzZMup1XnjhBbKzszn00ENp165dja4B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EZ+ISK0oaRIRkXgSnqSsdM7tiqzgnPsPcHvYrgHAG2aWEVk3FvFUxl8QN/y5m2jJVvhU47Occ5GTHjQI59zXzrmPw161nRa8tm4ysyOrqXMb5YfyrcBbxLgyf6D8rHm3mtkPahqMmXWpaV0RkUhKmkREJJ6EJylVPj/knJtC+ed0xgLP+BM3xDyeShxA+QVxo50bnjQ1yFTjcWAX3vDJt83s0sihdGbW3swewkuawl3hnCuhEv7zV78P25UC/NfMHjGzvpWdY2YdzOxiM/uc8rMGiojUSkr1VURERBqfmfUGOoTtqm4o3CVAL2C8X54M3AdcHVA84Wo0CYSZHQj0CdvVGM8zBeFm4M94ww4fAf7gJy67gO7AYUBaxDn3O+emVdPubcBQvGfbwFuw91LgUjNbCCzDm32wDd5074Mp+wPx7Hp8HhFp5pQ0iYhIvIh8fihqz45zrtCfdnwWMNzf/XMzW+2cuzvW8UQIT5qKgXlV1AvvZVrknFtai2vEs4XAGcDLQCu8Z89OjFL/70C1a28554rN7Gy8oXo3Un7EzDA0FbmINBINzxMRkXhR60kX/GeMTqL8Oj5/NrPvBxFPFecucs7tq6Je+FTjTWVoHgDOuenAaOAlKs7cV2ohcKpz7grnnKuiTmS7Jc65m4D9geeAnGpOWYz3DNxdNQpcRKQSVsOfUSIiItKAzKwrsAFviBnAUc65jwMMqc7M7ELgibBd451zM8KOdwKOAHriDdnbhLdw8dwGuHYacDjQF+gMpOIN0VsJzHXOravvNURENDxPREQkGKdQljBto/L1iZoE59w24LVGarsAmNEYbYuIlNLwPBERkWCED8172zlXHFgkIiISlXqaREREgjETmOO/b1LPM4mINDVKmkRERALgnPtT0DGIiEjNaHieiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSi0uK2IiIiIiEgU6mkSERERERGJQkmTiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSiUNImIiIiIiEShpElERERERCQKJU0iIiIiIiJRKGkSERERERGJQkmTiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSiUNImIiIiIiEShpElERERERCSK/wfAXcmzwQuTwQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 422 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pNL0/pCAMB_NL - 1, label=\"HMcode2020 DM\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()\n", + "### newtonian vs synch gauge\n", + "#plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"HMcode2020 TAGN\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()\n", + "##newtonian vs synch gauge\n", + "#plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()\n", + "#\n", + "#plt.plot(k,pNL0_HMcode2016/pCAMB_NL_hmcode2016 - 1, label=\"HMcode2016\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fac4996d", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75df5ef5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e92e60f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/cl_ST.ipynb b/class/notebooks/cl_ST.ipynb index c85450c4..4255da1e 100644 --- a/class/notebooks/cl_ST.ipynb +++ b/class/notebooks/cl_ST.ipynb @@ -3,11 +3,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# import necessary modules\n", @@ -25,11 +21,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# esthetic definitions for the plots\n", @@ -43,11 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "#############################################\n", @@ -180,11 +168,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "plt.savefig('cl_ST.pdf',bbox_inches='tight')" @@ -200,16 +184,16 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3", + "version": "3.9.7" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/class/notebooks/cltt_terms.ipynb b/class/notebooks/cltt_terms.ipynb index 7d7f807d..90f64356 100644 --- a/class/notebooks/cltt_terms.ipynb +++ b/class/notebooks/cltt_terms.ipynb @@ -3,11 +3,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# import necessary modules\n", @@ -25,11 +21,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# esthetic definitions for the plots\n", @@ -43,11 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "#############################################\n", @@ -65,9 +53,14 @@ " 'n_s':0.9619,\n", " 'tau_reio':0.0925,\n", " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", - " 'YHe':0.246,\n", + " 'YHe': 0.2457089991568521\n", " # other output and precision parameters\n", - " 'l_max_scalars':5000}\n", + " 'l_max_scalars':5000,\n", + "\n", + " 'omega_ncdm': 0.000644866570625114, \n", + " 'N_ncdm': 1,\n", + " 'N_ur': 2.0328, \n", + " }\n", "###############\n", "# \n", "# call CLASS \n", @@ -132,11 +125,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "plt.savefig('cltt_terms.pdf',bbox_inches='tight')" @@ -152,16 +141,16 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3", + "version": "3.9.7" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/class/notebooks/one_k.ipynb b/class/notebooks/one_k.ipynb index ef81af01..50691b09 100644 --- a/class/notebooks/one_k.ipynb +++ b/class/notebooks/one_k.ipynb @@ -3,11 +3,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# import necessary modules\n", @@ -25,11 +21,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# esthetic definitions for the plots\n", @@ -43,11 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "deletable": true, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "#############################################\n", @@ -208,16 +196,16 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3", + "version": "3.9.7" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/class/ode_example b/class/ode_example new file mode 100755 index 0000000000000000000000000000000000000000..6c14c11dc61b889c66ca422c1db23b281ec4660a GIT binary patch literal 12736 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 I`>^l%4|I)&iU0rr literal 0 HcmV?d00001 diff --git a/class/source/.input.c.swp b/class/source/.input.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..a9f10659e1dcedae9798eae2fe38792dbe3aad01 GIT binary patch literal 16384 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ⅇ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 UW1ZFxs=4C~;H;H?lC#_Y20;KB@Bjb+ literal 0 HcmV?d00001 diff --git a/class/source/.perturbations.c.swp b/class/source/.perturbations.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..e45e91850609cac2b02f56616520b86b2bfea439 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/class/source/input.c b/class/source/input.c index a4b32679..9280dda3 100644 --- a/class/source/input.c +++ b/class/source/input.c @@ -2837,73 +2837,114 @@ int input_read_parameters( ppt->has_nl_corrections_based_on_delta_m = _TRUE_; } if ((strstr(string1,"hmcode") != NULL) || (strstr(string1,"HMCODE") != NULL) || (strstr(string1,"HMcode") != NULL) || (strstr(string1,"Hmcode") != NULL)) { - pnl->method=nl_HMcode; - ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); - ppt->has_nl_corrections_based_on_delta_m = _TRUE_; - class_read_int("extrapolation_method",pnl->extrapolation_method); + pnl->method=nl_HMcode; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + class_read_int("extrapolation_method",pnl->extrapolation_method); + + class_call(parser_read_string(pfc, + "feedback model", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if (strstr(string1,"emu_dmonly") != NULL) { + pnl->feedback = nl_emu_dmonly; + } + if (strstr(string1,"owls_dmonly") != NULL) { + pnl->feedback = nl_owls_dmonly; + } + if (strstr(string1,"owls_ref") != NULL) { + pnl->feedback = nl_owls_ref; + } + if (strstr(string1,"owls_agn") != NULL) { + pnl->feedback = nl_owls_agn; + } + if (strstr(string1,"owls_dblim") != NULL) { + pnl->feedback = nl_owls_dblim; + } + } - class_call(parser_read_string(pfc, - "feedback model", - &(string1), - &(flag1), - errmsg), - errmsg, - errmsg); + class_call(parser_read_double(pfc,"eta_0",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"c_min",¶m3,&flag3,errmsg), + errmsg, + errmsg); - if (flag1 == _TRUE_) { + class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), + errmsg, + "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); - if (strstr(string1,"emu_dmonly") != NULL) { - pnl->feedback = nl_emu_dmonly; - } - if (strstr(string1,"owls_dmonly") != NULL) { - pnl->feedback = nl_owls_dmonly; - } - if (strstr(string1,"owls_ref") != NULL) { - pnl->feedback = nl_owls_ref; - } - if (strstr(string1,"owls_agn") != NULL) { - pnl->feedback = nl_owls_agn; - } - if (strstr(string1,"owls_dblim") != NULL) { - pnl->feedback = nl_owls_dblim; - } - } + if ((flag2 == _TRUE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + class_read_double("c_min", pnl->c_min); + } + else if ((flag2 == _TRUE_) && (flag3 == _FALSE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + pnl->c_min = (0.98 - pnl->eta_0)/0.12; + } + else if ((flag2 == _FALSE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("c_min", pnl->c_min); + pnl->eta_0 = 0.98 - 0.12*pnl->c_min; + } - class_call(parser_read_double(pfc,"eta_0",¶m2,&flag2,errmsg), - errmsg, - errmsg); - class_call(parser_read_double(pfc,"c_min",¶m3,&flag3,errmsg), - errmsg, - errmsg); + class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), + errmsg, + errmsg); - class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), - errmsg, - "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); + if (flag1 == _TRUE_) { + class_read_double("z_infinity", pnl->z_infinity); + } + } - if ((flag2 == _TRUE_) && (flag3 == _TRUE_)) { - pnl->feedback = nl_user_defined; - class_read_double("eta_0", pnl->eta_0); - class_read_double("c_min", pnl->c_min); - } - else if ((flag2 == _TRUE_) && (flag3 == _FALSE_)) { - pnl->feedback = nl_user_defined; - class_read_double("eta_0", pnl->eta_0); - pnl->c_min = (0.98 - pnl->eta_0)/0.12; - } - else if ((flag2 == _FALSE_) && (flag3 == _TRUE_)) { - pnl->feedback = nl_user_defined; - class_read_double("c_min", pnl->c_min); - pnl->eta_0 = 0.98 - 0.12*pnl->c_min; - } - class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), - errmsg, - errmsg); + if ((strstr(string1,"hmcode2020") != NULL) || (strstr(string1,"HMCODE2020") != NULL) || (strstr(string1,"HMcode2020") != NULL) || (strstr(string1,"Hmcode2020") != NULL)) { + pnl->method=nl_HMcode_2020; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + class_read_int("extrapolation_method",pnl->extrapolation_method); - if (flag1 == _TRUE_) { - class_read_double("z_infinity", pnl->z_infinity); - } + class_call(parser_read_string(pfc, + "feedback model", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + + class_call(parser_read_double(pfc,"hmcode2020log10tagn",¶m2,&flag2,errmsg), + errmsg, + errmsg); + + class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), + errmsg, + "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); + + if ((flag2 == _TRUE_)){ + pnl->feedback = hmcode2020tagn; + class_read_double("hmcode2020log10tagn", pnl->hmcode2020log10tagn); + } + + class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_read_double("z_infinity", pnl->z_infinity); + } } + + + } /** (g) amount of information sent to standard output (none if all set to zero) */ diff --git a/class/source/mead_growth.c b/class/source/mead_growth.c new file mode 100644 index 00000000..a937ca2e --- /dev/null +++ b/class/source/mead_growth.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include + +// Standard libraries for C + +// Parameters +const double a_init = 1e-4; // Initial scale-factor for growth ODE integration + +double _w(double a, double w0, double wa) { + return w0 + (1.0 - a) * wa; +} + +double _X_w(double a, double w0, double wa) { + return pow(a, -3.0 * (1.0 + w0 + wa)) * exp(-3.0 * wa * (1.0 - a)); +} + +double _Hubble2(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double Om = 1-omega0k; + double H2 = Om_m * pow(a, -3.0) + Om_w * _X_w(a, w0, wa) + (1.0 - Om) * pow(a, -2.0); + return H2; +} +double _Omega_m(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + return omega0m * pow(a, -3.0) / _Hubble2(a, omega0m, omega0w, omega0k, w0, wa); +} + + +double _AH(double a, double omega0m, double omega0w, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double AH = -0.5 * (Om_m * pow(a, -3.0) + (1.0 + 3.0 * _w(a, w0, wa)) * Om_w * _X_w(a, w0, wa)); + return AH; +} +typedef struct { + double omega0m; + double omega0w; + double w0; + double wa; + double omega0k; +} Params; + + + + +int meadgrowth(double a, const double y[], double f[], void *params) { + Params *p = (Params *)params; + f[0] = y[1]; + double fv = -(2.+_AH(a, p->omega0m, p->omega0w, p->w0, p->wa)/_Hubble2(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa))*y[1]/a; + double fd = 1.5*_Omega_m(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa)*y[0]/pow(a,2); + f[1] = fv+fd; + return GSL_SUCCESS; +} + +int main() { + Params params = {0.3, 0.7, -1, 0., 0}; + gsl_odeiv2_system sys = {meadgrowth, NULL, 2, ¶ms}; + + gsl_odeiv2_driver *driver = gsl_odeiv2_driver_alloc_y_new(&sys, gsl_odeiv2_step_rk8pd, 1e-6, 1e-6, 0.0); + double a_init=1E-4, a = 1; +//omega0m, double omega0w, double omega0k, double w0, double wa + double f = 1.-_Omega_m(a_init, 3.120461e-01,6.878622e-01, 0.0, -1, 0); + + double y[2] = {pow(a_init,(1.-3.*f/5.)), (1.-3.*f/5.)*pow(a_init,(-3.*f/5.))}; + int status = gsl_odeiv2_driver_apply(driver, &a_init, a, y); + printf("%le \n", a_init); + + if (status != GSL_SUCCESS) { + printf("Error, return value=%d\n", status); + } + + printf("t=%.5e, y(t)=%.5e, y'(t)=%.5e\n", a, y[0], y[1]); + gsl_odeiv2_driver_free(driver); + return 0; +} + diff --git a/class/source/nonlinear.c b/class/source/nonlinear.c index 71a8b0f1..e683280b 100755 --- a/class/source/nonlinear.c +++ b/class/source/nonlinear.c @@ -1371,13 +1371,16 @@ int nonlinear_init( } /** --> Then go through common preliminary steps to the HALOFIT and HMcode methods */ - else if ((pnl->method == nl_halofit) || ((pnl->method == nl_HMcode))) { + else if ((pnl->method == nl_halofit) || ((pnl->method == nl_HMcode)) || ((pnl->method == nl_HMcode_2020))) { if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_halofit)) printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_HMcode)) printf("Computing non-linear matter power spectrum with HMcode \n"); + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_HMcode_2020)) + printf("Computing non-linear matter power spectrum with HMcode2020 \n"); + /** --> allocate temporary arrays for spectra at each given time/redshift */ @@ -1405,7 +1408,7 @@ int nonlinear_init( pnw = &nw; - class_call(nonlinear_hmcode_workspace_init(ppr,pba,pnl,pnw), + class_call(nonlinear_hmcode_workspace_init(ppm, ppr,pba,pnl,pnw), pnl->error_message, pnl->error_message); @@ -1418,6 +1421,24 @@ int nonlinear_init( pnl->error_message); } + + if (pnl->method == nl_HMcode_2020){ + + pnw = &nw; + + class_call(nonlinear_hmcode_workspace_init(ppm, ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_dark_energy_correction(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + } + + + + /** --> Loop over decreasing time/growing redhsift. For each time/redshift, compute P_NL(k,z) using either Halofit or HMcode */ @@ -1493,7 +1514,6 @@ int nonlinear_init( /* get P_NL(k) at this time with HMcode */ else if (pnl->method == nl_HMcode) { - /* (preliminary step: fill table of sigma's, only for _cb if there is both _cb and _m) */ if (index_pk == 0) { class_call(nonlinear_hmcode_fill_sigtab(ppr, @@ -1526,6 +1546,41 @@ int nonlinear_init( pnl->error_message); } + + else if (pnl->method == nl_HMcode_2020) { + /* (preliminary step: fill table of sigma's, only for _cb if there is both _cb and _m) */ + if (index_pk == pnl->index_pk_cb) { + class_call(nonlinear_hmcode_fill_sigtab(ppr, + pba, + ppt, + ppm, + pnl, + index_tau, + lnpk_l[index_pk], + ddlnpk_l[index_pk], + pnw), + pnl->error_message, pnl->error_message); + } + + class_call(nonlinear_hmcode2020(ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l, + ddlnpk_l, + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k, + pnw), + pnl->error_message, + pnl->error_message); + } + + /* infer and store R_NL=(P_NL/P_L)^1/2 */ if (nl_corr_not_computable_at_this_k == _FALSE_) { for (index_k=0; index_kk_size; index_k++) { @@ -1623,6 +1678,16 @@ int nonlinear_init( pnl->error_message, pnl->error_message); } + + if (pnl->method == nl_HMcode_2020) { + + class_call(nonlinear_hmcode_workspace_free(pnl,pnw), + pnl->error_message, + pnl->error_message); + } + + + } /** - if the nl_method could not be identified */ @@ -3581,6 +3646,7 @@ int nonlinear_hmcode( */ int nonlinear_hmcode_workspace_init( + struct primordial *ppm, struct precision *ppr, struct background *pba, struct nonlinear *pnl, @@ -3598,8 +3664,13 @@ int nonlinear_hmcode_workspace_init( ng = ppr->n_hmcode_tables; - class_alloc(pnw->growtable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->growtable, ng*sizeof(double),pnl->error_message); + class_alloc(pnw->intgrowtable, ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); class_alloc(pnw->ztable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->scaletable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->meadscaletable,ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->meadgrowtable,ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->dark_energy_correction_hmcode2020_table,ng*sizeof(double),pnl->error_message); class_alloc(pnw->tautable,ng*sizeof(double),pnl->error_message); class_alloc(pnw->sigma_8,pnl->pk_size*sizeof(double *),pnl->error_message); @@ -3620,6 +3691,17 @@ int nonlinear_hmcode_workspace_init( pnl->error_message, pnl->error_message); + class_call(nonlinear_hmcode_fill_meadgrowtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + /** --fill table with G(a)=int_0^a g(a')/a' da' */ + + class_call(nonlinear_hmcode_fill_intgrowtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + class_call(fill_Pk_wiggle_table(ppm, ppr,pba,pnl,pnw), pnl->error_message, pnl->error_message); + return _SUCCESS_; } @@ -3643,7 +3725,11 @@ int nonlinear_hmcode_workspace_free( free(pnw->ddstab); free(pnw->growtable); + free(pnw->meadgrowtable); + free(pnw->meadscaletable); + free(pnw->intgrowtable); free(pnw->ztable); + free(pnw->scaletable); free(pnw->tautable); for (index_pk=0; index_pkpk_size; index_pk++){ @@ -3657,6 +3743,9 @@ int nonlinear_hmcode_workspace_free( free(pnw->sigma_disp); free(pnw->sigma_disp_100); free(pnw->sigma_prime); + free(pnw->dark_energy_correction_hmcode2020_table); + free(pnw->Pk_wiggle_tab); + free(pnw->lnk_wiggle_tab); return _SUCCESS_; } @@ -3677,54 +3766,64 @@ int nonlinear_hmcode_dark_energy_correction( struct nonlinear *pnl, struct nonlinear_workspace * pnw ) { + int last_index, index_scalefactor; + double * pvecback; + double tau_growth; + double g_lcdm,g_wcdm; + double g_lcdm_z, g_wcdm_z; + double w0,dw_over_da_fld,integral_fld; - int last_index; - double * pvecback; - double tau_growth; - double g_lcdm,g_wcdm; - double w0,dw_over_da_fld,integral_fld; - - /** - if there is dynamical Dark Energy (w is not -1) modeled as a fluid */ + /** - if there is dynamical Dark Energy (w is not -1) modeled as a fluid */ - if (pba->has_fld==_TRUE_){ + if (pba->has_fld==_TRUE_){ - class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); - class_call(background_tau_of_z( - pba, - pnl->z_infinity, - &tau_growth - ), - pba->error_message, - pnl->error_message); + class_call(background_tau_of_z( + pba, + pnl->z_infinity, + &tau_growth + ), + pba->error_message, + pnl->error_message); - class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), - pba->error_message, - pnl->error_message); + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); - class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), - pba->error_message, - pnl->error_message); + class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), + pba->error_message, + pnl->error_message); - class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),-1.,0.,&g_lcdm), - pnl->error_message, pnl->error_message); + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),-1.,0.,&g_lcdm), + pnl->error_message, pnl->error_message); - class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),w0,dw_over_da_fld*(-1.),&g_wcdm), - pnl->error_message, - pnl->error_message); + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),w0,dw_over_da_fld*(-1.),&g_wcdm), + pnl->error_message, + pnl->error_message); - free(pvecback); + free(pvecback); - pnw->dark_energy_correction = pow(g_wcdm/g_lcdm, 1.5); - } + pnw->dark_energy_correction = pow(g_wcdm/g_lcdm, 1.5); + for (index_scalefactor=0;index_scalefactor< ppr->n_hmcode_tables;index_scalefactor++){ + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,pnw->scaletable[index_scalefactor],-1.,0.,&g_lcdm_z), + pnl->error_message, pnl->error_message); - /** - otherwise, we assume no dynamical Dark Energy (w is -1) */ + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,pnw->scaletable[index_scalefactor],w0,dw_over_da_fld*(-1.),&g_wcdm_z), + pnl->error_message, + pnl->error_message); - else { - pnw->dark_energy_correction = 1.; - } + pnw->dark_energy_correction_hmcode2020_table[index_scalefactor] = g_wcdm/g_lcdm*g_lcdm_z/g_wcdm_z; + } + } + else { + pnw->dark_energy_correction = 1.; + for (index_scalefactor=0;index_scalefactor< ppr->n_hmcode_tables;index_scalefactor++){ + pnw->dark_energy_correction_hmcode2020_table[index_scalefactor] = 1.; + } + } - return _SUCCESS_; + return _SUCCESS_; } /** @@ -3919,6 +4018,7 @@ int nonlinear_hmcode_fill_growtab( z = 1./scalefactor-1.; pnw->ztable[index_scalefactor] = z; + pnw->scaletable[index_scalefactor] = scalefactor; class_call(background_tau_of_z( pba, @@ -3936,12 +4036,214 @@ int nonlinear_hmcode_fill_growtab( pnw->growtable[index_scalefactor] = pvecback[pba->index_bg_D]; } + class_call(background_tau_of_z( + pba, + 0, + &tau_growth + ), + pba->error_message, pnl->error_message); + + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); free(pvecback); return _SUCCESS_; } + + + + + + +/** + * Function that fills pnw->tautable and pnw->meadgrowtable with (tau, D(tau)) + double *meadgrowtable; + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ +/**auxiliary function +*/ +double _w(double a, double w0, double wa) { + return w0 + (1.0 - a) * wa; +} + +double _X_w(double a, double w0, double wa) { + return pow(a, -3.0 * (1.0 + w0 + wa)) * exp(-3.0 * wa * (1.0 - a)); +} + +double _Hubble2(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double Om = 1-omega0k; + double H2 = Om_m * pow(a, -3.0) + Om_w * _X_w(a, w0, wa) + (1.0 - Om) * pow(a, -2.0); + return H2; +} +double _Omega_m(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + return omega0m * pow(a, -3.0) / _Hubble2(a, omega0m, omega0w, omega0k, w0, wa); +} + + +double _AH(double a, double omega0m, double omega0w, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double AH = -0.5 * (Om_m * pow(a, -3.0) + (1.0 + 3.0 * _w(a, w0, wa)) * Om_w * _X_w(a, w0, wa)); + return AH; +} + + +int meadgrowth_func(double a, const double y[], double f[], void *params) { + ParamsMeadGrowth *p = (ParamsMeadGrowth *)params; + f[0] = y[1]; + double fv = -(2.+_AH(a, p->omega0m, p->omega0w, p->w0, p->wa)/_Hubble2(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa))*y[1]/a; + double fd = 1.5*_Omega_m(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa)*y[0]/pow(a,2); + f[1] = fv+fd; + return GSL_SUCCESS; +} + + + +//End +int nonlinear_hmcode_fill_meadgrowtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + + double z, ainit, amax, scalefactor, tau_growth; + double a_init_mead=1E-4; + int index_scalefactor, last_index, ng; + double f; + double y[2]; + int status; + + ng = ppr->n_hmcode_mead_growth_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + + ParamsMeadGrowth params = {pba->Omega0_m, pba->Omega0_de, pba->w0_fld, pba->wa_fld, pba->Omega0_k}; // omega0m; +// printf("%le %le %le %le %le\n\n\n", pba->Omega0_m, pba->Omega0_de, pba->w0_fld, pba->wa_fld, pba->Omega0_k); + gsl_odeiv2_system sys = {meadgrowth_func, NULL, 2, ¶ms}; + gsl_odeiv2_driver *driver = gsl_odeiv2_driver_alloc_y_new(&sys, gsl_odeiv2_step_rk8pd, 1e-6, 1e-6, 0.0); + f = 1.-_Omega_m(a_init_mead, pba->Omega0_m, pba->Omega0_de,pba->Omega0_k, pba->w0_fld, pba->wa_fld); + y[0] = pow(a_init_mead,(1.-3.*f/5.)); + y[1] = (1.-3.*f/5.)*pow(a_init_mead,(-3.*f/5.)); + + + for (index_scalefactor=0;index_scalefactormeadscaletable[index_scalefactor] = a_init_mead; + pnw->meadgrowtable[index_scalefactor] = y[0]; + } + return _SUCCESS_; +} + + + + + + + + + + +/** + * Function that fill pnw->intgrowtable with (G(a)=int_0^a g(a')/a' da') + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +typedef struct{ + struct nonlinear_workspace * pnw; + struct precision * ppr; + struct nonlinear *pnl; +} IntParam; + +double integrand(double a, void *params){ + if (a==0) return 1; + IntParam *p = ( IntParam *)params; + double growth; + + class_call(array_interpolate_cubic_equal(p->pnw->meadscaletable[0], + p->pnw->meadscaletable[1]-p->pnw->meadscaletable[0], + p->pnw->meadgrowtable, + p->ppr->n_hmcode_mead_growth_tables, + a, + &growth, + p->pnl->error_message), + p->pnl->error_message, p->pnl->error_message); + return growth/a; +} + +int nonlinear_hmcode_fill_intgrowtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + double z, ainit, amax, scalefactor, tau_growth; + int index_scalefactor, last_index, ng; + double intg; + double result, error; + + ng = ppr->n_hmcode_mead_growth_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + IntParam intparam = {pnw, ppr, pnl}; + + + gsl_integration_workspace *workspace = gsl_integration_workspace_alloc(1000); + + gsl_function F; + F.function = &integrand; + F.params = &intparam; + double growth; + + for (index_scalefactor=0;index_scalefactormeadscaletable[index_scalefactor], 0, 1e-6, 1000, workspace, &result, &error); + class_call(array_interpolate_cubic_equal(pnw->meadscaletable[0], + pnw->meadscaletable[1]-pnw->meadscaletable[0], + pnw->meadgrowtable, + ppr->n_hmcode_mead_growth_tables, + ainit, + &growth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + result += growth; + pnw->intgrowtable[index_scalefactor] = result; + } + gsl_integration_workspace_free(workspace); + return _SUCCESS_; +} + + + /** * This function finds the scale independent growth factor by * integrating the approximate relation d(lnD)/d(lna) = @@ -4444,3 +4746,883 @@ int nonlinear_hmcode_sigmaprime_at_z( return _SUCCESS_; } + + + +/*++++++++++++++++++++++++++++++++++++++++* +* 2Halo Terms HMcode * +*++++++++++++++++++++++++++++++++++++++++*/ + +double Tk_EH_nowiggle(double k, double h, double wm, double wb, double T_CMB) { +//astro-ph:9709112 +// These only needs to be calculated once + double rb = wb/wm; // Baryon ratio + double e = exp(1.); // e + double s = 44.5 * log(9.83/wm) / sqrt(1. + 10. * pow(wb, 0.75)); // Equation (26) + double alpha = 1. - 0.328 * log(431. * wm) * rb + 0.38 * log(22.3 * wm) * pow(rb, 2); // Equation (31) +// Functions of k + double Gamma = (wm/h) * (alpha + (1. - alpha) / (1. + pow(0.43 * k * s , 4))); // Equation (30) + double q = (k/h) * pow(T_CMB/2.7, 2) / Gamma; // Equation (28) + double L = log(2. * e + 1.8 * q); // Equation (29) + double C = 14.2 + 731. / (1. + 62.5 * q); // Equation (29) + double Tk_nw = L / (L + C * pow(q, 2)); // Equation (29) +return Tk_nw; +} + +void smooth_array_Gaussian(double *x, double *f, int n, double sigma) { + int i, j; + double *ff, weight, total; + int nsig=3; + if (sigma != 0.) { + ff = (double *)malloc(n * sizeof(double)); + // Save the original input array + for (i = 0; i < n; i++) { + ff[i] = f[i]; + } + // Delete the original array + for (i = 0; i < n; i++) { + f[i] = 0.; + } + // Apply Gaussian smoothing + for (i = 0; i < n; i++) { + total = 0.; + if (fabs(x[i] - x[0]) < nsig * sigma || fabs(x[i] - x[n-1]) < nsig * sigma) { + f[i] = ff[i]; + } else { + for (j = 0; j < n; j++) { + weight = exp(-pow(x[i] - x[j], 2) / (2. * pow(sigma, 2))); + f[i] = f[i] + ff[j] * weight; + total = total + weight; + } + f[i] = f[i] / total; + } + } + + free(ff); + } +} + + +/** + * fill HMcode wiggle powerspectra + * + * @param ppm Input: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int fill_Pk_wiggle_table( + struct primordial * ppm, + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + double logkmin_wiggle = ppr->logkmin_wiggle+log(pba->h); + double logkmax_wiggle = ppr->logkmax_wiggle+log(pba->h); + static double sigma = 0.25; + double dlnk = (logkmax_wiggle-logkmin_wiggle)/(ppr->nk_wiggle-1); + double *Pk_nowiggle; + double *Pk_ratio; + double *pklin; + int kin; + double lnki; + class_alloc(Pk_nowiggle,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pklin,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(Pk_ratio,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pnw->Pk_wiggle_tab, ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pnw->lnk_wiggle_tab,ppr->nk_wiggle*sizeof(double),pnl->error_message); + lnki = logkmin_wiggle; + double norm = 1; + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_linear, + ppr->knorm_nowiggle*pba->h, + 0, + pnl->index_pk_m, + &norm, + NULL + ), + pnl->error_message, + pnl->error_message); + norm /= (pow(ppr->knorm_nowiggle*pba->h, ppm->n_s) * pow(Tk_EH_nowiggle(ppr->knorm_nowiggle*pba->h, pba->h, pba->Omega0_m*pba->h*pba->h, pba->Omega0_b*pba->h*pba->h, pba->T_cmb), 2)); + + for (kin=0; kinnk_wiggle; kin++, lnki += dlnk) { + Pk_nowiggle[kin]= pow(exp(lnki), ppm->n_s) * pow(Tk_EH_nowiggle(exp(lnki), pba->h, pba->Omega0_m*pba->h*pba->h, pba->Omega0_b*pba->h*pba->h, pba->T_cmb), 2)*norm; + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_linear, + exp(lnki), + 0, + pnl->index_pk_m, + &pklin[kin], + NULL + ), + pnl->error_message, + pnl->error_message); + Pk_ratio[kin] = pklin[kin]/Pk_nowiggle[kin]; + pnw->lnk_wiggle_tab[kin] = lnki; + } + smooth_array_Gaussian(pnw->lnk_wiggle_tab, Pk_ratio, ppr->nk_wiggle, sigma); + for (kin=0; kinnk_wiggle; kin++) { + pnw->Pk_wiggle_tab[kin] = pklin[kin]-Pk_ratio[kin]*Pk_nowiggle[kin]; + } + free(Pk_nowiggle); + free(Pk_ratio); + free(pklin); + return _SUCCESS_; +} + + +/////Starting HMcode2020 //// +double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) { + return p10 + p11 * (1-x) + p12 * (1-x) * (1-x) + p13 * (1-y); +} + +double dc_Mead(double a, double Om_m, double f_nu, double g, double G) { + double p10 = -0.0069, p11 = -0.0208, p12 = 0.0312, p13 = 0.0021; + double p20 = 0.0001, p21 = -0.0647, p22 = -0.0417, p23 = 0.0646; + double a1 = 1; + double dc0 = (3./20.)*pow(12.*M_PI, 2./3.); + double dc_Mead = dc0 * (1. + pow(log10(Om_m), a1) * _f_Mead(g/a, G/a, p10, p11, p12, p13) + _f_Mead(g/a, G/a, p20, p21, p22, p23)) * (1. - 0.041 * f_nu); + return dc_Mead; +} + +double Dv_Mead(double a, double Om_m, double f_nu, double g, double G) { + /* + Delta_v fitting function from Mead (2017; 1606.05345) + All input parameters should be evaluated as functions of a/z + */ + // See Appendix A of Mead (2017) for naming convention + double p30 = -0.79, p31 = -10.17, p32 = 2.51, p33 = 6.51; + double p40 = -1.89, p41 = 0.38, p42 = 18.8, p43 = -15.87; + double a3 = 1, a4 = 2; + double Dv0 = 18.0 * M_PI*M_PI; + + // Halo virial overdensity + double Dv = 1.0; + Dv = Dv + _f_Mead(g / a, G / a, p30, p31, p32, p33) * pow(log10(Om_m), a3); + Dv = Dv + _f_Mead(g / a, G / a, p40, p41, p42, p43) * pow(log10(Om_m), a4); + Dv = Dv * Dv0 * (1.0 + 0.763 * f_nu); + return Dv; +} + + + + + + +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 2009.01858 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode2020_auxiliary( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw, + int imead, + double * result + ){ + + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m, Omega0_b,Omega0_c, Omega_b, Omega_c, rho_bar; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double intgrowth; + double meadgrowth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf, fg, fstar, Mb; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + double dark_energy_correction; + + double sigma_disp, sigma_disp100, sigma8, sigma8cc, gnorm; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp, nd, f, kd; + double pk_lin, pk_2h, pk_1h, pk_wiggle; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + Omega0_b = pba->Omega0_b; + Omega0_c = pba->Omega0_cdm; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + + + + + + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + Omega_c = pvecback[pba->index_bg_rho_cdm]/pvecback[pba->index_bg_rho_crit]; + Omega_b = pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_crit]; + rho_bar = pvecback[pba->index_bg_rho_crit]*Omega_m; + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + class_call(array_interpolate_two_arrays_one_column(pnw->meadscaletable, + pnw->intgrowtable, + 1, + 0, + ppr->n_hmcode_mead_growth_tables, + pvecback[pba->index_bg_a], + &intgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + class_call(array_interpolate_two_arrays_one_column(pnw->meadscaletable, + pnw->meadgrowtable, + 1, + 0, + ppr->n_hmcode_mead_growth_tables, + pvecback[pba->index_bg_a], + &meadgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + + if (imead==5){ + double theta_tagn = pnl->hmcode2020log10tagn-7.8; + double B_0 = 3.44-0.496 * theta_tagn; + double B_z = -0.0671-0.0371 * theta_tagn; + pnl->c_min = B_0*pow(10, z_at_tau*B_z); + fstar = (0.01*(2.01-0.30*theta_tagn))*pow(10, z_at_tau*(0.409+0.0224*theta_tagn)); + if(fstar>Omega0_b/Omega0_m) fstar = Omega0_b/Omega0_m; + Mb = pow(10, 13.87+1.81*theta_tagn+z_at_tau*(-0.108+0.195*theta_tagn))/pba->h; // unit Msun + } + else if (imead==4){ + pnl->c_min =4; + } + else{ + pnl->c_min = 5.196; + } + + + + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8cc), + pnl->error_message, pnl->error_message); + + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + //delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + //delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + //delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + delta_c = dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth);//1.66737;//dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth); // Mead et al. (2017; arXiv 1606.05345) + //printf("%le %le %le %le %le %le \n", pvecback[pba->index_bg_a], Omega_m, delta_c, fnu, meadgrowth,intgrowth); + + // virialized overdensity + //Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + //Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + Delta_v= Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth);//Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth); + //printf("%le %le %le %le %le %le \n", pvecback[pba->index_bg_a], Omega_m, Delta_v, fnu, meadgrowth,intgrowth); + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + + /** Compute the nonlinear correction */ + if ((imead==5)||(imead==4)){ + eta = 0; + f = 0; + alpha=1.; + } + else{ + eta = 0.1281*pow(sigma8cc, -0.3644);; // halo bloating parameter table 2 of 2009.01858 (Mead) + f = 0.2696*pow(sigma8cc, 0.9403); + alpha = 1.875* pow(1.603, n_eff); + } + k_star = 0.05618*pow(sigma8cc, -1.013)*pba->h; //table 2 of 2009.01858 (Mead) in Mpc + nd = 2.853; + kd = 0.05699*pow(sigma8cc, -1.089)*pba->h; //Mpc + + + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + z_form = z_at_tau; + } + // conc[index_mass] = pnl->c_min; + //} else { + + class_call(array_interpolate_two_arrays_one_column( + pnw->ztable, + pnw->dark_energy_correction_hmcode2020_table, + 1, + 0, + ng, + z_at_tau, + &dark_energy_correction, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + + + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*dark_energy_correction; + //} + } + + + + // growth factor + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + if (log(pnl->k[index_k])>ppr->logkmax_wiggle+log(pba->h)) pk_wiggle=0; + else if (log(pnl->k[index_k])logkmin_wiggle+log(pba->h)) pk_wiggle=0; + else{ + + class_call(array_interpolate_two_arrays_one_column(pnw->lnk_wiggle_tab, + pnw->Pk_wiggle_tab, + 1, + 0, + ppr->nk_wiggle, + log(pnl->k[index_k]), + &pk_wiggle, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + pk_wiggle *= growth*growth; // growth factor + pk_wiggle *= pow(pnl->k[index_k],3)*anorm; // P_k to Delta_k^2 + } + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + + if (imead==5){ + fg = (Omega0_b/Omega0_m-fstar)/(1+pow(mass[index_mass]/Mb, -2)); //eq 24 in Mead 2009.01858 + window_nfw = window_nfw*(Omega0_c/Omega0_m+fg) + fstar; + // if ((pnl->k[index_k]>9)&&(pvecback[pba->index_bg_a]>0.99)) + // printf("Tagn %le, %le %le %le %le %le %le %le \n\n\n " , pnl->k[index_k], log10(mass[index_mass]), pnl->hmcode2020log10tagn, Omega_b, Omega_m, Omega_c, window_nfw*(Omega_c/Omega_m+fg), fstar); + } + else{ + window_nfw*= (1-fnu); + } + + + + + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + fac = 1/(1+pow(pnl->k[index_k]/k_star,-4)); + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + + fdamp = 1-exp(-1*pnl->k[index_k]*pnl->k[index_k]*sigma_disp*sigma_disp); + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + if((imead==4)||(imead==5)){ + pk_2h=pk_lin; + } + else{ + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h= pk_lin - fdamp*pk_wiggle; + } + if (pk_2h<0.) pk_2h=0.; + + pk_2h *= 1-f/(1+pow(pnl->k[index_k]/kd, -1*nd)); + } + result[index_k] =pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 ) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " sigma8 cc: %e\n", sigma8cc); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " g: %e\n", meadgrowth); + fprintf(stdout, " G: %e\n", intgrowth); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " sigma_disp: %e\n", sigma_disp*pba->h); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " kd (h/Mpc): %e\n", kd/pba->h); + fprintf(stdout, " 2halo f: %e\n", f); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + } + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + free(pvecback); + return _SUCCESS_; + + + +} + +int nonlinear_hmcode2020( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ){ + double * result; + int index_k; + class_alloc(result, sizeof(double)*pnl->k_size, + pnl->error_message); + if (pnl->feedback==hmcode2020tagn){ + double * result1, *result2; + class_alloc(result1, sizeof(double)*pnl->k_size, + pnl->error_message); + class_alloc(result2, sizeof(double)*pnl->k_size, + pnl->error_message); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,3, result); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,4, result1); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,5, result2); + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + pk_nl[index_k] = result[index_k]*result2[index_k]/result1[index_k]; + } + free(result1); + free(result2); + } + else{ + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,3, result); + for (index_k = 0; index_k < pnl->k_size; index_k++){ + pk_nl[index_k] = result[index_k]; + } + } + free(result); + return _SUCCESS_; +} + + + + diff --git a/class/source/nonlinear_hmcode.c b/class/source/nonlinear_hmcode.c new file mode 100644 index 00000000..6ef593dd --- /dev/null +++ b/class/source/nonlinear_hmcode.c @@ -0,0 +1,639 @@ +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 2009.01858 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode2020( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ) { + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m Omega0_b,Omega0_c; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double intgrowth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + double dark_energy_correction; + + double sigma_disp, sigma_disp100, sigma8, sigma8cc; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp, nd, f, kd; + double pk_lin, pk_2h, pk_1h, pk_wiggle; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + Omega0_b = pba->Omega0_b; + Omega0_c = pba->Omega0_cdm; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + class_call(array_interpolate_two_arrays_one_column(pnw->ztable, + pnw->intgrowtable, + 1, + 0, + z_at_tau, + &intgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + if (pnl->feedback==hmcode2020tagn){ + double theta_tagn = pnl->hmcode2020log10tagn-7.8; + double B_0 = 3.44-0.496 * theta_tagn; + double B_z = -0.0671-0.0371 * theta_tagn; + pnl->c_min = B_0*pow(10, z_at_tau*B_z); + double fstar = (0.01*(2.01-0.030*theta_tagn))*pow(10, z_at_tau*(0.409+0.0224*theta_tagn)); + if(ftar>Omega0_b/Omega0_m) ftar = Omega0_b/Omega0_m; + double Mb = pow(10, 13.87+1.81*theta_tagn+z_at_tau*(-0.108+0.195*theta_tagn))/pba->h; // unit Msun + + } + else{ + pnl->c_min = 5.196; + } + + + + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + free(pvecback); + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8cc), + pnl->error_message, pnl->error_message); + + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + //delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + //delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + //delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + delta_c = dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, growth, intgrowth); // Mead et al. (2017; arXiv 1606.05345) + + // virialized overdensity + //Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + //Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + Delta_v= Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, growth, intgrowt); + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + alpha = 1.875* pow(1.603, n_eff); + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + + /** Compute the nonlinear correction */ + eta = 0.1281*pow(sigma8cc, -0.3644);; // halo bloating parameter table 2 of 2009.01858 (Mead) + k_star = 0.05618*pow(sigma8cc, -1.013); //table 2 of 2009.01858 (Mead) + nd = 2.853; + kd = 0.05699*pow(sigma8cc, -1.089); + f = 0.2696*pow(sigma8cc, 0.9403); + + + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + conc[index_mass] = pnl->c_min; + } else { + + class_call(array_interpolate_two_arrays_one_column( + pnw->ztable, + pnw->dark_energy_correction_hmcode2020_table, + 1, + 0, + ng, + z_at_tau, + &dark_energy_correction, + pnl->error_message), + + + + + + + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*dark_energy_correction; + } + } + + + + // growth factor + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + + class_call(array_interpolate_two_arrays_one_column(pnw->lnk_wiggle_tab, + pnw->Pk_wiggle_tab, + 1, + 0, + log(pnl->k[index_k]), + &pk_wiggle, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + pk_wiggle *= growth*growth; // growth factor + pk_wiggle *= pow(pnl->k[index_k],3)*anorm; // P_k to Delta_k^2 + + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + + if (pnl->feedback==hmcode2020tagn){ + fg = (Omega0_b/Omega0_m-fstar)/(1+pow(mass[index_mass]/Mb, -2)); //eq 24 in Mead 2009.01858 + window_nfw = window_nfw*(Omega0_c/Omega0_m+fg) + fstar; + } + + + + + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + fac = 1/(1+pow(pnl->k[index_k]/k_star,-4)); + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + + fdamp = exp(-1*pnl->k[index_k]*pnl->k[index_k]*sigma_disp*sigma_disp)-1; + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h= pk_lin + fdamp*pk_wiggle; + } + if (pk_2h<0.) pk_2h=0.; + + pk_2h *= 1-f/(1+pow(pnl->k[index_k]/kd, -1*nd)); + + + pk_nl[index_k] = pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; //converted back to P_k + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 && tau==pba->conformal_age) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " fdamp: %e\n", fdamp); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + } + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + + return _SUCCESS_; +} + +double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) { + return p10 + p11 * x + p12 * x * x + p13 * y; +} + +double dc_Mead(double a, double Om_m, double f_nu, double g, double G) { + double p10 = -0.0069, p11 = -0.0208, p12 = 0.0312, p13 = 0.0021; + double p20 = 0.0001, p21 = -0.0647, p22 = -0.0417, p23 = 0.0646; + double a1 = 1; + double dc0 = 1; + double dc_Mead = dc0 * (1. + log10(Om_m) * a1 * _f_Mead(g/a, G/a, p10, p11, p12, p13) + _f_Mead(g/a, G/a, p20, p21, p22, p23)) * (1. - 0.041 * f_nu); + return dc_Mead; +} + +double Dv_Mead(double a, double Om_m, double f_nu, double g, double G) { + /* + Delta_v fitting function from Mead (2017; 1606.05345) + All input parameters should be evaluated as functions of a/z + */ + // See Appendix A of Mead (2017) for naming convention + double p30 = -0.79, p31 = -10.17, p32 = 2.51, p33 = 6.51; + double p40 = -1.89, p41 = 0.38, p42 = 18.8, p43 = -15.87; + double a3 = 1, a4 = 2; + double Dv0 = 18.0 * pow(Om_m, 0.45); + + // Halo virial overdensity + double Dv = 1.0; + Dv = Dv + _f_Mead(g / a, G / a, p30, p31, p32, p33) * log10(Om_m) * a3; + Dv = Dv + _f_Mead(g / a, G / a, p40, p41, p42, p43) * log10(Om_m) * a4; + Dv = Dv * Dv0 * (1.0 + 0.763 * f_nu); + return Dv; +} + + + + + + + diff --git a/class/source/tags b/class/source/tags new file mode 100644 index 00000000..142ec8c1 --- /dev/null +++ b/class/source/tags @@ -0,0 +1,2412 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +A_s ../include/primordial.h /^ double A_s; \/**< usual scalar amplitude = curvature power spectrum at pivot scale *\/$/;" m struct:primordial +Ai ../include/sparse.h /^ int *Ai; \/* Ai[0..(maxnz-1)]. Contains the row indices of the entries. *\/$/;" m struct:sparse_matrix +Ap ../include/sparse.h /^ int *Ap; \/* Ap[0..ncols]. Ap[k+1]-Ap[k] is the number of entries in the k'th column. *\/$/;" m struct:sparse_matrix +Ax ../include/sparse.h /^ double *Ax; \/* Ax[0..(maxnz-1)]. Contains the values of the entries. *\/$/;" m struct:sparse_matrix +BB ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +Bfact ../include/thermodynamics.h /^ double Bfact; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1 ../include/thermodynamics.h /^ double CB1; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1_He1 ../include/thermodynamics.h /^ double CB1_He1; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1_He2 ../include/thermodynamics.h /^ double CB1_He2; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CDB ../include/thermodynamics.h /^ double CDB; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CDB_He ../include/thermodynamics.h /^ double CDB_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CF1_from_Gegenbauer ../tools/hyperspherical.c /^int CF1_from_Gegenbauer(int l,$/;" f +CFLAGS ../cpp/Makefile /^CFLAGS = -O2 -fopenmp -I..\/include$/;" m +CK ../include/thermodynamics.h /^ double CK; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CK_He ../include/thermodynamics.h /^ double CK_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CL ../include/thermodynamics.h /^ double CL; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CLASSMODULES ../cpp/Makefile /^CLASSMODULES = ..\/build\/arrays.o ..\/build\/background.o ..\/build\/common.o \\$/;" m +CLP ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" e enum:equation_of_state +CL_He ../include/thermodynamics.h /^ double CL_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CR ../include/thermodynamics.h /^ double CR; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CT ../include/thermodynamics.h /^ double CT; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CXX ../cpp/Makefile /^CXX = g++$/;" m +Ci ../include/evolver_ndf15.h /^ int *Ci; \/* Stores the row indices of the spJ+spJ' sparsity pattern. *\/$/;" m struct:jacobian +ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::ClassEngine(const ClassParams& pars, bool verbose): cl(0),dofree(true){$/;" f class:ClassEngine +ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::ClassEngine(const ClassParams& pars,const string & precision_file, bool verbose): cl(0),dofree(true){$/;" f class:ClassEngine +ClassEngine ../cpp/ClassEngine.hh /^class ClassEngine : public Engine$/;" c +ClassEngine_hh ../cpp/ClassEngine.hh 17;" d +ClassParams ../cpp/ClassEngine.hh /^ ClassParams( const ClassParams& o):pars(o.pars){};$/;" f class:ClassParams +ClassParams ../cpp/ClassEngine.hh /^ ClassParams(){};$/;" f class:ClassParams +ClassParams ../cpp/ClassEngine.hh /^class ClassParams{$/;" c +ClosedModY ../tools/hyperspherical.c /^int ClosedModY(int l, int beta, double *y, int * phisign, int * dphisign){$/;" f +Cp ../include/evolver_ndf15.h /^ int *Cp; \/* Stores the column pointers of the spJ+spJ' sparsity pattern. *\/$/;" m struct:jacobian +Difmax ../include/evolver_ndf15.h /^ double * Difmax;$/;" m struct:numjac_workspace +EDE ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" e enum:equation_of_state +EE ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +EP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +Engine ../cpp/Engine.cc /^Engine::Engine():_lmax(-1)$/;" f class:Engine +Engine ../cpp/Engine.hh /^class Engine$/;" c +Engine_hh ../cpp/Engine.hh 17;" d +ErrorMsg ../include/common.h /^typedef char ErrorMsg[_ERRORMSGSIZE_]; \/**< Generic error messages (there is such a field in each structure) *\/$/;" t +FileArg ../include/parser.h /^typedef char FileArg[_ARGUMENT_LENGTH_MAX_];$/;" t +FileName ../include/common.h /^typedef char FileName[_FILENAMESIZE_];$/;" t +Fscale ../include/evolver_ndf15.h /^ double * Fscale;$/;" m struct:numjac_workspace +Gamma_dcdm ../include/background.h /^ double Gamma_dcdm; \/**< \\f$ \\Gamma_{dcdm} \\f$: decay constant for decaying cold dark matter *\/$/;" m struct:background +Gamma_prime_fld ../include/perturbations.h /^ double Gamma_prime_fld; \/**< Gamma_prime in PPF scheme (equivalent to eq. 14 in 0808.3125) *\/$/;" m struct:perturb_workspace +H ../include/primordial.h /^ double H;$/;" m struct:primordial_inflation_parameters_and_workspace +H0 ../include/background.h /^ double H0; \/**< \\f$ H_0 \\f$: Hubble parameter (in fact, [\\f$H_0\/c\\f$]) in \\f$ Mpc^{-1} \\f$ *\/$/;" m struct:background +H0 ../include/primordial.h /^ double H0; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H0 ../include/thermodynamics.h /^ double H0; \/**< defined as in RECFAST *\/$/;" m struct:recombination +H1 ../include/primordial.h /^ double H1; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H2 ../include/primordial.h /^ double H2; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H3 ../include/primordial.h /^ double H3; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H4 ../include/primordial.h /^ double H4; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +HERMITE3 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE4 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE6 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1468;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1481;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1494;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1495;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1508;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1523;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1525;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1538;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1540;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1555;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1558;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1570;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1583;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1596;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1597;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1610;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1625;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1627;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1640;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1642;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1657;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1660;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1672;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1685;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1698;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1699;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1712;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1727;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1729;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1742;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1744;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1759;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1762;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1467;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1480;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1482;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1493;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1507;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1510;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1522;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1537;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1539;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1554;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1557;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1569;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1582;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1584;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1595;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1609;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1612;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1624;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1639;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1641;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1656;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1659;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1671;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1684;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1686;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1697;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1711;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1714;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1726;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1741;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1743;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1758;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1761;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1466;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1469;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1479;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1492;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1506;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1509;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1521;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1524;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1536;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1553;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1556;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1568;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1571;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1581;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1594;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1608;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1611;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1623;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1626;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1638;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1655;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1658;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1670;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1673;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1683;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1696;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1710;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1713;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1725;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1728;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1740;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1757;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1760;" d file: +HIS ../include/transfer.h /^ HyperInterpStruct HIS; \/**< structure containing all hyperspherical bessel functions (flat case) or all hyperspherical bessel functions for a given value of beta=q\/sqrt(|K|) (non-flat case). HIS = Hyperspherical Interpolation Structure. *\/$/;" m struct:transfer_workspace +HIS_allocated ../include/transfer.h /^ int HIS_allocated; \/**< flag specifying whether the previous structure has been allocated *\/$/;" m struct:transfer_workspace +H_eq ../include/background.h /^ double H_eq; \/**< Hubble rate at radiation\/matter equality [Mpc^-1] *\/$/;" m struct:background +H_frac ../include/thermodynamics.h /^ double H_frac; \/**< defined as in RECFAST *\/$/;" m struct:recombination +Hermite_Interpolation_Order ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" g +HyperInterpStruct ../include/hyperspherical.h /^} HyperInterpStruct;$/;" t typeref:struct:HypersphericalInterpolationStructure +HypersphericalExplicit ../tools/hyperspherical.c /^int HypersphericalExplicit(int K,int l, double beta,double x, double *Phi){$/;" f +HypersphericalInterpolationStructure ../include/hyperspherical.h /^typedef struct HypersphericalInterpolationStructure{$/;" s +I ../include/quadrature.h /^ double I; \/* Estimate of integral *\/$/;" m struct:adaptive_integration_tree_node +K ../include/background.h /^ double K; \/**< \\f$ K \\f$: Curvature parameter \\f$ K=-\\Omega0_k*a_{today}^2*H_0^2\\f$; *\/$/;" m struct:background +K ../include/hermite3_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../include/hermite4_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +K ../include/hyperspherical.h /^ int K;$/;" m struct:WKB_parameters +K ../include/hyperspherical.h /^ int K; \/\/Sign of the curvature, (0,-1,1)$/;" m struct:HypersphericalInterpolationStructure +K ../include/transfer.h /^ double K; \/**< curvature parameter (see background module for details) *\/$/;" m struct:transfer_workspace +K ../tools/hermite3_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../tools/hermite4_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +L ../include/sparse.h /^ sp_mat *L; \/*L and U is the factors of the decomposed matrix.*\/$/;" m struct:sparse_numerical +LU ../include/evolver_ndf15.h /^ double **LU;$/;" m struct:jacobian +LUw ../include/evolver_ndf15.h /^ double *LUw;$/;" m struct:jacobian +MAX ../include/common.h 72;" d +MIN ../include/common.h 71;" d +M_ncdm ../include/background.h /^ double * M_ncdm; \/**< vector of masses of non-cold relic:$/;" m struct:background +N ../include/primordial.h /^ double N;$/;" m struct:primordial_inflation_parameters_and_workspace +NC_RSD ../include/transfer.h /^ NC_RSD} radial_function_type;$/;" e enum:__anon2 +NRSIGN ../include/common.h 74;" d +N_ncdm ../include/background.h /^ int N_ncdm; \/**< Number of distinguishable ncdm species *\/$/;" m struct:background +N_ncdm ../include/perturbations.h /^ int N_ncdm; \/**< number of distinct non-cold-dark-matter (ncdm) species *\/$/;" m struct:perturb_vector +N_star ../include/primordial.h /^ N_star,$/;" e enum:phi_pivot_methods +Neff ../include/background.h /^ double Neff; \/**< so-called "effective neutrino number", computed at earliest time in interpolation table *\/$/;" m struct:background +Nnow ../include/thermodynamics.h /^ double Nnow; \/**< defined as in RECFAST *\/$/;" m struct:recombination +Numerical ../include/evolver_ndf15.h /^ sp_num *Numerical; \/*Stores the LU decomposition.*\/$/;" m struct:jacobian +Omega0_b ../include/background.h /^ double Omega0_b; \/**< \\f$ \\Omega_{0 b} \\f$: baryons *\/$/;" m struct:background +Omega0_cdm ../include/background.h /^ double Omega0_cdm; \/**< \\f$ \\Omega_{0 cdm} \\f$: cold dark matter *\/$/;" m struct:background +Omega0_dcdm ../include/background.h /^ double Omega0_dcdm; \/**< \\f$ \\Omega_{0 dcdm} \\f$: decaying cold dark matter *\/$/;" m struct:background +Omega0_dcdmdr ../include/background.h /^ double Omega0_dcdmdr; \/**< \\f$ \\Omega_{0 dcdm}+\\Omega_{0 dr} \\f$: decaying cold dark matter (dcdm) decaying to dark radiation (dr) *\/$/;" m struct:background +Omega0_de ../include/background.h /^ double Omega0_de; \/**< total dark energy density today, currently defined as 1 - Omega0_m - Omega0_r - Omega0_k *\/$/;" m struct:background +Omega0_dr ../include/background.h /^ double Omega0_dr; \/**< \\f$ \\Omega_{0 dr} \\f$: decay radiation *\/$/;" m struct:background +Omega0_fld ../include/background.h /^ double Omega0_fld; \/**< \\f$ \\Omega_{0 de} \\f$: fluid *\/$/;" m struct:background +Omega0_g ../include/background.h /^ double Omega0_g; \/**< \\f$ \\Omega_{0 \\gamma} \\f$: photons *\/$/;" m struct:background +Omega0_idm_dr ../include/background.h /^ double Omega0_idm_dr; \/**< \\f$ \\Omega_{0 idm_dr} \\f$: dark matter interacting with dark radiation *\/$/;" m struct:background +Omega0_idr ../include/background.h /^ double Omega0_idr; \/**< \\f$ \\Omega_{0 idr} \\f$: interacting dark radiation *\/$/;" m struct:background +Omega0_k ../include/background.h /^ double Omega0_k; \/**< \\f$ \\Omega_{0_k} \\f$: curvature contribution *\/$/;" m struct:background +Omega0_lambda ../include/background.h /^ double Omega0_lambda; \/**< \\f$ \\Omega_{0_\\Lambda} \\f$: cosmological constant *\/$/;" m struct:background +Omega0_m ../include/background.h /^ double Omega0_m; \/**< total non-relativistic matter today *\/$/;" m struct:background +Omega0_ncdm ../include/background.h /^ double * Omega0_ncdm, Omega0_ncdm_tot; \/**< Omega0_ncdm for each species and for the total Omega0_ncdm *\/$/;" m struct:background +Omega0_ncdm_tot ../include/background.h /^ double * Omega0_ncdm, Omega0_ncdm_tot; \/**< Omega0_ncdm for each species and for the total Omega0_ncdm *\/$/;" m struct:background +Omega0_r ../include/background.h /^ double Omega0_r; \/**< total ultra-relativistic radiation today *\/$/;" m struct:background +Omega0_scf ../include/background.h /^ double Omega0_scf; \/**< \\f$ \\Omega_{0 scf} \\f$: scalar field *\/$/;" m struct:background +Omega0_ur ../include/background.h /^ double Omega0_ur; \/**< \\f$ \\Omega_{0 \\nu r} \\f$: ultra-relativistic neutrinos *\/$/;" m struct:background +Omega_EDE ../include/background.h /^ double Omega_EDE; \/**< \\f$ wa_{DE} \\f$: Early Dark Energy density parameter *\/$/;" m struct:background +Omega_dcdmdr ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +Omega_ini_dcdm ../include/background.h /^ double Omega_ini_dcdm; \/**< \\f$ \\Omega_{ini,dcdm} \\f$: rescaled initial value for dcdm density (see 1407.2418 for definitions) *\/$/;" m struct:background +Omega_ini_dcdm ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +Omega_scf ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +PP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +PhiWKB_minus_phiminabs ../tools/hyperspherical.c /^double PhiWKB_minus_phiminabs(double x, void *param){$/;" f +Phi_l ../include/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../include/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../include/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Rowmax ../include/evolver_ndf15.h /^ int * Rowmax;$/;" m struct:numjac_workspace +SCALAR_POLARISATION_E ../include/transfer.h /^ SCALAR_POLARISATION_E,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_0 ../include/transfer.h /^typedef enum {SCALAR_TEMPERATURE_0,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_1 ../include/transfer.h /^ SCALAR_TEMPERATURE_1,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_2 ../include/transfer.h /^ SCALAR_TEMPERATURE_2,$/;" e enum:__anon2 +SIGN ../include/common.h 73;" d +SPFLIP ../include/sparse.h 59;" d +SPMARK ../include/sparse.h 62;" d +SPMARKED ../include/sparse.h 61;" d +SPUNFLIP ../include/sparse.h 60;" d +S_fld ../include/perturbations.h /^ double S_fld; \/**< S quantity sourcing Gamma_prime evolution in PPF scheme (equivalent to eq. 15 in 0808.3125) *\/$/;" m struct:perturb_workspace +TE ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +TENSOR_POLARISATION_B ../include/transfer.h /^ TENSOR_POLARISATION_B,$/;" e enum:__anon2 +TENSOR_POLARISATION_E ../include/transfer.h /^ TENSOR_POLARISATION_E,$/;" e enum:__anon2 +TENSOR_TEMPERATURE_2 ../include/transfer.h /^ TENSOR_TEMPERATURE_2,$/;" e enum:__anon2 +TINY ../include/evolver_ndf15.h 6;" d +TP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +TT ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +T_cmb ../include/background.h /^ double T_cmb; \/**< \\f$ T_{cmb} \\f$: current CMB temperature in Kelvins *\/$/;" m struct:background +T_idr ../include/background.h /^ double T_idr; \/**< \\f$ T_{idr} \\f$: current temperature of interacting dark radiation in Kelvins *\/$/;" m struct:background +T_ncdm ../include/background.h /^ double * T_ncdm,T_ncdm_default; \/**< list of 1st parameters in$/;" m struct:background +T_ncdm_default ../include/background.h /^ double * T_ncdm,T_ncdm_default; \/**< list of 1st parameters in$/;" m struct:background +Tcmb ../cpp/ClassEngine.hh /^ inline double Tcmb() const {return ba.T_cmb;}$/;" f class:ClassEngine +Tnow ../include/thermodynamics.h /^ double Tnow; \/**< defined as in RECFAST *\/$/;" m struct:recombination +U ../include/sparse.h /^ sp_mat *U;$/;" m struct:sparse_numerical +V ../include/primordial.h /^ double V;$/;" m struct:primordial_inflation_parameters_and_workspace +V0 ../include/primordial.h /^ double V0; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V1 ../include/primordial.h /^ double V1; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V2 ../include/primordial.h /^ double V2; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V3 ../include/primordial.h /^ double V3; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V4 ../include/primordial.h /^ double V4; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +VECTOR_POLARISATION_B ../include/transfer.h /^ VECTOR_POLARISATION_B,$/;" e enum:__anon2 +VECTOR_POLARISATION_E ../include/transfer.h /^ VECTOR_POLARISATION_E,$/;" e enum:__anon2 +VECTOR_TEMPERATURE_1 ../include/transfer.h /^ VECTOR_TEMPERATURE_1,$/;" e enum:__anon2 +VECTOR_TEMPERATURE_2 ../include/transfer.h /^ VECTOR_TEMPERATURE_2,$/;" e enum:__anon2 +V_e_scf background.c /^double V_e_scf(struct background *pba,$/;" f +V_p_scf background.c /^double V_p_scf($/;" f +V_scf background.c /^double V_scf($/;" f +WKB_parameters ../include/hyperspherical.h /^struct WKB_parameters{$/;" s +YHe ../include/thermodynamics.h /^ double YHe; \/**< \\f$ Y_{He} \\f$: primordial helium fraction *\/$/;" m struct:thermo +YHe ../include/thermodynamics.h /^ double YHe; \/**< defined as in RECFAST *\/$/;" m struct:recombination +_A2P_s_ ../include/thermodynamics.h 678;" d +_A2P_t_ ../include/thermodynamics.h 679;" d +_ARGUMENT_LENGTH_MAX_ ../include/parser.h 7;" d +_BBN_ ../include/thermodynamics.h 644;" d +_COLUMNWIDTH_ ../include/common.h 61;" d +_DELIMITER_ ../include/common.h 65;" d +_EPSILON_ ../include/common.h 57;" d +_ERRCON_ ../include/dei_rkck.h 91;" d +_ERRORMSGSIZE_ ../include/common.h 27;" d +_E_ ../include/common.h 45;" d +_FAILURE_ ../include/common.h 25;" d +_FALSE_ ../include/common.h 22;" d +_FILENAMESIZE_ ../include/common.h 30;" d +_GT_END_ ../include/growTable.h 12;" d +_GT_FACTOR_ ../include/growTable.h 11;" d +_GT_INITSIZE_ ../include/growTable.h 10;" d +_G_ ../include/background.h 575;" d +_Gyr_over_Mpc_ ../include/background.h 572;" d +_HIS_BYTE_ALIGNMENT_ ../include/hyperspherical.h 16;" d +_HUGE_ ../include/common.h 55;" d +_HYPER_BLOCK_ ../include/hyperspherical.h 13;" d +_HYPER_CHUNK_ ../include/hyperspherical.h 14;" d +_HYPER_OVERFLOW_ ../include/hyperspherical.h 9;" d +_HYPER_SAFETY_ ../include/hyperspherical.h 11;" d +_K_PER_DECADE_PRIMORDIAL_MIN_ ../include/primordial.h 528;" d +_LINE_LENGTH_MAX_ ../include/parser.h 6;" d +_L_H_alpha_ ../include/thermodynamics.h 673;" d +_L_H_ion_ ../include/thermodynamics.h 672;" d +_L_He1_ion_ ../include/thermodynamics.h 674;" d +_L_He2St_ion_ ../include/thermodynamics.h 682;" d +_L_He2_ion_ ../include/thermodynamics.h 675;" d +_L_He_2Pt_ ../include/thermodynamics.h 680;" d +_L_He_2St_ ../include/thermodynamics.h 681;" d +_L_He_2p_ ../include/thermodynamics.h 677;" d +_L_He_2s_ ../include/thermodynamics.h 676;" d +_Lambda_ ../include/thermodynamics.h 670;" d +_Lambda_He_ ../include/thermodynamics.h 671;" d +_MAXSTP_ ../include/dei_rkck.h 86;" d +_MAXTITLESTRINGLENGTH_ ../include/common.h 63;" d +_MAX_IT_ ../include/common.h 47;" d +_MAX_NUMBER_OF_K_FILES_ ../include/perturbations.h 83;" d +_MAX_NUM_EXTRAPOLATION_ ../include/nonlinear.h 13;" d +_MIN_NUMBER_OF_LAGUERRE_POINTS_ ../include/quadrature.h 4;" d +_M_EV_TOO_BIG_FOR_HALOFIT_ ../include/nonlinear.h 9;" d +_M_SUN_ ../include/nonlinear.h 11;" d +_Mpc_over_m_ ../include/background.h 569;" d +_NUM_TARGETS_ ../include/input.h 140;" d +_ONE_OVER_HYPER_OVERFLOW_ ../include/hyperspherical.h 10;" d +_OUTPUTPRECISION_ ../include/common.h 59;" d +_PGROW_ ../include/dei_rkck.h 89;" d +_PIHALF_ ../include/common.h 35;" d +_PI_ ../include/common.h 33;" d +_PSD_DERIVATIVE_EXP_MAX_ ../include/background.h 610;" d +_PSD_DERIVATIVE_EXP_MIN_ ../include/background.h 609;" d +_PSHRNK_ ../include/dei_rkck.h 90;" d +_QUADRATURE_MAX_ ../include/common.h 49;" d +_QUADRATURE_MAX_BG_ ../include/common.h 51;" d +_RECFAST_INTEG_SIZE_ ../include/thermodynamics.h 668;" d +_RKCK_a2_ ../include/dei_rkck.h 93;" d +_RKCK_a3_ ../include/dei_rkck.h 94;" d +_RKCK_a4_ ../include/dei_rkck.h 95;" d +_RKCK_a5_ ../include/dei_rkck.h 96;" d +_RKCK_a6_ ../include/dei_rkck.h 97;" d +_RKCK_b21_ ../include/dei_rkck.h 98;" d +_RKCK_b31_ ../include/dei_rkck.h 99;" d +_RKCK_b32_ ../include/dei_rkck.h 100;" d +_RKCK_b41_ ../include/dei_rkck.h 101;" d +_RKCK_b42_ ../include/dei_rkck.h 102;" d +_RKCK_b43_ ../include/dei_rkck.h 103;" d +_RKCK_b51_ ../include/dei_rkck.h 104;" d +_RKCK_b52_ ../include/dei_rkck.h 105;" d +_RKCK_b53_ ../include/dei_rkck.h 106;" d +_RKCK_b54_ ../include/dei_rkck.h 107;" d +_RKCK_b61_ ../include/dei_rkck.h 108;" d +_RKCK_b62_ ../include/dei_rkck.h 109;" d +_RKCK_b63_ ../include/dei_rkck.h 110;" d +_RKCK_b64_ ../include/dei_rkck.h 111;" d +_RKCK_b65_ ../include/dei_rkck.h 112;" d +_RKCK_c1_ ../include/dei_rkck.h 113;" d +_RKCK_c3_ ../include/dei_rkck.h 114;" d +_RKCK_c4_ ../include/dei_rkck.h 115;" d +_RKCK_c6_ ../include/dei_rkck.h 116;" d +_RKCK_dc1_ ../include/dei_rkck.h 118;" d +_RKCK_dc3_ ../include/dei_rkck.h 119;" d +_RKCK_dc4_ ../include/dei_rkck.h 120;" d +_RKCK_dc5_ ../include/dei_rkck.h 117;" d +_RKCK_dc6_ ../include/dei_rkck.h 121;" d +_SAFETY_ ../include/dei_rkck.h 88;" d +_SCALE_BACK_ ../include/background.h 605;" d +_SELECTION_NUM_MAX_ ../include/perturbations.h 72;" d +_SPLINE_EST_DERIV_ ../include/arrays.h 11;" d +_SPLINE_NATURAL_ ../include/arrays.h 10;" d +_SQRT2_ ../include/common.h 39;" d +_SQRT6_ ../include/common.h 41;" d +_SQRT_PI_ ../include/common.h 43;" d +_SUCCESS_ ../include/common.h 24;" d +_SVN_VERSION_ ../include/svnversion.h 1;" d +_TINY_ ../include/dei_rkck.h 87;" d +_TOLVAR_ ../include/common.h 53;" d +_TRIG_PRECISSION_ ../include/hyperspherical.h 12;" d +_TRUE_ ../include/common.h 21;" d +_TWOPI_ ../include/common.h 37;" d +_TWO_OVER_THREE_ ../include/hyperspherical.h 15;" d +_T_0_ ../include/thermodynamics.h 698;" d +_T_1_ ../include/thermodynamics.h 701;" d +_VERSION_ ../include/common.h 18;" d +_YHE_BIG_ ../include/thermodynamics.h 713;" d +_YHE_SMALL_ ../include/thermodynamics.h 714;" d +_Z_PK_NUM_MAX_ ../include/output.h 14;" d +_Z_REC_MAX_ ../include/thermodynamics.h 715;" d +_Z_REC_MIN_ ../include/thermodynamics.h 716;" d +__ALLOCATE_PRECISION_PARAMETER__ ../include/common.h 354;" d +__ALLOCATE_PRECISION_PARAMETER__ ../include/common.h 356;" d +__ARRAYS__ ../include/arrays.h 6;" d +__ASSIGN_DEFAULT_PRECISION__ input.c 3490;" d file: +__ASSIGN_DEFAULT_PRECISION__ input.c 3492;" d file: +__BACKGROUND__ ../include/background.h 4;" d +__CLASSDIR__ ../include/common.h 68;" d +__CLASS__ ../include/class.h 2;" d +__COMMON__ ../include/common.h 16;" d +__DEI__ ../include/dei_rkck.h 2;" d +__EVO__ ../include/evolver_ndf15.h 2;" d +__EVO__ ../include/evolver_rkck.h 2;" d +__GROWTABLE__ ../include/growTable.h 6;" d +__HYPERSPHERICAL__ ../include/hyperspherical.h 6;" d +__INPUT__ ../include/input.h 4;" d +__LENSING__ ../include/lensing.h 4;" d +__NONLINEAR__ ../include/nonlinear.h 7;" d +__OUTPUT__ ../include/output.h 4;" d +__PARSER__ ../include/parser.h 2;" d +__PARSE_PRECISION_PARAMETER__ input.c 593;" d file: +__PARSE_PRECISION_PARAMETER__ input.c 595;" d file: +__PERTURBATIONS__ ../include/perturbations.h 4;" d +__PRIMORDIAL__ ../include/primordial.h 4;" d +__QSS__ ../include/quadrature.h 2;" d +__SPA__ ../include/sparse.h 2;" d +__SPECTRA__ ../include/spectra.h 4;" d +__THERMODYNAMICS__ ../include/thermodynamics.h 4;" d +__TRANSFER__ ../include/transfer.h 4;" d +__TRIGONOMETRIC_INTEGRALS__ ../include/trigonometric_integrals.h 6;" d +_aH_ ../include/primordial.h /^ _aH_,$/;" e enum:target_quantity +_a_ ../include/primordial.h /^ _a_$/;" e enum:target_quantity +_a_PPB_ ../include/thermodynamics.h 694;" d +_a_VF_ ../include/thermodynamics.h 699;" d +_a_trip_ ../include/thermodynamics.h 702;" d +_b_PPB_ ../include/thermodynamics.h 695;" d +_b_VF_ ../include/thermodynamics.h 700;" d +_b_trip_ ../include/thermodynamics.h 703;" d +_c_ ../include/background.h 574;" d +_c_PPB_ ../include/thermodynamics.h 696;" d +_class_print_species_ ../include/background.h 14;" d +_d_PPB_ ../include/thermodynamics.h 697;" d +_eV_ ../include/background.h 576;" d +_end_inflation_ ../include/primordial.h /^ _end_inflation_,$/;" e enum:target_quantity +_errmsg ../cpp/ClassEngine.hh /^ ErrorMsg _errmsg; \/* for error messages *\/$/;" m class:ClassEngine +_f_Mead nonlinear_hmcode.c /^double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) {$/;" f +_get_bin_integrated_ncl_ ../include/transfer.h 44;" d +_get_bin_nonintegrated_ncl_ ../include/transfer.h 28;" d +_h_BIG_ ../include/background.h 592;" d +_h_P_ ../include/background.h 580;" d +_h_SMALL_ ../include/background.h 593;" d +_index_tt_in_range_ ../include/transfer.h 13;" d +_integrated_ncl_ ../include/transfer.h 15;" d +_k_B_ ../include/background.h 579;" d +_lmax ../cpp/Engine.hh /^ int _lmax;$/;" m class:Engine +_m_H_ ../include/thermodynamics.h 656;" d +_m_e_ ../include/thermodynamics.h 654;" d +_m_p_ ../include/thermodynamics.h 655;" d +_nonintegrated_ncl_ ../include/transfer.h 20;" d +_not4_ ../include/thermodynamics.h 657;" d +_omegab_BIG_ ../include/background.h 594;" d +_omegab_SMALL_ ../include/background.h 595;" d +_phi_ ../include/primordial.h /^ _phi_,$/;" e enum:target_quantity +_scalars_ ../include/perturbations.h 10;" d +_set_source_ ../include/perturbations.h 14;" d +_sigma_ ../include/thermodynamics.h 658;" d +_sigma_He_2Ps_ ../include/thermodynamics.h 683;" d +_sigma_He_2Pt_ ../include/thermodynamics.h 684;" d +_tensors_ ../include/perturbations.h 12;" d +_vectors_ ../include/perturbations.h 11;" d +_zeta3_ ../include/background.h 612;" d +_zeta5_ ../include/background.h 613;" d +a ../include/hermite3_interpolation_csource.h /^double a[3]={0.,0.};$/;" v +a ../include/hermite4_interpolation_csource.h /^double a[3]={0.,0.,0.};$/;" v +a ../tools/hermite3_interpolation_csource.h /^double a[3]={0.,0.};$/;" v +a ../tools/hermite4_interpolation_csource.h /^double a[3]={0.,0.,0.};$/;" v +a1 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a1 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a2 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a2 ../include/primordial.h /^ double a2;$/;" m struct:primordial_inflation_parameters_and_workspace +a2 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a3 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a3 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a4 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a4 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a5 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a5 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +aH ../include/primordial.h /^ double aH;$/;" m struct:primordial_inflation_parameters_and_workspace +a_eq ../include/background.h /^ double a_eq; \/**< scale factor at radiation\/matter equality *\/$/;" m struct:background +a_idm_dr ../include/thermodynamics.h /^ double a_idm_dr; \/**< strength of the coupling between interacting dark matter and interacting dark radiation (idm-idr) *\/$/;" m struct:thermo +a_today ../include/background.h /^ double a_today; \/**< scale factor today (arbitrary and irrelevant for most purposes) *\/$/;" m struct:background +absFdelRm ../include/evolver_ndf15.h /^ double * absFdelRm;$/;" m struct:numjac_workspace +absFvalue ../include/evolver_ndf15.h /^ double * absFvalue;$/;" m struct:numjac_workspace +absFvalueRm ../include/evolver_ndf15.h /^ double * absFvalueRm;$/;" m struct:numjac_workspace +adaptive_integration_tree_node ../include/quadrature.h /^typedef struct adaptive_integration_tree_node{$/;" s +add ../cpp/ClassEngine.hh /^ template unsigned add(const string& key,const T& val){$/;" f class:ClassParams +adjust_stepsize ../tools/evolver_ndf15.c /^int adjust_stepsize(double **dif, double abshdivabshlast, int neq,int k){$/;" f +age ../include/background.h /^ double age; \/**< age in Gyears *\/$/;" m struct:background +airy_cheb_approx ../tools/hyperspherical.c /^double airy_cheb_approx(double z){$/;" f +ak2 ../include/dei_rkck.h /^ double * ak2;$/;" m struct:generic_integrator_workspace +ak3 ../include/dei_rkck.h /^ double * ak3;$/;" m struct:generic_integrator_workspace +ak4 ../include/dei_rkck.h /^ double * ak4;$/;" m struct:generic_integrator_workspace +ak5 ../include/dei_rkck.h /^ double * ak5;$/;" m struct:generic_integrator_workspace +ak6 ../include/dei_rkck.h /^ double * ak6;$/;" m struct:generic_integrator_workspace +alpha_ad_bi ../include/primordial.h /^ double alpha_ad_bi; \/**< ADxBI cross-correlation running *\/$/;" m struct:primordial +alpha_ad_cdi ../include/primordial.h /^ double alpha_ad_cdi; \/**< ADxCDI cross-correlation running *\/$/;" m struct:primordial +alpha_ad_nid ../include/primordial.h /^ double alpha_ad_nid; \/**< ADxNID cross-correlation running *\/$/;" m struct:primordial +alpha_ad_niv ../include/primordial.h /^ double alpha_ad_niv; \/**< ADxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_bi ../include/primordial.h /^ double alpha_bi; \/**< BI running *\/$/;" m struct:primordial +alpha_bi_cdi ../include/primordial.h /^ double alpha_bi_cdi; \/**< BIxCDI cross-correlation running *\/$/;" m struct:primordial +alpha_bi_nid ../include/primordial.h /^ double alpha_bi_nid; \/**< BIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_bi_niv ../include/primordial.h /^ double alpha_bi_niv; \/**< BIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_cdi ../include/primordial.h /^ double alpha_cdi; \/**< CDI running *\/$/;" m struct:primordial +alpha_cdi_nid ../include/primordial.h /^ double alpha_cdi_nid; \/**< CDIxNID cross-correlation running *\/$/;" m struct:primordial +alpha_cdi_niv ../include/primordial.h /^ double alpha_cdi_niv; \/**< CDIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_idm_dr ../include/perturbations.h /^ double * alpha_idm_dr; \/**< Angular contribution to collisional term at l>=2 for idm_fr-idr *\/$/;" m struct:perturbs +alpha_nid ../include/primordial.h /^ double alpha_nid; \/**< NID running *\/$/;" m struct:primordial +alpha_nid_niv ../include/primordial.h /^ double alpha_nid_niv; \/**< NIDxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_niv ../include/primordial.h /^ double alpha_niv; \/**< NIV running *\/$/;" m struct:primordial +alpha_s ../include/primordial.h /^ double alpha_s; \/**< usual scalar running *\/$/;" m struct:primordial +alpha_t ../include/primordial.h /^ double alpha_t; \/**< usual tensor running *\/$/;" m struct:primordial +amplitude ../include/primordial.h /^ double ** amplitude; \/**< all amplitudes in matrix form: amplitude[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +analytic_Pk ../include/primordial.h /^ analytic_Pk,$/;" e enum:primordial_spectrum_type +analytical ../include/primordial.h /^ analytical$/;" e enum:inflation_module_behavior +angular_rescaling ../include/thermodynamics.h /^ double angular_rescaling; \/**< [ratio ra_rec \/ (tau0-tau_rec)]: gives CMB rescaling in angular space relative to flat model (=1 for curvature K=0) *\/$/;" m struct:thermo +angular_rescaling ../include/transfer.h /^ double angular_rescaling; \/**< correction between l and k space due to curvature (= comoving angular diameter distance to recombination \/ comoving radius to recombination) *\/$/;" m struct:transfers +annihilation ../include/thermodynamics.h /^ double annihilation; \/**< parameter describing CDM annihilation (f \/ m_cdm, see e.g. 0905.0003) *\/$/;" m struct:recombination +annihilation ../include/thermodynamics.h /^ double annihilation; \/**< parameter describing CDM annihilation (f \/ m_cdm, see e.g. 0905.0003) *\/$/;" m struct:thermo +annihilation_f_halo ../include/thermodynamics.h /^ double annihilation_f_halo; \/**< takes the contribution of DM annihilation in halos into account*\/$/;" m struct:recombination +annihilation_f_halo ../include/thermodynamics.h /^ double annihilation_f_halo; \/**< takes the contribution of DM annihilation in halos into account*\/$/;" m struct:thermo +annihilation_variation ../include/thermodynamics.h /^ double annihilation_variation; \/**< if this parameter is non-zero,$/;" m struct:recombination +annihilation_variation ../include/thermodynamics.h /^ double annihilation_variation; \/**< if this parameter is non-zero,$/;" m struct:thermo +annihilation_z ../include/thermodynamics.h /^ double annihilation_z; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_z ../include/thermodynamics.h /^ double annihilation_z; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +annihilation_z_halo ../include/thermodynamics.h /^ double annihilation_z_halo; \/**< characteristic redshift for DM annihilation in halos*\/$/;" m struct:recombination +annihilation_z_halo ../include/thermodynamics.h /^ double annihilation_z_halo; \/**< characteristic redshift for DM annihilation in halos*\/$/;" m struct:thermo +annihilation_zmax ../include/thermodynamics.h /^ double annihilation_zmax; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_zmax ../include/thermodynamics.h /^ double annihilation_zmax; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +annihilation_zmin ../include/thermodynamics.h /^ double annihilation_zmin; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_zmin ../include/thermodynamics.h /^ double annihilation_zmin; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +ap_size ../include/perturbations.h /^ int ap_size; \/**< number of relevant approximations for a given mode *\/$/;" m struct:perturb_workspace +app_over_a ../include/primordial.h /^ double app_over_a;$/;" m struct:primordial_inflation_parameters_and_workspace +approx ../include/perturbations.h /^ int * approx; \/**< array of approximation flags holding at a given time: approx[index_ap] *\/$/;" m struct:perturb_workspace +array_derive ../tools/arrays.c /^int array_derive($/;" f +array_derive1_order2_table_line_to_line ../tools/arrays.c /^int array_derive1_order2_table_line_to_line($/;" f +array_derive2_order2_table_line_to_line ../tools/arrays.c /^int array_derive2_order2_table_line_to_line($/;" f +array_derive_spline ../tools/arrays.c /^int array_derive_spline($/;" f +array_derive_spline_table_line_to_line ../tools/arrays.c /^int array_derive_spline_table_line_to_line($/;" f +array_derive_two ../tools/arrays.c /^int array_derive_two($/;" f +array_integrate ../tools/arrays.c /^int array_integrate($/;" f +array_integrate_all ../tools/arrays.c /^int array_integrate_all($/;" f +array_integrate_all_spline ../tools/arrays.c /^int array_integrate_all_spline($/;" f +array_integrate_all_trapzd_or_spline ../tools/arrays.c /^int array_integrate_all_trapzd_or_spline($/;" f +array_integrate_ratio ../tools/arrays.c /^int array_integrate_ratio($/;" f +array_integrate_spline_table_line_to_line ../tools/arrays.c /^int array_integrate_spline_table_line_to_line($/;" f +array_interpolate ../tools/arrays.c /^int array_interpolate($/;" f +array_interpolate_cubic_equal ../tools/arrays.c /^int array_interpolate_cubic_equal($/;" f +array_interpolate_equal ../tools/arrays.c /^int array_interpolate_equal($/;" f +array_interpolate_extrapolate_logspline_loglinear_one_column ../tools/arrays.c /^int array_interpolate_extrapolate_logspline_loglinear_one_column($/;" f +array_interpolate_extrapolate_spline_one_column ../tools/arrays.c /^int array_interpolate_extrapolate_spline_one_column($/;" f +array_interpolate_growing_closeby ../tools/arrays.c /^int array_interpolate_growing_closeby($/;" f +array_interpolate_linear ../tools/arrays.c /^int array_interpolate_linear($/;" f +array_interpolate_logspline ../tools/arrays.c /^int array_interpolate_logspline($/;" f +array_interpolate_one_growing_closeby ../tools/arrays.c /^int array_interpolate_one_growing_closeby($/;" f +array_interpolate_parabola ../tools/arrays.c /^int array_interpolate_parabola(double x1,$/;" f +array_interpolate_spline ../tools/arrays.c /^int array_interpolate_spline($/;" f +array_interpolate_spline_growing_closeby ../tools/arrays.c /^int array_interpolate_spline_growing_closeby($/;" f +array_interpolate_spline_growing_hunt ../tools/arrays.c /^int array_interpolate_spline_growing_hunt($/;" f +array_interpolate_spline_one_column ../tools/arrays.c /^int array_interpolate_spline_one_column($/;" f +array_interpolate_two ../tools/arrays.c /^int array_interpolate_two($/;" f +array_interpolate_two_arrays_one_column ../tools/arrays.c /^int array_interpolate_two_arrays_one_column($/;" f +array_interpolate_two_bis ../tools/arrays.c /^int array_interpolate_two_bis($/;" f +array_logspline_table_lines ../tools/arrays.c /^int array_logspline_table_lines($/;" f +array_logspline_table_one_column ../tools/arrays.c /^int array_logspline_table_one_column($/;" f +array_search_bisect ../tools/arrays.c /^int array_search_bisect($/;" f +array_smooth ../tools/arrays.c /^int array_smooth(double * array,$/;" f +array_smooth_trg ../tools/arrays.c /^int array_smooth_trg(double * array,$/;" f +array_spline ../tools/arrays.c /^int array_spline($/;" f +array_spline_table_columns ../tools/arrays.c /^int array_spline_table_columns($/;" f +array_spline_table_columns2 ../tools/arrays.c /^int array_spline_table_columns2($/;" f +array_spline_table_line_to_line ../tools/arrays.c /^int array_spline_table_line_to_line($/;" f +array_spline_table_lines ../tools/arrays.c /^int array_spline_table_lines($/;" f +array_spline_table_one_column ../tools/arrays.c /^int array_spline_table_one_column($/;" f +array_trapezoidal_convolution ../tools/arrays.c /^int array_trapezoidal_convolution($/;" f +array_trapezoidal_integral ../tools/arrays.c /^int array_trapezoidal_integral($/;" f +array_trapezoidal_mweights ../tools/arrays.c /^int array_trapezoidal_mweights($/;" f +array_trapezoidal_weights ../tools/arrays.c /^int array_trapezoidal_weights($/;" f +attractor_ic_scf ../include/background.h /^ short attractor_ic_scf; \/**< whether the scalar field has attractor initial conditions *\/$/;" m struct:background +b ../include/hermite3_interpolation_csource.h /^double b[3]={0.,0.};$/;" v +b ../include/hermite4_interpolation_csource.h /^double b[3]={0.,0.,0.};$/;" v +b ../tools/hermite3_interpolation_csource.h /^double b[3]={0.,0.};$/;" v +b ../tools/hermite4_interpolation_csource.h /^double b[3]={0.,0.,0.};$/;" v +b1 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b1 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b2 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b2 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b3 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b3 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b4 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b4 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b5 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b5 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b_idr ../include/thermodynamics.h /^ double b_idr; \/**< strength of the self coupling for interacting dark radiation (idr-idr) *\/$/;" m struct:thermo +ba ../cpp/ClassEngine.hh /^ struct background ba; \/* for cosmological background *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::background +background ../include/background.h /^struct background$/;" s +background_at_tau background.c /^int background_at_tau($/;" f +background_derivs background.c /^int background_derivs($/;" f +background_find_equality background.c /^int background_find_equality($/;" f +background_free background.c /^int background_free($/;" f +background_free_input background.c /^int background_free_input($/;" f +background_free_noinput background.c /^int background_free_noinput($/;" f +background_functions background.c /^int background_functions($/;" f +background_indices background.c /^int background_indices($/;" f +background_init background.c /^int background_init($/;" f +background_initial_conditions background.c /^int background_initial_conditions($/;" f +background_ncdm_M_from_Omega background.c /^int background_ncdm_M_from_Omega($/;" f +background_ncdm_distribution background.c /^int background_ncdm_distribution($/;" f +background_ncdm_init background.c /^int background_ncdm_init($/;" f +background_ncdm_momenta background.c /^int background_ncdm_momenta($/;" f +background_ncdm_test_function background.c /^int background_ncdm_test_function($/;" f +background_output_budget background.c /^int background_output_budget($/;" f +background_output_data background.c /^int background_output_data($/;" f +background_output_titles background.c /^int background_output_titles(struct background * pba,$/;" f +background_parameters_and_workspace ../include/background.h /^struct background_parameters_and_workspace {$/;" s +background_parameters_for_distributions ../include/background.h /^struct background_parameters_for_distributions {$/;" s +background_solve background.c /^int background_solve($/;" f +background_table ../include/background.h /^ double * background_table; \/**< table background_table[index_tau*pba->bg_size+pba->index_bg] with all other quantities (array of size bg_size*bt_size) **\/$/;" m struct:background +background_tau_of_z background.c /^int background_tau_of_z($/;" f +background_verbose ../include/background.h /^ short background_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:background +background_w_fld background.c /^int background_w_fld($/;" f +backward ../include/primordial.h /^ backward,$/;" e enum:integration_direction +behavior ../include/primordial.h /^ enum inflation_module_behavior behavior; \/**< Specifies if the inflation module computes the primordial spectrum numerically (default) or analytically*\/$/;" m struct:primordial typeref:enum:primordial::inflation_module_behavior +beta ../include/hermite3_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../include/hermite4_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta ../include/hyperspherical.h /^ double beta;$/;" m struct:WKB_parameters +beta ../include/hyperspherical.h /^ double beta;$/;" m struct:HypersphericalInterpolationStructure +beta ../tools/hermite3_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../tools/hermite4_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta2 ../include/hermite3_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../include/hermite4_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta2 ../tools/hermite3_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../tools/hermite4_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta_idr ../include/perturbations.h /^ double * beta_idr; \/**< Angular contribution to collisional term at l>=2 for idr-idr *\/$/;" m struct:perturbs +beta_s ../include/primordial.h /^ double beta_s; \/**< running of running *\/$/;" m struct:primordial +bg_size ../include/background.h /^ int bg_size; \/**< size of background vector in the "long format" *\/$/;" m struct:background +bg_size_normal ../include/background.h /^ int bg_size_normal; \/**< size of background vector in the "normal format" *\/$/;" m struct:background +bg_size_short ../include/background.h /^ int bg_size_short; \/**< size of background vector in the "short format" *\/$/;" m struct:background +bi_B_size ../include/background.h /^ int bi_B_size; \/**< Number of {B} parameters *\/$/;" m struct:background +bi_size ../include/background.h /^ int bi_size; \/**< Number of {B}+{C} parameters *\/$/;" m struct:background +binned_reio_num ../include/thermodynamics.h /^ int binned_reio_num; \/**< with how many bins do we want to describe reionization? *\/$/;" m struct:thermo +binned_reio_step_sharpness ../include/thermodynamics.h /^ double binned_reio_step_sharpness; \/**< sharpness of tanh() step interpolating between binned values *\/$/;" m struct:thermo +binned_reio_xe ../include/thermodynamics.h /^ double * binned_reio_xe; \/**< imposed \\f$ X_e(z)\\f$ value at center of each bin *\/$/;" m struct:thermo +binned_reio_z ../include/thermodynamics.h /^ double * binned_reio_z; \/**< central z value for each bin *\/$/;" m struct:thermo +bt_size ../include/background.h /^ int bt_size; \/**< number of lines (i.e. time-steps) in the array *\/$/;" m struct:background +buffer ../include/growTable.h /^ void* buffer; \/**< stack of data *\/$/;" m struct:__anon1 +burn_tree ../tools/quadrature.c /^int burn_tree(qss_node *node){$/;" f +c ../include/hermite3_interpolation_csource.h /^double c[3]={0.,0.};$/;" v +c ../include/hermite4_interpolation_csource.h /^double c[3]={0.,0.,0.};$/;" v +c ../tools/hermite3_interpolation_csource.h /^double c[3]={0.,0.};$/;" v +c ../tools/hermite4_interpolation_csource.h /^double c[3]={0.,0.,0.};$/;" v +c1 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c1 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c2 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c2 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c3 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c3 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c4 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c4 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c5 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c5 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c_ad_bi ../include/primordial.h /^ double c_ad_bi; \/**< ADxBI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_cdi ../include/primordial.h /^ double c_ad_cdi; \/**< ADxCDI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_nid ../include/primordial.h /^ double c_ad_nid; \/**< ADxNID cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_niv ../include/primordial.h /^ double c_ad_niv; \/**< ADxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_cdi ../include/primordial.h /^ double c_bi_cdi; \/**< BIxCDI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_nid ../include/primordial.h /^ double c_bi_nid; \/**< BIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_niv ../include/primordial.h /^ double c_bi_niv; \/**< BIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_cdi_nid ../include/primordial.h /^ double c_cdi_nid; \/**< CDIxNID cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_cdi_niv ../include/primordial.h /^ double c_cdi_niv; \/**< CDIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_gamma_over_c_fld ../include/background.h /^ double c_gamma_over_c_fld; \/**< ppf parameter defined in eq. (16) of 0808.3125 [astro-ph] *\/$/;" m struct:background +c_min ../include/nonlinear.h /^ double c_min; \/** for HMcode: minimum concentration in Bullock 2001 mass-concentration relation *\/$/;" m struct:nonlinear +c_nid_niv ../include/primordial.h /^ double c_nid_niv; \/**< NIDxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +calc_C ../tools/evolver_ndf15.c /^int calc_C(struct jacobian *jac){$/;" f +call_perturb_sources_at_tau ../cpp/ClassEngine.cc /^void ClassEngine::call_perturb_sources_at_tau($/;" f class:ClassEngine +camb_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" e enum:file_format +cheb ../tools/hyperspherical.c /^double cheb(double x, int n, const double A[]){$/;" f +chi ../include/transfer.h /^ double * chi; \/**< chi[index_tau]: value of argument of bessel$/;" m struct:transfer_workspace +chi_at_phimin ../include/hyperspherical.h /^ double * chi_at_phimin; \/\/ vector x_min[index-l] below which neglect Bessels$/;" m struct:HypersphericalInterpolationStructure +cl ../cpp/ClassEngine.hh /^ double * cl;$/;" m class:ClassEngine +cl ../include/spectra.h /^ double ** cl; \/**< table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] *\/$/;" m struct:spectra +cl_lens ../include/lensing.h /^ double * cl_lens; \/**< table of anisotropy spectra for each$/;" m struct:lensing +class_alloc ../include/common.h 135;" d +class_alloc_message ../include/common.h 131;" d +class_alloc_parallel ../include/common.h 146;" d +class_at_least_two_of_three ../include/input.h 66;" d +class_build_error_string ../include/common.h 84;" d +class_call ../include/common.h 114;" d +class_call_except ../include/common.h 97;" d +class_call_message ../include/common.h 93;" d +class_call_parallel ../include/common.h 118;" d +class_call_try ../include/common.h 106;" d +class_calloc ../include/common.h 160;" d +class_define_index ../include/common.h 237;" d +class_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" e enum:file_format +class_fprintf_columntitle ../include/common.h 274;" d +class_fprintf_double ../include/common.h 248;" d +class_fprintf_double_or_default ../include/common.h 255;" d +class_fprintf_int ../include/common.h 265;" d +class_fzero_ridder input.c /^int class_fzero_ridder(int (*func)(double x, void *param, double *y, ErrorMsg error_message),$/;" f +class_main ../cpp/ClassEngine.cc /^int ClassEngine::class_main($/;" f class:ClassEngine +class_none_of_three ../include/input.h 71;" d +class_open ../include/common.h 228;" d +class_precision_parameter ../include/precision_macros.h 10;" d +class_precision_parameter ../include/precision_macros.h 14;" d +class_precision_parameter ../include/precision_macros.h 6;" d +class_precision_parameter ../include/precisions.h 496;" d +class_protect_fprintf ../tools/common.c /^void class_protect_fprintf(FILE* stream, char* tpl,...) {$/;" f +class_protect_memcpy ../tools/common.c /^void* class_protect_memcpy(void* dest, void* from, size_t sz) {$/;" f +class_protect_sprintf ../tools/common.c /^void class_protect_sprintf(char* dest, char* tpl,...) {$/;" f +class_read_double ../include/input.h 20;" d +class_read_double_one_of_two ../include/input.h 48;" d +class_read_int ../include/input.h 30;" d +class_read_list_of_doubles ../include/input.h 107;" d +class_read_list_of_doubles_or_default ../include/input.h 75;" d +class_read_list_of_integers ../include/input.h 120;" d +class_read_list_of_integers_or_default ../include/input.h 91;" d +class_read_string ../include/input.h 39;" d +class_realloc ../include/common.h 171;" d +class_stop ../include/common.h 219;" d +class_store_columntitle ../include/common.h 284;" d +class_store_double ../include/common.h 294;" d +class_store_double_or_default ../include/common.h 302;" d +class_string_parameter ../include/precision_macros.h 20;" d +class_string_parameter ../include/precision_macros.h 25;" d +class_string_parameter ../include/precision_macros.h 29;" d +class_string_parameter ../include/precisions.h 497;" d +class_test ../include/common.h 200;" d +class_test_except ../include/common.h 192;" d +class_test_message ../include/common.h 183;" d +class_test_parallel ../include/common.h 207;" d +class_type_parameter ../include/precision_macros.h 35;" d +class_type_parameter ../include/precision_macros.h 39;" d +class_type_parameter ../include/precision_macros.h 43;" d +class_type_parameter ../include/precisions.h 498;" d +class_version input.c /^int class_version($/;" f +cleanup_generic_integrator ../tools/dei_rkck.c /^int cleanup_generic_integrator(struct generic_integrator_workspace * pgi){$/;" f +closed ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +cltype ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" g class:Engine +cnzmax ../include/evolver_ndf15.h /^ int cnzmax;$/;" m struct:jacobian +coef1 ../tools/hyperspherical.c /^double coef1(double z){$/;" f +coef2 ../tools/hyperspherical.c /^double coef2(double z){$/;" f +coef3 ../tools/hyperspherical.c /^double coef3(double z){$/;" f +coef4 ../tools/hyperspherical.c /^double coef4(double z){$/;" f +col_group ../include/evolver_ndf15.h /^ int *col_group; \/* Column grouping. Groups go from 0 to max_group*\/$/;" m struct:jacobian +col_wi ../include/evolver_ndf15.h /^ int *col_wi; \/* Workarray for column grouping*\/$/;" m struct:jacobian +column_grouping ../tools/sparse.c /^int column_grouping(sp_mat *G, int *col_g, int *filled){$/;" f +command ../include/primordial.h /^ char* command; \/**< string with the command for calling 'external_Pk' *\/$/;" m struct:primordial +compare_doubles input.c /^int compare_doubles(const void *a,const void *b) {$/;" f +compare_integers input.c /^int compare_integers (const void * elem1, const void * elem2) {$/;" f +compromise_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +computation_stage ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" g +computeCls ../cpp/ClassEngine.cc /^int ClassEngine::computeCls(){$/;" f class:ClassEngine +compute_Hermite ../tools/quadrature.c /^int compute_Hermite(double *x, double *w, int N, int alpha, double *b, double *c){$/;" f +compute_Laguerre ../tools/quadrature.c /^int compute_Laguerre(double *x, double *w, int N, double alpha, double *b, double *c,int totalweight){$/;" f +compute_cb2_derivatives ../include/thermodynamics.h /^ short compute_cb2_derivatives; \/**< do we want to include in computation derivatives of baryon sound speed? *\/$/;" m struct:thermo +compute_damping_scale ../include/thermodynamics.h /^ short compute_damping_scale; \/**< do we want to compute the simplest analytic approximation to the photon damping (or diffusion) scale? *\/$/;" m struct:thermo +conformal ../include/primordial.h /^ conformal,$/;" e enum:time_definition +conformal_age ../include/background.h /^ double conformal_age; \/**< conformal age in Mpc *\/$/;" m struct:background +cosine_integral ../tools/trigonometric_integrals.c /^int cosine_integral($/;" f +cotK ../include/hermite3_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../include/hermite4_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +cotK ../include/hyperspherical.h /^ double *cotK; \/\/Vector of cot_K(xvec)$/;" m struct:HypersphericalInterpolationStructure +cotK ../tools/hermite3_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../tools/hermite4_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +cotKgen ../include/transfer.h /^ double * cotKgen; \/**< cotKgen[index_tau]: useful trigonometric function *\/$/;" m struct:transfer_workspace +cotKm ../include/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +cotKm ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKm ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKm ../tools/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +cotKm ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKm ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKp ../include/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +cotKp ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKp ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKp ../tools/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +cotKp ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKp ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cs2_fld ../include/background.h /^ double cs2_fld; \/**< \\f$ c^2_{s~DE} \\f$: sound speed of the fluid$/;" m struct:background +cs_background ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_nonlinear ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_perturbations ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_primordial ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_spectra ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_thermodynamics ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_transfer ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cscKgen ../include/transfer.h /^ double * cscKgen; \/**< cscKgen[index_tau]: useful trigonometric function *\/$/;" m struct:transfer_workspace +csz ../include/growTable.h /^ long csz; \/**< real size *\/$/;" m struct:__anon1 +ct_size ../include/spectra.h /^ int ct_size; \/**< number of \\f$ C_l \\f$ types requested *\/$/;" m struct:spectra +cubature_order_eleven ../tools/quadrature.c /^int cubature_order_eleven($/;" f +current_border_idx ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +custom1 ../include/primordial.h /^ double custom1; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom10 ../include/primordial.h /^ double custom10; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom2 ../include/primordial.h /^ double custom2; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom3 ../include/primordial.h /^ double custom3; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom4 ../include/primordial.h /^ double custom4; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom5 ../include/primordial.h /^ double custom5; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom6 ../include/primordial.h /^ double custom6; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom7 ../include/primordial.h /^ double custom7; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom8 ../include/primordial.h /^ double custom8; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom9 ../include/primordial.h /^ double custom9; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +d2background_dtau2_table ../include/background.h /^ double * d2background_dtau2_table; \/**< table d2background_dtau2_table[index_tau*pba->bg_size+pba->index_bg] with values of \\f$ d^2 b_i \/ d\\tau^2 \\f$ (conformal time) *\/$/;" m struct:background +d2f0 ../include/background.h /^ double *d2f0;$/;" m struct:background_parameters_for_distributions +d2tau_dz2_table ../include/background.h /^ double * d2tau_dz2_table; \/**< vector d2tau_dz2_table[index_tau] with values of \\f$ d^2 \\tau \/ dz^2 \\f$ (conformal time) *\/$/;" m struct:background +d2thermodynamics_dz2_table ../include/thermodynamics.h /^ double * d2thermodynamics_dz2_table; \/**< table d2thermodynamics_dz2_table[index_z*pth->tt_size+pba->index_th] with values of \\f$ d^2 t_i \/ dz^2 \\f$ (array of size th_size*tt_size) *\/$/;" m struct:thermo +d2ym ../include/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d2ym ../include/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2ym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2ym ../tools/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d2ym ../tools/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2ym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2yp ../include/hermite3_interpolation_csource.h /^double d2yp=0;$/;" v +d2yp ../include/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2yp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2yp ../tools/hermite3_interpolation_csource.h /^double d2yp=0;$/;" v +d2yp ../tools/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2yp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d3ym ../include/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3ym ../include/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3ym ../tools/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3ym ../tools/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3yp ../include/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d3yp ../include/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3yp ../include/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3yp ../tools/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d3yp ../tools/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3yp ../tools/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d4ym ../include/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4ym ../tools/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4yp ../include/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4yp ../tools/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +dH ../include/primordial.h /^ double dH;$/;" m struct:primordial_inflation_parameters_and_workspace +dPhi_l ../include/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../include/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../include/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dV ../include/primordial.h /^ double dV;$/;" m struct:primordial_inflation_parameters_and_workspace +dV_e_scf background.c /^double dV_e_scf(struct background *pba,$/;" f +dV_p_scf background.c /^double dV_p_scf($/;" f +dV_scf background.c /^double dV_scf($/;" f +d_size ../include/spectra.h /^ int d_size; \/**< number of bins for which density Cl's are computed *\/$/;" m struct:spectra +da_rec ../include/thermodynamics.h /^ double da_rec; \/**< physical angular diameter distance to recombination *\/$/;" m struct:thermo +da_star ../include/thermodynamics.h /^ double da_star; \/**< physical angular diameter distance to z_star *\/$/;" m struct:thermo +dark_energy_correction ../include/nonlinear.h /^ double dark_energy_correction; \/** this is the ratio [g_wcdm(z_infinity)\/g_lcdm(z_infinity)]^1.5$/;" m struct:nonlinear_workspace +dc_Mead nonlinear_hmcode.c /^double dc_Mead(double a, double Om_m, double f_nu, double g, double G) {$/;" f +ddH ../include/primordial.h /^ double ddH;$/;" m struct:primordial_inflation_parameters_and_workspace +ddV ../include/primordial.h /^ double ddV;$/;" m struct:primordial_inflation_parameters_and_workspace +ddV_e_scf background.c /^double ddV_e_scf(struct background *pba,$/;" f +ddV_p_scf background.c /^double ddV_p_scf($/;" f +ddV_scf background.c /^double ddV_scf($/;" f +ddcl ../include/spectra.h /^ double ** ddcl; \/**< second derivatives of previous table with respect to l, in view of spline interpolation *\/$/;" m struct:spectra +ddcl_lens ../include/lensing.h /^ double * ddcl_lens; \/**< second derivatives for interpolation *\/$/;" m struct:lensing +dddH ../include/primordial.h /^ double dddH;$/;" m struct:primordial_inflation_parameters_and_workspace +ddlate_sources ../include/perturbations.h /^ double *** ddlate_sources; \/**< Pointer towards the splined source interpolation table with second derivatives with respect to time$/;" m struct:perturbs +ddln_pk_ic_l ../include/nonlinear.h /^ double ** ddln_pk_ic_l; \/**< second derivative of above array with respect to log(tau), for spline interpolation. So:$/;" m struct:nonlinear +ddln_pk_l ../include/nonlinear.h /^ double ** ddln_pk_l; \/**< second derivative of above array with respect to log(tau), for spline interpolation. *\/$/;" m struct:nonlinear +ddln_pk_nl ../include/nonlinear.h /^ double ** ddln_pk_nl; \/**< second derivative of above array with respect to log(tau), for spline interpolation. *\/$/;" m struct:nonlinear +ddlnpk ../include/primordial.h /^ double ** ddlnpk; \/**< second derivative of above array, for spline interpolation. So:$/;" m struct:primordial +ddstab ../include/nonlinear.h /^ double * ddstab; \/** Splined sigma *\/$/;" m struct:nonlinear_workspace +decay ../include/thermodynamics.h /^ double decay; \/**< parameter describing CDM decay (f\/tau, see e.g. 1109.6322)*\/$/;" m struct:recombination +decay ../include/thermodynamics.h /^ double decay; \/**< parameter describing CDM decay (f\/tau, see e.g. 1109.6322)*\/$/;" m struct:thermo +deg_ncdm ../include/background.h /^ double * deg_ncdm, deg_ncdm_default; \/**< vector of degeneracy parameters in factor$/;" m struct:background +deg_ncdm_default ../include/background.h /^ double * deg_ncdm, deg_ncdm_default; \/**< vector of degeneracy parameters in factor$/;" m struct:background +del ../include/evolver_ndf15.h /^ double *del;$/;" m struct:numjac_workspace +delta_bc_squared ../include/common.h /^ delta_bc_squared, \/**< delta_bc includes contribution of baryons and cdm only to (delta rho) and to rho *\/$/;" e enum:pk_def +delta_cb ../include/perturbations.h /^ double delta_cb; \/**< relative density perturbation of only cdm and baryon *\/$/;" m struct:perturb_workspace +delta_m ../include/perturbations.h /^ double delta_m; \/**< relative density perturbation of all non-relativistic species *\/$/;" m struct:perturb_workspace +delta_m_squared ../include/common.h /^ delta_m_squared, \/**< normal definition (delta_m includes all non-relativistic species at late times) *\/$/;" e enum:pk_def +delta_ncdm ../include/perturbations.h /^ double * delta_ncdm; \/**< relative density perturbation of each ncdm species *\/$/;" m struct:perturb_workspace +delta_p ../include/perturbations.h /^ double delta_p; \/**< total pressure perturbation (gives Tii) *\/$/;" m struct:perturb_workspace +delta_p_fld ../include/perturbations.h /^ double delta_p_fld; \/**< pressure perturbation of fluid, very non-trivial in PPF scheme *\/$/;" m struct:perturb_workspace +delta_rho ../include/perturbations.h /^ double delta_rho; \/**< total density perturbation (gives delta Too) *\/$/;" m struct:perturb_workspace +delta_rho_fld ../include/perturbations.h /^ double delta_rho_fld; \/**< density perturbation of fluid, not so trivial in PPF scheme *\/$/;" m struct:perturb_workspace +delta_tot_from_poisson_squared ../include/common.h /^ delta_tot_from_poisson_squared \/**< use delta_tot inferred from gravitational potential through Poisson equation *\/$/;" e enum:pk_def +delta_tot_squared ../include/common.h /^ delta_tot_squared, \/**< delta_tot includes all species contributions to (delta rho), and only non-relativistic contributions to rho *\/$/;" e enum:pk_def +delta_x ../include/hyperspherical.h /^ double delta_x; \/\/x-spacing. (xvec is uniformly spaced)$/;" m struct:HypersphericalInterpolationStructure +deltax ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax2 ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax2 ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +dfdy ../include/evolver_ndf15.h /^ double **dfdy;$/;" m struct:jacobian +dfsr ../tools/sparse.c /^void dfsr(int j, sp_mat *G, int *top, int *xik, int *pinv){$/;" f +dirac ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +dlnf0_dlnq_ncdm ../include/background.h /^ double ** dlnf0_dlnq_ncdm; \/**< Pointers to vectors of logarithmic derivatives of p-s-d *\/$/;" m struct:background +dofree ../cpp/ClassEngine.hh /^ bool dofree;$/;" m class:ClassEngine +dphi ../include/hyperspherical.h /^ double *dphi; \/\/Same as phivec, but containing derivatives.$/;" m struct:HypersphericalInterpolationStructure +dphisign ../include/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../include/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../include/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +ds_d ../include/thermodynamics.h /^ double ds_d; \/**< physical sound horizon at baryon drag *\/$/;" m struct:thermo +ds_rec ../include/thermodynamics.h /^ double ds_rec; \/**< physical sound horizon at recombination *\/$/;" m struct:thermo +ds_star ../include/thermodynamics.h /^ double ds_star; \/**< physical sound horizon at z_star *\/$/;" m struct:thermo +dsign ../include/dei_rkck.h 84;" d +dy ../include/perturbations.h /^ double * dy; \/**< time-derivative of the same vector *\/$/;" m struct:perturb_vector +dydx ../include/dei_rkck.h /^ double * dydx;$/;" m struct:generic_integrator_workspace +dym ../include/hermite3_interpolation_csource.h /^double dym=0;$/;" v +dym ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dym ../tools/hermite3_interpolation_csource.h /^double dym=0;$/;" v +dym ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dyp ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +dyp ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dyp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dyp ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +dyp ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dyp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +eisw_lisw_split_z ../include/perturbations.h /^ double eisw_lisw_split_z; \/**< at which redshift do we define the cut between eisw and lisw ?*\/$/;" m struct:perturbs +equation_of_state ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" g +eqvec ../tools/evolver_ndf15.c /^void eqvec(double *datavec,double *emptyvec, int n){$/;" f +err ../include/quadrature.h /^ double err; \/* Estimated error *\/$/;" m struct:adaptive_integration_tree_node +error_message ../include/background.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:background +error_message ../include/common.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:precision +error_message ../include/dei_rkck.h /^ ErrorMsg error_message;$/;" m struct:generic_integrator_workspace +error_message ../include/growTable.h /^ ErrorMsg error_message; \/**< error message slot *\/$/;" m struct:__anon1 +error_message ../include/lensing.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:lensing +error_message ../include/nonlinear.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:nonlinear +error_message ../include/output.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:output +error_message ../include/perturbations.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:perturbs +error_message ../include/primordial.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:primordial +error_message ../include/spectra.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:spectra +error_message ../include/thermodynamics.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:thermo +error_message ../include/transfer.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:transfers +eta_0 ../include/nonlinear.h /^ double eta_0; \/** for HMcode: halo bloating parameter *\/$/;" m struct:nonlinear +evolve_tensor_ncdm ../include/perturbations.h /^ short evolve_tensor_ncdm; \/**< will we evolve ncdm tensor perturbations (if we have ncdm species and we use the exact method) ? *\/$/;" m struct:perturbs +evolve_tensor_ur ../include/perturbations.h /^ short evolve_tensor_ur; \/**< will we evolve ur tensor perturbations (either because we have ur species, or we have ncdm species with massless approximation) ? *\/$/;" m struct:perturbs +evolver_ndf15 ../tools/evolver_ndf15.c /^int evolver_ndf15($/;" f +evolver_rk ../tools/evolver_rkck.c /^int evolver_rk(int (*derivs)(double x,$/;" f +evolver_type ../include/common.h /^enum evolver_type {$/;" g +external_Pk ../include/primordial.h /^ external_Pk$/;" e enum:primordial_spectrum_type +extrap_hmcode ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_max_scaled ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_only_max ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_only_max_units ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_user_defined ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_zero ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrapolation_method ../include/nonlinear.h /^ enum source_extrapolation extrapolation_method; \/**< method for analytical extrapolation of sources beyond pre-computed range *\/$/;" m struct:nonlinear typeref:enum:nonlinear::source_extrapolation +f0 ../include/background.h /^ double *f0;$/;" m struct:background_parameters_for_distributions +f1 ../include/thermodynamics.h 46;" d +f2 ../include/thermodynamics.h 47;" d +fHe ../include/thermodynamics.h /^ double fHe; \/**< defined as in RECFAST *\/$/;" m struct:recombination +f_bi ../include/primordial.h /^ double f_bi; \/**< baryon isocurvature (BI) entropy-to-curvature ratio \\f$ S_{bi}\/R \\f$*\/$/;" m struct:primordial +f_cdi ../include/primordial.h /^ double f_cdi; \/**< CDM isocurvature (CDI) entropy-to-curvature ratio \\f$ S_{cdi}\/R \\f$*\/$/;" m struct:primordial +f_nid ../include/primordial.h /^ double f_nid; \/**< neutrino density isocurvature (NID) entropy-to-curvature ratio \\f$ S_{nid}\/R \\f$*\/$/;" m struct:primordial +f_niv ../include/primordial.h /^ double f_niv; \/**< neutrino velocity isocurvature (NIV) entropy-to-curvature ratio \\f$ S_{niv}\/R \\f$*\/$/;" m struct:primordial +factor_ncdm ../include/background.h /^ double * factor_ncdm; \/**< List of normalization factors for calculating energy density etc.*\/$/;" m struct:background +fc ../cpp/ClassEngine.hh /^ struct file_content fc;$/;" m class:ClassEngine typeref:struct:ClassEngine::file_content +fc ../include/input.h /^ struct file_content fc;$/;" m struct:fzerofun_workspace typeref:struct:fzerofun_workspace::file_content +feedback ../include/nonlinear.h /^ enum hmcode_baryonic_feedback_model feedback; \/** to choose between different baryonic feedback models$/;" m struct:nonlinear typeref:enum:nonlinear::hmcode_baryonic_feedback_model +ffdel ../include/evolver_ndf15.h /^ double * ffdel;$/;" m struct:numjac_workspace +file_content ../include/parser.h /^struct file_content {$/;" s +file_exists input.c /^int file_exists(const char *fname){$/;" f +file_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" g +filename ../include/parser.h /^ char * filename;$/;" m struct:file_content +first_order_CAMB ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +first_order_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +first_order_MB ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +flat ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +fluid_equation_of_state ../include/background.h /^ enum equation_of_state fluid_equation_of_state; \/**< parametrisation scheme for fluid equation of state *\/$/;" m struct:background typeref:enum:background::equation_of_state +forward ../include/primordial.h /^ forward$/;" e enum:integration_direction +freeStructs ../cpp/ClassEngine.cc /^ClassEngine::freeStructs(){$/;" f class:ClassEngine +freeze ../include/growTable.h /^ int freeze; \/**< if set to _TRUE_ no data can be added *\/$/;" m struct:__anon1 +fu ../include/thermodynamics.h /^ double fu; \/**< defined as in RECFAST *\/$/;" m struct:recombination +fzero_Newton ../tools/evolver_ndf15.c /^int fzero_Newton(int (*func)(double *x,$/;" f +fzero_ridder ../tools/hyperspherical.c /^int fzero_ridder(double (*func)(double, void *),$/;" f +fzerofun_workspace ../include/input.h /^struct fzerofun_workspace {$/;" s +gauge ../include/perturbations.h /^ enum possible_gauges gauge; \/**< gauge in which to perform this calculation *\/$/;" m struct:perturbs typeref:enum:perturbs::possible_gauges +gaussian ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +generic_integrator ../tools/dei_rkck.c /^int generic_integrator(int (*derivs)(double x, double y[], double yprime[], void * parameters_and_workspace, ErrorMsg error_message),$/;" f +generic_integrator_workspace ../include/dei_rkck.h /^struct generic_integrator_workspace$/;" s +getCl ../cpp/ClassEngine.cc /^ClassEngine::getCl(Engine::cltype t,const long &l){$/;" f class:ClassEngine +getCls ../cpp/ClassEngine.cc /^ClassEngine::getCls(const std::vector& lvec, \/\/input $/;" f class:ClassEngine +getLensing ../cpp/ClassEngine.cc /^ClassEngine::getLensing(const std::vector& lvec, \/\/input $/;" f class:ClassEngine +getTauReio ../cpp/ClassEngine.hh /^ double getTauReio() const {return th.tau_reio;}$/;" f class:ClassEngine +getTk ../cpp/ClassEngine.cc /^ClassEngine::getTk( double z, $/;" f class:ClassEngine +get_Az ../cpp/ClassEngine.cc /^double ClassEngine::get_Az(double z)$/;" f class:ClassEngine +get_CF1 ../tools/hyperspherical.c /^int get_CF1(int K,int l,double beta, double cotK, double *CF, int *isign){$/;" f +get_Da ../cpp/ClassEngine.cc /^double ClassEngine::get_Da(double z)$/;" f class:ClassEngine +get_Dv ../cpp/ClassEngine.cc /^double ClassEngine::get_Dv(double z)$/;" f class:ClassEngine +get_Fz ../cpp/ClassEngine.cc /^double ClassEngine::get_Fz(double z)$/;" f class:ClassEngine +get_Hz ../cpp/ClassEngine.cc /^double ClassEngine::get_Hz(double z)$/;" f class:ClassEngine +get_f ../cpp/ClassEngine.cc /^double ClassEngine::get_f(double z)$/;" f class:ClassEngine +get_integral ../tools/quadrature.c /^double get_integral(qss_node *node, int level){$/;" f +get_leaf_x_and_w ../tools/quadrature.c /^int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite){$/;" f +get_machine_precision input.c /^int get_machine_precision(double * smallest_allowed_variation) {$/;" f +get_number_of_titles ../tools/common.c /^int get_number_of_titles(char * titlestring){$/;" f +get_qsampling ../tools/quadrature.c /^int get_qsampling(double *x,$/;" f +get_qsampling_manual ../tools/quadrature.c /^int get_qsampling_manual(double *x,$/;" f +get_sigma8 ../cpp/ClassEngine.cc /^double ClassEngine::get_sigma8(double z)$/;" f class:ClassEngine +get_value_at_small_phi ../tools/hyperspherical.c /^double get_value_at_small_phi(int K,int l,double beta,double Phi){$/;" f +gk_adapt ../tools/quadrature.c /^int gk_adapt($/;" f +gk_quad ../tools/quadrature.c /^int gk_quad(int (*test)(void * params_for_function, double q, double *psi),$/;" f +got_files ../include/background.h /^ int * got_files; \/**< list of flags for each species, set to true if$/;" m struct:background +growTable ../include/growTable.h /^} growTable;$/;" t typeref:struct:__anon1 +growtable ../include/nonlinear.h /^ double * growtable;$/;" m struct:nonlinear_workspace +gt_add ../tools/growTable.c /^int gt_add($/;" f +gt_free ../tools/growTable.c /^int gt_free(growTable* self) {$/;" f +gt_getPtr ../tools/growTable.c /^int gt_getPtr($/;" f +gt_getSize ../tools/growTable.c /^int gt_getSize($/;" f +gt_init ../tools/growTable.c /^int gt_init($/;" f +gt_retrieve ../tools/growTable.c /^int gt_retrieve($/;" f +gt_retrieveAll ../tools/growTable.c /^int gt_retrieveAll($/;" f +gw_source ../include/perturbations.h /^ double gw_source; \/**< stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) *\/$/;" m struct:perturb_workspace +h ../include/background.h /^ double h; \/**< reduced Hubble parameter *\/$/;" m struct:background +halofit_integral_one ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_three ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_two ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_type ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" g +has_Nbody_gauge_transfers ../include/perturbations.h /^ short has_Nbody_gauge_transfers; \/**< should we convert density and velocity transfer functions to Nbody gauge? *\/$/;" m struct:perturbs +has_ad ../include/perturbations.h /^ short has_ad; \/**< do we need adiabatic mode? *\/$/;" m struct:perturbs +has_bb ../include/lensing.h /^ int has_bb; \/**< do we want \\f$ C_l^{BB}\\f$? (B = B-polarization) *\/$/;" m struct:lensing +has_bb ../include/spectra.h /^ int has_bb; \/**< do we want \\f$ C_l^{BB}\\f$? (B = B-polarization) *\/$/;" m struct:spectra +has_bi ../include/perturbations.h /^ short has_bi; \/**< do we need isocurvature bi mode? *\/$/;" m struct:perturbs +has_cdi ../include/perturbations.h /^ short has_cdi; \/**< do we need isocurvature cdi mode? *\/$/;" m struct:perturbs +has_cdm ../include/background.h /^ short has_cdm; \/**< presence of cold dark matter? *\/$/;" m struct:background +has_cl_cmb_lensing_potential ../include/perturbations.h /^ short has_cl_cmb_lensing_potential; \/**< do we need \\f$ C_l \\f$'s for CMB lensing potential? *\/$/;" m struct:perturbs +has_cl_cmb_polarization ../include/perturbations.h /^ short has_cl_cmb_polarization; \/**< do we need \\f$ C_l \\f$'s for CMB polarization? *\/$/;" m struct:perturbs +has_cl_cmb_temperature ../include/perturbations.h /^ short has_cl_cmb_temperature; \/**< do we need \\f$ C_l \\f$'s for CMB temperature? *\/$/;" m struct:perturbs +has_cl_lensing_potential ../include/perturbations.h /^ short has_cl_lensing_potential; \/**< do we need \\f$ C_l \\f$'s for galaxy lensing potential? *\/$/;" m struct:perturbs +has_cl_number_count ../include/perturbations.h /^ short has_cl_number_count; \/**< do we need \\f$ C_l \\f$'s for density number count? *\/$/;" m struct:perturbs +has_cls ../include/perturbations.h /^ short has_cls; \/**< do we need any harmonic space spectrum \\f$ C_l \\f$ (and hence Bessel functions, transfer functions, ...)? *\/$/;" m struct:perturbs +has_cls ../include/transfer.h /^ short has_cls; \/**< copy of same flag in perturbation structure *\/$/;" m struct:transfers +has_cmb ../include/perturbations.h /^ short has_cmb; \/**< do we need CMB-related sources (temperature, polarization) ? *\/$/;" m struct:perturbs +has_curvature ../include/background.h /^ short has_curvature; \/**< presence of global spatial curvature? *\/$/;" m struct:background +has_dcdm ../include/background.h /^ short has_dcdm; \/**< presence of decaying cold dark matter? *\/$/;" m struct:background +has_dd ../include/lensing.h /^ int has_dd; \/**< do we want \\f$ C_l^{dd}\\f$? (d = matter density) *\/$/;" m struct:lensing +has_dd ../include/spectra.h /^ int has_dd; \/**< do we want \\f$ C_l^{dd}\\f$? (d = density) *\/$/;" m struct:spectra +has_density_transfers ../include/perturbations.h /^ short has_density_transfers; \/**< do we need to output individual matter density transfer functions? *\/$/;" m struct:perturbs +has_dl ../include/spectra.h /^ int has_dl; \/**< do we want \\f$ C_l^{dl}\\f$? *\/$/;" m struct:spectra +has_dr ../include/background.h /^ short has_dr; \/**< presence of relativistic decay radiation? *\/$/;" m struct:background +has_ee ../include/lensing.h /^ int has_ee; \/**< do we want lensed \\f$ C_l^{EE}\\f$? (E = E-polarization) *\/$/;" m struct:lensing +has_ee ../include/spectra.h /^ int has_ee; \/**< do we want \\f$ C_l^{EE}\\f$? (E = E-polarization) *\/$/;" m struct:spectra +has_ep ../include/spectra.h /^ int has_ep; \/**< do we want \\f$ C_l^{E\\phi}\\f$? *\/$/;" m struct:spectra +has_fld ../include/background.h /^ short has_fld; \/**< presence of fluid with constant w and cs2? *\/$/;" m struct:background +has_grouping ../include/evolver_ndf15.h /^ int has_grouping;$/;" m struct:jacobian +has_idm_dr ../include/background.h /^ short has_idm_dr; \/**< presence of dark matter interacting with dark radiation? *\/$/;" m struct:background +has_idr ../include/background.h /^ short has_idr; \/**< presence of interacting dark radiation? *\/$/;" m struct:background +has_lambda ../include/background.h /^ short has_lambda; \/**< presence of cosmological constant? *\/$/;" m struct:background +has_lensed_cls ../include/lensing.h /^ short has_lensed_cls; \/**< do we need to compute lensed \\f$ C_l\\f$'s at all ? *\/$/;" m struct:lensing +has_ll ../include/lensing.h /^ int has_ll; \/**< do we want \\f$ C_l^{ll}\\f$? (l = lensing potential) *\/$/;" m struct:lensing +has_ll ../include/spectra.h /^ int has_ll; \/**< do we want \\f$ C_l^{ll}\\f$? (l = galaxy lensing potential) *\/$/;" m struct:spectra +has_lss ../include/perturbations.h /^ short has_lss; \/**< do we need LSS-related sources (lensing potential, ...) ? *\/$/;" m struct:perturbs +has_metricpotential_transfers ../include/perturbations.h /^ short has_metricpotential_transfers;\/**< do we need to output individual transfer functions for scalar metric perturbations? *\/$/;" m struct:perturbs +has_nc_density ../include/perturbations.h /^ short has_nc_density; \/**< in dCl, do we want density terms ? *\/$/;" m struct:perturbs +has_nc_gr ../include/perturbations.h /^ short has_nc_gr; \/**< in dCl, do we want gravity terms ? *\/$/;" m struct:perturbs +has_nc_lens ../include/perturbations.h /^ short has_nc_lens; \/**< in dCl, do we want lensing terms ? *\/$/;" m struct:perturbs +has_nc_rsd ../include/perturbations.h /^ short has_nc_rsd; \/**< in dCl, do we want redshift space distortion terms ? *\/$/;" m struct:perturbs +has_ncdm ../include/background.h /^ short has_ncdm; \/**< presence of non-cold dark matter? *\/$/;" m struct:background +has_nid ../include/perturbations.h /^ short has_nid; \/**< do we need isocurvature nid mode? *\/$/;" m struct:perturbs +has_niv ../include/perturbations.h /^ short has_niv; \/**< do we need isocurvature niv mode? *\/$/;" m struct:perturbs +has_nl_corrections_based_on_delta_m ../include/perturbations.h /^ short has_nl_corrections_based_on_delta_m; \/**< do we want to compute non-linear corrections with an algorithm relying on delta_m (like halofit)? *\/$/;" m struct:perturbs +has_nz_analytic ../include/transfer.h /^ short has_nz_analytic; \/**< Use analytic form for dN\/dz (selection function) distribution? *\/$/;" m struct:transfers +has_nz_evo_analytic ../include/transfer.h /^ short has_nz_evo_analytic; \/**< Use analytic form for dN\/dz (evolution function) distribution? *\/$/;" m struct:transfers +has_nz_evo_file ../include/transfer.h /^ short has_nz_evo_file; \/**< Has dN\/dz (evolution function) input file? *\/$/;" m struct:transfers +has_nz_file ../include/transfer.h /^ short has_nz_file; \/**< Has dN\/dz (selection function) input file? *\/$/;" m struct:transfers +has_on_the_spot ../include/thermodynamics.h /^ short has_on_the_spot; \/**< flag to specify if we want to use the on-the-spot approximation **\/$/;" m struct:recombination +has_on_the_spot ../include/thermodynamics.h /^ short has_on_the_spot; \/**< flag to specify if we want to use the on-the-spot approximation **\/$/;" m struct:thermo +has_pattern ../include/evolver_ndf15.h /^ int has_pattern;$/;" m struct:jacobian +has_pd ../include/spectra.h /^ int has_pd; \/**< do we want \\f$ C_l^{\\phi d}\\f$? *\/$/;" m struct:spectra +has_perturbations ../include/perturbations.h /^ short has_perturbations; \/**< do we need to compute perturbations at all ? *\/$/;" m struct:perturbs +has_perturbed_recombination ../include/perturbations.h /^ short has_perturbed_recombination;$/;" m struct:perturbs +has_pk_cb ../include/nonlinear.h /^ short has_pk_cb; \/**< do we want spectra for cdm+baryons? *\/$/;" m struct:nonlinear +has_pk_eq ../include/nonlinear.h /^ short has_pk_eq; \/**< flag: will we use the pk_eq method? *\/$/;" m struct:nonlinear +has_pk_m ../include/nonlinear.h /^ short has_pk_m; \/**< do we want spectra for total matter? *\/$/;" m struct:nonlinear +has_pk_matter ../include/nonlinear.h /^ short has_pk_matter; \/**< do we need matter Fourier spectrum? *\/$/;" m struct:nonlinear +has_pk_matter ../include/perturbations.h /^ short has_pk_matter; \/**< do we need matter Fourier spectrum? *\/$/;" m struct:perturbs +has_pp ../include/lensing.h /^ int has_pp; \/**< do we want \\f$ C_l^{\\phi\\phi}\\f$? (\\f$ \\phi \\f$ = CMB lensing potential) *\/$/;" m struct:lensing +has_pp ../include/spectra.h /^ int has_pp; \/**< do we want \\f$ C_l^{\\phi\\phi}\\f$? (\\f$ \\phi \\f$ = CMB lensing potential) *\/$/;" m struct:spectra +has_scalars ../include/perturbations.h /^ short has_scalars; \/**< do we need scalars? *\/$/;" m struct:perturbs +has_scf ../include/background.h /^ short has_scf; \/**< presence of a scalar field? *\/$/;" m struct:background +has_source_H_T_Nb_prime ../include/perturbations.h /^ short has_source_H_T_Nb_prime;\/**< do we need source for metric fluctuation H_T_Nb'? *\/$/;" m struct:perturbs +has_source_delta_b ../include/perturbations.h /^ short has_source_delta_b; \/**< do we need source for delta of baryons? *\/$/;" m struct:perturbs +has_source_delta_cb ../include/perturbations.h /^ short has_source_delta_cb; \/**< do we ALSO need source for delta of ONLY cdm and baryon? *\/$/;" m struct:perturbs +has_source_delta_cdm ../include/perturbations.h /^ short has_source_delta_cdm; \/**< do we need source for delta of cold dark matter? *\/$/;" m struct:perturbs +has_source_delta_dcdm ../include/perturbations.h /^ short has_source_delta_dcdm; \/**< do we need source for delta of DCDM? *\/$/;" m struct:perturbs +has_source_delta_dr ../include/perturbations.h /^ short has_source_delta_dr; \/**< do we need source for delta of decay radiation? *\/$/;" m struct:perturbs +has_source_delta_fld ../include/perturbations.h /^ short has_source_delta_fld; \/**< do we need source for delta of dark energy? *\/$/;" m struct:perturbs +has_source_delta_g ../include/perturbations.h /^ short has_source_delta_g; \/**< do we need source for delta of gammas? *\/$/;" m struct:perturbs +has_source_delta_idm_dr ../include/perturbations.h /^ short has_source_delta_idm_dr;\/**< do we need source for delta of interacting dark matter (with dr)? *\/$/;" m struct:perturbs +has_source_delta_idr ../include/perturbations.h /^ short has_source_delta_idr; \/**< do we need source for delta of interacting dark radiation? *\/$/;" m struct:perturbs +has_source_delta_m ../include/perturbations.h /^ short has_source_delta_m; \/**< do we need source for delta of total matter? *\/$/;" m struct:perturbs +has_source_delta_ncdm ../include/perturbations.h /^ short has_source_delta_ncdm; \/**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? *\/$/;" m struct:perturbs +has_source_delta_scf ../include/perturbations.h /^ short has_source_delta_scf; \/**< do we need source for delta from scalar field? *\/$/;" m struct:perturbs +has_source_delta_tot ../include/perturbations.h /^ short has_source_delta_tot; \/**< do we need source for delta total? *\/$/;" m struct:perturbs +has_source_delta_ur ../include/perturbations.h /^ short has_source_delta_ur; \/**< do we need source for delta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_source_eta ../include/perturbations.h /^ short has_source_eta; \/**< do we need source for metric fluctuation eta? *\/$/;" m struct:perturbs +has_source_eta_prime ../include/perturbations.h /^ short has_source_eta_prime; \/**< do we need source for metric fluctuation eta'? *\/$/;" m struct:perturbs +has_source_h ../include/perturbations.h /^ short has_source_h; \/**< do we need source for metric fluctuation h? *\/$/;" m struct:perturbs +has_source_h_prime ../include/perturbations.h /^ short has_source_h_prime; \/**< do we need source for metric fluctuation h'? *\/$/;" m struct:perturbs +has_source_k2gamma_Nb ../include/perturbations.h /^ short has_source_k2gamma_Nb; \/**< do we need source for metric fluctuation gamma in Nbody gauge? *\/$/;" m struct:perturbs +has_source_p ../include/perturbations.h /^ short has_source_p; \/**< do we need source for CMB polarization? *\/$/;" m struct:perturbs +has_source_phi ../include/perturbations.h /^ short has_source_phi; \/**< do we need source for metric fluctuation phi? *\/$/;" m struct:perturbs +has_source_phi_plus_psi ../include/perturbations.h /^ short has_source_phi_plus_psi;\/**< do we need source for metric fluctuation (phi+psi)? *\/$/;" m struct:perturbs +has_source_phi_prime ../include/perturbations.h /^ short has_source_phi_prime; \/**< do we need source for metric fluctuation phi'? *\/$/;" m struct:perturbs +has_source_psi ../include/perturbations.h /^ short has_source_psi; \/**< do we need source for metric fluctuation psi? *\/$/;" m struct:perturbs +has_source_t ../include/perturbations.h /^ short has_source_t; \/**< do we need source for CMB temperature? *\/$/;" m struct:perturbs +has_source_theta_b ../include/perturbations.h /^ short has_source_theta_b; \/**< do we need source for theta of baryons? *\/$/;" m struct:perturbs +has_source_theta_cb ../include/perturbations.h /^ short has_source_theta_cb; \/**< do we ALSO need source for theta of ONLY cdm and baryon? *\/$/;" m struct:perturbs +has_source_theta_cdm ../include/perturbations.h /^ short has_source_theta_cdm; \/**< do we need source for theta of cold dark matter? *\/$/;" m struct:perturbs +has_source_theta_dcdm ../include/perturbations.h /^ short has_source_theta_dcdm; \/**< do we need source for theta of DCDM? *\/$/;" m struct:perturbs +has_source_theta_dr ../include/perturbations.h /^ short has_source_theta_dr; \/**< do we need source for theta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_source_theta_fld ../include/perturbations.h /^ short has_source_theta_fld; \/**< do we need source for theta of dark energy? *\/$/;" m struct:perturbs +has_source_theta_g ../include/perturbations.h /^ short has_source_theta_g; \/**< do we need source for theta of gammas? *\/$/;" m struct:perturbs +has_source_theta_idm_dr ../include/perturbations.h /^ short has_source_theta_idm_dr;\/**< do we need source for theta of interacting dark matter (with dr)? *\/$/;" m struct:perturbs +has_source_theta_idr ../include/perturbations.h /^ short has_source_theta_idr; \/**< do we need source for theta of interacting dark radiation? *\/$/;" m struct:perturbs +has_source_theta_m ../include/perturbations.h /^ short has_source_theta_m; \/**< do we need source for theta of total matter? *\/$/;" m struct:perturbs +has_source_theta_ncdm ../include/perturbations.h /^ short has_source_theta_ncdm; \/**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? *\/$/;" m struct:perturbs +has_source_theta_scf ../include/perturbations.h /^ short has_source_theta_scf; \/**< do we need source for theta of scalar field? *\/$/;" m struct:perturbs +has_source_theta_tot ../include/perturbations.h /^ short has_source_theta_tot; \/**< do we need source for theta total? *\/$/;" m struct:perturbs +has_source_theta_ur ../include/perturbations.h /^ short has_source_theta_ur; \/**< do we need source for theta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_td ../include/lensing.h /^ int has_td; \/**< do we want \\f$ C_l^{Td}\\f$? *\/$/;" m struct:lensing +has_td ../include/spectra.h /^ int has_td; \/**< do we want \\f$ C_l^{Td}\\f$? *\/$/;" m struct:spectra +has_te ../include/lensing.h /^ int has_te; \/**< do we want lensed \\f$ C_l^{TE}\\f$? *\/$/;" m struct:lensing +has_te ../include/spectra.h /^ int has_te; \/**< do we want \\f$ C_l^{TE}\\f$? *\/$/;" m struct:spectra +has_tensors ../include/perturbations.h /^ short has_tensors; \/**< do we need tensors? *\/$/;" m struct:perturbs +has_tl ../include/lensing.h /^ int has_tl; \/**< do we want \\f$ C_l^{Tl}\\f$? *\/$/;" m struct:lensing +has_tl ../include/spectra.h /^ int has_tl; \/**< do we want \\f$ C_l^{Tl}\\f$? *\/$/;" m struct:spectra +has_tp ../include/lensing.h /^ int has_tp; \/**< do we want \\f$ C_l^{T\\phi}\\f$? *\/$/;" m struct:lensing +has_tp ../include/spectra.h /^ int has_tp; \/**< do we want \\f$ C_l^{T\\phi}\\f$? *\/$/;" m struct:spectra +has_tt ../include/lensing.h /^ int has_tt; \/**< do we want lensed \\f$ C_l^{TT}\\f$? (T = temperature) *\/$/;" m struct:lensing +has_tt ../include/spectra.h /^ int has_tt; \/**< do we want \\f$ C_l^{TT}\\f$? (T = temperature) *\/$/;" m struct:spectra +has_ur ../include/background.h /^ short has_ur; \/**< presence of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:background +has_vectors ../include/perturbations.h /^ short has_vectors; \/**< do we need vectors? *\/$/;" m struct:perturbs +has_velocity_transfers ../include/perturbations.h /^ short has_velocity_transfers; \/**< do we need to output individual matter velocity transfer functions? *\/$/;" m struct:perturbs +helium_fullreio_redshift ../include/thermodynamics.h /^ double helium_fullreio_redshift; \/**< redshift for of helium reionization *\/$/;" m struct:thermo +helium_fullreio_width ../include/thermodynamics.h /^ double helium_fullreio_width; \/**< width of helium reionization *\/$/;" m struct:thermo +higgs_inflation ../include/primordial.h /^ higgs_inflation$/;" e enum:potential_shape +hmcode_baryonic_feedback_model ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" g +hyperspherical_HIS_create ../tools/hyperspherical.c /^int hyperspherical_HIS_create(int K,$/;" f +hyperspherical_HIS_free ../tools/hyperspherical.c /^int hyperspherical_HIS_free(HyperInterpStruct *pHIS,$/;" f +hyperspherical_HIS_size ../tools/hyperspherical.c /^size_t hyperspherical_HIS_size(int nl, int nx){$/;" f +hyperspherical_Hermite3_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite_interpolation_vector ../tools/hyperspherical.c /^int hyperspherical_Hermite_interpolation_vector(HyperInterpStruct *pHIS,$/;" f +hyperspherical_WKB ../tools/hyperspherical.c /^int hyperspherical_WKB(int K,int l,double beta,double y, double *Phi){$/;" f +hyperspherical_WKB_vec ../tools/hyperspherical.c /^ int hyperspherical_WKB_vec(int l,$/;" f +hyperspherical_backwards_recurrence ../tools/hyperspherical.c /^int hyperspherical_backwards_recurrence(int K,$/;" f +hyperspherical_backwards_recurrence_chunk ../tools/hyperspherical.c /^int hyperspherical_backwards_recurrence_chunk(int K,$/;" f +hyperspherical_forwards_recurrence ../tools/hyperspherical.c /^int hyperspherical_forwards_recurrence(int K,$/;" f +hyperspherical_forwards_recurrence_chunk ../tools/hyperspherical.c /^int hyperspherical_forwards_recurrence_chunk(int K,$/;" f +hyperspherical_get_xmin ../tools/hyperspherical.c /^int hyperspherical_get_xmin(HyperInterpStruct *pHIS,$/;" f +hyperspherical_get_xmin_from_Airy ../tools/hyperspherical.c /^int hyperspherical_get_xmin_from_Airy(int K,$/;" f +hyperspherical_get_xmin_from_approx ../tools/hyperspherical.c /^int hyperspherical_get_xmin_from_approx(int K,$/;" f +hyperspherical_update_pointers ../tools/hyperspherical.c /^int hyperspherical_update_pointers(HyperInterpStruct *pHIS_local,$/;" f +hyrec ../include/thermodynamics.h /^ hyrec$/;" e enum:recombination_algorithm +ic_ic_size ../include/nonlinear.h /^ int ic_ic_size; \/**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:nonlinear +ic_ic_size ../include/primordial.h /^ int * ic_ic_size; \/**< number of ordered pairs of (index_ic1, index_ic2); this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:primordial +ic_ic_size ../include/spectra.h /^ int * ic_ic_size; \/**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:spectra +ic_size ../include/nonlinear.h /^ int ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:nonlinear +ic_size ../include/perturbations.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:perturbs +ic_size ../include/primordial.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:primordial +ic_size ../include/spectra.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:spectra +idr_fluid ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" e enum:idr_method +idr_free_streaming ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" e enum:idr_method +idr_method ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" g +idr_nature ../include/perturbations.h /^ int idr_nature; \/**< Nature of the interacting dark radiation (free streaming or fluid) *\/$/;" m struct:perturbs +in_bg_size ../include/primordial.h /^ int in_bg_size; \/**< size of vector of background quantities only *\/$/;" m struct:primordial +in_size ../include/primordial.h /^ int in_size; \/**< full size of vector *\/$/;" m struct:primordial +index_ap_ncdmfa ../include/perturbations.h /^ int index_ap_ncdmfa; \/**< index for ncdm fluid approximation *\/$/;" m struct:perturb_workspace +index_ap_rsa ../include/perturbations.h /^ int index_ap_rsa; \/**< index for radiation streaming approximation *\/$/;" m struct:perturb_workspace +index_ap_rsa_idr ../include/perturbations.h /^ int index_ap_rsa_idr; \/**< index for dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +index_ap_tca ../include/perturbations.h /^ int index_ap_tca; \/**< index for tight-coupling approximation *\/$/;" m struct:perturb_workspace +index_ap_tca_idm_dr ../include/perturbations.h /^ int index_ap_tca_idm_dr; \/**< index for dark tight-coupling approximation (idm-idr) *\/$/;" m struct:perturb_workspace +index_ap_ufa ../include/perturbations.h /^ int index_ap_ufa; \/**< index for ur fluid approximation *\/$/;" m struct:perturb_workspace +index_bg_D ../include/background.h /^ int index_bg_D; \/**< scale independent growth factor D(a) for CDM perturbations *\/$/;" m struct:background +index_bg_H ../include/background.h /^ int index_bg_H; \/**< Hubble parameter in \\f$Mpc^{-1}\\f$ *\/$/;" m struct:background +index_bg_H_prime ../include/background.h /^ int index_bg_H_prime; \/**< its derivative w.r.t. conformal time *\/$/;" m struct:background +index_bg_Omega_m ../include/background.h /^ int index_bg_Omega_m; \/**< non-relativistic density fraction (\\f$ \\Omega_b + \\Omega_cdm + \\Omega_{\\nu nr} \\f$) *\/$/;" m struct:background +index_bg_Omega_r ../include/background.h /^ int index_bg_Omega_r; \/**< relativistic density fraction (\\f$ \\Omega_{\\gamma} + \\Omega_{\\nu r} \\f$) *\/$/;" m struct:background +index_bg_V_scf ../include/background.h /^ int index_bg_V_scf; \/**< scalar field potential V *\/$/;" m struct:background +index_bg_a ../include/background.h /^ int index_bg_a; \/**< scale factor *\/$/;" m struct:background +index_bg_ang_distance ../include/background.h /^ int index_bg_ang_distance; \/**< angular diameter distance in Mpc *\/$/;" m struct:background +index_bg_conf_distance ../include/background.h /^ int index_bg_conf_distance; \/**< conformal distance (from us) in Mpc *\/$/;" m struct:background +index_bg_dV_scf ../include/background.h /^ int index_bg_dV_scf; \/**< scalar field potential derivative V' *\/$/;" m struct:background +index_bg_ddV_scf ../include/background.h /^ int index_bg_ddV_scf; \/**< scalar field potential second derivative V'' *\/$/;" m struct:background +index_bg_f ../include/background.h /^ int index_bg_f; \/**< corresponding velocity growth factor [dlnD]\/[dln a] *\/$/;" m struct:background +index_bg_lum_distance ../include/background.h /^ int index_bg_lum_distance; \/**< luminosity distance in Mpc *\/$/;" m struct:background +index_bg_p_ncdm1 ../include/background.h /^ int index_bg_p_ncdm1; \/**< pressure of first ncdm species (others contiguous) *\/$/;" m struct:background +index_bg_p_prime_scf ../include/background.h /^ int index_bg_p_prime_scf; \/**< scalar field pressure *\/$/;" m struct:background +index_bg_p_scf ../include/background.h /^ int index_bg_p_scf; \/**< scalar field pressure *\/$/;" m struct:background +index_bg_p_tot ../include/background.h /^ int index_bg_p_tot; \/**< Total pressure *\/$/;" m struct:background +index_bg_p_tot_prime ../include/background.h /^ int index_bg_p_tot_prime; \/**< Conf. time derivative of total pressure *\/$/;" m struct:background +index_bg_phi_prime_scf ../include/background.h /^ int index_bg_phi_prime_scf; \/**< scalar field derivative wrt conformal time *\/$/;" m struct:background +index_bg_phi_scf ../include/background.h /^ int index_bg_phi_scf; \/**< scalar field value *\/$/;" m struct:background +index_bg_pseudo_p_ncdm1 ../include/background.h /^ int index_bg_pseudo_p_ncdm1;\/**< another statistical momentum useful in ncdma approximation *\/$/;" m struct:background +index_bg_rho_b ../include/background.h /^ int index_bg_rho_b; \/**< baryon density *\/$/;" m struct:background +index_bg_rho_cdm ../include/background.h /^ int index_bg_rho_cdm; \/**< cdm density *\/$/;" m struct:background +index_bg_rho_crit ../include/background.h /^ int index_bg_rho_crit; \/**< critical density *\/$/;" m struct:background +index_bg_rho_dcdm ../include/background.h /^ int index_bg_rho_dcdm; \/**< dcdm density *\/$/;" m struct:background +index_bg_rho_dr ../include/background.h /^ int index_bg_rho_dr; \/**< dr density *\/$/;" m struct:background +index_bg_rho_fld ../include/background.h /^ int index_bg_rho_fld; \/**< fluid density *\/$/;" m struct:background +index_bg_rho_g ../include/background.h /^ int index_bg_rho_g; \/**< photon density *\/$/;" m struct:background +index_bg_rho_idm_dr ../include/background.h /^ int index_bg_rho_idm_dr; \/**< density of dark matter interacting with dark radiation *\/$/;" m struct:background +index_bg_rho_idr ../include/background.h /^ int index_bg_rho_idr; \/**< density of interacting dark radiation *\/$/;" m struct:background +index_bg_rho_lambda ../include/background.h /^ int index_bg_rho_lambda; \/**< cosmological constant density *\/$/;" m struct:background +index_bg_rho_ncdm1 ../include/background.h /^ int index_bg_rho_ncdm1; \/**< density of first ncdm species (others contiguous) *\/$/;" m struct:background +index_bg_rho_scf ../include/background.h /^ int index_bg_rho_scf; \/**< scalar field energy density *\/$/;" m struct:background +index_bg_rho_tot ../include/background.h /^ int index_bg_rho_tot; \/**< Total density *\/$/;" m struct:background +index_bg_rho_ur ../include/background.h /^ int index_bg_rho_ur; \/**< relativistic neutrinos\/relics density *\/$/;" m struct:background +index_bg_rs ../include/background.h /^ int index_bg_rs; \/**< comoving sound horizon in Mpc *\/$/;" m struct:background +index_bg_time ../include/background.h /^ int index_bg_time; \/**< proper (cosmological) time in Mpc *\/$/;" m struct:background +index_bg_w_fld ../include/background.h /^ int index_bg_w_fld; \/**< fluid equation of state *\/$/;" m struct:background +index_bi_D ../include/background.h /^ int index_bi_D; \/**< {C} scale independent growth factor D(a) for CDM perturbations. *\/$/;" m struct:background +index_bi_D_prime ../include/background.h /^ int index_bi_D_prime; \/**< {C} D satisfies \\f$ [D''(\\tau)=-aHD'(\\tau)+3\/2 a^2 \\rho_M D(\\tau) \\f$ *\/$/;" m struct:background +index_bi_a ../include/background.h /^ int index_bi_a; \/**< {B} scale factor *\/$/;" m struct:background +index_bi_phi_prime_scf ../include/background.h /^ int index_bi_phi_prime_scf; \/**< {B} scalar field derivative wrt conformal time *\/$/;" m struct:background +index_bi_phi_scf ../include/background.h /^ int index_bi_phi_scf; \/**< {B} scalar field value *\/$/;" m struct:background +index_bi_rho_dcdm ../include/background.h /^ int index_bi_rho_dcdm;\/**< {B} dcdm density *\/$/;" m struct:background +index_bi_rho_dr ../include/background.h /^ int index_bi_rho_dr; \/**< {B} dr density *\/$/;" m struct:background +index_bi_rho_fld ../include/background.h /^ int index_bi_rho_fld; \/**< {B} fluid density *\/$/;" m struct:background +index_bi_rs ../include/background.h /^ int index_bi_rs; \/**< {C} sound horizon *\/$/;" m struct:background +index_bi_tau ../include/background.h /^ int index_bi_tau; \/**< {C} conformal time in Mpc *\/$/;" m struct:background +index_bi_time ../include/background.h /^ int index_bi_time; \/**< {C} proper (cosmological) time in Mpc *\/$/;" m struct:background +index_ct_bb ../include/spectra.h /^ int index_ct_bb; \/**< index for type \\f$ C_l^{BB} \\f$*\/$/;" m struct:spectra +index_ct_dd ../include/spectra.h /^ int index_ct_dd; \/**< first index for type \\f$ C_l^{dd} \\f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)\/2) values) *\/$/;" m struct:spectra +index_ct_dl ../include/spectra.h /^ int index_ct_dl; \/**< first index for type \\f$ C_l^{dl} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_ee ../include/spectra.h /^ int index_ct_ee; \/**< index for type \\f$ C_l^{EE} \\f$*\/$/;" m struct:spectra +index_ct_ep ../include/spectra.h /^ int index_ct_ep; \/**< index for type \\f$ C_l^{E\\phi} \\f$*\/$/;" m struct:spectra +index_ct_ll ../include/spectra.h /^ int index_ct_ll; \/**< first index for type \\f$ C_l^{ll} \\f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)\/2) values) *\/$/;" m struct:spectra +index_ct_pd ../include/spectra.h /^ int index_ct_pd; \/**< first index for type \\f$ C_l^{pd} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_pp ../include/spectra.h /^ int index_ct_pp; \/**< index for type \\f$ C_l^{\\phi\\phi} \\f$*\/$/;" m struct:spectra +index_ct_td ../include/spectra.h /^ int index_ct_td; \/**< first index for type \\f$ C_l^{Td} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_te ../include/spectra.h /^ int index_ct_te; \/**< index for type \\f$ C_l^{TE} \\f$*\/$/;" m struct:spectra +index_ct_tl ../include/spectra.h /^ int index_ct_tl; \/**< first index for type \\f$ C_l^{Tl} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_tp ../include/spectra.h /^ int index_ct_tp; \/**< index for type \\f$ C_l^{T\\phi} \\f$*\/$/;" m struct:spectra +index_ct_tt ../include/spectra.h /^ int index_ct_tt; \/**< index for type \\f$ C_l^{TT} \\f$*\/$/;" m struct:spectra +index_helium_fullreio_fraction ../include/thermodynamics.h /^ int index_helium_fullreio_fraction; \/**< helium full reionization fraction inferred from primordial helium fraction *\/$/;" m struct:reionization +index_helium_fullreio_redshift ../include/thermodynamics.h /^ int index_helium_fullreio_redshift; \/**< helium full reionization redshift *\/$/;" m struct:reionization +index_helium_fullreio_width ../include/thermodynamics.h /^ int index_helium_fullreio_width; \/**< a width defining the duration of helium full reionization in the reio_camb scheme *\/$/;" m struct:reionization +index_ic ../include/perturbations.h /^ int index_ic; \/**< index of initial condition (adiabatic\/isocurvature(s)\/...) *\/$/;" m struct:perturb_parameters_and_workspace +index_ic_ad ../include/perturbations.h /^ int index_ic_ad; \/**< index value for adiabatic *\/$/;" m struct:perturbs +index_ic_bi ../include/perturbations.h /^ int index_ic_bi; \/**< index value for baryon isocurvature *\/$/;" m struct:perturbs +index_ic_cdi ../include/perturbations.h /^ int index_ic_cdi; \/**< index value for CDM isocurvature *\/$/;" m struct:perturbs +index_ic_nid ../include/perturbations.h /^ int index_ic_nid; \/**< index value for neutrino density isocurvature *\/$/;" m struct:perturbs +index_ic_niv ../include/perturbations.h /^ int index_ic_niv; \/**< index value for neutrino velocity isocurvature *\/$/;" m struct:perturbs +index_ic_ten ../include/perturbations.h /^ int index_ic_ten; \/**< index value for unique possibility for tensors *\/$/;" m struct:perturbs +index_ikout ../include/perturbations.h /^ int index_ikout; \/**< index for output k value (when k_output_values is set) *\/$/;" m struct:perturb_workspace +index_in_a ../include/primordial.h /^ int index_in_a; \/**< scale factor *\/$/;" m struct:primordial +index_in_ah_im ../include/primordial.h /^ int index_in_ah_im; \/**< tensor perturbation (imaginary part) *\/$/;" m struct:primordial +index_in_ah_re ../include/primordial.h /^ int index_in_ah_re; \/**< tensor perturbation (real part) *\/$/;" m struct:primordial +index_in_dah_im ../include/primordial.h /^ int index_in_dah_im; \/**< tensor perturbation (imaginary part, time derivative) *\/$/;" m struct:primordial +index_in_dah_re ../include/primordial.h /^ int index_in_dah_re; \/**< tensor perturbation (real part, time derivative) *\/$/;" m struct:primordial +index_in_dksi_im ../include/primordial.h /^ int index_in_dksi_im; \/**< Mukhanov variable (imaginary part, time derivative) *\/$/;" m struct:primordial +index_in_dksi_re ../include/primordial.h /^ int index_in_dksi_re; \/**< Mukhanov variable (real part, time derivative) *\/$/;" m struct:primordial +index_in_dphi ../include/primordial.h /^ int index_in_dphi; \/**< its time derivative *\/$/;" m struct:primordial +index_in_ksi_im ../include/primordial.h /^ int index_in_ksi_im; \/**< Mukhanov variable (imaginary part) *\/$/;" m struct:primordial +index_in_ksi_re ../include/primordial.h /^ int index_in_ksi_re; \/**< Mukhanov variable (real part) *\/$/;" m struct:primordial +index_in_phi ../include/primordial.h /^ int index_in_phi; \/**< inflaton vev *\/$/;" m struct:primordial +index_k ../include/perturbations.h /^ int index_k; \/**< index of wavenumber *\/$/;" m struct:perturb_parameters_and_workspace +index_k_output_values ../include/perturbations.h /^ int * index_k_output_values; \/**< List of indices corresponding to k-values close to k_output_values for each mode.$/;" m struct:perturbs +index_lt_bb ../include/lensing.h /^ int index_lt_bb; \/**< index for type \\f$ C_l^{BB} \\f$*\/$/;" m struct:lensing +index_lt_dd ../include/lensing.h /^ int index_lt_dd; \/**< index for type \\f$ C_l^{dd} \\f$*\/$/;" m struct:lensing +index_lt_ee ../include/lensing.h /^ int index_lt_ee; \/**< index for type \\f$ C_l^{EE} \\f$*\/$/;" m struct:lensing +index_lt_ll ../include/lensing.h /^ int index_lt_ll; \/**< index for type \\f$ C_l^{dd} \\f$*\/$/;" m struct:lensing +index_lt_pp ../include/lensing.h /^ int index_lt_pp; \/**< index for type \\f$ C_l^{\\phi\\phi} \\f$*\/$/;" m struct:lensing +index_lt_td ../include/lensing.h /^ int index_lt_td; \/**< index for type \\f$ C_l^{Td} \\f$*\/$/;" m struct:lensing +index_lt_te ../include/lensing.h /^ int index_lt_te; \/**< index for type \\f$ C_l^{TE} \\f$*\/$/;" m struct:lensing +index_lt_tl ../include/lensing.h /^ int index_lt_tl; \/**< index for type \\f$ C_l^{Td} \\f$*\/$/;" m struct:lensing +index_lt_tp ../include/lensing.h /^ int index_lt_tp; \/**< index for type \\f$ C_l^{T\\phi} \\f$*\/$/;" m struct:lensing +index_lt_tt ../include/lensing.h /^ int index_lt_tt; \/**< index for type \\f$ C_l^{TT} \\f$*\/$/;" m struct:lensing +index_md ../include/perturbations.h /^ int index_md; \/**< index of mode (scalar\/...\/vector\/tensor) *\/$/;" m struct:perturb_parameters_and_workspace +index_md_scalars ../include/nonlinear.h /^ int index_md_scalars; \/**< set equal to psp->index_md_scalars$/;" m struct:nonlinear +index_md_scalars ../include/perturbations.h /^ int index_md_scalars; \/**< index value for scalars *\/$/;" m struct:perturbs +index_md_scalars ../include/spectra.h /^ int index_md_scalars; \/**< index for scalar modes *\/$/;" m struct:spectra +index_md_tensors ../include/perturbations.h /^ int index_md_tensors; \/**< index value for tensors *\/$/;" m struct:perturbs +index_md_vectors ../include/perturbations.h /^ int index_md_vectors; \/**< index value for vectors *\/$/;" m struct:perturbs +index_mt_V_prime ../include/perturbations.h /^ int index_mt_V_prime; \/**< derivative of Newtonian gauge vector metric perturbation V *\/$/;" m struct:perturb_workspace +index_mt_alpha ../include/perturbations.h /^ int index_mt_alpha; \/**< \\f$ \\alpha = (h' + 6 \\eta') \/ (2 k^2) \\f$ in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_alpha_prime ../include/perturbations.h /^ int index_mt_alpha_prime; \/**< \\f$ \\alpha'\\f$ wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_eta_prime ../include/perturbations.h /^ int index_mt_eta_prime; \/**< eta' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_gw_prime_prime ../include/perturbations.h /^ int index_mt_gw_prime_prime;\/**< second derivative wrt conformal time of gravitational wave field, often called h *\/$/;" m struct:perturb_workspace +index_mt_h_prime ../include/perturbations.h /^ int index_mt_h_prime; \/**< h' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_h_prime_prime ../include/perturbations.h /^ int index_mt_h_prime_prime; \/**< h'' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_hv_prime_prime ../include/perturbations.h /^ int index_mt_hv_prime_prime;\/**< Second derivative of Synchronous gauge vector metric perturbation \\f$ h_v\\f$ *\/$/;" m struct:perturb_workspace +index_mt_phi_prime ../include/perturbations.h /^ int index_mt_phi_prime; \/**< (d phi\/d conf.time) in longitudinal gauge *\/$/;" m struct:perturb_workspace +index_mt_psi ../include/perturbations.h /^ int index_mt_psi; \/**< psi in longitudinal gauge *\/$/;" m struct:perturb_workspace +index_pk_cb ../include/nonlinear.h /^ int index_pk_cb; \/**< index of pk for cold dark matter plus baryons (defined only when has_pk_cb is TRUE *\/$/;" m struct:nonlinear +index_pk_cluster ../include/nonlinear.h /^ int index_pk_cluster; \/**< equal to index_pk_cb if it exists, otherwise to index_pk_m$/;" m struct:nonlinear +index_pk_eq_Omega_m ../include/nonlinear.h /^ int index_pk_eq_Omega_m; \/**< index of Omega_m in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +index_pk_eq_w ../include/nonlinear.h /^ int index_pk_eq_w; \/**< index of w in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +index_pk_m ../include/nonlinear.h /^ int index_pk_m; \/**< index of pk for matter (defined only when has_pk_m is TRUE) *\/$/;" m struct:nonlinear +index_pk_total ../include/nonlinear.h /^ int index_pk_total; \/**< always equal to index_pk_m$/;" m struct:nonlinear +index_pt_F0_dr ../include/perturbations.h /^ int index_pt_F0_dr;$/;" m struct:perturb_vector +index_pt_Gamma_fld ../include/perturbations.h /^ int index_pt_Gamma_fld; \/**< unique dark energy dynamical variable in PPF case *\/$/;" m struct:perturb_vector +index_pt_V ../include/perturbations.h /^ int index_pt_V; \/**< vector metric perturbation V in Newtonian gauge *\/$/;" m struct:perturb_vector +index_pt_delta_b ../include/perturbations.h /^ int index_pt_delta_b; \/**< baryon density *\/$/;" m struct:perturb_vector +index_pt_delta_cdm ../include/perturbations.h /^ int index_pt_delta_cdm; \/**< cdm density *\/$/;" m struct:perturb_vector +index_pt_delta_dcdm ../include/perturbations.h /^ int index_pt_delta_dcdm; \/**< dcdm density *\/$/;" m struct:perturb_vector +index_pt_delta_fld ../include/perturbations.h /^ int index_pt_delta_fld; \/**< dark energy density in true fluid case *\/$/;" m struct:perturb_vector +index_pt_delta_g ../include/perturbations.h /^ int index_pt_delta_g; \/**< photon density *\/$/;" m struct:perturb_vector +index_pt_delta_idm_dr ../include/perturbations.h /^ int index_pt_delta_idm_dr;\/**< idm_dr density *\/$/;" m struct:perturb_vector +index_pt_delta_idr ../include/perturbations.h /^ int index_pt_delta_idr; \/**< density of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_delta_ur ../include/perturbations.h /^ int index_pt_delta_ur; \/**< density of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_eta ../include/perturbations.h /^ int index_pt_eta; \/**< synchronous gauge metric perturbation eta*\/$/;" m struct:perturb_vector +index_pt_gw ../include/perturbations.h /^ int index_pt_gw; \/**< tensor metric perturbation h (gravitational waves) *\/$/;" m struct:perturb_vector +index_pt_gwdot ../include/perturbations.h /^ int index_pt_gwdot; \/**< its time-derivative *\/$/;" m struct:perturb_vector +index_pt_hv_prime ../include/perturbations.h /^ int index_pt_hv_prime; \/**< vector metric perturbation h_v' in synchronous gauge *\/$/;" m struct:perturb_vector +index_pt_l3_g ../include/perturbations.h /^ int index_pt_l3_g; \/**< photon l=3 *\/$/;" m struct:perturb_vector +index_pt_l3_idr ../include/perturbations.h /^ int index_pt_l3_idr; \/**< l=3 of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_l3_ur ../include/perturbations.h /^ int index_pt_l3_ur; \/**< l=3 of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_perturbed_recombination_delta_chi ../include/perturbations.h /^ int index_pt_perturbed_recombination_delta_chi; \/**< Inionization fraction perturbation *\/$/;" m struct:perturb_vector +index_pt_perturbed_recombination_delta_temp ../include/perturbations.h /^ int index_pt_perturbed_recombination_delta_temp; \/**< Gas temperature perturbation *\/$/;" m struct:perturb_vector +index_pt_phi ../include/perturbations.h /^ int index_pt_phi; \/**< newtonian gauge metric perturbation phi *\/$/;" m struct:perturb_vector +index_pt_phi_prime_scf ../include/perturbations.h /^ int index_pt_phi_prime_scf; \/**< scalar field velocity *\/$/;" m struct:perturb_vector +index_pt_phi_scf ../include/perturbations.h /^ int index_pt_phi_scf; \/**< scalar field density *\/$/;" m struct:perturb_vector +index_pt_pol0_g ../include/perturbations.h /^ int index_pt_pol0_g; \/**< photon polarization, l=0 *\/$/;" m struct:perturb_vector +index_pt_pol1_g ../include/perturbations.h /^ int index_pt_pol1_g; \/**< photon polarization, l=1 *\/$/;" m struct:perturb_vector +index_pt_pol2_g ../include/perturbations.h /^ int index_pt_pol2_g; \/**< photon polarization, l=2 *\/$/;" m struct:perturb_vector +index_pt_pol3_g ../include/perturbations.h /^ int index_pt_pol3_g; \/**< photon polarization, l=3 *\/$/;" m struct:perturb_vector +index_pt_psi0_ncdm1 ../include/perturbations.h /^ int index_pt_psi0_ncdm1; \/**< first multipole of perturbation of first ncdm species, Psi_0 *\/$/;" m struct:perturb_vector +index_pt_shear_g ../include/perturbations.h /^ int index_pt_shear_g; \/**< photon shear *\/$/;" m struct:perturb_vector +index_pt_shear_idr ../include/perturbations.h /^ int index_pt_shear_idr; \/**< shear of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_shear_ur ../include/perturbations.h /^ int index_pt_shear_ur; \/**< shear of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_theta_b ../include/perturbations.h /^ int index_pt_theta_b; \/**< baryon velocity *\/$/;" m struct:perturb_vector +index_pt_theta_cdm ../include/perturbations.h /^ int index_pt_theta_cdm; \/**< cdm velocity *\/$/;" m struct:perturb_vector +index_pt_theta_dcdm ../include/perturbations.h /^ int index_pt_theta_dcdm; \/**< dcdm velocity *\/$/;" m struct:perturb_vector +index_pt_theta_fld ../include/perturbations.h /^ int index_pt_theta_fld; \/**< dark energy velocity in true fluid case *\/$/;" m struct:perturb_vector +index_pt_theta_g ../include/perturbations.h /^ int index_pt_theta_g; \/**< photon velocity *\/$/;" m struct:perturb_vector +index_pt_theta_idm_dr ../include/perturbations.h /^ int index_pt_theta_idm_dr;\/**< idm_dr velocity *\/$/;" m struct:perturb_vector +index_pt_theta_idr ../include/perturbations.h /^ int index_pt_theta_idr; \/**< velocity of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_theta_ur ../include/perturbations.h /^ int index_pt_theta_ur; \/**< velocity of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_q_flat_approximation ../include/transfer.h /^ int index_q_flat_approximation; \/**< index of the first q value using the flat rescaling approximation *\/$/;" m struct:transfers +index_re_Tb ../include/thermodynamics.h /^ int index_re_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:recombination +index_re_Tb ../include/thermodynamics.h /^ int index_re_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:reionization +index_re_cb2 ../include/thermodynamics.h /^ int index_re_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:recombination +index_re_cb2 ../include/thermodynamics.h /^ int index_re_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:reionization +index_re_d3kappadz3 ../include/thermodynamics.h /^ int index_re_d3kappadz3; \/**< second derivative of previous quantity with respect to redshift *\/$/;" m struct:reionization +index_re_dkappadtau ../include/thermodynamics.h /^ int index_re_dkappadtau; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau \\f$ (units 1\/Mpc) *\/$/;" m struct:recombination +index_re_dkappadtau ../include/thermodynamics.h /^ int index_re_dkappadtau; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau\\f$ (units 1\/Mpc) *\/$/;" m struct:reionization +index_re_dkappadz ../include/thermodynamics.h /^ int index_re_dkappadz; \/**< Thomson scattering rate with respect to redshift \\f$ d \\kappa \/ d z\\f$ (units 1\/Mpc) *\/$/;" m struct:reionization +index_re_wb ../include/thermodynamics.h /^ int index_re_wb; \/**< baryon equation of state parameter \\f$ w_b \\f$ *\/$/;" m struct:recombination +index_re_wb ../include/thermodynamics.h /^ int index_re_wb; \/**< baryon equation of state parameter \\f$ w_b \\f$ *\/$/;" m struct:reionization +index_re_xe ../include/thermodynamics.h /^ int index_re_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:recombination +index_re_xe ../include/thermodynamics.h /^ int index_re_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:reionization +index_re_z ../include/thermodynamics.h /^ int index_re_z; \/**< redshift \\f$ z \\f$ *\/$/;" m struct:recombination +index_re_z ../include/thermodynamics.h /^ int index_re_z; \/**< redshift \\f$ z \\f$ *\/$/;" m struct:reionization +index_reco_when_reio_start ../include/thermodynamics.h /^ int index_reco_when_reio_start; \/**< index of line in recombination table corresponding to first line of reionization table*\/$/;" m struct:reionization +index_reio_exponent ../include/thermodynamics.h /^ int index_reio_exponent; \/**< an exponent used in the function x_e(z) in the reio_camb scheme *\/$/;" m struct:reionization +index_reio_first_xe ../include/thermodynamics.h /^ int index_reio_first_xe; \/**< ionization fraction at redshift first_z (inferred from recombination code) *\/$/;" m struct:reionization +index_reio_first_z ../include/thermodynamics.h /^ int index_reio_first_z; \/**< redshift at which we start to impose reionization function *\/$/;" m struct:reionization +index_reio_redshift ../include/thermodynamics.h /^ int index_reio_redshift; \/**< hydrogen reionization redshift *\/$/;" m struct:reionization +index_reio_start ../include/thermodynamics.h /^ int index_reio_start; \/**< redshift above which hydrogen reionization neglected *\/$/;" m struct:reionization +index_reio_step_sharpness ../include/thermodynamics.h /^ int index_reio_step_sharpness; \/**< sharpness of tanh jump *\/$/;" m struct:reionization +index_reio_width ../include/thermodynamics.h /^ int index_reio_width; \/**< a width defining the duration of hydrogen reionization in the reio_camb scheme *\/$/;" m struct:reionization +index_reio_xe_after ../include/thermodynamics.h /^ int index_reio_xe_after; \/**< ionization fraction after full reionization *\/$/;" m struct:reionization +index_reio_xe_before ../include/thermodynamics.h /^ int index_reio_xe_before; \/**< ionization fraction at redshift 'reio_start' *\/$/;" m struct:reionization +index_symmetric_matrix ../include/common.h 75;" d +index_tau_min_nl ../include/nonlinear.h /^ int index_tau_min_nl; \/**< index of smallest value of tau at which nonlinear corrections have been computed$/;" m struct:nonlinear +index_th_Tb ../include/thermodynamics.h /^ int index_th_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:thermo +index_th_Tidm_dr ../include/thermodynamics.h /^ int index_th_Tidm_dr; \/**< temperature of DM interacting with DR \\f$ T_{idm_dr} \\f$ *\/$/;" m struct:thermo +index_th_cb2 ../include/thermodynamics.h /^ int index_th_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:thermo +index_th_cidm_dr2 ../include/thermodynamics.h /^ int index_th_cidm_dr2; \/**< interacting dark matter squared sound speed \\f$ c_{dm}^2 \\f$ *\/$/;" m struct:thermo +index_th_dcb2 ../include/thermodynamics.h /^ int index_th_dcb2; \/**< derivative wrt conformal time of squared baryon sound speed \\f$ d [c_b^2] \/ d \\tau \\f$ (only computed if some non-minimal tight-coupling schemes is requested) *\/$/;" m struct:thermo +index_th_ddcb2 ../include/thermodynamics.h /^ int index_th_ddcb2; \/**< second derivative wrt conformal time of squared baryon sound speed \\f$ d^2 [c_b^2] \/ d \\tau^2 \\f$ (only computed if some non0-minimal tight-coupling schemes is requested) *\/$/;" m struct:thermo +index_th_dddkappa ../include/thermodynamics.h /^ int index_th_dddkappa; \/**< scattering rate second derivative \\f$ d^3 \\kappa \/ d \\tau^3 \\f$ *\/$/;" m struct:thermo +index_th_dddmu_idm_dr ../include/thermodynamics.h /^ int index_th_dddmu_idm_dr; \/**< second derivative of this scattering rate *\/$/;" m struct:thermo +index_th_ddg ../include/thermodynamics.h /^ int index_th_ddg; \/**< visibility function second derivative \\f$ (d^2 g \/ d \\tau^2) \\f$ *\/$/;" m struct:thermo +index_th_ddkappa ../include/thermodynamics.h /^ int index_th_ddkappa; \/**< scattering rate derivative \\f$ d^2 \\kappa \/ d \\tau^2 \\f$ *\/$/;" m struct:thermo +index_th_ddmu_idm_dr ../include/thermodynamics.h /^ int index_th_ddmu_idm_dr; \/**< derivative of this scattering rate *\/$/;" m struct:thermo +index_th_dg ../include/thermodynamics.h /^ int index_th_dg; \/**< visibility function derivative \\f$ (d g \/ d \\tau) \\f$ *\/$/;" m struct:thermo +index_th_dkappa ../include/thermodynamics.h /^ int index_th_dkappa; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau\\f$ (units 1\/Mpc) *\/$/;" m struct:thermo +index_th_dmu_idm_dr ../include/thermodynamics.h /^ int index_th_dmu_idm_dr; \/**< scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1\/Mpc) *\/$/;" m struct:thermo +index_th_dmu_idr ../include/thermodynamics.h /^ int index_th_dmu_idr; \/**< idr self-interaction rate *\/$/;" m struct:thermo +index_th_exp_m_kappa ../include/thermodynamics.h /^ int index_th_exp_m_kappa; \/**< \\f$ exp^{-\\kappa} \\f$ *\/$/;" m struct:thermo +index_th_g ../include/thermodynamics.h /^ int index_th_g; \/**< visibility function \\f$ g = (d \\kappa \/ d \\tau) * exp^{-\\kappa} \\f$ *\/$/;" m struct:thermo +index_th_g_idm_dr ../include/thermodynamics.h /^ int index_th_g_idm_dr; \/**< visibility function of idm_idr *\/$/;" m struct:thermo +index_th_r_d ../include/thermodynamics.h /^ int index_th_r_d; \/**< simple analytic approximation to the photon comoving damping scale *\/$/;" m struct:thermo +index_th_rate ../include/thermodynamics.h /^ int index_th_rate; \/**< maximum variation rate of \\f$ exp^{-\\kappa}\\f$, g and \\f$ (d g \/ d \\tau) \\f$, used for computing integration step in perturbation module *\/$/;" m struct:thermo +index_th_tau_d ../include/thermodynamics.h /^ int index_th_tau_d; \/**< Baryon drag optical depth *\/$/;" m struct:thermo +index_th_tau_idm_dr ../include/thermodynamics.h /^ int index_th_tau_idm_dr; \/**< optical depth of idm_dr (due to interactions with idr) *\/$/;" m struct:thermo +index_th_tau_idr ../include/thermodynamics.h /^ int index_th_tau_idr; \/**< optical depth of idr (due to self-interactions) *\/$/;" m struct:thermo +index_th_wb ../include/thermodynamics.h /^ int index_th_wb; \/**< baryon equation of state parameter \\f$ w_b = k_B T_b \/ \\mu \\f$ *\/$/;" m struct:thermo +index_th_xe ../include/thermodynamics.h /^ int index_th_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:thermo +index_tp_H_T_Nb_prime ../include/perturbations.h /^ int index_tp_H_T_Nb_prime; \/**< index value for metric fluctuation H_T_Nb' *\/$/;" m struct:perturbs +index_tp_delta_b ../include/perturbations.h /^ int index_tp_delta_b; \/**< index value for delta of baryons *\/$/;" m struct:perturbs +index_tp_delta_cb ../include/perturbations.h /^ int index_tp_delta_cb; \/**< index value for delta cb *\/$/;" m struct:perturbs +index_tp_delta_cdm ../include/perturbations.h /^ int index_tp_delta_cdm; \/**< index value for delta of cold dark matter *\/$/;" m struct:perturbs +index_tp_delta_dcdm ../include/perturbations.h /^ int index_tp_delta_dcdm;\/**< index value for delta of DCDM *\/$/;" m struct:perturbs +index_tp_delta_dr ../include/perturbations.h /^ int index_tp_delta_dr; \/**< index value for delta of decay radiation *\/$/;" m struct:perturbs +index_tp_delta_fld ../include/perturbations.h /^ int index_tp_delta_fld; \/**< index value for delta of dark energy *\/$/;" m struct:perturbs +index_tp_delta_g ../include/perturbations.h /^ int index_tp_delta_g; \/**< index value for delta of gammas *\/$/;" m struct:perturbs +index_tp_delta_idm_dr ../include/perturbations.h /^ int index_tp_delta_idm_dr;\/**< index value for delta of interacting dark matter (with dr)*\/$/;" m struct:perturbs +index_tp_delta_idr ../include/perturbations.h /^ int index_tp_delta_idr; \/**< index value for delta of interacting dark radiation *\/$/;" m struct:perturbs +index_tp_delta_m ../include/perturbations.h /^ int index_tp_delta_m; \/**< index value for matter density fluctuation *\/$/;" m struct:perturbs +index_tp_delta_ncdm1 ../include/perturbations.h /^ int index_tp_delta_ncdm1; \/**< index value for delta of first non-cold dark matter species (e.g. massive neutrinos) *\/$/;" m struct:perturbs +index_tp_delta_scf ../include/perturbations.h /^ int index_tp_delta_scf; \/**< index value for delta of scalar field *\/$/;" m struct:perturbs +index_tp_delta_tot ../include/perturbations.h /^ int index_tp_delta_tot; \/**< index value for total density fluctuation *\/$/;" m struct:perturbs +index_tp_delta_ur ../include/perturbations.h /^ int index_tp_delta_ur; \/**< index value for delta of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturbs +index_tp_eta ../include/perturbations.h /^ int index_tp_eta; \/**< index value for metric fluctuation eta *\/$/;" m struct:perturbs +index_tp_eta_prime ../include/perturbations.h /^ int index_tp_eta_prime; \/**< index value for metric fluctuation eta' *\/$/;" m struct:perturbs +index_tp_h ../include/perturbations.h /^ int index_tp_h; \/**< index value for metric fluctuation h *\/$/;" m struct:perturbs +index_tp_h_prime ../include/perturbations.h /^ int index_tp_h_prime; \/**< index value for metric fluctuation h' *\/$/;" m struct:perturbs +index_tp_k2gamma_Nb ../include/perturbations.h /^ int index_tp_k2gamma_Nb; \/**< index value for metric fluctuation gamma times k^2 in Nbody gauge *\/$/;" m struct:perturbs +index_tp_p ../include/perturbations.h /^ int index_tp_p; \/**< index value for polarization *\/$/;" m struct:perturbs +index_tp_perturbed_recombination_delta_chi ../include/perturbations.h /^ int index_tp_perturbed_recombination_delta_chi; \/**< Inionization fraction perturbation *\/$/;" m struct:perturbs +index_tp_perturbed_recombination_delta_temp ../include/perturbations.h /^ int index_tp_perturbed_recombination_delta_temp; \/**< Gas temperature perturbation *\/$/;" m struct:perturbs +index_tp_phi ../include/perturbations.h /^ int index_tp_phi; \/**< index value for metric fluctuation phi *\/$/;" m struct:perturbs +index_tp_phi_plus_psi ../include/perturbations.h /^ int index_tp_phi_plus_psi; \/**< index value for metric fluctuation phi+psi *\/$/;" m struct:perturbs +index_tp_phi_prime ../include/perturbations.h /^ int index_tp_phi_prime; \/**< index value for metric fluctuation phi' *\/$/;" m struct:perturbs +index_tp_psi ../include/perturbations.h /^ int index_tp_psi; \/**< index value for metric fluctuation psi *\/$/;" m struct:perturbs +index_tp_t0 ../include/perturbations.h /^ int index_tp_t0; \/**< index value for temperature (j=0 term) *\/$/;" m struct:perturbs +index_tp_t1 ../include/perturbations.h /^ int index_tp_t1; \/**< index value for temperature (j=1 term) *\/$/;" m struct:perturbs +index_tp_t2 ../include/perturbations.h /^ int index_tp_t2; \/**< index value for temperature (j=2 term) *\/$/;" m struct:perturbs +index_tp_theta_b ../include/perturbations.h /^ int index_tp_theta_b; \/**< index value for theta of baryons *\/$/;" m struct:perturbs +index_tp_theta_cb ../include/perturbations.h /^ int index_tp_theta_cb; \/**< index value for theta cb *\/$/;" m struct:perturbs +index_tp_theta_cdm ../include/perturbations.h /^ int index_tp_theta_cdm; \/**< index value for theta of cold dark matter *\/$/;" m struct:perturbs +index_tp_theta_dcdm ../include/perturbations.h /^ int index_tp_theta_dcdm; \/**< index value for theta of DCDM *\/$/;" m struct:perturbs +index_tp_theta_dr ../include/perturbations.h /^ int index_tp_theta_dr; \/**< index value for F1 of decay radiation *\/$/;" m struct:perturbs +index_tp_theta_fld ../include/perturbations.h /^ int index_tp_theta_fld; \/**< index value for theta of dark energy *\/$/;" m struct:perturbs +index_tp_theta_g ../include/perturbations.h /^ int index_tp_theta_g; \/**< index value for theta of gammas *\/$/;" m struct:perturbs +index_tp_theta_idm_dr ../include/perturbations.h /^ int index_tp_theta_idm_dr;\/**< index value for theta of interacting dark matter (with dr)*\/$/;" m struct:perturbs +index_tp_theta_idr ../include/perturbations.h /^ int index_tp_theta_idr; \/**< index value for theta of interacting dark radiation *\/$/;" m struct:perturbs +index_tp_theta_m ../include/perturbations.h /^ int index_tp_theta_m; \/**< index value for matter velocity fluctuation *\/$/;" m struct:perturbs +index_tp_theta_ncdm1 ../include/perturbations.h /^ int index_tp_theta_ncdm1; \/**< index value for theta of first non-cold dark matter species (e.g. massive neutrinos) *\/$/;" m struct:perturbs +index_tp_theta_scf ../include/perturbations.h /^ int index_tp_theta_scf; \/**< index value for theta of scalar field *\/$/;" m struct:perturbs +index_tp_theta_tot ../include/perturbations.h /^ int index_tp_theta_tot; \/**< index value for total velocity fluctuation *\/$/;" m struct:perturbs +index_tp_theta_ur ../include/perturbations.h /^ int index_tp_theta_ur; \/**< index value for theta of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturbs +index_tt_b ../include/transfer.h /^ int index_tt_b; \/**< index for transfer type = B-polarization *\/$/;" m struct:transfers +index_tt_d0 ../include/transfer.h /^ int index_tt_d0; \/**< index for first bin of transfer type = doppler effect for of number count (j=0 term) *\/$/;" m struct:transfers +index_tt_d1 ../include/transfer.h /^ int index_tt_d1; \/**< index for first bin of transfer type = doppler effect for of number count (j=1 term) *\/$/;" m struct:transfers +index_tt_density ../include/transfer.h /^ int index_tt_density; \/**< index for first bin of transfer type = matter density *\/$/;" m struct:transfers +index_tt_e ../include/transfer.h /^ int index_tt_e; \/**< index for transfer type = E-polarization *\/$/;" m struct:transfers +index_tt_lcmb ../include/transfer.h /^ int index_tt_lcmb; \/**< index for transfer type = CMB lensing *\/$/;" m struct:transfers +index_tt_lensing ../include/transfer.h /^ int index_tt_lensing; \/**< index for first bin of transfer type = galaxy lensing *\/$/;" m struct:transfers +index_tt_nc_g1 ../include/transfer.h /^ int index_tt_nc_g1; \/**< index for first bin of transfer type = gravity term G1 for of number count *\/$/;" m struct:transfers +index_tt_nc_g2 ../include/transfer.h /^ int index_tt_nc_g2; \/**< index for first bin of transfer type = gravity term G2 for of number count *\/$/;" m struct:transfers +index_tt_nc_g3 ../include/transfer.h /^ int index_tt_nc_g3; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_g4 ../include/transfer.h /^ int index_tt_nc_g4; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_g5 ../include/transfer.h /^ int index_tt_nc_g5; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_lens ../include/transfer.h /^ int index_tt_nc_lens; \/**< index for first bin of transfer type = lensing for of number count *\/$/;" m struct:transfers +index_tt_rsd ../include/transfer.h /^ int index_tt_rsd; \/**< index for first bin of transfer type = redshift space distortion of number count *\/$/;" m struct:transfers +index_tt_t0 ../include/transfer.h /^ int index_tt_t0; \/**< index for transfer type = temperature (j=0 term) *\/$/;" m struct:transfers +index_tt_t1 ../include/transfer.h /^ int index_tt_t1; \/**< index for transfer type = temperature (j=1 term) *\/$/;" m struct:transfers +index_tt_t2 ../include/transfer.h /^ int index_tt_t2; \/**< index for transfer type = temperature (j=2 term) *\/$/;" m struct:transfers +inflation_H ../include/primordial.h /^ inflation_H,$/;" e enum:primordial_spectrum_type +inflation_V ../include/primordial.h /^ inflation_V,$/;" e enum:primordial_spectrum_type +inflation_V_end ../include/primordial.h /^ inflation_V_end,$/;" e enum:primordial_spectrum_type +inflation_module_behavior ../include/primordial.h /^enum inflation_module_behavior {$/;" g +initialise_HIS_cache ../include/transfer.h /^ short initialise_HIS_cache; \/**< only true if we are using CLASS for setting up a cache of HIS structures *\/$/;" m struct:transfers +initialize_generic_integrator ../tools/dei_rkck.c /^int initialize_generic_integrator($/;" f +initialize_jacobian ../tools/evolver_ndf15.c /^int initialize_jacobian(struct jacobian *jac, int neq, ErrorMsg error_message){$/;" f +initialize_numjac_workspace ../tools/evolver_ndf15.c /^int initialize_numjac_workspace(struct numjac_workspace * nj_ws,int neq, ErrorMsg error_message){$/;" f +input_auxillary_target_conditions input.c /^int input_auxillary_target_conditions(struct file_content * pfc,$/;" f +input_default_params input.c /^int input_default_params($/;" f +input_default_precision input.c /^int input_default_precision ( struct precision * ppr ) {$/;" f +input_find_root input.c /^int input_find_root(double *xzero,$/;" f +input_fzerofun_1d input.c /^int input_fzerofun_1d(double input,$/;" f +input_get_guess input.c /^int input_get_guess(double *xguess,$/;" f +input_init input.c /^int input_init($/;" f +input_init_from_arguments input.c /^int input_init_from_arguments($/;" f +input_pprpba ../include/input.h /^struct input_pprpba {$/;" s +input_prepare_pk_eq input.c /^int input_prepare_pk_eq($/;" f +input_read_parameters input.c /^int input_read_parameters($/;" f +input_read_precisions input.c /^int input_read_precisions($/;" f +input_try_unknown_parameters input.c /^int input_try_unknown_parameters(double * unknown_parameter,$/;" f +integrate ../include/primordial.h /^ enum integration_direction integrate;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:enum:primordial_inflation_parameters_and_workspace::integration_direction +integrated_growth nonlinear_hmcode.c /^double integrated_growth(double a){$/;" f +integration_direction ../include/primordial.h /^enum integration_direction {$/;" g +inter_closeby ../include/background.h /^ short inter_closeby; \/**< flag for calling background_at_eta and find position in interpolation table starting from previous position in previous call *\/$/;" m struct:background +inter_closeby ../include/thermodynamics.h /^ short inter_closeby; \/**< flag for calling thermodynamics_at_z and find position in interpolation table starting from previous position in previous call *\/$/;" m struct:thermo +inter_mode ../include/perturbations.h /^ short inter_mode; \/**< flag defining the method used for interpolation background\/thermo quantities tables *\/$/;" m struct:perturb_workspace +inter_normal ../include/background.h /^ short inter_normal; \/**< flag for calling background_at_eta and find position in interpolation table normally *\/$/;" m struct:background +inter_normal ../include/thermodynamics.h /^ short inter_normal; \/**< flag for calling thermodynamics_at_z and find position in interpolation table normally *\/$/;" m struct:thermo +interp_from_dif ../tools/evolver_ndf15.c /^int interp_from_dif(double tinterp,$/;" f +interp_from_difold ../tools/evolver_ndf15.c /^int interp_from_difold(double tinterp,double tnew,double *ynew,double h,double **dif,int k, double *yinterp,$/;" f +interpolated_sources ../include/transfer.h /^ double * interpolated_sources; \/**< interpolated_sources[index_tau]:$/;" m struct:transfer_workspace +is_non_zero ../include/nonlinear.h /^ short * is_non_zero; \/**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated *\/$/;" m struct:nonlinear +is_non_zero ../include/primordial.h /^ short ** is_non_zero; \/**< is_non_zero[index_md][index_ic1_ic2] set to false if pair$/;" m struct:primordial +is_non_zero ../include/spectra.h /^ short ** is_non_zero; \/**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated *\/$/;" m struct:spectra +j ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +j ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +jacobian ../include/evolver_ndf15.h /^struct jacobian{$/;" s +jacvec ../include/evolver_ndf15.h /^ double *jacvec; \/*Stores experience gained from subsequent calls *\/$/;" m struct:jacobian +k ../include/nonlinear.h /^ double * k; \/**< k[index_k] = list of k values *\/$/;" m struct:nonlinear +k ../include/perturbations.h /^ double ** k; \/**< k[index_md][index_k] = list of values *\/$/;" m struct:perturbs +k ../include/perturbations.h /^ double k; \/**< current value of wavenumber in 1\/Mpc *\/$/;" m struct:perturb_parameters_and_workspace +k ../include/primordial.h /^ double k;$/;" m struct:primordial_inflation_parameters_and_workspace +k ../include/transfer.h /^ double ** k; \/**< list of wavenumber values for each requested mode, k[index_md][index_q]. In flat universes k=q. In non-flat universes q and k differ through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, tensor. q should be used throughout the transfer module, excepted when interpolating or manipulating the source functions S(k,tau): for a given value of q this should be done in k(q). *\/$/;" m struct:transfers +k_max ../include/perturbations.h /^ double k_max; \/**< maximum value (over all modes) *\/$/;" m struct:perturbs +k_max_for_pk ../include/perturbations.h /^ double k_max_for_pk; \/**< maximum value of k in 1\/Mpc in P(k) (if \\f$ C_l \\f$'s also requested, overseeded by value kmax inferred from l_scalar_max if it is bigger) *\/$/;" m struct:perturbs +k_min ../include/perturbations.h /^ double k_min; \/**< minimum value (over all modes) *\/$/;" m struct:perturbs +k_nl ../include/nonlinear.h /^ double ** k_nl; \/**< wavenumber at which non-linear corrections become important,$/;" m struct:nonlinear +k_output_values ../include/perturbations.h /^ double k_output_values[_MAX_NUMBER_OF_K_FILES_]; \/**< List of k values where perturbation output is requested. *\/$/;" m struct:perturbs +k_output_values_num ../include/perturbations.h /^ int k_output_values_num; \/**< Number of perturbation outputs (default=0) *\/$/;" m struct:perturbs +k_pivot ../include/primordial.h /^ double k_pivot; \/**< pivot scale in \\f$ Mpc^{-1} \\f$ *\/$/;" m struct:primordial +k_size ../include/nonlinear.h /^ int k_size; \/**< k_size = total number of k values *\/$/;" m struct:nonlinear +k_size ../include/perturbations.h /^ int * k_size; \/**< k_size[index_md] = total number of k$/;" m struct:perturbs +k_size_cl ../include/perturbations.h /^ int * k_size_cl; \/**< k_size_cl[index_md] number of k values used$/;" m struct:perturbs +k_size_cmb ../include/perturbations.h /^ int * k_size_cmb; \/**< k_size_cmb[index_md] number of k values used$/;" m struct:perturbs +k_size_extra ../include/nonlinear.h /^ int k_size_extra;\/** total number of k values of extrapolated k array (high k)*\/$/;" m struct:nonlinear +key ../cpp/ClassEngine.hh /^ inline string key(const unsigned& i) const {return pars[i].first;}$/;" f class:ClassParams +ksi_ncdm ../include/background.h /^ double * ksi_ncdm, ksi_ncdm_default; \/**< list of 2nd parameters in$/;" m struct:background +ksi_ncdm_default ../include/background.h /^ double * ksi_ncdm, ksi_ncdm_default; \/**< list of 2nd parameters in$/;" m struct:background +l ../include/hermite3_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../include/hermite4_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +l ../include/hyperspherical.h /^ int l;$/;" m struct:WKB_parameters +l ../include/hyperspherical.h /^ int *l; \/\/Vector of l values stored$/;" m struct:HypersphericalInterpolationStructure +l ../include/lensing.h /^ double * l; \/**< table of multipole values l[index_l] *\/$/;" m struct:lensing +l ../include/spectra.h /^ double * l; \/**< list of multipole values l[index_l] *\/$/;" m struct:spectra +l ../include/transfer.h /^ int * l; \/**< list of multipole values l[index_l] *\/$/;" m struct:transfers +l ../tools/hermite3_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../tools/hermite4_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +l_lensed_max ../include/lensing.h /^ int l_lensed_max; \/**< last multipole at which lensed spectra are computed *\/$/;" m struct:lensing +l_lss_max ../include/perturbations.h /^ int l_lss_max; \/**< maximum l value for LSS \\f$ C_l \\f$'s (density and lensing potential in bins) *\/$/;" m struct:perturbs +l_max ../include/spectra.h /^ int * l_max; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_ct ../include/spectra.h /^ int ** l_max_ct; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_dr ../include/perturbations.h /^ int l_max_dr; \/**< max momentum in Boltzmann hierarchy for dr) *\/$/;" m struct:perturb_vector +l_max_g ../include/perturbations.h /^ int l_max_g; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_max_idr ../include/perturbations.h /^ int l_max_idr; \/**< max momentum in Boltzmann hierarchy (at least 3) for interacting dark radiation *\/$/;" m struct:perturb_vector +l_max_lt ../include/lensing.h /^ int * l_max_lt; \/**< last multipole (given as an input) at which$/;" m struct:lensing +l_max_ncdm ../include/perturbations.h /^ int* l_max_ncdm; \/**< mutipole l at which Boltzmann hierarchy is truncated (for each ncdm species) *\/$/;" m struct:perturb_vector +l_max_pol_g ../include/perturbations.h /^ int l_max_pol_g; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_max_scalars ../cpp/ClassEngine.hh /^ inline int l_max_scalars() const {return _lmax;}$/;" f class:ClassEngine +l_max_tot ../include/spectra.h /^ int l_max_tot; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_ur ../include/perturbations.h /^ int l_max_ur; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_scalar_max ../include/perturbations.h /^ int l_scalar_max; \/**< maximum l value for CMB scalars \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +l_size ../include/hyperspherical.h /^ int l_size; \/\/Number of l values$/;" m struct:HypersphericalInterpolationStructure +l_size ../include/lensing.h /^ int l_size; \/**< number of l values *\/$/;" m struct:lensing +l_size ../include/spectra.h /^ int * l_size; \/**< number of multipole values for each requested mode, l_size[index_md] *\/$/;" m struct:spectra +l_size ../include/transfer.h /^ int * l_size; \/**< number of multipole values for each requested mode, l_size[index_md] *\/$/;" m struct:transfers +l_size ../include/transfer.h /^ int l_size; \/**< number of l values *\/$/;" m struct:transfer_workspace +l_size_max ../include/spectra.h /^ int l_size_max; \/**< greatest of all l_size[index_md] *\/$/;" m struct:spectra +l_size_max ../include/transfer.h /^ int l_size_max; \/**< greatest of all l_size[index_md] *\/$/;" m struct:transfers +l_size_tt ../include/transfer.h /^ int ** l_size_tt; \/**< number of multipole values for which we effectively compute the transfer function,l_size_tt[index_md][index_tt] *\/$/;" m struct:transfers +l_tensor_max ../include/perturbations.h /^ int l_tensor_max; \/**< maximum l value for CMB tensors \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +l_unlensed_max ../include/lensing.h /^ int l_unlensed_max; \/**< last multipole in all calculations (same as in spectra module)*\/$/;" m struct:lensing +l_vector_max ../include/perturbations.h /^ int l_vector_max; \/**< maximum l value for CMB vectors \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +last_index ../include/background.h /^ int last_index;$/;" m struct:background_parameters_for_distributions +last_index_back ../include/perturbations.h /^ int last_index_back; \/**< the background interpolation function background_at_tau() keeps memory of the last point called through this index *\/$/;" m struct:perturb_workspace +last_index_thermo ../include/perturbations.h /^ int last_index_thermo; \/**< the thermodynamics interpolation function thermodynamics_at_z() keeps memory of the last point called through this index *\/$/;" m struct:perturb_workspace +late_sources ../include/perturbations.h /^ double *** late_sources; \/**< Pointer towards the source interpolation table$/;" m struct:perturbs +lcmb_pivot ../include/transfer.h /^ double lcmb_pivot; \/**< if lcmb_tilt non-zero, corresponding pivot$/;" m struct:transfers +lcmb_rescale ../include/transfer.h /^ double lcmb_rescale; \/**< normally set to one, can be used$/;" m struct:transfers +lcmb_tilt ../include/transfer.h /^ double lcmb_tilt; \/**< normally set to zero, can be used$/;" m struct:transfers +le ../cpp/ClassEngine.hh /^ struct lensing le; \/* for lensed spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::lensing +leaf_childs ../include/quadrature.h /^ int leaf_childs;\/* Number of leafs under current node. 1 means that the node is a leaf. *\/$/;" m struct:adaptive_integration_tree_node +leaf_count ../tools/quadrature.c /^int leaf_count(qss_node *node){$/;" f +left ../include/quadrature.h /^ struct adaptive_integration_tree_node *left, *right; \/* Pointer to left child. *\/$/;" m struct:adaptive_integration_tree_node typeref:struct:adaptive_integration_tree_node::adaptive_integration_tree_node +left_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +lensing ../include/lensing.h /^struct lensing {$/;" s +lensing_addback_cl_ee_bb lensing.c /^int lensing_addback_cl_ee_bb($/;" f +lensing_addback_cl_te lensing.c /^int lensing_addback_cl_te($/;" f +lensing_addback_cl_tt lensing.c /^int lensing_addback_cl_tt($/;" f +lensing_cl_at_l lensing.c /^int lensing_cl_at_l($/;" f +lensing_d00 lensing.c /^int lensing_d00($/;" f +lensing_d11 lensing.c /^int lensing_d11($/;" f +lensing_d1m1 lensing.c /^int lensing_d1m1($/;" f +lensing_d20 lensing.c /^int lensing_d20($/;" f +lensing_d22 lensing.c /^int lensing_d22($/;" f +lensing_d2m2 lensing.c /^int lensing_d2m2($/;" f +lensing_d31 lensing.c /^int lensing_d31($/;" f +lensing_d3m1 lensing.c /^int lensing_d3m1($/;" f +lensing_d3m3 lensing.c /^int lensing_d3m3($/;" f +lensing_d40 lensing.c /^int lensing_d40($/;" f +lensing_d4m2 lensing.c /^int lensing_d4m2($/;" f +lensing_d4m4 lensing.c /^int lensing_d4m4($/;" f +lensing_free lensing.c /^int lensing_free($/;" f +lensing_indices lensing.c /^int lensing_indices($/;" f +lensing_init lensing.c /^int lensing_init($/;" f +lensing_lensed_cl_ee_bb lensing.c /^int lensing_lensed_cl_ee_bb($/;" f +lensing_lensed_cl_te lensing.c /^int lensing_lensed_cl_te($/;" f +lensing_lensed_cl_tt lensing.c /^int lensing_lensed_cl_tt($/;" f +lensing_verbose ../include/lensing.h /^ short lensing_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:lensing +linear ../include/primordial.h /^ linear,$/;" e enum:linear_or_logarithmic +linear_or_logarithmic ../include/primordial.h /^enum linear_or_logarithmic {$/;" g +lmax ../cpp/Engine.hh /^ inline int lmax() {return _lmax;}$/;" f class:Engine +ln_aH_ratio ../include/primordial.h /^ ln_aH_ratio,$/;" e enum:phi_pivot_methods +ln_aH_ratio_auto ../include/primordial.h /^ ln_aH_ratio_auto$/;" e enum:phi_pivot_methods +ln_k ../include/nonlinear.h /^ double * ln_k; \/**< ln_k[index_k] = list of log(k) values *\/$/;" m struct:nonlinear +ln_pk_ic_l ../include/nonlinear.h /^ double ** ln_pk_ic_l; \/**< Matter power spectrum (linear).$/;" m struct:nonlinear +ln_pk_l ../include/nonlinear.h /^ double ** ln_pk_l; \/**< Total matter power spectrum summed over initial conditions (linear).$/;" m struct:nonlinear +ln_pk_nl ../include/nonlinear.h /^ double ** ln_pk_nl; \/**< Total matter power spectrum summed over initial conditions (nonlinear).$/;" m struct:nonlinear +ln_tau ../include/nonlinear.h /^ double * ln_tau; \/**< log(tau) array, only needed if user wants$/;" m struct:nonlinear +ln_tau ../include/perturbations.h /^ double * ln_tau; \/**< log of the arrau tau_sampling, covering only the final time range required for the output of$/;" m struct:perturbs +ln_tau_size ../include/nonlinear.h /^ int ln_tau_size; \/**< number of values in this array *\/$/;" m struct:nonlinear +ln_tau_size ../include/perturbations.h /^ int ln_tau_size; \/**< number of values in this array *\/$/;" m struct:perturbs +lnk ../include/primordial.h /^ double * lnk; \/**< list of ln(k) values lnk[index_k] *\/$/;" m struct:primordial +lnk_size ../include/primordial.h /^ int lnk_size; \/**< number of ln(k) values *\/$/;" m struct:primordial +lnpk ../include/primordial.h /^ double ** lnpk; \/**< depends on indices index_md, index_ic1, index_ic2, index_k as:$/;" m struct:primordial +logarithmic ../include/primordial.h /^ logarithmic$/;" e enum:linear_or_logarithmic +logj ../include/evolver_ndf15.h /^ int * logj;$/;" m struct:numjac_workspace +long_info ../include/background.h /^ short long_info; \/**< flag for calling background_at_eta and return all information *\/$/;" m struct:background +lt_size ../include/lensing.h /^ int lt_size; \/**< number of \\f$ C_l\\f$ types requested *\/$/;" m struct:lensing +lubksb ../tools/evolver_ndf15.c /^int lubksb(double **a, int n, int *indx, double b[]){$/;" f +ludcmp ../tools/evolver_ndf15.c /^int ludcmp(double **a, int n, int *indx, double *d, double *vv){$/;" f +luidx ../include/evolver_ndf15.h /^ int *luidx;$/;" m struct:jacobian +lxlp1 ../include/hermite3_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../include/hermite4_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +lxlp1 ../tools/hermite3_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../tools/hermite4_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +m_idm ../include/thermodynamics.h /^ double m_idm; \/**< interacting dark matter mass *\/$/;" m struct:thermo +m_ncdm_in_eV ../include/background.h /^ double * m_ncdm_in_eV; \/**< list of ncdm masses in eV (inferred from M_ncdm and other parameters above) *\/$/;" m struct:background +main ../cpp/testKlass.cc /^int main(int argc,char** argv){$/;" f +many_tanh_num ../include/thermodynamics.h /^ int many_tanh_num; \/**< with how many jumps do we want to describe reionization? *\/$/;" m struct:thermo +many_tanh_width ../include/thermodynamics.h /^ double many_tanh_width; \/**< sharpness of tanh() steps *\/$/;" m struct:thermo +many_tanh_xe ../include/thermodynamics.h /^ double * many_tanh_xe; \/**< imposed \\f$ X_e(z)\\f$ value at the end of each jump (ie at later times)*\/$/;" m struct:thermo +many_tanh_z ../include/thermodynamics.h /^ double * many_tanh_z; \/**< central z value for each tanh jump *\/$/;" m struct:thermo +max_group ../include/evolver_ndf15.h /^ int max_group; \/*Number of columngroups -1 *\/$/;" m struct:jacobian +max_l_max ../include/perturbations.h /^ int max_l_max; \/**< maximum l_max for any multipole *\/$/;" m struct:perturb_workspace +max_nonzero ../include/evolver_ndf15.h /^ int max_nonzero; \/*Maximal number of non-zero entries to be considered sparse *\/$/;" m struct:jacobian +maxnz ../include/sparse.h /^ int maxnz; \/* Maximum number of non-zero entries*\/$/;" m struct:sparse_matrix +md_size ../include/perturbations.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:perturbs +md_size ../include/primordial.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:primordial +md_size ../include/spectra.h /^ int md_size; \/**< number of modes (scalar, tensor, ...) included in computation *\/$/;" m struct:spectra +md_size ../include/transfer.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:transfers +method ../include/nonlinear.h /^ enum non_linear_method method; \/**< method for computing non-linear corrections (none, Halogit, etc.) *\/$/;" m struct:nonlinear typeref:enum:nonlinear::non_linear_method +mt_size ../include/perturbations.h /^ int mt_size; \/**< size of metric perturbation vector *\/$/;" m struct:perturb_workspace +n ../include/dei_rkck.h /^ int n;$/;" m struct:generic_integrator_workspace +n ../include/sparse.h /^ int n; \/*Matrix assumed square, [nxn] *\/$/;" m struct:sparse_numerical +n_ad_bi ../include/primordial.h /^ double n_ad_bi; \/**< ADxBI cross-correlation tilt *\/$/;" m struct:primordial +n_ad_cdi ../include/primordial.h /^ double n_ad_cdi; \/**< ADxCDI cross-correlation tilt *\/$/;" m struct:primordial +n_ad_nid ../include/primordial.h /^ double n_ad_nid; \/**< ADxNID cross-correlation tilt *\/$/;" m struct:primordial +n_ad_niv ../include/primordial.h /^ double n_ad_niv; \/**< ADxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_bi ../include/primordial.h /^ double n_bi; \/**< BI tilt *\/$/;" m struct:primordial +n_bi_cdi ../include/primordial.h /^ double n_bi_cdi; \/**< BIxCDI cross-correlation tilt *\/$/;" m struct:primordial +n_bi_nid ../include/primordial.h /^ double n_bi_nid; \/**< BIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_bi_niv ../include/primordial.h /^ double n_bi_niv; \/**< BIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_cdi ../include/primordial.h /^ double n_cdi; \/**< CDI tilt *\/$/;" m struct:primordial +n_cdi_nid ../include/primordial.h /^ double n_cdi_nid; \/**< CDIxNID cross-correlation tilt *\/$/;" m struct:primordial +n_cdi_niv ../include/primordial.h /^ double n_cdi_niv; \/**< CDIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_e ../include/thermodynamics.h /^ double n_e; \/**< total number density of electrons today (free or not) *\/$/;" m struct:thermo +n_ncdm ../include/background.h /^ int n_ncdm;$/;" m struct:background_parameters_for_distributions +n_nid ../include/primordial.h /^ double n_nid; \/**< NID tilt *\/$/;" m struct:primordial +n_nid_niv ../include/primordial.h /^ double n_nid_niv; \/**< NIDxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_niv ../include/primordial.h /^ double n_niv; \/**< NIV tilt *\/$/;" m struct:primordial +n_s ../include/primordial.h /^ double n_s; \/**< usual scalar tilt = [curvature power spectrum tilt at pivot scale -1] *\/$/;" m struct:primordial +n_t ../include/primordial.h /^ double n_t; \/**< usual tensor tilt = [GW power spectrum tilt at pivot scale] *\/$/;" m struct:primordial +name ../include/parser.h /^ FileArg * name; \/**< list of (size) names *\/$/;" m struct:file_content +natural ../include/primordial.h /^ natural,$/;" e enum:potential_shape +ncdm_input_q_size ../include/background.h /^ int * ncdm_input_q_size; \/**< Vector of numbers of q bins *\/$/;" m struct:background +ncdm_psd_files ../include/background.h /^ char * ncdm_psd_files; \/**< list of filenames for tabulated p-s-d *\/$/;" m struct:background +ncdm_psd_parameters ../include/background.h /^ double * ncdm_psd_parameters; \/**< list of parameters for specifying\/modifying$/;" m struct:background +ncdm_qmax ../include/background.h /^ double * ncdm_qmax; \/**< Vector of maximum value of q *\/$/;" m struct:background +ncdm_quadrature_method ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" g +ncdm_quadrature_strategy ../include/background.h /^ int * ncdm_quadrature_strategy; \/**< Vector of integers according to quadrature strategy. *\/$/;" m struct:background +ncdmfa_CLASS ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_flags ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" g +ncdmfa_hu ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_mb ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_method ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" g +ncdmfa_none ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_off ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" e enum:ncdmfa_flags +ncdmfa_on ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" e enum:ncdmfa_flags +ncols ../include/sparse.h /^ int ncols; \/* Number of columns *\/$/;" m struct:sparse_matrix +ndf15 ../include/common.h /^ ndf15 \/* stiff integrator *\/$/;" e enum:evolver_type +neglect_late_source ../include/transfer.h /^ short neglect_late_source; \/**< flag stating whether we use the time cut approximation for the wavenumber at hand *\/$/;" m struct:transfer_workspace +new_jacobian ../include/evolver_ndf15.h /^ int new_jacobian; \/* True if sp_ludcmp has not been run on the current jacobian. *\/$/;" m struct:jacobian +new_linearisation ../tools/evolver_ndf15.c /^int new_linearisation(struct jacobian *jac,double hinvGak,int neq,ErrorMsg error_message){$/;" f +newtonian ../include/perturbations.h /^ newtonian, \/**< newtonian (or longitudinal) gauge *\/$/;" e enum:possible_gauges +next_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +nindex_idm_dr ../include/thermodynamics.h /^ double nindex_idm_dr; \/**< temperature dependence of the interaction between dark matter and dark radiation *\/$/;" m struct:thermo +nl ../cpp/ClassEngine.hh /^ struct nonlinear nl; \/* for non-linear spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::nonlinear +nl_HMcode ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_corr_density ../include/nonlinear.h /^ double ** nl_corr_density; \/**< nl_corr_density[index_pk][index_tau * ppt->k_size + index_k] *\/$/;" m struct:nonlinear +nl_emu_dmonly ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_halofit ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_none ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_owls_agn ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_dblim ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_dmonly ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_ref ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_user_defined ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +non_diag ../include/spectra.h /^ int non_diag; \/**< sets the number of cross-correlation spectra$/;" m struct:spectra +non_linear_method ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" g +nonlinear ../include/nonlinear.h /^struct nonlinear {$/;" s +nonlinear_free nonlinear.c /^int nonlinear_free($/;" f +nonlinear_get_k_list nonlinear.c /^int nonlinear_get_k_list($/;" f +nonlinear_get_source nonlinear.c /^int nonlinear_get_source($/;" f +nonlinear_get_tau_list nonlinear.c /^int nonlinear_get_tau_list($/;" f +nonlinear_halofit nonlinear.c /^int nonlinear_halofit($/;" f +nonlinear_halofit_integrate nonlinear.c /^int nonlinear_halofit_integrate($/;" f +nonlinear_hmcode nonlinear.c /^int nonlinear_hmcode($/;" f +nonlinear_hmcode2020 nonlinear_hmcode.c /^int nonlinear_hmcode2020($/;" f +nonlinear_hmcode_baryonic_feedback nonlinear.c /^int nonlinear_hmcode_baryonic_feedback($/;" f +nonlinear_hmcode_dark_energy_correction nonlinear.c /^int nonlinear_hmcode_dark_energy_correction($/;" f +nonlinear_hmcode_fill_growtab nonlinear.c /^int nonlinear_hmcode_fill_growtab($/;" f +nonlinear_hmcode_fill_sigtab nonlinear.c /^int nonlinear_hmcode_fill_sigtab($/;" f +nonlinear_hmcode_growint nonlinear.c /^int nonlinear_hmcode_growint($/;" f +nonlinear_hmcode_halomassfunction nonlinear.c /^int nonlinear_hmcode_halomassfunction($/;" f +nonlinear_hmcode_sigma8_at_z nonlinear.c /^int nonlinear_hmcode_sigma8_at_z($/;" f +nonlinear_hmcode_sigmadisp100_at_z nonlinear.c /^int nonlinear_hmcode_sigmadisp100_at_z($/;" f +nonlinear_hmcode_sigmadisp_at_z nonlinear.c /^int nonlinear_hmcode_sigmadisp_at_z($/;" f +nonlinear_hmcode_sigmaprime_at_z nonlinear.c /^int nonlinear_hmcode_sigmaprime_at_z($/;" f +nonlinear_hmcode_window_nfw nonlinear.c /^int nonlinear_hmcode_window_nfw($/;" f +nonlinear_hmcode_workspace_free nonlinear.c /^int nonlinear_hmcode_workspace_free($/;" f +nonlinear_hmcode_workspace_init nonlinear.c /^int nonlinear_hmcode_workspace_init($/;" f +nonlinear_indices nonlinear.c /^int nonlinear_indices($/;" f +nonlinear_init nonlinear.c /^int nonlinear_init($/;" f +nonlinear_k_nl_at_z nonlinear.c /^int nonlinear_k_nl_at_z($/;" f +nonlinear_pk_at_k_and_z nonlinear.c /^int nonlinear_pk_at_k_and_z($/;" f +nonlinear_pk_at_z nonlinear.c /^int nonlinear_pk_at_z($/;" f +nonlinear_pk_linear nonlinear.c /^int nonlinear_pk_linear($/;" f +nonlinear_pk_tilt_at_k_and_z nonlinear.c /^int nonlinear_pk_tilt_at_k_and_z($/;" f +nonlinear_pks_at_k_and_z nonlinear.c /^int nonlinear_pks_at_k_and_z($/;" f +nonlinear_pks_at_kvec_and_zvec nonlinear.c /^int nonlinear_pks_at_kvec_and_zvec($/;" f +nonlinear_pks_at_z nonlinear.c /^int nonlinear_pks_at_z($/;" f +nonlinear_sigma_at_z nonlinear.c /^int nonlinear_sigma_at_z($/;" f +nonlinear_sigmas nonlinear.c /^int nonlinear_sigmas($/;" f +nonlinear_sigmas_at_z nonlinear.c /^int nonlinear_sigmas_at_z($/;" f +nonlinear_verbose ../include/nonlinear.h /^ short nonlinear_verbose; \/**< amount of information written in standard output *\/$/;" m struct:nonlinear +nonlinear_workspace ../include/nonlinear.h /^struct nonlinear_workspace {$/;" s +normal_info ../include/background.h /^ short normal_info; \/**< flag for calling background_at_eta and return medium information *\/$/;" m struct:background +nrows ../include/sparse.h /^ int nrows; \/* Number of rows *\/$/;" m struct:sparse_matrix +numCls ../cpp/ClassEngine.hh /^ inline int numCls() const {return sp.ct_size;};$/;" f class:ClassEngine +number_of_scalar_titles ../include/perturbations.h /^ int number_of_scalar_titles; \/**< number of titles\/columns in scalar perturbation output files *\/$/;" m struct:perturbs +number_of_tensor_titles ../include/perturbations.h /^ int number_of_tensor_titles; \/**< number of titles\/columns in tensor perturbation output files*\/$/;" m struct:perturbs +number_of_vector_titles ../include/perturbations.h /^ int number_of_vector_titles; \/**< number of titles\/columns in vector perturbation output files*\/$/;" m struct:perturbs +numerical ../include/primordial.h /^ numerical,$/;" e enum:inflation_module_behavior +numjac ../tools/evolver_ndf15.c /^int numjac($/;" f +numjac_workspace ../include/evolver_ndf15.h /^struct numjac_workspace{$/;" s +nx ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +nz_ddnz ../include/transfer.h /^ double * nz_ddnz; \/**< second derivatives in splined selection function*\/$/;" m struct:transfers +nz_evo_dd_dlog_nz ../include/transfer.h /^ double * nz_evo_dd_dlog_nz; \/**< second derivatives in splined log of evolution function *\/$/;" m struct:transfers +nz_evo_dlog_nz ../include/transfer.h /^ double * nz_evo_dlog_nz; \/**< log of tabulated values of evolution function *\/$/;" m struct:transfers +nz_evo_file_name ../include/transfer.h /^ FileName nz_evo_file_name; \/**< dN\/dz (evolution function) input file name *\/$/;" m struct:transfers +nz_evo_nz ../include/transfer.h /^ double * nz_evo_nz; \/**< input tabulated values of evolution function *\/$/;" m struct:transfers +nz_evo_size ../include/transfer.h /^ int nz_evo_size; \/**< number of redshift values in input tabulated evolution function *\/$/;" m struct:transfers +nz_evo_z ../include/transfer.h /^ double * nz_evo_z; \/**< redshift values in input tabulated evolution function *\/$/;" m struct:transfers +nz_file_name ../include/transfer.h /^ FileName nz_file_name; \/**< dN\/dz (selection function) input file name *\/$/;" m struct:transfers +nz_nz ../include/transfer.h /^ double * nz_nz; \/**< input tabulated values of selection function *\/$/;" m struct:transfers +nz_size ../include/transfer.h /^ int nz_size; \/**< number of redshift values in input tabulated selection function *\/$/;" m struct:transfers +nz_z ../include/transfer.h /^ double * nz_z; \/**< redshift values in input tabulated selection function *\/$/;" m struct:transfers +omega_dcdmdr ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +omega_ini_dcdm ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +op ../cpp/ClassEngine.hh /^ struct output op; \/* for output files *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::output +open ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +out_sigma ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigma_disp ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigma_prime ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigmas ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" g +output ../include/output.h /^struct output {$/;" s +output_background output.c /^int output_background($/;" f +output_cl output.c /^int output_cl($/;" f +output_format ../include/output.h /^ enum file_format output_format; \/**< which format for output files (definitions, order of columns, etc.) *\/$/;" m struct:output typeref:enum:output::file_format +output_init output.c /^int output_init($/;" f +output_one_line_of_cl output.c /^int output_one_line_of_cl($/;" f +output_one_line_of_pk output.c /^int output_one_line_of_pk($/;" f +output_open_cl_file output.c /^int output_open_cl_file($/;" f +output_open_pk_file output.c /^int output_open_pk_file($/;" f +output_perturbations output.c /^int output_perturbations($/;" f +output_pk output.c /^int output_pk($/;" f +output_primordial output.c /^int output_primordial($/;" f +output_print_data output.c /^int output_print_data(FILE *out,$/;" f +output_thermodynamics output.c /^int output_thermodynamics($/;" f +output_tk output.c /^int output_tk($/;" f +output_total_cl_at_l output.c /^int output_total_cl_at_l($/;" f +output_verbose ../include/output.h /^ short output_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:output +p ../include/sparse.h /^ int *p; \/*Row permutation. *\/$/;" m struct:sparse_numerical +pBIS ../include/transfer.h /^ HyperInterpStruct * pBIS; \/**< pointer to structure containing all the spherical bessel functions of the flat case (used even in the non-flat case, for approximation schemes). pBIS = pointer to Bessel Interpolation Structure. *\/$/;" m struct:transfer_workspace +parNames ../cpp/ClassEngine.hh /^ std::vector parNames;$/;" m class:ClassEngine +pars ../cpp/ClassEngine.hh /^ std::vector > pars;$/;" m class:ClassParams +parser_cat ../tools/parser.c /^int parser_cat($/;" f +parser_free ../tools/parser.c /^int parser_free($/;" f +parser_init ../tools/parser.c /^int parser_init($/;" f +parser_read_double ../tools/parser.c /^int parser_read_double($/;" f +parser_read_double_and_position ../tools/parser.c /^int parser_read_double_and_position($/;" f +parser_read_file ../tools/parser.c /^int parser_read_file($/;" f +parser_read_int ../tools/parser.c /^int parser_read_int($/;" f +parser_read_line ../tools/parser.c /^int parser_read_line($/;" f +parser_read_list_of_doubles ../tools/parser.c /^int parser_read_list_of_doubles($/;" f +parser_read_list_of_integers ../tools/parser.c /^int parser_read_list_of_integers($/;" f +parser_read_list_of_strings ../tools/parser.c /^int parser_read_list_of_strings($/;" f +parser_read_string ../tools/parser.c /^int parser_read_string($/;" f +pba ../include/background.h /^ struct background * pba;$/;" m struct:background_parameters_and_workspace typeref:struct:background_parameters_and_workspace::background +pba ../include/background.h /^ struct background * pba;$/;" m struct:background_parameters_for_distributions typeref:struct:background_parameters_for_distributions::background +pba ../include/input.h /^ struct background * pba;$/;" m struct:input_pprpba typeref:struct:input_pprpba::background +pba ../include/perturbations.h /^ struct background * pba; \/**< pointer to the background structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::background +pba ../include/thermodynamics.h /^ struct background * pba;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::background +perturb_approximations perturbations.c /^int perturb_approximations($/;" f +perturb_derivs perturbations.c /^int perturb_derivs(double tau,$/;" f +perturb_einstein perturbations.c /^int perturb_einstein($/;" f +perturb_find_approximation_number perturbations.c /^int perturb_find_approximation_number($/;" f +perturb_find_approximation_switches perturbations.c /^int perturb_find_approximation_switches($/;" f +perturb_free perturbations.c /^int perturb_free($/;" f +perturb_get_k_list perturbations.c /^int perturb_get_k_list($/;" f +perturb_indices_of_perturbs perturbations.c /^int perturb_indices_of_perturbs($/;" f +perturb_init perturbations.c /^int perturb_init($/;" f +perturb_initial_conditions perturbations.c /^int perturb_initial_conditions(struct precision * ppr,$/;" f +perturb_output_data perturbations.c /^int perturb_output_data($/;" f +perturb_output_file ../include/perturbations.h /^ FILE * perturb_output_file; \/**< filepointer to output file*\/$/;" m struct:perturb_workspace +perturb_output_firstline_and_ic_suffix perturbations.c /^int perturb_output_firstline_and_ic_suffix($/;" f +perturb_output_titles perturbations.c /^int perturb_output_titles($/;" f +perturb_parameters_and_workspace ../include/perturbations.h /^struct perturb_parameters_and_workspace {$/;" s +perturb_prepare_k_output perturbations.c /^int perturb_prepare_k_output(struct background * pba,$/;" f +perturb_print_variables perturbations.c /^int perturb_print_variables(double tau,$/;" f +perturb_rsa_delta_and_theta perturbations.c /^int perturb_rsa_delta_and_theta($/;" f +perturb_rsa_idr_delta_and_theta perturbations.c /^int perturb_rsa_idr_delta_and_theta($/;" f +perturb_solve perturbations.c /^int perturb_solve($/;" f +perturb_sources perturbations.c /^int perturb_sources($/;" f +perturb_sources_at_tau perturbations.c /^int perturb_sources_at_tau($/;" f +perturb_tca_slip_and_shear perturbations.c /^int perturb_tca_slip_and_shear(double * y,$/;" f +perturb_timesampling_for_sources perturbations.c /^int perturb_timesampling_for_sources($/;" f +perturb_timescale perturbations.c /^int perturb_timescale($/;" f +perturb_total_stress_energy perturbations.c /^int perturb_total_stress_energy($/;" f +perturb_vector ../include/perturbations.h /^struct perturb_vector$/;" s +perturb_vector_free perturbations.c /^int perturb_vector_free($/;" f +perturb_vector_init perturbations.c /^int perturb_vector_init($/;" f +perturb_workspace ../include/perturbations.h /^struct perturb_workspace$/;" s +perturb_workspace_free perturbations.c /^int perturb_workspace_free ($/;" f +perturb_workspace_init perturbations.c /^int perturb_workspace_init($/;" f +perturbations_verbose ../include/perturbations.h /^ short perturbations_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:perturbs +perturbs ../include/perturbations.h /^struct perturbs$/;" s +phi ../include/hyperspherical.h /^ double *phi; \/\/array of size nl*nx. [y_{l1}(x1) t_{l1}(x2)...]$/;" m struct:HypersphericalInterpolationStructure +phi_end ../include/primordial.h /^ double phi_end; \/**< value of inflaton at the end of inflation *\/$/;" m struct:primordial +phi_ini_scf ../include/background.h /^ double phi_ini_scf; \/**< \\f$ \\phi(t_0) \\f$: scalar field initial value *\/$/;" m struct:background +phi_max ../include/primordial.h /^ double phi_max; \/**< in inflationary module, value of phi when \\f$ k_{max}=aH \\f$*\/$/;" m struct:primordial +phi_min ../include/primordial.h /^ double phi_min; \/**< in inflationary module, value of phi when \\f$ k_{min}=aH \\f$*\/$/;" m struct:primordial +phi_pivot ../include/primordial.h /^ double phi_pivot; \/**< in inflationary module, value of$/;" m struct:primordial +phi_pivot_method ../include/primordial.h /^ enum phi_pivot_methods phi_pivot_method; \/**< flag for method used to define and find the pivot scale *\/$/;" m struct:primordial typeref:enum:primordial::phi_pivot_methods +phi_pivot_methods ../include/primordial.h /^enum phi_pivot_methods {$/;" g +phi_pivot_target ../include/primordial.h /^ double phi_pivot_target; \/**< For each of the above methods, critical value to be reached between pivot and end of inflation (N_star, [aH]ratio, etc.) *\/$/;" m struct:primordial +phi_prime_ini_scf ../include/background.h /^ double phi_prime_ini_scf; \/**< \\f$ d\\phi(t_0)\/d\\tau \\f$: scalar field initial derivative wrt conformal time *\/$/;" m struct:background +phi_stop ../include/primordial.h /^ double phi_stop; \/**< in inflationary module, value of phi at the end of inflation *\/$/;" m struct:primordial +phiminabs ../include/hyperspherical.h /^ double phiminabs;$/;" m struct:WKB_parameters +phisign ../include/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../include/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../include/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +pinv ../include/sparse.h /^ int *pinv; \/*Inverse row permutation. *\/$/;" m struct:sparse_numerical +pk_def ../include/common.h /^enum pk_def {$/;" g +pk_eq_ddw_and_ddOmega ../include/nonlinear.h /^ double * pk_eq_ddw_and_ddOmega; \/**< table of second derivatives *\/$/;" m struct:nonlinear +pk_eq_size ../include/nonlinear.h /^ int pk_eq_size; \/**< number of indices in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +pk_eq_tau ../include/nonlinear.h /^ double * pk_eq_tau; \/**< table of time values *\/$/;" m struct:nonlinear +pk_eq_tau_size ../include/nonlinear.h /^ int pk_eq_tau_size; \/**< number of times (and raws in table pk_eq_w_and_Omega) *\/$/;" m struct:nonlinear +pk_eq_w_and_Omega ../include/nonlinear.h /^ double * pk_eq_w_and_Omega; \/**< table of background quantites *\/$/;" m struct:nonlinear +pk_linear ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" e enum:pk_outputs +pk_nonlinear ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" e enum:pk_outputs +pk_outputs ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" g +pk_size ../include/nonlinear.h /^ int pk_size; \/**< k_size = total number of pk *\/$/;" m struct:nonlinear +pm ../cpp/ClassEngine.hh /^ struct primordial pm; \/* for primordial spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::primordial +pnl ../include/spectra.h /^ struct nonlinear * pnl; \/**< a pointer to the nonlinear structure is$/;" m struct:spectra typeref:struct:spectra::nonlinear +polynomial ../include/primordial.h /^ polynomial,$/;" e enum:potential_shape +possible_gauges ../include/perturbations.h /^enum possible_gauges {$/;" g +potential ../include/primordial.h /^ enum potential_shape potential;$/;" m struct:primordial typeref:enum:primordial::potential_shape +potential_shape ../include/primordial.h /^enum potential_shape {$/;" g +ppm ../include/primordial.h /^ struct primordial * ppm;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:struct:primordial_inflation_parameters_and_workspace::primordial +ppr ../include/input.h /^ struct precision * ppr;$/;" m struct:input_pprpba typeref:struct:input_pprpba::precision +ppr ../include/perturbations.h /^ struct precision * ppr; \/**< pointer to the precision structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::precision +ppr ../include/thermodynamics.h /^ struct precision * ppr;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::precision +ppt ../include/perturbations.h /^ struct perturbs * ppt; \/**< pointer to the precision structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::perturbs +ppw ../include/perturbations.h /^ struct perturb_workspace * ppw; \/**< workspace defined above *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::perturb_workspace +pr ../cpp/ClassEngine.hh /^ struct precision pr; \/* for precision parameters *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::precision +precision ../include/common.h /^struct precision$/;" s +preco ../include/thermodynamics.h /^ struct recombination * preco;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::recombination +primordial ../include/primordial.h /^struct primordial {$/;" s +primordial_analytic_spectrum primordial.c /^int primordial_analytic_spectrum($/;" f +primordial_analytic_spectrum_init primordial.c /^int primordial_analytic_spectrum_init($/;" f +primordial_external_spectrum_init primordial.c /^int primordial_external_spectrum_init($/;" f +primordial_free primordial.c /^int primordial_free($/;" f +primordial_get_lnk_list primordial.c /^int primordial_get_lnk_list($/;" f +primordial_indices primordial.c /^int primordial_indices($/;" f +primordial_inflation_analytic_spectra primordial.c /^int primordial_inflation_analytic_spectra($/;" f +primordial_inflation_check_hubble primordial.c /^int primordial_inflation_check_hubble($/;" f +primordial_inflation_check_potential primordial.c /^int primordial_inflation_check_potential($/;" f +primordial_inflation_derivs primordial.c /^int primordial_inflation_derivs($/;" f +primordial_inflation_evolve_background primordial.c /^int primordial_inflation_evolve_background($/;" f +primordial_inflation_find_attractor primordial.c /^int primordial_inflation_find_attractor($/;" f +primordial_inflation_find_phi_pivot primordial.c /^int primordial_inflation_find_phi_pivot($/;" f +primordial_inflation_get_epsilon primordial.c /^int primordial_inflation_get_epsilon($/;" f +primordial_inflation_hubble primordial.c /^int primordial_inflation_hubble($/;" f +primordial_inflation_indices primordial.c /^int primordial_inflation_indices($/;" f +primordial_inflation_one_k primordial.c /^int primordial_inflation_one_k($/;" f +primordial_inflation_one_wavenumber primordial.c /^int primordial_inflation_one_wavenumber($/;" f +primordial_inflation_parameters_and_workspace ../include/primordial.h /^struct primordial_inflation_parameters_and_workspace {$/;" s +primordial_inflation_potential primordial.c /^int primordial_inflation_potential($/;" f +primordial_inflation_solve_inflation primordial.c /^int primordial_inflation_solve_inflation($/;" f +primordial_inflation_spectra primordial.c /^int primordial_inflation_spectra($/;" f +primordial_init primordial.c /^int primordial_init($/;" f +primordial_output_data primordial.c /^int primordial_output_data(struct perturbs * ppt,$/;" f +primordial_output_titles primordial.c /^int primordial_output_titles(struct perturbs * ppt,$/;" f +primordial_spec_type ../include/primordial.h /^ enum primordial_spectrum_type primordial_spec_type; \/**< type of primordial spectrum (simple analytic from, integration of inflationary perturbations, etc.) *\/$/;" m struct:primordial typeref:enum:primordial::primordial_spectrum_type +primordial_spectrum_at_k primordial.c /^int primordial_spectrum_at_k($/;" f +primordial_spectrum_type ../include/primordial.h /^enum primordial_spectrum_type {$/;" g +primordial_verbose ../include/primordial.h /^ short primordial_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:primordial +printFC ../cpp/ClassEngine.cc /^void ClassEngine::printFC() {$/;" f class:ClassEngine +proper ../include/primordial.h /^ proper$/;" e enum:time_definition +pt ../cpp/ClassEngine.hh /^ struct perturbs pt; \/* for source functions *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::perturbs +pt_size ../include/perturbations.h /^ int pt_size; \/**< size of perturbation vector *\/$/;" m struct:perturb_vector +pth ../include/perturbations.h /^ struct thermo * pth; \/**< pointer to the thermodynamics structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::thermo +pv ../include/perturbations.h /^ struct perturb_vector * pv; \/**< pointer to vector of integrated$/;" m struct:perturb_workspace typeref:struct:perturb_workspace::perturb_vector +pvecback ../include/background.h /^ double * pvecback;$/;" m struct:background_parameters_and_workspace +pvecback ../include/perturbations.h /^ double * pvecback; \/**< background quantities *\/$/;" m struct:perturb_workspace +pvecback ../include/thermodynamics.h /^ double * pvecback;$/;" m struct:thermodynamics_parameters_and_workspace +pvecmetric ../include/perturbations.h /^ double * pvecmetric; \/**< metric quantities *\/$/;" m struct:perturb_workspace +pvecthermo ../include/perturbations.h /^ double * pvecthermo; \/**< thermodynamics quantities *\/$/;" m struct:perturb_workspace +q ../include/background.h /^ double *q;$/;" m struct:background_parameters_for_distributions +q ../include/sparse.h /^ int *q; \/* Column permutation *\/$/;" m struct:sparse_numerical +q ../include/transfer.h /^ double * q; \/**< list of wavenumber values, q[index_q] *\/$/;" m struct:transfers +q_ncdm ../include/background.h /^ double ** q_ncdm; \/**< Pointers to vectors of perturbation sampling in q *\/$/;" m struct:background +q_ncdm_bg ../include/background.h /^ double ** q_ncdm_bg; \/**< Pointers to vectors of background sampling in q *\/$/;" m struct:background +q_size ../include/transfer.h /^ size_t q_size; \/**< number of wavenumber values *\/$/;" m struct:transfers +q_size_ncdm ../include/background.h /^ int * q_size_ncdm; \/**< Size of the q_ncdm arrays *\/$/;" m struct:background +q_size_ncdm ../include/perturbations.h /^ int* q_size_ncdm; \/**< number of discrete momenta (for each ncdm species) *\/$/;" m struct:perturb_vector +q_size_ncdm_bg ../include/background.h /^ int * q_size_ncdm_bg; \/**< Size of the q_ncdm_bg arrays *\/$/;" m struct:background +qm_Laguerre ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_auto ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_trapz ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_trapz_indefinite ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qss_node ../include/quadrature.h /^} qss_node;$/;" t typeref:struct:adaptive_integration_tree_node +quadrature_gauss_legendre ../tools/quadrature.c /^int quadrature_gauss_legendre($/;" f +quadrature_in_rectangle ../tools/quadrature.c /^int quadrature_in_rectangle($/;" f +r ../include/primordial.h /^ double r; \/**< usual tensor to scalar ratio of power spectra, \\f$ r=A_T\/A_S=P_h\/P_R \\f$*\/$/;" m struct:primordial +ra_rec ../include/thermodynamics.h /^ double ra_rec; \/**< conformal angular diameter distance to recombination *\/$/;" m struct:thermo +ra_star ../include/thermodynamics.h /^ double ra_star; \/**< conformal angular diameter distance to z_star *\/$/;" m struct:thermo +radial_function_type ../include/transfer.h /^ NC_RSD} radial_function_type;$/;" t typeref:enum:__anon2 +rd_rec ../include/thermodynamics.h /^ double rd_rec; \/**< comoving photon damping scale at recombination *\/$/;" m struct:thermo +rd_star ../include/thermodynamics.h /^ double rd_star; \/**< comoving photon damping scale at z_star *\/$/;" m struct:thermo +re_size ../include/thermodynamics.h /^ int re_size; \/**< size of this vector *\/$/;" m struct:recombination +re_size ../include/thermodynamics.h /^ int re_size; \/**< size of this vector *\/$/;" m struct:reionization +reachr ../tools/sparse.c /^int reachr(sp_mat *G, sp_mat *B,int k, int *xik,int *pinv){$/;" f +read ../include/parser.h /^ short * read; \/**< set to _TRUE_ if this parameter is effectively read *\/$/;" m struct:file_content +recfast ../include/thermodynamics.h /^ recfast,$/;" e enum:recombination_algorithm +recombination ../include/thermodynamics.h /^ enum recombination_algorithm recombination; \/**< recombination code *\/$/;" m struct:thermo typeref:enum:thermo::recombination_algorithm +recombination ../include/thermodynamics.h /^struct recombination {$/;" s +recombination_algorithm ../include/thermodynamics.h /^enum recombination_algorithm {$/;" g +recombination_table ../include/thermodynamics.h /^ double * recombination_table; \/**< table recombination_table[index_z*preco->re_size+index_re] with all other quantities (array of size preco->rt_size*preco->re_size) *\/$/;" m struct:recombination +reduce_tree ../tools/quadrature.c /^int reduce_tree(qss_node *node, int level){$/;" f +reio_bins_tanh ../include/thermodynamics.h /^ reio_bins_tanh, \/**< binned reionization history with tanh inteprolation between bins *\/$/;" e enum:reionization_parametrization +reio_camb ../include/thermodynamics.h /^ reio_camb, \/**< reionization parameterized like in CAMB *\/$/;" e enum:reionization_parametrization +reio_half_tanh ../include/thermodynamics.h /^ reio_half_tanh, \/**< half a tanh, instead of the full tanh *\/$/;" e enum:reionization_parametrization +reio_inter ../include/thermodynamics.h /^ reio_inter \/**< linear interpolation between specified points *\/$/;" e enum:reionization_parametrization +reio_inter_num ../include/thermodynamics.h /^ int reio_inter_num; \/**< with how many jumps do we want to describe reionization? *\/$/;" m struct:thermo +reio_inter_xe ../include/thermodynamics.h /^ double * reio_inter_xe; \/**< discrete \\f$ X_e(z)\\f$ values *\/$/;" m struct:thermo +reio_inter_z ../include/thermodynamics.h /^ double * reio_inter_z; \/**< discrete z values *\/$/;" m struct:thermo +reio_many_tanh ../include/thermodynamics.h /^ reio_many_tanh, \/**< similar to reio_camb but with more than one tanh *\/$/;" e enum:reionization_parametrization +reio_none ../include/thermodynamics.h /^ reio_none, \/**< no reionization *\/$/;" e enum:reionization_parametrization +reio_num_params ../include/thermodynamics.h /^ int reio_num_params; \/**< length of vector reionization_parameters *\/$/;" m struct:reionization +reio_num_z ../include/thermodynamics.h /^ int reio_num_z; \/**< number of reionization jumps *\/$/;" m struct:reionization +reio_parametrization ../include/thermodynamics.h /^ enum reionization_parametrization reio_parametrization; \/**< reionization scheme *\/$/;" m struct:thermo typeref:enum:thermo::reionization_parametrization +reio_tau ../include/thermodynamics.h /^ reio_tau \/**< input = tau *\/$/;" e enum:reionization_z_or_tau +reio_z ../include/thermodynamics.h /^ reio_z, \/**< input = redshift *\/$/;" e enum:reionization_z_or_tau +reio_z_or_tau ../include/thermodynamics.h /^ enum reionization_z_or_tau reio_z_or_tau; \/**< is the input parameter the reionization redshift or optical depth? *\/$/;" m struct:thermo typeref:enum:thermo::reionization_z_or_tau +reionization ../include/thermodynamics.h /^struct reionization {$/;" s +reionization_exponent ../include/thermodynamics.h /^ double reionization_exponent; \/**< shape of H reionization *\/$/;" m struct:thermo +reionization_optical_depth ../include/thermodynamics.h /^ double reionization_optical_depth; \/**< reionization optical depth inferred from reionization history *\/$/;" m struct:reionization +reionization_parameters ../include/thermodynamics.h /^ double * reionization_parameters; \/**< vector containing all reionization parameters necessary to compute xe(z) *\/$/;" m struct:reionization +reionization_parametrization ../include/thermodynamics.h /^enum reionization_parametrization {$/;" g +reionization_table ../include/thermodynamics.h /^ double * reionization_table; \/**< table reionization_table[index_z*preio->re_size+index_re] with all other quantities (array of size preio->rt_size*preio->re_size) *\/$/;" m struct:reionization +reionization_width ../include/thermodynamics.h /^ double reionization_width; \/**< width of H reionization *\/$/;" m struct:thermo +reionization_z_or_tau ../include/thermodynamics.h /^enum reionization_z_or_tau {$/;" g +repeated_pattern ../include/evolver_ndf15.h /^ int repeated_pattern;$/;" m struct:jacobian +required_computation_stage ../include/input.h /^ enum computation_stage required_computation_stage;$/;" m struct:fzerofun_workspace typeref:enum:fzerofun_workspace::computation_stage +rho_plus_p_shear ../include/perturbations.h /^ double rho_plus_p_shear; \/**< total (rho+p)*shear (gives delta Tij) *\/$/;" m struct:perturb_workspace +rho_plus_p_theta ../include/perturbations.h /^ double rho_plus_p_theta; \/**< total (rho+p)*theta perturbation (gives delta Toi) *\/$/;" m struct:perturb_workspace +rho_plus_p_theta_fld ../include/perturbations.h /^ double rho_plus_p_theta_fld; \/**< velocity divergence of fluid, not so trivial in PPF scheme *\/$/;" m struct:perturb_workspace +rho_plus_p_tot ../include/perturbations.h /^ double rho_plus_p_tot; \/**< total (rho+p) (used to infer theta_tot from rho_plus_p_theta) *\/$/;" m struct:perturb_workspace +right ../include/quadrature.h /^ struct adaptive_integration_tree_node *left, *right; \/* Pointer to left child. *\/$/;" m struct:adaptive_integration_tree_node typeref:struct:adaptive_integration_tree_node:: +right_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +rk ../include/common.h /^ rk, \/* Runge-Kutta integrator *\/$/;" e enum:evolver_type +rkck ../tools/dei_rkck.c /^int rkck($/;" f +rkqs ../tools/dei_rkck.c /^int rkqs(double *x, double htry, double eps,$/;" f +root ../include/output.h /^ char root[_FILENAMESIZE_-32]; \/**< root for all file names *\/$/;" m struct:output +rs_d ../include/thermodynamics.h /^ double rs_d; \/**< comoving sound horizon at baryon drag *\/$/;" m struct:thermo +rs_drag ../cpp/ClassEngine.hh /^ inline double rs_drag() const {return th.rs_d;} $/;" f class:ClassEngine +rs_rec ../include/thermodynamics.h /^ double rs_rec; \/**< comoving sound horizon at recombination *\/$/;" m struct:thermo +rs_star ../include/thermodynamics.h /^ double rs_star; \/**< comoving sound horizon at z_star *\/$/;" m struct:thermo +rsa_MD ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_MD_with_reio ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_delta_g ../include/perturbations.h /^ double rsa_delta_g; \/**< photon density in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_delta_idr ../include/perturbations.h /^ double rsa_delta_idr; \/**< interacting dark radiation density in dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_delta_ur ../include/perturbations.h /^ double rsa_delta_ur; \/**< photon density in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_flags ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" g +rsa_idr_MD ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" e enum:rsa_idr_method +rsa_idr_flags ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" g +rsa_idr_method ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" g +rsa_idr_none ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" e enum:rsa_idr_method +rsa_idr_off ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" e enum:rsa_idr_flags +rsa_idr_on ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" e enum:rsa_idr_flags +rsa_method ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" g +rsa_none ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_null ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_off ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" e enum:rsa_flags +rsa_on ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" e enum:rsa_flags +rsa_theta_g ../include/perturbations.h /^ double rsa_theta_g; \/**< photon velocity in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_theta_idr ../include/perturbations.h /^ double rsa_theta_idr; \/**< interacting dark radiation velocity in dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_theta_ur ../include/perturbations.h /^ double rsa_theta_ur; \/**< photon velocity in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rt_size ../include/thermodynamics.h /^ int rt_size; \/**< number of lines (redshift steps) in the table *\/$/;" m struct:reionization +rt_size ../include/thermodynamics.h /^ int rt_size; \/**< number of lines (redshift steps) in the table *\/$/;" m struct:recombination +rtab ../include/nonlinear.h /^ double * rtab; \/** List of R values *\/$/;" m struct:nonlinear_workspace +running ../include/primordial.h /^ double ** running; \/**< all runnings in matrix form: running[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +s_l ../include/perturbations.h /^ double * s_l; \/**< array of freestreaming coefficients \\f$ s_l = \\sqrt{1-K*(l^2-1)\/k^2} \\f$*\/$/;" m struct:perturb_workspace +scalar_perturbations_data ../include/perturbations.h /^ double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for scalars *\/$/;" m struct:perturbs +scalar_titles ../include/perturbations.h /^ char scalar_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for scalar perturbation output files. *\/$/;" m struct:perturbs +scf_parameters ../include/background.h /^ double * scf_parameters; \/**< list of parameters describing the scalar field potential *\/$/;" m struct:background +scf_parameters_size ../include/background.h /^ int scf_parameters_size; \/**< size of scf_parameters *\/$/;" m struct:background +scf_tuning_index ../include/background.h /^ int scf_tuning_index; \/**< index in scf_parameters used for tuning *\/$/;" m struct:background +second_order_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +second_order_CRS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +selection ../include/perturbations.h /^ enum selection_type selection; \/**< type of selection functions *\/$/;" m struct:perturbs typeref:enum:perturbs::selection_type +selection_bias ../include/transfer.h /^ double selection_bias[_SELECTION_NUM_MAX_]; \/**< light-to-mass bias in the transfer function of density number count *\/$/;" m struct:transfers +selection_delta_tau ../include/perturbations.h /^ double selection_delta_tau; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_function ../include/perturbations.h /^ double * selection_function; \/**< selection function W(tau), normalized to \\f$ \\int W(tau) dtau=1 \\f$, stored in selection_function[bin*ppt->tau_size+index_tau] *\/$/;" m struct:perturbs +selection_magnification_bias ../include/transfer.h /^ double selection_magnification_bias[_SELECTION_NUM_MAX_]; \/**< magnification bias in the transfer function of density number count *\/$/;" m struct:transfers +selection_max_of_tau_max ../include/perturbations.h /^ double selection_max_of_tau_max; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_mean ../include/perturbations.h /^ double selection_mean[_SELECTION_NUM_MAX_]; \/**< centers of selection functions *\/$/;" m struct:perturbs +selection_min_of_tau_min ../include/perturbations.h /^ double selection_min_of_tau_min; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_num ../include/perturbations.h /^ int selection_num; \/**< number of selection functions$/;" m struct:perturbs +selection_tau ../include/perturbations.h /^ double * selection_tau; \/**< value of conformal time at the center of each bin *\/$/;" m struct:perturbs +selection_tau_max ../include/perturbations.h /^ double * selection_tau_max; \/**< value of conformal time above which W(tau) is considered to vanish for each bin *\/$/;" m struct:perturbs +selection_tau_min ../include/perturbations.h /^ double * selection_tau_min; \/**< value of conformal time below which W(tau) is considered to vanish for each bin *\/$/;" m struct:perturbs +selection_type ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" g +selection_width ../include/perturbations.h /^ double selection_width[_SELECTION_NUM_MAX_]; \/**< widths of selection functions *\/$/;" m struct:perturbs +sgnK ../include/background.h /^ int sgnK; \/**< K\/|K|: -1, 0 or 1 *\/$/;" m struct:background +sgnK ../include/transfer.h /^ int sgnK; \/**< 0 (flat), 1 (positive curvature, spherical, closed), -1 (negative curvature, hyperbolic, open) *\/$/;" m struct:transfer_workspace +shear_ncdm ../include/perturbations.h /^ double * shear_ncdm; \/**< shear for each ncdm species *\/$/;" m struct:perturb_workspace +shooting_error ../include/background.h /^ ErrorMsg shooting_error; \/**< Error message from shooting failed. *\/$/;" m struct:background +shooting_failed ../include/background.h /^ short shooting_failed; \/**< flag is set to true if shooting failed. *\/$/;" m struct:background +short_info ../include/background.h /^ short short_info; \/**< flag for calling background_at_eta and return little information *\/$/;" m struct:background +sigma8 ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +sigma8 ../include/nonlinear.h /^ double * sigma8; \/**< sigma8[index_pk] *\/$/;" m struct:nonlinear +sigma_8 ../include/nonlinear.h /^ double ** sigma_8;$/;" m struct:nonlinear_workspace +sigma_disp ../include/nonlinear.h /^ double ** sigma_disp;$/;" m struct:nonlinear_workspace +sigma_disp_100 ../include/nonlinear.h /^ double ** sigma_disp_100;$/;" m struct:nonlinear_workspace +sigma_prime ../include/nonlinear.h /^ double ** sigma_prime;$/;" m struct:nonlinear_workspace +sinK ../include/hermite3_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../include/hermite4_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +sinK ../include/hyperspherical.h /^ double *sinK; \/\/Vector of sin_K(xvec)$/;" m struct:HypersphericalInterpolationStructure +sinK ../tools/hermite3_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../tools/hermite4_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +sinKm ../include/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +sinKm ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKm ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm ../tools/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +sinKm ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKm ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm2 ../include/hermite3_interpolation_csource.h /^double sinKm2;$/;" v +sinKm2 ../include/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKm2 ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm2 ../tools/hermite3_interpolation_csource.h /^double sinKm2;$/;" v +sinKm2 ../tools/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKm2 ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp ../include/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +sinKp ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKp ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp ../tools/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +sinKp ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKp ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp2 ../include/hermite3_interpolation_csource.h /^double sinKp2;$/;" v +sinKp2 ../include/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKp2 ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp2 ../tools/hermite3_interpolation_csource.h /^double sinKp2;$/;" v +sinKp2 ../tools/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKp2 ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sine_integral ../tools/trigonometric_integrals.c /^int sine_integral($/;" f +size ../cpp/ClassEngine.hh /^ inline unsigned size() const {return pars.size();}$/;" f class:ClassParams +size ../include/parser.h /^ int size;$/;" m struct:file_content +size_scalar_perturbation_data ../include/perturbations.h /^ int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of scalar double pointers *\/$/;" m struct:perturbs +size_tensor_perturbation_data ../include/perturbations.h /^ int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of tensor double pointers *\/$/;" m struct:perturbs +size_vector_perturbation_data ../include/perturbations.h /^ int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of vector double pointers *\/$/;" m struct:perturbs +smallest_allowed_variation ../include/common.h /^ double smallest_allowed_variation; \/**< machine-dependent, assigned automatically by the code *\/$/;" m struct:precision +sort_x_and_w ../tools/quadrature.c /^int sort_x_and_w(double *x, double *w, double *workx, double *workw, int startidx, int endidx){$/;" f +source_extrapolation ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" g +sources ../include/perturbations.h /^ double *** sources; \/**< Pointer towards the source interpolation table$/;" m struct:perturbs +sources ../include/transfer.h /^ double * sources; \/**< sources[index_tau]: sources$/;" m struct:transfer_workspace +sp ../cpp/ClassEngine.hh /^ struct spectra sp; \/* for output spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::spectra +spJ ../include/evolver_ndf15.h /^ sp_mat *spJ; \/* Stores the matrix we want to decompose *\/$/;" m struct:jacobian +sp_amd ../tools/sparse.c /^int sp_amd(int *Cp, int *Ci, int n, int nzmax, int *P, int *W){$/;" f +sp_ludcmp ../tools/sparse.c /^int sp_ludcmp(sp_num *N, sp_mat *A, double pivtol){$/;" f +sp_lusolve ../tools/sparse.c /^int sp_lusolve(sp_num *N, double *b, double *x){$/;" f +sp_mat ../include/sparse.h /^} sp_mat;$/;" t typeref:struct:sparse_matrix +sp_mat_alloc ../tools/sparse.c /^int sp_mat_alloc(sp_mat** A, int ncols, int nrows, int maxnz, ErrorMsg error_message){$/;" f +sp_mat_free ../tools/sparse.c /^int sp_mat_free(sp_mat *A){$/;" f +sp_num ../include/sparse.h /^} sp_num;$/;" t typeref:struct:sparse_numerical +sp_num_alloc ../tools/sparse.c /^int sp_num_alloc(sp_num** N, int n, ErrorMsg error_message){$/;" f +sp_num_free ../tools/sparse.c /^int sp_num_free(sp_num *N){$/;" f +sp_refactor ../tools/sparse.c /^int sp_refactor(sp_num *N, sp_mat *A){$/;" f +sp_splsolve ../tools/sparse.c /^int sp_splsolve(sp_mat *G, sp_mat *B, int k, int*xik, int top, double *x, int *pinv){$/;" f +sp_tdfs ../tools/sparse.c /^int sp_tdfs(int j, int k, int *head, const int *next, int *post, int *stack){$/;" f +sp_wclear ../tools/sparse.c /^int sp_wclear(int mark, int lemax, int *w, int n){$/;" f +sparse_matrix ../include/sparse.h /^typedef struct sparse_matrix{$/;" s +sparse_numerical ../include/sparse.h /^typedef struct sparse_numerical{$/;" s +sparse_stuff_initialized ../include/evolver_ndf15.h /^ int sparse_stuff_initialized;$/;" m struct:jacobian +spatial_curvature ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" g +spectra ../include/spectra.h /^struct spectra {$/;" s +spectra_cl_at_l spectra.c /^int spectra_cl_at_l($/;" f +spectra_cls spectra.c /^int spectra_cls($/;" f +spectra_compute_cl spectra.c /^int spectra_compute_cl($/;" f +spectra_fast_pk_at_kvec_and_zvec spectra.c /^int spectra_fast_pk_at_kvec_and_zvec($/;" f +spectra_free spectra.c /^int spectra_free($/;" f +spectra_indices spectra.c /^int spectra_indices($/;" f +spectra_init spectra.c /^int spectra_init($/;" f +spectra_pk_at_k_and_z spectra.c /^int spectra_pk_at_k_and_z($/;" f +spectra_pk_at_z spectra.c /^int spectra_pk_at_z($/;" f +spectra_pk_nl_at_k_and_z spectra.c /^int spectra_pk_nl_at_k_and_z($/;" f +spectra_pk_nl_at_z spectra.c /^int spectra_pk_nl_at_z($/;" f +spectra_sigma spectra.c /^int spectra_sigma($/;" f +spectra_sigma_cb spectra.c /^int spectra_sigma_cb($/;" f +spectra_tk_at_k_and_z spectra.c /^int spectra_tk_at_k_and_z($/;" f +spectra_tk_at_z spectra.c /^int spectra_tk_at_z($/;" f +spectra_verbose ../include/spectra.h /^ short spectra_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:spectra +stab ../include/nonlinear.h /^ double * stab; \/** List of Sigma Values *\/$/;" m struct:nonlinear_workspace +stepmin ../include/dei_rkck.h /^ double stepmin;$/;" m struct:generic_integrator_workspace +store_perturbations ../include/perturbations.h /^ int store_perturbations; \/**< Do we want to store perturbations? *\/$/;" m struct:perturbs +str ../cpp/ClassEngine.cc /^std::string str (const char* s){return string(s);}$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const bool &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const double &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const float &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const std::string &x) {return x;}$/;" f +str ../cpp/ClassEngine.cc /^template std::string str(const T &x){$/;" f +switch_dop ../include/perturbations.h /^ int switch_dop; \/**< in temperature calculation, do we want to include the Doppler term? *\/$/;" m struct:perturbs +switch_eisw ../include/perturbations.h /^ int switch_eisw; \/**< in temperature calculation, do we want to include the early integrated Sachs Wolfe term? *\/$/;" m struct:perturbs +switch_lisw ../include/perturbations.h /^ int switch_lisw; \/**< in temperature calculation, do we want to include the late integrated Sachs Wolfe term? *\/$/;" m struct:perturbs +switch_pol ../include/perturbations.h /^ int switch_pol; \/**< in temperature calculation, do we want to include the polarization-related term? *\/$/;" m struct:perturbs +switch_sw ../include/perturbations.h /^ int switch_sw; \/**< in temperature calculation, do we want to include the intrinsic temperature + Sachs Wolfe term? *\/$/;" m struct:perturbs +synchronous ../include/perturbations.h /^ synchronous \/**< synchronous gauge with \\f$ \\theta_{cdm} = 0 \\f$ by convention *\/$/;" e enum:possible_gauges +sz ../include/growTable.h /^ long sz; \/**< total size *\/$/;" m struct:__anon1 +tablesize ../include/background.h /^ int tablesize;$/;" m struct:background_parameters_for_distributions +target_name ../include/input.h /^ enum target_names * target_name;$/;" m struct:fzerofun_workspace typeref:enum:fzerofun_workspace::target_names +target_names ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" g +target_quantity ../include/primordial.h /^enum target_quantity {$/;" g +target_size ../include/input.h /^ int target_size;$/;" m struct:fzerofun_workspace +target_value ../include/input.h /^ double * target_value;$/;" m struct:fzerofun_workspace +tau ../include/nonlinear.h /^ double * tau; \/**< tau[index_tau] = list of time values, covering$/;" m struct:nonlinear +tau0_minus_tau ../include/transfer.h /^ double * tau0_minus_tau; \/**< tau0_minus_tau[index_tau]: values of (tau0 - tau) *\/$/;" m struct:transfer_workspace +tau0_minus_tau_cut ../include/transfer.h /^ double tau0_minus_tau_cut; \/**< critical value of (tau0-tau) in time cut approximation for the wavenumber at hand *\/$/;" m struct:transfer_workspace +tau_cut ../include/thermodynamics.h /^ double tau_cut; \/**< at at which the visibility goes below a fixed fraction of the maximum visibility, used for an approximation in perturbation module *\/$/;" m struct:thermo +tau_d ../include/thermodynamics.h /^ double tau_d; \/**< baryon drag time *\/$/;" m struct:thermo +tau_eq ../include/background.h /^ double tau_eq; \/**< conformal time at radiation\/matter equality [Mpc] *\/$/;" m struct:background +tau_free_streaming ../include/thermodynamics.h /^ double tau_free_streaming; \/**< minimum value of tau at which free-streaming approximation can be switched on *\/$/;" m struct:thermo +tau_idr_free_streaming ../include/thermodynamics.h /^ double tau_idr_free_streaming; \/**< trigger for dark radiation free streaming approximation (idm-idr) *\/$/;" m struct:thermo +tau_ini ../include/thermodynamics.h /^ double tau_ini; \/**< initial conformal time at which thermodynamical variables have been be integrated *\/$/;" m struct:thermo +tau_rec ../include/thermodynamics.h /^ double tau_rec; \/**< conformal time at which the visibility reaches its maximum (= recombination time) *\/$/;" m struct:thermo +tau_reio ../include/thermodynamics.h /^ double tau_reio; \/**< if above set to tau, input value of reionization optical depth *\/$/;" m struct:thermo +tau_sampling ../include/perturbations.h /^ double * tau_sampling; \/**< array of tau values *\/$/;" m struct:perturbs +tau_size ../include/nonlinear.h /^ int tau_size; \/**< tau_size = number of values *\/$/;" m struct:nonlinear +tau_size ../include/perturbations.h /^ int tau_size; \/**< number of values in this array *\/$/;" m struct:perturbs +tau_size ../include/transfer.h /^ int tau_size; \/**< number of discrete time values for a given type *\/$/;" m struct:transfer_workspace +tau_size_max ../include/transfer.h /^ int tau_size_max; \/**< maximum number of discrete time values for all types *\/$/;" m struct:transfer_workspace +tau_star ../include/thermodynamics.h /^ double tau_star;\/**< confirmal time at which photon optical depth crosses one *\/$/;" m struct:thermo +tau_table ../include/background.h /^ double * tau_table; \/**< vector tau_table[index_tau] with values of \\f$ \\tau \\f$ (conformal time) *\/$/;" m struct:background +tautable ../include/nonlinear.h /^ double * tautable;$/;" m struct:nonlinear_workspace +tca_flags ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" g +tca_idm_dr_flags ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" g +tca_idm_dr_off ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" e enum:tca_idm_dr_flags +tca_idm_dr_on ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" e enum:tca_idm_dr_flags +tca_method ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" g +tca_off ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" e enum:tca_flags +tca_on ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" e enum:tca_flags +tca_shear_g ../include/perturbations.h /^ double tca_shear_g; \/**< photon shear in tight-coupling approximation *\/$/;" m struct:perturb_workspace +tca_shear_idm_dr ../include/perturbations.h /^ double tca_shear_idm_dr;\/**< interacting dark radiation shear in tight coupling appproximation *\/$/;" m struct:perturb_workspace +tca_slip ../include/perturbations.h /^ double tca_slip; \/**< photon-baryon slip in tight-coupling approximation *\/$/;" m struct:perturb_workspace +tensor_method ../include/perturbations.h /^ enum tensor_methods tensor_method; \/**< way to treat neutrinos in tensor perturbations(neglect, approximate as massless, take exact equations) *\/$/;" m struct:perturbs typeref:enum:perturbs::tensor_methods +tensor_methods ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" g +tensor_perturbations_data ../include/perturbations.h /^ double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for tensors *\/$/;" m struct:perturbs +tensor_titles ../include/perturbations.h /^ char tensor_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for tensor perturbation output files. *\/$/;" m struct:perturbs +th ../cpp/ClassEngine.hh /^ struct thermo th; \/* for thermodynamics *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::thermo +th_size ../include/thermodynamics.h /^ int th_size; \/**< size of thermodynamics vector *\/$/;" m struct:thermo +thermo ../include/thermodynamics.h /^struct thermo$/;" s +thermodynamics_at_z thermodynamics.c /^int thermodynamics_at_z($/;" f +thermodynamics_derivs_with_recfast thermodynamics.c /^int thermodynamics_derivs_with_recfast($/;" f +thermodynamics_energy_injection thermodynamics.c /^int thermodynamics_energy_injection($/;" f +thermodynamics_free thermodynamics.c /^int thermodynamics_free($/;" f +thermodynamics_get_xe_before_reionization thermodynamics.c /^int thermodynamics_get_xe_before_reionization($/;" f +thermodynamics_helium_from_bbn thermodynamics.c /^int thermodynamics_helium_from_bbn($/;" f +thermodynamics_indices thermodynamics.c /^int thermodynamics_indices($/;" f +thermodynamics_init thermodynamics.c /^int thermodynamics_init($/;" f +thermodynamics_merge_reco_and_reio thermodynamics.c /^int thermodynamics_merge_reco_and_reio($/;" f +thermodynamics_onthespot_energy_injection thermodynamics.c /^int thermodynamics_onthespot_energy_injection($/;" f +thermodynamics_output_data thermodynamics.c /^int thermodynamics_output_data(struct background * pba,$/;" f +thermodynamics_output_titles thermodynamics.c /^int thermodynamics_output_titles(struct background * pba,$/;" f +thermodynamics_parameters_and_workspace ../include/thermodynamics.h /^struct thermodynamics_parameters_and_workspace {$/;" s +thermodynamics_recombination thermodynamics.c /^int thermodynamics_recombination($/;" f +thermodynamics_recombination_with_hyrec thermodynamics.c /^int thermodynamics_recombination_with_hyrec($/;" f +thermodynamics_recombination_with_recfast thermodynamics.c /^int thermodynamics_recombination_with_recfast($/;" f +thermodynamics_reionization thermodynamics.c /^int thermodynamics_reionization($/;" f +thermodynamics_reionization_function thermodynamics.c /^int thermodynamics_reionization_function($/;" f +thermodynamics_reionization_sample thermodynamics.c /^int thermodynamics_reionization_sample($/;" f +thermodynamics_table ../include/thermodynamics.h /^ double * thermodynamics_table; \/**< table thermodynamics_table[index_z*pth->tt_size+pba->index_th] with all other quantities (array of size th_size*tt_size) *\/$/;" m struct:thermo +thermodynamics_tanh thermodynamics.c /^int thermodynamics_tanh(double x,$/;" f +thermodynamics_verbose ../include/thermodynamics.h /^ short thermodynamics_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:thermo +theta_cb ../include/perturbations.h /^ double theta_cb; \/**< velocity divergence theta of only cdm and baryon *\/$/;" m struct:perturb_workspace +theta_m ../include/perturbations.h /^ double theta_m; \/**< velocity divergence theta of all non-relativistic species *\/$/;" m struct:perturb_workspace +theta_ncdm ../include/perturbations.h /^ double * theta_ncdm; \/**< velocity divergence theta of each ncdm species *\/$/;" m struct:perturb_workspace +theta_s ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +three_ceff2_ur ../include/perturbations.h /^ double three_ceff2_ur;\/**< 3 x effective squared sound speed for the ultrarelativistic perturbations *\/$/;" m struct:perturbs +three_cvis2_ur ../include/perturbations.h /^ double three_cvis2_ur;\/**< 3 x effective viscosity parameter for the ultrarelativistic perturbations *\/$/;" m struct:perturbs +tilt ../include/primordial.h /^ double ** tilt; \/**< all tilts in matrix form: tilt[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +time ../include/primordial.h /^ enum time_definition time;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:enum:primordial_inflation_parameters_and_workspace::time_definition +time_definition ../include/primordial.h /^enum time_definition {$/;" g +tm_exact ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tm_massless_approximation ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tm_photons_only ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tmp ../include/evolver_ndf15.h /^ double * tmp;$/;" m struct:numjac_workspace +tophat ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +topvec ../include/sparse.h /^ int *topvec; \/*topvec[k] holds the first index in xi[k].*\/$/;" m struct:sparse_numerical +tp_size ../include/perturbations.h /^ int * tp_size; \/**< number of types tp_size[index_md] included in computation for each mode *\/$/;" m struct:perturbs +tr ../cpp/ClassEngine.hh /^ struct transfers tr; \/* for transfer functions *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::transfers +transfer ../include/transfer.h /^ double ** transfer; \/**< table of transfer functions for each mode, initial condition, type, multipole and wavenumber, with argument transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) * ptr->l_size[index_md] + index_l) * ptr->q_size + index_q] *\/$/;" m struct:transfers +transfer_can_be_neglected transfer.c /^int transfer_can_be_neglected($/;" f +transfer_compute_for_each_l transfer.c /^int transfer_compute_for_each_l($/;" f +transfer_compute_for_each_q transfer.c /^int transfer_compute_for_each_q($/;" f +transfer_dNdz_analytic transfer.c /^int transfer_dNdz_analytic($/;" f +transfer_f_evo transfer.c /^int transfer_f_evo($/;" f +transfer_free transfer.c /^int transfer_free($/;" f +transfer_free_source_correspondence transfer.c /^int transfer_free_source_correspondence($/;" f +transfer_functions_at_q transfer.c /^int transfer_functions_at_q($/;" f +transfer_get_k_list transfer.c /^int transfer_get_k_list($/;" f +transfer_get_l_list transfer.c /^int transfer_get_l_list($/;" f +transfer_get_lmax transfer.c /^int transfer_get_lmax(int (*get_xmin_generic)(int sgnK,$/;" f +transfer_get_q_list transfer.c /^int transfer_get_q_list($/;" f +transfer_get_source_correspondence transfer.c /^int transfer_get_source_correspondence($/;" f +transfer_global_selection_read transfer.c /^int transfer_global_selection_read($/;" f +transfer_indices_of_transfers transfer.c /^int transfer_indices_of_transfers($/;" f +transfer_init transfer.c /^int transfer_init($/;" f +transfer_integrate transfer.c /^int transfer_integrate($/;" f +transfer_interpolate_sources transfer.c /^int transfer_interpolate_sources($/;" f +transfer_late_source_can_be_neglected transfer.c /^int transfer_late_source_can_be_neglected($/;" f +transfer_lensing_sampling transfer.c /^int transfer_lensing_sampling($/;" f +transfer_limber transfer.c /^int transfer_limber($/;" f +transfer_limber2 transfer.c /^int transfer_limber2($/;" f +transfer_limber_interpolate transfer.c /^int transfer_limber_interpolate($/;" f +transfer_perturbation_copy_sources_and_nl_corrections transfer.c /^int transfer_perturbation_copy_sources_and_nl_corrections($/;" f +transfer_perturbation_source_spline transfer.c /^int transfer_perturbation_source_spline($/;" f +transfer_perturbation_sources_free transfer.c /^int transfer_perturbation_sources_free($/;" f +transfer_perturbation_sources_spline_free transfer.c /^int transfer_perturbation_sources_spline_free($/;" f +transfer_precompute_selection transfer.c /^int transfer_precompute_selection($/;" f +transfer_radial_coordinates transfer.c /^int transfer_radial_coordinates($/;" f +transfer_radial_function transfer.c /^int transfer_radial_function($/;" f +transfer_select_radial_function transfer.c /^int transfer_select_radial_function($/;" f +transfer_selection_compute transfer.c /^int transfer_selection_compute($/;" f +transfer_selection_function transfer.c /^int transfer_selection_function($/;" f +transfer_selection_sampling transfer.c /^int transfer_selection_sampling($/;" f +transfer_selection_times transfer.c /^int transfer_selection_times($/;" f +transfer_source_resample transfer.c /^int transfer_source_resample($/;" f +transfer_source_tau_size transfer.c /^int transfer_source_tau_size($/;" f +transfer_source_tau_size_max transfer.c /^int transfer_source_tau_size_max($/;" f +transfer_sources transfer.c /^int transfer_sources($/;" f +transfer_update_HIS transfer.c /^int transfer_update_HIS($/;" f +transfer_use_limber transfer.c /^int transfer_use_limber($/;" f +transfer_verbose ../include/transfer.h /^ short transfer_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:transfers +transfer_workspace ../include/transfer.h /^struct transfer_workspace {$/;" s +transfer_workspace_free transfer.c /^int transfer_workspace_free($/;" f +transfer_workspace_init transfer.c /^int transfer_workspace_init($/;" f +transfers ../include/transfer.h /^struct transfers {$/;" s +trig_order ../include/hyperspherical.h /^ int trig_order; \/\/Order of the interpolation formula for SinK and CosK.$/;" m struct:HypersphericalInterpolationStructure +trust_sparse ../include/evolver_ndf15.h /^ int trust_sparse; \/* Number of times a pattern is repeated (actually included) before we trust it. *\/$/;" m struct:jacobian +tt_size ../include/thermodynamics.h /^ int tt_size; \/**< number of lines (redshift steps) in the tables *\/$/;" m struct:thermo +tt_size ../include/transfer.h /^ int * tt_size; \/**< number of requested transfer types tt_size[index_md] for each mode *\/$/;" m struct:transfers +two_scales ../include/primordial.h /^ two_scales,$/;" e enum:primordial_spectrum_type +ufa_CLASS ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_flags ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" g +ufa_hu ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_mb ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_method ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" g +ufa_none ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_off ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" e enum:ufa_flags +ufa_on ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" e enum:ufa_flags +uninitialize_jacobian ../tools/evolver_ndf15.c /^int uninitialize_jacobian(struct jacobian *jac){$/;" f +uninitialize_numjac_workspace ../tools/evolver_ndf15.c /^int uninitialize_numjac_workspace(struct numjac_workspace * nj_ws){$/;" f +unknown_parameters_index ../include/input.h /^ int * unknown_parameters_index;$/;" m struct:fzerofun_workspace +updateParValues ../cpp/ClassEngine.cc /^bool ClassEngine::updateParValues(const std::vector& par){$/;" f class:ClassEngine +use_ppf ../include/background.h /^ short use_ppf; \/**< flag switching on PPF perturbation equations$/;" m struct:background +use_sparse ../include/evolver_ndf15.h /^ int use_sparse;$/;" m struct:jacobian +used_in_sources ../include/perturbations.h /^ int * used_in_sources; \/**< boolean array specifying which$/;" m struct:perturb_vector +value ../cpp/ClassEngine.hh /^ inline string value(const unsigned& i) const {return pars[i].second;}$/;" f class:ClassParams +value ../include/parser.h /^ FileArg * value; \/**< list of (size) values *\/$/;" m struct:file_content +vector_perturbations_data ../include/perturbations.h /^ double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for vectors *\/$/;" m struct:perturbs +vector_source_pi ../include/perturbations.h /^ double vector_source_pi; \/**< first stress-energy source term in Einstein's vector equations *\/$/;" m struct:perturb_workspace +vector_source_v ../include/perturbations.h /^ double vector_source_v; \/**< second stress-energy source term in Einstein's vector equations *\/$/;" m struct:perturb_workspace +vector_titles ../include/perturbations.h /^ char vector_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for vector perturbation output files. *\/$/;" m struct:perturbs +w ../include/quadrature.h /^ double *w; \/* Pointer to the corresponding weights *\/$/;" m struct:adaptive_integration_tree_node +w ../include/sparse.h /^ double *w; \/* Work array for sp_lu *\/$/;" m struct:sparse_numerical +w0_fld ../include/background.h /^ double w0_fld; \/**< \\f$ w0_{DE} \\f$: current fluid equation of state parameter *\/$/;" m struct:background +w_ncdm ../include/background.h /^ double ** w_ncdm; \/**< Pointers to vectors of corresponding quadrature weights w *\/$/;" m struct:background +w_ncdm_bg ../include/background.h /^ double ** w_ncdm_bg; \/**< Pointers to vectors of corresponding quadrature weights w *\/$/;" m struct:background +w_trapz ../include/transfer.h /^ double * w_trapz; \/**< w_trapz[index_tau]: values of weights in trapezoidal integration (related to time steps) *\/$/;" m struct:transfer_workspace +wa_fld ../include/background.h /^ double wa_fld; \/**< \\f$ wa_{DE} \\f$: fluid equation of state parameter derivative *\/$/;" m struct:background +wamd ../include/sparse.h /^ int *wamd; \/* Work array for sp_amd *\/$/;" m struct:sparse_numerical +writeCls ../cpp/Engine.cc /^Engine::writeCls(std::ostream &of){$/;" f class:Engine +write_background ../include/output.h /^ short write_background; \/**< flag for outputing background evolution in file *\/$/;" m struct:output +write_header ../include/output.h /^ short write_header; \/**< flag stating whether we should write a header in output files *\/$/;" m struct:output +write_perturbations ../include/output.h /^ short write_perturbations; \/**< flag for outputing perturbations of selected wavenumber(s) in file(s) *\/$/;" m struct:output +write_primordial ../include/output.h /^ short write_primordial; \/**< flag for outputing scalar\/tensor primordial spectra in files *\/$/;" m struct:output +write_thermodynamics ../include/output.h /^ short write_thermodynamics; \/**< flag for outputing thermodynamical evolution in file *\/$/;" m struct:output +x ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +x ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +x ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +x ../include/hyperspherical.h /^ double *x; \/\/Pointer to x-values$/;" m struct:HypersphericalInterpolationStructure +x ../include/quadrature.h /^ double *x; \/* Pointer to the abscissas of node *\/$/;" m struct:adaptive_integration_tree_node +x ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +x ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +x ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +x_size ../include/hyperspherical.h /^ int x_size; \/\/Number of x-values$/;" m struct:HypersphericalInterpolationStructure +xi ../include/sparse.h /^ int **xi; \/*xi[k] points to a row of xi, which holds the topological ordered indices.*\/$/;" m struct:sparse_numerical +xjac ../include/evolver_ndf15.h /^ double *xjac; \/*Stores the values of the sparse jacobian. (Same pattern as spJ) *\/$/;" m struct:jacobian +xmax ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmax ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmin ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmin ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xvec ../include/hermite3_interpolation_csource.h /^double *xvec;$/;" v +xvec ../include/hermite4_interpolation_csource.h /^double *xvec;$/;" v +xvec ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +xvec ../tools/hermite3_interpolation_csource.h /^double *xvec;$/;" v +xvec ../tools/hermite4_interpolation_csource.h /^double *xvec;$/;" v +xvec ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +y ../include/dei_rkck.h /^ double * y;$/;" m struct:generic_integrator_workspace +y ../include/perturbations.h /^ double * y; \/**< vector of perturbations to be integrated *\/$/;" m struct:perturb_vector +ydel_Fdel ../include/evolver_ndf15.h /^ double **ydel_Fdel;$/;" m struct:numjac_workspace +yerr ../include/dei_rkck.h /^ double * yerr;$/;" m struct:generic_integrator_workspace +ym ../include/hermite3_interpolation_csource.h /^double ym=0;$/;" v +ym ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +ym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +ym ../tools/hermite3_interpolation_csource.h /^double ym=0;$/;" v +ym ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +ym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yp ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +yp ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +yp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yp ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +yp ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +yp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yscal ../include/dei_rkck.h /^ double * yscal;$/;" m struct:generic_integrator_workspace +yscale ../include/evolver_ndf15.h /^ double *yscale;$/;" m struct:numjac_workspace +ytemp ../include/dei_rkck.h /^ double * ytemp;$/;" m struct:generic_integrator_workspace +ytempo ../include/dei_rkck.h /^ double * ytempo;$/;" m struct:generic_integrator_workspace +yydel ../include/evolver_ndf15.h /^ double * yydel;$/;" m struct:numjac_workspace +z ../include/hermite3_interpolation_csource.h /^double z[2]={0.,0.};$/;" v +z ../include/hermite4_interpolation_csource.h /^double z[3]={0.,0.,0.};$/;" v +z ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z ../tools/hermite3_interpolation_csource.h /^double z[2]={0.,0.};$/;" v +z ../tools/hermite4_interpolation_csource.h /^double z[3]={0.,0.,0.};$/;" v +z ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z2 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z2 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z3 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z3 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z4 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z4 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z5 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z5 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z_d ../include/thermodynamics.h /^ double z_d; \/**< baryon drag redshift *\/$/;" m struct:thermo +z_drag ../cpp/ClassEngine.hh /^ inline double z_drag() const {return th.z_d;}$/;" f class:ClassEngine +z_eq ../include/background.h /^ double z_eq; \/**< redshift at radiation\/matter equality *\/$/;" m struct:background +z_infinity ../include/nonlinear.h /^ double z_infinity; \/** for HMcode: z value at which Dark Energy correction is evaluated needs to be at early times (default *\/$/;" m struct:nonlinear +z_max_pk ../include/perturbations.h /^ double z_max_pk; \/**< when we compute only the matter spectrum \/ transfer functions, but not the CMB, we are sometimes interested to sample source functions at very high redshift, way before recombination. This z_max_pk will then fix the initial sampling time of the sources. *\/$/;" m struct:perturbs +z_max_pk ../include/spectra.h /^ double z_max_pk; \/**< maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today *\/$/;" m struct:spectra +z_pk ../include/output.h /^ double z_pk[_Z_PK_NUM_MAX_]; \/**< value(s) of redshift at which P(k,z) and T_i(k,z) should be written *\/$/;" m struct:output +z_pk_num ../include/output.h /^ int z_pk_num; \/**< number of redshift at which P(k,z) and T_i(k,z) should be written *\/$/;" m struct:output +z_rec ../include/thermodynamics.h /^ double z_rec; \/**< z at which the visibility reaches its maximum (= recombination redshift) *\/$/;" m struct:thermo +z_reio ../include/thermodynamics.h /^ double z_reio; \/**< if above set to z, input value of reionization redshift *\/$/;" m struct:thermo +z_star ../include/thermodynamics.h /^ double z_star; \/**< redshift at which photon optical depth crosses one *\/$/;" m struct:thermo +z_table ../include/background.h /^ double * z_table; \/**< vector z_table[index_tau] with values of \\f$ z \\f$ (redshift) *\/$/;" m struct:background +z_table ../include/thermodynamics.h /^ double * z_table; \/**< vector z_table[index_z] with values of redshift (vector of size tt_size) *\/$/;" m struct:thermo +zpp_over_z ../include/primordial.h /^ double zpp_over_z;$/;" m struct:primordial_inflation_parameters_and_workspace +ztable ../include/nonlinear.h /^ double * ztable;$/;" m struct:nonlinear_workspace +~ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::~ClassEngine()$/;" f class:ClassEngine +~Engine ../cpp/Engine.hh /^ virtual ~Engine(){};$/;" f class:Engine diff --git a/class/tools/.arrays.c.swp b/class/tools/.arrays.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..505d38cdf71b189fcbc7ed51fd8bc1eabda18e7b GIT binary patch literal 16384 zcmeI3YmgjO6~`L^WhD!iA(U1T>awZm%8Hn5DoVNH zT2$QY)u@yDrIRpVw|En7A&t0l+Dx|UUS zvL)LtwVX_Odi%H}wm@uwGqFIwvZRpDk%mPBSBUxV+Qms!BAzf1W9#{3o@_ZRv7oY4Cze%-?5cZB38S-y+QPlV(rSYF}s9o&K6 z&vBOf#|D24$zNyrXSw|r9Z^_yZt{{?%VZHNd9-0?_>Sz-rC*%Z!AB+^2bB+zq0(> zEZ_OI?)ERS{BD+CaY48IMV9;H`(a4_7nb|>TiMs${sorb#rl61k{@OHS6RN{?cMGF z%<}y#e>NmP!tw`L{<#ag+w)W8^62eM!x=m)PMAN><}20Q^C2ZzC<;6CsT zuobKa%fT>M1QviNkqbWoeheN0_kd4>G`Iv@1p2}A$hi-IYd{fP4VHpFZ~=G+z74)?*)%xo*V?<2j2rUZ|($V=OyrxzyBCDQYL;HQf<^s zXV5S;y{T%gF;P?$sXb;l8IrDO_s$`Vq;00!i>Pn$;k)SLEZutPuu2_0bDYX0>fw_6^RY@a~bGnJWv%WL?{$uP*g-#ygwsSB2l2fo>EVnHtNr^p?q?hr@~PO zXR2O^s*ZU;T_!wF>Y;kbQ{5Rsw90G+I(sYBT3VCiO3<6zz8dstzp&u>HjZ*>)B;}L zF;&P)#^6l$iLmMPnAaL(({zk8lSbbxkxHa7d~-~%5imj=T-!k@GOo=OT&Kk{%qzI5 zoF4=Krr?S$I??sC(JVTUAuc1_aSW5g?F$siNF}ekf|MUHLji$8Qb;6=LQ$(zrB}c@ zU3Bu-e|GOkm*6=q3YnDFDrB{00eH)T^`-#=h$7I zyE*L;vEN8c>BeNm&Eu}}gWl%?-C+{Zx+7}_WX%Ex5v~m-7+wl^cgzZ9F;q1R{_X-h zlOB7ewyy|YA=3)Y_`qf)L6-3LOgnc9Tot@4uOh~cZhgB($I79ZEYd<4rrxB^(<*6> z&8Vd5D`{bv0^{*@%1g2Z`rut0ZQP=EaTr3YQ1phGk5~=4^IU|8dc*iE6ayYDQdtUN;dtd;bG67IM>XWL=M7gv zAywEgttwTkx<+}0ThZ;BrM1jb%_uvnVH$2CIV|eBjr?U?b*zS6)}2H$qhNr@D-E+; zZD_g}kb0d=WdO6#Q@XBEHFQ&~*PThUnr!G!TI82za#v;wIsCF0-J+ugHncK%kiV#x z)3;VKje4Vs#KN5PhU>`ADF2^AUiT{UK+6C9??;a!mp=lY2hW1tU>8^dUPkWz0N4v| z2VVdND1d(OYvk?w!EP`Gwu4PzEy#l*a2YrsJTp&GeggJ`&ww$o1#AS@f+AQBmV%SW z?Oz8Ef}4N;pG~BzPLR`8{A8xDKoU*MiHyZ;_+#1>@jy@HBGo?|?m^1t!6Vz(VkD&<~Em)@1Kj z$ma1Ywm@uwH`@ZyiLVf;5$pnN-Jx~a+hyWH4AK#Xt54ckH1ngzSgL(hpsOj>wM+FK z_(;vVj(ohMo?B^^_s$uhu9(Z@s3I*K27Q>t%Rh1ISv7QGq4aD(722l=s*3Tswo!If zRg8Fhw4NHGTeDGSse^1`&a!TFf1O8icGTp9M=A7t^&L1aELE{(Ft_7il1}In?PYld zpQ2!;r=2iP{qV1FZo{Dkc}2Zsmug}p(vV(ixJ+z9L%xM-CeVt_7-~C0XK~BK7MTh- z!kVBhh6s#O)O5FEX+ce9NQZaHnpRmgXzUC@;P`RU#_{NAZrB{kj|CNVEFILyiq_!h zR32UyBAet-*CbC(=-&O&1WesF4&7|s#vZ5a%KOHlC>_^QpN?oaw7rS4gWOoXaj$U30P;>!pxRdkj~fv=llR7blxR3PnC=pTLX5}gaw%2Azm4X+Dbo74jx=v4o*;^FNMr|Au4h|ug zLizZd;Ih^Xbl>^N{#g!>D94#VlQbJ9zCkS8dP%N?_*Z=0=2L~}#qVE$OMzej literal 0 HcmV?d00001 From f12345eb69dba1e58369adaa7ac210535108e3ed Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Wed, 22 Nov 2023 20:06:13 -0800 Subject: [PATCH 09/24] hmcode2020 --- theory/cosmo3D.c | 59 ++- theory/halo_hmcode.c | 935 +++++++++++++++++++++++++++++++++++++++++++ theory/structs.c | 9 +- 3 files changed, 995 insertions(+), 8 deletions(-) create mode 100644 theory/halo_hmcode.c diff --git a/theory/cosmo3D.c b/theory/cosmo3D.c index 6870ce96..eef8ad05 100644 --- a/theory/cosmo3D.c +++ b/theory/cosmo3D.c @@ -138,7 +138,7 @@ double growfac(double a) int i; //if using CLASS, calculate growth factor from low-k ratio of power spectrum at different redshifts - if ((strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) && cosmology.w0 == -1.0){ + if ((strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0 || strcmp(pdeltaparams.runmode,"classtagn")==0 || strcmp(pdeltaparams.runmode,"classhmcode")==0) && cosmology.w0 == -1.0){ double da = (1. - limits.a_min)/(Ntable.N_a-1.); for (i=0;i< Ntable.N_a-1;i++) { @@ -507,6 +507,14 @@ int run_class( } return 0; } +double CLASS_sigma8(struct spectra *sp, struct nonlinear *nl){ + #ifndef CLASS_V29 + return sp->sigma8; + #else + return *nl->sigma8; + #endif +} + double get_class_s8(struct file_content *fc, int *status){ //structures for class test run struct background ba; // for cosmological background @@ -529,11 +537,14 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[position_kmax],"%e",10.); } *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if (k_max_old >0){ sprintf(fc->value[position_kmax],"%e",k_max_old); } - return nl.sigma8[nl.index_pk_total]; + double s8= CLASS_sigma8(&sp,&nl); + if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + return s8; + //nl.sigma8[nl.index_pk_total]; } double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){ @@ -672,7 +683,12 @@ void fprint_parser(struct file_content * fc,int parser_length){ fprintf(stderr, "%d %s %s\n",i, fc->name[i],fc->value[i]); } } -double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ + + + + + +double p_class_inner(double k_coverh0,double a, int NL, int cdm_b, int nonlinear, int *status){ static cosmopara C; static double **table_P_L = 0; static double **table_P_NL = 0; @@ -720,6 +736,21 @@ double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ *status = fill_class_parameters(&fc,parser_length); + switch(nonlinear){ + case 0: break; //use Halofit within CLASS + case 1: //use hmcode2020 within class + strcpy(fc.name[1],"non linear"); + strcpy(fc.value[1],"hmcode2020"); + break; + case 2: //use hmcode2020 with TAGN within class + strcpy(fc.name[1],"non linear"); + strcpy(fc.value[1],"hmcode2020"); //to use Halofit within CLASS + strcpy(fc.name[18],"hmcode2020log10tagn"); + //printf("log10Tagn, %e\n", cosmology.log10Tagn); + sprintf(fc.value[18],"%e",cosmology.log10Tagn); + break; + } + if(*status>0) return 1; *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); if(*status>0) { @@ -734,6 +765,7 @@ double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ if (cosmology.A_s){ norm = 3.*log(cosmology.h0/cosmology.coverH0); cosmology.sigma_8 = (nl.sigma8[nl.index_pk_total]); + cosmology.sigma_8_cc = (nl.sigma8[nl.index_pk_cluster]); } else{ norm = log(pow(cosmology.sigma_8/(nl.sigma8[nl.index_pk_total]),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); @@ -777,6 +809,17 @@ double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ if(isnan(val)) return 0.0; return exp(val); } + +double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ + return p_class_inner( k_coverh0, a , NL, cdm_b, 0, status); +} + +double p_class_tagn(double k_coverh0,double a, int NL, int cdm_b, int *status){ + return p_class_inner( k_coverh0, a , NL, cdm_b, 2, status); +} +double p_class_hmcode(double k_coverh0,double a, int NL, int cdm_b, int *status){ + return p_class_inner( k_coverh0, a , NL, cdm_b, 1, status); +} // linear power spectrum routine with k in units H_0/c; used in covariances.c for beat coupling and in halo.c double p_lin(double k,double a) { @@ -784,7 +827,7 @@ double p_lin(double k,double a) static double **table_P_Lz = 0; static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; int status; - if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) return p_class(k,a,0, 0, &status); + if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0 || strcmp(pdeltaparams.runmode,"classtagn")==0 || strcmp(pdeltaparams.runmode,"classhmcode")==0) return p_class(k,a,0, 0, &status); double amp,ampsqr,grow0,aa,klog,val; @@ -825,7 +868,7 @@ double p_lin_cdm_b(double k,double a) static double **table_P_Lz = 0; static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; int status; - if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) return p_class(k,a,0, 1, &status); + if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0 || strcmp(pdeltaparams.runmode,"classtagn")==0 || strcmp(pdeltaparams.runmode,"classhmcode")==0) return p_class(k,a,0, 1, &status); double amp,ampsqr,grow0,aa,klog,val; @@ -1498,6 +1541,8 @@ double Pdelta(double k_NL,double a) if (strcmp(pdeltaparams.runmode,"linear")==0) P_type = 3; if (strcmp(pdeltaparams.runmode,"CLASS")==0) P_type = 4; if (strcmp(pdeltaparams.runmode,"class")==0) P_type = 4; + if (strcmp(pdeltaparams.runmode,"classtagn")==0) P_type = 6; + if (strcmp(pdeltaparams.runmode,"classhmcode")==0) P_type = 7; if (strcmp(pdeltaparams.runmode,"cosmo_sim_test") ==0) P_type = 5; } @@ -1512,6 +1557,8 @@ double Pdelta(double k_NL,double a) case 3: pdelta=p_lin(k_NL,a); break; case 4: pdelta=p_class(k_NL,a,1,0,&status); break; case 5: k_nonlin=nonlinear_scale_computation(a); + case 6: pdelta=p_class_tagn(k_NL,a,1,0,&status); break; + case 7: pdelta=p_class_hmcode(k_NL,a,1,0,&status); break; if (kintern<0.01) pdelta=2.0*constants.pi_sqr*Delta_NL_Halofit(kintern,a)/k_NL/k_NL/k_NL; else{ error=0.01*pow((pdeltaparams.DIFF_A*kintern/k_nonlin),pdeltaparams.DIFF_n); diff --git a/theory/halo_hmcode.c b/theory/halo_hmcode.c new file mode 100644 index 00000000..f66339ba --- /dev/null +++ b/theory/halo_hmcode.c @@ -0,0 +1,935 @@ +#ifndef __HALO_FAST__ +#define __HALO_FAST__ +#include +double conc_Ludlow16_fit(double m, double a); +double conc_Ludlow16(double m, double a); + +// use this routine in inner I[0-1]j and modify int_rho_nfw if to work with different halo profiles, e.g. to include adiabatic contraction, AGN feedback, etc. +/*halo model building blocks */ +double I0j_y (int j, double k1, double k2, double k3, double k4, double a, int is_y[4]); +/*halo model matter power spectrum, bispectrum, trispectrum*/ +double p_1h_hmcode(double k, double a); +double p_2h_hmcode(double k, double a); +double Pdelta_hmcode_2020(double k, double a); +double P_my(double k,double a); + + +/* ********************* Routines for halo model ************* */ +/*++++++++++++++++++++++++++++++++++++++++* +* Variance of the density field * +*++++++++++++++++++++++++++++++++++++++++*/ + +double dlogsigma_dlogR(double m) +{ + double dlogm = 0.0001; + double logm = log(m); + double m1 = exp(logm + dlogm); + double dlogsigma2 = log(sigma2(m1) / sigma2(m)); + double dlogR = log(radius(m1) / radius(m)); + return 0.5 * dlogsigma2 / dlogR; +} +double dlogPlin_dlogk(double m) +{ + double k0 = 0.69* 2*M_PI / radius(m); + double dlogk = 0.001; + double k1 = exp(log(k0) + dlogk); + double dlogPlin = log(p_lin(k1,1.) / p_lin(k0,1.)); + return dlogPlin / dlogk; +} + + +/***************** halo profiles ***************/ +/******** mass-concentration relation **********/ +double conc(double m, double a) // for matter +{ +#ifdef LUDLOW16 + return conc_Ludlow16(m, a); +#endif +#ifdef LUDLOW16_FIT + return conc_Ludlow16_fit(m, a); +#endif + + double result; + double M0=pow(10,nuisance.gas_lgM0); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1 + (nuisance.gas_eps2 - nuisance.gas_eps1)/(1.+pow(M0/m, nuisance.gas_beta)) ); + } + return result; +} + +double conc_y(double m, double a) // for y field, with a separate set of gas parameters lgM0,beta,eps1,eps2. +// ONLY USED FOR TEST_CALIB +{ + double result; + double M0=pow(10,nuisance.gas_lgM0_v2); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) - If use this, set c_max=50 !! + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1_v2 + (nuisance.gas_eps2_v2 - nuisance.gas_eps1_v2)/(1.+pow(M0/m, nuisance.gas_beta_v2)) ); + } + return result; +} + +#ifdef LUDLOW16_FIT +double conc_Ludlow16_fit(double m, double a) +// Ludlow16 fit at Planck cosmology +{ + double c0, beta, gamma1, gamma2, nu0; + c0 = 3.395 * pow(a, 0.215); + beta = 0.307 * pow(a, -0.540); + gamma1 = 0.628 * pow(a, 0.047); + gamma2 = 0.317 * pow(a, 0.893); + double a2 = a*a; + nu0 = (4.135 - 0.564 / a - 0.210 / a2 + 0.0557 / (a2*a) - 0.00348 / (a2*a2)) * growfac(1.) / growfac(a); + double nu_nu0_ratio = nu(m,a) / nu0; + return c0 * pow(nu_nu0_ratio, -gamma1) * pow(1+ pow(nu_nu0_ratio, 1./beta), -beta*(gamma2-gamma1)); +} +#endif + + +#ifdef LUDLOW16 +double conc_Ludlow16(double m, double a) +{ + static double **table=0; + static int N_c = 30, N_a = 50; + static double c_min = 0.608, c_max = 50.; // the method produces cmin ~0.607 + static double a_min, a_max = 0.999; + static double dc, da; + static double C_Ludlow = 650., f_Ludlow = 0.02; + double cc, aa; + double M2, c3; + double af, rho_2; + int i, j; + printf("here!\n"); + if (table==0) { + table = create_double_matrix(0, N_c-1, 0, N_a-1); + a_min = limits.a_min_hm; + dc = (c_max-c_min) / (N_c - 1); + da = (a_max - a_min) / (N_a - 1); + printf("here!-\n"); + for (i=0; i= a_max) {a = a_max;} + + int ia = floor((a - a_min) / da); + double frac_high = (a - (a_min + ia * da)) / da; + double table_interp[N_c]; + + if (ia == N_a-1) { + ia--; + frac_high = 0; + } + + double LHS, sig2rf, sig2r; + sig2r = sigma2(m); + sig2rf = sigma2(f_Ludlow * m); + LHS = sqrt(2.* (sig2rf - sig2r)); + printf("here!!!\n"); + for (i=0; icmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + // printf("c, x = %le, %le\n",c,x); + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + +/*********** FT of bound gas K-S Profile (sinc integral part) **************/ + +double int_KS(double r, void *params){//Fourier kernel * K-S profile, integrand for u_KS + double *array = (double*)params; + double k = array[0]; + double c = array[1]; + double rv = array[2]; + double rs =rv/c; + double x = r/rs; + return r*sinl(k*r)/k*pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} + +double u_KS(double c, double k, double rv){ + // FFT density of K-S profile, truncated at r_Delta, through direct integration + // use this routine in inner I[0-1]j and modify int_KS to work with different halo profiles + + double array[3] ={k,c,rv}; + return int_gsl_integrate_medium_precision(int_KS, (void*)array, 0,rv,NULL, 5000); +} + +double int_F_KS(double x, void *params){ + double *array = (double*)params; + double y = array[0]; + return x*sinl(x*y)/y * pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} +double F_KS(double c, double kr_s){ + double array[1] ={kr_s}; + return int_gsl_integrate_medium_precision(int_F_KS, (void*)array, 0,c,NULL, 5000); +} + +#ifdef RUN_FFT +void fft_F_KS(double *c_arr, int Nc, double *krs_arr, int Nx, double **F) { + config fftconfig; + fftconfig.nu = 1.01; + fftconfig.c_window_width = 0.25; + fftconfig.derivative = 0; + fftconfig.N_pad = 0; + fftconfig.N_extrap_low = 0; + fftconfig.N_extrap_high = 0; + + int ell=0; // spherical bessel order + double x[Nx]; + int i,j; + for(i=0;ic_arr[j] ? 0 : pow(x[i],3)*pow(log(1.+x[i])/x[i], nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); + // fprintf(output, "%le %le %le\n", c_arr[j], x[i], fx[j][i]); + } + } + // fclose(output); + // exit(0); + + cfftlog_multiple(x, fx, Nx, Nc, &fftconfig, ell, krs_arr, F); + for(j=0;jcmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + + + +double int_KS_norm(double r, void *params){//normalization of u_KS + double *array = (double*)params; + double c = array[0]; + double rv = array[1]; + double rs =rv/c; + double x = r/rs; + return r*r*pow(log(1.+x)/x, 1./(nuisance.gas_Gamma_KS-1.)); +} + +double KS_norm(double c, double rv){ + + double array[2] ={c,rv}; + return int_gsl_integrate_medium_precision(int_KS_norm, (void*)array, 0,rv,NULL, 1000); +} + +double frac_bnd(double m){ + double M0=pow(10,nuisance.gas_lgM0); + return cosmology.omb / cosmology.Omega_m / (1.+ pow(M0/m, nuisance.gas_beta)); +} +double frac_ejc(double m){ + double M0=pow(10,nuisance.gas_lgM0); + double lgm=log10(m); + double frac_star = nuisance.gas_A_star * exp(-0.5* pow((lgm - nuisance.gas_lgM_star)/nuisance.gas_sigma_star,2)); + if(lgm>nuisance.gas_lgM0 && frac_star0.999) aa=.999; + klog = logkmin; + // t1=clock(); + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return Pdelta_hmcode_2020(k,limits.a_min_hm)*pow(growfac(a)/growfac(limits.a_min_hm),2);} + if (a > 0.999){return Pdelta_hmcode_2020(k,0.999)*pow(growfac(a)/growfac(0.999),2);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_yy(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + int i,j; + double p1, p2; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_yy(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_my(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + double p1,p2; + int i,j; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + // if(i==N_a-1){ + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_my(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return (val); +} +#endif + +/****************** Lookup table for 1-halo term super-sample covariance/halo sample variance term**********/ + + +double I12_SSC_yy (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,-2,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=array[8]=-2.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + +double I12_SSC_my (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,0,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=-2.; + // array[8]=0.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + + + + + diff --git a/theory/structs.c b/theory/structs.c index d50868da..42c16e0a 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -70,8 +70,11 @@ typedef struct { double MGSigma; double MGmu; double theta_s; + double Tcmb; + double sigma_8_cc; /*sigma_8 of cold dark matter and baryon*/ + double log10Tagn; }cosmopara; -cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0}; +cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0, .Tcmb=2.728, .sigma_8_cc=0.,.log10Tagn=0.}; typedef struct { int shear_Nbin; // number of tomography bins @@ -282,7 +285,8 @@ nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, .sigma_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .bias_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .sigma_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, - .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}}; + .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, + }; @@ -363,6 +367,7 @@ typedef struct input_cosmo_params_mpp { double h0; double MGSigma; double MGmu; + double log10Tagn; } input_cosmo_params_mpp; typedef struct input_cosmo_params { From 973b581744d28b89553a9d0ca927f51cafdcf38a Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Tue, 28 May 2024 03:53:27 -0700 Subject: [PATCH 10/24] booking bao SN --- theory/.basics.c.swp | Bin 0 -> 16384 bytes theory/.coefficients.c.swp | Bin 0 -> 16384 bytes theory/.cosmo2D_exact.c.swp | Bin 0 -> 16384 bytes theory/.cosmo3D.c.swo | Bin 0 -> 16384 bytes theory/.cosmo3D.c.swp | Bin 0 -> 114688 bytes theory/.pt_cfastpt.c.swp | Bin 0 -> 16384 bytes theory/.structs.c.swm | Bin 0 -> 32768 bytes theory/.structs.c.swn | Bin 0 -> 16384 bytes theory/.structs.c.swo | Bin 0 -> 16384 bytes theory/.structs.c.swp | Bin 0 -> 36864 bytes theory/cosmo3D.c | 468 +++++++++++------- theory/halo.c | 1 - theory/old/halo_hmcode.c | 935 ++++++++++++++++++++++++++++++++++++ theory/recompute.c | 9 +- theory/structs.c | 15 +- 15 files changed, 1237 insertions(+), 191 deletions(-) create mode 100644 theory/.basics.c.swp create mode 100644 theory/.coefficients.c.swp create mode 100644 theory/.cosmo2D_exact.c.swp create mode 100644 theory/.cosmo3D.c.swo create mode 100644 theory/.cosmo3D.c.swp create mode 100644 theory/.pt_cfastpt.c.swp create mode 100644 theory/.structs.c.swm create mode 100644 theory/.structs.c.swn create mode 100644 theory/.structs.c.swo create mode 100644 theory/.structs.c.swp create mode 100644 theory/old/halo_hmcode.c diff --git a/theory/.basics.c.swp b/theory/.basics.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..538dea0af5d91cb0c39066414ae49fbfc6a9bea3 GIT binary patch literal 16384 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 R*yEU{lozdm9Opz^{u?N9j2i#| literal 0 HcmV?d00001 diff --git a/theory/.coefficients.c.swp b/theory/.coefficients.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..55ca9170d61e61ff784a3ace4b916a595dfeaa5c GIT binary patch literal 16384 zcmeI2Ym8(^b;p|!0uJUOh>$Ex;jRg*o}QjNb*t*WG~156-d*oTw%6LV5zew1dS`mp zy*t}I?(W?kSQerXDc|@&qI}5%DLkYo68RDV;-y4@KthU;42dAf2@bC$WF1Hd!Gyr? zRMqY2xt@i=<^x3Cp8xjkI#s96tIj#q?sMujC+>^#*fw~*w9&Zj>TkXN#&;h3@Dq7~tqvhjG*9c&Co>v3=W^3zwnSr{&_4cB}8Grlz3>|gAyt_?@M z<;f$x;ph#F_BJ;9YyI9}GLF}t&R{+=x4_&2&%y#PY8ag;VeqOu4n!}1*+b8Q*L>;R z0&@$@Eikvh+yZk8%q=jtz}y0J3;euUV6t_f@fL*sg&_D=cz;gq{RiRomtp+T8vXwQ z{cpo~6c|)|z8~oC3iKN_`u_&{+XMaWL7-~=_X7P70{z#X>mMrmQ?>OUsL{V0=r0cI zf8!T-um7Jwj{^O*HTrh~{S|?}U8DbZjsCV8{o8^5D`EY+YV`jK^cMyC2Ws^H4D?F= zPt@q&s?i^-(Z5;a|D_uJKWg+FHTsh^{@<(7Zv^_wg8a8U&p%ZD`S%+A_8R>gHU3LA z`o9HwWuKKA{aMUDUeU)}%z<|U2BTR{Sz0lmwhq#8h7S* zf>m%k_&S%a4}w1fZwBk&*TMJs?&I6wN$@!M0{AHS6L1xb!FkXF>tGF>0|&q>f%x*f z)y4a!u^C0{!^`J3dr_-98g<_gb)sf9un=u^N8L-~mBzJ37<+Jab9jFBQh#uHyxJd3 zdgn*o!TRdmCr=+eeByMqke_i(y6x!7u)iL)Jc|X{|9T^eM!m`9(I7gu!n1siqGM6# zSgX0cG#U;kt4@Y9Cr=$YdTJ>-d!~POVI^V~KPHKqePmNBQ9nA=aTDZmadF|AOn^x= z7>+KjUg@n(hNCHmoo(*B>$N93m%7_4Y{`OZcmKY;yfs3djpiM%UXSDtdw|ys?r2|V zUu=(I*;^ITdSm*q!u;gC-HtCY)znJY%JCjV#^_WaqQWCPz65BSO2o9?kxCDS~8yC+E$$VMgmjm{+1Tz~!RaU7KY0EN~0NP4&oc0uG1mFB8#;Dh8UUe3&PkOX_K58C3-u8Uj zAtNTerGkUlTgv!XDGud5r|(@oasPuy?^(U)u7^&awn_VHJ38oP<)Jqk4M%Q++aH&a;Qe4a zXSiSiOR&urFx>Cu+_P-$H@YOW_zU&S#%g(Mc(v&rtz)&&nzZ%`wf0_N)@oweC4+Sx z5BVJ=1yr~=W9$lS%vkwyMr|LqQ<`??E39+erle$g^qeG&H&J;ZF!cvBEZlELFf}NQ zZqgAvts9s*nX|n>XZ+}B(rlu-541&$vd~g-y3l$+)QzGCI^z5B#_DG8d~dK$U4CG* z=~P)v+B-?sjohhSf@NK3H9FXN*=_OgLaTYWCI2;b8Y|gHJ}oRId}=j~jFoZ@g<^J^46+!5Yhf}726Cb%PbQQ&Fr5z>wD8fnI0D9 zXGYVW;^?VUCr?E_Gj*i*x-toGlGx=@YG}x%(>mZ|-bvWsXg0SGHJ5Pj!b0?>H$~0u zJKgg&_T7~wg^{=ZcE^QT#cs*7cW)HtWmky1+hN%4a<~%)qopA1bXv4njff5S3rFa1 z`{DMn4hmBf3E)~9+Esxlg_#-oLRYWJXgSgVzwfd(ZP>tiW&a|`qrdN+z z=B|9WPn+$@^5(f~kK0U*!%xL*?z$wM)>sm9RO#ee8#mw@!>Y@1*NZcuw<0>->fNpF zKDe|T8{ zT6Rq0qO>N@F|Wu{rg?!WN+%0eDy%7#3!=18X_}|rA7!2vX`;ns`;{dKV)87vx-8&{ z$Kh?$tSp=#Qk9iiit(LMY*J>K&9RV)jZI5iWHOCdP>CW=3TKooD@vFc)?gv@BSanV z{RkFBQdwav_7G)ajE$KSL=oHQB)55DOXnw|1betMrQ?E~Qw|k+m^fn*98wpaI!{cN zq#5jNoSQsVgeu0RN8%~V6EW_Ox0)9Yuj#}VR+hxpCTWUzY(s;S*iLcaPVOGHm}n$3*3bo zGypUP)os-G2J&qi-!A(mz<=qxt0UO^`{KR30a#Pns3PPml95!2SZPb$G?JJ2ASEUz zr^|P_&@%IF}O?P zI3g>>-lzz-(zhf@p$m-fMk&>)6}c*{F)0EbU zTIDUE751lBa~6;~uDq~@KtUKcZcRp^_AXAf&Wy26xs1}AXz%Wf2r{WxnkV-1{0sUx z#K+YmNINhw5WRj{pdH#^ckdi9dLL~O4=p{uL)}B96vc(w7PaQ>WBBuV%*lP~c6@nIIr#jx9A+PkKFi5ke$4(nt`=sEdc( z4xA-oQz|0_Vvwq9oaD+9r=go;D@aZWI!hFCk7Z6#6=7rf)ata>;ofG5_OHp8u z)CV&CQ-*=PPFTT;ZHPvl=A1&;?&`!l3LtjE=SMDCwVA!EGi8fKLj+$xxxSd literal 0 HcmV?d00001 diff --git a/theory/.cosmo2D_exact.c.swp b/theory/.cosmo2D_exact.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..99a5d1df72efa137f2382cf28f80e481188b169a GIT binary patch literal 16384 zcmeHO>yH~(6`!OjG(Z8h5)Y+_+pTt)8QbH>b{m?FOT%XKXuX?=O-kBy8OGzWJ<0Wq zGc)!&UZpMl08(iysQ8Tdh(Jh4^i!$`sTCj!h)6u7iVw8q0|Nemiudo_x#RVEy-%s( zp|SS2GkYKBp7Wb??>*;^w_14Y^a49<+^^vCVMY1)$``))OKs{#>CJtL-Hd!H-tH4N z3)4C76^cd}Szg@_YKBwmZ0z+E3C!Dm&B3p*<#YG4W7>Y;m9MmMnjKr2e0>{t;PzeWd;$vfh;C2jl?BIDeP* z4OwrG)c;M^C*!_8QvX+3za;zLCk;yE-zLi+l-KS^y(~^IDFZ13DFZ13DFZ13DFZ13 zDFZ13DFZ13DFgqP3|KWq`4BAoDkaKz|DWXlucELG90LCMK}Gp4@Ezb;;7dRQ_zdt# z;1j@p;4gP7%5Q*YfTw_Kz&W4<90K+MZ+t*eehid=>+gpQ;D_&1lvjWN$O3O4RFtm) z&jXJDw*lAhP!tX{fd$}E;1IAM`2Bko?e{3k&wy_NlfbWUSCpH; zSAZr^1D*tq01p5^I-n@80j~nj10ir0Fo2H&f5t(=6@UTv0KdXH!pp$-fo}s}2A%~b z0Xl=20PY3;1b%M<-vfy2=YWw9V>Q21gt4L|C7n%5mhIux0O`Dr5Zq!_`8iT?5 zS=RO48q?z;wN>ayLIWr21RiVG&34m|{Jz@Hst~1F!Nt>*Yx6bzl~TwBfO8MlIllj||=w%mw;2zJTjYER3u z$Y+)?9SSff2>f9ESZ#kr?Pa-^mkP#wg7`>PJ6`BEJg3Hp61AlBOc4~Q#T-=9dwMUg zmY_mrS`&uQGwiXWcq&Cbyb?sBQe#t7Om;=x$)$?9bizD-=KNFuqA1FXu$+v#HN+y{vBGtwYW_#4=$-Y)cz=iXqcJkA_%SXj_PyYJX_P(Bj7*Dr&3LgyqVN>nhJ-@5-xU9i&@5UM_Km zePqLSkSo!K5bpws5EUyf_2Ze+KvG;1FTCR=WrQRwYK#d%Wic)mYU(tkQ)W8RDM#!2 zMwNzlC|aTCuNbU!nE7?qjG}gUB%il}p4&D2ppkFa>Uk@S0zcPo<_ixLW~K|JZplC~ z6p5|cEl2S#2pUV;x}ESESq7=nJdnK;o>(F-Ga_zH(hiA|lHTp@dAD@QojgabvXjj` zhkbj)W=@{42Pc$c3pd@#*qNCzV`mP>TlDVS_Lc=OGuqYx%x3WmqNlyj92u9y^O)k@ zL8!8Aq?6Cb9yEiPTE@8$KvNN+&t766smt2>E(`kE(b)Q$axjUk5nje$iuM~D*JV33n$WVM|j z*+VWH28d)^S6(j-_YtFP-vKNCii&TtM|dc%XY)?Y^%@NQa`8wR z?0AW_bCi71ZYo@CW=IU9jT82^Lgst?>N<%S%p5W+VPeQC2#$3_vPJq( z{{Is4B~Ozy;tW@D6hQUjRP`UIA8tDzE@d0t)aJa{X@s zj|0C$uKyS?50n8N_!#h8s``x`kz5#QAAl8FIt`z32vM=ciJ^8a!jw|hL&eL>eQkLP#KdI z4U5wWo;r1MeYps`tkmow$F{Gz*jkuU3W9KR_W zVRSHn51l!ybg){SMQ(AFRdBA0yG#bLFxAJcHWAFqh^3QOLXu12{Va1KY4O~t`E$o` zzfRVg8H@>K%5%i0dHNV)@hVPy3p&p}QBl3VmVIK0E|MKmWCzNMCSE^Q1J|PzEgLk# zA~H@V2-}Vw1=cJ>-9WKesf0~3C@G=)O^hGUDs|XS%`Jou7?n~stZt4nR;*5mZ!`aWUaCUYyFc2P6~?y)xpRvMG1Hty&EfW(fuILEPfe zS zsVGK}sc9wa_3<-k1ZP-jx_CdS)~#x&!Y~c5*CL-g0j;-k{lfH(8&!^$AH<1@LVke5 z7^hn<;zit`d7>Glx}F=k7I*s&d8c?q$GR5p;2oaF@ZaQ4K;?L^8AMVz_x-ja1FR@OJLd05KZM6~!vbaS#s zKP{_)Mbn6S5vK6C1yf8oxe^NHcD*!;UUn1j*7PBbU3EEJLZLyWBSI zpT>4~Pwxr>R}=vekZ|Du;t=4#AqNf-aN|dCKoA5%fJCH#gb)G(gueh^*=4ue)8c10 z2aw9rH*MEf@71gCJ(ulv&w>5GTXyML^EAPB7a`x=y2Fh(AO6-;KRrfzUKY#df48Nc zz0nCG`?Q&6JaXftZ;Jl-sMY(WL#r3}1^%RA9QZ@QdT}DG%oA}kD_S?V&E8R4-J%uH z3f!y$caqJGt}VTsTs=Woj=%k89cp{6fL1^&pcT*xXa%$aS^=$qR^b0gfoyb~JcxK- zpknsa=ds4;Kh*Xf)$TX=zbpO$)&9K(|D57ys=ciSD98Dm;zx@AOoRWc;)UXmtAI=U zzbJlR@zVzXXT|R+{>cXaC&gb;{Oev=?3DhWReYfM>ka;oik~R{7Y+UoiXSR||CUAn zzgPT@;=j@0pHX}n|H`e4_PTMcZOEy8aM>b10CRY;K#QU@&xc9fB|QKU%rG80o)3F?Zt#V z1ndGU!1rH7$dkZhz(;{=00T|{6nGlXwciCE1s(ye0f)dVfmZ-4zz^{d{Bhu800$Uw z0oVd=0ltW5_jdyC0A33`jfdwi0G|gw2RsC918)LWf#bkW@O{L0fNuj&01pERa0NIA zw1B$-`9)2hD_KtzTO0{C3dSi52P_=ZHHQ|zt%wIRbN50xHsVkW_{8$Y2kKWBl6k9a zWRoqp@ZHv;1wG+VyL}y$d)3}|W>>rWvL75!NB%Vc+0c*22Z3k?;LxsFW0h4r5s7EF zc)LawfjMzFVH2K+I9)=A&OEjv=FnskE*kt1XcAa^P*cmRAYujgv_`PmXlDq$=nVmo)d;aEJhoI-L*V zbWOW+q~S~uE)m%{iH@XcVqm0JXVWxV zHEwFJ%_W=iwXWGVf_Q-Qd7<5CbULsrqDRVZ{3ph^1L=?i-$vbh-sEnVm;3l=xu~gDm+jQLqrF;# zu-N45Ox;ecBa|nD6n#r4d&A2dCBzPRGQ%QNIvm0Urc_oPMx~ZDl#8Qh?T&htbzcNo zRkA~N|D`1sJ-M)7wCOnVvveNhwlswWgJLX>f>|~8ayP}m)g0^QH)wg02eFIGfYLJ$ zpO)EZ&KM;l7vf@AZ_&~)GFeM(uNFCKdl>prmHqsfA6Ccx;e1ynwVGHns;V0gN7a5D zhPC}ksrr;%tC}y%V9M!4!gb3|=dn&!#2(92$S(O&9z;IL2G&KBa0DBbLl6DF!6j8LzQARbJf-YlSL$b$gaz|7+jwP}hQ8G$>z z7$<0$(ilG@PNse;a8Ik&{%GvLQ*#i0m=6M`TTxS94Q`v87<0mdvA}gdNklq|ana3U z+G$Ohy*6dM{q9!RI^ABdR$ja2#<_WW<+Rf^H}e^ZHG3Y=l!eNyb5_k*bZSvWxUW}| z+-sgG?3;WwuAO&S@bB4`{h4L=q$*?2Sqy z)kS&PFgKTVsX2kZM|Frp*`re8OzERLFR+FDZelxKg#fBDwNb~8Tg^%PL=Hx&hC2oKtwkp@3JH e>pOVWDF3T|{(d(+(jvdTrPy4&%EcRmE%Hyc$CB&- literal 0 HcmV?d00001 diff --git a/theory/.cosmo3D.c.swp b/theory/.cosmo3D.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..0ffdab70f6c50e6cd89f13a5e4c2ede540c23d37 GIT binary patch literal 114688 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%0DYazo4iC27U>CR} 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 literal 0 HcmV?d00001 diff --git a/theory/.pt_cfastpt.c.swp b/theory/.pt_cfastpt.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..5ae6a634c45460e105d9a2ef652f5abcf0666995 GIT binary patch literal 16384 zcmeI2PmCMY9mgLf&;UuHp@-5+)nlVg#$K;IV{b|u<5auuCYV2|1*SyZER(Tk);rzV z8P}dA8wFaCLr-w15CYT_sZe_Y#3AaTy;SNSxV7ntR*KY1|4FUHfu2hE{@!~tp6uGm zIuS^~v-Gjw%zN{G?|tVtzxQX{Hox0=gx^=3WBA;~*gdD8JoQp%&#%8|G1gg)BRYMp z&tTQ8%$k+3GFSA&czo#}QiY{XmKr8UcR3Pr{ zVn0IDKc|}ief4|Omfy?j^8;J#s$=Gkf&%m?51~u?i z@V_rGb{1UT%h>DSCm;j?I1DWCHE?MUV?PFWft$hQI~Y3;mcduRUT_<@bUS0Og6BX0 z8ekFBK_1)<-oK5pzkr{DCqNPG27lYl*t_7*;39YpJP*!+Hdp{(2K&H!pJ(h(;1}RL zI0xF`8=wsKf%k4@><{2K;5;}7PJl+^cG~v*!jiR&)-%rgUcAu{ zc~Z)tY}axt1yT5Tfd^4{ZQT!5!r3fvH|VYv2yPY&W-(VqHU0`WaEjlbl;=-B&FRFE znmprd=FTcxX0b|^Rcon`C}RxUO*K*x6dGn*FjZ20%*oc-J+E)OUWdx_#EziSyux=QDs7b z#3Pbl>5F0*fD=As*B>yG*q;szJTL%M$ZoX(C{{UG*`$KtfHy%sXX$N9P$Yf9EPKRs(h}1V1Ypq zfg&3+XhJemqoGmUhn>$Gq^ppUMk0UGo$Mb|52FFnLl1M|DJAJua6ule@IDRdhtYM> zq2&Ham)hPlD0dOw7vtLWzlzP?2&rgs!h998I_Sb87`h^w61Jb+C|Zv^g4N@?)Yah0fdwT^??%x4k}T-}b|Sa2MFi-T?znnZwM<$~^O>w0F5YCDTUnduy^U(tYH_ zn!Jb{ixgAAN<0s^Qbnt6@hO>lskkH`lw_6-A$y(Gd^#B{s)>3!W0MgosZ^9k4eGcx z-)h;%8usG02_5F-vcXQ8sw1wbll5|%Y}>H|;j(1P^UJu(xWoR~_q{^;M)G3q@^M$LIpb`G+B}T5?(tAW!M$X~4 zlo)AcKc1do!}a)-T#4B2N*EMZrx>mO|BrR=Ke0Zh^?&ky{vE9IUjZ+Jmw*LKuphjM zwf`I7G4Kdz00SHV)8Hc3{x5@P!IR(^*at3R58whg1HK22f*iOV{0sX4zXBJ)i{K=f z0eNr-xPUzX2b=WRwl&Y>&4=(N%8N2gbuj^X4=Nzy9j3Uldx25kUf-MFLIA<{3!E0Jry z6iF8Dlf4+Z)~gYfKknrS=VSMi$U&0Lp~k#?JtAFZ>@L#{y&@r9>t$N2o3tB3E+`J* zo}yml(<+(!13u_^9e>65T4DD#PdpCTC72N=MFO#NK}3jc(Gl4qI@0n#KPLEDlRcwQls?p7QM-|ZAF?q+n+_rx s;RlgwoXu}eW|Is`cgw^+**7bnnoR7D>F1%zY|6O#kwzP{Xd={n2-->5`2YX_ literal 0 HcmV?d00001 diff --git a/theory/.structs.c.swm b/theory/.structs.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..79b4f58f64c13c09fc75fe8480fc07858a1394bb GIT binary patch literal 32768 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 Q?T}1i#?ETi132t|09d1rC;$Ke literal 0 HcmV?d00001 diff --git a/theory/.structs.c.swp b/theory/.structs.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..18968fab050ff891e03459746ab240c9af64db60 GIT binary patch literal 36864 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 - return 1; - } - if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); - background_free(ba); - return 1; - } - cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; - cosmology.h0 = ba->h; -// printf("theta_* = %.5f\n",cosmology.theta_s); -// printf("h_CLASS = %.3f\n\n", ba->h); - if (perturb_init(&pr,ba,th,pt) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS perturb:%s\n",pt->error_message); - thermodynamics_free(th); - background_free(ba); - return 1; - } - if (primordial_init(&pr,pt,pm) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS primordial:%s\n",pm->error_message); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } + struct file_content *fc, + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + struct precision pr; // for precision parameters + struct output op; /* for output files */ + ErrorMsg errmsg; // for error messages + + if(input_init(fc,&pr,ba,th,pt,tr,pm,sp,nl,le,&op,errmsg) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS input:%s\n",errmsg); + parser_free(fc); + return 1; + } + if (background_init(&pr,ba) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS background:%s\n",ba->error_message); + return 1; + } + if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); + background_free(ba); + return 1; + } + cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; + cosmology.rs_d = th->rs_d; + cosmology.h0 = ba->h; + // printf("theta_* = %.5f\n",cosmology.theta_s); + // printf("h_CLASS = %.3f\n\n", ba->h); + if (perturb_init(&pr,ba,th,pt) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS perturb:%s\n",pt->error_message); + thermodynamics_free(th); + background_free(ba); + return 1; + } + if (primordial_init(&pr,pt,pm) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS primordial:%s\n",pm->error_message); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } - if (nonlinear_init(&pr,ba,th,pt,pm,nl) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS nonlinear:%s\n",nl->error_message); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } + if (nonlinear_init(&pr,ba,th,pt,pm,nl) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS nonlinear:%s\n",nl->error_message); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } - if (transfer_init(&pr,ba,th,pt,nl,tr) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS transfer:%s\n",tr->error_message); - nonlinear_free(nl); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } - if (spectra_init(&pr,ba,pt,pm,nl,tr,sp) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS spectra:%s\n",sp->error_message); - transfer_free(tr); - nonlinear_free(nl); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } - return 0; + if (transfer_init(&pr,ba,th,pt,nl,tr) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS transfer:%s\n",tr->error_message); + nonlinear_free(nl); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } + if (spectra_init(&pr,ba,pt,pm,nl,tr,sp) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS spectra:%s\n",sp->error_message); + transfer_free(tr); + nonlinear_free(nl); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } + return 0; } double CLASS_sigma8(struct spectra *sp, struct nonlinear *nl){ #ifndef CLASS_V29 @@ -685,129 +686,225 @@ void fprint_parser(struct file_content * fc,int parser_length){ } +int run_class_SNBAO( + struct file_content *fc, + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + struct precision pr; // for precision parameters + struct output op; /* for output files */ + ErrorMsg errmsg; // for error messages + + if(input_init(fc,&pr,ba,th,pt,tr,pm,sp,nl,le,&op,errmsg) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS input:%s\n",errmsg); + parser_free(fc); + return 1; + } + if (background_init(&pr,ba) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS background:%s\n",ba->error_message); + return 1; + } + if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); + background_free(ba); + return 1; + } + cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; + cosmology.rs_d = th->rs_d; + cosmology.h0 = ba->h; + return 0; +} +void free_class_structs_SNBAO( + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + if (thermodynamics_free(th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th->error_message); + } + if (background_free(ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba->error_message); + } +} -double p_class_inner(double k_coverh0,double a, int NL, int cdm_b, int nonlinear, int *status){ - static cosmopara C; - static double **table_P_L = 0; - static double **table_P_NL = 0; - static double **table_P_L_c = 0; - static double **table_P_NL_c = 0; - static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; - static int class_status = 0; - double val,klog; - - if (recompute_cosmo3D(C)){ - if (table_P_L ==0){ - table_P_L = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - table_P_L_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - table_P_NL_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - da = (1. - limits.a_min)/(Ntable.N_a-1.); - logkmin = log(limits.k_min_mpc*cosmology.coverH0); - logkmax = log(limits.k_max_mpc_class*cosmology.coverH0); - dk = (logkmax-logkmin)/(Ntable.N_k_nlin-1.); - } - //allocate CLASS structures - struct background ba; // for cosmological background - struct thermo th; // for thermodynamics - struct perturbs pt; // for source functions - struct transfers tr; // for transfer functions - struct primordial pm; // for primordial spectra - struct spectra sp; // for output spectra - struct nonlinear nl; // for non-linear spectra - struct lensing le; - struct output op; - - ErrorMsg errmsg; // for error messages - - struct file_content fc; - int parser_length = 30; - if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ - fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); - *status = 1; - return 0.; - } - for (int i =0; i < parser_length; i++){ - strcpy(fc.name[i]," "); - strcpy(fc.value[i]," "); - } - *status = fill_class_parameters(&fc,parser_length); - - switch(nonlinear){ - case 0: break; //use Halofit within CLASS - case 1: //use hmcode2020 within class - strcpy(fc.name[1],"non linear"); - strcpy(fc.value[1],"hmcode2020"); - break; - case 2: //use hmcode2020 with TAGN within class - strcpy(fc.name[1],"non linear"); - strcpy(fc.value[1],"hmcode2020"); //to use Halofit within CLASS - strcpy(fc.name[18],"hmcode2020log10tagn"); - //printf("log10Tagn, %e\n", cosmology.log10Tagn); - sprintf(fc.value[18],"%e",cosmology.log10Tagn); - break; - } - - if(*status>0) return 1; - *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - if(*status>0) { - fprint_parser(&fc,parser_length); +double p_class_SNBAO(int *status){ + static cosmopara C; + static int class_status = 0; + + if (recompute_cosmo3D(C)){ + //allocate CLASS structures + struct background ba; // for cosmological background + struct thermo th; // for thermodynamics + struct perturbs pt; // for source functions + struct transfers tr; // for transfer functions + struct primordial pm; // for primordial spectra + struct spectra sp; // for output spectra + struct nonlinear nl; // for non-linear spectra + struct lensing le; + struct output op; + + ErrorMsg errmsg; // for error messages + + struct file_content fc; + int parser_length = 30; + if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ + fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); + *status = 1; + return 0.; + } + for (int i =0; i < parser_length; i++){ + strcpy(fc.name[i]," "); + strcpy(fc.value[i]," "); + } + + *status = fill_class_parameters(&fc,parser_length); + if(*status>0) return 1; + *status = run_class_SNBAO(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if(*status>0) { + fprint_parser(&fc,parser_length); + parser_free(&fc); + return 1; + } parser_free(&fc); - return 1; - } - parser_free(&fc); - double aa,norm, k_class,Pk,ic, Pk_c; - int i,j,s; - aa = limits.a_min; - if (cosmology.A_s){ - norm = 3.*log(cosmology.h0/cosmology.coverH0); - cosmology.sigma_8 = (nl.sigma8[nl.index_pk_total]); - cosmology.sigma_8_cc = (nl.sigma8[nl.index_pk_cluster]); - } - else{ - norm = log(pow(cosmology.sigma_8/(nl.sigma8[nl.index_pk_total]),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); + if (*status ==0){ + free_class_structs_SNBAO(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + } + update_cosmopara(&C); } - //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); - if (*status ==0){ - for (i=0; i0) return 1; + *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if(*status>0) { + fprint_parser(&fc,parser_length); + parser_free(&fc); + return 1; + } + parser_free(&fc); + double aa,norm, k_class,Pk,ic, Pk_c; + int i,j,s; + aa = limits.a_min; + if (cosmology.A_s){ + norm = 3.*log(cosmology.h0/cosmology.coverH0); + cosmology.sigma_8 = (nl.sigma8[nl.index_pk_total]); + cosmology.sigma_8_cc = (nl.sigma8[nl.index_pk_cluster]); + } + else{ + norm = log(pow(cosmology.sigma_8/(nl.sigma8[nl.index_pk_total]),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); + } + //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); + if (*status ==0){ + for (i=0; i +double conc_Ludlow16_fit(double m, double a); +double conc_Ludlow16(double m, double a); + +// use this routine in inner I[0-1]j and modify int_rho_nfw if to work with different halo profiles, e.g. to include adiabatic contraction, AGN feedback, etc. +/*halo model building blocks */ +double I0j_y (int j, double k1, double k2, double k3, double k4, double a, int is_y[4]); +/*halo model matter power spectrum, bispectrum, trispectrum*/ +double p_1h_hmcode(double k, double a); +double p_2h_hmcode(double k, double a); +double Pdelta_hmcode_2020(double k, double a); +double P_my(double k,double a); + + +/* ********************* Routines for halo model ************* */ +/*++++++++++++++++++++++++++++++++++++++++* +* Variance of the density field * +*++++++++++++++++++++++++++++++++++++++++*/ + +double dlogsigma_dlogR(double m) +{ + double dlogm = 0.0001; + double logm = log(m); + double m1 = exp(logm + dlogm); + double dlogsigma2 = log(sigma2(m1) / sigma2(m)); + double dlogR = log(radius(m1) / radius(m)); + return 0.5 * dlogsigma2 / dlogR; +} +double dlogPlin_dlogk(double m) +{ + double k0 = 0.69* 2*M_PI / radius(m); + double dlogk = 0.001; + double k1 = exp(log(k0) + dlogk); + double dlogPlin = log(p_lin(k1,1.) / p_lin(k0,1.)); + return dlogPlin / dlogk; +} + + +/***************** halo profiles ***************/ +/******** mass-concentration relation **********/ +double conc(double m, double a) // for matter +{ +#ifdef LUDLOW16 + return conc_Ludlow16(m, a); +#endif +#ifdef LUDLOW16_FIT + return conc_Ludlow16_fit(m, a); +#endif + + double result; + double M0=pow(10,nuisance.gas_lgM0); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1 + (nuisance.gas_eps2 - nuisance.gas_eps1)/(1.+pow(M0/m, nuisance.gas_beta)) ); + } + return result; +} + +double conc_y(double m, double a) // for y field, with a separate set of gas parameters lgM0,beta,eps1,eps2. +// ONLY USED FOR TEST_CALIB +{ + double result; + double M0=pow(10,nuisance.gas_lgM0_v2); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) - If use this, set c_max=50 !! + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1_v2 + (nuisance.gas_eps2_v2 - nuisance.gas_eps1_v2)/(1.+pow(M0/m, nuisance.gas_beta_v2)) ); + } + return result; +} + +#ifdef LUDLOW16_FIT +double conc_Ludlow16_fit(double m, double a) +// Ludlow16 fit at Planck cosmology +{ + double c0, beta, gamma1, gamma2, nu0; + c0 = 3.395 * pow(a, 0.215); + beta = 0.307 * pow(a, -0.540); + gamma1 = 0.628 * pow(a, 0.047); + gamma2 = 0.317 * pow(a, 0.893); + double a2 = a*a; + nu0 = (4.135 - 0.564 / a - 0.210 / a2 + 0.0557 / (a2*a) - 0.00348 / (a2*a2)) * growfac(1.) / growfac(a); + double nu_nu0_ratio = nu(m,a) / nu0; + return c0 * pow(nu_nu0_ratio, -gamma1) * pow(1+ pow(nu_nu0_ratio, 1./beta), -beta*(gamma2-gamma1)); +} +#endif + + +#ifdef LUDLOW16 +double conc_Ludlow16(double m, double a) +{ + static double **table=0; + static int N_c = 30, N_a = 50; + static double c_min = 0.608, c_max = 50.; // the method produces cmin ~0.607 + static double a_min, a_max = 0.999; + static double dc, da; + static double C_Ludlow = 650., f_Ludlow = 0.02; + double cc, aa; + double M2, c3; + double af, rho_2; + int i, j; + printf("here!\n"); + if (table==0) { + table = create_double_matrix(0, N_c-1, 0, N_a-1); + a_min = limits.a_min_hm; + dc = (c_max-c_min) / (N_c - 1); + da = (a_max - a_min) / (N_a - 1); + printf("here!-\n"); + for (i=0; i= a_max) {a = a_max;} + + int ia = floor((a - a_min) / da); + double frac_high = (a - (a_min + ia * da)) / da; + double table_interp[N_c]; + + if (ia == N_a-1) { + ia--; + frac_high = 0; + } + + double LHS, sig2rf, sig2r; + sig2r = sigma2(m); + sig2rf = sigma2(f_Ludlow * m); + LHS = sqrt(2.* (sig2rf - sig2r)); + printf("here!!!\n"); + for (i=0; icmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + // printf("c, x = %le, %le\n",c,x); + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + +/*********** FT of bound gas K-S Profile (sinc integral part) **************/ + +double int_KS(double r, void *params){//Fourier kernel * K-S profile, integrand for u_KS + double *array = (double*)params; + double k = array[0]; + double c = array[1]; + double rv = array[2]; + double rs =rv/c; + double x = r/rs; + return r*sinl(k*r)/k*pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} + +double u_KS(double c, double k, double rv){ + // FFT density of K-S profile, truncated at r_Delta, through direct integration + // use this routine in inner I[0-1]j and modify int_KS to work with different halo profiles + + double array[3] ={k,c,rv}; + return int_gsl_integrate_medium_precision(int_KS, (void*)array, 0,rv,NULL, 5000); +} + +double int_F_KS(double x, void *params){ + double *array = (double*)params; + double y = array[0]; + return x*sinl(x*y)/y * pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} +double F_KS(double c, double kr_s){ + double array[1] ={kr_s}; + return int_gsl_integrate_medium_precision(int_F_KS, (void*)array, 0,c,NULL, 5000); +} + +#ifdef RUN_FFT +void fft_F_KS(double *c_arr, int Nc, double *krs_arr, int Nx, double **F) { + config fftconfig; + fftconfig.nu = 1.01; + fftconfig.c_window_width = 0.25; + fftconfig.derivative = 0; + fftconfig.N_pad = 0; + fftconfig.N_extrap_low = 0; + fftconfig.N_extrap_high = 0; + + int ell=0; // spherical bessel order + double x[Nx]; + int i,j; + for(i=0;ic_arr[j] ? 0 : pow(x[i],3)*pow(log(1.+x[i])/x[i], nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); + // fprintf(output, "%le %le %le\n", c_arr[j], x[i], fx[j][i]); + } + } + // fclose(output); + // exit(0); + + cfftlog_multiple(x, fx, Nx, Nc, &fftconfig, ell, krs_arr, F); + for(j=0;jcmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + + + +double int_KS_norm(double r, void *params){//normalization of u_KS + double *array = (double*)params; + double c = array[0]; + double rv = array[1]; + double rs =rv/c; + double x = r/rs; + return r*r*pow(log(1.+x)/x, 1./(nuisance.gas_Gamma_KS-1.)); +} + +double KS_norm(double c, double rv){ + + double array[2] ={c,rv}; + return int_gsl_integrate_medium_precision(int_KS_norm, (void*)array, 0,rv,NULL, 1000); +} + +double frac_bnd(double m){ + double M0=pow(10,nuisance.gas_lgM0); + return cosmology.omb / cosmology.Omega_m / (1.+ pow(M0/m, nuisance.gas_beta)); +} +double frac_ejc(double m){ + double M0=pow(10,nuisance.gas_lgM0); + double lgm=log10(m); + double frac_star = nuisance.gas_A_star * exp(-0.5* pow((lgm - nuisance.gas_lgM_star)/nuisance.gas_sigma_star,2)); + if(lgm>nuisance.gas_lgM0 && frac_star0.999) aa=.999; + klog = logkmin; + // t1=clock(); + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return Pdelta_hmcode_2020(k,limits.a_min_hm)*pow(growfac(a)/growfac(limits.a_min_hm),2);} + if (a > 0.999){return Pdelta_hmcode_2020(k,0.999)*pow(growfac(a)/growfac(0.999),2);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_yy(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + int i,j; + double p1, p2; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_yy(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_my(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + double p1,p2; + int i,j; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + // if(i==N_a-1){ + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_my(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return (val); +} +#endif + +/****************** Lookup table for 1-halo term super-sample covariance/halo sample variance term**********/ + + +double I12_SSC_yy (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,-2,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=array[8]=-2.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + +double I12_SSC_my (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,0,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=-2.; + // array[8]=0.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + + + + + diff --git a/theory/recompute.c b/theory/recompute.c index f1353339..20a2df81 100644 --- a/theory/recompute.c +++ b/theory/recompute.c @@ -36,6 +36,7 @@ void update_cosmopara (cosmopara *C){ C->MGmu = cosmology.MGmu; C->M_nu = cosmology.M_nu; C->theta_s = cosmology.theta_s; + C->log10Tagn =cosmology.log10Tagn; } void update_galpara (galpara *G){ @@ -105,6 +106,7 @@ void update_nuisance (nuisancepara *N){ for (int _i = 0; _i < nuisance.N_cluster_selection; ++_i){ N->cluster_selection[_i] = nuisance.cluster_selection[_i]; } + N->cluster_b2=cbias.b2[2]; } int recompute_expansion(cosmopara C){ //rules for recomputing growth factor & comoving distance if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} @@ -124,7 +126,7 @@ int recompute_Delta(cosmopara C){ //rules for recomputing early time power spect } int recompute_cosmo3D(cosmopara C){ - if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} + if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu || C.log10Tagn!=cosmology.log10Tagn){return 1;} if (cosmology.A_s){ if(C.A_s != cosmology.A_s){return 1;} } @@ -135,7 +137,7 @@ int recompute_cosmo3D(cosmopara C){ return 0; } int recompute_cosmo3D_CLASS(cosmopara C){ - if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} + if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu || C.log10Tagn!=cosmology.log10Tagn){return 1;} if (cosmology.A_s > 0){ if(C.A_s != cosmology.A_s){return 1;} } @@ -195,6 +197,9 @@ int recompute_clusters(cosmopara C, nuisancepara N){ int recompute_DESclusters(cosmopara C, nuisancepara N){ if (recompute_cosmo3D(C)) return 1; + if (N.cluster_b2!=cbias.b2[2]){ + return 1; + } for (int _i = 0; _i < nuisance.N_cluster_MOR; ++_i){ if (N.cluster_MOR[_i] !=nuisance.cluster_MOR[_i] ) return 1; } diff --git a/theory/structs.c b/theory/structs.c index 42c16e0a..65511862 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -25,6 +25,7 @@ typedef struct { int Planck18_BAO_w0wa; //CH int Planck18_w0; //CH int BAO; + int SN; int SN_WFIRST; int GRS; int SRD; @@ -49,7 +50,7 @@ typedef struct { int theta_s; int Ytransform; }likepara; -likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0}; +likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0, .SN=0}; typedef struct { double Omega_m; /* matter density parameter */ @@ -70,11 +71,12 @@ typedef struct { double MGSigma; double MGmu; double theta_s; + double rs_d; // comoving sound horizon at baryon drag double Tcmb; double sigma_8_cc; /*sigma_8 of cold dark matter and baryon*/ double log10Tagn; }cosmopara; -cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0, .Tcmb=2.728, .sigma_8_cc=0.,.log10Tagn=0.}; +cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0, .Tcmb=2.728, .sigma_8_cc=0.,.log10Tagn=0., .rs_d=0}; typedef struct { int shear_Nbin; // number of tomography bins @@ -275,6 +277,7 @@ typedef struct { double cluster_MOR[10]; int N_cluster_selection; double cluster_selection[10]; + double cluster_b2; } nuisancepara; nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, @@ -286,6 +289,7 @@ nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, .bias_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .sigma_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, + .cluster_b2=-1 }; @@ -392,6 +396,7 @@ typedef struct input_nuisance_params_mpp { double MOR[10]; double selection[10]; double b_mag[10]; + double pm[10]; } input_nuisance_params_mpp; typedef struct input_HOD_params { @@ -490,3 +495,9 @@ typedef struct { int Nchi; } fft_optimize; fft_optimize fft_int; + + +typedef struct{ + double b2[10]; /* quadratic bias parameter for redshift bin i */ +}clpara; +clpara cbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; From 61224ec65f5470dbf074d4072cc058a98654eed6 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Tue, 28 May 2024 03:54:01 -0700 Subject: [PATCH 11/24] clean --- theory/.basics.c.swp | Bin 16384 -> 0 bytes theory/.coefficients.c.swp | Bin 16384 -> 0 bytes theory/.cosmo2D_exact.c.swp | Bin 16384 -> 0 bytes theory/.cosmo3D.c.swo | Bin 16384 -> 0 bytes theory/.cosmo3D.c.swp | Bin 114688 -> 0 bytes theory/.pt_cfastpt.c.swp | Bin 16384 -> 0 bytes theory/.structs.c.swo | Bin 16384 -> 0 bytes theory/.structs.c.swp | Bin 36864 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 theory/.basics.c.swp delete mode 100644 theory/.coefficients.c.swp delete mode 100644 theory/.cosmo2D_exact.c.swp delete mode 100644 theory/.cosmo3D.c.swo delete mode 100644 theory/.cosmo3D.c.swp delete mode 100644 theory/.pt_cfastpt.c.swp delete mode 100644 theory/.structs.c.swo delete mode 100644 theory/.structs.c.swp diff --git a/theory/.basics.c.swp b/theory/.basics.c.swp deleted file mode 100644 index 538dea0af5d91cb0c39066414ae49fbfc6a9bea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 R*yEU{lozdm9Opz^{u?N9j2i#| diff --git a/theory/.coefficients.c.swp b/theory/.coefficients.c.swp deleted file mode 100644 index 55ca9170d61e61ff784a3ace4b916a595dfeaa5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/theory/.cosmo2D_exact.c.swp b/theory/.cosmo2D_exact.c.swp deleted file mode 100644 index 99a5d1df72efa137f2382cf28f80e481188b169a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/theory/.cosmo3D.c.swp b/theory/.cosmo3D.c.swp deleted file mode 100644 index 0ffdab70f6c50e6cd89f13a5e4c2ede540c23d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114688 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%0DYazo4iC27U>CR} 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 diff --git a/theory/.pt_cfastpt.c.swp b/theory/.pt_cfastpt.c.swp deleted file mode 100644 index 5ae6a634c45460e105d9a2ef652f5abcf0666995..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2PmCMY9mgLf&;UuHp@-5+)nlVg#$K;IV{b|u<5auuCYV2|1*SyZER(Tk);rzV z8P}dA8wFaCLr-w15CYT_sZe_Y#3AaTy;SNSxV7ntR*KY1|4FUHfu2hE{@!~tp6uGm zIuS^~v-Gjw%zN{G?|tVtzxQX{Hox0=gx^=3WBA;~*gdD8JoQp%&#%8|G1gg)BRYMp z&tTQ8%$k+3GFSA&czo#}QiY{XmKr8UcR3Pr{ zVn0IDKc|}ief4|Omfy?j^8;J#s$=Gkf&%m?51~u?i z@V_rGb{1UT%h>DSCm;j?I1DWCHE?MUV?PFWft$hQI~Y3;mcduRUT_<@bUS0Og6BX0 z8ekFBK_1)<-oK5pzkr{DCqNPG27lYl*t_7*;39YpJP*!+Hdp{(2K&H!pJ(h(;1}RL zI0xF`8=wsKf%k4@><{2K;5;}7PJl+^cG~v*!jiR&)-%rgUcAu{ zc~Z)tY}axt1yT5Tfd^4{ZQT!5!r3fvH|VYv2yPY&W-(VqHU0`WaEjlbl;=-B&FRFE znmprd=FTcxX0b|^Rcon`C}RxUO*K*x6dGn*FjZ20%*oc-J+E)OUWdx_#EziSyux=QDs7b z#3Pbl>5F0*fD=As*B>yG*q;szJTL%M$ZoX(C{{UG*`$KtfHy%sXX$N9P$Yf9EPKRs(h}1V1Ypq zfg&3+XhJemqoGmUhn>$Gq^ppUMk0UGo$Mb|52FFnLl1M|DJAJua6ule@IDRdhtYM> zq2&Ham)hPlD0dOw7vtLWzlzP?2&rgs!h998I_Sb87`h^w61Jb+C|Zv^g4N@?)Yah0fdwT^??%x4k}T-}b|Sa2MFi-T?znnZwM<$~^O>w0F5YCDTUnduy^U(tYH_ zn!Jb{ixgAAN<0s^Qbnt6@hO>lskkH`lw_6-A$y(Gd^#B{s)>3!W0MgosZ^9k4eGcx z-)h;%8usG02_5F-vcXQ8sw1wbll5|%Y}>H|;j(1P^UJu(xWoR~_q{^;M)G3q@^M$LIpb`G+B}T5?(tAW!M$X~4 zlo)AcKc1do!}a)-T#4B2N*EMZrx>mO|BrR=Ke0Zh^?&ky{vE9IUjZ+Jmw*LKuphjM zwf`I7G4Kdz00SHV)8Hc3{x5@P!IR(^*at3R58whg1HK22f*iOV{0sX4zXBJ)i{K=f z0eNr-xPUzX2b=WRwl&Y>&4=(N%8N2gbuj^X4=Nzy9j3Uldx25kUf-MFLIA<{3!E0Jry z6iF8Dlf4+Z)~gYfKknrS=VSMi$U&0Lp~k#?JtAFZ>@L#{y&@r9>t$N2o3tB3E+`J* zo}yml(<+(!13u_^9e>65T4DD#PdpCTC72N=MFO#NK}3jc(Gl4qI@0n#KPLEDlRcwQls?p7QM-|ZAF?q+n+_rx s;RlgwoXu}eW|Is`cgw^+**7bnnoR7D>F1%zY|6O#kwzP{Xd={n2-->5`2YX_ diff --git a/theory/.structs.c.swo b/theory/.structs.c.swo deleted file mode 100644 index 19e8676aa8bbb7723aa4fa1186af741617151031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Q?T}1i#?ETi132t|09d1rC;$Ke diff --git a/theory/.structs.c.swp b/theory/.structs.c.swp deleted file mode 100644 index 18968fab050ff891e03459746ab240c9af64db60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 Date: Fri, 7 Jun 2024 14:57:46 -0700 Subject: [PATCH 12/24] add maglim stretch parameter --- theory/recompute.c | 3 ++- theory/redshift_spline.c | 29 ++++++++++++++++++++++++++--- theory/structs.c | 2 ++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/theory/recompute.c b/theory/recompute.c index 0ce9bf70..54e34dc4 100644 --- a/theory/recompute.c +++ b/theory/recompute.c @@ -84,6 +84,7 @@ void update_nuisance (nuisancepara *N){ N-> fred[i] = nuisance.fred[i]; N->sigma_zphot_clustering[i] = nuisance.sigma_zphot_clustering[i]; N->bias_zphot_clustering[i] = nuisance.bias_zphot_clustering[i]; + N->stretch_zphot_clustering[i] = nuisance.stretch_zphot_clustering[i]; } for(i = 0; i < tomo.shear_Nbin; i++){ N->sigma_zphot_shear[i] = nuisance.sigma_zphot_shear[i]; @@ -197,7 +198,7 @@ int recompute_zphot_clustering(nuisancepara N){ if (redshift.clustering_photoz != 3 && redshift.clustering_photoz != 4){return 0;} int i, res = 0; for(i = 0; i < tomo.clustering_Nbin; i++){ - if (N.sigma_zphot_clustering[i]!= nuisance.sigma_zphot_clustering[i] || N.bias_zphot_clustering[i]!= nuisance.bias_zphot_clustering[i]){ res = 1;} + if (N.sigma_zphot_clustering[i]!= nuisance.sigma_zphot_clustering[i] || N.bias_zphot_clustering[i]!= nuisance.bias_zphot_clustering[i] || N.stretch_zphot_clustering[i]!= nuisance.stretch_zphot_clustering[i]){ res = 1;} } return res; } diff --git a/theory/redshift_spline.c b/theory/redshift_spline.c index 8660e12e..f3edfdf0 100644 --- a/theory/redshift_spline.c +++ b/theory/redshift_spline.c @@ -796,10 +796,23 @@ double pf_histo_n(double z, void *params) //return pf(z,j) based on redshift fi } return 0.; } + +double int_for_zmean_histo_n(double z, void* params) +{ + double* ar = (double*) params; + return z * pf_histo_n(z, (void *)ar); +} + +double norm_for_zmean_histo_n(double z, void* params) +{ + double* ar = (double*) params; + return pf_histo_n(z, (void *)ar); +} double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j { static double **table = 0; static double *z_v = 0; + static double *zmean_tomo = 0; static double da = 0.0; static double zhisto_max,zhisto_min; static nuisancepara N; @@ -942,8 +955,14 @@ double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned for (k = 0;k= z_v[zbins-1]) return 0.0; - return fabs(gsl_spline_eval(photoz_splines[j+1],zz,photoz_accel[j+1])); + double res= fabs(gsl_spline_eval(photoz_splines[j+1],zz,photoz_accel[j+1])); + if (redshift.clustering_photoz == 4){ + res = res/nuisance.stretch_zphot_clustering[j]; + } + return res; } /*********** routines calculating the number of source and lens galaxies per bin ****************/ diff --git a/theory/structs.c b/theory/structs.c index 76f38a58..6dc9d69a 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -257,6 +257,7 @@ typedef struct { double bias_zphot_shear[10]; double sigma_zphot_clustering[10]; double bias_zphot_clustering[10]; + double stretch_zphot_clustering[10]; double sigma_zphot_magnification[10]; double bias_zphot_magnification[10]; double LF_alpha; @@ -316,6 +317,7 @@ nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, .bias_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .sigma_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, + .stretch_zphot_clustering = {1.,1.,1.,1.,1.,1.,1.,1.,1.,1.}, .bary = {0.0, 0.0, 0.0}, .frac_lowz = 0., .frac_highz = 0., From 54d59cd7a92f6e0f93b9b92d9b1b70d02a98eb53 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Thu, 4 Jul 2024 12:27:29 -0700 Subject: [PATCH 13/24] upgrade medium integration precision by a factor of 4; increase N_a. N_ell, and N_theta interpolation sampling density --- theory/basics.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/theory/basics.c b/theory/basics.c index d84de0a8..45123c7f 100644 --- a/theory/basics.c +++ b/theory/basics.c @@ -88,7 +88,7 @@ typedef struct { pre precision= { 1e-2, //low - 1e-3, //medium + 1e-3/4., //medium 1e-5, //high 1e-7 //insane }; @@ -152,11 +152,11 @@ typedef struct { Ntab Ntable = { -100, //N_a !!!!!!DO NOT F!@#$ING DECREASE THIS NUMBER UNLESS YOU ARE ELISABETH AND HAVE ASKED TIM BEFORE!!!! +400,//100, //N_a !!!!!!DO NOT F!@#$ING DECREASE THIS NUMBER UNLESS YOU ARE ELISABETH AND HAVE ASKED TIM BEFORE!!!! 500, //N_k_lin 500, //N_k_nlin -200, //N_ell -200, //N_theta +400,//200, //N_ell +250,//200, //N_theta 2048, //N_theta for Hankel 1000, //N_S2 1000, //N_DS From 1a33117b6d3e7ed5ca79213366aa142c15130150 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Thu, 4 Jul 2024 12:28:16 -0700 Subject: [PATCH 14/24] C_cl_lin_nointerp: from medium precision to high precision --- theory/cosmo2D_exact_fft.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/theory/cosmo2D_exact_fft.c b/theory/cosmo2D_exact_fft.c index 11ea957c..a8b53ca3 100644 --- a/theory/cosmo2D_exact_fft.c +++ b/theory/cosmo2D_exact_fft.c @@ -41,7 +41,7 @@ double C_cl_lin_nointerp(double l, int ni, int nj) //galaxy clustering power sp { double array[3] = {1.0*ni,1.0*nj,l}; // return int_gsl_integrate_medium_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),fmin(amax_lens(ni),amax_lens(nj)),NULL,1000); - return int_gsl_integrate_medium_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),0.99999,NULL,1000); + return int_gsl_integrate_high_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),0.99999,NULL,1000); } // test for replacing Plin with Pdelta and rescaled @@ -941,4 +941,4 @@ double w_gamma_t_nonLimber(int nt, int ni, int nj){ } return w_vec[N_ggl(ni,nj)*like.Ntheta+nt]; } -*/ \ No newline at end of file +*/ From 78a186559d75f8a2d5aa1936f066d4cb744068c6 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Thu, 4 Jul 2024 12:29:25 -0700 Subject: [PATCH 15/24] print tomo zhist zmean for lens galaxy in pf_photoz --- theory/redshift_spline.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/theory/redshift_spline.c b/theory/redshift_spline.c index f3edfdf0..b6c985af 100644 --- a/theory/redshift_spline.c +++ b/theory/redshift_spline.c @@ -959,8 +959,10 @@ double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned if(zmean_tomo==0){ zmean_tomo = create_double_vector(0, zbins-1); for(int j=0; j Date: Thu, 4 Jul 2024 12:55:45 -0700 Subject: [PATCH 16/24] Upgrade NTAB_TATT from 60 to 400, and ungrade integration precision from low to medium for C_EE_TATT/C_reduced_shear/C_BB_TATT/C_ggl_TATT --- theory/cosmo2D_fullsky_TATT.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/theory/cosmo2D_fullsky_TATT.c b/theory/cosmo2D_fullsky_TATT.c index f8f1fe55..0094602c 100644 --- a/theory/cosmo2D_fullsky_TATT.c +++ b/theory/cosmo2D_fullsky_TATT.c @@ -13,7 +13,7 @@ int LMAX = 100000; //ell_min for switching from exact evalution of C(ell) to interpolated look-up table int LMIN_tab =20; //number of grid point for C(ell) look-up tables -int NTAB_TATT = 60; +int NTAB_TATT = 400;//60 v.s. 400; double C_source[4] ={-1.165,-0.641,-0.547,0.803}; /* NLA/TA amplitude C1, nz argument only need if per-bin amplitude*/ double C1_TA(double a, double nz){ @@ -162,8 +162,8 @@ double int_for_C_ggl_IA_TATT(double a, void *params){ double C_EE_TATT(double l, int ni,int nj){ double array[3] = {(double) ni, (double) nj, l}; // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),amax_source(ni),NULL,1000); - // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.99999,NULL,1000); - double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.998,NULL,1000); + double EE = int_gsl_integrate_medium_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 + //double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,0.95,0.99,NULL,1000); return EE; } @@ -171,7 +171,7 @@ double C_EE_TATT(double l, int ni,int nj){ double C_reduced_shear(double l, int ni,int nj){ double array[3] = {(double) ni, (double) nj, l}; // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),amax_source(ni),NULL,1000); - double EE = int_gsl_integrate_low_precision(int_for_C_reduced_shear,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.99999,NULL,1000); + double EE = int_gsl_integrate_medium_precision(int_for_C_reduced_shear,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.98,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,0.95,0.99,NULL,1000); return EE; @@ -180,14 +180,14 @@ double C_reduced_shear(double l, int ni,int nj){ double C_BB_TATT(double l, int ni, int nj){ double array[3] = {(double) ni, (double) nj, l}; // return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),fmin(amax_source_IA(ni),amax_source_IA(nj)),NULL,1000); - return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.998,NULL,1000); + return int_gsl_integrate_medium_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 } double C_ggl_TATT(double l, int nl, int ns) { double array[3] = {(double) nl, (double) ns, l}; // double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),amax_lens(nl),NULL,1000); - double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),0.99999,NULL,1000); + double gE = int_gsl_integrate_medium_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),0.999,NULL,1000);//0.99999 return gE; } /*************** look-up tables for angular correlation functions ***************/ From 0741d587880cc443f36875fe7156e42873930bb5 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Sun, 7 Jul 2024 04:41:05 -0400 Subject: [PATCH 17/24] add interface function to set prior on lens photoz stretch --- theory/priors_mpp.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/theory/priors_mpp.c b/theory/priors_mpp.c index 9509763f..859898ab 100644 --- a/theory/priors_mpp.c +++ b/theory/priors_mpp.c @@ -1,6 +1,7 @@ void set_shear_priors_mpp(double *mean_m,double *sigma_m); void set_wlphotoz_priors_mpp(double *bias_photoz_s,double *sigma_photoz_s); void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_photoz_l); +void set_clphotozstretch_priors_mpp(double *stretch_photoz_l,double *sigma_stretch_photoz_l); void set_ia_priors_mpp(double A_min, double A_max); void set_b1_priors_mpp(double b1_min, double b1_max); @@ -62,5 +63,18 @@ void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_b_photoz_l){ printf("\n"); } - +void set_clphotozstretch_priors_mpp(double *stretch_photoz_l,double *sigma_stretch_photoz_l){ + printf("Setting Gaussian Priors on lens n(z) stretch\n"); + for (int i=0;i<10; i++){ + prior.stretch_zphot_clustering[i][0] = stretch_photoz_l[i]; + prior.stretch_zphot_clustering[i][1] = sigma_stretch_photoz_l[i]; + if (sigma_stretch_photoz_l[i]) { + printf("zn = %d (mean,sigma) = (%e, %e)\n",i, + prior.stretch_zphot_clustering[i][0], + prior.stretch_zphot_clustering[i][1]); + like.clphotoz=1; + } + } + printf("\n"); +} From 4d427c6e38ed4fb88e461c13bb9a45db13183d95 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Sun, 7 Jul 2024 04:41:33 -0400 Subject: [PATCH 18/24] add lens photoz stretch prior param --- theory/structs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/theory/structs.c b/theory/structs.c index 6dc9d69a..9a0c3622 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -358,6 +358,7 @@ typedef struct { //two parameters for each nuisance parameter: Center (prior.*[0 double bias_zphot_shear[10][2]; double sigma_zphot_clustering[10][2]; double bias_zphot_clustering[10][2]; + double stretch_zphot_clustering[10][2]; double sigma_zphot_magnification[10][2]; double bias_zphot_magnification[10][2]; double cluster_Mobs_lgM0[2]; @@ -403,6 +404,7 @@ priorpara prior = { .bias_zphot_shear = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, .sigma_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, .bias_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, +.stretch_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, .bary_Q1 = {0.,0.}, .bary_Q2 = {0.,0.}, .bary_Q3 = {0.,0.} From 6c9161707dc4e5443d9bb3aa00b260f2a173e7ba Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Fri, 13 Sep 2024 07:25:27 -0700 Subject: [PATCH 19/24] add Cholesky warning --- theory/basics.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/theory/basics.c b/theory/basics.c index 45123c7f..b9eb6a16 100644 --- a/theory/basics.c +++ b/theory/basics.c @@ -209,8 +209,17 @@ void SVD_inversion(gsl_matrix *cov, gsl_matrix *inverseSVD,int Nmatrix) void invert_matrix_colesky(gsl_matrix *A) { - gsl_linalg_cholesky_decomp (A); // Adummy will be overwritten */ - gsl_linalg_cholesky_invert (A); + int status = 0; + status = gsl_linalg_cholesky_decomp (A); // Adummy will be overwritten */ + if (status!=0){ + printf("invert_matrix_colesky Error %d!\nAbort...", status); + exit(-1); + } + status = gsl_linalg_cholesky_invert (A); + if (status!=0){ + printf("invert_matrix_colesky Error %d!\nAbort...", status); + exit(-1); + } } From b8211ee32ecddec98213c8a7d957440eefee6231 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Fri, 13 Sep 2024 07:27:39 -0700 Subject: [PATCH 20/24] restore the default precision: the difference we see in DES Y3 is mostly due to hard-coded BBN prior --- theory/cosmo2D_exact_fft.c | 2 +- theory/cosmo2D_fullsky_TATT.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/theory/cosmo2D_exact_fft.c b/theory/cosmo2D_exact_fft.c index a8b53ca3..cdaa4b68 100644 --- a/theory/cosmo2D_exact_fft.c +++ b/theory/cosmo2D_exact_fft.c @@ -41,7 +41,7 @@ double C_cl_lin_nointerp(double l, int ni, int nj) //galaxy clustering power sp { double array[3] = {1.0*ni,1.0*nj,l}; // return int_gsl_integrate_medium_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),fmin(amax_lens(ni),amax_lens(nj)),NULL,1000); - return int_gsl_integrate_high_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),0.99999,NULL,1000); + return int_gsl_integrate_medium_precision(int_for_C_cl_lin,(void*)array,fmax(amin_lens(ni),amin_lens(nj)),0.99999,NULL,1000); } // test for replacing Plin with Pdelta and rescaled diff --git a/theory/cosmo2D_fullsky_TATT.c b/theory/cosmo2D_fullsky_TATT.c index 0094602c..02ef67af 100644 --- a/theory/cosmo2D_fullsky_TATT.c +++ b/theory/cosmo2D_fullsky_TATT.c @@ -162,7 +162,7 @@ double int_for_C_ggl_IA_TATT(double a, void *params){ double C_EE_TATT(double l, int ni,int nj){ double array[3] = {(double) ni, (double) nj, l}; // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),amax_source(ni),NULL,1000); - double EE = int_gsl_integrate_medium_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 + double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 //double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,0.95,0.99,NULL,1000); return EE; @@ -171,7 +171,7 @@ double C_EE_TATT(double l, int ni,int nj){ double C_reduced_shear(double l, int ni,int nj){ double array[3] = {(double) ni, (double) nj, l}; // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),amax_source(ni),NULL,1000); - double EE = int_gsl_integrate_medium_precision(int_for_C_reduced_shear,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000); + double EE = int_gsl_integrate_low_precision(int_for_C_reduced_shear,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.98,NULL,1000); // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,0.95,0.99,NULL,1000); return EE; @@ -180,14 +180,14 @@ double C_reduced_shear(double l, int ni,int nj){ double C_BB_TATT(double l, int ni, int nj){ double array[3] = {(double) ni, (double) nj, l}; // return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),fmin(amax_source_IA(ni),amax_source_IA(nj)),NULL,1000); - return int_gsl_integrate_medium_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 + return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.999,NULL,1000);//0.99999 } double C_ggl_TATT(double l, int nl, int ns) { double array[3] = {(double) nl, (double) ns, l}; // double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),amax_lens(nl),NULL,1000); - double gE = int_gsl_integrate_medium_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),0.999,NULL,1000);//0.99999 + double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),0.999,NULL,1000);//0.99999 return gE; } /*************** look-up tables for angular correlation functions ***************/ From e772e61e8ab9d153f41cb6f002160110a3968d6d Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Mon, 11 Nov 2024 08:43:23 -0800 Subject: [PATCH 21/24] just in case --- class/explanatory.ini | 4 +- .../cambvsclass-v2-checkpoint.ipynb | 363 +- class/notebooks/Test HMcode2020.ipynb | 60 +- class/notebooks/cambvsclass-v2.ipynb | 350 +- class/source/.input.c.swo | Bin 0 -> 16384 bytes class_old/Makefile | 203 + class_old/bbn/sBBN.dat | 313 + class_old/build/.base | 0 class_old/explanatory.ini | 774 ++ class_old/include/arrays.h | 441 + class_old/include/background.h | 556 ++ class_old/include/class.h | 34 + class_old/include/common.h | 806 ++ class_old/include/dei_rkck.h | 123 + class_old/include/evolver_ndf15.h | 125 + class_old/include/evolver_rkck.h | 54 + class_old/include/growTable.h | 47 + .../include/hermite3_interpolation_csource.h | 166 + .../include/hermite4_interpolation_csource.h | 163 + .../include/hermite6_interpolation_csource.h | 176 + class_old/include/hyperspherical.h | 192 + class_old/include/input.h | 287 + class_old/include/lensing.h | 323 + class_old/include/nonlinear.h | 118 + class_old/include/output.h | 202 + class_old/include/parser.h | 125 + class_old/include/perturbations.h | 799 ++ class_old/include/primordial.h | 533 ++ class_old/include/quadrature.h | 112 + class_old/include/sparse.h | 69 + class_old/include/spectra.h | 411 + class_old/include/svnversion.h | 1 + class_old/include/thermodynamics.h | 688 ++ class_old/include/transfer.h | 673 ++ class_old/main/class.c | 172 + class_old/source/.spectra.c.swp | Bin 0 -> 16384 bytes class_old/source/background.c | 2194 +++++ class_old/source/input.c | 3956 ++++++++ class_old/source/lensing.c | 1916 ++++ class_old/source/nonlinear.c | 702 ++ class_old/source/output.c | 1674 ++++ class_old/source/perturbations.c | 8147 +++++++++++++++++ class_old/source/primordial.c | 3458 +++++++ class_old/source/spectra.c | 3502 +++++++ class_old/source/thermodynamics.c | 3587 ++++++++ class_old/source/transfer.c | 5015 ++++++++++ class_old/tools/arrays.c | 3132 +++++++ class_old/tools/common.c | 32 + class_old/tools/dei_rkck.c | 238 + class_old/tools/evolver_ndf15.c | 1638 ++++ class_old/tools/evolver_rkck.c | 178 + class_old/tools/growTable.c | 161 + .../tools/hermite3_interpolation_csource.h | 166 + .../tools/hermite4_interpolation_csource.h | 163 + .../tools/hermite6_interpolation_csource.h | 176 + class_old/tools/hyperspherical.c | 1766 ++++ class_old/tools/parser.c | 677 ++ class_old/tools/quadrature.c | 839 ++ class_old/tools/sparse.c | 628 ++ 59 files changed, 53240 insertions(+), 168 deletions(-) create mode 100644 class/source/.input.c.swo create mode 100644 class_old/Makefile create mode 100644 class_old/bbn/sBBN.dat create mode 100644 class_old/build/.base create mode 100644 class_old/explanatory.ini create mode 100644 class_old/include/arrays.h create mode 100644 class_old/include/background.h create mode 100644 class_old/include/class.h create mode 100644 class_old/include/common.h create mode 100644 class_old/include/dei_rkck.h create mode 100644 class_old/include/evolver_ndf15.h create mode 100644 class_old/include/evolver_rkck.h create mode 100644 class_old/include/growTable.h create mode 100644 class_old/include/hermite3_interpolation_csource.h create mode 100644 class_old/include/hermite4_interpolation_csource.h create mode 100644 class_old/include/hermite6_interpolation_csource.h create mode 100644 class_old/include/hyperspherical.h create mode 100644 class_old/include/input.h create mode 100644 class_old/include/lensing.h create mode 100644 class_old/include/nonlinear.h create mode 100644 class_old/include/output.h create mode 100644 class_old/include/parser.h create mode 100644 class_old/include/perturbations.h create mode 100644 class_old/include/primordial.h create mode 100644 class_old/include/quadrature.h create mode 100644 class_old/include/sparse.h create mode 100644 class_old/include/spectra.h create mode 100644 class_old/include/svnversion.h create mode 100644 class_old/include/thermodynamics.h create mode 100644 class_old/include/transfer.h create mode 100644 class_old/main/class.c create mode 100644 class_old/source/.spectra.c.swp create mode 100644 class_old/source/background.c create mode 100644 class_old/source/input.c create mode 100644 class_old/source/lensing.c create mode 100644 class_old/source/nonlinear.c create mode 100644 class_old/source/output.c create mode 100644 class_old/source/perturbations.c create mode 100644 class_old/source/primordial.c create mode 100644 class_old/source/spectra.c create mode 100644 class_old/source/thermodynamics.c create mode 100644 class_old/source/transfer.c create mode 100644 class_old/tools/arrays.c create mode 100644 class_old/tools/common.c create mode 100644 class_old/tools/dei_rkck.c create mode 100644 class_old/tools/evolver_ndf15.c create mode 100644 class_old/tools/evolver_rkck.c create mode 100644 class_old/tools/growTable.c create mode 100644 class_old/tools/hermite3_interpolation_csource.h create mode 100644 class_old/tools/hermite4_interpolation_csource.h create mode 100644 class_old/tools/hermite6_interpolation_csource.h create mode 100644 class_old/tools/hyperspherical.c create mode 100644 class_old/tools/parser.c create mode 100644 class_old/tools/quadrature.c create mode 100644 class_old/tools/sparse.c diff --git a/class/explanatory.ini b/class/explanatory.ini index fc71cf8d..399098e9 100755 --- a/class/explanatory.ini +++ b/class/explanatory.ini @@ -472,8 +472,8 @@ decay = 0. # Can be left blank if you do not want to evolve cosmological perturbations at # all. (default: set to blanck, no perturbation calculation) -output = tCl,pCl,lCl -#output = tCl,pCl,lCl,mPk +#output = tCl,pCl,lCl +output = tCl,pCl,lCl,mPk,mTk,vTk #output = mPk,mTk # 1.b) if you included 'tCl' in the list, you can take into account only some of diff --git a/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb index f8a5defc..43149619 100644 --- a/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb +++ b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "f42fe0e6", "metadata": {}, "outputs": [], @@ -27,79 +27,79 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "id": "f5a8a3bd", "metadata": {}, "outputs": [], "source": [ "class_ref = {\n", - " 'recombination': 'RECFAST',\n", - " 'tol_ncdm_bg':1.e-10,\n", - " 'recfast_Nz0':100000,\n", - " 'tol_thermo_integration':1.e-5,\n", - " 'recfast_x_He0_trigger_delta':0.01,\n", - " 'recfast_x_H0_trigger_delta':0.01,\n", - " 'evolver':0,\n", - " 'k_min_tau0':0.002,\n", - " 'k_max_tau0_over_l_max':3.,\n", - " 'k_step_sub':0.015,\n", - " 'k_step_super':0.0001,\n", - " 'k_step_super_reduction':0.1,\n", - " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", - " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", - " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", - " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", - " 'start_sources_at_tau_c_over_tau_h':0.006,\n", - " 'l_max_g':50,\n", - " 'l_max_pol_g':25,\n", - " 'l_max_ur':50,\n", - " 'l_max_ncdm':50,\n", + " #'recombination': 'RECFAST',\n", + " #'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " #'tol_thermo_integration':1.e-5,\n", + " #'recfast_x_He0_trigger_delta':0.01,\n", + " #'recfast_x_H0_trigger_delta':0.01,\n", + " #'evolver':0,\n", + " #'k_min_tau0':0.002,\n", + " #'k_max_tau0_over_l_max':3.,\n", + " #'k_step_sub':0.015,\n", + " #'k_step_super':0.0001,\n", + " #'k_step_super_reduction':0.1,\n", + " #'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " #'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " #'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " #'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " #'start_sources_at_tau_c_over_tau_h':0.006,\n", + " #'l_max_g':50,\n", + " #'l_max_pol_g':25,\n", + " #'l_max_ur':50,\n", + " #'l_max_ncdm':50,\n", " #'tol_perturbations_integration':1.e-6,\n", " #'perturbations_sampling_stepsize':0.01,\n", - " 'l_logstep':1.026,\n", - " 'l_linstep':25,\n", - " 'hyper_sampling_flat':12.,\n", - " 'hyper_sampling_curved_low_nu':10.,\n", - " 'hyper_sampling_curved_high_nu':10.,\n", - " 'hyper_nu_sampling_step':10.,\n", - " 'hyper_phi_min_abs':1.e-10,\n", - " 'hyper_x_tol':1.e-4,\n", - " 'hyper_flat_approximation_nu':1.e6,\n", - " 'q_linstep':0.20,\n", - " 'q_logstep_spline':20.,\n", - " 'q_logstep_trapzd':0.5,\n", - " 'q_numstep_transition':250,\n", - " 'transfer_neglect_delta_k_S_t0':100.,\n", - " 'transfer_neglect_delta_k_S_t1':100.,\n", - " 'transfer_neglect_delta_k_S_t2':100.,\n", - " 'transfer_neglect_delta_k_S_e':100.,\n", - " 'transfer_neglect_delta_k_V_t1':100.,\n", - " 'transfer_neglect_delta_k_V_t2':100.,\n", - " 'transfer_neglect_delta_k_V_e':100.,\n", - " 'transfer_neglect_delta_k_V_b':100.,\n", - " 'transfer_neglect_delta_k_T_t2':100.,\n", - " 'transfer_neglect_delta_k_T_e':100.,\n", - " 'transfer_neglect_delta_k_T_b':100.,\n", - " 'neglect_CMB_sources_below_visibility':1.e-30,\n", - " 'transfer_neglect_late_source':3000.,\n", - " 'halofit_k_per_decade':3000.,\n", - " 'l_switch_limber':40.,\n", - " 'accurate_lensing':0,\n", - " 'num_mu_minus_lmax':1000.,\n", - " 'delta_l_max':1000.,\n", + " #'l_logstep':1.026,\n", + " #'l_linstep':25,\n", + " #'hyper_sampling_flat':12.,\n", + " #'hyper_sampling_curved_low_nu':10.,\n", + " #'hyper_sampling_curved_high_nu':10.,\n", + " #'hyper_nu_sampling_step':10.,\n", + " #'hyper_phi_min_abs':1.e-10,\n", + " #'hyper_x_tol':1.e-4,\n", + " #'hyper_flat_approximation_nu':1.e6,\n", + " #'q_linstep':0.20,\n", + " #'q_logstep_spline':20.,\n", + " #'q_logstep_trapzd':0.5,\n", + " #'q_numstep_transition':250,\n", + " #'transfer_neglect_delta_k_S_t0':100.,\n", + " #'transfer_neglect_delta_k_S_t1':100.,\n", + " #'transfer_neglect_delta_k_S_t2':100.,\n", + " #'transfer_neglect_delta_k_S_e':100.,\n", + " #'transfer_neglect_delta_k_V_t1':100.,\n", + " #'transfer_neglect_delta_k_V_t2':100.,\n", + " #'transfer_neglect_delta_k_V_e':100.,\n", + " #'transfer_neglect_delta_k_V_b':100.,\n", + " #'transfer_neglect_delta_k_T_t2':100.,\n", + " #'transfer_neglect_delta_k_T_e':100.,\n", + " #'transfer_neglect_delta_k_T_b':100.,\n", + " #'neglect_CMB_sources_below_visibility':1.e-30,\n", + " #'transfer_neglect_late_source':3000.,\n", + " #'halofit_k_per_decade':3000.,\n", + " #'l_switch_limber':40.,\n", + " #'accurate_lensing':0,\n", + " #'num_mu_minus_lmax':1000.,\n", + " #'delta_l_max':1000.,\n", "# 'nonlinear_verbose' : 2\n", "\n", "}\n", "\n", "# additional precision parameters for neutrinos only\n", "class_ref_nu = {\n", - " 'radiation_streaming_approximation':2,\n", - " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", - " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", - " 'ur_fluid_approximation':2,\n", - " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", - " 'ncdm_fluid_approximation':3,\n", - " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'radiation_streaming_approximation':2,\n", + " #'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " #'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " #'ur_fluid_approximation':2,\n", + " #'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " #'ncdm_fluid_approximation':3,\n", + " #'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", " #'tol_ncdm_synchronous':1.e-10,\n", " #'tol_ncdm_newtonian':1.e-10,\n", "}" @@ -107,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "28f881e4", "metadata": {}, "outputs": [], @@ -124,13 +124,13 @@ "m_nu_min, m_nu_max = 0., 1.0\n", "zs = [0.0]#1.008916e+00]\n", "zs = np.array(zs)\n", - "nuFlag=False\n", + "nuFlag=True\n", "k = np.logspace(-3,np.log10(20),2000)" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "id": "3572f79c", "metadata": {}, "outputs": [], @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "id": "25528d17", "metadata": {}, "outputs": [], @@ -204,8 +204,10 @@ " else:\n", " N_ncdm=0\n", " m_ncdm=0 \n", - " \n", - " N_ur=3.046-N_ncdm\n", + " if N_ncdm!=0:\n", + " N_ur=3.0440\n", + " else:\n", + " N_ur=2.0308#3.046-N_ncdm\n", " # N_ur = 3.046\n", " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", " \n", @@ -273,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "id": "dd878ca2", "metadata": {}, "outputs": [], @@ -334,43 +336,11 @@ "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "z: 0.0\n", - "icos: 0\n", - "icos: 1\n", - "icos: 2\n", - "icos: 3\n", - "icos: 4\n", - "icos: 5\n", - "icos: 6\n", - "icos: 7\n", - "icos: 8\n", - "icos: 9\n", - "icos: 10\n", - "icos: 11\n", - "icos: 12\n", - "icos: 13\n", - "icos: 14\n", - "icos: 15\n", - "icos: 16\n", - "icos: 17\n", - "icos: 18\n", - "icos: 19\n", - "icos: 20\n", - "icos: 21\n", - "icos: 22\n", - "icos: 23\n" - ] - } - ], + "outputs": [], "source": [ "# Seed random number generator\n", "rng = np.random.default_rng(seed=42)\n", - "ncos = 24\n", + "ncos = 450\n", "TAGN = 8.2\n", "# Loop over cosmologies\n", "max_errors = []\n", @@ -433,23 +403,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "a6dbd1e8", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys([0.0])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "allresult.keys()" ] @@ -478,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "id": "c25e7f39", "metadata": {}, "outputs": [], @@ -488,18 +447,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "id": "ff1446a3", "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.028998378897037158 {'h': 0.8032350960341496, 'Omb': 0.05394993197366195, 'Omcb': 0.4194761663721784, 'ns': 0.9354525968129869, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931211213221977, 'As': 4.673777448553246e-09, 'TAGN': 8.2, 'Omcdm': 0.36552623439851645}\n", - "0.028551094211854977 {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n" - ] - }, { "ename": "IndexError", "evalue": "index 1 is out of bounds for axis 0 with size 1", @@ -507,13 +458,13 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIndexError\u001b[0m: index 1 is out of bounds for axis 0 with size 1" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACKUAAATcCAYAAABfiqSFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAEAAElEQVR4nOzdd3hcxdn38e+96r259wKYYnqH0MH0EDqhhRBIeJLwJiHhSYAUSCUhpPCQRhJwaAFjaoBACL2ajungbmxc1Lu0Zd4/zkralXZXK2nl1Uq/z3Xt5XPmzJm5pV37jM/eZ8acc4iIiIiIiIiIiIiIiIiIiIiIpJIv3QGIiIiIiIiIiIiIiIiIiIiIyOijpBQRERERERERERERERERERERSTklpYiIiIiIiIiIiIiIiIiIiIhIyikpRURERERERERERERERERERERSTkkpIiIiIiIiIiIiIiIiIiIiIpJySkoRERERERERERERERERERERkZRTUoqIiIiIiIiIiIiIiIiIiIiIpJySUkREREREREREREREREREREQk5ZSUIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEZERy8zOMzOX4PVUnPMW9nPelRF1r4xT5z0zs0HEnGdmn8Zqc/C/ifQws+OS/Z2nsM8sM1tgZn82s7fMrN7MOs1sk5k9ZWaXmdm4Aba5q5n93cxWmFmbma03s4fN7KQkz68ys4vM7B4zWxVuo8XMVprZXWZ2opklfT01M5+ZnWtmT5jZRjNrNbOPzex6M5s3kJ8tTvv1/Xz+A2a22cw+NLN7zewSM9s6iXZnJWhz70HG+rs47Z03mPZEZOTQNTy9dA3vPj8jruFmdnA/n/uBvM5L0E+RmTWF6z0x2Hgj2ptrZpea2X/C71FT+D3fbGavmdktZvZVM9suQRtPxfgZ1phZRRL9J/r34qmh/nwiMnYN9zhGY5j4NIaJ294FZtbQ37W+nzYKzezLZvZo+FrbbmbVZvaOmf0z3MeUwbQtIiIj02DHNAna+374/333mVn2MIUtIqOUOZdx/z8RkTHCzHYAjg7v/g8wJ7z9c6AOWOucuzPGeUcB88O714T/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28vBW1bpKbwv4DrDf/4H78vBnHT/vdNLL7300iv1r37GHMm+riTx/9ueCvd1ZX/Xzv6ub3F+hiK8pVufw7un7QeqwzH9P6Cgn9/BAuBfeP9P9eMlobwYbrMo1lgg4txEv5dV6X5/9dIr017mnENEREREREREREREREREREREJJV86Q5AhpeZ5ZnZxWb2gplVm1mzmb1rZlf3Xkc0BX3tamZ/N7MVZtZmZuvN7GEzO2mI7f7CzFz4dWWKwhUREREREREREREREREREZFhpKSUUSy8tuxLeFNVzgT+gTe1ZgveuqxvmdnhKerrW8DLwBfxpsf8BfAQcBBwt5ktMrO8BE3Ea3d7vKUlREREREREREREREREREREJINo+Z5RysyKgBeAnfASUxY455oijl8HXAw0A/s5594eQl/nADfjraN2hnNuUcSxbYFngPHAzc65LwygXcNbF+7AiOKrnHNXDjZWERERERERERERERERERER2TI0U8rodTleQkoAODcyISXs28AyoBj4y2A7MbMq4Prw7s2RCSkAzrkP8GZlATjXzI4cQPPn4SWkLB1sfCIiIiIiIiIiIiIiIiIiIpIeSkoZhcysHPhGePdR59zHves45/z0JKPsa2ZHDbK7S4DS8Pb1cercBtSFt69KptFwssuvgI3AjwYZm4iIiIiIiIiIiIiIiIiIiKSJklJGp88CReHthxLUezBi+4xB9tV13ibn3KuxKjjnOoH/hHf3NrNZSbT7K2Ac3owu9YOMTURERERERERERERERERERNJESSmj09ER268nqPch0LWszzED7cTM5gFzkugHIDJh5dh+2v0M8EXgSefcbQONS0RERERERERERERERERERNJPSSmj004R28vjVXLOOWBVeHe8mU0ajn7CVkRs7xivkpnlAH8C/MBXBxiPiIiIiIiIiIiIiIiIiIiIjBBKShllzMwHbB3e9Tvnqvs5ZX3E9rwBdhdZf33cWgPr5xJgPnCNc+6DAcYjIiIiIiIiIiIiIiIiIiIiI4SSUkafYiAnvN2cRP3IOhUD7KsyTjuD6sfMZgI/BFYCPxtgLCIiIiIiIiIiIiIiIiIiIjKCZKc7AEm54ojtjiTqt0dslwxjX8n0839AIfB151zbAGNJmpm54WpbRERkrHHOWbpjGAiNA0RERFIj08YAoHGAiIhIqmgcICIiMnYNZhygmVJkSw3EEvZjZp8Djgfucc49vEUiEhERERERERERERERERERkWGjmVJGn8hlcvKSqF8Qsd00jH3F7cfMioDrwu19Y4AxDJpz6UuMNrOUxTDYtpI9L5l6ierEOzaQ8lT+vgYr3e/ZQM7Re5b+92ug5/VXdzDvV7xjI/H9SnUM+ndxy+iKIVONhN+dPu+Z93kfDeOAwR7PpPcs3e/XQM4brr9j8Y6NxPcr1TFk6nuWiX/HMpk+7/q8JyvV/Y+mccBIfL9SHYP+jm0Z6X7PdM9tYDQOGBp93jPz854J15Rk6ur/llumLY0DBibd79lIHWvHKh9J79dgKCll9GkGAnjvbVES9SOX4KkfYF91cdoZaD9XAdOB7zjnPhlgDCIiIiIiIiIiIiIiIiIiIjICKSlllHHOhczsY2A7INfMxjnnqhOcMiVi+8MBdhdZf0rcWgn6MbP5eLOjrAbuN7NZMc6dFLFd3qtOcz8/n4iIiIiIiIiIiIiIiIiIiKSBklJGp6V4SSkAc4CYSRvmzbEzK7xb45z7dBD9dJnTT93I429HbO+B9zmcCXycRJ/fIHqJn38A5yVxnoiIiIiIiIiIiIiIiIiIiGxBSkoZnf4NnB7e3h14OU69eUBJePvhgXbinPvAzFbhJbbs1k/1PSK2I/t6Ajixn3PnAz8Jb98J3BFxbE2/gYqIiIiIiIiIiIiIiIiIiMgWp6SU0ekBoBUoBI4F/hSn3nER23fEqdOfO4DvARPNbA/n3Ku9K5hZLrAgvPuKc25F1zHn3Br6SSwxs/qI3Q+cc/cNMlYRERERERERERERERERERHZQnzpDkBSzzlXB1wX3l1gZlv3rmNmOcBXwrsvO+f6zJRiZieZ2SYze9vMtonT3bVAU3j763HqnAVUhLevTOJHEBERERERERERERERERERkQxnzrl0xyDDwMyKgRfxlr55CVjgnGuKOH4dcDHQAuzvnHsrRhvrgcnh3dudc2fF6es84CbAAWc45xZFHJsHPAuMB25zzp09iJ/lYODJ8O5VzrkrB9pGr/YcgD77mcPMAL1nmUTvWWbR+5V5RsJ7FhGDpS2IQdA4IPOMhM+7DIzes8yi9yvzpPs9y9QxAGgckInS/XmXgdH7lXn0nmWedL9nGgfIlpTuz7sMjN6vzKP3LLOMhPdrKOMALd8zSjnnms3sOLylfPYB3jezO/CW9TkK2BOoAz4fKyElzOJs9+5roZmNA34B3GFmZwGvAdPwZkkpBO4BLkg2fjM7Ci+hBmBuxKH9zOw74e0G59xfk21TREREREREREREREREREREthzNlDLKmVke3jI9ZwLbAHnAGuBfwHXOuU8SnHsq8EdgE3Cyc+6DfvraDW/2lYPxZlipB94E/uacWzzAuBcCX+in2mrn3KyBtBtuWxnRGWYkZP/JwOg9yyx6vzLPSHjPMvXpKI0DMs9I+LzLwOg9yyx6vzJPut+zTB0DgMYBmSjdn3cZGL1fmUfvWeZJ93umcYBsSen+vMvA6P3KPHrPMstIeL+GMg5QUoqMORp8Zp6R8A+tDIzes8yi9yvzjIT3LFNvRGkckHlGwuddBkbvWWbR+5V50v2eZeoYADQOyETp/rzLwOj9yjx6zzJPut8zjQNkS0r3510GRu9X5tF7lllGwvul5XtEBqHrL04s+gdYREQk8bUy02kcICIiEt9oHgOAxgEiIiKJaBwgIiIydg3XOMA3LK2KiIiIiIiIiIiIiIiIiIiIyJim5XtkzNE0fSIiIkOXqVP2ahwgIiIyNJk6BgCNA0RERIZK4wAREZGxayjjAM2UIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEREREREREREREREREREREZGUU1KKiIiIiIiIiIiIiIiIiIiIiKScklJEREREREREREREREREREREJOWUlCIiIiIiIiIiIiIiIiIiIiIiKaekFBERERERERERERERERERERFJOSWliIiIiIiIiIiIiIiIiIiIiEjKZac7AJF0MbO4x5xzWzASERGRkSnRtTLTaRwgIiIS32geA4DGASIiIoloHCAiIjJ2Ddc4QDOliIiIiIiIiIiIiIiIiIiIiEjKaaYUGbOU9SwiIpJYomtlpj85pXGAiIhIfKN5DAAaB4iIiCSicYCIiMjYNVzjAM2UIiIiIiIiIiIiIiIiIiIiIiIpp6QUEREREREREREREREREREREUk5JaWIiIiIiIiIiIiIiIiIiIiISMopKUVEREREREREREREREREREREUk5JKSIiIiIiIiIiIiIiIiIiIiKSckpKEREREREREREREREREREREZGUU1KKiIiIiIiIiIiIiIiIiIiIiKScklJEREREREREREREREREREREJOWUlCIiIiIiIiIiIiIiIiIiIiIiKZed7gBERKR/9fX1PP/886xdu5aGhgYmT57M3Llz2XffffH50pdf2NraynPPPceaNWuorq5m4sSJzJo1i/3335/c3Ny0xSUiIiIiIiIiIiIiIiIi6aekFBGREWz58uVcfvnl3H///XR0dPQ5PnXqVL785S9z2WWXkZOTs8Xi2rRpE1dccQV33nknTU1NfY5XVVVx7rnnctVVV1FSUrLF4hIRERERERERERERERGRkcOcc+mOQWSLMrN+P/T6eyEjwR133MGXv/zl7qSPnXbaiWOOOYZx48bx0Ucfcccdd9DY2AjA7rvvzuLFi5k1a9awx/XEE09w5plnsnHjRgBmz57NySefzJQpU1i1ahV33nln97G5c+dy1113seuuuw57XCKSembWbx3nXP+VRhCNA0RERPo3GscAoHGAiIhIMjQOEBERGbuGaxygpBQZczT4lEzw4IMPcsIJJxAKhQC49tpr+da3vhV1MaitreWEE07gueeeA2DevHm89NJLlJeXD1tcr732GgceeCCtra0AfOtb3+JXv/oV2dk9E2+1trZy3nnncddddwEwYcIElixZskUSZkQktUbjjSiNA0RERPo3GscAoHGAiIhIMjQOEBERGbuUlCKSIl2DT332ZaRavnw5u+yyC83NzQBceuml/OpXv4pZt7m5mR122IE1a9YAcMwxx/DQQw8NS1z19fXssMMOrF+/HoBTTz2VRYsWxawbCATYb7/9eOWVVwBvlpfXXnstKnlFRDJb1+A0025EaRwgIiIyNJk6BgCNA0RERIZK4wAREZGxayjjAF/KoxERkSG54ooruhNSJk6cyA9/+MO4dYuLi7n66qu79x9++GH+85//DEtcV199dXdCSl5eHr/5zW/i1s3Ozub3v/999/7SpUu58cYbhyUuERERERERERERERERERmZNFOKjDnKiJaRbOnSpeyyyy7dn89LLrmEa6+9NuE5fr+fyZMnU1NTA8Duu+/Oq6++mtK4Nm7cyOzZs2lrawPgpJNO4u677+73vJ133pmlS5cCMGXKFFauXElubm5KYxOR9MjUp6M0DhARERmaTB0DgMYBIiIiQ6VxgIiIyNilmVJEREaJW265Jeo/Rqeeemq/5+Tk5HDiiSd277/22mu8//77KY1r8eLF3QkpycYFcNppp3Vvr1+/nscffzylcYmIiIiIiIiIiIiIiIjIyKWkFBGREeSee+7p3s7NzWW33XZL6rx99903aj+ZWUwGond7vfuLZ7jjEhEREREREREREREREZGRS0kpIiIjxPLly1mxYkX3/k477ZT0Ujd77rln1P5//vOflMXV0dHBs88+270/btw4Zs6cmdS5e+yxx7DFJSIiIiIiIiIiIiIiIiIjm5JSRCTjHHzwwZjZkF5PPfVUun+MPt55552o/Tlz5iR9bu+67777bkpiAvjggw8IBAKDiqu0tJRx48Z1769du5bGxsaUxSYiIiIiIiIiIiIiIiIiI1d2ugMQERms0tJSCgoK+q3X2tpKU1NT977P54tKlBgpeieSTJkyJelzi4qKKC0t7U74qK2tZcOGDUyaNCmtcXXVr66u7t5/77332GeffYYcl4iIiIiIiIiIiIiIiIiMbJopRUQy1u9//3s2bNiQ8LVixQpmz54ddd5VV13F/Pnz+7R33nnnDXkGlv5eCxcujPvzrFq1Kmp/oAklvev3bm+wRmpcIiIiIiIiIiIiIiIiIjKyKSlFREa1Cy+8kKVLl3bvn3DCCVxxxRVpjCi+yNlcgKRmgUlUv3d7gzVS4xIRERERERERERERERGRkU1JKSIyav3ud7/j9ttv797fZpttuPnmmzGzNEYVX+9kjby8vAGdn5+fn7C9wRqpcYmIiIiIiIiIiIiIiIjIyJad7gBE0iVRYoJzbgtGIgN16aWXcvbZZ7P//vvHrfP0009z6aWXdu8XFxdz7733UlpaGvechQsXJlxeZ7i1tbVF7efm5g7o/N71W1tbhxwTjNy4RGT4jdQkvlTQOEBERCS+0TwGAI0DREREEtE4QEREZOwarnGAklJEJOMce+yxCY+vW7eO0047jUAg0F120003sf322w93aEPSe5mbzs7OAZ3fu35hYeGQY4KRG5eIiIiIiIiIiIiIiIiIjGxKSpExS1nPo1NnZycnn3wymzZt6i679NJLOeWUU9IYVXJKSkqi9js6OgZ0fnt7e9R+cXHxkGOCkRuXiAy/RNfKTH9ySuMAERGR+EbzGAA0DhAREUlE4wAREZGxa7jGAb5BnykiMgJdfPHFLFmypHv/sMMO4xe/+EUaI0pe7+SP3svm9Kd3/d7tDdZIjUtERERERERERERERERERjYlpYxyZpZnZheb2QtmVm1mzWb2rpldbWZTU9zXrmb2dzNbYWZtZrbezB42s5OSPL/QzE40sz+Y2RIzqzEzv5k1hmP+q5ntm8qYZXS58cYbueGGG7r3Z8yYwR133EFWVlYao0rerFmzovY3btw4oPN71+/d3mCN1LhEREREREREREREREREZGRTUsooZmbTgZeA64CZwD+A3wAtwHeBt8zs8BT19S3gZeCLwDvAL4CHgIOAu81skZnlJTj/eGAjcA/wVaATuBn4MXAXUAVcALxgZn8ys8zIMpAt5tVXX+WrX/1q935+fj53330348aNS7qN8847DzMb1tfChQvj9r/DDjtE7a9bty7p2FtaWmhoaOjer6ioYPLkyUmfn8hQ4opVf/vttx9yTCIiIiIiIiIiIiIiIiIy8mWnOwAZHmZWBDwI7ISXmLLAOdcUPvxDM7sOuBi418z2c869PYS+zsFLdnHAGc65RRHHrgWeAU4F2oAvxGlmKlAMBIATnXMP9uqjBLgROAW4CFgH/HSwMcvoUl1dzcknn0xHR0d32R/+8Af22GOPNEY1cPPnz4/aX7FiRdLn9q7bO5FkKLbddluys7MJBAIDjquxsZGampru/WnTplFWVpay2ERERERERERERERERERk5NJMKaPX5XgJKQHg3IiElC7fBpbhJYL8ZbCdmFkVcH149+bIhBQA59wHeLOyAJxrZkf20+TveyekhNtpAi4E2sNFF5uZDTZuGT2CwSCnn346a9as6S77yle+wvnnn5/GqAZn7ty5zJ49u3v/7bffxu/3J3Xuq6++GrW/YMGClMWVl5fHAQcc0L1fXV0d9ftO5LXXXsM5NyxxiYiIiIiIiIiIiIiIiMjIpqSUUcjMyoFvhHcfdc593LuOc85PTzLKvmZ21CC7uwQoDW9fH6fObUBdePuqOHWqgbfwluqJyTlXD7wb3p0AjB9IoDI6fe973+OJJ57o3t9nn3247rrrBtXWwoULcc4N6+u8885LGMNJJ53Uvd3R0cEbb7yRVOwvvvhi1P7JJ5884J8/2bgAXnrppaTOG+64RERERERERERERERERGTkUlLK6PRZoCi8/VCCepEzkpwxyL66ztvknHs1VgXnXCfwn/Du3mY2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PlkBQOPB2+AKc9MckIiIiGQyJaWIiIiISLQHb8at/ojGI7aLKs4umEzhuL3TFJSIiIiIiIiIDLumerjzDwB0TimnbdcZ6Y1HREREMp6SUkRERESkx4Y1sOiPtO04Ff+U8qhDpdNOwEzDRxEREREREZFR67bfQnMDzqDhqO3THY2IiIiMAvpWQUREREQ8zsENPyFEgKZe60Xnl+9EXslWaQpMRERERERERIbdB2/AfxcD0LrbDAKTytIckIiIiIwGSkoREREREc+zD8HSF2jebw6h4ryecsumZOpx6YtLRERERERERIZXwA83XAVAsDiPpoO2iTqcX7FLGoISERGR0UBJKSIiIiLirRm98GoC5YW07DU76lDxxIPJzqtMT1wiIiIiIiIiMvweugXWfAxA4xHb4fJzug+ZL4/SqcenKzIRERHJcEpKERERERG4+RpcYx2NC7aD7J4hoi+njKKJh6QxMBERERkpXMif7hBERERkOGxeD4v+CED73PG0bzc56nDJlKPIytVSPiIiIjI4SkoRERERGevefgmevI+ObSbQsdWEqEMlU47Bl5UX50QREREZK1woQN2Kf6Q7DBERERkOf/85dLQRysmi8cjtow7lFE6jcPz+aQpMRERERoPsdAcwXMxsIvDP8K5zzh2WznhERERERqSOdvjLVd6NpyN63Xgqmk1B5W5pCkxERERGCueC1K28lY7GD9IdioiIiKTay0/Aq08C0HzAVgTLCyMOGmUzTsVMzzeLiIjI4I3mkUQ+cHDESySKmcV9iYiIjBn3/AU2rKF5v7kEywoiDvg44Lgr8fl8o/JaqXGAiIhIfJHXxawsH3/+xQl0NLyT7rBSRuMAERGRsLYWuPFnAPgnlNCy16yow3++9RVyi6aNquukxgEiIiLxDdd1cjQnpYiIiIhIIms+hvtuJFBVRMs+s6MOFU34DB8sq05TYCIiIjISmMG1P1jA547aNt2hiIiIyHC4609QvQFn0HD0fPD1fGW0bkMjv/7zC2kMTkREREaLUbt8j0h/nHPpDkFERCR9QiH485W4YICGI3eFrJ4bT76cUoonL0h4rcz0J4g0DhAREYnPOYdzIRrWLKat5uV0h5NyGgeIiIgAqz6EB28GoHW3Gfinlkcdnr/fN2hpvSGqLNPvBYDGASIiIokM13cCmilFREREZCx6bBF89Cbt20+m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\n", + "image/png": "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95fevwv1BxdddBGnnHLKmqKP3XffnTe96U1MmDCBRx99lIsuuogFCxYAsPfee3PZZZcxZcqUHo/rhhtu4LjjjmPmzJkAbL311hx11FFMnjyZadOmcfHFF685tu2223LppZey55579nhckuovItptk5ntN+pHzAMkSWrfQMwBwDxAkqSOMA+QJGnw6qk8wKIUDTomn2oE11xzDW9/+9tpbm4G4KyzzuL0009f52Iwd+5c3v72t3PzzTcDsOOOO3Lbbbcxfvz4Hovr7rvv5lWvehVLliwB4PTTT+cb3/gGQ4eunXhryZIlnHTSSVx66aUAbLzxxtx+++29UjAjqb4G4htR5gGSJLVvIOYAYB4gSVJHmAdIkjR4WZQi1UlL8unvvvqrJ554gj322INFixYB8MlPfpJvfOMbbbZdtGgRu+yyC9OnTwfgTW96E7/73e96JK758+ezyy67MGPGDACOPvpoLrnkkjbbrlq1igMPPJA777wTKGZ5ufvuu9cpXpHU2FqS00Z7I8o8QJKk7mnUHADMAyRJ6i7zAEmSBq/u5AFNdY9GktQtn/nMZ9YUpGyyySZ87nOfq9p2zJgxfO1rX1uzf+2113L99df3SFxf+9rX1hSkjBgxgm9/+9tV2w4dOpTvfve7a/bvu+8+zj333B6JS5IkSZIkSZIkSVL/5EwpGnSsiFZ/dt9997HHHnus+f382Mc+xllnnVXznJUrVzJp0iTmzJkDwN57781dd91V17hmzpzJ1ltvzdKlSwE48sgjufzyy9s97+Uvfzn33XcfAJMnT+bJJ59k+PDhdY1NUt9o1LujzAMkSeqeRs0BwDxAkqTuMg+QJGnwcqYUSRogfvnLX67zH6Ojjz663XOGDRvGEUccsWb/7rvv5qGHHqprXJdddtmagpSOxgVwzDHHrNmeMWMGf/7zn+salyRJkiRJkiRJkqT+y6IUSepHrrjiijXbw4cPZ6+99urQeQcccMA6+x2ZxaQzWvfXerxqejouSZIkSZIkSZIkSf2XRSmS1E888cQTTJ06dc3+7rvv3uGlbl7xiless3/99dfXLa7ly5dz0003rdmfMGECW221VYfO3WeffXosLkmSJEmSJEmSJEn9m0UpkhrOIYccQkR063HjjTf29bfxEg888MA6+9tss02Hz23d9sEHH6xLTAAPP/wwq1at6lJc48aNY8KECWv2n376aRYsWFC32CRJkiRJkiRJkiT1X0P7OgBJ6qpx48YxatSodtstWbKEhQsXrtlvampap1Civ2hdSDJ58uQOnzt69GjGjRu3puBj7ty5PP/882y66aZ9GldL+9mzZ6/Z/9e//sX+++/f7bgkSZIkSZIkSZIk9W/OlCKpYX33u9/l+eefr/mYOnUqW2+99TrnnXnmmey6664v6e+kk07q9gws7T3OP//8qt/PtGnT1tnvbEFJ6/at++uq/hqXJEmSJEmSJEmSpP7NohRJA9oHPvAB7rvvvjX7b3/72/nMZz7ThxFVVzmbC9ChWWBqtW/dX1f117gkSZIkSZIkSZIk9W8WpUgasL7zne/wq1/9as3+DjvswAUXXEBE9GFU1bUu1hgxYkSnzh85cmTN/rqqv8YlSZIkSZIkSZIkqX8b2tcBSH2lVmFCZvZiJOqsT37ykxx//PEcdNBBVdv89a9/5ZOf/OSa/TFjxvCb3/yGcePGVT3n/PPPr7m8Tk9bunTpOvvDhw/v1Pmt2y9ZsqTbMUH/jUtSz+uvRXz1YB4gSVJ1AzkHAPMASZJqMQ+QJGnw6qk8wKIUSQ3nzW9+c83jzz77LMcccwyrVq1a89x5553Hzjvv3NOhdUvrZW5WrFjRqfNbt19vvfW6HRP037gkSZIkSZIkSZIk9W8WpWjQsup5YFqxYgVHHXUUs2bNWvPcJz/5Sd75znf2YVQdM3bs2HX2ly9f3qnzly1bts7+mDFjuh0T9N+4JPW8WtfKRr9zyjxAkqTqBnIOAOYBkiTVYh4gSdLg1VN5QFOXz5Skfui0007j9ttvX7P/2te+lq9+9at9GFHHtS7+aL1sTntat2/dX1f117gkSZIkSZIkSZIk9W8WpQxwETEiIk6LiFsjYnZELIqIByPiaxGxWZ3H2jMifh4RUyNiaUTMiIhrI+LIDp6/XkQcERE/iIjbI2JORKyMiAVlzD+NiAPqGbMGlnPPPZef/OQna/a33HJLLrroIoYMGdKHUXXclClT1tmfOXNmp85v3b51f13VX+OSJEmSJEmSJEmS1L9ZlDKARcQWwG3A2cBWwC+AbwOLgU8B90bE6+o01unAHcD7gAeArwK/A14NXB4Rl0TEiBrnvxWYCVwBfAhYAVwA/A9wKbARcDJwa0T8KCIao8pAveauu+7iQx/60Jr9kSNHcvnllzNhwoQO93HSSScRET36OP/886uOv8suu6yz/+yzz3Y49sWLF/Piiy+u2d9ggw2YNGlSh8+vpTtxtdV+55137nZMkiRJkiRJkiRJkvq/oX0dgHpGRIwGrgF2pyhMOSwzF5aHPxcRZwOnAb+JiAMz8/5ujHUCRbFLAsdm5iUVx84C/gYcDSwF3lulm82AMcAq4IjMvKbVGGOBc4F3AqcCzwJf6mrMGlhmz57NUUcdxfLly9c894Mf/IB99tmnD6PqvF133XWd/alTp3b43NZtWxeSdMdOO+3E0KFDWbVqVafjWrBgAXPmzFmzv/nmm7P++uvXLTZJkiRJkiRJkiRJ/ZczpQxcZ1AUpKwCTqwoSGnxceBxikKQc7o6SERsBHy/3L2gsiAFIDMfppiVBeDEiHhDO11+t3VBStnPQuADwLLyqdMiIroatwaO1atX8653vYvp06evee6DH/wg73//+/swqq7Zdttt2Xrrrdfs33///axcubJD5951113r7B922GF1i2vEiBEcfPDBa/Znz569zs+7lrvvvpvM7JG4JEmSJEmSJEmSJPVvFqUMQBExHvhIuXtdZj7Wuk1mrmRtMcoBEXF4F4f7GDCu3P5+lTYXAvPK7TOrtJkN3EuxVE+bMnM+8GC5uzEwsTOBamD67//+b2644YY1+/vvvz9nn312l/o6//zzycwefZx00kk1YzjyyCPXbC9fvpx77rmnQ7H//e9/X2f/qKOO6vT339G4AG677bYOndfTcUmSJEmSJEmSJEnqvyxKGZjeBowut39Xo13ljCTHdnGslvNmZeZdbTXIzBXA9eXufhExpY02l2XmHpl5ezvjNVdsL6vaSoPCpZdeyre+9a01+5tssgmXXXYZw4cPr3rORRddxDve8Y4uF670tOOPP57KSYAuueSSGq0Lq1at4je/+c2a/b322oudd965rnEdffTRjBw5slNxtW636aab8rrXva6ucUmSJEmSJEmSJEnqvyxKGZjeWLH9jxrtHgFalvV5U2cHiYgdgW06MA5AZcHKmzs7VjneGGDXcvfOzFzQlX40MDz44IPrLNEzdOhQLrnkEjbbbLOa5z388MNcddVV/OMf7f3K9o099tiDd77znWv2L7zwQhYvXlzznMsvv5zZs2ev2f/yl7/c7jiZyZVXXslZZ53FHXfc0W77TTbZhNNOO23N/u9+9zueffbZmufcfvvt3HvvvWv2P//5z9csGJIkSZIkSZIkSZI0sFiUMjDtXrH9RLVGmZnAtHJ3YkRs2hPjlKZWbO/WyXFafBMYBawAPtrFPjQALFiwgCOPPJJFixatee6b3/wmr3rVq/owqvr5yle+wujRxWRHzz//PF/84hertl28eDGf+tSn1uy/4Q1v4PDD21+N69hjj+WII47gE5/4BPvvvz/nnHNOu+d8+tOfZtNNi38mli1bxsc//vGqbVevXs1HPvKRNfu77rorJ598crtjSJIkSZIkSZIkSRo4LEoZYCKiCdi+3F2ZmbNrtQdmVGzv2MnhKtvPqNqqC+NExJiI2CYi9o6If4uIW4FTgYeB12bmrZ2MVQNEZnLCCSfw6KOPrnnune98J6eeeirLli1r97Fq1ao+jL5jtttuOy688EKamop/or/+9a/zne98h6KObK158+bxpje9iaeeegqA7bffnl/96lft9v/II4+ss6xOZnLmmWe2e94GG2zAVVddxahRowC4+OKL+cQnPvGSn+nSpUs57rjjuP32YjWuCRMmcNVVVzF06NB2x5AkSZIkSZIkSZI0cPgJ4cAzBhhWbi+q1bCNNht0cqwNq/RTj3HeCZxXsb8A+DLwP5m5omPhaSC64ooruPrqq9d57rLLLuOyyy7ro4h6xtvf/nYuuOACTj31VBYtWsTpp5/O+eefz5vf/GY22mgjHnvsMX7961/z4osvArDnnnty2WWXseGGG7bTc/fsu+++XHXVVRx//PHMmjWLs846iyuvvJIjjzySSZMm8dRTT3HRRRcxc+ZMALbeemsuvfRSttlmm3Z6liRJkiRJkiRJkjTQWJQy8Iyp2F7egfbLKrbH9uBYnR3nBuAIYD1gO+AY4DPAyRHxmcz8eWcCbUtEdPqc1jNVqPctXLiwr0PoNe95z3vYb7/9OOOMM7j66qu59957uffee9dps9lmm/GBD3yAT3/60wwfPrxD/e64444cddRRXH755UDxt/DZz362w3G9/vWv57777uOMM87gkksu4YknnuCb3/zmOm023HBDTjzxRM4880zGjRvX4b4l9Y2uXBMbnXmAJEmDMwcA8wBJksA8oDPMAyRJA01v5wHhxXRgiYjJwLPl7vOZOamd9r8Eji93T8zMX3ZirJ8AHyh3T83Mc2q03RZ4vNydmpnbdnSc8vygmCnl0+VTX8vMT9c4pVZfXf6l9+9FfWXevHncfPPNPP300yxYsIBJkyax7bbbcuCBB65Z5qczmpubufLKK5k6dSoHH3ww++23X5fiWrx4MTfddBPTp09nzpw5bLzxxkyZMoWDDz64w0UykvpedxLQzGyod7HMAyRJWmsw5QBgHiBJUiXzgI4zD5AkDTS9nQdYlDLARMQ44MVyd15m1lzLIyIuA44qd4/IzCs7Mda3gdPL3Y9k5tk12u4K3F/u3puZe3R0nFb9/BF4Xbl7aGbe2IU+EkwkJUnqjpaktdHeiDIPkCSpexo1BwDzAEmSuss8QJKkwas7eUDnb69Xf7cIWFVuj+5A+8oleOZ3cqx5Vfqp9ziVvl+xfVo3+pEkSZIkSZIkSZIkST3IopQBJjObgcfK3eERMaGdUyZXbD/SyeEq20+u2qr741S6s2L7wG70I0mSJEmSJEmSJEmSepBFKQPTfRXb21RrFMUcO1PK3TmZ+VxPjNPG8furtmrf3IrtjbrRjyRJkiRJkiRJkiRJ6kEWpQxMv6/Y3rtGux2BseX2tZ0dJDMfBqaVu3u103yfiu2XjBURt0XE/3Rg2HEV2ws60F6SJEmSJEmSJEmSJPUBi1IGpquBJeX2m2u0e0vF9kVdHKvlvE0iYp+2GkTEcOCwcvfOzJzaRrP9gNd1YLx9K7a7M+OKJEmSJEmSJEmSJEnqQRalDECZOQ84u9w9LCK2b90mIoYBHyx378jMtmYvOTIiZkXE/RGxQ5XhzgIWltsfrtLmPcAG5fYXaoS+b0TsVO1gudzQxyqe+lWNviRJkiRJkiRJkiRJUh+yKGXg+jLwADAMuCAixrY6fhawHbAYOKVKH98HJgK7Ap9vq0Fmzgb+s9w9MSKOqTweETsCXy93L2yr+KXCEOCKiNiu9YFytpXvAYeWT/0dOLdGX5IkSZIkSZIkSZIkqQ8N7esA1DMyc1FEvIViKZ/9gYci4iKKZX0OB14BzAPenZn3Vukmqmy3Huv8iJgAfBW4KCLeA9wNbE4xS8p6wBXAyTVC/iPF8j0vA/4VEdcB9wBLgS2At5b9AfwWODEzV9foT5IkSZIkSZIkSZIk9aHIzL6OQT0oIkZQLNNzHLADMAKYTlHYcXZmPlPj3KOBHwKzgKMy8+F2xtoLOA04BJgEzAf+CfwsMy/rQKzbAUcArwZ2ATYu410IPAXcTjHbyt/a66udcRLA331JkrquWFUPMrNq4Wp/ZB4gSVL3NGoOAOYBkiR1l3mAJEmDV3fyAItSNOiYfEqS1H2N+kaUeYAkSd3TqDkAmAdIktRd5gGSJA1e3ckDXL5Hg1bLH05bTEwlSap9rWx05gGSJFU3kHMAMA+QJKkW8wBJkgavnsoDmnqkV0mSJEmSJEmSJEmSJA1qzpSiQcuqZ0mSaqt1rWz0O6fMAyRJqm4g5wBgHiBJUi3mAZIkDV49lQc4U4okSZIkSZIkSZIkSZLqzqIUSZIkSZIkSZIkSZIk1Z1FKZIkSZIkSZIkSZIkSao7i1IkSZIkSZIkSZIkSZJUdxalSJIkSZIkSZIkSZIkqe4sSpEkSZIkSZIkSZIkSVLdWZQiSZIkSZIkSZIkSZKkurMoRZIkSZIkSZIkSZIkSXVnUYokSZIkSZIkSZIkSZLqzqIUSZIkSZIkSZIkSZIk1d3Qvg6gp0TEJsCvy93MzNf2ZTySJEmSJEmSJEmSJEmDyYAtSgFGAoeU29mHcaifioiqxzL9lZEkqda1stGZB0iSVN1AzgHAPECSpFrMAyRJGrx6Kg9w+R5JkiRJkiRJkiRJkiTV3UCeKUWqyapnSZJqq3WtbPQ7p8wDJEmqbiDnAGAeIElSLeYBkiQNXj2VBzhTiiRJkiRJkiRJkiRJkurOohRJkiRJkiRJkiRJkiTVXa8v3xMRJ/bSUBN6aRxJkiRJkiRJkiRJkiS1Er29fl5ENAO9OWgAmZlDenFM9WMRkeDakZIkdUfL+pGZ2VALSpsHSJLUPY2aA4B5gCRJ3WUeIEnS4NWdPKDXZ0qp0BtJi9mFJEmSJEmSJEmSJElSH2jqw7EtGJEkSZIkSZIkSZIkSRqg+mKmlBXAsHL7GeDnPTTOeOAjPdS3JEmSJEmSJEmSJEmSaojeXj8vIu4A9il352fmhj00zlbAk+VuZuaQnhhHjce1IyVJ6r5GXUfaPECSpO5p1BwAzAMkSeou8wBJkgav7uQBfbF8z50V2+tHxPZ9EIMkSZIkSZIkSZIkSZJ6UF8XpQC8og9ikCRJkiRJkiRJkiRJUg/qi6KUO8qvLXOkWZQiSZIkSZIkSZIkSZI0wAztgzEfAhYBo8v9ni5KcYFAtall3au2uK6kJEm1r5WNzjxAkqTqBnIOAOYBkiTVYh4gSdLg1VN5QK/PlJLFVf1uIMrHHhHRk3EM7AxKkiRJkiRJkiRJkiSpH+qLmVIAvg/8s2J/A2BOPQfIzKfom+WJ1CCsepYkqbZa18pGv3PKPECSpOoGcg4A5gGSJNViHiBJ0uDVU3lAeAHWYBMRCSafkiR1R0sCmpkN9Y6UeYAkSd3TqDkAmAdIktRd5gGSJA1e3ckDnElEkiRJkiRJkiRJkiRJdWdRiiRJkiRJkiRJkiRJkurOohRJkiRJkiRJkiRJkiTVnUUpkiRJkiRJkiRJkiRJqjuLUiRJkiRJkiRJkiRJklR3FqVIkiRJkiRJkiRJkiSp7ixKkSRJkiRJkiRJkiRJUt1ZlCJJkiRJkiRJkiRJkqS6syhFkiRJkiRJkiRJkiRJdTe0rwOQ+kpEVD2Wmb0YiSRJ/VOta2WjMw+QJKm6gZwDgHmAJEm1mAdIkjR49VQe4EwpkiRJkiRJkiRJkiRJqjtnStGgZdWzJEm11bpWNvqdU+YBkiRVN5BzADAPkCSpFvMASZIGr57KA5wpRZIkSZIkSZIkSZIkSXVnUcoAFxEjIuK0iLg1ImZHxKKIeDAivhYRm9V5rD0j4ucRMTUilkbEjIi4NiKO7OD5G0XEqRFxRURMK/tYHBFPRsSlEXFERPg7K0mSJEmSJEmSJElSA4hGmqosIsYCB1Q89dfMXN5X8fR3EbEFcDWwBzADuAhYDBwOvAKYAxybmX+qw1inA98AhgDXAHcBWwDHAesBlwIntPV6RcQI4JvAB4CRwDzgN8DUcv/VwMFl81uAYzJzRjdiTXCaPkmSuqNlqr7MbKi5e80DJEnqnkbNAcA8QJKk7jIPkCRp8OpOHtBoRSl7A3cCLUFvnZnT+zCkfisiRgO3ArsDtwGHZebCiuNnA6cBi4ADM/P+box1AnABxetybGZeUnFsJ+BvwETggsx8bxvnbwo8V+7+BTgyM+e3avOecowm4F/APpm5tIvxmnxKktRNjfpGlHmAJEnd06g5AJgHSJLUXeYBkiQNXt3JAxp1KZSGS3j6wBkUBSmrgBMrC1JKHwceB8YA53R1kIjYCPh+uXtBZUEKQGY+DHyq3D0xIt5Qo7vFFEUt81sfyMwLgR+VuzsDH+1qzJIkSZIkSZIkSZIkqec1alGKaoiI8cBHyt3rMvOx1m0ycyVri1EOiIjDuzjcx4Bx5fb3q7S5kGJJHoAza/R1bWbOqnH8vIrtYzoWniRJkiRJkiRJkiRJ6gsWpQxMbwNGl9u/q9HumortY7s4Vst5szLzrrYaZOYK4Ppyd7+ImNKqyWLgLODn7Yz1UMX2Dp2MU5IkSZIkSZIkSZIk9SKLUgamN1Zs/6NGu0eAlmV93tTZQSJiR2CbDowDUFmw8ubKA5m5MDM/kZnXtdNH5e/r0I5FKUmSJEmSJEmSJEmS+oJFKQPT7hXbT1RrlJkJTCt3J0bEpj0xTmlqxfZunRynxZYV2/d1sQ9JkiRJkiRJkiRJktQLLEoZYCKiCdi+3F2ZmbPbOWVGxfaOnRyusv2Mqq26P06Lgyq2f9XFPiRJkiRJkiRJkiRJUi+wKGXgGQMMK7cXdaB9ZZsNOjnWhlX6qfc4LU4ovz4H/KSLfUiSJEmSJEmSJEmSpF4wtK8DUN2Nqdhe3oH2yyq2x/bgWN0Zh4h4FXBwufvhzFzc2T7a6LPT5xQrHkmSNLB05ZrY6MwDJEkanDkAmAdIkgTmAZ1hHiBJGmh6Ow9wphT1VjbV5XEiYj3gp+XujzLzivqEJEmSJEmSJEmSJEmSeoozpQw8lcvkjOhA+1EV2wt7cKwujRNFmdZ5wA7An4D/7HB07bC6WZKkQleuiY1+R5V5gCRJgzMHAPMASZLAPECSpMGst/MAZ0oZeBYBq8rt0R1oX7kEz/xOjjWvSj/1HOebwDHA7cARmbmqnfaSJEmSJEmSJEmSJKkfsChlgMnMZuCxcnd4RExo55TJFduPdHK4yvaTq7bq4jgR8QXg48A/gMMzc1HtMyRJkiRJkiRJkiRJUn9hUcrAdF/F9jbVGpVL40wpd+dk5nM9MU4bx+9vr+OI+DTweeBe4PWZOb+TsUmSJEmSJEmSJEmSpD5kUcrA9PuK7b1rtNsRGFtuX9vZQTLzYWBaubtXO833qdiuOVZEfAz4CvAA8LrMnNvq+PCIGB8RQzsXsSRJkiRJkiRJkiRJ6i0WpQxMVwNLyu0312j3lorti7o4Vst5m0TEPm01iIjhwGHl7p2ZObVaZxHxYeAs4CHgtZk5u41mxwHzgFd2MWZJkiRJkiRJkiRJktTDLEoZgDJzHnB2uXtYRGzfuk1EDAM+WO7ekZkvmb0kIo6MiFkRcX9E7FBluLOAheX2h6u0eQ+wQbn9hWpxR8QpZdyPAq/JzFnV2kqSJEmSJEmSJEmSpP7N5U8Gri9TzISyK3BBRByWmQsrjp8FbAcsBk6p0sf3gYnl4/MUxSXryMzZEfGfwHnAiRFxbWZe0nI8InYEvl7uXthW8UvZ7iTgx+XuJcA7IqLa93ZAtQOSJEmSJEmSJEmSJKl/sChlgMrMRRHxFoqlfPYHHoqIiyiW9TkceAXFEjjvzsx7q3QTVbZbj3V+REwAvgpcFBHvAe4GNqcoZFkPuAI4uc1BInYHfl4xxmc79E1KkiRJkiRJkiRJkqR+y6KUASwzn4qIfSmW6TkOeD8wApgOfBM4OzOfqdHFfwI/BGYB/9POWN+KiBuA04BDgDcA84GbgJ9l5mU1Tt8Ql5KSJEmSJEmSJEmSJGlAiczs6xg6LCL2Bu4sdxPYOjOn92FIakARkQCN9LsvSVJ/07LMXmZWnU2tPzIPkCSpexo1BwDzAEmSuss8QJKkwas7eYAzpWjQavnDaYuJqSRJta+Vjc48QJKk6gZyDgDmAZIk1WIeIEnS4NVTeYBLpkiSJEmSJEmSJEmSJKnunClFg5ZVz5Ik1VbrWtnod06ZB0iSVN1AzgHAPECSpFrMAyRJGrx6Kg9otKKUhcAtFfvL+ioQSZIkSZIkSZIkSZIkVRdWhWqwiYgEK6IlSeqOlqrozGyo26TMAyRJ6p5GzQHAPECSpO4yD5AkafDqTh7QVPdoJEmSJEmSJEmSJEmSNOhZlCJJkiRJkiRJkiRJkqS6syhFkiRJkiRJkiRJkiRJdWdRiiRJkiRJkiRJkiRJkurOohRJkiRJkiRJkiRJkiTVnUUpkiRJkiRJkiRJkiRJqjuLUiRJkiRJkiRJkiRJklR3FqVIkiRJkiRJkiRJkiSp7ixKkSRJkiRJkiRJkiRJUt0N7esApL4SEVWPZWYvRiJJUv9U61rZ6MwDJEmqbiDnAGAeIElSLeYBkiQNXj2VBzhTiiRJkiRJkiRJkiRJkurOmVI0aFn1LElSbbWulY1+55R5gCRJ1Q3kHADMAyRJqsU8QJKkwaun8gBnSpEkSZIkSZIkSZIkSVLdWZQiSZIkSZIkSZIkSZKkumv4opSIaI6IVX0dhyRJkiRJkiRJkiRJktZq+KKUUuMvZChJkiRJkiRJkiRJkjSADJSiFEmSJEmSJEmSJEmSJPUjQ/s6gBYRMRTYrdx9IDNX9mU8kiRJkiRJkiRJkiRJ6rpemyklIraOiPdHxA5tHHsb8CxwV/l4LiKO6a3YJEmSJEmSJEmSJEmSVF+9uXzPB4CfAMsqn4yIHYGLgYnAdOBhYAPgwojYsxfjkyRJkiRJkiRJkiRJUp30ZlHKK4F7MnN6q+c/CowAfpCZW2fmLsDRwBDgw70YnyRJkiRJkiRJkiRJkuqkN4tStgbuaOP5w4EVwBktT2TmFcDNwMG9ExpExOiIeG9EfDwiXl3x/Csi4rqImBsR8yPiqoh4WW/FJUmSJEmSJEmSJEmS1IiG9uJYE4G5lU9ExEbAVsBNmbmwVft7gJN7I7CI2BC4Fdi+4rmvApcCfwHWq2j+VuDAiNgzM5/pjfjUMyKi6rHM7MVIJEnqn2pdKxudeYAkSdUN5BwAzAMkSarFPECSpMGrp/KA3pwpZSWwcavn9iu/3tVG+0U9G846PgXsAPwD+F+KgpiPA18CZgGvB8ZRFNCcDWxUniNJkiRJkiRJkiRJkqQ29OZMKY8Ch0dEU2Y2l8+9BUiKWUpamww810uxvRWYChyQmasiYijwL+BNwNsy889lu0XARyPilcAbeik29RCrniVJqq3WtbLR75wyD5AkqbqBnAOAeYAkSbWYB0iSNHj1VB7QmzOlXA5sAVwVEW+LiI8B76co9PhDG+0PAh7vpdimAH/IzFUA5dfry2NtFczcAmzeO6FJkiRJkiRJkiRJkiQ1nt6cKeU7wLuAN1PMQAIQwGcyc3Flw4jYB9gOOKeXYhsJvNDqudkAmTmvjfZzgRE9HZQkSZIkSZIkSZIkSVKj6rWilMxcEhEHAacD+1MUdlyamVe30Xwv4CqgrWM9FmI7+5IkSZIkSZIkSZIkSeqg3pwphcxcBHyxA+1+Avyk5yOSJEmSJEmSJEmSJElST+jVopR+7sSIeGXF/jYAEXF9G2236Z2QJEmSJEmSJEmSJEmSGlNk9o9VaiJiKLBbuftAZq7s4HnNQGbmkG6M3dyF07o1pvpORCRAf/ndlySpEUUEAJkZfRxKp5gHSJLUPY2aA4B5gCRJ3WUeIEnS4NWdPKDXZkqJiK2BQ4GbM/PRVsfeBvwUmFA+NS8iPpSZl/RSeFv30jiSJEmSJEmSJEmSJEmDQq/NlBIRXwH+C9gmM6dXPL8j8E9gBPAUsATYCWgG9s3Me9rpt9szpWhwsSJakqTua9S7o8wDJEnqnkbNAcA8QJKk7jIPkCRp8OpOHtBU92iqeyVwT2VBSumjFAUpP8jMrTNzF+BoYAjw4V6MT5IkSZIkSZIkSZIkSXXSm0UpWwN3tPH84cAK4IyWJzLzCuBm4ODeCU2SJEmSJEmSJEmSJEn1NLQXx5oIzK18IiI2ArYCbsrMha3a3wOc3BuBRcSKLpyWmTmi7sFIkiRJkiRJkiRJkiQNAL1ZlLIS2LjVc/uVX+9qo/2ing1nHUMp4pvRi2Oqj7Wse9UW15WUJKn2tbLRmQdIklTdQM4BwDxAkqRazAMkSRq8eioP6M2ilEeBwyOiKTOby+feAiRwaxvtJwPP9VJsq4BhwDzg58CFmTm/l8aWJEmSJEmSJEmSJEkacJp6cazLgS2AqyLibRHxMeD9FDOi/KGN9gcBj/dSbJsDnwJGAd8DZkTE/0XEob00vvpAZlZ9SJKkgX2tHMjfmyRJ3TXQr5MD/fuTJKk7Bvp1cqB/f5IkdUdPXSejty60EbEe8HdgN4rZUQAC+GRmntWq7T7AHW0da6PfZiAzc0id4nwlcDLwTooilWnAucAvMvOZeoyhvhURCU7FJ0lSd7RM45eZDTWvr3mAJEnd06g5AJgHSJLUXeYBkiQNXt3JA3ptppTMXEIx+8nnKWZG+RXwjipFJ3sBVwFX91Z8LTLz5sw8CZgEfAiYA3wReDIifhcR2/Z2TN0RESMi4rSIuDUiZkfEooh4MCK+FhGb1XmsPSPi5xExNSKWRsSMiLg2Io7sYn8nR8SLEZERcVI9Y5UkSZIkSZIkSZIkST2r12ZK6YqImJiZL7TTpq4zpVQZ45XAr4HJwBGZ2evFMl0REVtQFPbsAcwALgIWA4cDr6AouDk2M/9Uh7FOB74BDAGuAe6iWK7pOGA94FLghMxc3oG+Ngd+WsbZ4n2ZeX534yz7tyJakqRuatS7o8wDJEnqnkbNAcA8QJKk7jIPkCRp8GqImVI6IyIOj4jLgOl9HMerIuIXFDO7bAY8QbGcT78XEaMpikP2AG4DdsrMj2fm5zJzX+B7wEbAbyJit26OdQLwbYqClGMz822Z+T+Z+QFgb+AF4GjgJx3o6yTgAeB1wL+6E5ckSZIkSZIkSZIkSeo7/aYoJSK2jIgzI+Ip4HfAkcDCPohjUkR8OiIeBf4CvBO4Ajg0M3fIzPt6O6YuOgPYHVgFnJiZrX+WHwceB8YA53R1kIjYCPh+uXtBZl5SeTwzHwY+Ve6eGBFvqNHXt4HzgKeB/ShmV5EkSZIkSZIkSZIkSQ2oT4tSImJYRBwTEdcBU4HPUiyR83uKYpDJvRTHkIg4IiKuAZ4Cvgy8CPwHMCkzT8zMv/ZGLPUQEeOBj5S712XmY63bZOZK1hajHBARh7du00EfA8aV29+v0uZCYF65fWaNvrYEvgrsnZn/6GI8kiRJkiRJkiRJkiSpHxjaF4NGxM7AycDxFEvIBPAwsBNwXmae0sshzQAmAHOBHwI/z8z7ezmGenobMLrc/l2NdtcA3yy3j6VYpqizji2/zsrMu9pqkJkrIuJ64F3AfhExJTOntdH01Myc3YUYJEmSJEmSJEmSJElSP9NrRSkRMZqigOFkYF+KQpS5wI+AX2TmnRHR3FvxtDIRWAn8C9gZOCsi2jsnM7PqUjR97I0V27VmHHmEYomkscCbOjtIROwIbNOBcQDuoihKAXgz8IPWDSxIkSRJkiRJkiRJkiRp4OjNmVKeo5i9YzXFDB2/AH5bLiPTHwwDDu5E++ypQOpg94rtJ6o1ysyMiGnAbsDEiNg0M5+v9zilqRXbu3ViDEmSJEmSJEmSJEmS1IB6syhlDNAMnA18OzNn9OLY7dm6rwOol4hoArYvd1d2YPaRGawtEtkR6ExRyo6t+mlvnLbOkyRJkiRJkiRJkiRJA1BvFqX8GHg3cDrwkYi4gWK2lN9k5tJejOMlMvOpzp4TERN7IpY6GEMx6wvAog60r2yzQSfH2rBKP/UeR5IkSZIkSZIkSZIkNZheK0rJzA9FxMeAY4B/A14PvA5YFBGXA7/srVi6IyIOB04G3gyM6uNw2jKmYnt5B9ovq9ge24NjdWecHhERnT4nsz+v2iRJUtd05ZrY6MwDJEkanDkAmAdIkgTmAZ1hHiBJGmh6Ow9o6s3BMnNZZl6Qma8GdgC+BSwGTgL+BCSwc0RsX72X3hcRW0bEmRHxFPA74EhgYR+HVS+9lU2ZtUmSJEmSJEmSJEmSNIj05vI968jMx4FPRcQZwFspZh95A3Ag8HBE3Aqcm5nn9UV8ETEMOIJiVpfXAgE0A78HzgWu7ou4OqBymZwRHWhfOdtLZwttOjNWd8bpEVY3S5JU6Mo1sdHvqDIPkCRpcOYAYB4gSRKYB0iSNJj1dh7QZ0UpLTJzNXAlcGVETAbeVz4OoihQ6dWilIjYmaJA5nhgI4pilIeBnYDzMvOU3oynCxYBqyhe29EdaF+5BM/8To41r0o/9R5HkiRJkiRJkiRJkiQ1mF5dvqc9mTkjM7+cmdsBrwMu6o1xI2J0RPxbRPwduB/4KMXP5kfAfpm5c2/EUQ+Z2Qw8Vu4Oj4gJ7ZwyuWL7kU4OV9l+ctVW3R9HkiRJkiRJkiRJkiQ1mD6fKaWGVwCTemms5yhmFVkNXAP8AvhtZq7spfHr7T7gZeX2NsDsthpFMcfOlHJ3TmY+14VxWmzTTtvK4/d3chxJkiRJkiRJkiRJktRg+tVMKa3sBLy6l8YaAyRwNvDvmXlFAxekAPy+YnvvGu12BMaW29d2dpDMfBiYVu7u1U7zfSq2Oz2WJEmSJEmSJEmSJElqLP25KKU3/RhYCJwOPBUR10XEcRExqo/j6qqrgSXl9ptrtHtLxXZXl0pqOW+TiNinrQYRMRw4rNy9MzOndnEsSZIkSZIkSZIkSZLUICxKATLzQxRLBb0PuBV4PfBL4PmIODciDu3L+DorM+dRzPoCcFhEbN+6TUQMAz5Y7t6RmS+ZvSQijoyIWRFxf0TsUGW4sygKegA+XKXNe4ANyu0vdOBbkCRJkiRJkiRJkiRJDc6ilFJmLsvMCzLz1cAOwLeAxcBJwJ8olvfZua0Cj37qy8ADwDDggogY2+r4WcB2FN/jKVX6+D4wEdgV+HxbDTJzNvCf5e6JEXFM5fGI2BH4erl7YVvFL5IkSZIkSZIkSZIkaeAZ2tcB9EeZ+TjwqYg4A3grcDLwBuBA4OGIuBU4NzPP68Mwa8rMRRHxFoqlfPYHHoqIiyiW9TkceAUwD3h3Zt5bpZuost16rPMjYgLwVeCiiHgPcDewOcUsKesBV1D8HKuKiHGsWyBzYMX24eUYLWN+q1ZfkiRJkiRJkiRJkiSpb0Vm9nUMbYqI84ATM3NIO+2agWyvXR3imUyxvM/7gG16Y8x6iIgRFMv0HEcxA8wIYDrwW+DszHymxrlHAz8EZgFHZebD7Yy1F3AacAjFckjzgX8CP8vMyzoQ6xTgyfbaAWRm1SKZDoyTZR9d7UKSpEEvorgUd+ea3BfMAyRJ6p5GzQHAPECSpO4yD5AkafDqTh7Qa0UpEXF9J0/ZGZjUX4pSWo35WuD9mfme3hpT9WPyKUlS9zXqG1HmAZIkdU+j5gBgHiBJUneZB0iSNHg1SlFKcxdOa7fYpC+KUtTYWpLPWkxMJUlam2TW0mhvRJkHSJLUvoGYA4B5gCRJHWEeIEnS4NVTecDQLkXTNVv34lidFhE/BYYAH8zMlVXaDAfOAZZn5qm9GZ8kSZIkSZIkSZIkSVIj6bWilMx8qrfG6qyIeAfwfuCUagUpAJm5IiL+BvwsIq7NzKt7K0bVn1XPkiTVVuta2ZGK6f7MPECSpOoGcg4A5gGSJNViHiBJ0uDVU3lAU5fPHFjeDcwEzu9A218AzwMn9GRAkiRJkiRJkiRJkiRJjaxXi1Ii4qcRcW5EDKvRZnhEnBcRP+7F0PYD/pyZq9trmJnNwJ+BV/R4VJIkSZIkSZIkSZIkSQ2q14pSKpbIuaW9JXKAvwEfiIi39VJ4mwLTO9H+GWCTHopFkiRJkiRJkiRJkiSp4fXmTCn9eYmcFcCITrQfDlQtrJEkSZIkSZIkSZIkSRrserMopT8vkfMssHsn2u9GMVuKJEmSJEmSJEmSJEmS2tCbRSn9eYmcvwKHRMS27TUs2xxaniNJkiRJkiRJkiRJkqQ29GZRSn9eIucHwBDg0ojYuFqjiJgIXErxc/thL8UmSZIkSZIkSZIkSZLUcIb24lj9domczLw/Ir4O/DfwYEScA9xQMf5mwGuBU4AJwFcz8/7eiE2SJEmSJEmSJEmSJKkRRWb2zkARPwbeD7wsM59op+22wEPAzzPz39tp2wxkZg6pQ4xfAM6gmDXlJYeBVcCXM/PM7o6lvhMRCdBbv/uSJA1EEQFAZkYfh9Ip5gGSJHVPo+YAYB4gSVJ3mQdIkjR4dScP6M2ilN2AfwL3Aodn5qwq7SYC11HMqrJnezOS1LMopexva+B9wEHApuXTzwM3A+dn5pP1GEd9x+RTkqTua9Q3oswDJEnqnkbNAcA8QJKk7jIPkCRp8GqIohSAiPgKxRI5c4COLJHzmQ70WbUoJSJeDZwI7EQx+8lzwN+AC6sVxWjgM/mUJKn7GvWNKPMASZK6p1FzADAPkCSpu8wDJEkavBqmKAXqv0ROtaKUiPgfoFpRyyLg45n5s47GrYGjJfmsxcRUkqS1SWYtjfZGlHmAJEntG4g5AJgHSJLUEeYBkiQNXj2VB/R6UQrUd4mctopSIuJQ4M9AUhS6tCWBUzPzp53/DtTITD4lSeqYgfhGlHmAJEntG4g5AJgHSJLUEeYBkiQNXv26KKUvl8mpUpRyCfBOisKTnwA/K2PaDHgr8FFgDLAEeFlmPt2TMap/cZo+SZK6r1Gn7DUPkCSpexo1BwDzAEmSuss8QJKkwatPl+/p62VyqhSlTKcoQPl1Zh7fxjm7UczKMgb4WmZWi18DkMmnJEnd16hvRJkHSJLUPY2aA4B5gCRJ3WUeIEnS4NWdPKCpmwMfCny2ZbeNx1jgnIj4QHfG6YKNy6+/autgZt4PfI0ixrf1VlCSJEmSJEmSJEmSJEmDRbeKUoB/r9g+B3gFsDmwH/AliplSAvjfiNiim2N1xvDy6/Qaba4ov+4UESN7OB5JkiRJkiRJkiRJkqRBpbtFKfsDSbFMzr9n5t2ZOSMz78zMzwEHAQuBUcCp3RyrK5prHHuy/NoETOiFWCRJkiRJkiRJkiRJkgaN7halNOwyOZm5omJ3TJ8FIkmSJEmSJEmSJEmSNAB1tyilvy+TEx1s192fgyRJkiRJkiRJkiRJkioMrVM/nVkm55k6jdkRd0XEv4B7gH+WX+/NzEW9GIMkSZIkSZIkSZIkDWi/vaqZ31+TjB0Lp3yoiW236+j8AZIGsnoVpVSVmSsi1vyD05vL5AQwAtijfKwJKSKmUhSptBjVa1FJkiRJkiRJ0gC1enXy+GMwdAhssx1UvDcsSZIGsL/fkpz7kwTgOeDLZzbzo582MWKkuYA02NWrKKW/LZNzArBn+Xg5sGHFsQC2A7YFsnzujoh4GrivfNxbfn00MxNJkiRJkiRJUk2rViVf+2Izd99V7L/uDcGHTrMwRZKkweA3l627sMa8uXDrLcmhrzUPkAa7ehWl9KtlcjLzQuDClv2I2JJitpQ9K75u2eq0LYEtgDdXPLes/L7uzcyTezBkSZIkSZIkSWpov78m1xSkAPzpuuTVhwS77t53MUmSpJ43d07y2KMvff6OmxZz6KHrQdOQ3g9KUr9Rj6KUfr9MTmZOB6YDV7c8FxEb8NJClR1Z92cyCtgb2AuwKGWAqXWHhhPkSJI0sO9mNA+QJKm6gZwDgHmA1JNu+NNL/4b+eF2y6+4D+98VaSAxD5DUFXfd0fbfz90PNPGHu8/n1bsexahR43s3KEmd1lN5QHeLUhp2mZzMnAf8pXwUAUeMAHZj3UKV3YD1ejM2SZIkSZIkSWokzz6TTHvypc//855mMmPAf9AtSdJg9etnl/Ori4KhvHQ2lJVLR/KNka/iqjmP8J3NXsGIaOqDCCX1tahnLUgHl8mBtUUqLZYBXVomJyKagczMHpn3KYr/Le2QmY/0RP/qfRGRYNWzJEnd0fKGcmY21DvL5gGSJHVPo+YAYB4g9bTfXL2aC85p+9irPn4j7zpgLyaP2qBXY5JUX+YBklq7/LnlHH3XIt7x/fXJoW3/07Ds+GdZ+vpFvG/URrx39Ca9HKGkeulOHlDXopQ2B+jYMjktOl1c0tNFKRp4TD4lSeq+Rn0jyjxAkqTuadQcAMwDpJ7SnMlHHlzCnT9qYtK04W22WX7CDOLQefxwox3ZauiIXo5QUr2YB0iqtDqT7W6Yz8In4OArxxVraLRh492n8yzjGX76c1wy8WUMdfY0qSF1Jw/o8TmSMnNeZv4lM7+dmSdm5m7AWGBf4IPAj4DbgMU9HYskSZIkSZIkqX6+9+QyfjBtGRtPH1a1zab3Jy9OG8d3Fzzbi5FJkqSedOOcVTy1tJktHhletSAFYPgqmLVyFEt+vCmPrFraewFK6jfamq2kx2XmcuCu8gGsXSanL+KRJPWMBS8m8+bBFltCU5PVz5IkDRYrVyYP3AerVsFuL4eRI80DJEkaiFY0J199fCkjFwZDmqtf74fOHcqqy8dzxyvn8eybV7DZkLZnVJEkSY3j97NWADDhmXU/bh4/eiE7vfZBViwbzn1/2Z0Xnx/Plns8zzPTJ3HbogXsssF6fRGupD7UJ0UpbclizrRHunBej8/2IknqvIt/1cwlv06am2GnneGMzzUxdqwfSEmSNNAtX56c+f+aeejBYn/yZvCVbzax/vrmAZIkDTTXv7CSWSuSne9bd0meplXQXPHO89wZG7H966bx6F+34roDFvL+iRv1cqSSJKne/j5vFQBj5w0hywnTxm88n/d89iJGjlsGwE77PcLFXz2aLTd9mKeem8Rtfwn+7ci+ilhSX7GgQ5JUd3+/JbnowqIgBeDhf8E5P3C9VkmSBoMLL8g1BSkAM56Fc39iHiBJ0kB0w+yVAGzSaume8bGEfQ+/k30Ov5uRo5eyetVQtlh/Ds0R3HC7eYEkSY1u+erk7hdXwepcZ7a0Vx1z05qCFIBJ287k5a+5j4ljFrF8ZDPT7xnRVneSBjiLUiRJdbV6dXLez5pf8vwtNyVPT/eNJ0mSBrK5c5LfX/PS6/3Nf0temGUeIEnSQHPT3JVMWL2AjWavfW7shgs55n8v5OBjb+HVx97E8V/4NaPGLmH94UtZ3ZQ8fecIikmzJUlSo7pnwSo2XDGf7971R1aVq/KN33g+2+/zxEva7n7I/ayfy1g1PHlh5VCW50s/P5A0sFmUIkmqq9tuhRdmtX3sz3802ZQkaSD7w7XJqlUvfb65Gf50vXmAJEkDyYKVzcSsJ/jzI99lVaxdq+dV77qJ0RMWr9lff+ICXnnUrQxb1kTz+itYsHwoM1e2kTBIkqSGcevclfxy1jk88PiBUE6Ust3ej7fZdqPJ89h+4WNcPfJDXDLmP3j8jr/2YqSS+gOLUiRJdfP44tWcc83Kqsf/+Odl/PPJ1d4RJUnSAHTJs8u5+PrVVY9f/9cXueofK2luNg+QJGkguHXuCn76ws+5YvqR5JDiufEbz2eHVzz2krYvO/AhVswfxvtHX8Gx613JLQ9UuZtFkiQ1hHnT/8XuC2bx/ILN1jy3zcufrNp+lzEPst3KZ9kunuZlf/oaPPOv3ghTUj9hUYokqS7umr+Kff48n3kPV7+0LHlxJF/+vxl84arlvRiZJEnqaT+YtoyTb1hC09zqecD8Getz7jUvcMaVy6q2kSRJjePZx+5h26VzuOv5fdc8t/OBD9HU9NIC1GHDV3PMxF/xn4sv5FNDzuXQ6z4GL1qYIklSo9rx6b/x9wV7M6S8N2Xk6GVstv2Mqu1f3GzDNdtNNLPqxp/1dIiS+hGLUiRJ3ZaZ/PTWO/nSP3/P0FWx5vlhuZqNJ8xZp+2UUfO49ubgxkeqz6giSZIax5zlq7n/9j/wpX+uO/3uyGXNrD960TrPbb/+LP58axO3P+mU/ZIkNbpJT93E7Qv2omnZ2qV7tt+n7Wn7AVZuPWrN9obNc+G67/VofJIkqWc8vXg5hy+4kxua9oVytrQpu06jaUj1mVEXThy/zv7Qp+5n9twHezBKSf2JRSmSpG575LEH+MHjX2PJU1uu8/zweUNY9uCEdZ7L+SMYNnQV37vR2VIkSRoIHrjlKn488+c88swe6zw/Yv4QVk8fs85z661IguR7NzlbiiRJjWzJ8mW8cu6d3LBy/zUzo2yw6VwmbD6n6jnzN9uIdT6qeuw2cvb0ng1UkiTV3ROP/JMHN96a5949hNce9lcOec1NbL/Pusv3PXzhXqxaOWTN/ooxI1kxavg6bZ555AoyXeJXGgyGtt9EGpgiouoxL4JSJ2Qy/NbzWL5qOLfN2n+dQyMXBbE6GTJ0FatXFZecWU9tzB6HP8qd97yMGfOambyB9ZFSf1XrWtnozAOkOlm+iH3+9WseXLAjMxZtsc6hkYugaZOlxEYrWThnHACzntyYrXd5hkcf3JyFS5oZu555gNQfDeQcAMwDpHp47KG7aRq/KaNeP4//nnM2Q4et4pE5W6/TZtbdm7PBLs8zbGQxQ9rK9UawfOwoRi5cuqbNcw9ewuRXf6JXY5dUm3mApPbMn/FPbj7gYM5cfDVDD28mgZnrb7BOmxl/3J6JB05jo63nrnlu0YRxbPj07DX7Gz/+KM/uP5PN2bS3QpfUjp7KA3wHUJLULcun38c2Cx7j3KdOJJvXVj7H6mS3t/6Doy/9Gaf9+Ie8+dRrGTl6KQvnjmPi+nNZ3QQX3+dsKZIkNbJZd13L6OZl/PTJ963z/KjmlRz8hd/x7kvP4ZSzzuWdn7ycUWOX8MIzE5k8+XlWAVc/5FJ+kiQ1qhefvJO/HLQ/x8ZdbDRhHuuvv5Bt9nhynTZP/2FHZk9dd/bUBRuPX2d/5MO3syDXXe5PkiT1Y5ncP3kcxy+9k6HRDMDKoUPXLOMDsHjpCB55cWOGz1x3ltTZG2yyzv4mz85i2sqpPR6ypL5nUYoGrcys+pDUcXP/fgmrcgg3Pn/IOs/v/7q72fv0v7LexosYMrSZnfZ/lLf/5zVErGa7+TM4ZMzfuOOe6tP6Sup7A/laOZC/N6nXrFrByPt/ywsrN+SJuTusfT6SN576B7Z63aNE+T/OrXZ5mrf8+7UMyxW8ft5tvGv0b7jvzof7Jm5J7ap6nfznLX0dWl2YB0jdtHoVD20+ijesXHstX9XUxKqhayflbm6GqXdsw/Bn1r0ZZf7GG9FccfflhrPn88SLd/V8zJI6bKBfJwf69yf1tFueeYRNN1zOEobTXD63fNiwddo89MQUnthvNZu/OG2d558atiMLx65d5nfI6mYWP3uPf39SP9JT10mX75GkRtK8GuY8B6PXp3nkWJ6+BZYvgMmvgDEb90E8zz/KpFn38dc4kKPech3rjVrGgw/sxHPzJ3LACTe/pPnmOz7LJ478Bgc+9VdOGAIrFw1hyR0fYb1939gHwUuS1GBWrYS5z8O4DVk9dDTT/gLZDJvvDyPX7/1wVj/0F8aumM/1o97BKe+9kGHDVnH3nXuwcmyw9YFPvKT9ljs/w5fe8d9s99wjvGkIrJ7dxOo7/4Mhr3hb7wcvqfNWLIdzv9zXUUiD16qVsGA2jNmAZ+4ZyT9/CauWwx4nwJRX9V4YmcmNU//Boo3GcSl7sF3zbPZa/TTLh6/7YdS0Zyfxj11H8G8vPsoCJq55fsb6WzF20gtMmjFzzXPLnvw7zXu8iqbw/kmpX/NDY6nvLJwLc2aQo8bxwF+24IFLgqEjYZ9TYOtDeieEzOTJXMB3Vs3lqaEHsHq9JjZqXszpy//C+OHrzoT6r6lbMWnI82y19AnuY+0HF0M2Xcnw25eu8+n0hs9MZ96UF9mQ8b3zjUjqExalDHARMQI4BXg3sAMwEngK+C3wvcx8to5j7Ql8GDgUmATMA/4J/Cwzr+hEP5PKft4OTAGWA48BvwbOycxl1c+WBrCp98IvPg8vzqI5m3h+/s5c/+f/5Jnnd2X4GDj6V7DDm9Y2X7IsWb0axo7uuXVgF912Mcu3nMikHZewWdM/Adhlt4eZHptS7b2kEa9cTV4KAQyL1Qz503dhi+1g0vY9FqckSQ3vvr/Br74MyxbSnEN4etbe/P5PH+GFeVszemM47krYfN+1zRcuTpqaYPSoHsoDspkld13BnF23ZY/N1k7Vv83205gxakLV0xbvOx6uLraHRDPNf/wBbLUbbLx1z8QpqX6uuwien97XUUiD031/LfOARazOoax6bjeeuvHjzJq7DfecB0ecC3ucWDRtbk6emw2jR8H4sfXLAx5dvoTzFj3Hc3Nn8PzQMcyPl7PDzKd4cMg23LLhVrxn+L3rtL/30W3ZYPxMdlz+AHdy6Jrnh2y6mo3/PHedthOeeooX9pjLJlTPIST1kcWL4e83w1/+RP75ur6ORhp8MuH68+EPP4dsJiLYaNaOzLv108ycvT0PXJq86xLY+Yjimr90eTL12WTDccGkCfXJA+5dNYcvznqOx18cRtPQYIPmEXzorxexx/RHWDZ8BHfsuRd77bl67Qmrmnn2mTG8afjNrDd/8Tp9DZu8glvedACvuX7tDa2Tpj3Hcwe9wIYxvi7xSuqfLEoZwCJiC4q3fPcAZgC/ABYDhwOfAk6OiGMz8091GOt04BsUq8ZdA5wPbAEcB7wxIi4FTsjM5VU7Kfo5FLgEmADcDfwvMAp4F/Ad4P0R8fbMnNbdmKWG8tyT8MPTYdUyiKApkgU7LmT8QRfz9LVNLL/2ZVz8rmY+dPscnp6ygt/etow7bhrPgmfXZ6+dgv86cUjdktAluZKbeY75U59ks+ahbLLLZJpYe6fEsuHDGTGm+p/60g3GsGCT8aw/cz4ATbkarvs+vPc7ED1XQCNJUsN69G4499NAQgQRzczd60UmvOoCnr30feTftuBXb1vBqf9cwIPrLeG3t6zin7dsyNIXxvDKPYKPHz+kbh9Kzc1l/C1n0HzHfUzYcjsmb/biOscXjxzF0JGrq5wNCzfdgCXrj2a9F4s3ppqyGf70Yzju63WJT1IPWbEcfveLvo5CGpTyX7fCzz9d/Hc5giGxmtx1Ji/b5/vM+/nHWfnEZC7/0GrW2/Uhpm8+lt/etJpH7pjA0nnr8Zp9go+9Z0i3blZZ2LyCf3vyMVg4lzGxnKfHTeTQ+//Oh/98EeOXLgLg6QmbMvuYl7Nqsw0BaE54aLPh7LTkAYY/t5why1eyekQxk0oMhwde/XJe/qe1S/Zs/vjTPNg8g02GWJQi9bqVK2HWTJj5PDz/HMx6vth+cir5r/tYseQFFu65OQsO3JaFx70ddr2/ryOWBpXVf7uIIdf+BJqaIIJmguf3SCbv+wtm/ejD5IIN+NXpzbx72zu4e6MNuO3OoUy7YzKLZ4/mNa8IPn58E2NGdX0msh8ufIhHnnqSw5jJNsMn8Oy84Zz966+z0eIFa9rsP/V+npu+HU+8fR+I4H4m89yJK3nqkRHkP5oZtnQ5K0eNACAieHbK5HXGmPTUczycM9kFb1pt1+IXYfVqcuwGTG9eThPB5k3DCT9XUQMI1+kamCJiNHArsDtwG3BYZi6sOH42cBqwCDgwM7ucTUbECcAFQALHZuYlFcd2Av4GTAQuyMz31uhnF+DvwFjgB5n54YpjY4DrgQOAB8qYF7bZUfvxJuAadWoczc00/+/J3P/IGKavvw2LtlvN71+2B/dttRXDm1ax0/pzmDxqEcNjNXNfHMXdUzdl8bKhbDP+RTZbuZJlM8YxbpPlHP6ycbx6zFaMZFj7Y7YhM/n5vNn8au4LDJnWxPGb3ca84cO5f8gkRrCKN638Fzs2v8AL669P85C1ie7Tt23DiJXL2PjgGWue2+Shp9n+pgfXHeBdX4bt9qW3ZaZJm9QZK1bAbbcQr34NAJnZUH9A5gFqOCuWsfp/juaOWbsxc8ImvLhdcvUu+/DEppuy3pCVvGz8bDYZuZihmcyatx53Tt2U1auD7cfPZ+KiZMXc9dhgk5W8becN2H/klgxjSJfCWL66mS/OnMFfF85n/WnB8dvdwsMxkfuHTGJiLuKtKx9kO+bwwvrj1ikyvf/8fdlhv/sY8bK1kx1ufs8TTLnzsXUHOOm7sNnOXYpNUi/44yXwsy8CEJc8ADReDgDmAWo8y5fMJM98N7fOOZQ54yaydMpKfrfrnjy8zaaMXrya3TaZxaYbLCSAhUuGs2rBCrb72/1MmDmXpaMmMvWgXRm62VB2H7chrxvyMsYxqlPjPzDvaf72/A28Jp4gIvn28Fez70238W83X/mStquGD+X+D7yWxZM35KHVE/nB8gMB+OxtF7LDzitZsOkGa9o+OnoiJ3zv1wxbtWrNc3866b28brPju/Rz6qwlS5JnnoYttoBR6zXcP2VSxy1eDM/PgBnPwnMzysezMGMGOXMGq5bMYSXLWLXRaFZuNIaVG44utjcczYpJ67N0+4k0jxlJArOHjGb6sA04ZWLx9r55gNTz5i94lGX/77+5dta7WbzVEBbvuJwbdtuR58aMZ5Ply9hj2xmMK28OXbJoGONnv8BOf7qbobOWsHj9jZn25l1ZsdlopjRN4O1Ddu9UHjD1/hlcN/Nq9t5sDhs2LeWBpk25cs42fP//vsqYFUvbPueNezLjlTtxzvJ9uX/1JAD+/d7fcsCU2SyYtOGadg+P3YQTvv9rRixfsea5vx7yGl590Ke78mMaHFathIu+Bnf+njlj1udz7/h/zJw6mRyWbH5ocub6WzK+yXko1PNaPkvrSh5gUcoAFRFfBs4AVgE7Z+ZjrY4PA/4FbAf8PTMP7OI4GwFTgXHALzLzpDbavA84t9w9PDPbnOcvIm4GDgIeL2Ne2er4DsCDFDP8fC0zu3SFMvlUI8m5c7j0tF/xnU2PZeoeQ1gxeQVjxq9g/IYrGLWsmVdv9RRj1lvxkvOemD+OW6dNIpcnr9n0OTbaeCF3T5/M83PGssN6ozhi8wXsO7KZmJk8uXwDhk7YgCkbNrHlkBEMiSCzmSUrZ9HcvIJRMxcx/dlbuGfMcrYbPofRsZK7h2zOucP3Y/XS1ewz7V8A3LPljnxk7O2MG7H2T3dVcxO//Our+cTMi5hz7CZrnm9avpopF9/H5GVr15BeMXkbhr/vnB78aa6rOZMv3bSCix9cyebjmvjOG0bwsgkVH9Q1N8PMp2DsBjBmfK/FJfU7S5bAvx5g9YN3s2jGPSwYPo+Fe232/9k76zg7qvONf8/Y9XXfZONuRCBCcHeXQqHQlpb2V+rurlChpUAp7u5ugYQAgYS4Z7Oxdb93r4yd3x9zd/fe3U1IhZbQ++QzmZ2ZM2fO3Dt3znPe87zvy5Sj/wQceIaoHA/I4UCCu6OOG7+5iJtHns6umRK73CJSYJJfaBJJ2Bwxpg6fkR2VRErY0FbE2zvLCLsmh5c3EipK8nZdNZ0dISbl+Ti3tJU5AehuUNnlFuMvz2dMgcoI1YcQAsc1SdgtSMsisKOR1Z3vsifPZpzWhiokz2sTudeYRWl7K3N2rCelGbw7ahLfyH8TQ+//bXVZfu57ZgG/DF7PjuMm9Deyy2XCI8sotTr7dqXGzsR3wW8/6I+0D44r+fHrJs9utZlcqnDNcT5Kg/+891gOOXyk4Trw5VOhaTeQE6XkkMN/Cm1djbx6+X3cErmUbUe4pKYlCBWmUJIqkQY49siNaLo76LzD/v4UR17/OALoCQT5zcVf4LbJZ5GKa5R3Sy5oXUPhvFK2KxH2xA2CDVHOC9Qxa/Q4VrTV82yDRJFdzF3zMpNOyCOmhamliNfyx3Ls4kVc8O4Le21zojjMe184iT+7h7HBLQOgwI7xm86HSdUU0NvT7gwWcdjDixi+q995ZVukhBFX3YUmBgtoHUcSjf970hFt3ij5/vccrKTA9Uku/Ap87LDcJE4OBxh6o5s0NkBTg7dubEA2N2LHWrHMLiy3B9sn+4UmxSHsov61XRAEJfs35QJJoRNTfLSpIVq1ELu1Qhq0fGzF+23eH/AcynI8IIccPji4UvLGuqUs+laCp8bNo/6wBHJ4iryCFLLNx2jZzdwF24c8d+Hfn+ao6x/zeIAvwOWX/IZnKo7EloK8TskRW+uZeFYjiUqdnqhCweNNBKImJcWtFIp6dhRVkCgpYGaslsIinbudQ1ijV1HltnDbkz8lkozvvd2awltnHck9gXksLxtLyIAxeR1MU/cQ1m1q4u0Y0qEuVMRhj7zGiB17+s7dQ4DS7z6MIbIdai1bsnSlJJ5wOWJcE8GiQjCC/46P+cDC43+Bl+/GFYJvTf0VxrcXonV57+XYtATuA81cPbYGNed8m8MHjJwoJYcsCCEKgN1ACHhaSnnqXsp9HfhdevMkKeVz/8S1esUvAAdLKd8doowBNAKFwNtSynlDlDkOLxIKwDeklFfv5XpPAacAcWC4lLJ9qHLv0+Yc+czhgED7qtVc9asAzx5fSrQ429BUoCe5aN4miov2TgLzEj2csGgpj7WM49fF5xC3jb5jmiU5bEuUdZESyo0OLsh/m6lVewiXpxCWTdwUNMkATn2SmZ072B4cxrq8UQQiktbCCG8ynMvefJKPvf0cftsTxbiKQv2C8ew4bjpS8wjRS9ZYHrOmcOn6Fzh0cidW0NfXhskrt1C0bFtWm+1P/hmtcuI/9DnVdbos3ukwsUTh4Kr39/6WUvL4mgT3X6tjNicpSjYzNf4i7x52EDf9bC5+TYBlwt+/BRveAl8Qrvw9ibwK7ri/kI0bVRYeLjj7PJGLsJLDgQfXhc4OaGn2ltYWb+loh/Z23O4OHDOKbcWwFJNksUayMkzPtCoS48uRqkKjGmGNXsV3Ss8FDjxDVI4H5HCgYPuzL/Olu6fwysk+UqHs57Xc38PFCzcSCg0WpvaiJNrJcS++wfWJBdyQdwKW299H+lIuh2xOsqmwgNFGExcWvsm46hb8RSlEyiZuKzTJENquTiYlmllhjGVr3nAieTbbi0uoTwT53GsPcvLqJX0p/FxVYffhk9l59BQvrDBwV+og3nJGcOXap5g+y8TV+ttw0JvrCK/ZldVm9/O3oxRmh/F9P+zudlnZ6DCtTGVEwfuLSqSUvLjO5K4bFWINnRzc9iyF2hbePv+T3PLpkV7f7rrwzE3wznMwYjJc/D0sfDzxuGD3bjjuBMHkKQfUqy+HHP4xdHXC+rXIZAIRCEJXPdzy077DOVFKDjl88HhvzVL+9NNinjm2nI6KfnuAKlwqbIuLT16Nz2/v9fxhbc2cc//TrN3g45TDf0NPxuRNxLX54egnGd9Qy9LOubhmhJNSzzHpjddR93SSKgwTm1ODU5bHzpYwj4Xm8XDJfG5Y80fObFr6vm03w35sv4+G0lJePOpImg8aDoDmOozpaaY62UWiy2bY21uYVLej77ykLej6wd2UK6VZ9b25yuVXNzlEEzDM18Q17jcpLSiGS69ETJ5CW6tk6RJJQQEsOEygqvt+NX3xCxa7tvdzhni+ww2fuodRh5wEkfJ9nJlDDv8B2LY3Rk+LTGhqQDY1YHc3YyXbsawoNgksQw4WmhSHsfMDWUITF0gInYRiEBcGCUUnnv47rnjik5jwEVcMkopOSmjvm1o7J0rJIYcPFrZ0efzee7npmVN4/TQXy99/TEEyOdjNWcet32cd1Z0tnPPQs9zQOJsfTPt01rGQYnHX7l8SWtnGEmcB06wNHL/8UYK1zX1lnIgP6+Aa2iaP4tGyQ1npH8Ef1/2VsJPMqqsllEdJVydCyxiLKwL8OqbP4Nmzj2fV3Bl9h4J2ijmdO1BWNDHhnXWU019fU0Eh8rPXUqFV9O1LJFy+9qMoG9o8HlMYb+bad06ivALca67DN/cwHEfS2QEFhbwvBwDv9//ay5LaDbDgmASjxzsYWt77nvdfRd06+MNnQLo8Ov4E3vnJ99E7sgW1XYf0cOwLKU4NF+2lkhxy+PcgJ0rJIQtCiEuB3mTPn5dSXr+XchOBDenNIaOc7Me1tgGjgWYp5V5HbkKI+4AL0pujpJR1A47fAlye3pwspdzAEBBCXAn03s/lUsrb/ok258hnDv81xLslG96EzUtddm+3CeTHmXGc4ODjIvgD3kSNKyXPPvwkN9+9kBfPESQjA59VydmztzBlWBulDc0Mq9uDZju0lxaxY/RwbCNDTWy5XPfKQbQnQ4Pa4lMsfqA+wdHD6nFDOpWrt+O2xVl3+AzaRlWg2A4dHTq3rpzGGsszIuVbMT634wm+tv1BCsyeIe+xfVwlGy9eSDtBbmybhe0oNOcVcXXng+jD+0MEljZ3MPqVNejd/cKajvEzKDxvSE0aODZvvNLApo5iDp7tZ0OrxYrV8HSzSXfaW+o7hxpcOdvY6/m8+QZ3vbmBO1dejt6jolv9/abf6ebsrwrOO74Alj0Dt/6Yrm4/NwS+yrqyycSsQuT6flJ31VcERx+b86jO4b8Mx/EEJW2t3tLeBm2tyPYW7FgHdrITx+7BduPYpLA0Byfiwy4IYBcEcfID2Hl+nIi3SJ+GBCwUkopOtxKgTQ2yQytij1ZAVPP3GagOVENUjgfk8N9EtFWybilsedOlcY9FpDTO7JM0Zh4eRjO8PsWWLo/++R5uXnImr51rYvuy61CEyyWHrqemsJvqnfVU7WpASElLRQk7Rw/H0foNE3Yc/vDKHJLO4NR9ETXJb7QHmD4ihtQUhi/bRFQqbDhyJrGSPDTTYndTkNvWz2AznlCkOtHC12of5DM7n8LnDj0R1jK9hk3nzmdXMswDrZMQUrKrqII/9jyIrOznI9W7mhn++jq0nlTfvvY5x1J0wreGrDdlSp5eZNPUoXD4IYL6mM3ydS637zaJGwq6kPzxBD+njt97mkK5eiXXrtzNc88dhxFVUdz+19e4xJtcfvd8JlWqsOxZuO3HmDHJc8EzWTbjMHY1VdP9zggANA2u/pPCiJEH1OsvhxyGhm3Dpg1Yq9+ks30DXUYX5qgwyYp8ZJ4fLZYksLmZgqXbKF6xHbUwgHjIS8N5oHEAyPGAHP77aK+XbH0HklEoHW0zbo6GZmT/lB587UXu/9N0njvXyBKmarbF9F3ruHD4e+SPVhnW2Ub1jnoUKWmuLGXdzMm0lpf0lRc9Nte8cgg9bj+ZMKwUZ77zLOe9+ySzd60nX8YIdnZn9ccYKqgCSkMwbziEdUxbYAzo+xNBPxvC5Ux/Zw3aiAGTOX4dVAVHUXjosrPYNK0/Ytq0rt2MXL+NmT9/DBaM6NvfEw6y+6hPMWH66d6OrlYaXnmVy548hZRQ8QsHX5OO6rp8fMdPOL35z1zzmxdZ9vRM3ITHfybMcBGTXcZUqHz8CBW/3v/ZSinZ1eHypUsGfy/K3O18qngpJ5TVonY1wfTj4OCzsibnLUvS3ATlFaBpB9zrL4f/NpLJLOcQp6Ueu7sJO9aKnUpHNSGVjmwSTAtNwtjFoSyhiYsg3isyUfS00MSgRzHoEQZRxU+PYhBXDFJCwxLq+4pM/lEcqLYAyPGAHP67MJOS2uWwYzUgXCommEya78Pw99uXU67NTX+8jyeWncVr56VwM3QHE/ds5rhNizm2YhOiMkQkAqWdXUgEDcMrWDNrCp0l/anyOtp0/rJkTt+2bptcvPghPv3KXczdumLoRvpUKA6CAEwHysMwudTjBgOQ3BHFv3g7jCqAQ2uyDxoa6N45D116Jutn9qfqHR5vY87S5Uz70/Mez0ijuaKE2LjTGH34ReC6uM/cyE3P+LhTXkzZ9Ga0hIK5uATdtPl03TcYXrWCr57xKP7FRYiYRkGp5Jtf66FB+FHaNTathqJSwamnCbpUlytX97Ck3eaI54O4mzy7gXAlZ37mSXoCGls3zeErVxQzLLiXuYX/FlJxuPpT0FRHS14hP6y/jbI7yoYs2virRq79ehk+kZuzyOGDQ06UkkMWhBD3AhemN+dJKd/eSzkBdAERoEVKOfSbbO/XmQBsTG8+J6U8aR9lM6OyfEFKed2A4w1ABdAD5EkpB8cf9crNAd5Jbz4kpTzvH2lzuo4c+czh3wYpJbF2aN0FXU3Q0wlWynMQzuz7125yWbtMkqgXJPJcgmM7GHnQDkZPq6Okqg1pKXTsKqaptpTYc0HqCop44KwwiYyJJdWxOX7Vq3ys4QVmmNupbGulMCChKpJuDCQCBu8unMO7C+cQLfD272iNcN/bkzDtbPI4LNLJTxL3MXvFCorqW/GZJn7LQtNBNQSqqniGKCGo00rYpRczo2sbefbeo7P0IlacR9PYahTXpS2/gK3jRtGSX0R1gUmJ04MCWEKhq9XlzIf7gzRJwPrawxj+AQat5l3c8ps3ubPzLHBBCdoIIfHVG6hSEp3Sg5MCozHIMTOSTDo0xNgqweTKKKkdL2O98hTBLVt4cNpp/L7ps9gLu5EBh7yX8ile1H8tY1QdhQtWcUjbVj5R+ySfj1/LemMiU0NrOKppOWuic1ibmAXApCnwy58mwUxCXjG2LdnoJknUJtl0ez0VowMc/alRKMoBN0bP4b+JRKJPXCLbWnC6mrGjbTjxDpxkN7bdg20nsIWJo9i4Bn2CEifP3ycwsSIBUqpGSqQXRSchNGLCR1Tx93lIJYXnCWUqnrHKEiqOUJD7YbQ6UA1ROR6Qw78TUkq6W6B1J3S3QrzTC7alKIDXhSJdWL7WZfM7klSbQjzfIX9SC6MO2sGoKXUUlnfixHXadxbTuKWMxLMBNowr4OHj83CUfjLhNxOc/u7zXND2MhN7dlLZ2U6kQIPytNBDQiwcYNkRh7B8wSwSYc+TaP2eIh5dPg5XZhslpkd28aPme5i8Yi0FLR0YloXPtlANgWao4Nc8HoBgl15Eg5LPQV3bMOTevbJ70V1WQPuIchwhaC0sYtPEsXSF86jOT1FixVCAhKJDXRfHPfd633kuAvc7z6ANzIPcvIsf/6qe17pngQvCcMEFf4eKUF06DophNCronQHOPMymcoqfKTWCsSVdmDsWYb74NP7tW7ln8pn8temT2DNjCEVS8kQhoe0Zqp9D1jNyYh0Xbn6OuS0r+EbqdyyzD2aquo5DEmt5J7qQPZY3eXbiyYLP/l//Z+q4ko12Eq0uyo4HdzB6biljjx35vp9VDjnsN6T0eEK021tiMUjEkckEMhnHTcVxrQTSSiCSKUTSRrEdFNNF2A44rpeGx3VxpUNSS9LZ04BV6tJ4yFjenTCNbUYJHVqQlKLjCgVVupTZ3Yw1WzgouZtISycjfvs8BfeuSDfpwOIAkOMBOXxwsFIeJ7Ct7P3JKLy30uWNpS7tayVJV8XMcykf28jIiTspKuhGDVpETR+y0w8rkiyuXcizn0mQ9Hn9jOI6fPHZm/jak9dR0dXSX3meD6aVw4QSSHsob5gxkcXHHUrjMM/L+JlVo1heV8Gwtj18/vlbuGzRvZRGBwQd1hTPrlAR9pa8AYrYIWAqKry8HWNPp3f+qeMhPGASJ2iAEJiGzt++9knay4oB8DsmCxo3c+j51yFO7heruEKw21fDpit/xM0d7ShWN9NjjWx5azzrW0dgBgR6g07xFgMjJagYUUdLSxUyrnJqxaMsDL5EQ1MRDxx6OksaZzNhlMv9nwmClLTXruKHS+IsXz6Dim1+BmL80au4pPtmphqbM748he0TTubakRfQ6Vgkbqgg1a1QOgx++pU2KjbcB74g1qFn8nfN5l0ryvHSzwU7W2HkKMgveN/PMYcDGJblOYh0duB2tOB0NmF3t+DEOnCSndhmDJsEtmJh+cDOM7ALgthFQayiENLvTYg6COKKQUL0RzBJKDo9ikG38BNTfPQohjd2VzTsgTz5PwhXQqgzxm1VRwM5HpBDDr1wXUlPu2cTsE0v8KZML7EOWPWeZPWbLm07BIkwiJIkwyfvZuS4XUSCcVwh6Er4Se7Jw1wESyPTePmiBG7aplzR0cQNN32NU957KfvCmuJxgJkVENBxFYU1s6aw+ISFfX3uc2tGsnxrGRcteZgfPvQ7RrXsYhCKAlCTD5Vh7+/9EbKta4b3Gvu3jx3tcYheWA7ke3WlfAZ/+e6V9OR5x1XX5Yi6NSy89EY4aXzfKaausc0/isWX/oTbulpRhMvCnlqc7SFe7pwKeQ7a2iDGdj/+4VGKR7YSe2okoZjksmE3MMm/mh3OMG5u+hKxaCG9OQMjNc28frLNThHE3yM44fY8hCKZfcJ7jD94M917CpmwcD3XPHEGXWuG8fTVfgLGh0TU4TrwzY/DkiXIUYV887TfMeobI8kPtNDRXUVL+yg8BZEHq8hm9qpuzqnMRUvJ4YNDTpSSQxaEEOuAXulhqZSydR9lVwPT0puVUsrGvZUd4tzzgAfSm9dJKb+wj7JnAw+nN2+UUl6ZcawU6I0Ntk5KOXUf9RQBbenNTVLKfyzPB/3k8w8v3oViWeiuierYqK6NLi1Ux0aRoLigSBVD96EFw4TyCsgrLCFSVEF+QSkhI4hPaKjkUngcaJBS4liesah3bZtgxj3hae861QOpBCRjklTcJRm3SPSYdEZtumIu8Q4w21UUF4y8BEZ+AqMogV6QxJefxJeXQLoKVlJF98cpq6lHGZ3CyHMIqjaOFCjIPp6XiKk0rxPUu0FWFoxgY6iGpu4QzdEgY+q389CfPsWUHQOCCA3Pg4klngdThvhBqgrNw8p55/CDWT13OttjhSx+Io8jVyzmqE1vcPSOtylpaERYrmc4qsmHspBHPIN79zAeCqaho1gO2kAtmaqAzwv76QrB6ycs5PXjF6I5DpOiDZTaPdS5Yc6692lCPYm+09rKJlB8xV+oTbXzTtPzFJuNxC2V1+un0rq+inYjiDk+Qefzw1BKTKrO3YVWkUI64DxcgXN/Jf4RjWw4JMURI9bx2cgyCkWCDfEi/vzWBWw/RYGQSzndTGvYhnX/SHZuOogpeWv4/uQf4ldTSOBB81R+U3EpY2a9x50P/hSf41kXrz7h07zReQzcVcX/zf86k8ztXHPaV+guCXL231+hpnUHL1kn8VrjKZw/7h0+9sf+jGVJ18VEkqe8f5qhHA5QSAnxOMSiEIviRrtw4u3YyW6cVBTH7sE0ezDNGKaTwHaTuIoNhkT6FWTYwIoE6MkPkwiH0oKSfnFJQuiesSodatcTlXjGKU9UoqRFJR/s4ElxHO4Nz0/f8oFliOrjAc/fieaYqK7lcQDbRpU2qnRQXInqSBSho2t+jGCYQEEBeQXl5BWVUFBQTsjwo6PmeMABCNf1eEAWFzDTfX9v/5/BCZI9kmSPQypuEY9bdHTbRGMu8XawO1VPJJmXxCiIoxckMQoT+AoSGOEU0lawUiq+UIzSkfWIkSb+sINfcbBdgSr6eUC0Q6V1k2A3Yd4pGst2fwWNnSFaYwEO2foe9/3pCoa39udbRhEwsgAmFA8yHLmaQsPIat4+ai7rZ01mQ3MJ6x+VHLPqdY7duJhDd64g3NyOkECBH0bkQ0nQ84gawgNqX0j6fehJE5UB40pN8byjhMBRFZ4/8zjeXTgb3baZ2r2HQifB9mSQj939OJrj9J3WMOkoKs/+Lmviu9jc/AKlVjtdpo9XdxxE65YK2nxBrLFxOl8ahm94nIqzdqMWWciUwL51GO6LpejT9rB+sstZI97hsvAKgsLk7WQ1f11yAc2npiDkUiG7mLyjjuTfptDQMZZ5xUv4+oRfoQoXRyhcn7yEW0tOZeakN7jh2V+jSW//t87+DtvWzMR6tZDfTL+SoJrk2lO+SkLCOXe9QGlXI4+lLmRNyyF888TlzP3i/L57i7suEkkoxwP+t+A4yFgUGe3E6WnHiXfjJrtxkt04ZhzH7MEyk9hOEsdJ4UrLW7CRiovUAB2koSINFdev4/o1pE/H9Wm4fh0UgYvAxuMBtlBQpIuGRJUOqm2jJm0wbWKhEHtCJdSqxezSC+nUg7jq+z+ThmuzsHMbqU0Bvnj0gZnCD/p5wB+fvwPVsTwe4NjoaZuA6jqoOCiOiqaoaEYIIxQiGCkkUlxCQWEl+XnFBHRfjgd8xODYkmSMviURTf8dhUTftiTe7dLRJenodunpdkl2SNweieFP4SvswchPouelcEwNs8dHKmWQ1KDmkK2MmrsNX3mcYNBEVQfbY0XMYdPmAF9LnE1MeFFGfWaSB//wSU5a+crgRldHYFyxNwmUGTZfVWisqeTlM46msbCI6m+9zFmPPYTPHpD2L6h79oSxRf9Y/9+egEV1EM9Q4AzLgyNHZpczVNC9CfTdI6q55YuX9tktJnXXc8oVfyE4Kh8i/SKYRRWT+cZxn8fNEOYuNLfxujIGCczYsplhq6J0Tq5GG6WR2hLhlJde4rTyp/vKO5s7+EPZl3mm+0wmTezhZxNvpWFVE5/b83NMTcXoUSiLmRx15hsMn7iHhtoKut4N8s3AL7KavyNQzQ9Gfp/QIzrheDfbU+Nx8O6nKryF6yo/SXNhMT8+9dskugtxXgoxe8mL7JbTmJJ8h4/9bia+mROpDYZYY/Uw1QmR2O6jrAzKynPvjQ8LpGnidjbjdDXjRNs9UUm8AyfR6TmGWD2Y0sRWbFxd4uoCGdBxQzp2np94XohUINDvEJJeTKGREBo9UiPh6iTpPaaTUjUsRcPStKwoh3tpISoSFRcNFxXXsyUiEZDxt0RknSWy2HnvtkzzBRsFJ7128YTovXBdiWI75HV2M35HHTM2b2By7RbKutrRbRtx47tenQcyD3j2DlRpodoWumujuhaaa6FKF8WVKK6KqijoviD+YB6BwiIKisuI5JeTHy7Er/swUFFzHOAjAceWmIl+W0AmD0hE+5dkFGLd0N4l6ex0SUQdUm0SNyZQwyZ6JIUWMTHCKfSg1+embB1CJqPnbaRkShP+whR+nzWk7kPEbJ7bUsPvU8dgpkOkjGrawaIfn05VZ1N2YUV4/ffYIs8ekAGpKuwZNYxnzz+BvNV7mP2dhxi7fevgC1ZFvCgomWKS94Mr4Z09sGWAwDXfB6eMz5qfACDk9fErD57GExed1rd7fLSRcz92NdqMcrAdCOigq/xl5incOv0UdNWhKJDEpzk4FlRs3MOpby1izrb1BA2T3ZNqePWMo9mtV3PkbW9wYmIJ8YIQetLC3GFz+dZHGVOzlQWzlmK3KUSP0Smz2nnp7uOorZvM/DPfZMGZ/b78yZhBw10VHKU/i+HaBOaeQ+SYM7Jv3fXSBOUXvH+aICkljvNPRFZr3g2vPg8TZsJBs+CHX8L+xXXce/gnePPKU5muNPKJ5Q8SSHkR7nY3T+TJ175OY+OkviraP9fOH64tRMu9n3L4gJATpeTQByGEAiQBHbCklPuMNSWEeA44Ib15pJTytX/gWt8Hfpbe/J6U8pf7KDsPeDO9uUhKeVTGsYXA4vTmi1LK49/nuknAB9iAX0rp7Kv8EOdLAPe8yZ7xXgiPdysZf2ete39Xkl423/ez6d+VsRbZf4s06RdD/Z1eK97aFQpSgBQKUvG2XaX3b68tmeV7F8g8Z0A5QCpKxra3Jr3tCsUTDaTrJLNuRSAVBVeQtS0VBVdRcXvbqCpe29P35koFKV1cBAJPFQwg3fQHJr12uUgU1/tAFekiJAjXRUjXE7JK1/sKJN7xAZ+zm/48keCggABXeFMibvr7U6REsWw020G1bBTLQrUcr2WK9O5FU3FUBVfXcFQVR1WRavr+VM27P11DqgqOouKqKrauYfkMpAt6Rw++zh4iLZ1E2rsoam4l3BnFzfMjykNQESQV9tFZmM+uvHJ2iBJ2tYaY+NIyjn/7JUY31uEGDbSaCNrEEij00mM0l5fw+gkLSdVGOfvz1xKIpiOUCLxJqCll3kTS+8BNOdj1MYwVeyCR9m4O6Z7RaGSBJ2j5Z2C7sLkNVjV64fiOGQWFgcHl0t5RAK+edDiLj1+ILQUFsRinPfs8w5ZsIlDef57rwK++8G3qoy6VTjdH2FvpEEGGpdoorG1A3dpFWX0zltDYNHYUsbwQSVXn3cnTWDt2Amc8uYiDNmzkrplH8HZoPKLKYEJyN+fE3uNnxjmcsHoxY+obOb1zUZ+393ajmN8degmb/TWUdLXx12u+TGFdA/efei7hg4o4ddtbfe3bVj2c733haxQ9kOCSJU9jFyW45fizuPXJ7/ffgxB8+6pvsP2muRw14S7eOelQ8juaOffhxXR0FrC1pYx5vlrmnDuL+OEn0aELqmUQTeSM2v8pSCmROLjSRroWbrIHt6cTGY/iJqI4iRhWIoaVjGOl4jipHhwriWulcFwTKS3ABlUiDbD9OnbAhxXSSYSCRINhYqEQcd1PHJ1kRlQSz0DlRSWx+xYFt68f+HA9A7plUtPYwMj63YzdUceE2m2Ut7agXecN3g40Q1Q/D5iyl/5feN4Umft6OxtJVt+fxQMkILKNfUBGf7+3vwfygP6+11WUrP5dKl5fy0AeIAb0/wP5Qkb/n8kDvL4/zQPUtBmzty19ZdL9qyKQKEg13b7eRSi4qpp+ftP9u1Qggwe4Ln18QPR+jC64QqK6gCsReDwA6aK4abOo9AQbfRwBkHgftIugL/OKFDiIATzAO6hI6U3G2g6aaaGaNopjAwooIBXSPEDF1TQcTfU4jqp4fEBTve8hzRF679s2dGyfD9dyMDrj+NtjhNs6yWvroqiplVCsB6cggCgPIMtDmOEAbUUF7MwrZ4csoWG3xuwXF3P08kUMb6nHzg+g14RRJ5d6YlEh2DWymkUnHkbk5S2c+p2/o1npPlxNG58ml0LofcLKSombdHB2dKOvbvDC74JnMOrlAUP13fuDpA1rmjwuENQ9z6jIEJ7VGTzgiQtOZuW8g7Bcherudk65+3FKdzThz++/D9uUfPvL3yPW7VDjdHCYXUu38DMy1oS+vZ3gllbKmlvp0YKsnzyGaCRMj+7nzekz2V1eyWV3PM6I1gZumXYMq8Kj0IepzOzcxonWJn4ozuKcFa9Q3drGmZ2v9l1zjb+aGw89nx16OWMba/n5tT/C39rFnz9+JfOKWpm3uz9f99LpM7n2Y5+g9FqTL+2+iXXDR/LIgqO5/aHv9JVJGD6+/PXvk/xxDYce/ihLTjicmp3bOeXBd9nVXc7uxhDzgpuY9emj6Zl7HEkVygngON4rSd+PPNg5/PsgpcSVFlLauNLGtZMeF4hHScajmD1dWPEerGQMy0xgWQkcO4XjWOBaIG2EsFGEi1BdXJ+KE9CxAj7MkA8z4CMVDGBpGrZQPQ6AJyT1/u6PVmYJFQuljxs46b8dBE562xXpd2DveCjdn7yvR6OUey2j2jbF3Z2E43FsVaU9r4BYaOgxwrinN/Dzcz/R+9kdcA/rv8wD2D97QJ9dYKAdoLfv7+UCaRtAPwdIj7F7+/30dmafTvoZGGgX6KtP6e0T031db33p8X6v3aG3bb22AY8jAL1tGVhGAGnbgpO2C/T9TbqtaW4AAld69dlSQQiBm574dAGXNFcQCsKlzxNYKNArjVDSn6sQso8TiD57gsCV0ruuK5BSQ7reb0QKFYQ3ppdC7fucUJR0hR63EYDQQOggdW8tNOnt0xxUTaIoEqFKVNX1RCRCIhSJq3jPjhAel+hxDUAQUk0UIOVqmI6GaSuYUkFISanSjanrbOguY0NLIZNefptZm1YSMJMkq4oJjg0xKtWElWdQO2k0i2fMYWt3EVd87pccu+jF7Ae50A+zq95/EslxkbUdiG0d0JphTygLeWKWmvzBk0fvUx8bWmF1kzcpNRBHjIDh+f3brvR4gOoJTB6+5AzWzZoCQMRKcM5Lr1DzyDIYWeiVtxwWl02k0wizaNws3ho3HV1z0btTnPXWi1z61jOETe8+JPDewlk89fHTKG1p49g175IozSfc1k31qu1s2OHj4SM+zlHxNzls12rWBKbwuegPMOf3oJUm+Erh69T4O/qaarWpLHjiBY8zNnVD1MQaUcgN+edy1Y47AdjIJH5a830Sq8swGm1+Wn4RtTNqeHX+sVz4+rPMalhPyvVxa+fneb71LEqD2yiev5s2bSzTd61iZvvbrEtO59nOszkhdSNHfW84JfOPQDEC2AhKlf1wELItaKjFdVy2rBpH3Rsamh/GnwTD57//6R8pSIlMxnF6OnAS3bix9rT4sxPbjGJacVJ2HMtJ4mBiKy6WTyEVMEgF/ST9PnrCQeLBACnFwHQEli2wHbAdBcv1xhheZFEdU9WwVB1L07F0DVvzloF9q0Ci46BliEj61mLAduZaZG5LVJz02h26+5YSzbTRTAstZXl/pyy0lImRMDHiKYxEekn/rSdNb0n1nuPZSBXHQTguiuMiXInyPvNF4qbl6Sb87/GAzI8m6+/ebfGP8oAMO0DvtpLJA5Q+m73Xx5Pd52fMI3jfhuL1Uem+v5cHZI7xB9ohMucQUNQB/KL/Huhti5Lu04WCVBVcSEf49OwCDgKppq8p0/eXllA5AiTeOV4/4vX2UhHenIAiUNJjf4RMMweBUCTClZ49QQHpKsg+24IKUuBaKq5QcVGRqu59FkJNf47eGF+oAoTrmQMUQJfePgOE5vbxAkV1QZMoKgjVa5dQJELFm08Q9DaSBBoxx0ABfMJBlRLLUUlJnZTUsBxBxO2hTO2kURSwpquCts0Oxz/3NJNrN6C5NlZNMZGJYQq1OD3FETZPG8fSqTNpqVX44blXMWL3juwHeVgezKp838hm0nYRdZ1Q1wnNPd5n7tc8J9fxxf+4LaAxBsvroSPZv08R3hzFuGLkni7EuOKMBkgvnZ+mIgVc950raS/1IngE7BQX/PpOyq99BV8s4dmaJpWx8ZiDCfngtdLp/GnYaZyz8QUuaX6N4dHBfvdJv497vvRxGodXMqtrB2FshOMyfPlW9NoumuaNIDaiFISgeGsDLzbNYMWSeZzuvETp1+OIAeaU0U+soqqxoW975ajjmHLaJ3gz6qOhzs8L10va2w0i/ijHnLmRrZ3NNIs8ap6bhJXoocFfyugF3YzVozywpAbT1RkxfjdjJtRT54zhrHGdVBeFCQ+rpKRMGTwHsPJ1OOMMXi6axtc//RO6Rlfzjdf+ximLXqFu0iju+PEVzNi0hcPWv8foxp1Yis6qqnHEtAC7nzmexmeOBgVSM3oY+UAXF44spTDjJttMlx5HUmooBHI2hxz+BeREKTn0QQiRh5eSB6BDSrnPOE1CiIeAc9KbZ0kpH/sHrvV74CvpzS9JKa/dR9mpwJr05iop5UEZx04HHk9vPiqlPPt9rtsK9PZuhVLKzv1tc/r8QQ+9vGL2kGX/tqGFzy7Z2bd9xcQS/nbYiCHLzn50Ayt6B/nAu2dOZPYQk/3LW3qY89jGvu1ZJUGWnzVpUDmAzyzewU0b+zvcGxfW8JlJpUOW7R0Q9CJ3T//meyoOsPzM9D0NMNr8y/fkyuw6HZcfvtfAzzJC4E0UsCFkwJj0JFRGWNz/+PeUsGBTG2xqBctFJLLjEw/6nmwXAjrHPLGBV3ZH+3Yrusr3Wx/jlHuepJIYw9qaEY5LMyHKf/RkVhVXllQw9ezzOCpYx+S33vMGhUUB7upOccnifmIugMvbXuXtuio27SpBuC6/vuenfOnZvzE1nmJjxq9/bnmItz42o2/7hqqTuGr857nnj1dw/qJHsu/pywuyth8csZBhr63guidf5m6nv9J8Q6Xz83MB2K7ks9EpIOho1B08nss/8YMsL5Wq2RM5/we/Z3JRlJEN65n23mq2Fw/nzFueoHlDXdb1vnrza7hKBeNKC5lcJgk7kmYnxCkLIwzEK9ssDA18usCvgl8T3ngjP9vzbW/9/1CimH+17PuVk1KmJ4IsdG3ws9uV2Jb2GrZxXBtHWqRci5EF2d/LY3V/x5IulpA4Apz0wPny4VcMqvNP7fdgC8WbFELDxvv7l4WnZpULjxnG+e/d3W9ETxsMnllwKZ2rt2SVvSCxbNB1oD/NTd/nYehc2LUYJW1gSpvxUZHcFDg8q+yXky/1DbTpm+SA6wtOxEll//Y+H38F1bbxJ5ME4wlCiQT+RJJvzPkcqQyj8ZWHjeVjnz4J3bbRbMsT7dk2Tzz2Fj94tf+eyv0atecfRKC7B+G63uR3+t2T+Y440AxROR6Qu6d/+p7OSAfo+w/wgO+uaOBXKwfwgIjPMxxNLPG8iP4d9/TPfE/dKVjfArUdnqDo/XiA5UJI54QnN/HCzq6+3UJT+UXz/Zx499MMd7spiXaB5bBLL6Dm+49mVXFlcTnTLryAM501VK3ZBroCBQFu70hw2Wt1WWU/1fYKL28Zye7GfHxmkr/9/WtctPhhJiYtNmX8+g8pD/F2Bg/45ujL+cPws3jvW0cxbfOarDoH8oC/Tj6N42+9lx8vW7NXHrA8WE1TXMenRrBH+TnpC3/K4gGlsydy6bf/yCy9iTF7VjG2bjMrR0zmguseoG0AD/jML5fR4SukRFUZQRyjK8FOq4Q//nwUA3Hdkx0IQ0dRNISq4PNBwA8XzM62uK1psvFpAp/qBbbzqwKfBgF9cKStD4oHeGWlJxDFQUoHQxvMbTrj23BxcFxPTGq5NinbZEzx3Kxyj26+BROJjYuDxEXiCvjk+M/CgGb9dfdtoAocxROn23gi0W8Xn5tVLjiyks+svC1DEKLgILh3zmXENtdllb2w562+yftMDMUDzu96I/PT6Ju4uj1waFbZzyRey5jY6Bej3Jl/JK6Z/du7IPE2MPizHnj9wtkTueCZPzN2Zx2Ttmxm8qZNVDc38cDmZj7+8va+cjOKArx7wTRikTDN5aVsGDuOl+YsoKWo5IBN4Qc5HvC/ek+eg4xk1uMbWdnWH6Vz6cnjmFccTBfqf1Usae7hiBf6PYon5vtYc/qkPnExaYEPruTiRdt4aEd///br6eV8c1Qh6ArCUEFXcXUVqSpoN75DJuQxoz2xqa56UUXyfBA0OOO5zTyxvbP/+gI2+HUIaN4k1MiCvnfN/n5PyxqizH2qPzXNvr6nT79ex82b2vq2r5lZyVdVAVvbIZXtFzaIB1w+MztqC4ChctzjG3lpd3ffLkXXuGHRNUz70ZOUtjRRHk4QGh5ElIdQ/vRm1mv7rVPHM7dycP8w8NkDWLv063Tl5/Gn/GOZpe5hlNVC4Y5GTjzsp2TGdh0WNvjzmqvZVFSNi2CU3cbKeDlVNy/lSz/+dfY9ZfCA5sIifnX25Vz1nd/ww2ff2SsPuPa4czj41ndYYc3iuOkrmPiz+7LuSfHpfPuyJzi94yGqi9oZ5m9iuTKDI6+9kZidHYX2/y5aT7CzBVHgUhxuxeyJUFe7gJvfHJD2GPjub5uJBV0SLqhI/Jok7Jf8/JPVWeWWbkqRH9LID0BBSKQ1xEM7yXwQPKCnaQ128x4SHY0kox2YqSiW6jLljB8PKvvK+l/hKAJTVYhheE4fUuNz4z+bVe4vS/4EjsRW1D4BScrw8bODL0Pa2c/tRd1LcfTMCCXeePyewLyschWHTOSC1/+SJR7RcLn96K+zY2n2s3dj6m50HNTMbkZKPum/jIzHhEllYW549Cp8CRM9kUJPWWmxiMXYT9+VVWfnD45DtTyBvdK7OC7Xr2rgqqX9KTj+0+/yj4IoJRO5PvN/555mPbKe9zJ4wFunjueQkhAgs0THbzbHWPhcPw+YXOBn1an9Afv7uICESxZv5/66zr5jvzuogq+NLEhHC1MRmoLUPAGP+rd3s+/phLHZPCCkQ0DnjOe2DM0DCv0wf3hWZJT9/Z7ebenh4P38ns59qZaHt/cLN783upCfJ2zozBCj+DUYU4R4d0/WufKSGd6xTGgKF764jfu39kdXydcUWn0GmjvA39xQ0buSZCYN3t9nD+DGv/6B8cU7aasqJhCNM2XNenqqCplxya1ZdZ5ak8/Vf/4Y2yaOgaIAEZlE39qBtTXG4Zf+KavOi37yDsnuCAdvW0792dUUzuxgQfFOTqz60qA2XXXzc0yd387o/CYSLWGWPDud1ZVFPHfZuKxyuqHy09/fRf3b42ibmseE6Zs5uftVTrzgGtoyygWAeNr+0zy8krITqvrEvuG/vEXPAM5w/Yt/YZRowbYklbsbKG3rwrVURv7g3qxyBy/p4KIqHx+v0inUHSQSVRgoQ0R1/aDnBf5dZT9Mcx3/rrIf9nv6Z3jAfy8JYQ4fFDLdJFL7UT6jJ2HwCO/fd619XedfbXPnfpyTQw7/GnqNTh8EBtarKgwb4Pk8oTICx4weTOo+AEhXEk3aWft6EpbnCb2zC5pigwz7WYiZ2bmkNQUshwtGFmaJUiK6gu1XuPLIr+E4gqPNtfzy/j9TlmrLiooDcKI/zhn1z0N52MuZncakISZOfnrdHzlj7PchWMIv7/05X336hiGbeVZVHiRM0FTQFK6sf5a2NsF5bz85uHBrD5T0k9/zbr4dtrVz3d4+g93djHr6HXqnio64GT4FZNLsX67ZwtRbf0PNcIVSzXv1VWyv56t6km9nlBPANWu+w7PzD+O+Q08l8vLbHFS3AaO0eNDnVBDQ2Lr+78T8fqIiRMyNkHDDJGVwUBM//tgGpCtQLIFwQLEkWq8H7QDC8ZUlS8AgbYTxQppryuAgVXpRPj/Z/SSOKrBUFUtVcVVBYGQlibqGrLLfij/nCUGkmg4d63kBD4TQVL7VvS3LW8QRalY4517cWzZtSA9gYejIARM3SwNjM7ZknzBkIIJFYQK6F9S213NJwyUcVAd1Psd2r0F3bAzTRE+Z+FMmRsrkBZ9KR4bxdn5pgB88dhOaZaOanoFJtWwU2+GmAXX+9Ge/RLHTHktOOoKE61IxrZTvv1vfV+4T44q47kvfGNR+gNuKAlkD1E8Xa8xesnRQOStf5QcZ29Vhg6BPQung5yeHHP4n8R/kASPD2TxgUlUEjhvjGas+YLiOpGvABFM0Zno5o3d0eSH794Wknc1XdAVMh3Nq8rNEKSFdodUX4ZLDv4cQkovaX+MbT9zGcLdpUP92SoHJqY0veca3yf1Gy6kD3tsC+M6NN7BsxLcRgQi3XP9Fzn/rib5jmThnWJoH6CpoKr/cfjujVq9j6q6NDEKP2R+VRko+/4vfeJ5me8OGFma/nj3xOPCefrdmC+Mf+QPzg619EWaOWbuIbxiDecCNzV/mwWNO5Ln5hzH9mRcZZe+iqaSEPw2oM+LT0JV7kI6CnVJJuQGaRYToEILP369ci2srSFtB2gLhChSbvknWTHzm1XdQLYFuSnTLRXMdNIbgAcX5/GDDsziawFUVbE3g6ILAiEoSO7J5wBd7XsKVAluqaQ7gpZ0ZCKGpfDO6HZCegCQtIpEDJzyB+4YPnQVW6IN5wGvFkweU8oQhA5FXlo/l0xFIVPB4kJDkF/mJDSh7uLUFn21iODbClWA7KLbLE6ogkTEbNSHf4HNvPYJu2ei2hW47KLaNajncPqDO791ynRftyXK8CSnLQXUc8icUcu2a5r5yZ4zI57bvfo2+iF1pz00pBCvyfGzp7h9m35uX4oQvfcXjTAGtz6g5cUCkI1URaLZDQUcXBR1djN+4ldOeeY7V82Zw/5CfdA45fHghFM+lWRkwVjAMFZHRZ/UeDQWzx91BXUXzD9UHCwozhKIAhXk+RFn2e1cBL3TcQIwuHLzPdjilOi9rMsqvKzCzwhOmqv9cmk51iPdmJnoiQVbPm8H2iWO4647sccXDa5v5UshA7R3TqAK7Op+2g0bD/W9nlXVWNqHOqcyu3HQ4b2RBlijFj+RjZ/6YcCzjbboCKAqgQtbEkfY+be+FAKbc9wbSdSmesJG1iSJOueZO/N1xxgrYnNG9fWt6OWf8+g5SAT9t5cU8ecEphFPdXPmHPzN4iom+MXLZrgauPvwS1KQ1VCkvmswLW/nijV5vPp+HoWvYoGLXaoJT9vyIkdVpL3JgdmI5X5hawa9X9o/zBPAX42Je+fixtFeWc/yrL5PX3UV8RJDb3wJ7wBD2iJo7cDQFJWUibAfXUTAZHIFlxeqHvagDrtdm4bre1YawB/zy2SfQkw5GwsKXtDCsBKp/8PPsryzhFyvuxZdK4Usm8SWT+FNJtEgQOxrPKvurxlWkDB9mdSGmXuZFHzEGt1NoKrcVz8P2GwjdS33Zm8pmILbNmYwiHXyOjc+2MGyTAtsmaKj0ZIhSNAXO2fkGfjOFYZr4TAvd8qKGPKEpWaKgK/JsPnnb39FMG9Wy0SwbxXIYledweca1x+X5uOwb16UjjaSXtHfJkgklWZPwXx5fxOG3vTCo/UMhv7F9yP3GBzUuySGHjzgGTrpqmoJI25Yzj/gH2N/9moIWGHosnjegbF7YQAwQUAjw3gkDUZM/eJ/tDuIBYZ8Ghw6HUUPwhv3E+7016saPZMVhs6mdNJpHSz6edezqhhjn/exsRr68lqCZwh5RSONBY9hTVQnn/iGrbHxFC8F5Fdl2Dtvl6Ipwliil3HEHC1IATAedbB6wv4joCp9ZcVffzcZR8T++DiVqMi/PYEl3fxrD02rymfDUO0x46h1eO/FwHpl3LL6NuznmuRcH1fvt4dczbMMOCks7SSzV6XjAxtrUwVma4NGMjnhigZ9rnvgq6g1d2HGHPeOGsaDST6AeZuf72NjVPya7qSjABb/6PKuPWEBxp8aI27bjrGriugI/F2aIf4Ka4n2WhX7KwhY0RKE6D4SgIqizLWOcN89QqVyyirFtOxkTbxk6km0at6/7Mo2xCpa25qEikLZAjQ3BVYE//P0BpAsKDrq0MKSJJu1BNg6An//+PizXwHR9mCiY7tBtuPS3b6MpEiFcFCkwFBu/HPpbf/TOuwnrKfK0FEHNRfNpKMbgObLGLe+h+ALogSBC1UDVEfsThe5/HPuK2v9BRPTPiVJy+E+Fyvl3XicX3ieH/zmU5fmGFKS4QtAxQECydVEds0cXesR2P1PzvFE4hSdrDsVYmI8xJcCDweyARctXNsIQnf1Q2LlLUjPC8kL57wPnDc/je9/5NV82dYqdHhTf3ifahs2p2q97KfNrVO/Zw7I9n6cp5qPyqbSBzFAZm+9jY2O/waswpHuTLqYNe3pg6S6+F33HU6YPmIwjoEEs5ZHAHhNqhzYMnDwsD9Y0wtr+SQIUAcPyqNndxfae/npVYPYLS73jR42EqAnL66ke4HmmAzy5kZMeXc9JNz/sDUC6UkxL2ZTqCs1WP2GcHDa44slbvI00Z7BVFVPT+fuAtl7/+ue81FoCXN1T76MovFcaZEXGRFtEV7hixd+IBkP0BIK4isCfMvFZKX5G9gv50rGFHP/CcyR9PkxNx9J1VNtmT5mPB+r6ywngUzfcge44OIpC0ucj4fOR0n3cO2DiZmTY4KJnn8RnWRiWiWFZ6dQekjsG3NMv/3oNiuugud7ARrEdVNfFHBbm0dp+hf8hpUFu+dE3vDDgbjoceHpZEjbYEesfpNxcbHPyV78FbnoAmR5EHl/kcHTGtacXBfj099IypQGE7dxRhVlGqE+MKmDSKyvZH0Sau4bcXzrgfWD8k8bpHHLI4cBAScQ3pCDF0lTaBvRZta/vYPaYIo8HDMgtPRRsofBiyWyeHzGPgqMDKKMDPOw/K6vMe2ua9psH1G+3qRqNF35jH7igJo8f/+hXfDsKpUo8q/xA40bltPL9upeKgMaYHbWs3PlZ2htcSt5a7R0I6kwu8rNxT784tiCQ5gEpG7Z3oL1Wx+ect70+fyAPkC70pLz3e3Nsr4KUE6oj8PYuz5O8F4YKNfmM2t7Btoz+RROC+Y+94s2MHDsadnfD+haqrWweYAA8so7zHlvPeZPv8tIidCWZaLuU6AotGTxgWp7BFY/emm1xTPdJvx3Q1mue/wqO6n3miipAFahI1pQEWZ5xf2Fd4YvrrqM7FCYWCKK6Lj7TJJBK8iuyv6eLxxRyzPIXiAWCxP0BNMfBb6aoL/fxQH9gOwTwpev/jql7IfCTPh8p3SBpGDyoCpIZPGBMxODzD91NON5DMJXC0jRSuk5KN8j2JYbv33IdkViMQDKRjgZmozguxqg87szw+J9bGuLmH32zb1vp4wEurwV1dsf7v/+/FNmc/q3vZdyoFzb8xGKnLwcuwNRCP5/7erZBti995bjiLB7wlQnFHHHPYGPnUKhZuW3I/VPys1N4lgV0/LGhBWMRI/vdUZLv26eBcl9QXMlBS1f+U+fmkEMO/zwOHl3khcYfAt1mdr+xfclOZo8r9lL97YdTy/pwDX8fdxq1ldMZflQXpfkJrAFzEksdl2trb6Zg4x4Q0DRtJE7QR7XdMUiUcmf5MVy25tUsZ5KhcGJFiLA9xORDe4KwKuh0/nHTX3lAg4SJACas3sSEhAV+ASmV6SUBNu/qF8UYikC4En9Pgura3Xz2p9cjHlwHVRHoGtDPt/f085S2OGqhDxqsQRN8M4oCsKoBohn+doYKHQlGRwy2Rft5QL7pMPLl96A4ACeNgzd2wvZOpgzwePYD3L+Wo+9fCxNKYN4wQBCMdpCvKbRlfFmzwwaTX3mKkmiXN7HTO5E1xFTk5x77Daaqk/T7SISDJMJBksEAkwsDrG/vF5CEdIWjmp4nZfhIGgZ2UPNSHDmDv7sLR+dzzIY3SPkMTL8P1XXwWRYXTq/krjf6+zO/KvjC0/d74/p0H0x6XP5mvo/NGZN254/M56+//RGq43opZlyZFtAwyMZx9VXfRpGQFfYIkNNK+drb/Z78l48v4ew/3Teo/QDjC/xZDh1nhDVGLt8yqNy0ASK1iKFiJPbHz/LAgZTSS/3pSk90Hk15ERPfT6CeQw45/Nsxc2TBkIIURwhaBoxdt71Wx+zxJTCm8H3T/TooPFK5kJsnnUbcqGL21F0Uhga/y0zT5emvXoT9tf53n981KXeig8reOvY0/u/NR7yILvsQ0B08stCLErNnQB2qoDJsUJsxdu5DQ9RLHTS93IvMPgBj8nxZXV4Qx3Puaelh0s4ulnQPTgEEcMRzr3PYfS+guHJIu8O0N1f1/R1wLAKVQNDPUYVVPLqsv385rCKMXhaAsgAGMCpuQsIGXSU4wJ4zdd4w/KUhDqERWoE8He2wYYxtKYSM6C8jCvwwMKJN3Ptsjq6KZIlSLp1dyRlvvept+NN2Db82OIIdMOndtUx6d23WPikl1y8YzucGROL6yrKB1gQPfykJZvWZy86YyJx1v+3vg9M29ItOGceCp/v70mmFfm5ff+WQdTaPKeSubf02/GsOruaMl65Od+2S3i9YDiGWKPz1ZzJSk/WnFv3hzEp++l6/k8xpNfk0f+t4L2W34qVBE3ii3NERg9oMvvaHY8ez8RcXYKmat2galqZz0Yxh3LNqd1+5oCZ46oFvITUVUzdIGDoJXcfSfKiCrIhphiL446N/RSg6ihrAb+jk+f0Eg0OI1BJRvNSjCui+dN6xAxs5UcpHD5kOW/tjacp8yw7uRf5919rXdf6TbR4Sfzr/coTjImwX4ci+XJq/f+RnWeUeqe3gpM9dgmZZaJadkfrAZlPHiqyyz+xMEq4Y4Xm0pVXyiit5Y0dzVrld0RQtnUrf5KiCl79TINnYkj0Q3rAnSjw/3Ne39qruh9LpmLui6TL9+wSSusZYVrndHQmcjFCzIqO6zgFih476KDJh93fu6fya0czQbUDccpAtPX3HM9ex1OAIHDKayuis0v8NYX+QmQOf3nqBrp5skhJL2ciYOeT1LSebsFi2i+wlMaLvP9yh8iMPbE964OwMKGs6rtfRuBJhOigp2/OWGYIs9eZ2l+ClwpHSM1q8DxxF4dUFh/L4Mcez/W8nZx2rTbnIjW2IDa3YhUFik4ej1YQHKYxjlsN3Jn6KByuPYEewAoDAHotPj1udzvXZj0WRIM//7OMUbfE8dmKVRXSOLUcdGYGDf5BVdtxXX+Gbz13PDzbdgTEmb6+eXEIIgtE4QfAGtz0WFAchmmJivo8NXf/4gL46bIDrRbyoDCbghDHes1QcoHLpLi/35VAoDcERIyFueUaoASEivQbjfV9BHS6eDsAhqxq5O4N8hg3V83YbwuOt8NENWaKUSSePyxbaVALji5nU0pNFPicVBeCQau/avrQ4xpMnc1RVhPszfr9nVuVBY7fHdFxv0RSBNkSeyEhtU/aONFE8vyKcJUo5oSLC5FffGVDWW43L87E5g/xeEoT5zyzy6nIluF69hmbzQMbpkwv8jF+xzht82OnfhuWC43J8RZjHMwYkl5QFOeyeZ8jK7asqQxLq0ZuGnrg5sSqSJUqZURwk2DH0s1Ds17JEKZV+DWWI327egN+p1puH+KMOV0Jnkj0fMUPUteeleYDrIm2J6niipqsf+XlWuUdqOzj5sx9Hs00020GzbXTLRnWG4AG7koTLR3h1uZ4RVXElS3cOzQOU9O/mg+IB6WHbf50H9PzbeIDoa8eQPKDH9O7mn+UB+zEPItOF9soDHIkwbRTT6X/XDaokzQMkYDnea2Q/oqGYus5zRxzJ00cey47rj806Vhd3PHHk2mbMsgixycMxhgWxyX6euk2Hq6Z8gYcrD6PF5/VbBduTXDFiCB6QF+K5n11MwY4WpCLoGl5CbEwZyqg8mJjtTT36K6/wo6d/zzdqH0Ibmb9XQ5QiBJGuqBdCsS3hpQPI90PcZFKBn3UDnqv9QWWonweUlAHHjfY+z0I/xUt2stehQ1UEjh/j9S8F/sE8oPf9LqXXd3/c4wHz1zRx91v9hoh8nwZTy7xlAPIbol40uTQmnjQ2mweUBOGgikE8YEpJEI4c6XEA2/UMUOkf6jHVEe6r6//9njMsHzrifRygL//bEF9BYW1G5JLeR1h4PGD5AB4w9eW3vTJ9/bu3jBpgLLzUJznykee9cr3PvCPRlGweMLXQz5h1m7x6HNnPA2yH48rDPFnf/z1dXBZkxlOL+6MWKsL7noZ4rqauXDtoH8DC0lCWKGV6cYBQx9DPQtkAUcpIv4aeGGwQLR7wOzVU5X+DB3xEce15l3l8z/XsASId5eaaATzg0doOTv7sxX1RblTLRnMcNNti8xA8IFJWg+q6KK6Tjng3NA9o7RBZIuleodSmATxgY32URH4YpOzrrwX9oulMWDujffszn8ydA3jAns4Ebt97JLuegTygsz6KjFv9/Wqa/8a6st/XSduFjkT/7zajLzYHpNBImY43Buu9hwFG7Cz0XmcAv0gNEGU4rvTG3x9ktNMPARoqyrjj9HPYetOns/a/Zxsc1Qa+VDux8jKUshCFgcF9anvS5oS5v+bV4oOQ6UhVw1d3c9lh6waV1f1+ooV5ROf3p4spsaMMNdL/zRlf5JKvPYAaNb1x7F6inBSHDDi0xovIurrJm/xWBEwtY9TWtqz0CoB3PJ0+UOoK4tjRg+qsGjj5FtC9/h0ozEj7OxSErsBF07yNLW3ZBzOFtiVBL4otsGBtE3e92c8DJhT4PeHIhJJB9efv6fYcUdKYdMoAe8ChNXBoDRObe+DxDHtAccCbUFMVTzhrOd5vwXY5cVg+d2ekV7hoXBHDand6/auqpFNHKENyS8V18TteJJOCjs4+zvDJmjy+niFKObsmn/kvL+nv4zI4xrRCP2s6+p+tzxdrHPzaW96G4/bZJfRCNUtIOrkwQPn2eobCEZWRLFHK0RVhQt37iE6XeU/Qz+czfvrh/0Ckwf82kpbjpdVwejlV/9IxYMJ6z8pGZuuq9yz1lnVcNg94529sS+A+tIH2sZU0TR1B66HDSRR5fRBfuPE/eXsfOK499zIUx01HDZII20ax5dA84DMXo9k2hmWh2mk+4DiDeMCzA3mA66I4kjcH8IDdA3iAIl2EZO88IM97b3g8QPatB8Lamea6Uu4nD8iuQ7APHtBr/+q19Q/kAZbjiZd6++oMLpAaIMBPmo7n/Dew/x9qPN6R7hcG1Jkc4NxnOW5/n5LZho8Y1k2cwH2nnMGuv12Qtf9ZNY/ZVTWEFZsOt5hAQKFCtsMAe0BDj8n4o25nZ7BfRNq6RuPCeYMjhxqRALbIeJdKSaETHzL6yk3HXsL/vXCLN/Y9tCY7mnoGgj4VDhsB9dG0s4gDm1ph/jAKFtVljZ1dV8Kbu6BXrNCVguqI1y9mYGBEPO9COowo8KK/7wNKgX+fxwch34/v/eZw3sdh998NVVWGjr6znxBCoPwLvxVFgBhiHsgY0A/rajrF5RAIDCgb9qn7dGTOhE+V9L08pOOFrHegOpT9PVQEdco6hnY4LvBpWXztsLDCxB2D5xsCo8Lc069VYmJBgFNfennIOlcOiJj25wXD+cyzt+zXPfGlo7I2HUXB1jR+dUg138mYkzp+WB4b/3ARSVUnqflIqgZJqWFLlSKfSnvGe3J8vo/Hf/c1XMVHQAvx9g1XU1hUyPjzPzXo8sn6LehFVSi+7Cjq/0oEFbG3nEA5HJgQQih4KXA0wJRS7lPkIYR4DvqcvI6SUi76B671A+Cn6c3vSSl/uY+y84A305uvSSmPzDh2GPB6evNFKeXx73PdBJ6zgAP4pJRDxPna5/nedMf/6rMvJbhO/9p1wbHAscEykZaFmzKRpomdsHCsFHbCJJWySFkOTsom5dhYKYuUI7AciWVZCFvg2A6O7SJtgeu6SAsc1/vbdQVIFykFUiq4XqY6HKmSUjQsqXl5XxWwhcBVBbYqsVUJqkQqgOrgqCAVBVeAVIV3Kyg4jorrKuAIvH8K4GDgoCg2hu7gU2x8SgpVWCjCRlUltqrgKgJHB0cT2Omc8q4UOBIcqWC5njVf2A6KJZGait+vUmUkKAoo6MEgYcfCh4Wr+kimXJZ1+1jbECRhaVQ11zN7+zuMaK8lbPVg5ClEp1TTMaGS1qICdhWV0V1QgJmEWbe+wBlPPk5+ieopoAcQN1tVWTZzJneefBZtdTU4L5dxwrg3mXzsxmxDeNqQ6hpe9IvNdjEPxKbzFfEqeX4LR9dISo0vrDmFbfHirGtUFUS57LB1qMrefyNCulTZXejpkKmK67Jw1ToC21s5fcJXWbGjmqr2Bl74w8eYEOmEspB3L4F/AxnrTEJLj0dYxxTt1ciVQw7/s+g1xDv7WA8s4w4WAbiqQrw4QuvwchomjqBuxlh2TB2NcCQVq7Zz2RFeSOoDLY/0/zwPcF1P2NbLAxy7f8ngAa5pYictbMvCTqQwkxam7eAkLVKug5WySNoC05E4to0wJbbr4qZ5gOO4YGfyAEBKjweg4EiJQMVO8wBTatiqigXYikin/5CYqkRRJG4fD/DSgkhAqhJXClxXxXUFrqMiXAFS8biA8EKLKqqLX3cwsNDVFLpioQgHoabTgWgSN80BHEVgKyq2FDiOwKF/bl+xXIQNUtUIhaDSl6QwqKL5A4SsFIawsRU/iaTFW10hNjQGsS1BTeMuZm9fRnXXLiJ2HLVYo2vaCDrHlNFUUMDuonJieRHcLpMFNzzBqa++gL8qACMLBvWbpq6zaMEC7j/6FKJrh2G/WMbHjnmGypn1g3iAcCTSUEEI3jWreTU+hq+qr6D7vAhZXbafK1aeTosVzrrG+Ip2Lpi7aZ+PkSYdKu0u1PSLw7AsjnpnJd2dDmdWfpnNDSVM3rWRF//0Mcoq8ESnAc3jAv/KxL2U0BKH1rg3yTK68J9OY5BDDjl4kEkbGTVR2uOeB3TU9ATjvd7RY4vgkGH9L0NApIVbBxoHgBwP6OMBvXYA1wXbSvf/KVzTwknZ2MkUtmlipUzMZAonZZM0LSzTJmk7JJOSpOlgWzaWBSnXwU5BypXYUiAdwAXpOjiuipQSRwrARQiwpQoSTEXHlAIbDUt4Y3E06Y33DRCKg9RcVNVGqgpCcVCUdOXCAeEihUh7H8q+/YoCmmJj4KAqDoZrYUgL1bFRHcdb2y6qkxYZ2xa646BZFrrrOR/pjoPm2n1RIVTH9daui+raGK6NUEDxq0ifihXykwwEaAwWUa8WYnfY5DW0UbOrjpF7dhBIxkEVWOX52GOLiY8vJxXy01JWjN3jMPvGZ4h0x7z+f/jeRZ2WpnHnmeewdNwcCh4NcsbHl+yza93p5PPH6ELyYjE+ayxmeKAHO+znurq5PNQwZVD5k2dsY/bI5iFq6ofPtahwuvsmo0bVNzJnxXq+Pucibl49izuuudJLnxfUYVwR9vBCtIJ9eGu70nv/6MrQXt1dSXi1LmuCipKgJz7N8YAcPuxw3CyRyD+8DBCZZNX3L3Rlrqrgaqq36CrJojDJkgjJ4gixEaXERpYSr05zbU0g/Rp2yI+d5+fUqQemLQD+x3lAb/Rf6YLjgGt7PMDy5gFc08I1TayUhZNIYZk2TjJJKmEhHYuUZZNKOaRsm3gKzF4eYEssU5JyXGwbbKmktewC13KRuDiugoKDdBxPQSYA10EKBRtwhWc7kIr3twu4Su98gPTKayBVF0V1QXFRFC+KshBexEPpShTXxhvFSwwsNGmjSwsdG9Ux0R0bTbooppPuzz17mColQjoIKVFdiZJ2GFJkenFdlD7RkERzHXRho0kHGTAwQz6ssJ9kMECTv4hWO4RsSxFs7KRyzx5G1NcRNnsQuoKsiJCaWE6qKp9k0EdTeRmyLcG8vzxOJJGAUQX75AE9wSB/+fgn2CrGULY0yEkXLt7n177SqeRWaw5+K8nXldco9SdBVfhj7Tweb5w0qPw5czYxuXroCftehJ0kJW5P33O1YO1Gimqb+OLBn+CRdZN58XtnceimZZ4z4rA85MRSRHlo/7x/BkC6ErFsT3Y0UvAigJw+Yb+ce7PgSi9Kacr25l5y8wo55ICtqVi6jmkYXhRb3SCp+0ipBilVT9tOVaQqEIrk0C/cBPxzPCAnSvkIQgixHujtUUqllEPHpfLKrgbSrgBUSSkb9lZ2iHPPh7500tdJKb+wj7JnAw+nN/8mpfxsxrEyoNdlf52Ucuhk4F7ZIqDXZWGzlHLC/rY3o47/XfKZw4cSjpQs6k7xt4Z23u5KIW3JtM1r8acSFBZJ5qo7mBFoJF4QZrWvhnhMkKzM5zcrj+SIRyMUmDbf/cXvSUQMTF3b/8keV9K0Ms73289ia7A669D8iiaOnVu71/OqUu19UfyLWjuZ+9ybbAqVsoxDWfL8ybz3uQ527wlT0t3KCz8/j2m7NniFDRVG5MO44v0Kw98HKWF7J6xvwemx+PsdP6TkoXWc8/xjMH8YlIffr4Z+RFOwpd0LYTe5FAr/gXbkkMP+QMp9C0J6RSDvV2Yo8che1o5QsHw6tqFjBXxYQQPL78MOGth+L3KAanlGdcVyUG0HKUCqiif0MzTiJXkkSyLEqopom1BN48jhdGtBLDSEgIAwCekWSkDBCvq4suSy9O0eWIaoHA/I4cMG05U815ngb/XtrIo7GMkkMzatRXVsKopN5qo7mRRqoSO/gDXacNy4ZFdZBTcvm8+Rj0eojHTw5R9cTzTgx9L+AR5gOdQtM/mOeQGNvkyBquTE0bs4eNqeIU8Ttku11YGW5gGVe5o55LElvDVxEst3HcqK2rksPSNFS1OQ8fVbefFn51DVmab6Ac3zUhpX5EVF2V+4ErmxFbGxlZSq8fv7fsvcXzzK0euXerm1/5G+vC3ueVhZDsyo2KvnVg45/FswsO/v7f8zIs5kHRu47Kv/t9Pn9U5QDezWMiNFKQJXU4hXFtJVU0r9xBHsmTaauoMn0F3h/f7zdzZzyPXPMPcvT3rewpkoCsAJ48CvQspG3Ox5Ax9oHAByPCCHDxcsV3JnZxs3NHfT1mzxgxt+w0VP3Y+hew4Y1vhStKA32eL4NLaMHcvNC85EWzySumdmkPIpnH3544w+vHbIMOa9WOuUszOVx8nB/tDpCUfjirdOZo/IdlLxaTZXHrWKvOAQYfMBXMnwVBuqJtBNiylrtzDxtdXcfNn5xOKCv8cOI++lXbzz3eOyzzttIhT7vdD7+5lmGGDL+FG8cdLhnPipv1Cxenv2wbFF6XQ2/wCae+C9Bi8dybhizyaQw/8eevvOvfWvmfvsIcoN3DdQLJK5/BPdjasq3lhd9wQjUlOQmgqqgtS9v2U6Co40vAVDQ/pU8GnevoCOGzRwepewDyfoww4ZuH4daWg4uorUVFzNE6hIVaFH+Ngiy9hql7GFcursIiQCv2ozItDJjLxGvjbhIiDHA3LI4V+F6brc0dnGjU3ddDWa/PD6X3Le84/i01zcccXY48vQ/cIT9Pp03psyjTtnnor+0CR2rByFowsu/9YdFE1s26cd4EV7LIZpckRwZ9++qG1wxdun0CQKssqGfCafO2oVAd8QKfYA3bQYHW3EDPkpbu1g5jvrKHm3lnvOP4PVVWN4smUKC255gdv+elX/fQZ8GBdN9aLi1HV4qYX2w27RVZzPXZ+5mBFvr+fUT147uMBeeIDc1Irwp20PmYhb8FqdF6kVIGJ40c8G2gSiKWR3ClES9KKlmQ7s6PTmJg6p9qKr9sJxvSgshupFJotbnsi2uj+6HJbjpR0y1P5zLccT/Qk8pwBDBV/6/JTTP0Ys8PdHbEtY3jV6hTSuhKYYxEzk8HzvnoeC7Xq8B7KiHfZFIhXsn8i3L1oz/VGNPqKRiHLYN/4VJ5WcKOUjCCHEfUBv3K65UspleykngC4gArRJKQfHl9z3dSYC6ZlmnpVSnryPsl8HfpfevEpK+ZcBxxuBcrw4YnlSygFWsL5yc4DePBIPSynP/UfanK4jRz5z+NDClpK6bosd6+sJJHfTHm4jld9OyGejFBTTFAoSVQMUijBtzRWs2B6h+0mDj01/hBkz1nu+YUJQ311EoMrE1veepW3Ess1sKqgmEOth1bYSniyew4aKERilAl9UMErGmDMvO8SttCXnPPYMk7Zuo6s4HyNpEmiP8fwR81DmnscUs4affz/JzlCIVWdGaWkKUBjr4Oo7f8SFbzyK4VheRBzdIJgnYHyxF1ZuL8THiZqsOvZg3jj1cHydCULr63m2ZD6PdM3BNSU/euh3fPz1BxmeH/fUzT7VMwiUDTZyuQh2lJfz+PD5fPnLP/F2aoonahlIUnuRsuH5bR75LA7AxBKojAxdtrnHm+iqjGST00wkrKGjxVhOfzj6HP41WI73fVlufzjazLC0mRM9A9IQ9EYLka7sy1JAenGRuIqKo6o4qoKtajiqiqWoWKqGrWqYmo6p6di6hq0bWJqGbejYmo6lp5febU3H0VUcTcPRVJx0fa6q9nkrOWr6eFqN7KgaUlVwVe+Yq6fL+3SkpqIgUYXrZTjCRVFkOtuRxKc5+DUbn+ZFjPBpnvezaSokTJWmZIhdZgHbzSK2WaXscgoHpe/oxdRIExdWr+HbEz2qcaAZonI8IIcPM1KupLY9Rf3GenzuLlqD7bgF7YQNcAqLaA4EiasBioiwu6GSVVvCxJ9Q+fwJt1EzYk8fD9jVVUpoeBJH3bvX0PhXVrF4xixGrNnOa62jeLp0DtsqhhEsddGaVCYXtDFl+gC9esrlsvsepLKphVhBGH88idKZ5MkzjmH4lPPwtQb443cC7DrIYdVsi64OH6OadvCXW77F8asXAeAIL9yor8TweEB13tBGDFdixR2WnncU7x49l1B9O8GNLTxcdhTPtU3Gl0zy8/t+xWWv30veMF+aTwjvvT0ED3AUhfUjR/G6M5b/+0V6WOJTYWHN3vv2aMrjAQIv2svEEqjYixB2d7cXza0mH/KGCFbZ6wU+FEdI2h4nyXlp/WvoNbaZTv86ZWdHA+s1pGWuIXvfIGGIO1go4kqsXm8iXcfUfV4/r2q4QngLXh5rqSje5JLw/u7Nbe0Kb7FVFVvTcNL5qU3NwNJ0LF3D0r2/bV3ry3mNEMgMY6JQQHUdDNPEsExvbaawDB9defm0FxZRO3wU26tHEdOCJDCISwMLFSElQcWk2BenOhhlZLiLQ1a9zZGfuRF/24BUh5riiVN6TEQ6d/iBxgEgxwNy+PBiTTzBX1t207Z2M2PXb0Q1BCXTDKZVdaBqCsm8IKZhYBPm1u1H8OqaPOY/G2aUv52vfuc6kj4DS1WRUtBiF5AXju/zevZuydOjp3H34om0OP39oE93mGTHOfmUdajq4N/JcS++xtx3V5IIBfD3JFFdlzcOmsbKMeeza2I3GzuKeXN9Jbd//XJOXPVq33nNo4dTFja9VD3D8mB2JUT2Htw5Hgyw7MIjeGncPNw8jaKONi477nuUbOlP+yINFXHc6GxxasKCV+uwS0IoB1dlUYzdvgLst+sZuXZr/86JJTCnKvviQrB17Cj8b+1i2O5d3vu2I+nVvbBmcDSXxpjHGcAb7w/Lyz7uuNAQ8yLHDOWcYzr/uKf3gYjMlJZOhmBDyvTY23veZDrokXTd9Fp6aym9gI+9gT5d2R8AsleniepxTVRsBLZQsUgvQsMUKraieYvqrS1V7du2so6lx/pK734VS9GxFBVb1bFVFUfxoj32nZPxt6MomJqRthN4a0szMFWdlG4MOtZXRtVBCAxhYwgHXTjoioOhuOiKg55eq8JLWelpUGU6YgQoSHyKTVC1CKhWem2no0fb+FQHn+LgSEi6OjHboDEVoT4ZYUc8n6bUXnhxBuwzi9PfVY4H5JDDvwurE3H+umcnnRu3UrOtFiIG48ebjK3uQWqCZCCIralEZSG/XnckLe+FmP1ykGljt/KJz95LwmfgKCqmo5LUfRj60KKSXiR3Kzw/ZjL3LxpHgyzo218YTDHeSnLcSeuH1I1ceP/jjN+aLRJ9bdYMlvo/QeeRDbzVVM2OjX6Wn7+A4lhHf6GjRnmpeja1QqHf63v34WS6fu5UVp6/kHfbRqCUSb529FVUDhSnApw72YuaksZLMxew4ciZzF/zLoXvNTCsswEhJBvKR5J6s5k5i99AkZKuqhJix06AoJ9INIob1uisKKJu2lh2jB3BrV3ziTy9hUu2PM3Ri1+ipLUVVxF0ja8iPCkfPd8ABJvHjWb7LpX5dz1LXiyK49OQM6rQppdCysaqjxHdkyRvezNmJEDLgkl0lZeiS4tRDy7GH0uAI9k1ZQzK8WOojrbhPLQetTMtnFEE7pgilJEF8HKt19mF9P6UR670bBTHjPY4SPrdtnXECF6at5BAd5QuJUSdXUKtU0pC82MZBlJRKEx0M3vPBsZ37mZYdxMRM0bASvaNUS1Nw9Q1Uj4fKd1HQjcwVc1LDyN0TEVDOr2OFHipzxyJ6jppx0gvMiGui2o7COmm0496AZOklKiAorgouF4kXkWiSLxMfAIvxTlpfwspUaVXt2Y7Xvo02+5LqaraXrRDzfacMdV0unXVdlAcpy9Vu+K46XX/NuBdUE3Pz2SutXT6YE0ZfCyzzFDH9gf70x8J8aGyF+VEKTlkQQjxCeC29ObnpZTX76VcpqjkTinlpf/EtbYDI4EmKWXFPsplCmXGSClrBxy/FbgsvTlZSrmBISCEuBLovZ9PSSlv+SfanCOfOXzkcPu25znUzg7X5wroiEQ8r+kBKNnWwISXVw2acjYVjb+cdgGrho1F2WDQtGwYw4/aTaQ0hhUQVHfW85nHHqKgxzNSdwdCLD75KEaOOokpvvEA7O5p5Oa7GlifCvDKQXl0dniTL8FkD5WdzdQXliP8Cr+N3w6TI5hFIU78zb2MXr0FVRP0lOTTVFVG/dQadpx1CEkngKHbGKpNV5fOxBUbMbscPj3qc7TEwiiK5Pp7vsPHH7iz/0Z8KvaMKnYdP536CTU0jqhi56SRvNNUzWNrx/Pq909n7tYVGR9I0MtFOTzfYzlFQdBVlk2bgXbdcmZtzkgSGNLhoAqP8EX8oCns2JJixGtrs+pzD6pEqfTy7Vov1qI3xfratvWCw2geNgxNdZh663MEd3sk/flrPsvOmlGUBHoYvXI9vt2dbDpqFvHyYvJj3fQUhYkXhQm4FoZpQswmZSq0+fNJmQp2Ci8HriVRLC+8pK0qfYYUR1WReBMZIiPHvEAiXIlqWunFQbFtNNPuMxI5UvQJNGTmmn7Dj6VouBIUKVGRaDjoOAhX4ljQLQN0EaBTBulSg0hFISLjFMg4ETdJQFj4hYnh2OiugyJdnLQhyU4bkSyhklB9xBQ/MTVATPUTVQPElADdeghTaFiuiik1HKngKp6ZpnfyR6Yniry10rfu/ftfSivxP4YD1RCV4wE5fBRx8+aHOEKuzNrnCEF7XmRIYUr1qu2Mentwip645uN3511KbVEV7pshOneWMOywPYSK4lgBwYQ9W7ns6ccJmt7ES1t+PktOOZbpw09hlDYcgLWt27n7lhgbxqi8WlBMPOaJMUu6WynvamF7aQ1Bv8014g46JlaCX+WkX91DzcbtKLpCtKKIhupy9sweQ/0JM7ATKgGfiSIknR0Gs955D7UtwaVTv8KOeCGG6vDU7y5l3muv999IQMOaUUXtaXPYM2EE9SOraBxTzfKdlbyyeThL/+8YxjRnCG9Lg544Zlie17mVhzH9Pp6cdRjHfOlvFPRk5J+OGDC9HKoiEPZh+g06FjdSvjajvpIg9oIRaAUGlhToj6yDHss75tdY84WT6cwrRneSHPy7h1Dj3rFnbv8yLcVllIV7qFq0Hq0zweYz5yIjfgpbO+iuLCBZEES3HLSUhRFLknRV2v35pCyVlKlimgLTVFClg+HaqMJNp7wQCBWE4k1gSNmbXkvgInBtUJMWWsJEWA6qaaNYDjgS4boIV6K4Llo6nYXiurhCxZIKqXSf6+B58fmkRUCa6I6D4jokNB/daohOEaBdhOkkRLsM4XNNimUPIZIYOERIEpZJVMVL+emmFweFFJ7Ry1I0TEUjpepe2g9Fp1sL0GWEiePDtBRMW8F2FIT0OA5k8B4pcdMeYYoKllRx6OdHjqIO4gaOongC0fRiKyop3feR5QyacDgmuZLrf/EFhm8ZwvALiIT3zB5oHAByPCCHAwOOdGkgQbMdQ3FMKjQfRUoEQ+kXNKzsslncbFO7JMW5k2+mvKA/rH1DdyH6MBt7CFsAgGrajL97Jc+cfQwHL3mLFxOTeC9vNNuGD6OzphCz3k9xp8VRx21E1/t9xg56ew2nvfRylh2hqbyYZy8+i/P9p3Pt7nXsrojyRv0wSh/ayAs/OGfvN6kIOGqk159m/BwtXeO9hbNYd9IcSpUkbjfcUjeb7b5CQokejrv9EY5pfJcVM2fw5rFHMHP3Vo5Z/SYFsS5SrmBzURVV+XEWjzmYd8on8cO3bsPnWLyeN5Xvln+CDiXMV56+nl/c90s0N50NvCoClWGsgI93zjuCq6Z9idVNlRiWyaYvz2NYe4ZIN6B5PGB0Ifh0do2qpuS3LxPoSfSXEbDzY4dTY3TTpQbIv/udfg/lPB9Xf+KrWMMKmLpyOac98rA3qaQrnPPTe5B+gw7p5wuP3gCmw7PzTqR+zChCdpL1+TW0iwjjE/W4QpBUDJp9BdT7SyhNdTAlWsf45B4UFXoUH51amA7VWzq1MEnVQJUumnS81BPS7tvOXHvjbsUTdAiv37WECgh06aWr0KSDI5R0Xw3SFUgpSSk6rlDQpYNPWhjSpkcL0K0FcBU1awzeu/6o9qcfZRyotgDI8YAcDgxIKWklRXOqA2H3UGaEiWh5+JQgAK6UvNxq8fZOh+0v9fCVk/+K3+iPcFbbUUF4VAJXGXoSW0uYlN+0m0Wfn8MJjz3PEns8bxePZ8WECXSUFJLcHqDKjnPYUVv6BKrShRNfWMTc5Suz6mooLebZy87iPO00frn9PbaXqWzqKOaT3/gjVz15075v9ORxnk0+ndZHCqgfUc3rpx6BNbaIYYlOdMdhcdsIdi+L84cvfh6flRHJbU41zK7qcyJ4bsFh3HX6Wcxf8S7b54xjbuM2lBu6qV84nkOmbCQRCmB1O0TMHuzSMC83Deex/Nn8xHiBra3lNPvCVBd0MNptY9EbMzmq7TkSusqs2FbKm1p4uXw+dy48DtuEI7YtZ7O/hvo3p5BK5XPI+G1MHbGFF0LV7CoNcczWd+kywszath25qZR7Oy4nZepoJ6xneaWfj+1+nS+ueYyKbTvZZFTz5dN+QbteSlzv4Zs77uITf78BGmOsmD2L7eccyjk73oLWHtw3d6PUd3v3rwo4qBJmVWU5+pi6xqOfPQc3z0+wOUFDLMS61Bjanx+P1uyHcSmOPE3n/IlFhMRHUxTruukMZeklkXCJJyWdUYfuTofOzhTRLovOqE173CIZ78FKxVCcKIrsxtVsXMNLJ+rqAkdVkCqggqo6GJjoionmmhh2HL+TxG/G8VkpDDOFYnmRyoXtoFpeulDNtjLSgqaFNOnUoprjoLq94hkb3bLRUiZ6ysRIpdCTKbSUiWZ7qUQVx0GoSr9zU+aiD7VP3XsZ/R9/BnKilByyIIQoBHYDQeBpKeWpeymXGb3kFCnlM//EtX4FfDu9ebCU8t0hyhhAI1AIvCOlPGSIMicAz6U3vyGlvHov13sKOAVIAMOllG1DlXufNufIZw4fOey0Emze8VdGOh1Z+10B3cEgCcOHEGBZKiNWb2HUii19xvlMRCMhbr3iQipebuStv59PUXUb407cTOXsKPld0+gJToQui4P8Own6BVRNAG1w2HtbmtS2v8WOV5/mp6MvZn201Juk8DsEgjahsM2Itj2ck3iHHQsmgKKgJk20lIUV9FMW7eSolxdjhBQap4zACvoQSZfaZ2qY176Uce56uo0AG4prGNbaQmlnO+Z96wk3tgBQVzWS837/GHmTTU4wV1Lk9FCnlpIYkY9fs9n0vOAPX/g8w1vrs9otNQX32LGsvfgwXj/uML792rGYjso73zmOg3b0i05++Ntfc3RXLQe3rWfNsTPYNnYEFx/0zb7jSb+fc554jHhxAYdsXsk5u16n4vUNRLY2sfQbZ3P9/IvYLQoY0drB7NqtjC9so6lyOLt3lRF4LoKyMoKp+/CNimOMjkFcxV5ajP16KUIHZXw3yudqiScMOl6pIBEBM+xg9CgUNmgU9EgwXKyIxAy4fTY+1RaoPQp6UoDjcQZJOkwf0vvbTh9zhDcacPvFKH1/D1zvbZ8qkUEHO+yQzJMkLQ3RCf5OB2H6wTW8FDICTL9LstwiWWZiF9hYeTaK38bQHQzDQg+aSFViKYKUUIg6PmKuQY9QSegKZgAsn8TUwdTBUcBRhJeLVniRclzBPsNa5/CP4UA1ROV4QA4fRaxItGLv/htFbrZXtCMEXaEQpuEJQ8ykxoQVa6hau2PIWEiNFaU8cNHpFD/SzvIHzqa0ppEJZ22kZIJFcXQmrcZoArE4MwK78AV8UDke1METXik3Tt2mJ1nWVs/V/pPZFctHUSQ+v0MobBEIOhy0ZxNHhGrZfdBoABTLRgqB4kqqO5o59qXFWOV5NEwejqtrkJJsfWwkR3e/RI3chqWo1OZXUtjeTUFHO869awl0euKRd6fO4ZO/vZPC4TGOSK6nyO1hm15FYZWF49doeKqHn3/561S1Nma12w35iJ08jdWfOIw1C6ZzzZvzaWgLsO6rhzKydXdfuc/eeStnbl3B/JZVLD9zPl2hIGcf+qOMz7GCs598AsdvMG/7Kj62+UUq3tiI1pVg8VfO5cbCM9AUh0kbOijojFFTGaejsJDdy6speSyCsSVArFhDrUzimxhF9miYr5XCjjBoLu6IKNZVtXRYBjtaSiDfxrUF/m0+yjb5qGoGNWxhltq4YRtpK5BS0GIqWlx4nkdqeg5QAURGvnZXIG3hnWOnfZIE/X18X5L3dH9vA71le9eOAN0Fn4MMuFgRh0SRi+lzCXUm0DoEdIRw3BBeTC9whSRRahOvMklUmpgFNoZh4fOlUDUbRZeoqkQaEBUaXbafKDrdqk7CB8mgi+WXuBq4irf0d/kSkRbXSsBUBKYicpzgfRBM9nDL9V/knGVPDzqWE6XkkMOHB46U/GXXg5ySWJ29Xwja8vJwh/DSnPDyKkq3NVDbPJnRZeuzjv3histo8Rey8/sz2VEYoGx+I37VpqcpxNF5r/HZ9Q/gc7x3QFtREctOOp35I06jQOTRJuNc7SxhTXcJ25rz+fvHLuXQTe8Muj7ghco/fypoCq0lhbxy8pHEw0GahlVg+gyOaN9MZsvr4vms7KpkTKidixY9SXvcoDFYyJymzeimhd0cR4smkQIWHX04951+Jk3bC9DW55H3SpLyVCubZg5jy/gAqRY/F730MifvvgUrEKT70AksK55B/eQqZkZXMuvdZRx6sJcmoCDWyZYvHUJBvLuvLVc8eCf/9/aTbNMq+MrUK5m56l0e/12/n9+zp5zCt7/9S/zrushL9XDRzhc4a/OLxFWDZ884kwdLjiLVZDKtYQtff+8OauLNEDK46bTLaa8u4sgN73LQ0qX4LIvVVRN5ftZhNOcVsHDjSgJ7OvA7JkHVYsOMSewYV0N+axd5W1vQWxO06XmkFANNOthBAyfiI2C45FlJInaCgJsi6KQwHAsTlZTQSaJjCo0UmudskhajIECVnoey6o2oEUBK00mqPlKqgSkMTEVFx0UjLXiRNpp0UR0bG4UYfmKKn6gWIKnoqMh0bem+Ou0RLYG48BFVg0SVAHHVhyl0TFXDEl6kEkco3pJujSuUvpZ5AVaEJ2ztXUuQUqQdag64LutDiwPVFgA5HpDDRw/trs3jO+/gsFSWDzimqtKeFxks/JOSSS+8R/GOZjY0H8SkspV9h2xF4Vef+ywJx8/Gb82jeQRUzm7GZ0JsR4hP5N3DGfUv9fXPbSWFvHDeqRxeeDzVooL1yRZuNlaxpGEYhevqeersU/oFoAOR74Pzp3liCil5/oxjWTH/ICy/D2lJjukc7ERjbGym5rYlpLocbjr6Ai5rf5OxbV7E2FTAR8xU6BxbwfLTDsWvSp579hCWr5lKdaCLr1x1N0pGBLi2raVMfmAVw8s30D6mjNojp/Uda6wrYcXTwwkVxThjjMPoShUZ7SCk5ZOatpAmEaTtXYPNpiQ/LLnlNy6Wo1MYaORbI3/EA7HLWJQ3A9lhkNegIqRASJepRUsxFpYzbcZITpvrQ8kQkkgpubm2m8e2NDNr42J+eM+P2TRjDl/90o9oC/o4YfPbzGrYzHHta/mtcgxqV5KfND/cn9onA7eWHs/Xp1zC8ECUb1S9RrLWodMuo2DeLKaWDGOmHsIQH56oGx91OI4kmYBEDLo7XLo7TTrae+hsjtLVmSTamSLRbdOTBNMGYdioAQc3IqEArAJIFEAiAk7QwfKBowqwbIx4Cl9PEqMnSaCrh0h3jFB3N3mxKKF4D5FEjFAyRijRQzARJxKLEopGCUR78EXjaD1JhMQTOGUKVwYKWwaIWsQbXiqwnCglhz5kiEUsYIqUcsuA4zqwHhgLLJNSzh2ijrOBG4Am4Bwp5eYhypQAtXgpgG6XUl42RJnLgd6IJnsVvwghlgLzgS3pNlsDjo8H1gEa8Dsp5TcH1/L+yJHPHD6quHfHi8xILsEgm+wtaxvHA68cz/DNktCrxZw08w6OmPvAkHUsnjsTe+bhHFl0CuLfYKi3d25i164b2VVawRq1EhONIjfG88Yk1lMOCKoaexjTmEIvhGSXj8YtReiLSjhl7DMckr+UmBnihc4TeHfnIeg+i09e/XeeeWgmRyvbOHZBEPuNRURefBG3Mo+HosezK1rOk986iu4x/aH7RUoweZGkYPwuWld3UjRRwdUkn3vqDsbU1XHfrEt57egp7AoUEouEGdbZxJffvp/itig3jD6dhF/jd9d+j0BPii/+6LcsnzEDgNLudn7w0M3IcAFbjhjPhJeXMP6hjdx01qd46JIjUSyoaTSZsEjF91I+vFGKkGpa/vH+n29HuUNhU79aNRWQbD/IIlYoUVzQUwLNBM301n3blkAbcEyzDzhbwQcCKSSOCrYhMYMuyQIXM98lle9iRlzskIsddLEDEjsosX0uTkBi+7zzHBXs9NpRMtZKxv7efel5OVd4xjDPMAau9AxkH3ZEjBQRfwq/4YALXQkfbYlg3/ED1RCV4wE5fBQhpeTWusdYaC5noGnhuT2zeG3RfKq2QfClYj52/G+YPvH1wXUALxw5n/ypRzMv/8h/S7tSK19lh3iezcEqNqllAPhdkyf0qTSRB0jGNXYwrNNGzVPoaQnQuKKC/DUGF0y4nymBlXTYhTwTPZl3t84lUhTlgp/cwwt3TePk8CYOX1CGXPwyxqsvIsvyebjnKFYnJvPi1xeQqul/NflbFOZubKU7kqJ7cwcVo23ynChXvHoPRkuK6w/+FpsX5rGtrAhH1ynu6eTbb9xNZFeKRycdQ1Sx+c0NP6ZNFvGlH/+GnaO9AJGl3e18+8776SkqZftxNRxyz7OUPt7DbeddwdLTxmLZGpN2Jqh8IUJdPJ+Rj+UN9TGxaZ7FhLcGp/d7/rNx5jzlo3iPxwVahju8dXaKxrGOJyIZAC0F+c1K31LQpJDfpFDQrGAkD6hX9QcOKSTJoKSn1CY6zKGn3MGJODgRF6lJT6CjpMPhS6+PT+npxQdJP5g+sHWJrXt9v6tIpJrW6wzU6oreybK05lcK7HQkmP8WVBwc9u0VJVyXT756Dz94+GqqO/pFXDlRSg45fLhwe3ctsxrvICCzQ/XbikJ7OIyreb91JwmTlq6ibGvDUNWwfXQNLxx3BLu/Op/2N8YCUDyxnsO/vwjXmMqawipGOAnONGtRg/mImmmDxKnvyj3c427g3cYK8t7YySOfOg/DsQZf7OTxMDyfPTWV3P/Jc4nleylDpIQ5m9ZxyHtr2HTsQYNOczpVDn/wac+A3nufukHi8muI1NcTLx/GytWFLL59O8/5Z4KEUIdAN/tfV+FD97DLDnHw2pc48e0NrBAn8N7MKVgHxym5dDOTK1zmM5KPP5tHneNyZt2r3P749/HhsPiys7n6kPMwUzpHv1lLzbJGxo7dzKypnciGbpIxl18dfQlLwhMIbfQx897dzC5eTHCUSTBgYwcUrMkFvJMczxu1o/ha5HmODm7iNTme4FiHRc0TebB2Jt+wHuXMhpcwBewcXsndZWfyfP1U/i/0CscZq3ndnESrzMevplip1LAkMZZkj8rpvmWMzW8mVpjPTrecbd0lbO4oJ2oNkTboQwi/CsMjCqPzFcYVesv4AoWxBQphY+9djkTiInFwcQasTdshGpfEOk2inRbRLptYt000KknEJT0JiCcgmZIkTUHKVkhIQUJRSGkKSUPB1BVMPzgBiRNwkLqLq0tcVeKmx/+u8MRgsvdvetP50SeccdOCmb40wekoM670otc5UuC4vUl5/luQhHwWkUCKiN8kFLBQFUnK1ohGdfZ0REie4fH6HA/IIYcPB/7Q8i6ntT82aH9S1+kMhfqiaEhbMn7xGsq31A8qC7Bu6njenH0wGy87jcT2IgACpVGO+O7zdAUnsKakkqmJFi5QNuIEC+iaOJFirRRd9I9lbzZf5KVUhM1dxVz1/d9w2QN3DN3oY8fAGO8adWNruONzF4Pi2U3nbNvIsHgH0crCIU+d/tibNJkhtkfKOXjPRgqtHp6++GMsGH4JDybqiHVsJLS5kccfuQCnK0SwW2H6Uas5+uJFqJpLR2MBq9aN5M7qSh54+4/MSG1n57iRbJs6gW61mAevOwXdCvD5b2gcPPr9+89EXNLcDNXDQNO8zzqZkuxuhoAq2bgeRo2B0aP2UwjSUAtTp0G753T0u//7Gn8+/TN8vvElvt3yFK8GJ3F0zbd5aPWvOaf5raxTXy+YzDGzf4ataDz43q84t2kpjJ8DH/8BFJTt3/Vz+FCjO+WyuUmyebfDuo0pWtd3IeJxtHwTUSCReS6iMIWvNI6Rn0QP2/j8Jn7NRJcOrgOupRC1fXQkfaTaHdyWJKI1Tqi9i/KOZiq6mqnobKG0u5XCrg7yuroIt3aiJ71IRf+KPSAnSvmIQggRBt4EpgJvAcdLKaMZx68FrgJ6gEOllKuGqKMeqExv3iOlvHgv17oMuBWPUl8opXwg49gEYDFQCtwtpfz4Pto8DVgKhIG/SCmvyjgWAl7EE61sAOZJKbuHrOh9kCOfOXxU4To2j6+8hWGRFgplAkcKliujeH3UWBwU/DdXEPruaHxKks9e9FWqyrdlnb9m5jTM4z/BTHUayr9RLWsn2mlfcxcNHRbd9UVse2wmtUsm0fH/7N17nKRXXSf+z7fnlsnMhFzJhdwIJOGWCCGIgHIRCcEgShQMRAIqirs/Aguy64rrCq6Igri7MYsiIBgXjYCoXMKCCIgIyJ2EQEJCSAIkJCSZSWYmmUt3n98fVUMqk6mavlRPd1W/36/XvOo89ZznnNN9nqrnO9XfOs/Tbk87cFueef8PZvv2/bL/6rty2klfzr9se2Te/O7nZcXWe/9x5uQfvjJHnHNFTlv5k3ns8WuyckUnmzpv+61MfvGT+cq3n5yLdr4o33z0RG4+fWcmj9qZFTeuzgPfvylPfutteeTbH53zV3w1nz7gmKzfvjV/+/7/nies+05+587fzWdXnJ4tz7k5k8dtz6rt0zn27RsyfelhOXXDZ3L+f9yR9Rf8t9x4/FF5zuFvzI4n3ZnpAyez5tMH5Ii/OTjrN1Ye+ICJvPTw/5k/+Z/nZ7pWZXply0RPIsh/vqHl717Xcs3/uufvdsXq5JmXTeXdV+7Mrb+1ModctjIrTprO4a+fzFfXTuWKW6ZzwJUTWV3JnSe13NZaNm1vWVnJhtWV/VZ2VgLeOtmyZUfLHTt2/6111HTumaTSfdx1L8ddy6nc/aXibqn1Prd7nZ72W/ZYv1qn7/0qOWzNRA7er3LQmsp9VlcOXJXcZ3XloP07/w5cW1m5sjK1M5nankxuSya3d/9t6zxXE8nEymRiVWfpyMm7kp13dR+33b29886efdt66vQ8Tg++verQtbRM79cyvf90dq6bytSaZOcPEl1aJldUJlcmO7t/4JqeSKbWtEyun87O/aczua5lav/pTK2bzvT+02lrpzO1pmV6v+lMr+58GNY69yrIVDpLFU61ymRLJjORnVWZrIlMVmWqOrc0WFVTWb1iKhtW7sjBa+7KoftvzVHr7shRa+/IhtXbsjqT2S+TyXSyc2plrr/joFx848Ny/eQBklJgidmxfWve87W/yoPX3Zx1bUd2thX51OoH5jPHHJ9MV/b/3eOy9sKjc591t+Y/PO8lOfCA79/j+H//sUdn3eN+IQ+dOHkoiam7bL/16tx69btz67bk9usPzTf+9tG5+or756Zn3ZF1+9+eH1/9hWy544Acuv62PPLUL+aftp6ev734nExsv/cfyx/+E1/Kiid/P4/d78fzhAeuzorut6ry7jdk8lMfzkev+rl8cOM5ue5xO3LjQ1om77szK7+9Jo/6m+/lsE+ekBd8dk1eeu2X87797pfH3nxF3vq+1+TYY3bkz7b/Wt6z8+zc9eObkgfdkcO+f1c2XHR09r+r5XlP/2SecPbjsu0Xn57NDzgkv3LYa/LdUw7ORJvIwZfcJwddun9Wb6/81AuSHz3kc/nTc09PdksNWrlf8l9ub3nzq6fy/d+/5x/vHvr8lv1eOZl3Xbozt79tRY7cNpFDfrSlPX46/3bTVK7dNJ2Db5rIdCWTx7TsnG7Zsoe/7Q3UkrWbO9f9iamkWqVV+8FqZW2ie9nvflt5Yrpz7a7p6pS71/IfvNvXPZq+13M/2NdTv3ra+cHjdHcsK1s2rKsctCE5br+JHJ2JHDk1kYMnJ3JQKrWzMrWjGwOs6MQBtaJTTnWu+Tu2dP9tTXZs7pSnpzqxQptOWm95Otm+OdlyU7L15n0fD9zzd9Syc02yY03LjrWda3l1/1C1Kz5bubpl1f7JqvUtE+tbJjZMJeunM3XgZKYPmMzOdd1/+01lx35TmVw1lR2rK5OdO3R3kmGnV6RNJdPTLbW9ZdXtE1m1dSIrbl+RdsvKbNm5Mt89JLn8MTuzff97j3NieiqnfevS3O+2G3PtYcfmC//pCZ3xj1gMkIgDGE+3Tu/Mm777/jz7zi/ca987/v3JufzW47Nhx1QOv/iA/Lezfi37r928h1aSjzzmUZn64R/LEyfOzBWfTNYekJz46Mw6LvjC1Lfynjsuz6e3HJtH/ePH8ru/9cqs2dm5eE1X5R9f8NxseeBJWfOk1bnylJPSelZzuf+N380v/MW7kiRf+rnH5c6DN9yj7S3fvE8O+OD1eezqT3eeqInkp38jeeiP32scH//cdD7x+ckcXLdlQ9Zm87b1eeQxX8uJB38uV+UROeWHT836dXfHG9OtZSotq3o+D7ltc8u3b57Kusmbc/jf/Gk+/w8t7zzpBcm6o/M7v78mGw5M3vevW7Jh07/nQWu/m8Mnt+adU4/LZydOyinHr8iv/NCqrF7R+f1de/t0PnXjZB544EROu++KrOz+kXC6tXzmxql89ntTOXBN5YlHr0xLcvW3N+WWL34tVx9/arZNrM6qFcn372y55a6prGtbc8vk2nx/20Ru29b/c4ClZkUlR62vHLthIsdumMgxB9xdPnZD5b7711Dj0GGbmuzGG5s7scQPHrck2+/olHc9P7Wze9uAqXveQmB6Z+dzoFX7J6vWJivXJqvXJWsPSfY/OFl7ULL6oJaJA1vqPlOZXDmZbVM7s3Wq+zg5ma1Tk9kxtTNTbTKT05OdBJxWndsfT7ds3T6dzTtaNu9o2bqjZfNU5a6pyrbpZNt0ZVubyES17LdiMmtXTOaINXflfmtuzwmrb8uJq2/KAbkzq3LvAGlr9st371ibs374FUnEAbBUXL7zznzyhnfnydvu9Z3yvP0zT82t0wdk9Y6Wo9+9Iv/5iS/fYxstyT8/8rRsf8xjc/JVz8gX3p8cfGTy2J9P1h0485f65uk78tYdH84nNh6TWzeuzF+d/ewce/2371nphIM6SSlVufnwQ/NX//G52XrA+iTJ+jvvzIv/7O3ZePShuepJp96r/Z0bV+fx73pfVvR8KL3p8KOz5pfemLW7bnPYpnP9F/8p//yV6/Kh7z0y2z71Q6lWWbP/thx0+KbcsOnA3PSwbblz8/55yMmTufhZSfZbv7RuJ3fZl5Jf+sVk6/bkxecn912fTV/8bNYcuS6fOuCQnHPYs7NtciJv+dqF+bmbPp0Vmc577vsj+aWHnJ/bV63PGRsvy//b9A+px/xU8ognL62fjQW3Y8d0rr2x5WvXTecrl92Z6762M1u/vypt58rc54Atuc+Rt+Y+J34/B97/tux3+Nas3rAjK1a1rJvYkYPqrlSS23ful9t2rs2tO9bmursOzOW3H5prbliXY797XT7xiqclkZTCbqrquCTvTXJqku8muTjJnUnOTPKoJBuTPKe19qE+x9+Y5Iju5t+01p47oK9XJHltkhVJ3pfkC0mOTnJuOrcRek+Sc1tr2/Yy5p/ojvOQbhuXJFmb5Jxue5cn+anW2p5vbj0Dgk/G2ubv52sX/Xl+77rzsmnzgblr55rsf8qmHHb8jfnlL/5xjvz7q/MXx7w3E19cmx9/9F/noQ/+TA4+srLiUU/NxI/87IIGKNf9a/IXT7r38ytW78zTXvvunHT6N7PuiNMzcf8z8ulLW97w35LdX6avfPHn8qinnt75a8TutmzKdFbm795f+dLL1uSqhya3Hj2dDbclJ39iVY48NHnJ1ytZ2fKFG2/PcVf+Sw5/4ytz50FHZ+3+W/KeHWfnT7afn+kDJ7PyjhU57T2r88ovtBx8fPcDqac+Mjfnftm4/gG55KoX5NYrT8mO/Subjkzu99Dk/P+THHzfyidfn/zTb95zaD/0C8nZb++UP/a7ySf/sJNo8ZCfTZ76uuTA4+b96/2Bqe4fq27f3nL7jtZ57Jbv2J5s2dky3ZKpXd/KaZ0PwabT2d71XEvnceoHdVsmpzvlSrJmRWX1imT1ik551UTnA6YV3cf9VlaOWle53/qJHLOhcvB+S+/DpanJeyeq3Ouxm9DSb9/uq1De40esvT+/ar9k1brOh1C7Hlev63xAtXpdsnr9vfevuHe+1ux+7p3dD8023/MDtW23J3dtTO66Ldm2MblzY8vW25NtW1qm76hMbatMbW9ZMXlL3vdjt+YDf/bgJKP3QZQ4gLF2y7fyL29/T/7s5nNy2+0HZWdWZN1pt+Woo76dF33091OfnMjfrLso66/ekac87qKcdOKXcp8j12bicT+TiYefuaBD+8Jbk/e+6N7P73efrfnp3397jn7wTdn/fj+WLcc+OR/85+m880/u/dby+7/xiTz4R39sz3FA179csTUfPmdVvrVuRW4/fDoH3TiR+39hIic9pfK87l1I7ppq2e9j70hd9Ef59tbTc8yxX8/lNz0qv7Xt93PHfVbl8KsrJ356RX7zlsraA7sNP+X0XPP9B+TKFT+bL37trOzYuS4717RsOSR54kuSZ/565492X74o+ftfuueYfurPktNf2Clf/nfJl/8y2f/Q5Am/lRz8gMG/t8nplhV1zz8ITk23bN3ZWXVjcrrzh6hN21o2bm+5bVsneXXX9saex62TyfbJlh3Tncft08n2yXvkmA7dQWuSYw+YyHEbJnLMhokcvq5y2NrKoWs7j4es7cQIE4sUI0xPd6552++4O6mlTXUTWvb02E2I3XZ7sm1T99/tnX+T2zp/ZNr1b9XaZOWazh+bVu7X2V6xpvPcD+qt6v5b3Um4Xb0uWb2hc/1f032c73V/T7ZvSbbcmGy+ofNzr1idTKycztqNV+QD37siv3vQQ/L9FffN5Mp07p2dZGK65WHbbsx5P3RI/tNDj0oyejFAIg5gfH18y035yq3/nDO3fT0r0jKVyr+ue2A+uu3UrPn7Q3Pf3zs6E63yiIf+U5799Nfd6/ivPfzkfPmpT8nPrDgj+9f8V9XYOb09l3zjTfn8muNyx3Xb8+R/vCRrpnbmL5/6rHztYQ/Lui07c9yWrXnAad/PqlXTSZL66so8/x8uzrHVuWXe7UcelMufdvoPVnrZdNN9cuBhG/OK9z4nP3Ldt/LHZ347Ew84vXM7wX3ori0t+62bfbLOQtox1bn+37kz2TbVctdkctfk3Y/bdj1O7bbd8/y2yWRy1//7p5Od08nO6U7csGOq08eOqSSVrKxdK7hXVnY/B1g9kaxaUVk9kaxZkRy2/0SOWlc5cn3lmPUTOe6AiRy5rrJqxdL5vdFfa5OZ7n4zqGplqlakuglbu859cQAsHW+59crc546P5RE7OtfQ6SQfXfOg/NNNp2X9/7lfDn/fAVkxVXn6k9+Yx53+9/c6/rLTH5LPP/lH8zMrzshBdZ95jeXb276Y9956Wb6286hc971V+f2X/+ec+uWvZGpiIp988hOz6YyH5ahbN+fWUw7Ll592WnbstyZJsnrnzvzyxe/KYdffnKmVK/LZX3hiplbf8z9Dk9srV/3juvzSpr/rJKasOyg55/eTIx64x7Fs3DGdS97d8u53dLbbiuk85Sc+me8ffHweeuL9cvajVnW+7DJizv/qHbnw+k5G6kE7N2f7xKrcuWK/JMl+E8mlP3ZQTuxJvIVddu5suerb0/nsVdP50tcmc8Nlk5m6ZWUOWH9njjjy+zniqBtzyINuyn7HbsmK++xMViZrV0xmw8SOTE5XvnzHkXnZSZ1UAUkp3EtVrUnyoiTPTXJSkjVJrk8nceSC1tp3Bhz7rCRvTHJzOrfvuWIvfZ2WzuorT0xnhZVNSb6c5C2ttXfPYsxHJnlJkp9Ocmw6tyD6RjrJKn/WWrtrpm31aV/wyXib3J6vf+aqvPGDh+Xqm++TndtX5Jgd38t5T70tT3rBqUnVD76psXLNvh3ap/938qFX3J1ssv8hydl/mZy4h7+Dvf0t0/nHv7/7dfqEJ1X+0ytmtoLLHd9NPvb7LZf9XcvOWyZy4HHJs/4mOfqHeypdd3nyhhfmqm89Kl/4xjNz26Zj8o2JE7LlkJaDbpjI/R85nf/4Tz3B28cuyZ1n/mL+cOqme/R18tOT5/7DPfv/yG8l//qHnfKKVckLP5kc9ci797cmQZkRd+nnUz/0qCSj90GUOICxt21LPvsv1+bP//mIfPu2DZnaPpEHT16T55+9Laf/XCcOmNrZuRatXL3vhtVa8g8v7CRk7LLusM71+f5P3L1uyx++Zjr//um7nzvrGZUXvmhmccDk9uTL/7flc3+ebP52cr9HVZ7xpmTDET2VrvlK8r9+LVde+7j87f97baamOx92TU+0TExXfvgV0znrD3r6u+rybHr6C/M/v/npe/T17IuTh/7cPfu//N3JO8/plI/4oeSXP9FJNliKWmvZ2f1j02TrJLxM9ySl7phKtk+1bN/1ONlZ/bmqm4xalRUT3XzLXVeDlqxf3UlO3X/VSF0i6HH5d27Jp6+/Jd+fqjz4wP3ykw85OqtXdGJjf4yCpelbN12Z//mVm7Jtcv/c/KWj046cykFnfTcr77Mj9/k/B2bl607MxF1r8iOn/UN+8olvzqpVnT9mXH2/h2Tjzz0np6x7RPar4X1IcOXtX82K7118j+c+OP3g/OXOH8nkmmTiuv1y4pd35og1d+XmrxyVbTetzzPOfk/O/t47c59sSpJsOWRDLj329Hzsmifn4MNvzX7H3Z63ve2ZefnLpvIzJy3RiyuMOXEALD2ttXz02s/m7763I2unpvLtLxyfOm1bNjz6lkxsWZENv3RSVn/0kKxYsSM//1N/kFNO/tcfHPvNk+6fr57103nc2sfk0Dp4KGO5fttXc8V3P5KV09O5ZsUhOfr7N+TOFfvlNYc9PdM1keNzWx658Xu5c/1+OfDQO3PY9q356v8+Pf9l/9/LEdW5bei1P3xSvvPwE37Q7uTOFUmbysve/sI85NZb8o7/8P3k2FOSNXuPB676Rst3v9PyiEdW7nOfkXvrupeNO6dzwsc2ZtPkvd/L/vjB6/Ky+4/GbftYOm7fOp2Pf206n/3adK6+dDo7vlmZmEoOu++tOfKom3L08d/JkSfemLVHbs2Pn9RZcUlSCsyA4JPlpLWWjZuSA++TTCyRrN9bvpF88yOdb38+6BnJfn2Sr6enWz7x8ZYrr0juf0Ly5KdUVszyGzXT051vra7cL5nY/e9Y09PJH/1S8p0rc+k3zsjffeTV99j92JclT339bsdcfXn+7CmH5cZv330Pxl/7fHLkw+9ZrbXkyxcl138qedjPJQ94yqyGDSNhVD+IEgewnExNtdx+R3LQgUvj27ytJd/6aHLdJ5N1901OOaezRPmebN/W8qEPtnzz6uShD0uecuaQV9xqLXnrbyaX/ktu3XR0Lvjrd91j9/M+kDzwqfc+7B0/3fKND3TGcd+HdeKAFXtYuOX7X09uuTK5/5P6xzowqkY1BkjEAYy/u26/M7/7xq35zNUHJkmOnPpufv+KBl2Y7wAAnJBJREFUX8gx37w0t77wOfm3F/5Bvv7tlXlA+07OPmZLVh12bHKfwxdsPNfd9ulsvfUjWT29Pbd895C8+QM/k0vbUVm5M9n/9olsuLVS3azGww+4OSec/en8/Q2n5QVf+XLuu9/NueKOh+SzG38kq1bvzC+97i/yvq8/No9/0rH5+Q2HLNiYgcHEAbB0feea2/Jf/mQiN97RSdQ4YsO389Ktv50f/ru/zxce87y8+2dekxvuanniQV/Izx91c/Z7wOlZceyDUvf64Hz+Pr/5yqy74R1ZlekfPPfBm34ob9v0o0kl+31zVU7ZujFrb1+R71x5v0xNrsxvnvOGnHj1F3LQ6tsyPVH55uMeku+ddExu+97B2bF1ZW7YcUD+34Vn5pkv2pZfPWN5/0f73Tduz89/aXPPbzf5paPX5M2nrF+0lUgZL9+5bSr/+NmpfO6LLbddWlmxeSJJ5R8u6XwIJikFZmBX8DmI1wUsE7d9L/nY3yQrVuZ97/+VfP7tnWXuaiL5D19MDn/YvQ+56bLkff8hufXqTuLKj/3GPh4z7EMz+QPwqH0QJQ4AfmB6KvnWV5MNB+dTf31MPvSKztMPfGpy7vv2kNCaZHJH8pW/6ty25eHndVZ7gXE0jjFAIg5geWit5Ts3Jd+7uaVay8knVDasr0VbrrO1lqmpO/Oun12Zr39gdb53Ysv37z+dTCTpvo2sXjWZF7/k1jzw0Qfnk7dXLvvrFbnsY519ExPT+YWf/1ie+qjNWfuAn0rty6XeYJkSB8Do2ra95UtXTOfb302OmrglP7Tt89lwzH2T007f57HAZXdcni23fDSrdu7I19/7kPzFdY/Plv1WpqaS9RsrB3x/4gfJqQesvyVf+LntOeQLa/LzN30u+624K1/edFq+fddxWb1qR174mr/Iv5/787nxmcnrf/vg7D/h9jSfvG1n3vrtbbl9suWZR6zOLxy1Zkl8IYnRt6fzaPVBD8jhD39xvv2xlyWRlAIzIvgE9uTO25J/+q/Jxm8lj/1PyUlnLfaIYPGN4wdR4gCgn+9+vpNscv8f33NCCiwn4xgDJOIAWExTO5Mv/kVy45eTwx6cnPTslk98smVqKvnxp1QOPvjut5TWWr7ypeQ732l5+CMqRx8zcm83MNLEAcCwffp/Jx/8zelcddp0thw6nZU7704qqZrOo8/5Rj5z9CH56LZV+fH/uyHZ2Nk/0aZz7s//dW5/6NpsP+yH8qxjTsghE6sW68eAZWGh4gBJKSw7lukDgPkb1SV7xQEAMD+jGgMk4gAAmC9xADBXm65Pbv1GcuQjWz75mZZ//qeW1WuSZ/7sRE47/QfvLamqXP7Z6dxyc/KoJyX7r/OtEVgq5hMHSEph2RF8AsD8jeoHUeIAAJifUY0BEnEAAMyXOAAAlq/5xAHSywAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhk5SCgAAAAAAAAAAQycpBQAAAAAAAACAoZOUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAM3crFHgAslqrqu6+1tg9HAgBL06Br5agTBwBAf+McAyTiAAAYRBwAAMvXQsUBVkoBAAAAAAAAAGDorJTCsiXrGQAGG3StHPVvTokDAKC/cY4BEnEAAAwiDgCA5Wuh4gArpQAAAAAAAAAAMHSSUgAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhk5SCgAAAAAAAAAAQycpBQAAAAAAAACAoZOUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYupWLPQBYLFXVd19rbR+OBACWpkHXylEnDgCA/sY5BkjEAQAwiDgAAJavhYoDrJQCAAAAAAAAAMDQWSmFZUvWMwAMNuhaOerfnBIHAEB/4xwDJOIAABhEHAAAy9dCxQFWSgEAAAAAAAAAYOgkpQAAAAAAAAAAMHSSUgAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhk5SCgAAAAAAAAAAQycpBQAAAAAAAACAoZOUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYupWLPQBYLFXVd19rbR+OBACWpkHXylEnDgCA/sY5BkjEAQAwiDgAAJavhYoDrJQCLHlVNfb/GRo35my0mK/RY85YTpzvo8ecjRbzNXrMGcuJ8320mK/RY85GjzljOXG+jxbzNXrM2WgZ9fmyUgrLlqxnABhs0LVylAPgRBwAAIOMcwyQiAMAYBBxAAAsXwsVB1gpBQAAAAAAAACAoZOUMsaqaqKqzquqj1bVTVV1Z1VdVVUXVtXJC9DfA6vqf1fVN7p93VxVH6+qX6yqWZ9rVfWMqrqxqlpVvWrY4wUAAAAAAAAAFo6klDFVVQcm+XCSv0zy8CTvSvK6JNcn+f+SfKmqzh1if+ck+XKSlyT5brevv01ySpK/SPLRqjpohm0dVFV/leQfkxwxrDECAAAAAAAAAPvOysUeAMNXVSuSvDPJk5NcneTxrbUbe/a/PMkbkry9qm5qrX1knv09KclfpXM+/efW2h/17HtNkk8keUKSd1XVma21yQFtnZXkz5McmeTSJKfOZ2wAAAAAAAAAwOKwUsp4+qUkT+mWf6U3ISVJWmt/nE6iyMokb6mq1XPtqHvsW7tt/UtvQkq3r+8leVF388lJfnlAWy9J8v4kk93x/8+5jmupq6pU1aK2NdPjZlJvUJ1++2b7/GJb7DmbzTHmbPHna7bH7a3uXOar376lOF/JaM2Z1xjz5XwfvfN9sedsX11TBu0fpTlb7PmazXEL9Rrrt28pzldizubyPKPL+T5a5/uwxzROccBSnK/Ea2wuzy+2xZ6zYb7G9lZnXOaMuXO+j9b5vtjzNdvj5hMH+L/l8NoSB8zOYs/ZUo21Zzu2USApZcxU1USS3+5uXt5a+3ifqn/SfTwunSSWuXp+kvt3yxfuqUJr7WNJLu9u/nZ1VnLZk/unk+BySmvtn+cxJgAAAAAAAABgkUlKGT8/muSYbvkDA+p9MMlUt3zOPPp7TvdxOsn/G1Dv/d3H+yX5sT51XtNae2Fr7Y55jAcAAAAAAAAAWAIkpYyfp/WUv9ivUmtta5Irups/WlUHzLajqlqX5PHdzW+01rYMqP75nvJZfcZ0y2zHAAAAAAAAAAAsTZJSxs+pPeVv7qXuNd3HFUkeMoe+HtI9djZ9Jckpc+gLAAAAAAAAABghklLGz8k95Rv2Urd3/8l9ay2NvgAAAAAAAACAESIpZfwc3FMedDud3fcftMT7AgAAAAAAAABGyMrFHgBDt76nvH0vdbf1lDfsw77W9621D1XVYg9hqGOYa1szPW4m9QbV6bdvNs+bs9kdY84Wf75me9ze6s5lvvrtW4rzNewxeF9kkKXwu3O+j975vthztq+uKYP2j9KcLfZ8zea4hXqN9du3FOdr2GMY1TkbpdfYKFsKvzvn+2id78Puf5zigKU4X8Meg9fYvrHYc+Yzt+VjKfzunO+jdb4v9nzN9jifMY/WnHmNDX8Mi/2+uNCfuS2F+ZoLSSmLoKoeNIx2WmtXzLeJYYxjCfYFAAAAAAAAACwySSmL4+tDamdPqVBbcvftcdZk8Aoma3vKm+fQf+8tedbspW5vX3u71c+Caq2NZgoZADBv4gAAWL7EAQCwfIkDAGDxTCz2ABi6jT3lvd0mp3f/piXeFwAAAAAAAAAwQqyUsggWOCP3yiQndMtHJblhQN2jdjtuLn3tqa2F6AsAAAAAAAAAGCFWShk/l/aUT+hb6577p5NcPoe+vpZkapZ9Jcllc+gLAAAAAAAAABghklLGzwd7yo/sV6mq1iV5UHfz31prd8y2o9baliT/2t08udtmP6f3lC+ZbV8AAAAAAAAAwGiRlDJ+Ppnku93yWQPqPS3Jim754nn0t+vYiW6b/Ty9+3hjkn+ZR38AAAAAAAAAwAiQlDJmWmtTSf5Hd/OhVfXEPlVf3H38dpK37qlCVT2uqq6rqmur6jF92nlbkut2a3P3dp6U5KHdzd/rjhEAAAAAAAAAGGOSUsbTW5L8c7f85qo6sndnVb08yROSTCX5ldba9j7tvD7JsUmOS/JHe6rQWtuR5IVJJpM8oapesVtfhyd5U3fz40n+fLY/DAAAAAAAAAAwelYu9gAYvtbaVFU9K8l7kjwxyeVV9ddJvp/k8Ul+PMldSX6ttfahAU1Vn/Lu/X2kqp6f5M1JXl9VP5nOLXoOSXJukoOT/GuSn2utTQ4a+25JLaf3lB+7274/b63dMagtAAAAAAAAAGDxVGttscfAAqmqiSTnJXl+OrfP2ZDku0k+nOSC1toVezn+8Un+b5KW5LmttX/bS/0Tk7wkyZlJjk6yJcnXklyU5O0zuW1PVc30hLx/a+3aGdYFAAAAAAAAAPYxSSkAAAAAAAAAAAzdxGIPAAAAAAAAAACA8SMpBQAAAAAAAACAoZOUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoZc1W1pqrOr6pPVdUtVbWlqi6vqj+oqvsNua9HVNVbq+qaqrqrqm6oqkuq6ux5tvvaqmrdf68a0nABAAAAAAAAgAUkKWWMVdUxST6T5IIkxyX5yyR/nGRrkt9I8pWq+okh9fWyJJ9N8otJvprktUk+kOQJSf6uqt5ZVWvm0O5Dkvz6MMYIAAAAAAAAAOw71Vpb7DGwAKpqXZJPJTk1ncSUM1prm3v2X5Dk/CRbkjy2tXbZPPp6XpKLkrQk57TW3tmz70FJPpHksCQXtdaeP4t2K8nHkzy+5+lXt9ZeNdexAgAAAAAAAAD7hpVSxtcr00lImUxyXm9CStevJ7k6yfokb5prJ1V1SJILu5sX9SakJElr7Yp0VmVJkvOq6qmzaP4F6SSkXDrX8QEAAAAAAAAAi0NSyhiqqgOTvLS7+aHW2lW712mt7czdySiPqaoz59jdy5Mc0C1f2KfOO5Js7JZfPZNGu8kur0tyU5LfmePYAAAAAAAAAIBFIillPD0jybpu+QMD6r2/p3zOHPvaddzNrbXP76lCa21Hkg93Nx9dVcfPoN3XJTk0nRVdNs1xbAAAAAAAAADAIpGUMp6e1lP+4oB6VybZdVufn5xtJ1V1cpITZtBPkvQmrJy1l3Z/NMkvJvlYa+0dsx0XAAAAAAAAALD4JKWMp1N7yt/sV6m11pJc2908rKqOWIh+uq7pKZ/Sr1JVrUryp0l2JvmPsxwPAAAAAAAAALBESEoZM1U1keTE7ubO1toteznkhp7yybPsrrf+DX1rza6flyd5WJLXt9aumOV4AAAAAAAAAIAlQlLK+FmfZFW3vGUG9XvrHDTLvg7u086c+qmq45L89yTfSvKaWY4FAAAAAAAAAFhCVi72ABi69T3l7TOov62nvGEB+5pJP3+SZP8kL26t3TXLscxYVbWFahsAlpvWWi32GGZDHAAAwzFqMUAiDgCAYREHAMDyNZc4wEop7KtAbGA/VfUzSX4qyXtaa5fskxEBAAAAAAAAAAvGSinjp/c2OWtmUH9tT3nzAvbVt5+qWpfkgm57L53lGOastcVLjK6qoY1hrm3N9LiZ1BtUp9++2Tw/zN/XXC32nM3mGHO2+PM12+P2Vncu89Vv31Kcr2GPwfvivrFrDKNqKfzunO+jd76PQxww1/2jNGeLPV+zOW6hXmP99i3F+Rr2GEZ1zkbxNTbKnO/O95kadv/jFAcsxfka9hi8xvaNxZ4zn7nNjjhgfpzvo3m+j8I1ZSZ1/d9y37QlDpidxZ6zpRpr7+n5pTRfcyEpZfxsSTKZztyum0H93lvwbJplXxv7tDPbfl6d5Jgkr2itfWeWYwAAAAAAAAAAliBJKWOmtTZdVVcleXCS1VV1aGvtlgGHHNVTvnKW3fXWP6pvrQH9VNXD0lkd5bok/1hVx+/h2CN6ygfuVmfLXn4+AAAAAAAAAGARSEoZT5emk5SSJCck2WPSRnXW2Dm+u3lra+3GOfSzywl7qdu7/7Ke8unpnIfHJblqBn2+NPe8xc9fJnnBDI4DAAAAAAAAAPYhSSnj6YNJfr5bfmSSz/apd3KSDd3yJbPtpLV2RVVdm05iy2l7qX56T7m3r48meeZejn1Ykv/RLf9tkot79l2/14ECAAAAAAAAAPucpJTx9N4kdybZP8lZSf60T72n95Qv7lNnby5O8l+THF5Vp7fWPr97hapaneSM7ubnWmvX7NrXWrs+e0ksqapNPZtXtNb+YY5jBQAAAAAAAAD2kYnFHgDD11rbmOSC7uYZVXXi7nWqalWSF3U3P9tau9dKKVV1dlXdXFWXVdVJfbp7Q5LN3fKL+9Q5N8lB3fKrZvAjAAAAAAAAAAAjrlpriz0GFkBVrU/y6XRuffOZJGe01jb37L8gyflJtiZ5XGvtK3to44YkR3Y3/7q1dm6fvl6Q5G1JWpJzWmvv7Nl3cpJ/TXJYkne01n5hDj/LE5N8rLv56tbaq2bbxm7ttSRx7o+OqkpizkaJORst5mv0LIU56xlDLdog5kAcMHqWwvnO7Jiz0WK+Rs9iz9moxgCJOGAULfb5zuyYr9FjzkbPYs+ZOIB9abHPd2bHfI0eczZalsJ8zScOcPueMdVa21JVT0/nVj4/kuTrVXVxOrf1OTPJo5JsTPKcPSWkdFWf8u59vb2qDk3y2iQXV9W5Sb6Q5Oh0VknZP8l7krxwpuOvqjPTSahJkgf07HpsVb2iW769tfbmmbYJAAAAAAAAAOw7VkoZc1W1Jp3b9Dw3yUlJ1iS5Psn7klzQWvvOgGOfleSNSW5O8rOttSv20tdp6ay+8sR0VljZlOTLSd7SWnv3LMf99iTP30u161prx8+m3W7bMqJHzFLI/mN2zNloMV+jZynM2ah+O0ocMHqWwvnO7Jiz0WK+Rs9iz9moxgCJOGAULfb5zuyYr9FjzkbPYs+ZOIB9abHPd2bHfI0eczZalsJ8zScOkJTCsiP4HD1L4Y2W2TFno8V8jZ6lMGej+kGUOGD0LIXzndkxZ6PFfI2exZ6zUY0BEnHAKFrs853ZMV+jx5yNnsWeM3EA+9Jin+/MjvkaPeZstCyF+XL7HpiDXS+cPfEGDACDr5WjThwAAP2NcwyQiAMAYBBxAAAsXwsVB0wsSKsAAAAAAAAAACxrbt/DsmOZPgCYv1FdslccAADzM6oxQCIOAID5EgcAwPI1nzjASikAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKGTlAIAAAAAAAAAwNBJSgEAAAAAAAAAYOgkpQAAAAAAAAAAMHSSUgAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhk5SCgAAAAAAAAAAQ7dysQcAi6Wq+u5rre3DkQDA0jToWjnqxAEA0N84xwCJOAAABhEHAMDytVBxgJVSAAAAAAAAAAAYOiulsGzJegaAwQZdK0f9m1PiAADob5xjgEQcAACDiAMAYPlaqDjASikAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKGTlAIAAAAAAAAAwNBJSgEAAAAAAAAAYOgkpQAAAAAAAAAAMHSSUgAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhm7lYg8AFktV9d3XWtuHIwGApWnQtXLUiQMAoL9xjgEScQAADCIOAIDla6HiACulAAAAAAAAAAAwdFZKYdmS9QwAgw26Vo76N6fEAQDQ3zjHAIk4AAAGEQcAwPK1UHGAlVIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKGTlAIAAAAAAAAAwNBJSgEAAAAAAAAAYOgkpQAAAAAAAAAAMHSSUgAAAAAAAAAAGDpJKQAAAAAAAAAADJ2kFAAAAAAAAAAAhm7lYg8AFktV9d3XWtuHIwGApWnQtXLUiQMAoL9xjgEScQAADCIOAIDla6HiACulAAAAAAAAAAAwdFZKYdmS9QwAgw26Vo76N6fEAQDQ3zjHAIk4AAAGEQcAwPK1UHGAlVIAAAAAAAAAABg6SSljrqrWVNX5VfWpqrqlqrZU1eVV9QdVdb8h9/WIqnprVV1TVXdV1Q1VdUlVnT3D4/evqmdW1f+pqn+vqluramdV3dEd85ur6jHDHDMAAAAAAAAAsDDKUmXjq6qOSfLeJA9PckOSi5NsTXJmkkcluTXJOa21jwyhr5cleV2SFUnen+TzSY5J8twk+yd5V5Lntda29zn+p5L8dZL13ac+2W3jtiTHJzkryeHdfX+W5MWttak5jrUllukDgPnYtVRfa22k1u4VBwDA/IxqDJCIAwBgvsQBALB8zScOkJQypqpqXZJPJTk1yWeSnNFa29yz/4Ik5yfZkuSxrbXL5tHX85JclKSlk+Tyzp59D0ryiSSHJbmotfb8Pm38WpI/TTKZ5Jmttffvtn9Dkr9I8nPdp367tfZ7cxyv4BMA5mlUP4gSBwDA/IxqDJCIAwBgvsQBALB8zScOcPue8fXKdBJSJpOc15uQ0vXrSa5OZ2WSN821k6o6JMmF3c2LehNSkqS1dkWS3+hunldVT91Lk/9794SUbjubk/xKkm3dp86vXWc+AAAAAAAAALDkSEoZQ1V1YJKXdjc/1Fq7avc6rbWduTsZ5TFVdeYcu3t5kgO65Qv71HlHko3d8qv71LklyVfSuc3PHrXWNiW5vLt533RWXwEAAAAAAAAAliBJKePpGUnWdcsfGFCvd0WSc+bY167jbm6tfX5PFVprO5J8uLv56Ko6fg913t1ae3hr7d/30t90T3lb31oAAAAAAAAAwKKSlDKentZT/uKAelcm2XVbn5+cbSdVdXKSE2bQT5L0JqycNdu+uv2tT/Kw7ubnWmt3zKUdAAAAAAAAAGDhSUoZT6f2lL/Zr1JrrSW5trt5WFUdsRD9dF3TUz5llv3s8voka5PsSPKf5tgGAAAAAAAAALAPrFzsATBcVTWR5MTu5s7W2i17OeSG3J0kcnKS782iu5N3a2dv/ezpuD3qropy3yQHJXl4kl9O8pgkVyT5ldbap2YxTgAAAAAAAABgH5OUMn7WJ1nVLW+ZQf3eOgfNsq+D+7QzjH5+LsnberbvSPKaJL/bWtsxs+ENVlWzPqazuAwAjJe5XBNHnTgAAJZnDJCIAwAgEQfMhjgAgHGzr+MAt+8ZP+t7yttnUH9bT3nDAvY1234+muSZSc5N8jtJvp3kt5JcX1W/PJtBAgAAAAAAAAD7npVS2FcpvrPqp7V2fZLrd21X1f9IZ6WU30zylqp6YGvtN+c1INnNAJBkbtfEUf9GlTgAAJZnDJCIAwAgEQcAwHK2r+MAK6WMn97b5KyZQf21PeXNC9jXfPpJ63hlko90n/qvVfXE2bYDAAAAAAAAAOwbklLGz5Ykk93yuhnU770Fz6ZZ9rWxTzvD7qfXhT3l8+fRDgAAAAAAAACwgCSljJnW2nSSq7qbq6vq0L0cclRP+cpZdtdb/6i+tebfT6/P9ZQfO492AAAAAAAAAIAFJCllPF3aUz6hX6Xq3Pjp+O7mra21Gxeinz3sv2yW/fS6rad8yDzaAQAAAAAAAAAWkKSU8fTBnvIjB9Q7OcmGbvmS2XbSWrsiybXdzdP2Uv30nvK9+qqqz1TV786g2wN6ynfMoD4AAAAAAAAAsAgkpYyn9ya5s1s+a0C9p/eUL55jX7uOO7yqTt9ThapaneSM7ubnWmvX7KHao5P8xAz6++Ge8nxWXAEAAAAAAAAAFpCklDHUWtuY5ILu5hlVdeLudapqVZIXdTc/21rb0+olZ1fVzVV1WVWd1Ke7NyTZ3C2/uE+dc5Mc1C2/asDQf7iqHtRvZ/d2Qy/veeqvB7QFAAAAAAAAACwiSSnj6zVJvppkVZKLqmrDbvvfkOSBSbYm+dU+bVyY5LAkD0vyO3uq0Fq7JclLupvnVdWze/dX1clJ/rC7+Y49Jb/0WJHkPVX1wN13dFdb+ZMkT+o+9ekkfzGgLQAAAAAAAABgEa1c7AGwMFprW6rq6encyudHkny9qi5O57Y+ZyZ5VJKNSZ7TWvtKn2aqT3n3vt5eVYcmeW2Si6vq3CRfSHJ0Oquk7J/kPUleOGDI/5TO7XsenORrVfWhJF9KcleSY5L8VLe9JHlfkvNaa1MD2gMAAAAAAAAAFlG11hZ7DCygqlqTzm16npvkpCRrklyfTmLHBa217ww49llJ3pjk5iQ/21q7Yi99nZbk/CRPTHJkkk1JvpzkLa21d89grA9M8swkT0jy0CT37Y53c5Lrkvx7OqutfGJvbe2ln5Ykzn0AmLvOXfWS1lrfxNWlSBwAAPMzqjFAIg4AgPkSBwDA8jWfOEBSCsuO4BMA5m9UP4gSBwDA/IxqDJCIAwBgvsQBALB8zScOcPselq1dL5w9EZgCwOBr5agTBwBAf+McAyTiAAAYRBwAAMvXQsUBEwvSKgAAAAAAAAAAy5qVUli2ZD0DwGCDrpWj/s0pcQAA9DfOMUAiDgCAQcQBALB8LVQcYKUUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKFbudgDgMVSVX33tdb24UgAYGkadK0cdeIAAOhvnGOARBwAAIOIAwBg+VqoOMBKKQAAAAAAAAAADJ2VUli2ZD0DwGCDrpWj/s0pcQAA9DfOMUAiDgCAQcQBALB8LVQcYKUUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEO3crEHAIulqvrua63tw5EAwNI06Fo56sQBANDfOMcAiTgAAAYRBwDA8rVQcYCVUgAAAAAAAAAAGDorpbBsyXoGgMEGXStH/ZtT4gAA6G+cY4BEHAAAg4gDAGD5Wqg4wEopAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEO3crEHAIulqvrua63tw5EAwNI06Fo56sQBANDfOMcAiTgAAAYRBwDA8rVQcYCVUgAAAAAAAAAAGDorpbBsyXoGgMEGXStH/ZtT4gAA6G+cY4BEHAAAg4gDAGD5Wqg4wEopAAAAAAAAAAAMnaSUMVdVa6rq/Kr6VFXdUlVbquryqvqDqrrfkPt6RFW9taquqaq7quqGqrqkqs6e4fGHVNWvVdV7qurabhtbq+pbVfWuqnpmVTlnAQAAAAAAAGAElKXKxldVHZPkvUkenuSGJBcn2ZrkzCSPSnJrknNaax8ZQl8vS/K6JCuSvD/J55Mck+S5SfZP8q4kz2utbd/DsWuSvD7JryTZL8nGJH+f5Jru9hOS/Fi3+r8leXZr7YZ5jLUllukDgPnYtVRfa22k1u4VBwDA/IxqDJCIAwBgvsQBALB8zScOkJQypqpqXZJPJTk1yWeSnNFa29yz/4Ik5yfZkuSxrbXL5tHX85JclKSlk+Tyzp59D0ryiSSHJbmotfb8PRx/RJIbu5sfS3J2a23TbnXO7fYxkeRrSU5vrd01x/EKPgFgnkb1gyhxAADMz6jGAIk4AADmSxwAAMvXfOIAt0IZX69MJyFlMsl5vQkpXb+e5Ook65O8aa6dVNUhSS7sbl7Um5CSJK21K5L8RnfzvKp66oDmtqaT1LJp9x2ttXck+dPu5kOS/Ke5jhkAAAAAAAAAWHiSUsZQVR2Y5KXdzQ+11q7avU5rbWfuTkZ5TFWdOcfuXp7kgG75wj513pHOLXmS5NUD2rqktXbzgP1v6yk/e2bDAwAAAAAAAAAWg6SU8fSMJOu65Q8MqPf+nvI5c+xr13E3t9Y+v6cKrbUdST7c3Xx0VR2/W5WtSd6Q5K176evrPeWTZjlOAAAAAAAAAGAfkpQynp7WU/7igHpXJtl1W5+fnG0nVXVykhNm0E+S9CasnNW7o7W2ubX2itbah/bSRu/5unJmowQAAAAAAAAAFoOklPF0ak/5m/0qtdZakmu7m4dV1REL0U/XNT3lU2bZzy7H9pQvnWMbAAAAAAAAAMA+ICllzFTVRJITu5s7W2u37OWQG3rKJ8+yu976N/StNf9+dnlcT/mv59gGAAAAAAAAALAPuAXK+FmfZFW3vGUG9XvrHDTLvg7u086w+9nled3HG5P8+Rzb+IGqmvUxncVlAGC8zOWaOOrEAQCwPGOARBwAAIk4YDbEAQCMm30dB1gpZfys7ylvn0H9bT3lDQvY13z6SVU9PsmPdTdf3FrbOts2AAAAAAAAAIB9x0op7KsU3zn3U1X7J3lzd/NPW2vvGcqAZDcDQJK5XRNH/RtV4gAAWJ4xQCIOAIBEHAAAy9m+jgOslDJ+em+Ts2YG9df2lDcvYF9z6qc6Z/fbkpyU5CNJXjLj0QEAAAAAAAAAi0ZSyvjZkmSyW143g/q9t+DZNMu+NvZpZ5j9vD7Js5P8e5JnttYm91IfAAAAAAAAAFgCJKWMmdbadJKrupurq+rQvRxyVE/5yll211v/qL615thPVb0qya8n+WKSM1trWwYfAQAAAAAAAAAsFZJSxtOlPeUT+lXq3hrn+O7mra21Gxeinz3sv2xvDVfVbyb5nSRfSfKU1tqmWY4NAAAAAAAAAFhEklLG0wd7yo8cUO/kJBu65Utm20lr7Yok13Y3T9tL9dN7ygP7qqqXJ/n9JF9N8hOttdt227+6qg6sqpWzGzEAAAAAAAAAsK9IShlP701yZ7d81oB6T+8pXzzHvnYdd3hVnb6nClW1OskZ3c3Ptdau6ddYVb04yRuSfD3Jk1trt+yh2nOTbEzyo3McMwAAAAAAAACwwCSljKHW2sYkF3Q3z6iqE3evU1Wrkryou/nZ1tq9Vi+pqrOr6uaquqyqTurT3RuSbO6WX9ynzrlJDuqWX9Vv3FX1q91xfyPJj7fWbu5XFwAAAAAAAABY2qq1tthjYAFU1fokn07ysCSfSXJGa21zz/4LkpyfZGuSx7XWvrKHNm5IcmR3869ba+f26esFSd6WpCU5p7X2zp59Jyf51ySHJXlHa+0XBrTxF93N1yT57oAf7zFJzkvypNbaxwfU26Oqakni3AeAuauqJElrrRZ5KLMiDgCA+RnVGCARBwDAfIkDAGD5mk8csHLoo2FJaK1tqaqnp3Mrnx9J8vWqujid2/qcmeRR6dwC5zl7Skjpqj7l3ft6e1UdmuS1SS6uqnOTfCHJ0emskrJ/kvckeeEeO6k6Nclbe/r4bzP6IQEAAAAAAACAJctKKWOuqtakc5ue5yY5KcmaJNcneV+SC1pr3xlw7LOSvDHJzUl+trV2xV76Oi2d1VeemM4KK5uSfDnJW1pr7x5w3BOTfGxmP9E9WCkFABbJqH47ShwAAPMzqjFAIg4AgPkSBwDA8jWfOEBSCsuO4BMA5m9UP4gSBwDA/IxqDJCIAwBgvsQBALB8uX0PzMGuF86eCEwBYPC1ctSJAwCgv3GOARJxAAAMIg4AgOVroeKAiQVpFQAAAAAAAACAZc1KKSxbsp4BYLBB18pR/+aUOAAA+hvnGCARBwDAIOIAAFi+FioOsFIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKGTlAIAAAAAAAAAwNCtXOwBwGKpqr77Wmv7cCQAsDQNulaOOnEAAPQ3zjFAIg4AgEHEAQCwfC1UHGClFAAAAAAAAAAAhs5KKSxbsp4BYLBB18pR/+aUOAAA+hvnGCARBwDAIOIAAFi+FioOsFIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKFbudgDgMVSVX33tdb24UgAYGkadK0cdeIAAOhvnGOARBwAAIOIAwBg+VqoOMBKKQAAAAAAAAAADJ2VUli2ZD0DwGCDrpWj/s0pcQAA9DfOMUAiDgCAQcQBALB8LVQcYKUUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEMnKQUAAAAAAAAAgKFbudgDgMVSVX33tdb24UgAYGkadK0cdeIAAOhvnGOARBwAAIOIAwBg+VqoOMBKKQAAAAAAAAAADJ2VUli2ZD0DwGCDrpWj/s0pcQAA9DfOMUAiDgCAQcQBALB8LVQcYKUUAAAAAAAAAACGTlLKmKuqNVV1flV9qqpuqaotVXV5Vf1BVd1vyH09oqreWlXXVNVdVXVDVV1SVWfPsb0XVtXtVdWq6gXDHCsAAAAAAAAAsLAkpYyxqjomyWeSXJDkuCR/meSPk2xN8htJvlJVPzGkvl6W5LNJfjHJV5O8NskHkjwhyd9V1Turas0M2zq6qj6Y5M1JDhjG+AAAAAAAAACAfavcP288VdW6JJ9Kcmo6iSlntNY29+y/IMn5SbYkeWxr7bJ59PW8JBclaUnOaa29s2ffg5J8IslhSS5qrT1/L229IMn/SrIuyTeSPKS76xdba2+f6xh366Ml7h0JAPOx6/6RrbWRuqG0OAAA5mdUY4BEHAAA8yUOAIDlaz5xgJVSxtcr00lImUxyXm9CStevJ7k6yfokb5prJ1V1SJILu5sX9SakJElr7Yp0VmVJkvOq6qkD2vrjJG9L8u0kj07yrrmOCwAAAAAAAABYXJJSxlBVHZjkpd3ND7XWrtq9TmttZ+5ORnlMVZ05x+5enrtvsXNhnzrvSLKxW371gLaOTee2P49srX1xjuMBAAAAAAAAAJYASSnj6Rnp3P4mST4woN77e8rnzLGvXcfd3Fr7/J4qtNZ2JPlwd/PRVXV8n7Z+rbX2ym59AAAAAAAAAGCESUoZT0/rKQ9aceTKJLtu6/OTs+2kqk5OcsIM+kmS3oSVs/ZUobV2y2zHAAAAAAAAAAAsTZJSxtOpPeVv9qvUWmtJru1uHlZVRyxEP13X9JRPmWU/AAAAAAAAAMCIkZQyZqpqIsmJ3c2dM1h95Iae8smz7K63/g19a82/HwAAAAAAAABgxKxc7AEwdOuTrOqWt8ygfm+dg2bZ18F92hl2PwuiqmZ9TGdxGQAYL3O5Jo46cQAALM8YIBEHAEAiDpgNcQAA42ZfxwFWShk/63vK22dQf1tPecMC9jWffgAAAAAAAACAEWOlFPZViu+SSyWW3QwAHXO5Jo76N6rEAQCwPGOARBwAAIk4AACWs30dB1gpZfz03iZnzQzqr+0pb17AvubTDwAAAAAAAAAwYiSljJ8tSSa75XUzqN97C55Ns+xrY592ht0PAAAAAAAAADBiJKWMmdbadJKrupurq+rQvRxyVE/5yll211v/qL615t8PAAAAAAAAADBiJKWMp0t7yif0q1SdGz8d3928tbV240L0s4f9l82yHwAAAAAAAABgxEhKGU8f7Ck/ckC9k5Ns6JYvmW0nrbUrklzb3TxtL9VP7ynPui8AAAAAAAAAYLRIShlP701yZ7d81oB6T+8pXzzHvnYdd3hVnb6nClW1OskZ3c3PtdaumWNfAAAAAAAAAMCIkJQyhlprG5Nc0N08o6pO3L1OVa1K8qLu5mdba/davaSqzq6qm6vqsqo6qU93b0iyuVt+cZ865yY5qFt+1Qx+BAAAAAAAAABgxElKGV+vSfLVJKuSXFRVG3bb/4YkD0yyNcmv9mnjwiSHJXlYkt/ZU4XW2i1JXtLdPK+qnt27v6pOTvKH3c137Cn5BQAAAAAAAAAYPysXewAsjNbalqp6ejq38vmRJF+vqovTua3PmUkelWRjkue01r7Sp5nqU969r7dX1aFJXpvk4qo6N8kXkhydziop+yd5T5IXDhpzVR2QeybIPLanfGa3j119/tGgtgAAAAAAAACAxVWttcUeAwuoqtakc5ue5yY5KcmaJNcneV+SC1pr3xlw7LOSvDHJzUl+trV2xV76Oi3J+UmemOTIJJuSfDnJW1pr757BWI9P8q291UuS1lrfJJkZ9NO6bcy1CQBY9qo6l+L5XJMXgzgAAOZnVGOARBwAAPMlDgCA5Ws+cYCkFJYdwScAzN+ofhAlDgCA+RnVGCARBwDAfIkDAGD5mk8c4PY9LFu7Xjh7IjAFgMHXylEnDgCA/sY5BkjEAQAwiDgAAJavhYoDJhakVQAAAAAAAAAAljUrpbBsyXoGgMEGXStH/ZtT4gAA6G+cY4BEHAAAg4gDAGD5Wqg4wEopAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZOUgoAAAAAAAAAAEO3crEHAIulqvrua63tw5EAwNI06Fo56sQBANDfOMcAiTgAAAYRBwDA8rVQcYCVUgAAAAAAAAAAGDorpbBsyXoGgMEGXStH/ZtT4gAA6G+cY4BEHAAAg4gDAGD5Wqg4wEopAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZu5WIPABZLVfXd11rbhyMBgKVp0LVy1IkDAKC/cY4BEnEAAAwiDgCA5Wuh4gArpQAAAAAAAAAAMHRWSmHZkvUMAIMNulaO+jenxAEA0N84xwCJOAAABhEHAMDytVBxgJVSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABg6SSkAAAAAAAAAAAydpBQAAAAAAAAAAIZu5WIPABZLVfXd11rbhyMBgKVp0LVy1IkDAKC/cY4BEnEAAAwiDgCA5Wuh4gArpQAAAAAAAAAAMHRWSmHZkvUMAIMNulaO+jenxAEA0N84xwCJOAAABhEHAMDytVBxgJVSAAAAAAAAAAAYOkkpY66q1lTV+VX1qaq6paq2VNXlVfUHVXW/Iff1iKp6a1VdU1V3VdUNVXVJVZ09y3aOrKrXVNVXu+O9tao+U1Uvrar9hjlmAAAAAAAAAGBhlKXKxldVHZPkvUkenuSGJBcn2ZrkzCSPSnJrknNaax8ZQl8vS/K6JCuSvD/J55Mck+S5SfZP8q4kz2utbd9LO09K8s4khyb5QpIPJlmb5OeTHJ3k0iQ/3Vq7dh5jbYll+gBgPnYt1ddaG6m1e8UBADA/oxoDJOIAAJgvcQAALF/ziQMkpYypqlqX5FNJTk3ymSRntNY29+y/IMn5SbYkeWxr7bJ59PW8JBclaekkubyzZ9+DknwiyWFJLmqtPX9AOw9N8ukkG5L8n9bai3v2rU/y4SSPSfLV7pg377GhvY9X8AkA8zSqH0SJAwBgfkY1BkjEAQAwX+IAAFi+5hMHuH3P+HplOgkpk0nO20MCx68nuTrJ+iRvmmsnVXVIkgu7mxf1JqQkSWvtiiS/0d08r6qeOqC5N6WTkHJ1kpft1s6WJC9I5+d5WDo/HwAAAAAAAACwRElKGUNVdWCSl3Y3P9Rau2r3Oq21nbk7GeUxVXXmHLt7eZIDuuUL+9R5R5KN3fKr91Shqp6S5HHdzTd1x3cPrbVvJPlQd/MlVXXwnEYMAAAAAAAAACw4SSnj6RlJ1nXLHxhQ7/095XPm2Neu425urX1+TxVaazvSufVOkjy6qo7fQ7Xn9JRnMub90/k5AQAAAAAAAIAlSFLKeHpaT/mLA+pdmWTXbX1+cradVNXJSU6YQT9J0puwctYe9u8a89buuObaDgAAAAAAAACwBEhKGU+n9pS/2a9Sa60luba7eVhVHbEQ/XRd01M+pXdHVR2WZFff17bWpufSDgAAAAAAAACwdEhKGTNVNZHkxO7mztbaLXs55Iae8smz7K63/g19a+29nxm301q7Lcn27uYDqmrFXvoFAAAAAAAAABbBysUeAEO3PsmqbnnLDOr31jloln0d3Ked2fYzm3Z21VmTzvm7IcmmGRxzL1U162M6i8sAwHiZyzVx1IkDAGB5xgCJOAAAEnHAbIgDABg3+zoOsFLK+FnfU97et9bdtvWUNyxgX4P62ZdjBgAAAAAAAAD2ASulsK9SfIfZz1Dakt0MAB1zuSaO+jeqxAEAsDxjgEQcAACJOAAAlrN9HQdYKWX89N7+Zs0M6q/tKW9ewL4G9bMvxwwAAAAAAAAA7AOSUsbPliST3fK6GdTvvXXOpln2tbFPO7PtZzbtJHf/XFORlAIAAAAAAAAAS5KklDHTWptOclV3c3VVHbqXQ47qKV85y+566x/Vt9be+5lxO1V1cJL9upvfbK1N7aVfAAAAAAAAAGARSEoZT5f2lE/oV6k6N346vrt5a2vtxoXoZw/7L+vd0Vq7OclN3c3jq2rQedm3HQAAAAAAAABg6ZCUMp4+2FN+5IB6JyfZ0C1fMttOWmtXJLm2u3naXqqf3lPeU1+7xryuO665tgMAAAAAAAAALAGSUsbTe5Pc2S2fNaDe03vKF8+xr13HHV5Vp++pQlWtTnJGd/NzrbVrBrSTzGzMdyX5x9kMFAAAAAAAAADYdySljKHW2sYkF3Q3z6iqE3evU1Wrkryou/nZ1tq9Vh2pqrOr6uaquqyqTurT3RuSbO6WX9ynzrlJDuqWX9VnzB9K8unu5q92x7f7eE5K8tTu5oWttVv79AcAAAAAAAAALDJJKePrNUm+mmRVkouqasNu+9+Q5IFJtib51T5tXJjksCQPS/I7e6rQWrslyUu6m+dV1bN791fVyUn+sLv5jj0lv/R4UZItSU5M8se7tbMuyduTrEzy9SS/N6AdAAAAAAAAAGCRVWttscfAAqmq49K5lc+pSb6bzi1y7kxyZpJHJdmY5DndVUr2dPyNSY7obv5Na+25A/p6RZLXJlmR5H1JvpDk6HRWSdk/yXuSnNta27aXMf9Ed5yHdNu4JMnaJOd027s8yU+11r61lx9/UB8tSZz7ADB3VZUkaa3VIg9lVsQBADA/oxoDJOIAAJgvcQAALF/ziQMkpYy5qlqTzgokz01yUpI1Sa5PJ3HkgtbadwYc+6wkb0xyc5Kfba1dsZe+TktyfpInJjkyyaYkX07yltbau2cx5iPTWX3lp5Mcm2Rnkm+kk6zyZ621u2baVp/2BZ8AME+j+kGUOAAA5mdUY4BEHAAA8yUOAIDlS1IKzILgEwDmb1Q/iBIHAMD8jGoMkIgDAGC+xAEAsHzNJw5YOfTRwIjY9cLZE4EpAAy+Vo46cQAA9DfOMUAiDgCAQcQBALB8LVQcMLEgrQIAAAAAAAAAsKxZKYVlS9YzAAw26Fo56t+cEgcAQH/jHAMk4gAAGEQcAADL10LFAVZKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0klIAAAAAAAAAABi6lYs9AFgsVdV3X2ttH44EAJamQdfKUScOAID+xjkGSMQBADCIOAAAlq+FigOslAIAAAAAAAAAwNBZKYVlS9YzAAw26Fo56t+cEgcAQH/jHAMk4gAAGEQcAADL10LFAVZKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0Kxd7ALBYqqrvvtbaPhwJACxNg66Vo04cAAD9jXMMkIgDAGAQcQAALF8LFQdYKQUAAAAAAAAAgKGzUgrLlqxnABhs0LVy1L85JQ4AgP7GOQZIxAEAMIg4AACWr4WKA6yUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKUAAAAAAAAAADB0Kxd7ALBYqqrvvtbaPhwJe7NrrszL6DBno8V8jZ59NWeDrpWjThwwOrxHjR5zNlrM1+jZF3M2zjFAIg4YJd6jRov5Gj3mbPSIA+ZPHDA6vEeNFvM1eszZaBn1vwlYKQUAAAAAAAAAgKGzUgrLlsw/ABhs0LVy1L85JQ4AgP7GOQZIxAEAMIg4AACWr4WKA6yUAgAAAAAAAADA0ElKGWNVNVFV51XVR6vqpqq6s6quqqoLq+rkBejvgVX1v6vqG92+bq6qj1fVL1bVrM+1qnpGVd1YVa2qXjXs8QIAAAAAAAAAC0dSypiqqgOTfDjJXyZ5eJJ3JXldkuuT/H9JvlRV5w6xv3OSfDnJS5J8t9vX3yY5JclfJPloVR00w7YOqqq/SvKPSY4Y1hgBAAAAAAAAgH1n5WIPgOGrqhVJ3pnkyUmuTvL41tqNPftfnuQNSd5eVTe11j4yz/6elOSv0jmf/nNr7Y969r0mySeSPCHJu6rqzNba5IC2zkry50mOTHJpklPnM7alatc9t4Zx/8q5tjXT42ZSb1Cdfvtm+/xiW+w5m80x5mzx52u2x+2t7lzmq9++pThfyWjNmdcY8+V8H73zfbHnbF9dUwbtH6U5W+z5ms1xC/Ua67dvKc5XYs7m8jyjy/k+Wuf7sMc0TnHAUpyvxGtsLs8vtsWeM5+5sS8530frfF/s+ZrtcT5jHq058xrrWOw5W6qx9mzHNgqslDKefinJU7rlX2k9CSlJ0lr743QSRVYmeUtVrZ5rR91j39pt619aT0JKt6/vJXlRd/PJSX55QFsvSfL+JJPd8f/PuY4LAAAAAAAAAFhcklLGTFVNJPnt7ublrbWP96n6J93H49JJYpmr5ye5f7d84Z4qtNY+luTy7uZvV2cllz25fzoJLqe01v55HmMCAAAAAAAAABaZpJTx86NJjumWPzCg3geTTHXL58yjv+d0H6eT/L8B9d7ffbxfkh/rU+c1rbUXttbumMd4AAAAAAAAAIAlQFLK+HlaT/mL/Sq11rYmuaK7+aNVdcBsO6qqdUke3938Rmtty4Dqn+8pn9VnTLfMdgwAAAAAAAAAwNIkKWX8nNpT/uZe6l7TfVyR5CFz6Osh3WNn01eSnDKHvgAAAAAAAACAESIpZfyc3FO+YS91e/ef3LfW0ugLAAAAAAAAABghKxd7AAzdwT3lQbfT2X3/QUu8r6GrqsUewlDHMNe2ZnrcTOoNqtNv32yeN2ezO8acLf58zfa4vdWdy3z127cU52vYY/C+yCBL4XfnfB+9832x52xfXVMG7R+lOVvs+ZrNcQv1Guu3bynO17DHMKpzNkqvsVG2FH53zvfROt+H3f84xQFLcb6GPQavsX1jsefMZ27Lx1L43TnfR+t8X+z5mu1xPmMerTnzGhv+GBb7fXGhP3NbCvM1F1ZKGT/re8rb91J3W095wz7sa33fWgAAAAAAAADAWLBSyiKoqgcNo53W2hXzbWIY41iCfQ3UWhvNFDIAYN7EAQCwfIkDAGD5EgcAwOKRlLI4vj6kdvYURG3J3bfHWZPBK5is7SlvnkP/vbfkWbOXur197e1WPwAAAAAAAADAiHP7nvGzsae8t9vk9O7ftMT7AgAAAAAAAABGiJVSFsECLxN3ZZITuuWjktwwoO5Rux03l7721NZC9AUAAAAAAAAAjBArpYyfS3vKJ/Stdc/900kun0NfX0syNcu+kuSyOfQFAAAAAAAAAIwQSSnj54M95Uf2q1RV65I8qLv5b621O2bbUWttS5J/7W6e3G2zn9N7ypfMti8AAAAAAAAAYLRIShk/n0zy3W75rAH1npZkRbd88Tz623XsRLfNfp7efbwxyb/Moz8AAAAAAAAAYARIShkzrbWpJP+ju/nQqnpin6ov7j5+O8lb91Shqh5XVddV1bVV9Zg+7bwtyXW7tbl7O09K8tDu5u91xwgAAAAAAAAAjDFJKePpLUn+uVt+c1Ud2buzql6e5AlJppL8Smtte592Xp/k2CTHJfmjPVVore1I8sIkk0meUFWv2K2vw5O8qbv58SR/PtsfBgAAAAAAAAAYPSsXewAMX2ttqqqeleQ9SZ6Y5PKq+usk30/y+CQ/nuSuJL/WWvvQgKaqT3n3/j5SVc9P8uYkr6+qn0znFj2HJDk3ycFJ/jXJz7XWJgeNfbekltN7yo/dbd+ft9buGNQWAAAAAAAAALB4qrW22GNggVTVRJLzkjw/ndvnbEjy3SQfTnJBa+2KvRz/+CT/N0lL8tzW2r/tpf6JSV6S5MwkRyfZkuRrSS5K8vaZ3LanqmZ6Qt6/tXbtDOsCAAAAAAAAAPuYpBQAAAAAAAAAAIZuYrEHAAAAAAAAAADA+JGUAgAAAAAAAADA0ElKAQAAAAAAAABg6CSlAAAAAAAAAAAwdJJSAAAAAAAAAAAYOkkpAAAAAAAAAAAMnaQUAAAAAAAAAACGTlIKAAAAAAAAAABDJykFAAAAAAAAAIChk5QCAAAAAAAAAMDQSUoBAAAAAAAAAGDoJKWMuapaU1XnV9WnquqWqtpSVZdX1R9U1f2G3NcjquqtVXVNVd1VVTdU1SVVdfY8231tVbXuv1cNabgAAAAAAAAAwAKSlDLGquqYJJ9JckGS45L8ZZI/TrI1yW8k+UpV/cSQ+npZks8m+cUkX03y2iQfSPKEJH9XVe+sqjVzaPchSX59GGMEAAAAAAAAAPadaq0t9hhYAFW1LsmnkpyaTmLKGa21zT37L0hyfpItSR7bWrtsHn09L8lFSVqSc1pr7+zZ96Akn0hyWJKLWmvPn0W7leTjSR7f8/SrW2uvmutYAQAAAAAAAIB9w0op4+uV6SSkTCY5rzchpevXk1ydZH2SN821k6o6JMmF3c2LehNSkqS1dkU6q7IkyXlV9dRZNP+CdBJSLp3r+AAAAAAAAACAxSEpZQxV1YFJXtrd/FBr7ard67TWdubuZJTHVNWZc+zu5UkO6JYv7FPnHUk2dsuvnkmj3WSX1yW5KcnvzHFsAAAAAAAAAMAikZQynp6RZF23/IEB9d7fUz5njn3tOu7m1trn91ShtbYjyYe7m4+uquNn0O7rkhyazooum+Y4NgAAAAAAAABgkUhKGU9P6yl/cUC9K5Psuq3PT862k6o6OckJM+gnSXoTVs7aS7s/muQXk3ystfaO2Y4LAAAAAAAAAFh8klLG06k95W/2q9Raa0mu7W4eVlVHLEQ/Xdf0lE/pV6mqViX50yQ7k/zHWY4HAAAAAAAAAFgiJKWMmaqaSHJid3Nna+2WvRxyQ0/55Fl211v/hr61ZtfPy5M8LMnrW2tXzHI8AAAAAAAAAMASsXKxB8DQrU+yqlveMoP6vXUOmmVfB/dpZ079VNVxSf57km8lec0sxzJjVdUWqm0AWG5aa7XYY5gNcQAADMeoxQCJOAAAhkUcAADL11ziACuljJ/1PeXtM6i/rae8YQH7mkk/f5Jk/yQvbq3dNcuxAAAAAAAAAABLiJVS2FfZwQP7qaqfSfJTSd7TWrtknwyoLV5idFUNbQxzbWumx82k3qA6/fbN5vlh/r7marHnbDbHmLPFn6/ZHre3unOZr377luJ8DXsM3hf3jV1jGFVL4XfnfB+9830c4oC57h+lOVvs+ZrNcQv1Guu3bynO17DHMKpzNoqvsVHmfHe+z9Sw+x+nOGApztewx+A1tm8s9pz5zG12xAHz43wfzfN9FK4pM6nr/5b7pi1xwOws9pwt1Vh7T88vpfmaCyuljJ/e2+SsmUH9tT3lzQvYV99+qmpdkgu67b10lmMAAAAAAAAAAJYgK6WMny1JJtOZ23UzqN97C55Ns+xrY592ZtvPq5Mck+QVrbXvzHIMAAAAAAAAAMASJCllzLTWpqvqqiQPTrK6qg5trd0y4JCjespXzrK73vpH9a01oJ+qelg6q6Ncl+Qfq+r4PRx7RE/5wN3qbNnLzwcAAAAAAAAALAJJKePp0nSSUpLkhCR7TNqozo2fju9u3tpau3EO/exywl7q9u6/rKd8ejrn4XFJrppBny/NPW/x85dJXjCD4wAAAAAAAACAfUhSynj6YJKf75YfmeSzfeqdnGRDt3zJbDtprV1RVdemk9hy2l6qn95T7u3ro0meuZdjH5bkf3TLf5vk4p591+91oAAAAAAAAADAPicpZTy9N8mdSfZPclaSP+1T7+k95Yv71Nmbi5P81ySHV9XprbXP716hqlYnOaO7+bnW2jW79rXWrs9eEkuqalPP5hWttX+Y41gBAAAAAAAAgH1kYrEHwPC11jYmuaC7eUZVnbh7napaleRF3c3PttbutVJKVZ1dVTdX1WVVdVKf7t6QZHO3/OI+dc5NclC3/KoZ/Ahjr7WW1tqitjXT42ZSb1Cdfvtm+/xiW+w5m80x5mzx52u2x+2t7lzmq9++pThfyWjNmdcY8+V8H73zfbHnbF9dUwbtH6U5W+z5ms1xC/Ua67dvKc5XYs7m8jyjy/k+Wuf7sMc0TnHAUpyvxGtsLs8vtsWes2G+xvZWZ1zmjLlzvo/W+b7Y8zXb4+YTB/i/5fDaEgfMzmLP2VKNtWc7tlEgKWV8vSbJV5OsSnJRVW3Ybf8bkjwwydYkv9qnjQuTHJbO7XN+Z08VWmu3JHlJd/O8qnp27/6qOjnJH3Y339H2kPwCAAAAAAAAAIwft+8ZU621LVX19HRu5fMjSb5eVRenc1ufM5M8KsnGJM9prX2lTzPVp7x7X2+vqkOTvDbJxVV1bpIvJDk6nVVS9k/yniQvnOn4q+rMdJJhkuQBPbseW1Wv6JZvb629eaZtAgAAAAAAAAD7To3Tsi/cW1WtSec2Pc9NclKSNUmuT/K+JBe01r4z4NhnJXljkpuT/Gxr7Yq99HVakvOTPDHJkUk2Jflykre01t49y3G/Pcnz91Ltutba8bNpt9t2SzJWSx6Nu6pOTpQ5Gx3mbLSYr9GzFOasZwx9E1eXInHA6FkK5zuzY85Gi/kaPYs9Z6MaAyTigFG02Oc7s2O+Ro85Gz2LPWfiAPalxT7fmR3zNXrM2WhZCvM1nzhAUgrLjuBz9CyFN1pmx5yNFvM1epbCnI3qB1HigNGzFM53ZsecjRbzNXoWe85GNQZIxAGjaLHPd2bHfI0eczZ6FnvOxAHsS4t9vjM75mv0mLPRshTmaz5xgNv3sGzteuHsiTdgABh8rRx14gAA6G+cY4BEHAAAg4gDAGD5Wqg4QFIKsOT5z8DoMWejxXyNHnPGcuJ8Hz3mbLSYr9FjzlhOnO+jxXyNHnM2eswZy4nzfbSYr9FjzkbLqM+XpBSWrVF/8QLAQht0rRz1b06JAwCgv3GOARJxAAAMIg4AgOVroeKAiTkfCQAAAAAAAAAAfUhKAQAAAAD4/9v793DbzrI++P/esCGEJJRTOCOIhKBIGjkUAS1QFcOxBRQ5SKAKavsCFvC9UF5bRKUoiG3TeEBFMBaagqU/OYpFi4qIiJzCIcgpogZNA4kkIUACz++POTZ7ZLHmXHOtNdaac4z5+VzXvvYYcz5zPM+e955rfpPr3s8AAABgcJpSAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHBHVr0AWJWqmvtca+0QVwIA62nRd+XYyQEAMN+UM0AiBwDAInIAAGyug8oBdkoBAAAAAAAAAGBwdkphY+l6BoDFFn1Xjv1fTskBADDflDNAIgcAwCJyAABsroPKAXZKAQAAAAAAAABgcJpSAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABndk1QuAVamquc+11g5xJQCwnhZ9V46dHAAA8005AyRyAAAsIgcAwOY6qBxgpxQAAAAAAAAAAAZnpxQ2lq5nAFhs0Xfl2P/llBwAAPNNOQMkcgAALCIHAMDmOqgcYKcUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABqcpBQAAAAAAAACAwWlKAQAAAAAAAABgcEdWvQBYlaqa+1xr7RBXAgDradF35djJAQAw35QzQCIHAMAicgAAbK6DygF2SgEAAAAAAAAAYHB2SmFj6XoGgMUWfVeO/V9OyQEAMN+UM0AiBwDAInIAAGyug8oBdkoBAAAAAAAAAGBwmlImrqqOq6qnVdXbq+riqrq8qj5YVT9XVbceeK5vqaqXVtUnqurKqrqwqt5YVY9c8vXXr6pHVNUvVdWfV9Vnquqqqvpct+Zfr6p7D7lmAAAAAAAAAOBglK3KpquqbpvktUlOT3JhknOTXJHkjCT3TPKZJI9prb1lgLmekeSFSa6d5PVJ3pXktkkel+T6SV6d5AmttS/Oef3DkrwyyYndQ2/rrvHZJLdP8pAkN++e+9UkT22tfXmPa22JbfoAYD+ObtXXWhvV3r1yAADsz1gzQCIHAMB+yQEAsLn2kwM0pUxUVZ2Q5O1JTkvyjiQPbK1d1nv+rCRPS3J5kvu01s7bx1xPSHJOkpZZk8ures/dOckfJzk5yTmttSfOucaPJPmVJFcneURr7fVbnj8pyW8m+Z7uoX/fWvvZPa5X+ASAfRrr/4iSAwBgf8aaARI5AAD2Sw4AgM21nxzg9j3T9ZzMGlKuTnJmvyGl86wkH8tsZ5KX7HWSqrpJkrO703P6DSlJ0lo7P8mzu9Mzq+q7d7jkf9nakNJd57IkT0nyhe6hp9XRv/kAAAAAAAAAwNrRlDJBVXXDJD/anb65tfbRrWNaa1flWDPKvavqjD1O98wkN+iOz54z5hVJLumOnzdnzMVJ3pfZbX621Vq7NMkHu9ObZbb7CgAAAAAAAACwhjSlTNPDk5zQHb9hwbj+jiSP2eNcR193UWvtXdsNaK19Kcnvd6f3qqrbbzPmd1prp7fW/nyH+b7SO/7C3FEAAAAAAAAAwEppSpmmB/WO371g3EeSHL2tz4N3O0lVnZrkDkvMkyT9hpWH7Haubr4Tk3xzd/oXrbXP7eU6AAAAAAAAAMDB05QyTaf1jj8+b1BrrSW5oDs9uapucRDzdD7RO77rLuc56kVJjk/ypST/bo/XAAAAAAAAAAAOwZFVL4BhVdW1kpzSnV7VWrt4h5dcmGNNIqcm+ftdTHfqluvsNM92r9tWtyvKzZLcKMnpSX4wyb2TnJ/kKa21t+9inQAAAAAAAADAIdOUMj0nJrlOd3z5EuP7Y260y7luPOc6Q8zzPUle1jv/XJLnJ/np1tqXllveYlW169fMNpcBgGnZy3fi2MkBALCZGSCRAwAgkQN2Qw4AYGoOOwe4fc/0nNg7/uIS47/QOz7pAOfa7Tx/mOQRSR6f5LlJ/ibJ/5fkU1X1g7tZJAAAAAAAAABw+OyUwmG1+O5qntbap5J86uh5Vf1MZjul/ESS36iqO7bWfmJfC9LdDABJ9vadOPZ/USUHAMBmZoBEDgCARA4AgE122DnATinT079NznFLjD++d3zZAc61n3nSZp6T5C3dQz9eVfff7XUAAAAAAAAAgMOhKWV6Lk9ydXd8whLj+7fguXSXc10y5zpDz9N3du/4afu4DgAAAAAAAABwgDSlTExr7StJPtqdXreqbrrDS27VO/7ILqfrj7/V3FH7n6fvL3rH99nHdQAAAAAAAACAA6QpZZre3zu+w7xBNbvx0+2708+01j59EPNs8/x5u5yn77O945vs4zoAAAAAAAAAwAHSlDJNb+od333BuFOTnNQdv3G3k7TWzk9yQXd6tx2G36N3/DVzVdU7quqnl5j2Br3jzy0xHgAAAAAAAABYAU0p0/TaJJ/vjh+yYNxDe8fn7nGuo6+7eVXdY7sBVXXdJA/sTv+itfaJbYbdK8l3LjHfP+sd72fHFQAAAAAAAADgAGlKmaDW2iVJzupOH1hVp2wdU1XXSfLD3ek7W2vb7V7yyKq6qKrOq6o7zZnuxUku646fOmfM45PcqDv+qQVL/2dVded5T3a3G3pm76FXLrgWAAAAAAAAALBCmlKm6/lJPpDkOknOqaqTtjz/4iR3THJFkh+ac42zk5yc5JuTPHe7Aa21i5M8vTs9s6oe3X++qk5N8vPd6Su2a37puXaS11TVHbc+0e228l+TPKB76M+S/OaCawEAAAAAAAAAK3Rk1QvgYLTWLq+qh2Z2K59vTfLhqjo3s9v6nJHknkkuSfLY1tr75lym5hxvnevlVXXTJC9Icm5VPT7JXya5TWa7pFw/yWuSPHnBkv93Zrfv+cYkH6qqNyd5T5Irk9w2ycO66yXJ65Kc2Vr78oLrAQAAAAAAAAArVK21Va+BA1RVx2V2m57HJblTkuOSfCqzxo6zWmt/u+C135vkl5NclORRrbXzd5jrbkmeluT+SW6Z5NIk703yG62131lirXdM8ogk90tylyQ369Z7WZK/TvLnme228sc7XWuHeVqS+LsPAHs3u6te0lqb27i6juQAANifsWaARA4AgP2SAwBgc+0nB2hKYeMInwCwf2P9H1FyAADsz1gzQCIHAMB+yQEAsLn2kwPcvoeNdfSDsx3BFAAWf1eOnRwAAPNNOQMkcgAALCIHAMDmOqgccK0DuSoAAAAAAAAAABvNTilsLF3PALDYou/Ksf/LKTkAAOabcgZI5AAAWEQOAIDNdVA5wE4pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIPTlAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAgzuy6gXAqlTV3Odaa4e4EgBYT4u+K8dODgCA+aacARI5AAAWkQMAYHMdVA6wUwoAAAAAAAAAAIOzUwobS9czACy26Lty7P9ySg4AgPmmnAESOQAAFpEDAGBzHVQOsFMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIPTlAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwuCOrXgCsSlXNfa61dogrAYD1tOi7cuzkAACYb8oZIJEDAGAROQAANtdB5QA7pQAAAAAAAAAAMDg7pbCxdD0DwGKLvivH/i+n5AAAmG/KGSCRAwBgETkAADbXQeUAO6UAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIPTlAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACDO7LqBcCqVNXc51prh7gSAFhPi74rx04OAID5ppwBEjkAABaRAwBgcx1UDrBTCgAAAAAAAAAAg7NTChtL1zMALLbou3Ls/3JKDgCA+aacARI5AAAWkQMAYHMdVA6wUwoAAAAAAAAAAIPTlDJxVXVcVT2tqt5eVRdX1eVV9cGq+rmquvXAc31LVb20qj5RVVdW1YVV9caqeuSSr79JVf1IVb2mqi7ornFFVX2yql5dVY+oKn9nAQAAAAAAAGAEylZl01VVt03y2iSnJ7kwyblJrkhyRpJ7JvlMkse01t4ywFzPSPLCJNdO8vok70py2ySPS3L9JK9O8oTW2he3ee1xSV6U5ClJrpfkkiT/K8knuvP7Jfn2bvifJnl0a+3Cfay1JbbpA4D9OLpVX2ttVHv3ygEAsD9jzQCJHAAA+yUHAMDm2k8O0JQyUVV1QpK3JzktyTuSPLC1dlnv+bOSPC3J5Unu01o7bx9zPSHJOUlaZk0ur+o9d+ckf5zk5CTntNaeuM3rb5Hk093p/0nyyNbapVvGPL6b41pJPpTkHq21K/e4XuETAPZprP8jSg4AgP0ZawZI5AAA2C85AAA2135ygFuhTNdzMmtIuTrJmf2GlM6zknwsyYlJXrLXSarqJknO7k7P6TekJElr7fwkz+5Oz6yq715wuSsya2q5dOsTrbVXJPmV7vSbkvy7va4ZAAAAAAAAADh4mlImqKpumORHu9M3t9Y+unVMa+2qHGtGuXdVnbHH6Z6Z5Abd8dlzxrwis1vyJMnzFlzrja21ixY8/7Le8aOXWx4AAAAAAAAAsAqaUqbp4UlO6I7fsGDc63vHj9njXEdfd1Fr7V3bDWitfSnJ73en96qq228ZckWSFyd56Q5zfbh3fKddrhMAAAAAAAAAOESaUqbpQb3jdy8Y95EkR2/r8+DdTlJVpya5wxLzJEm/YeUh/Sdaa5e11n6stfbmHa7R//t6ZLlVAgAAAAAAAACroCllmk7rHX983qDWWktyQXd6clXd4iDm6Xyid3zXXc5z1Nf1jt+/x2sAAAAAAAAAAIdAU8rEVNW1kpzSnV7VWrt4h5dc2Ds+dZfT9cdfOHfU/uc56r6941fu8RoAAAAAAAAAwCFwC5TpOTHJdbrjy5cY3x9zo13OdeM51xl6nqOe0P3+6SS/tsdrfFVV7fo1s81lAGBa9vKdOHZyAABsZgZI5AAASOSA3ZADAJiaw84BdkqZnhN7x19cYvwXescnHeBc+5knVfXPk3x7d/rU1toVu70GAAAAAAAAAHB47JTCYbX47nmeqrp+kl/vTn+ltfaaQRakuxkAkuztO3Hs/6JKDgCAzcwAiRwAAIkcAACb7LBzgJ1Spqd/m5zjlhh/fO/4sgOca0/z1Oxv98uS3CnJW5I8fenVAQAAAAAAAAAroyllei5PcnV3fMIS4/u34Ll0l3NdMuc6Q87zoiSPTvLnSR7RWrt6h/EAAAAAAAAAwBrQlDIxrbWvJPlod3rdqrrpDi+5Ve/4I7ucrj/+VnNH7XGeqvqpJM9K8u4kZ7TWLl/8CgAAAAAAAABgXWhKmab3947vMG9Qd2uc23enn2mtffog5tnm+fN2unBV/USS5yZ5X5Lvaq1dusu1AQAAAAAAAAArpCllmt7UO777gnGnJjmpO37jbidprZ2f5ILu9G47DL9H73jhXFX1zCT/MckHknxna+2zW56/blXdsKqO7G7FAAAAAAAAAMBh0ZQyTa9N8vnu+CELxj20d3zuHuc6+rqbV9U9thtQVddN8sDu9C9aa5+Yd7GqemqSFyf5cJLvaK1dvM2wxyW5JMm37XHNAAAAAAAAAMAB05QyQa21S5Kc1Z0+sKpO2Tqmqq6T5Ie703e21r5m95KqemRVXVRV51XVneZM9+Ikl3XHT50z5vFJbtQd/9S8dVfVD3Xr/qsk/6K1dtG8sQAAAAAAAADAeqvW2qrXwAGoqhOT/FmSb07yjiQPbK1d1nv+rCRPS3JFkvu21t63zTUuTHLL7vSVrbXHz5nrSUlelqQleUxr7VW9505N8idJTk7yitba9y+4xm92p89P8ncL/nj3TnJmkge01t66YNy2qqolib/7ALB3VZUkaa3VipeyK3IAAOzPWDNAIgcAwH7JAQCwufaTA44MvhrWQmvt8qp6aGa38vnWJB+uqnMzu63PGUnumdktcB67XUNKp+Ycb53r5VV10yQvSHJuVT0+yV8muU1mu6RcP8lrkjx520mqTkvy0t4cP7nUHxIAAAAAAAAAWFt2Spm4qjous9v0PC7JnZIcl+RTSV6X5KzW2t8ueO33JvnlJBcleVRr7fwd5rpbZruv3D+zHVYuTfLeJL/RWvudBa+7f5L/s9yf6BrslAIAKzLWfx0lBwDA/ow1AyRyAADslxwAAJtrPzlAUwobR/gEgP0b6/+IkgMAYH/GmgESOQAA9ksOAIDN5fY9sAdHPzjbEUwBYPF35djJAQAw35QzQCIHAMAicgAAbK6DygHXOpCrAgAAAAAAAACw0eyUwsbS9QwAiy36rhz7v5ySAwBgvilngEQOAIBF5AAA2FwHlQPslAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADC4I6teAKxKVc19rrV2iCsBgPW06Lty7OQAAJhvyhkgkQMAYBE5AAA210HlADulAAAAAAAAAAAwODulsLF0PQPAYou+K8f+L6fkAACYb8oZIJEDAGAROQAANtdB5QA7pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIM7suoFwKpU1dznWmuHuBIAWE+LvivHTg4AgPmmnAESOQAAFpEDAGBzHVQOsFMKAAAAAAAAAACDs1MKG0vXMwAstui7cuz/ckoOAID5ppwBEjkAABaRAwBgcx1UDrBTCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIPTlAIAAAAAAAAAwOA0pQAAAAAAAAAAMLgjq14ArEpVzX2utXaIKwGA9bTou3Ls5AAAmG/KGSCRAwBgETkAADbXQeUAO6UAAAAAAAAAADA4O6WwsXQ9A8Bii74rx/4vp+QAAJhvyhkgkQMAYBE5AAA210HlADulAAAAAAAAAAAwOE0pE1dVx1XV06rq7VV1cVVdXlUfrKqfq6pbDzzXt1TVS6vqE1V1ZVVdWFVvrKpH7vF6T66qf6yqVlVPGnKtAAAAAAAAAMDB0pQyYVV12yTvSHJWktsl+a0kv5jkiiTPTvK+qvrOgeZ6RpJ3JvnXST6Q5AVJ3pDkfkn+Z1W9qqqOW/Jat6mqNyX59SQ3GGJ9AAAAAAAAAMDhKvfPm6aqOiHJ25OcllljygNba5f1nj8rydOSXJ7kPq218/Yx1xOSnJOkJXlMa+1VvefunOSPk5yc5JzW2hN3uNaTkvznJCck+ask39Q99a9bay/f6xq3zNES944EgP04ev/I1tqobigtBwDA/ow1AyRyAADslxwAAJtrPznATinT9ZzMGlKuTnJmvyGl86wkH0tyYpKX7HWSqrpJkrO703P6DSlJ0lo7P7NdWZLkzKr67gXX+sUkL0vyN0nuleTVe10XAAAAAAAAALBamlImqKpumORHu9M3t9Y+unVMa+2qHGtGuXdVnbHH6Z6ZY7fYOXvOmFckuaQ7ft6Ca31dZrf9uXtr7d17XA8AAAAAAAAAsAY0pUzTwzO7/U2SvGHBuNf3jh+zx7mOvu6i1tq7thvQWvtSkt/vTu9VVbefc60faa09pxsPAAAAAAAAAIyYppRpelDveNGOIx9JcvS2Pg/e7SRVdWqSOywxT5L0G1Yest2A1trFu10DAAAAAAAAALCeNKVM02m944/PG9Raa0ku6E5PrqpbHMQ8nU/0ju+6y3kAAAAAAAAAgJHRlDIxVXWtJKd0p1ctsfvIhb3jU3c5XX/8hXNH7X8eAAAAAAAAAGBkjqx6AQzuxCTX6Y4vX2J8f8yNdjnXjedcZ+h5DkRV7fo1s81lAGBa9vKdOHZyAABsZgZI5AAASOSA3ZADAJiaw84BdkqZnhN7x19cYvwXescnHeBc+5kHAAAAAAAAABgZO6VwWC2+a9dKrLsZAGb28p049n9RJQcAwGZmgEQOAIBEDgCATXbYOcBOKdPTv03OcUuMP753fNkBzrWfeQAAAAAAAACAkdGUMj2XJ7m6Oz5hifH9W/Bcusu5LplznaHnAQAAAAAAAABGRlPKxLTWvpLko93pdavqpju85Fa944/scrr++FvNHbX/eQAAAAAAAACAkdGUMk3v7x3fYd6gmt346fbd6Wdaa58+iHm2ef68Xc4DAAAAAAAAAIyMppRpelPv+O4Lxp2a5KTu+I27naS1dn6SC7rTu+0w/B69413PBQAAAAAAAACMi6aUaXptks93xw9ZMO6hveNz9zjX0dfdvKrusd2Aqrpukgd2p3/RWvvEHucCAAAAAAAAAEZCU8oEtdYuSXJWd/rAqjpl65iquk6SH+5O39la+5rdS6rqkVV1UVWdV1V3mjPdi5Nc1h0/dc6Yxye5UXf8U0v8EQAAAAAAAACAkdOUMl3PT/KBJNdJck5VnbTl+RcnuWOSK5L80JxrnJ3k5CTfnOS52w1orV2c5Ond6ZlV9ej+81V1apKf705fsV3zCwAAAAAAAAAwPUdWvQAORmvt8qp6aGa38vnWJB+uqnMzu63PGUnumeSSJI9trb1vzmVqzvHWuV5eVTdN8oIk51bV45P8ZZLbZLZLyvWTvCbJkxetuapukGs2yNynd3xGN8fROX9h0bUAAAAAAAAAgNWq1tqq18ABqqrjMrtNz+OS3CnJcUk+leR1Sc5qrf3tgtd+b5JfTnJRkke11s7fYa67JXlakvsnuWWSS5O8N8lvtNZ+Z4m13j7JJ3calySttblNMkvM07pr7PUSALDxqmZfxfv5Tl4FOQAA9mesGSCRAwBgv+QAANhc+8kBmlLYOMInAOzfWP9HlBwAAPsz1gyQyAEAsF9yAABsrv3kALfvYWMd/eBsRzAFgMXflWMnBwDAfFPOAIkcAACLyAEAsLkOKgdc60CuCgAAAAAAAADARrNTChtL1zMALLbou3Ls/3JKDgCA+aacARI5AAAWkQMAYHMdVA6wUwoAAAAAAAAAAIPTlAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgjqx6AbAqVTX3udbaIa4EANbTou/KsZMDAGC+KWeARA4AgEXkAADYXAeVA+yUAgAAAAAAAADA4OyUwsbS9QwAiy36rhz7v5ySAwBgvilngEQOAIBF5AAA2FwHlQPslAIAAAAAAAAAwOA0pQAAAAAAAAAAMDhNKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAzuyKoXAKtSVXOfa60d4koAYD0t+q4cOzkAAOabcgZI5AAAWEQOAIDNdVA5wE4pAAAAAAAAAAAMzk4pbCxdzwCw2KLvyrH/yyk5AADmm3IGSOQAAFhEDgCAzXVQOcBOKQAAAAAAAAAADE5TCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlAAAAAAAAAAAwOE0pAAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADA4TSkAAAAAAAAAAAxOUwoAAAAAAAAAAIM7suoFwKpU1dznWmuHuBIAWE+LvivHTg4AgPmmnAESOQAAFpEDAGBzHVQOsFMKAAAAAAAAAACDs1MKG0vXMwAstui7cuz/ckoOAID5ppwBEjkAABaRAwBgcx1UDrBTCgAAAAAAAAAAg9OUAgAAAAAAAADA4DSlTFxVHVdVT6uqt1fVxVV1eVV9sKp+rqpuPfBc31JVL62qT1TVlVV1YVW9saoeucvr3LKqnl9VH+jW+5mqekdV/WhVXW/INQMAAAAAAAAAB6PcP2+6quq2SV6b5PQkFyY5N8kVSc5Ics8kn0nymNbaWwaY6xlJXpjk2klen+RdSW6b5HFJrp/k1Ume0Fr74g7XeUCSVyW5aZK/TPKmJMcn+b4kt0ny/iT/srV2wT7W2hL3jgSA/Th6/8jW2qhuKC0HAMD+jDUDJHIAAOyXHAAAm2s/OUBTykRV1QlJ3p7ktCTvSPLA1tplvefPSvK0JJcnuU9r7bx9zPWEJOckaZk1ubyq99ydk/xxkpOTnNNae+KC69wlyZ8lOSnJL7XWntp77sQkv5/k3kk+0K35sm0vtPN6hU8A2Kex/o8oOQAA9mesGSCRAwBgv+QAANhc+8kBbt8zXc/JrCHl6iRnbtPA8awkH0tyYpKX7HWSqrpJkrO703P6DSlJ0lo7P8mzu9Mzq+q7F1zuJZk1pHwsyTO2XOfyJE/K7M/zzZn9+QAAAAAAAACANaUpZYKq6oZJfrQ7fXNr7aNbx7TWrsqxZpR7V9UZe5zumUlu0B2fPWfMK5Jc0h0/b7sBVfVdSe7bnb6kW981tNb+Ksmbu9OnV9WN97RiAAAAAAAAAODAaUqZpocnOaE7fsOCca/vHT9mj3Mdfd1FrbV3bTegtfalzG69kyT3qqrbbzPssb3jZdZ8/cz+nAAAAAAAAADAGtKUMk0P6h2/e8G4jyQ5elufB+92kqo6NckdlpgnSfoNKw/Z5vmja76iW9derwMAAAAAAAAArAFNKdN0Wu/44/MGtdZakgu605Or6hYHMU/nE73ju/afqKqTkxyd+4LW2lf2ch0AAAAAAAAAYH1oSpmYqrpWklO606taaxfv8JILe8en7nK6/vgL547aeZ6lr9Na+2ySL3an31BV195hXgAAAAAAAABgBY6segEM7sQk1+mOL19ifH/MjXY5143nXGe38+zmOkfHHJfZ39+Tkly6xGu+RlXt+jWzzWUAYFr28p04dnIAAGxmBkjkAABI5IDdkAMAmJrDzgF2SpmeE3vHX5w76pgv9I5POsC5Fs1zmGsGAAAAAAAAAA6BnVI4rBbfIecZ5Fq6mwFgZi/fiWP/F1VyAABsZgZI5AAASOQAANhkh50D7JQyPf3b3xy3xPjje8eXHeBci+Y5zDUDAAAAAAAAAIdAU8r0XJ7k6u74hCXG92+dc+ku57pkznV2O89urpMc+3N9OZpSAAAAAAAAAGAtaUqZmNbaV5J8tDu9blXddIeX3Kp3/JFdTtcff6u5o3aeZ+nrVNWNk1yvO/14a+3LO8wLAAAAAAAAAKyAppRpen/v+A7zBtXsxk+3704/01r79EHMs83z5/WfaK1dlOQfutPbV9Wiv5dzrwMAAAAAAAAArA9NKdP0pt7x3ReMOzXJSd3xG3c7SWvt/CQXdKd322H4PXrH2811dM0ndOva63UAAAAAAAAAgDWgKWWaXpvk893xQxaMe2jv+Nw9znX0dTevqntsN6Cqrpvkgd3pX7TWPrHgOslya74yye/uZqEAAAAAAAAAwOHRlDJBrbVLkpzVnT6wqk7ZOqaqrpPkh7vTd7bWvmbXkap6ZFVdVFXnVdWd5kz34iSXdcdPnTPm8Ulu1B3/1Jw1vznJn3WnP9Stb+t67pTku7vTs1trn5kzHwAAAAAAAACwYppSpuv5ST6Q5DpJzqmqk7Y8/+Ikd0xyRZIfmnONs5OcnOSbkzx3uwGttYuTPL07PbOqHt1/vqpOTfLz3ekrtmt+6fnhJJcnOSXJL265zglJXp7kSJIPJ/nZBdcBAAAAAAAAAFasWmurXgMHpKpul9mtfE5L8neZ3SLn80nOSHLPJJckeWy3S8l2r/90klt0p/+9tfa4BXP9WJIXJLl2ktcl+cskt8lsl5TrJ3lNkse31r6ww5q/s1vnTbprvDHJ8Uke013vg0ke1lr75A5//EVztCTxdx8A9q6qkiSttVrxUnZFDgCA/RlrBkjkAADYLzkAADbXfnKAppSJq6rjMtuB5HFJ7pTkuCSfyqxx5KzW2t8ueO33JvnlJBcleVRr7fwd5rpbkqcluX+SWya5NMl7k/xGa+13drHmW2a2+8q/TPJ1Sa5K8leZNav8amvtymWvNef6wicA7NNY/0eUHAAA+zPWDJDIAQCwX3IAAGwuTSmwC8InAOzfWP9HlBwAAPsz1gyQyAEAsF9yAABsrv3kgCODrwZG4ugHZzuCKQAs/q4cOzkAAOabcgZI5AAAWEQOAIDNdVA54FoHclUAAAAAAAAAADaanVLYWLqeAWCxRd+VY/+XU3IAAMw35QyQyAEAsIgcAACb66BygJ1SAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABndk1QuAVamquc+11g5xJQCwnhZ9V46dHAAA8005AyRyAAAsIgcAwOY6qBxgpxQAAAAAAAAAAAZnpxQ2lq5nAFhs0Xfl2P/llBwAAPNNOQMkcgAALCIHAMDmOqgcYKcUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABqcpBQAAAAAAAACAwWlKAQAAAAAAAABgcEdWvQBYlaqa+1xr7RBXAgDradF35djJAQAw35QzQCIHAMAicgAAbK6DygF2SgEAAAAAAAAAYHB2SmFj6XoGgMUWfVeO/V9OyQEAMN+UM0AiBwDAInIAAGyug8oBdkoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABqcpBQAAAAAAAACAwWlKAQAAAAAAAABgcJpSAAAAAAAAAAAY3JFVLwBWparmPtdaO8SVAMB6WvRdOXZyAADMN+UMkMgBALCIHAAAm+ugcoCdUoC1V1WT/4+hqVGzcVGv8VEzNom/7+OjZuOiXuOjZmwSf9/HRb3GR83GR83YJP6+j4t6jY+ajcvY62WnFDaWrmcAWGzRd+WYA3AiBwDAIlPOAIkcAACLyAEAsLkOKgfYKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUiasqq5VVWdW1R9W1T9U1eer6qNVdXZVnXoA892xqv5LVf1VN9dFVfXWqvrXVbXrv2tV9fCq+nRVtar6qaHXCwAAAAAAAAAcHE0pE1VVN0zy+0l+K8npSV6d5IVJPpXk/0nynqp6/IDzPSbJe5M8PcnfdXP9jyR3TfKbSf6wqm605LVuVFW/neR3k9xiqDUCAAAAAAAAAIfnyKoXwPCq6tpJXpXkO5J8LMk/b619uvf8M5O8OMnLq+ofWmtv2ed8D0jy25n9ffp/W2u/0Hvu+Un+OMn9kry6qs5orV294FoPSfJrSW6Z5P1JTtvP2tZVVSVJWmsru9ayr1tm3KIx857b7eOrtuqa7eY1arb6eu32dTuN3Uu95j23jvVKxlUznzH2y9/38f19X3XNDus7ZdHzY6rZquu1m9cd1Gds3nPrWK9EzfbyOOPl7/u4/r4PvaYp5YB1rFfiM7aXx1dt1TXz/9w4TP6+j+vv+6rrtdvX+X/M46qZz9jMqmu2rll7t2sbAzulTNMPJPmu7vgprdeQkiSttV/MrFHkSJLfqKrr7nWi7rUv7a71R63XkNLN9fdJfrg7/Y4kP7jgWk9P8vokV3fr/097XRcAAAAAAAAAsFqaUiamqq6V5N93px9srb11ztD/2v1+u8yaWPbqiUm+vjs+e7sBrbX/k+SD3em/r9lOLtv5+swaXO7aWvuDfawJAAAAAAAAAFgxTSnT821Jbtsdv2HBuDcl+XJ3/Jh9zPfY7vevJPm9BeNe3/1+6yTfPmfM81trT26tfW4f6wEAAAAAAAAA1oCmlOl5UO/43fMGtdauSHJ+d/ptVXWD3U5UVSck+efd6V+11i5fMPxdveOHzFnTxbtdAwAAAAAAAACwnjSlTM9pveOP7zD2E93v107yTXuY65u61+5mriS56x7mAgAAAAAAAABGRFPK9JzaO75wh7H950+dO2o95gIAAAAAAAAARuTIqhfA4G7cO150O52tz99ozecaXFWtegmDrmGv11r2dcuMWzRm3nO7eVzNdvcaNVt9vXb7up3G7qVe855bx3oNvQY/F1lkHd47f9/H9/d91TU7rO+URc+PqWarrtduXndQn7F5z61jvYZew1hrNqbP2Jitw3vn7/u4/r4PPf+UcsA61mvoNfiMHY5V18z/c9sc6/De+fs+rr/vq67Xbl/n/zGPq2Y+Y8OvYdU/Fw/6/7mtQ732wk4p03Ni7/iLO4z9Qu/4pEOc68S5owAAAAAAAACASbBTygpU1Z2HuE5r7fz9XmKIdazhXAu11sbZQgYA7JscAACbSw4AgM0lBwDA6mhKWY0PD3Sd7ULU5Tl2e5zjsngHk+N7x5ftYf7+LXmO22Fsf66dbvUDAAAAAAAAAIyc2/dMzyW9451uk9N//tI1nwsAAAAAAAAAGBE7pazAAW8T95Ekd+iOb5XkwgVjb7XldXuZa7trHcRcAAAAAAAAAMCI2Cllet7fO77D3FHXfP4rST64h7k+lOTLu5wrSc7bw1wAAAAAAAAAwIhoSpmeN/WO7z5vUFWdkOTO3emfttY+t9uJWmuXJ/mT7vTU7prz3KN3/MbdzgUAAAAAAAAAjIumlOl5W5K/644fsmDcg5Jcuzs+dx/zHX3ttbprzvPQ7vdPJ/mjfcwHAAAAAAAAAIyAppSJaa19OcnPdKd3qar7zxn61O73v0ny0u0GVNV9q+qvq+qCqrr3nOu8LMlfb7nm1us8IMldutOf7dYIAAAAAAAAAEyYppRp+o0kf9Ad/3pV3bL/ZFU9M8n9knw5yVNaa1+cc50XJfm6JLdL8gvbDWitfSnJk5NcneR+VfVjW+a6eZKXdKdvTfJru/3DAAAAAAAAAADjoyllgrqdSL43syaQOyb5YFWdXVXPrao/SPLiJFcm+YHW2psXXKrmHG+d7y1Jnpjk80leVFV/2M11VpIPJTklyZ8k+Z7W2tWL1l5VP3b0V5Izek/dp/9cVd1g0XVWpaquVVUP7N7v91TVZ6vqc1X1wap6UVXdatVr5Jq6mj2qqn6nqv62qq6qqkur6o+q6olVNffvPqtXVTetqldVVauqJ616PZuqqk6qqhd3u2t9oao+WlX/oaquu+q1MZ/Pz/DkgPGRA8bNz7H1IAeMk8/P8OSA8ZEDxs3PsfUgB4yTz8/w5IBxkQHGzc+w9SEHjNOqPkOaUiaqtXZJku9I8q+TvC/Jo5P8eGa7nvxKkru11s7Z4TLPzuz2Pp9K8v/uMN8rk5ye5Owkt+3memySD2S2k8oDWmufWWLpL+r9+r7e49+15bkbL3GtVbhZkjdntt4fy2ynmW9I8p+TPD3Je6rqNitbHdt5YZLfSXK9JA9O8k+S3CfJ55K8PMlvrWxlLFRVj0rywcw+b6xIVZ2UWePhY5N8f5IbJXlWZj8DX19VR1a4PObw+TkwcsD4yAEj5efYepADxsnn58DIAeMjB4yUn2PrQQ4YJ5+fAyMHjIsMMFJ+hq0POWCcVvkZ0pQyYa21r7TWXt5ae0Br7WatteNba3dsrf3b1tr5S7z+j1trX9dau11r7U+XGP/R1trTWmundHOd3Fq7X2vtpd3uLcusuZb8dcEy11uhJ7XW/qC1dnlr7f+21n49ya9mFk6fsuK1cU3XS/LXme3k8/7W2udbax9K8j1JPpnkCVX1wJWukK9RVf8myX9N8gNJfnfFy9l0P5Pknyb5kdban7TWrmytvTbJv88s2Pw/K10dX8Pn51DIAeMhB4yQn2NrRQ4YGZ+fQyEHjIccMEJ+jq0VOWBkfH4OhRwwDjLACPkZtnbkgJFZ9WdIUwoM67NJHpDkz7d57qPd7zc8tNWwjL9O8rLW2hf6D7bWvpjkf3en33noq2In5yW5S2vtDateyCarqhOT/FCSi5K8fsvTv5Xky0mecdjrYkc+PwdHDhgfOWCc/BxbA3LAaPn8HBw5YHzkgHHyc2wNyAGj5fNzcOSAcZEBxsnPsDUhB4zWSj9DmlJYO1V136r6q+5eVi/fw+uPq6qnVdXbq+riqrq8u3fjz1XVrQ9gyV/VWvtSa+2trbWvbPP0t3a//8FBrmEVRl6zF7XWnjfn6c8dXeJBrmEVxlyzJGmtva27TRlZaT3/RZLjk7xz68+91tqlSc5Pcruquutu1zR1q/wMrvvnZ8w/n+SAUdZMDhhZzZL1/zl22OSA8ZED5hvzzyc5YJQ1kwNGVrNk/X+OHTY5YHzkgPnG/PNpE3PAyOslA4ysZsn6/wxbBTlgfDY5B2hKYW1U1fWq6sVJ/jjJKXu8xm2TvCPJWUlul1lH3i8muSLJs5O8r6oOrcO1+zOdWlUvTPJ9SZ7XbV81CVOs2RZ36n7/oxXNP7gNqNlGWYN6ntb9fsGc548+ftqc5zfOGtRsbU3xvZEDlrrGWtVsCzlg+2usc802yhrUUw7YpTWo2dqa4nsjByx1jbWq2RZywPbXWOeabZQ1qKccsEtrULO1NcX3Zso5YIr12kIG2P4a61yzjbMGNZUDdmkNarZ6rTW//Fr5r8y6hc9P0pK8t/u9JXn5Lq5xQpL3da/7syQnbXn+rO65y5Lc9RD+TGf0/hx/l+SxSa616vdazZZe242TfKH7s9Wq3281W7iml3dzPmnV7/Gm1TPJ2d3zPz3n+v+te/6Zq36/1uHXOtRsm+utxednHd+bAf5McsDIarZlbjlgJDVbl59jm1jPyAGjq9k211uLz886vjcD/JnkgJHVbMvccsBIarYuP8c2sZ6RA0ZXs22utxafn3V8bwb4M002B0yxXlvmlgFGUrN1+Rm2qTWNHDC6mm1zvUP/DNkphZWrqkckeVuSm2YW0P7dHi/1nMy67q5OcmZr7bItzz8ryceSnJjkJXucY2mttd9Lcu0k35DkPyX5jST/u6pOPui5D9pUa7bFi7rfz2zdT+gx25CabYw1qufx3e9Xzbn+l7rfr7/H9U3GGtVs7Uz1vZEDlrJWNdtCDtjeOtdsY6xRPeWAJa1RzdbOVN8bOWApa1WzLeSA7a1zzTbGGtVTDljSGtVs7Uz1vZlqDphqvbaQAba3zjXbKGtUUzlgSWtUs5XTlMI6uF2SNyT55tbauXu5QFXdMMmPdqdvbq19dOuY1tpVOfZBvHdVnbHNdS6o2X28lv31e4vW1Vr7SmvtE621X0jyY5ndZ+1X9vJnXDOTrVl3zScmeWKSx7fW3r+XP98amnTNNtC61PPK7vfrzJnmut3vn9/LGidmXWq2jtbmvZEDljbZmnXXlAO2sc4120DrUk85YHnrUrN1tDbvjRywtMnWrLumHLCNda7ZBlqXesoBy1uXmq2jtXlv5IClTLZe3TVlgG2sc8021LrUVA5Y3rrUbOWOrHoBkOS/tdb+8z6v8fDMti5KZh/ueV6fY92uj0my9Yvtt5LcZBfzfmgXY38zsy2tHlVVN26tfXYXr103k61ZVT00sx/cT2mt/c9dXHfdTbZmG2pd6vn33e83mvPaG3a//8Me1jc161KzdbRO740csJzJ1kwOWGgta7ah1qWecsDy1qVm62id3hs5YDmTrZkcsNBa1mxDrUs95YDlrUvN1tE6vTdywM4mWy8ZYKG1rNkGW5eaygHLW5earZymFFautXbxAJd5UO/43QvGfSSz+2mdlOTB26zluQOsZVuttS9W1T8kuWWSOyZ550HNddCmWrMufL4qs/D520Nddx1MtWabao3qefRfDXz9nNfevvv9vN0ubmrWqGZrZ53eGzlgOVOtmRywo7Wr2aZao3rKAUtao5qtnXV6b+SA5Uy1ZnLAjtauZptqjeopByxpjWq2dtbpvZEDdjbVeskAO1q7mm2yNaqpHLCkNarZyrl9D1NxWu/44/MGtdZakgu605Or6hZDLqKqfrKqXjPnuSOZ3TMsST435LwjtRY1O6oXPn+oHz6r6i5V9X0HMecIrVXN2Lch6vmHSb6Q5J5VdY1M0W0pd+ckn4rwORSfwfnW4r2RA3ZlLWp2lBywlLWqGfsmB4yPz+B8a/HeyAG7shY1O0oOWMpa1Yx9kwPGx2dwvrV4b+SApa1FvY6SAZayVjVjEHLA+Ezic6gphdHrfuCd0p1etUTX2YW941MHXs6RJN9eVdttWfWYzO6v9vHW2vkDzzsqa1azVNXDcqwb+r9tefqeSf7N0HOOzbrVjP0Zqp6ttcuT/HqSmyV56JbXPDHJtZP8py4MsQ8+g/Ot2XsjByxhzWomByxh3WrG/sgB4+MzON+avTdywBLWrGZywBLWrWbsjxwwPj6D863ZeyMH7GDN6iUDLGHdasb+yQHjM6XPodv3MAUnZhbqkuTyJcb3x8y739letcy6nt9QVT+e5L2Z3efrXyb5+SRXJnnywHOO0drUrAufv5PkoiQP6877vj6zum26takZgxiynj+Z5P5JfrWqLknyriTfleRnkvxBkl/a10o5ymdwvnV6b+SA5axNzeSApa1NzRiEHDA+PoPzrdN7IwcsZ21qJgcsbW1qxiDkgPHxGZxvnd4bOWBna1MvGWBpa1MzBiMHjM9kPoeaUpiCE3vHX1xi/Bd6xycNvJYXJjk/yfcleUWSmyf5cpK/SXJukl9orX104DnHaJ1q9oNJrpvkNpnVbTt/NPCcY7RONUtV3T7JJ7c8/LKqelmStNZq6DknZrB6ttY+V1XfluR5SV6ZWXf03yR5cZIXtNau2udamRmsZhP8/KzTzyc5YDnrVDM5YDnrVLMp/hw7bHLA+MgB863Tzyc5YDnrVDM5YDnrVLMp/hw7bHLA+MgB863Tzyc5YGfrVC8ZYDnrVLMp/gxbBTlgfCaTAzSlsIkObLuo1tqVSf5H94vhHGTN/tVBXXvDHei2bK21C5IImYdnYT1ba59L8ozuF+thbs18fuSAEZIDxkcOmBY5YHzkgPnkgPGRA8ZHDpgWOWB85ID55IBxkQHGRwaYHjlgfNY2B1xrVRPDgPpbER23xPjje8eXDbwWlqNm46Nm06Ke46Nm83lvxkfNxkfNpkU9x0fN5vPejI+ajY+aTYt6jo+azee9GRf1Gh81mx41HZ/J1ExTClNweZKru+MTlhjf3+ro0sFXwzLUbHzUbFrUc3zUbD7vzfio2fio2bSo5/io2Xzem/FRs/FRs2lRz/FRs/m8N+OiXuOjZtOjpuMzmZppSmH0WmtfSXL0fozXraqb7vCSW/WOP3Iwq2IRNRsfNZsW9RwfNZvPezM+ajY+ajYt6jk+ajaf92Z81Gx81Gxa1HN81Gw+7824qNf4qNn0qOn4TKlmmlKYivf3ju8wb1BVVZLbd6efaa19+iAXxUJqNj5qNi3qOT5qNp/3ZnzUbHzUbFrUc3zUbD7vzfio2fio2bSo5/io2Xzem3FRr/FRs+lR0/GZRM00pTAVb+od333BuFOTnNQdv/HglsMS1Gx81Gxa1HN81Gw+7834qNn4qNm0qOf4qNl83pvxUbPxUbNpUc/xUbP5vDfjol7jo2bTo6bjM4maaUphKl6b5PPd8UMWjHto7/jcg1sOS1Cz8VGzaVHP8VGz+bw346Nm46Nm06Ke46Nm83lvxkfNxkfNpkU9x0fN5vPejIt6jY+aTY+ajs8kaqYphUlorV2S5Kzu9IFVdcrWMVV1nSQ/3J2+s7W2dl1im0TNxkfNpkU9x0fN5vPejI+ajY+aTYt6jo+azee9GR81Gx81mxb1HB81m897My7qNT5qNj1qOj5TqZmmFKbk+Uk+kOQ6Sc6pqpO2PP/iJHdMckWSHzrktbE9NRsfNZsW9RwfNZvPezM+ajY+ajYt6jk+ajaf92Z81Gx81Gxa1HN81Gw+7824qNf4qNn0qOn4jL5mR1a9AEiSqnpKkn/SnX5D76m7VNWP9c7/R2vtb7a7Rmvt8qp6aGbbGH1rkg9X1bmZbWl0RpJ7JrkkyWNba+8b+s+wadRsfNRsWtRzfNRsPu/N+KjZ+KjZtKjn+KjZfN6b8VGz8VGzaVHP8VGz+bw346Je46Nm06Om46NmM9VaW/UaIFV1QZLbLTH0Aa21t+5wreMy26LocUnulOS4JJ9K8rokZ7XW/nZfiyWJmo2Rmk2Leo6Pms3nvRkfNRsfNZsW9RwfNZvPezM+ajY+ajYt6jk+ajaf92Zc1Gt81Gx61HR81GxGUwoAAAAAAAAAAIO71qoXAAAAAAAAAADA9GhKAQAAAAAAAABgcJpSAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABqcpBQAAAAAAAACAwWlKAQAAAAAAAABgcJpSAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFYMWq6m1V1bpf563Zej6w6vUAwJTJAQCwueQAANhMMgCwaTSlAKxQVVWSf9p76L0rWkqSw19PVR1fVVf0Au/39p67fe/x/q+/rao9fX9V1bPnXPMXhvtTAcBy5AA5AIDNJQfIAQBsJhlABoBNpCkFYLVOSXJi7/y9K1rHUYe9nu9Mcv3u+EtJfm+J19w6yb/Y43xn7vF1AHAQ5AA5AIDNJQfIAQBsJhlABoCNoykFYLW+Zcv5e1exiJ7DXs/Desdvba1dtuTrdh0kq+oeSb5pt68DgAMkBxwjBwCwaeSAY+QAADaJDHCMDAAbQlMKwGptDXzvWckqjjm0ANptC/jQ3kOv2+ElV/WOH1lVJ+xyyn5ovWruKAA4PHLAMXIAAJtGDjhGDgBgk8gAx8gAsCE0pQCsVj/w/U1r7bMrW8lMfz0XttYuPsC57pnklr3z1+4w/q1JruyOT0jyqGUnqqrrJHls76E3LvtaADhAcsAxcgAAm0YOOEYOAGCTyADHyACwITSlAKxWP/C9d1WL6DnM9fS36Xtfa+1TO4z/XJLf7Z0/YRdzPTjJTbvjq5O8chevBYCDIgfMyAEAbCI5YEYOAGDTyAAzMgBsEE0pACtSVbdOcnLvofeuaClJVrKeh/eOd9qm76hzesf/olvzMvrb9L05yUVLvg4ADoQcIAcAsLnkADkAgM0kA8gAsKmOrHoBABvs0O7VuKSF66mq45PcN8k3JrlBZl3KH0zyttbal3YzUVV9XZLTeg/ttE3fUb+f5B+S3DyzxsrvT/LzO8x1o1zzPpW/vfxKl1NVN8nsvblNkpOSfDrJe1pr5w1w7WsnuXuSUzL7D4QTklyW5ILMusn/er9zALAScsAxcsD8a8sBANMkBxwjB8y/thwAMD0ywDEywPxrywBMjqYUgNXZGvjes9MLqupWmW0zd7/ew29J8rjW2v8deD3v7ea8dZLnJXlckuO3ed2FVfWs1tq5u5ir3xH96STvWuZFrbUvV9Urkzyje+gJ2SGAJnlMkut2x/+Y2XZ/37r8UpOqelKSl/UeekBr7a1VdcckP5vkEb05+q/7UJIfb60t2/Xdf+0dk/xkkn+V5J8sGPexJK9O8iuttb/Z7TwArIwcMCMHbD+nHAAwbXLAjByw/ZxyAMB0yQAzMsD2c8oATJbb9wCsTj/w/WNr7ZOLBlfVAzMLhUfD51eS/EyS7x4gfG5dz+VJPl5VT0nyoSQ/mO3DZ5LcKsl/r6of2MVc/QD6+tZa28Vr+9v13aWq7r7D+P42fa9urX1hF3PNVVXfkdl/NHxftgmfnW9K8tqq+qWqqiWvW1X1M0k+nOSJWRA+O3dM8hNJnrXUwgFYF3LAjBxwzevKAQCbQQ6YkQOueV05AGD6ZIAZGeCa15UBmDw7pQCszum94/fNG9Rt1fa8zELG0WbCzyR5fGvtzQe0nvOS/H9JfnrLYx/rju+U5C5bXv+fqup/tdYuWTRJVZ2Ua3Z1L7tNX5KktfbeqjovyV27h85M8pdz5rpTrtkBfc524/bgzklemOTE7vwzSf4iyaWZBfJvzTVD6b9NclWSf7fool2tz03yPds8/ZHM3v9/zGyrxFMyq8NSwRaAtXN671gOWJIcIAcATMTpvWM5YElygBwAMAGn945lgCXJADIA42enFIAVqKobJvn63kPvnTPulkn+ILMwePRn9p8nuduQ4XOb9dwxs/DZkrwkye1aa6e11h7Z/frmJN+V2b0cj7pBkn+5xHRn5Fg4+3xmf77d6gfJx1TVvCbLfkf0J5O8bQ9zbecFmd0n8rIkP5zklq21B7XWHttau1+SWyb51S2v+dGq+u4drvvTuWb4bEl+M8kdWmt3bq09tLX2+Nbaw1prd05y0yRPziz8AjAScoAcMIccALAB5AA5YA45AGDiZAAZYA4ZgI2gKQVgNU7fcv41946squ/KNbfmS5L/muSft9Y+dcDrOTnJlUke3lr7ke3ma629JcmP7HCd7Tysd/yW1tqVu1jnUa9I8uXu+GaZhdpr6LbG+/7eQ7+9yy0BF7lhki8keUhr7ddaa1f1n2ytfba19m8y62bv+6Wq2va7t6rumVnn+1FXJ/n+1toPztvGsZvnpa21f5ZZKAZgHE7fci4H7I4cEDkAYMRO33IuB+yOHBA5AGCkTt9yLgPsjgwQGYDx0pQCsBrfsuX8vUcPqura3f0Dfy+zcJXMum+/r7X29Nbalw5hPa2b7/U7vO6N3dijFt7rsNuK7sG9h1639Ar7i2vt00ne0nvozG2G3S/J7XrnQ23Td9TPt9b+ZIcxz8s1O5a/IduE5c5zcs1t957fWnvlsotprf3DzqMAWBNywIwccIwcALA55IAZOeAYOQBgM8gAMzLAMTIAG0NTCsBq9APfVUk+lFxja76fzLGf0R9Ics/W2qsOaT1J8muttWXC4VWZde8edfkO4++b5CbdccseA2inHygf1m032NcPpW9vrX18H3NtdWWSF+80qOvC/tktDz9+67iqulmuuc3hPyT5j/tZIABrTQ6QA75KDgDYOHKAHPBVcgDARpEBZICvkgHYNJpSAFajH/g+1Fr70pyt+X47yb1aax85xPVcneRnlnzdrZJcp3f+dzuM72/T9859dvL+r8y6xZPkekkeffSJqrp+rnkfxqE7ot/UWrts52GzsUk+1zu/9zZj7pdrdkSfc0Dd7wCsBzlADuiTAwA2ixwgB/TJAQCbQwaQAfpkADaKphSAQ1ZV10ty595D522zNd8Xk/xIa+3M1trnD3k9b26t7RQkj/rGLec7BeWH94730xGd7r6T/7P30BN6x49IclJ3/MUkQ3eU/8XOQ2a6e0u+r/fQ11fVjbYMu9eW8522AARgpOSAr5IDjpEDADaEHPBVcsAxcgDABpABvkoGOEYGYKNoSgE4fHdNcqR3/qhcc2u+Tya5T2vtJStaz1vmDdzG6VvO37fdoCSpqlOT3Kn30Gt3Mc88/W7n+1bV13fH/W36Xt9au2SAufp2u+3fx7ac32zL+S22nH94l9cHYDzkgBk54Bg5AGBzyAEzcsAxcgDAZpABZmSAY2QANoqmFIDDt/Vejcf3jj+T5B6ttXevcD3v2MVr79Y7/sfMwvM8/W36LmitnbeLeeZ5a5JPdceV5MyqulWS7+iNGXqbvuSaW+8t4x+3nN9wy/lNtpxfusvrAzAecoAccMMt53IAwOaQA+SAG245lwMANoMMIAPccMu5DMBG0ZQCcPj6ge/Lmd1f8KibJPkPh7ucr1nP+3fx2n4AfW9rrS0YO9g2fUd18/233kNPSPL9Sa7dnf/fXPP9HYtF7yMA4yYHyAE7kQMApksOkAN2IgcATJMMIAPsRAZg0jSlABy+03vHH0nyvUn+svfYj1bVM1a1nmXvV1lVJyY5pffQexaMvXGS+/QeGmKbvqP6Xc/fkOQneufndvdvHNoNdjn+n2w5v3TL+We3nN9wl9cHYDxO7x3LAfsnBwAwJqf3juWA/ZMDABiL03vHMsD+yQAwMppSAA5RVV0ryWm9h97TWrsiyUOT/HXv8V+oqkeuYj27ePnpueb3yKLtBR+SY53Kn0vyR7uYZ6HW2keSvLP30A17xwexTV8yC7q7ccct5xdtOf/7LeffuMvrAzACckASOSCRAwA2khyQRA5I5ACAjSMDJJEBEhmADacpBeBwnZrk+r3zdydJa+3vkzw4x7plr5XkFVV1nxysbdezpLttOV8UXvvb9P3eAXQqbxc0P9Rae9fA8xx1z2UHVtV1kvzT3kOfbK1dsmXYn205//a9LgyAtSYHyAFyAMDmkgPkADkAYDPJADKADMDG05QCcLi+Zcv5V0Nba+1DSR6V5Gg4u16S11bVKTk4c9ezhH4A/UKS87cbVFXXTfLdvYeG3KbvqHNz7H076rcPYJ6jHlRVJy07Ntfc2m9r2ExmXeJf6Z2f2QVXAKZFDpAD5ACAzSUHyAFyAMBmkgFkABmAjacpBeBwLQx8rbU/TPLk3kM3SfKmqjp5FevZQT+Antdau3rOuPsnORrWrk7ypl3MsZTW2meS3CuzbuKjv3556Hl6jk/yrJ0GVVUl+cktD79i67jW2v9N8v/rPXSLJD++j/UBsJ7kADlADgDYXHKAHCAHAGwmGUAGkAHYeJpSAA5XP/B9srV26dYBrbVzkjyv99A3JHldVR2/ivVsp6qul2ve43BRcH1Y7/hPW2ufXX55y2utvae19rber88dxDw9z66qb9thzHNzzW39PpHk9+aMfUGS1jv/D1X1fcsupqpuvuxYAFZGDpAD5ACAzSUHyAFyAMBmkgFkABmAjacpBeBw9QPf3Hs1ttZ+Kte8J+K9kryyqob+ub3UerZxWpIjS762H0Bft4s51tmlmW2l+MaqesrWbfWq6kZV9cuZBdC+f9ta+0q20d3r8j/2HjqS5L9X1a9V1e23e01V3biqfqCq3pnkJ/b2RwHgEMkB03Bp5AAAdk8OmIZLIwcAsDsywDRcGhkA9uzIzkMAGEJVfV2SG/ce2mlbvCcnuW2SB3Tn/yrJf07y9BWtp+9uW863fW1V/dMkt+s9dBD3jlyF5yR5UWZbEP5akhd0IfDSJLdKcu8k193ymv/SWnvzDtd9bpI7Z3Yf0SSpJE9J8pSq+nCSjyX5XGb3ozwlyZ1yrMH07fv48wBwwOSAJHKAHACwoeSAJHKAHACwgWSAJDKADADRlAJwmLbeq3FhF3Jr7aqqemSSP03yTd3DT6uqv26tvfiw17NFP4B+Ocl5c8b1O6LPb619dBdzrLMPJ3lkktckOSGz+3w+aMH4X0nyjJ0u2lr7clU9OrNt+34s19zR7Btzze0RARgXOUAOWEgOAJg0OUAOWEgOAJgsGUAGWEgGYFO4fQ/A4dka+HbsQu7u5/jgJH/fe/hFVfW9q1jPnNee31q7cs64h/eOp7JNX5Kktfb7Se6e5H8muWrOsA8neXhr7d+21tqcMVuv+5XW2rOT3DXJ/0hyxQ4v+Uhm9xv9+aUWDsCqyAETIgcAsEtywITIAQDsggwwITIA7F0t+XkAgF2pqlskuTCz7eaS5Ntba29b4ZL2rKqelORlvYce0Fp7a+/5mya5b5LbZLZ9398neU9r7X0DzH3dJPdJcvskJye5Tmbb9X0yyftaa3+73zkAYGhygBwAwOaSA+QAADaTDCADwDxu3wPAQXlYjoXPi5P82QrXcqBaaxcn+d0DuvaXkrz1IK4NAAdIDhjm2nIAAGMkBwxzbTkAgLGRAYa5tgzA5Lh9DwAHpb9N3xtba19e2UoAgMMmBwDA5pIDAGAzyQDAtuyUAsBB+ZMkf9kdT+rekQDAjuQAANhccgAAbCYZANiWphQADkRr7YWrXgMAsBpyAABsLjkAADaTDADM4/Y9AAAAAAAAAAAMTlMKAAAAAAAAAACD05QCAAAAAAAAAMDgNKUAAAAAAAAAADC4aq2teg0AAAAAAAAAAEyMnVIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMFpSgEAAAAAAAAAYHCaUgAAAAAAAAAAGJymFAAAAAAAAAAABqcpBQAAAAAAAACAwWlKAQAAAAAAAABgcJpSAAAAAAAAAAAYnKYUAAAAAAAAAAAGpykFAAAAAAAAAIDBaUoBAAAAAAAAAGBwmlIAAAAAAAAAABicphQAAAAAAAAAAAanKQUAAAAAAAAAgMH9/wEkqeD72PS2SAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -584,6 +535,86 @@ " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" ] }, + { + "cell_type": "code", + "execution_count": 27, + "id": "18a6ad7c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 350, + "width": 1115 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(1,4,figsize=(18,5),sharey=True, sharex=True)\n", + "axes=[axes]\n", + "inum=0\n", + "for j in range(1):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,_,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + "\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + " \n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[0][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=\"HMcode2020 TAGN\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][1].set_xscale('log')\n", + " axes[0][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(\"HMcode2020 TAGN\")\n", + " axes[j][3].plot(k,l1, label=\"Linear\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][3].set_xscale('log')\n", + " axes[0][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Linear\")\n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(cosmo[i]['smnu']))\n", + " axes[j][2].set_xscale('log')\n", + " axes[0][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-5E-3,5E-3)\n", + " from matplotlib.cm import ScalarMappable\n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,1E-3,\"z={0}\".format(zs[0]), size=20)\n", + " #axes[1][0].text(1E-2,3E-2,\"z={0}\".format(zs[1]), size=20)\n", + " #axes[2][0].text(1E-2,3E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " #sm = ScalarMappable(cmap=cmap)\n", + " #cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " #fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" + ] + }, { "cell_type": "code", "execution_count": null, @@ -704,7 +735,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 28, "id": "1514940d", "metadata": {}, "outputs": [], @@ -722,14 +753,14 @@ " Omega_k=0,\n", " w0=-1,\n", " wa=0,\n", - " m_nu=cosmo_dict['smnu'],\n", + " #m_nu=cosmo_dict['smnu'],\n", " transfer_function='boltzmann_class')\n", "pk_lin_class = ccl.linear_matter_power(cosmo, k, 1)" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 33, "id": "5b54f4c1", "metadata": {}, "outputs": [], @@ -746,38 +777,38 @@ " Omega_k=0,\n", " w0=-1,\n", " wa=0,\n", - " m_nu=cosmo_dict['smnu'],\n", + " #m_nu=cosmo_dict['smnu'],\n", " transfer_function='boltzmann_camb')\n", - "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)" + "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)\n" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 36, "id": "4aac71cf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "Text(0.5, 0, 'k(Mpc/h)')" ] }, - "execution_count": 25, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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e87d+9o2zfESERFJk2R9p1QQIyLdHnhzO2v21HnOff2i+VkVvF66dCJ+X09711XXs2zboRivEBERkWyjIEYics5FfcjQ1NDSzi1/W+c59/4jxmfdXitVZQW8Z553RbJ7Xt2eptaIiIgMb8n6TqkgRkQA+PU/N7OvrqU7nZ/j48bz5qaxRQN35bHeIWWPvLOLmsa2NLVGREREEk1BjIhwuLGVXzy/yXPuU6dMY0JFYZRXZLZTZo32tL2lvZOH3tIEfxERkaFCQYyIcPvzm6hr6dkksrwwl8+eNiONLRocv8+44phJnnOa4C8iIjJ0KIgRGeb21jVz54ubPec+d9oMygpy09SixLj06EmeCf5r9tSxfPvh9DVIREREEkZBjMgw97//2EhzW2d3enRpPtecOCWNLUqMseUFnDnXO8H/3le3pak1IiIikkgKYkSGsR2HGvn9q1s95649YyZFeTlpalFiXRU2wf+v7+yitlkT/EVERLKdghiRYexHT62nraNnnsiEikKuOHZSjFdkl1Nnj2Z8eUF3urmtk4eXa4K/iIhItlMQIzJMbdpXz5+W7fCc+5f3zCI/x5+mFiWe32dcfoy3N+be17RnjIiISLZTECMyTP3o6fV0hizWNX10MR84ckL6GpQklx0zkZD5/azaXcv66rr0NUhEREQGTUGMyDC0rrqOv7y9y3Puy++ZTY5/6H0kjCsv5MQZozznwt+7iIiIZJeh941FRPr0w6fWEbplytyxpVy4aFz6GpRkFy8Z70n/5e1d2jNGREQkiymIERlmVu6q4bEVezzn/uU9s/GFjrkaYs5dOJa8kF6mrQcaeXtHTRpbJCIiIoOhIEYiMrOoD8luP/j7ek964YQyzl0wJk2tSY3ywlxOnzPac+4vb2lImYiISLIl6zulghiRYeTt7Yd5anW159wNZ88eFsHp+47wLlrwyDu76OjUkDIREZFspCBGInLORX1I9vr+39d50kdMquCMOVVRcg8tZ82rojivZ/novXUtvLrpQBpbJCIiMvQl6zulghiRYeLNrQd5bt0+z7mvnDM8emEACnL9nLtgrOecVikTERHJTgpiRIYB5xy3/s3bC3PstJGcPHNUlFcMTe89wrtK2ePv7qGlvSNNrREREZGBUhAjMgw8v34/L230Dp36yjCZCxPq5JmjGFGU252uaWrj6dV709giERER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ERGR9JgWNpxscxzDyZK10Ip6YkREREREpE+ZNCdGPTESkXpbRERERCTU1LA5MVsPBpZZ9vkGNoJnML006okREREREZE+VRTlUVGU251ube9kd21zWtqiIEZEREREROISvulluoaUKYgREREREZG4DGRyfzIoiBERERERkbhMCZ8Xk6a9YhTEiIiIiIhIXHr3xKRnrxgFMSIiIiIiEpdec2LUEyMiIiIiIpksPIjZdqCRjs7Ub82hIEZEREREROJSXpTLiNBlljs62V3TlPJ2KIgREREREZG4TR3Vuzcm1RTEiIiIiIhI3CaP9K5Qtu2gghgREREREclgCmJERERERCSrTFIQIyIiIiIi2SS8J2Z7GoKYnJTXKFnBzKJecy71y+iJiIiISGboz3CyWN8pB0M9MSIiIiIiErcxZQXk+XvCiEONbdQ2t6W0DQpiJCLnXNSHiIiIiAxffp8xcUSh51y0IWXJ+k6pIEZERERERPolfHJ/qufFKIgREREREZF+SfcyywpiRERERESkX3qvUNaU0voVxIiIiIiISL9MGumdE6OeGBERERERyWiaEyMiIiIiIlklPIjZcaiJjs7UrWKrIEZERERERPqlrCCXEUW53enWjk6qa5tTVr+CGBERERER6bd0rlCmIEZERERERPotfEiZghgREREREclovZdZVhAjIiIiIiIZTMPJREREREQkqyiIERERERGRrJLOvWJyUlaTZBUzi3rNudStAS4iIiIimWlseQE+g67tYfbXt9Lc1kFBrr87T6zvlIOhnhgREREREem3XL+PceWFnnM7DzelpG4FMRKRcy7qQ0REREQEYEKFN4jZccgbxCTrO6WCGBERERERGZCJI8J6Yg6pJ0ZERERERDLYhBHhPTGpmdyvIEZERERERAakV0+M5sT0ZmY+M/uomT1jZtVm1mhm683sJ2Y2Jwn1zTSzH5nZumBde83sWTP7uJn1+9/OzC42s91m5szspn687mPB18TzeLa/7RIRERERGYgJFd5lljWcLIyZVQB/A+4GjgDuB74LbAO+CCw3s6sTWN8VwFvA9cDOYF1/ABYBvwaeMbMRcZY1wsx+CzwMjE1UG0VERERE0qn3cLLUBDFZsU+MmfmBPwJnARuAU51zu0Ou3wDcCtxlZtXOuacGWd8ZwG8J/Pvc6Jy7JeTazcDzwGnA/WZ2nnOu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5Pp9VJXme85V17QkvB4FMSIiIiIikjCpmBejIEZERERERBKm1wplCmJERERERCST9eqJScLkfgUxEpGZRX2IiIiIiEQTvkLZN77zg4R/p1QQIyIiIiIiCTO+wtsT4y8dlfA6FMRIRM65qA8RERERkWjCg5ijTj4r4d8pFcSIiIiIiEjCjC8Pn9ivOTEiIiIiIpLBKkvy8ft65rzUNLXR3JbYDS8VxIiIiIiISML4fdZrw8s9Ce6NURAjIiIiIiIJNTZsSNmeWgUxIiIiIiKSwcaWeYOYagUxIiIiIiKSycaUJXdyv4IYERERERFJqF7DyRTEiIiIiIhIJtNwMhERERERySrhw8k0sV9ERERERDJa+HCyag0nExERERGRTBY+nGxvXQudnS5h5SuIERERERGRhCrM81NemNudbu907G9oSVj5CmJERERERCThwntjErlCmYIYicjMoj5ERERERPoyJmxezPFnnJew75QKYkREREREJOHGluV70v7SyoSVrSBGInLORX2IiIiIiPQlfDjZN/771oR9p1QQIyIiIiIiCRc+nGxPjSb2i4iIiIhIBgvvialO4IaXCmJERERERCThwje83KMgRkREREREMpmWWBYRERERkawysjiPPH9PuFHf0k59S3tCylYQIyIiIiIiCWdmVIUts5yo3hgFMSIiIiIikhTJmtyvIEZERERERJKi9zLLCmJERERERCSD9Zrcr54YERERERHJZOPKNZxMRERERESyyJiwnpjdGk4mIiIiIiKZLHzDS/XEiIiIiIhIRkvWhpcKYiQiM4v6EBERERGJx+Sqck+6uqYR8/kH/Z1SQYyIiIiIiCRHRzsdTbXdSfP58ReVx3hBfBTESETOuagPEREREZF4OOeYN3W859xbazcP+julghgREREREUma8BXKEjG5X0GMiIiIiIgkzejSfE96b13LoMtUECMiIiIiIklTVertidlbOwyDGDPzmdlHzewZM6s2s0YzW29mPzGzOUmob6aZ/cjM1gXr2mtmz5rZx82sz38/Mysxsw+b2b3BdtabWZOZbTezv5jZNWaW1882vc/MHjGznWbWbGabzewuMzt64O9URERERCTxxpR5e2Kq64bZcDIzqwD+BtwNHAHcD3wX2AZ8EVhuZlcnsL4rgLeA64Gdwbr+ACwCfg08Y2YjYrz+JmAH8FvgYuB1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Lk1wW75LYE30y4HfA2OADmA7cB9wS6TVNSRrZNK99kkCq/hMJHC/RaLNLrNfJt1zmNlUYHPY6TvN7E4A55wluk7JGAm7F51ztWZ2MvBfwD0EemW2A7cC/x1ccUqGt4Tdb9n8uaUgRsIlrYvaOdcE/CH4EEnmvfb+ZJUtWS2pQ3Ccc1uAjP2DLxkl5r3onKsFvhx8iAxW1Pstmz+3NCdm6AvtQsyPI39hyHH4pkkisehek1TTPSeZQveipJLuNxTEDAf1BHZyhZ71xGMJ7aI8nPDWyFCme01STfecZArdi5JKut9QEDPkOec6ga55JnlmNipWfmB8yPHa5LRKhiLda5JquuckU+helFTS/RagIGZ4eCfkeHq0TGZm9GykdcA5tzuZjZIhSfeapJruOckUuhcllYb9/aYgZnh4POR4aYx8c+hZteKx5DVHhjDda5JquuckU+helFQa9vebgpjh4S9AY/D4whj5QjfWui95zZEhTPeapJruOckUuhcllYb9/aYgZhhwzh0CbgsmzzGzWeF5zCwX+Gww+ZpzbkhF65Iautck1XTPSabQvSippPtNQcxwcjPwLoEdXn9jZuEbvd0KzAQagM+kuG0ytOhek1TTPSeZQveipNKwvt+02WUWMLNPA+XB5IyQSwvM7Ksh6T8457ZHKsM5V29mFxHofjweWG1m9xHoijwPOAY4BFzpnHs70e9BsoPuNUk13XOSKXQvSirpfhs8cy6pGxhLApjZFmBKHFnPcM4920dZ+QS6Fq8CZhPYJGkb8FfgNufcjkE1VrKa7jVJNd1zkil0L0oq6X4bPAUxIiIiIiKSVTQnRkREREREsoqCGBERERERySoKYkREREREJKsoiBERERERkayiIEZERERERLKKghgREREREckqCmJERERERCSrKIgREREREZGsoiBGRERERESyioIYERERERHJKgpiREREREQkqyiIERERERGRrKIgRkREREREsoqCGBERERERySoKYkREREREJKsoiBERERERkayiIEZERERERLKKghgREREREckqCmJERERERCSrKIgREREREZGs8v8BQrqE+nuW20UAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { - "height": 254, - "width": 408 + "height": 271, + "width": 439 }, "needs_background": "light" }, @@ -785,7 +816,11 @@ } ], "source": [ - "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)" + "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)\n", + "plt.xlim(1E-3, 1E0)\n", + "plt.ylim(-5E-3,5E-3)\n", + "plt.ylabel(\"class/camb-1\")\n", + "plt.xlabel(\"k(Mpc/h)\")" ] }, { @@ -1005,9 +1040,57 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "id": "2ce9c53f", "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":2: RuntimeWarning: invalid value encountered in divide\n", + " y = np.sin(x)/x\n" + ] + }, + { + "data": { + "text/plain": [ + "(-0.1, 0.1)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzoAAAICCAYAAAAH77jAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAC6K0lEQVR4nOy9d5gjWXn9f67UOcz0zPTknGdnc84BFpZdFpOzDZhkbEzwFwd+DmAbG9uY4C9rjI0NGPgaTDLJsLDEXTbnMDu7Mzs7Oc90zkHS/f0haabue0tqSXVvSeo9n+fpZ1VSqepuj7q7Tp33Pa/SWoMQQgghhBBCZhOJai+AEEIIIYQQQlxDoUMIIYQQQgiZdVDoEEIIIYQQQmYdFDqEEEIIIYSQWQeFDiGEEEIIIWTWQaFDCCGEEEIImXVQ6BBCCCGEEEJmHRQ6hBBCCCGEkFkHhQ4hhBBCCCFk1kGhQwghhBBCCJl1UOgQQgghhBBCZh0UOoQQQgghhJBZB4UOIYQQQgghZNZRd0JHKdWslHqvUuoepVSPUmpEKbVdKfUPSqnlHs7XqpT6J6VUWimllVJrKjjGXKXUnyqlHlFKDSilBpVSjyql/lwpNc/1mgkhhBBCCHmuo7TW1V5DySilVgL4AYDzABwB8HUAowBuBHAxgF4Ar9da/9zR+a4A8J8ANgWeXqu13lfGMc4B8D0AawE8A+A7ADSAVwDYAmA/gFdorR91sWZCCCGEEEJIHQkdpVQ7gHsAnAPgPgA3aK2HA6/fAuC9AEYAXKG13hbhXC0A/gbABwD0AZgCsCz3cslCRym1FMCDAJYjK3Zeq7Wezr3WAOCbyAqeIwAu1lofqXTNhBBCCCGEkNPUU+nanyErclIA3hwUOTn+EMCzADoAfC7iue4B8EcAvg/gTAC7KjzOJ5AVOf0A3p4XOQCgtU4BeEfutWUAPhllwYQQQgghhJDT1IXQUUp1AXh/bvM2rbUlPHIiIi9wLldK3RjhlF0Afktr/Uqt9YlKDqCU2gzgDbnNr2mt++Q+uee+ltt8nVLqjErORQghhBBCCDGpC6ED4KUA2nOPf1Rkvx8GHr8+wvku0Vp/NcL7AeB1AFTucSlrVrn3EEIIIYQQQiJSL0LnpsDjR4rstxNAvqTtxZWeTGvdU+l7A5S65ocCj292cF5CCCGEEEKe89SL0Dkn8Hh3oZ10NllhX25zoVJqic9FFUIppQCcndsc1VofL7RvTlTlxdlWpVS9/JsQQgghhBBSs9T8RXXuwn9jbnO6BLclmFy22c+qZmQ5TpfalZKklt+nDcBKLysihBBCCCHkOUTNCx1kU9Qac49HStg/uE+1hnHODzyulzUTQgghhBAya2io9gJKoCPweLKE/ScCjzsdr6VUYl+zUqo+BiIRQgghhJC6R2utZt6rutSDo1Mu9XjBX49rJoQQQgghpGapB0cnWNbVXML+rYHHcqhoXFRtzdk8hsr41Y4TeOuXHjy1fd3mhfjSWy8p+f3ZDIbS17C3ZxTP+8Ttp7ZXL2jDHX/8PGu/LR/6MSamM6e2n/rIi9DWVPijW+46fFALa6iVdXANtbWOWlhDrayjFtZQK+uohTXUyjpqYQ21so5aWEOtrKMW1lAr68ivoR6oB0dnBEAq97i92I45gmVjA85XUxr9gccdBfcK32fA7VJKR35uM55/hiZTaWO7uSH849jamDS2x6fSofsRQgghhBCSp+aFjtY6A2BXbrNJKdU9w1uWBR7v9LOqGTkEYDT3eGkJ++fXPA7ggJcVlUBCKB3fdwsmAy4NADQ3JEP3s4TONIUOIYQQQggpTs0LnRxPBB6vK7RTbn7Nmtxmr9b6qM9FFSI3z+fJ3GaHUmpRoX1zwi0fQPBUTthVBSl00p4tncmUFDrhH8eWJlPoTFDoEEIIIYSQGagXofPjwOMLi+y3GadFw63+llMSpa75osDjqq45IT4NGc+OjhQsLY3hjk5LgxQ6VdOChBBCCCGkTqgXofMDAGO5xzcX2e8lgcdf97eckvgmTqeplbJmDeAbXlc0A9LR8d+jU5qj09rE0jVCCCGEEFIedSF0tNb9AG7Jbd6glNoo91FKNQJ4V27zAa215Y4opV6plDqhlNqmlNrkb8WA1vppnBYub1RKzZf75J57Y27z21rr7T7XNBOx9+jIMIJGhhEQQgghhBA31IXQyfFRZPteGgF8RSklB2t+EsAGZEMAfqfAMT4DYCGAswD8pad1BvlDAEcAzAPwBaXUqUzk3OPP5147BuADMaynKAmRulZuj47WuixxVGoYgSxpm8nRKXcdPqiFNdQKtfC9qIU11NI6aoFa+F7UwhpqaR21QC18L2phDbW0jlqgFr4XtbCGWlpHvVAPc3QAAFrrEaXUS5AtY7sMwNNKqa8jW9J2I4CLkY11foPW+vECh1EFHps7KXUmgJsCT60MPH6nUiofH31Qa12w3ExrfUQpdTOA7wF4OYDtSqnvIFum9goAWwAcBPByrfWhQseJi0SiuqVrLYUcHYYREEIIIYSQMqkboQMAWuv9SqlLkC1ReyOAtyE7kPMAgI8DuGUGwfA+AJ8FcALAR4rsd3HueGH8WeDxHZihr0Zr/ZhS6lwA7wHwagC/n3tpD4APA/hMrjSv6sRduiYFS0FHR/TuUOgQQgghhJCZqCuhAwBa60lk+3VumWnfkPd+C8C3StjvSwC+VO7xixxvENnSu4+6OqYPZOlazYYRsEeHEEIIIYTMQD316BDPxD9HRzo6JYYRMF6aEEIIIYTMAIUOOYWyHJ2YB4YWmqNTZhgBIYQQQgghdVe6RvyRTMgeHb/ns1PXGEbgGiazEAk/EyQMfi5IGPxckHqHjg45hT0w1HMYgTVHJ9zRkaVrFDqEEEIIIWQmKHTIKewwAs+layU6OjJ2mmEEhBBCCCFkJih0yCmU5ej4PV+pYQTs0SGEEEIIIeVCoUNOkYy5dM0eGMrSNUIIIYQQ4gYKHXKKuHt0Kp6jQ6FDCCGEEEJmgKlrswxZfhZkpvQUK17a87ga6cw0N5Tq6HCODiGEEEKIL4pdT9YTdHTIKRKJKjs6jSX26DCMgBBCCCGEzAAdnVlGlMz72Ht0LEenNKHDHh1CCCGEEH8Uu56sJ7eHjg45hR0v7fd8U6WGEbBHhxBCCCGElAmFDjmFVOi+JyKXHEbAeGlCCCGEEFImFDrkFNLRSXu2dCoNI2CPDiGEEEIImQkKHXIKO17a7/lKDSOQTs9kKuPdbSKEEEIIIfUNhQ45Rfypa6Yz01LA0UkkFJqSttghhBBCCCGkEBQ65BSydM2nzklnNKbTp0+gFNCYLJziId0eCh1CCCGEEFIMCh1yCrt0zZ/SkYlrzQ2JonGFsn9HRlMTQgghhBAShEKHnEIKHZ9hBKUGEZx+nY4OIYQQQggpHQodcoqE+DT4LF0rNVo6T4soXePQUEIIIYQQUgwKHXKKOEvXrCCCAsNC81ila3R0CCGEEEJIESh0yCniFTrRHB0plAghhBBCCAlCoUNOIVPXMhre5tVMTptCp2kGoSMdnYlpOjqEEEIIIaQwFDrkFEopyOAzX6aOdGRmcnTseGk6OoQQQgghpDAUOsQgrvK1qXR5jo4cJkpHhxBCCCGEFINChxiEla/5QM7RaZopXpqODiGEEEIIKQMKHWIgh3Z6c3Sk0EkWHhYK0NEhhBBCCCHlQaFDDGxHpzZK1yxHh3N0CCGEEEJIESh0iEHScnT8nGdaCp3kTPHSwtHhHB1CCCGEEFIECh1iEFsYgRAqjTMIHZnKJuOpCSGEEEIICdJQ7QUQt8gemyClzMSx4qU96Qk7jKBMocMwAkIIIYQQLxS7nqwn6OgQg4Ro0kl769ExjztjvLQsXaOjQwghhBBCikBHZ5ZRimtTDLtHJ6bUNTo6hBBCCCE1QbHryXpye+joEIPqxUvPlLpGR4cQQgghhJQOhQ4xkPHSnnQOptKmIzOj0KGjQwghhBBCyoBChxjI1LW0p3zpafboEEIIIYQQj1DoEINkgj06hBBCCCGk/qHQIQZWvLSn0rXJsufomI4O5+gQQgghhJBiUOgQg2oNDJ25dI2ODiGEEEIIKR0KHWIgwwj89eiYQkeWpkksRydFR4cQQgghhBSGQocY2I6On/OUGy8tHZ2JaTo6hBBCCCGkMBQ6xCAhLJ2oA0gLMZUus0enkY4OIYQQQggpHQodYiBL12JzdGbq0Wmgo0MIIYQQQkqHQocYxBZGkC4zXpqODiGEEEIIKQMKHWKgYhoYGnWOzsR02ltZHSGEEEIIqX8odIiBbJXxpSXKDSNoTCaMYaYZDaR81dURQgghhJC6h0KHGNRq6RoQ7uoQQgghhBASBoUOMZCla76EjpyjM5OjAwAt7NMhhBBCCCElQqFDDOzUtdro0QFsR6cWhA77hAghhBBCapOGai+A1BbJKg0MnWmODmA7OtUsXUulM/ibHz6Frz94EOsWduDDL9mKy9cvqNp6CCGEEEKICR0dYmD16NRI6hoQ4uhMV8/R+fxde/Hle/djMpXB00eH8M6vPIQTwxNVWw8hhBBCCDGh0CEGKq6BoaJHR4qYMKwwglR1HJ1UOoMv3LXXeG5kMoVvPHCwKushhBBCCCE2FDqzDKVUwa9SiCN1TWttCZ1SStesoaFVcnSeODyIk8OT1vM/33GiCqshhBBCCHFL1OvJWoFChxgkxCfCh9BJZbQxnyeZUMaMnELUiqNz/56+0OefODSAkclUzKshhBBCCCFhUOjMMrTWBb9KwXZ03K+x3GGheax46So5Oo8d7A99XmvgqSNDMa+GEEIIIcQtUa8nawUKHWIQR+maNUOnhP4cICxeujqOzq4TIwVf23Z4MMaVEEIIIYSQQlDoEANZQeZDuVeSuAbUhqMzlcpgf+9Ywdd3HR+OcTWEEEIIIaQQFDrEQDo6aQ9aQg76LLV0rRYcnX29o0gXqefb2zMa42oIIYQQQkghKHSIQSLhv3RNJq6VXromB4bG7+jsOWmWrS3vajW2i7k9hBBCCCEkPih0iEEcpWtWj06pjk5j9R2dQ/3jxvZVG7qN79mxoQmMT1Wnd4gQQgghhJyGQocYVCV1rcIwAnmcODg6OGFsr1rQhhXz2ozn9vWyfI0QQgghpNpQ6BADu0fHfxhBY7K04VNSEMlenzg4MmA6Osu7WrFqvil0jg6a+xBCCCGEkPih0CEG9dSjUxWhIxydpXNbsGRui/GcdH0IIYQQQkj8UOgQA7tHx/057NK1ZIE9TWrR0VnW1YqlQugco9AhhBBCCKk6FDrEII6BoZbQqTBeOu4enclUGieHJ09tKwUsoaNDCCGEEFKTUOgQA6Fz/PToWKVrpfXoVHuOzomhSWN7YUczGpMJLJljCp3jQxQ6hBBCCCHVhkKHGEhHx0fpWsXx0lV2dE6OmEJn0ZxmAKCjQwghhBBSg1DoEINkNUrXSgwjqHaPTu/IlLHd3ZEVOkvnmkND2aNDCCGEEFJ9KHSIQUJ8Imprjo4ZWhC3o9MrHJ0F7VmhM6+t0fh/GJlMYXQyFevaCCGEEEKICYUOMVAxODrSiWmssHQt7h6d3lHp6DQByH7PutubzH2F+0MIIYQQQuKFQocYyHhpH0JnOm0es9LSNRlq4Jse6eh0NAUeNxuv9Y6a+xJCCCGEkHih0CEGVo+Oj9Q14eg0l+zoiIGh09Xt0cmXrgGm6AnblxBCCCGExAuFDjGwS9fcn2MqbZaclVq6VtOOTjsdHUIIIYSQWoJChxjEMTC00tI1q0enyo5Od6BcrVs4Oj10dAghhBBCqkpDtRdA3CIdmSC6BNESR4+OLF2rF0dHujRBoTOfYQSEEEIImSUUu56sJ+joEINkwn/pmhwY2lixoxNf6lo6o9EnUteC4oZhBIQQQgghtQUdnVlGKa5NMeKIl5ZCpylZ2l2Dajo6g+PThujrbGkw1sMwAkIIIYTMFopdT9aT20NHhxjI0jUPOgcp0aPTIKeUFqBJlLhNpzXSPiynEAbGTOEyr80UNt0ijEAGFxBCCCGEkHih0CEGMozAh5CQTkyppWtKKdvVScXj6gyOTxvbc1sbjW3L0Rmlo0MIIYQQUk0odIhBPANDKytdA+w+nVoROjKMoG90KnIZISGEEEIIqRwKHWKQiCGMoNLSNSAkkCAVTyCBJXTaTKHT0phEa+PpgabpjMbIZCqWtRFCCCGEEBsKHWIgS9d8uBKVlq4BQHND0tierBFHBwC6hPgZGJu29iGEEEIIIfFAoUMMqlG61hihdC02oTM2s9CRz0lxRAghhBBC4oNChxjIyEAfCc6ydK3UgaFASMQ0HR1CCCGEEBIChQ4xkANDfZSu2Y5O7ffoDAih0xUmdFrNQIKBcSavEUIIIYRUCwodYhBH6dqU5eiUXrpGR4cQQgghhJRC3QkdpVSzUuq9Sql7lFI9SqkRpdR2pdQ/KKWWOz7X+UqpLyil9iilxpVSR5RStyqlXlni+/cppXSJX9e5XHulyDACP6lrURyd2g0jkEls7NEhhBBCCKkedSV0lFIrAdwH4BYAqwF8GcCnAIwC+CCAx5VSL3B0rv8D4AEAbwXwJIC/B/AjANcC+B+l1DeVUs0uzlVL2D06tVW6VjVHR4YRtJVQujbG0jVCCCGEkGrRUO0FlIpSqh3ADwGcg6zYuUFrPZx7+cNKqVsAvBfAd5VSV2itt0U415uQFVAawOu11t8MvPZJAL8G8BoA4wDeMsPhvgfgT0s47YGKFusYWUXmp0en8tK1qqWusXSNEEIIIaSuqBuhA+DPkBU5KQBvDoicPH8I4CYAGwB8DsAVlZxEKbUAwGdym18JihwA0FrvUEp9EMAXAbxZKfU1rfVtRQ45qLXeUclaqkEcA0OdOjrpKg0MDQ0jEEKHpWuEEEIIIVWjLkrXlFJdAN6f27xNa71L7qO1nkZW4ADA5UqpGys83QcAzMk9/kyBfb4KoD/3+K8rPE9NIkvX4pmjEyF1bdq/ozOZSmN8+rSgSiYUOprtewRWjw4dHUIIIYSQqlEXQgfASwG05x7/qMh+Pww8fn2F58q/74TW+qGwHbTWUwB+mtu8VCm1psJz1RzxDAx1mLrmY9CPIMzNkYIQYLw0IYQQQkgtUS9C56bA40eK7LcTQL6k7cXlnkQptRnAuhLOAwBBEXRzicefo5Ranus3qkms1DUPOkKKk0ipazE4OkMllK0B7NEhhBBCCKkl6kXonBN4vLvQTjrbOb8vt7lQKbXEx3ly7Ak8PrvIfvOUUv+olNoPYBDAIQAjuajqLyiltpS5Rq8kYyhdixIvXR1HJ2Vsz2kJb22zhM74tJcwB0IIIYQQMjM1L3SUUgkAG3Ob01rrnhneciTweHOZpwvuf6TgXuWd56UA/gDAnQDeiWxp3F8AGAHwNgBPKqXeW+Y6vSErslyHEaQz2jhmQmV7XkrF7tHxH0YwMmkKnc6WcEentTGJpoBom0pljN4eQgghhBASH/WQutYBIH9lOVLC/sF95pV5rvkFjhPlPL0AXqS1fjj4pFLqE8iGGrwKwC1KqUGt9VfKWWwYYb0jMxF0HWTpmmtHQgYRNJTh5gAhpWsxODojE6bQCQsiALLf+zmtDegZOd2bMzyRQltTPfyYEUIIIeS5RiXXjfVEzTs6yAqdPJMl7D8ReNzp8VylnOd3AFwpRQ4AaK0nkR1Gejz31D/n0uWqSkJ8ItKehU5TmUJHlq7F0aMzMmn22nQUKF0DbLdneKL6fTpjUyl8/7HD+MHjR2IbsEoIIYQQUm1m463muJoiZjyP1vqnM7w+rJT6MoA/QTbS+i0APh1pURGFiRVG4Pi7GSVxDbBL1+Lo0Rku0dEBgE4hgobEe+NmYGwKr//3+7DjWDajY+OiDnz9dy7Dgo7mqq6LEEIIIdWnkuvGenKB6sHRCZaIlXJ11hp4LIeKujxXlPMEuTPw+PkRjuMEW+j4dXTKCSIAquXoyB6dwkJnjuXoVFfofOwnO06JHADYdWIEH/tJ3cyvJYQQQgipmHoROvmrxVJimYPlZwNlnqs/8Lij4F7RzxNkX+DxmgjHcULcPTrlCh0rjCAVQxhBFEdnvHqla8MT0/jOI4et57/76GFrNhAhhBBCyGyj5oWO1joDYFdus0kp1T3DW5YFHu8s83TB/ZcV3Cv6eYKMBx6X21PkHBmAlnZcu+a8dC2GnhPp6BTv0TFfq6aj84unT2Ay5Pszndb42VPHQ95BCCGEEDJ7qHmhk+OJwON1hXZS2aLBNbnNXq31UR/nCXl9W5nnCRIUN4MRjuOERMJ3j05UR0ekrsUgdIal0Cni6Nila9VzTu7d3VvwtbufnSmlnRBCCCGkvqkXofPjwOMLi+y3GaeFw63lnkRrvQOnS8kumGH3iwKPrXMppb6llHqkhNNuCDzeVXCvmKj1eGlrYGgcjs5E6T06dupa9RydB/f3FX5tX+HXCCGEEEJmA/UidH4AYCz3+OYi+70k8PjrFZ4r/77FSqmLwnZQSjUBuCG3+aDWek/IbgsBnKOUmqnX5/rA45+XtVIPyNI136lrTRFL12Lp0bEcnfCBoUBY6lp1HJ3+0SnsOTla8PVD/eM4PjRR8HVCCCGEkHqnLoSO1rofwC25zRuUUhvlPkqpRgDvym0+oLUOc1leqZQ6oZTappTaVOB0n8TpFLX3FNjnN3F6SOhfFVl6EsAbCr2olFqaOxYA9CA7QLSqSEfHfY+O29S1OOKlo4QRVMvRCSatAcCWJZ04d2WX8dzTR4diXBEhhBBCSLzUhdDJ8VEATwJoBPAVpZRs3P8ksmVgo8gO6gzjM8g6LWcB+MuwHbTWPQDel9t8s1LqtcHXlVKbAXwst/nVMEEl+LhS6ir5pFJqEYDvIltqpwG8XWtd+BZ8TMhodOfx0ilZulauoyN6dGotXrq1Nnp0dp2whc6WxeaPzDPHo6SiE0IIIYTUNnUzMFRrPaKUegmyZWyXAXhaKfV1ZEvabgRwMbLx0G/QWj9e4DCqwGN5ri/l0t3+HsDXlVK/CeBhACuQdWDaAHwHwDuKLPkOAJcCmAvg10qpXwC4F8AEgI0AXpF7bRjA27TWPyhyrNhIJmSPjtvjT2dk6lq0eOl4BoaaYqUeBobuOj5ibG9c3InWRlMkSteHEEIIIWQ2UTdCBwC01vuVUpcgW6L2RgBvQ3aw5wEAHwdwi9b6UJFDvA/AZwGcAPCRGc71CaXULwG8F8B1AF6E7LycOwF8Xmv97Rne/5dKqU8DeFnuvechK9BakBVkjwO4DcDntNaF47FixvvAUOHoNNX4wFCtteXotJeRulatOTrSrdm4qMNa904KHUIIIYTMYupK6ACA1noS2X6dW2baN+S93wLwrTL2fwTAW8s9T+D9fQD+M/dVF3gvXbNS1yLO0fHs6IxPp41AhuaGhCW2gtjx0tVxdHafNB2dTYs7LaGzr2cUWmso+Y9OCCGEEDILqKceHRIDlqPjWEdELV2zHR2/qWvlREuHvV6NHp3RyRR6RqZObTckFFbOb0N3RxPamk6Xr41OpdE7OhV2CEIIIYSQuodChxjIHp1aK12TYQS+HZ1yhoUCQIcQOiOTKWRcZ3TPwOGBcWN7WVcrkgkFpRRWzW8zXtvfOwZCCCGEkNkIhQ4xsOfo1FbpWqPYfzqtvQoJK1p6BkenMZkwmv4zGhidird87VC/KV5WzGs99Xj1AlPoHOyj0CGEEELI7IRChxjIfg3nA0Mjlq4ppWLt07GHhc7c1jantbqzdA71m47OynmnxQ0dHUIIIYQ8V6DQIQZxp66VK3SAeJPXpEjpaG4ssOdpOqscSCCFTtDRWbWg3XjtAB0dQgghhMxSKHSIQdK30ElLoVN+4pc1NDTtL5CgnGGhhfYZijmQwCpdmx8oXZvP0jVCCCGEPDeg0CEGVry0Y7MkFbF0DbAjpn06OiNlDAvNY0dMxyt0DvZJR+e0uFnW1Wq8dnTI3JcQQgghZLZAoUMMfJeuTTkoXatqj04Fjk7cpWtHB03xsjwgbpbMbTFeOz44GXsqHCGEEEJIHFDozDKUUgW/SiEhPhG1WLoWa49OBWEE1RQ60+mMMRtHKWBhZ/Op7Y7mBmN9U+kM+sY4S4cQQgghp4l6PVkrUOgQA9vRcXt8L6VrKX89OmOT5rFLETpyn9HJ+IROz8gkgtp0fluT9T1eKlydY4MTcSyNEEIIISRWKHRmGVrrgl+lUB+la2JoaMqfoyNn4LQ1JQvseZr2ZntoaFycGJo0thfNabH2WTJX9OlQ6BBCCCEkQNTryVqBQocYyIGhrj/PXkrXPAod6ei0NZXv6MQqdIaF0AmUreVZOkc6OgwkIIQQQsjsg0KHGHifo2MJHQdhBHE6Os0zOzqW0ImxR+fEsOnOhAkdGUhQS47OzmPDeHh/Hyam/ZUjEkIIIeS5wcy3p8lzCil00o6bdFLp6D06cTo641PmBXd7CY6OLF2TYsknx63StRBHpwZ7dKZSGbz/64/ix08eAwCsnN+Kr7ztUqztbp/hnYQQQggh4dDRIQYydc116ZqMgm6oaGCojJf2d/d/dEqWrpXg6LTI0rX43ImTwtFZHNqjU3uOzr/evvuUyAGys4De/dVHGH1NCCGEkIqh0CEGcZeuNblwdDzGS49VEEZgl67FNzDUCiMIKV1b1GkKnZMjk9Y+cTI2lcK//3q39fzTR4fw06eOhbyDEEIIIWRmKHSIgW+h46J0zUpd8zgwdFS4MbIsLQxZ3iaP4ZPjwtFZ2Gk7Ot2dTcZ2T5WFzm3bj1nOWZ7vPHI45tUQQgghZLZAoUMMZOqaaw0hRUljQ207OuMVODpyYGhV46VDHJ0F7c3Gv/PA2LTXQIeZ+MmThV2b23eetFw1QgghhJBSoNAhBgmhdFznpVupa1JZlYDdo+PnIj2T0RibLj9eulpzdNIZbbkzC0OETjKhML/ddHV6R6vj6mQyGvfv7Sv4+lQ6g4f398e4IkIIIYTMFih0iEHspWtOHB0/pWETqbQRxtDckECyBGHWLiKoRydTsQzYGhyfRrB3v7OlAS2N4Q5Ud4cpgHqGp3wurSA7jw9jYOx0D1NnSwNec+EKY597d/fGvSxCCCGEzAIodIiBvI53HXrlZo6OefE+6cnRGZPR0iX05wDZ9QVDFlIZ7TUCO0+fcGUWCNcmiHR6qtWn8+A+0825ZM18XLWx23juoX10dAghhBBSPhQ6xEBJR8ex0pkSjk5DBaVrcfXojE2WHy2dR7o6cZSv9Y2a6W7ziggd6eicHK6O0Nl+eMjYvmjNfFywap7x3FNHhxgzTQghhJCyodAhBraj47p0TcRLV1C6Jnt0fLklctBneUJHJq/FIXRKd3S6O8zXqhUxveOYKXS2LpuDFfNaMbe18dRzI5Mp7O8bi3tphBBCCKlzKHSIgexBqcXSNSmOfCWG2TN0SitdA+xZOsMT/oVO76jZZyMDB4LUQulaOqOx8/iw8dwZSzuhlMKZy+YYz28/Mhjn0gghhBAyC6DQIQb+B4ZGL12LK3XN7tEp3dGRQicOR6dfCJ1yStd6RuIPI9jXO4qJQNnhgvYmLMytyxY6pvNDCCGEEDITFDrEQOgcuA4Lk6LESemap9Q1OeizHEenGhHT0tEpXrome3QmCuzpjx1HTTdnS87NAYAtS0yhs/vESGzrIoQQQsjsgEKHGEhHJ+25R8dF6po/R6fyHp2OKgwNtRydttp2dHafNMXL5sWnxc26he3Ga3t6RmNZEyGEEEJmDxQ6xCAZd+lasnZT10anKnd0Oppk6Zof1ymI5eh0lN6jU43Utf29ZsDA2u62U4/XLewQ+45aIpkQQgghpBilX7mR5wRhpWtaayt2ulKs0rWKHJ14enTGhaPTHsnRmS6wpzv6x0p3dOa3N0Gp06WJg+PTSKUzaKjg36NS9veaLs3qBaddnLmtjVjY2XxKgE2nNQ72j2Ntt+n0VIO9PaP47K+eRe/oFK5YvwBvuWJNRc4kIYQQQvxCoUMMlFLGBTCQfexI5zgpXbMcnVRMPTolDgwFwnp0/Ds6fSOyR6e5wJ7ZdL25rY0YGDstwAbGp62SNp/sE47OmgWmiFnX3W44TbtPjFRd6Ow+OYKX/8vdp1L0frnjBB49OIDPvOF8ZzcDCCGEEOIG3oacZWSFSvhXqfjq00lntBFXrZQdZ10KVo9ObPHS5aSumfvGMkdHOjrtjQX2zCLjp2WPj09GJlNGpHVDQmFZV4uxz/pFZvnanp7qBhJorfHn391mRYX/6ImjuG37sSqtihBCCHGPi+vJWoBCh1j46tNxMUMHCHN04unRKat0rdkUGSOe5+iMTaWMqOamZMKKuJbMF6VtssfHJweEm7NiXqtVNrdWODwH+8a9r6sYTxwaxH17+kJf+7c79sS8GkIIIYTMBIXOLENrXfCrVHxFTEuhU0l/DhDSo+NJ6IxHCCOQM3dGpvwKnd4R282Z6a6LnLMTp6NTrD8nz4p5rcb2of4xa584+eZDBwu+9tjBAew4xlk/hBBCZgcuridrAQodYuFraKiLxDUgRkdHlJtFGRjq29GRQQTzi/TnnNpHODqy9M0n+/tkf06btc+KeeZzB/ur5+hkMnrG8rSfP3U8ptUQQgghpBQodIiFbJtJZ2qrdC0uR2dMODqt5cRLN8t4ac+OzqgUOsX7c4DqOjpHBkzRIkUNAKycbzs61bqTtOPYsDFrqKO5AR952ZnGPr/YcSLuZRFCCCGkCBQ6xMJ2dNwc11XpWlypazKMoJweHTt1za/QGSgjWjqPFEN9o/4jsPMcGZgwtpeKIAIgGzEdFIwT05mqDDYFgLuePWlsX7ZuAW7YusR47rGDAxieiO97SAghhJDiUOgQi4SwdFzdRXdWuiYE0nRaI+NKjQWQjk5ZA0NjFjpD4+bx57aW4OgIMSTL33xydNB0dJbObbX2UUrVTJ/O/SKE4OqN3VgytwUbA8lwWgOPHhiIeWWEEEIIKQSFDrGQpWu+HJ1KS9eUUpar42No6Kh0dMrp0WmJt3RtaNx0EuaUIHRkvHRfjKVrRwdNR0dGS+eRJW2HqtCno7XGE4cHjecuXjMfAHDRmnnG8w/t749tXYQQQggpDoUOsfAXRuBG6AB2n46PQIKxSdmjU3kYgRw+6pohUTI1p6WCHp2YHJ2J6bQhqhIKWFhgUKl0dA5WwdE5PjRpDC5tbkhg0+Ksk3PBKlPoPFJjQmdoYho7jw1jYtr/wFpCCCGk1ii9Foc8Z5CxxK7KwmTpWmOFpWtA9mJzOLCd7dOZ+eK+HGTpWnsZpWvNDQkkE+pUkMNUOoPJVNoaduoKOcSys2XmtVqpazE5OtLNWTynxZqhk2fl/Oo7OtuEm3Pmsjmn1nvBalPobD8yCK111Qeqaa3x2dt34//+/BlMpzXmtzfh715xNm48a8nMbyaEEEJmCXR0iIW85vRVutYga+TKQAoG18lr6YzGuLgL3tpYukhRSsXq6liOTik9OlVKXbP7c8LL1gBguShpOyZEUhxsOzRgbJ+9fO6px2sWtBufi/6xaRwbin+Nkq89cAAfv23nqZsLfaNTeM/XHsGjB2rLcSKEEEJ8QqFDLOIqXSt0F78UfM/SCRM5MqRhJuKcpSMdnTklODpzWhqQDPw/jU6lYylxOmolrtlBBHmWiJAC6QbFwfYj5iDQswJCJ5lQ2Lyk03j96aPVHRw6MDaFj/14h/V8KqPx1//7VN0NeyOEEEIqhUKHWPgSOnIeT9TStSCuHZ2xCMNCC73HZ/KaDCPoLKFHRyllJa8NjPmPR7YcnTmFHZ0l4rXjVXBLnj05YmyfsXRO0e2njw6jmnz74UMYKiCqHzs4gPv39oW+RgghhMw2KHSIhWwvyDjSECkZL52oXUfHHhZaidAxXRU5l8cl8sJ2bmtp/UQLRPla7+hkgT3dcWSwdEdnYWez4Tr1jU7F2lg/MZ3GwT4zAGHdwnZje+tS09F5qoqOjtYa33jwYNF9vvPIoZhWQwghhFQXCh1ikUzElbpWw45OhCCCPHHO0pGDKktJXQOAeWJoaH8MQ0OPDpiOzrIiPTrJhLIS2U4M+Rdjefb1jho9asu7Wq15SluEo7P7hOkAxcnuk6PYFTh/MqHwideca+zz423HnP+8EEIIIbUIhQ6x8FW6lsr4dHTc3uWXPTotZQQR5JHiyFcYgdbaGhhaSukaEDJLJ4aI6RPDplBZUkToAMBi8bosffPJs0K0bAgMCM2zfqH53N6eUS8DbEvh9p0njO0r1i/Ay89bhu6O0//Ow5MpPFxjMdiEEEKIDyh0iIVVuuYpdS0ZydHxm7omy6PKSVzLI0vXfA0NnUxljIGpjUmFlsbSfrRlj04cyWtS6Cwq0qMD2D08caaa7T4xamxLUQNkxWJX22lhOZnK4PBA/DHYAHDHMyeN7es2L0JDMoFrNy0ynv/1LnO/ajKVyuA7jxzCx36yA9955BDdJkIIIc6g0CEW3hwdOUcnQrx0U9Jz6pooXWuroEenI6YwgrBhoaXOcYk7jCCd0egdMYVO0G0IQzo+cUZMyyCCMEcHANZ1m307e3pGQ/fzyXQ6gwdE0MB1mxcCAK7Z1G08f9euntjWVYzhiWm89nP34gPffBz/evtufOCbj+N1/36v1zJPQgghzx0odIiF1B++UteixEs3N3ru0ZGlaw7CCHw5OnbZWun9REEnAgAGxv06On2jU4ZDOLe1ccYhqpbQidXRKU3oSKdnz8n4+3R2HB02BP+izuZTAuzKDabQeerokNdwjFL50PeexGMHB4znHj0wgA9978nqLIgQQsisgkKHWFiOjiMNMZ1xF0ZgOzpu+18mZOqag9K1EU8XlpUMC80zV+w76NnROSnK1hZ2NhfY8zQyYjouR0drbSWureluC913nSV04nd0Hj1o9t1csGreKWevu6MZaxacXns6o/HEocFY1yfZdmgQ33vsSOhr3330MLZVeX2EEELqHwodYhFX6VqUMALfjk7YwNBykalrvhwde1ho5UJnYNyz0BFlazJRLYxqOTqD49MYDvybtTQmCq5XRk7v6Ynf0Xn0wICxff6qLmP7glXziu4fN//2691FX//3O/fEtBJCCCGzFQodYiH1h6tB6jKMoCGSo2MKD+c9OlLoVFC6Jvt6fKWu2cNCyyldkz06fkvX6snROdhnBgqsnNdWsPdpvRQ6VXB0ZAnYeSu7jG0pfB45UL3ktcGxafx0+zHjud++Yo2xfdv2Y94/j4QQQmY3FDqzDKVUwa9SkY5O2lO8dKPDHh3vA0MdODpxhhGUit2jU4Ola8LROTE8GUt88wFRtrZyfnjZGgCsmGe+dmxownk5ZTGGJqaxNxCAkEwonL1irrHP+cLR2X64eqVhP33qGKYDDu/a7nZ8+CVbsSrwPZ5KZfCTJ4+Fvb0qnByexN/88Cm8/t/vxZ98+3E8e2K42ksihBBvuLierAUodIiFv9I1ES9dw6lrVrx0DYcRWKVrrWU4OlXu0VlUgtBpaUwaLlU6o9Efw53+g/1C6MxrLbhvS2MSi+ec/n/RGjgyEF9owjPHzIvudd3t1mDTjYs70BD4mTsyOFE1x+THQsDcfPZSJBIKrzh/ufH8L3eYc4GqxYHeMfzGP9+FL9y1F/ft6cM3HzqE3/jnu/Hgvr6Z30wIIaRqUOjMMrTWBb9KReqPct5bDMvRiSB0vPfoeAgj8Je6JkvXSnd0ZHDBwPi0s3/vME4Mmxf/pTg6YfvJXh8fyCCCYo4OAMONCHu/T3YIobN5Sae1T3ND0kqNk++Lg+l0Bvft6TWee/HZSwEAL9y62Hj+rmd7rJsOcZPOaLzv649avWHj02n83n89YjmqhBAyG3BxPVkLUOgQC9vRcXNcK4wgQuma79Q1H2EEvkrX7DCC0h2dlsak8f+WzmivM0wqKV0D7NACeRwfHOw3e3RkeZpkpXhdOkI+eea4KVi2hAgdADhj6Rxj++mjQ97WVIgnDg0YpaELO5txxtLses9cNsdwxsam0nh4f/V6iQDgR9uOWv1PeXpGJvEvv3o23gURQggpGQodYmH16DhSOjJeOkoYQbMQHr5T1yqboxNTGMFE5Y4OENKn47F8zUpdq9TRiUPoCEdGOjaSFZajM15gT/dIZ2bT4nChIwXQjqPxOzr3PGu6OZevW3Cq5lsphWs3LTRel0NQ40Rrjc/OIGS+dt+BmhtwOjqZwhOHBnBkIL7PICGE1CIUOsRCpq75ipdujBIv7blHR5autdVwvLQsXStnjg4QMkvHYyCB5eiUEC8NAIs6zUAC30Ink9E4LBydlfML9+gAdg9PXI6O1ho7j0lHZ07ovpajcyx+R+deUbZ2+foFxvbFa+Yb29UUOk8cGjREpFLAre+7GgvaT6cVDk+m8L1HD1djeaF85d59uOSjP8dLP3M3rviHX+LdX32Y5XWEkOcsFDrEQjo6rsoxZRhBNEcn5h4dF2EEUykvta1RStcA29HxJXQmptPGWpMJhXki3roQ0tE54VnoHB+ewFTg89rV1jijUyZ7eA7F1KNzYnjS+Ddra0piRYHghC1LTUfnmePDsSTY5UlntDW/5/J1ptC5ZK0pdB492O/857tUfvC4OdD0+i2LsXXZHLzx0lXG8z98Inzwadx89f79+PD3t2M08Pvr1m3H8I4vP2T9/iWEkOcCFDrEwlfq2nRGDgx1mbrmt0enpQJHpzGZQFPD6XVmtH1cF0QuXWuVs3T8CB3pwnR3NCFR4mcg7tK1Q9LNmaE/B7CFjuzx8cWu4+Zw0o2LOgp+Xxd2NBsO3sR0BkcG4ytv2nNyxPgZmN/ehNULzO/bqvltRhrfxHQG24/EH4WdyWhLwLz8/GUAgFddsMJ4/oG9fVbQRtwc7BvDX//vU6GvPbC3D/959754F0QIITUAhQ6xkBHprnp0bEfH3Rwd13d8rXjpCoQOEE8gwdB45fHSQNgsHT+Rw7I/R5ajFSNuoXNcJGwtnTvzWpfMaUFjwKXsG53yVq4YZG+PKXTWL+wosGe2B6aaw02fOGQKlrOXz7VmMiilcNEac+bPtirM/Hn62BCOD53+nLU1JXH9lmwq3JrudmwNlAFmNPCLp6sbhf1/f76r6O/BW365q6Z6iTIZjZ88eRQf+d+ncMsvdsWaUkgIee5AoUMs5HwbZ6VrTh0dU3g479ERQqetgtI1wA4kGPMQSDAsB4aW26MTUxhBmKNTKlbqmud46eAFLgAsnjOz0EkmFJZ3xd+ns7fHPMea7vYCe2ZZJ4TQ7pMjBfZ0jxQs54ihpnnOXt5lvu9Q/ELnrl09xvYV67uNEtYbz1pSdP84OTE0ge89ZvYJ/fGLNhtlrMMTKXz9gQNxLy2UsakU3vzFB/C7//UIvnj3XnzqZ8/gBZ+6wyoVJISQqFDoEAtfqWtWGEENOzpjDnp0AKC9ya+jk0pnjHp8pYCOpvIcnbjCCPpGTadoQYlBBED8js4J4egEI4+LYZWvxZC8tq/XdGTWziB0pOMTp9B54tCAsX328kJCx3y+Go7OXc+awuWaTd3G9tUbze27d/c4+11ZLv/zyGHj3Ou62/G7167Hb1+51tjvaw8cqPoMDK01PvCNx63v72Qqgw984zE8xCGshBCHUOgQC0voOBsY6i6MwO7RcVy6NhW9Rwfwn7wmgwg6mhtK7nvJY/fo+Clds4ROe+mOzvz2JmOQ7eD4tPO+rCCydG1RCY4OACybazo6R2Pof9nXU57QWVel0rVUOoOnxNyec1Z0he575jIzHW7XiZFYB4dOTKdxv0h7u2qDKWzOWdFlOCYDY9NV6SXSWuNbDx80nnvjpauQTCi85fLVRjnlnpOj2H4k/qS9ILdtP46fbD8W+loqo/Gn39mG6RoKTshkNH7x9HH87Q+fwj/97Bkr4ZAQUttQ6BALabS4ugM4LQeGRomX9p265qhHJyx5zSV24lp5ZWtAfHN0ekdMoTO/DKGTTCjLAeoZ8SPIgMpK1wBgaZe535EBvw3qqXQGB/rKK12rlqOz++QoJqZP/5wu7Gwu6JTNa28ykuPSGW3NCvLJk4cHjd8py+a2WAIymVC4Yr0pfu7fE78bsfvkiCFWG5MKr8yFJSzoaLbmEn3/sepFYWcyGh+/bYfxnCyV3nViBN99pDbiusen0nj7lx/E27/8ED5/1158+he7cOOnf41/vX13tZdGCCkRCh1iYZeuuTmuDCNodOrouLvbO53OGP1EyYSqeK12GIHbu9J24lp5ZWsA0NUqwwh8la6Z4mFeGUIHCOnT8Vi+dny4stK1uB2dwwPjxme1u6PZ+sxJVi9oM/rjjg9NWn1ePnjmuClUzlg6xwoiCFLN8jUZgX3Rmvmha710nRmF/ciBfp/LCuXnIgTh8vXdxk2El523vOj+cXLHMyexOyDKkgmFW993NV5zoZli9x937qmJErs/+Maj+NXOk+J54GM/2YFvPniwwDury8R02qvbTUi9QaFDLGTpk7OBoaJ+Xd7JK4dm4bC4dHSsIILGZNELsmLIMALXpWtRh4UCdhjBoC9HJ0LpGgAsEmJD9tG45IR0dEpMiJOOzlHPjs4eq2xt5hjsxmQCq0QvURzla7uE0Nm0qHA6HACcJYTOzhiHmz560BQsF6zqCt3vwtVmOtzD+/tjv0D/pRAuLzhjkbH9vC2LjBs1e3tGrXLHuPjyvfuM7ZecsxSbl3TifddvNP4e7Doxgvuq4I4F+f5jR3Db9uMFX//ID5+ySlyryeMHB/Caf7sHZ3z4J9j64dvw1v98oGr/zoTUEhQ6xMLXHB2XYQQ+e3TksNCWCoMIgJDSNddCx0npmujR8RQvLXt0yildA+JLXhuZTBmhEU3JhFXeV4ilwtE5PODX0ZEXMmsWFC9byyP7dGSggQ+eEfN+Ni3uLLBn+Ovy/T55ZP+AsX3+qnmh+52xdA5aAmW0J4Ynvf+bBxkcm8ZD+01B8PwtptDpaG7AxWtM5+n2nfG7On2jU7hTJNO9LReWsHJ+m5ViV80Su+l0Bp/46U7juXltjYZgHJlM4VM/fSbupYXy62dO4jWfuxcP7uuH1tlSz1/tPImXfuYu7IjxBgEhtQiFDrGQVVrOUtdkGEEkR8dfj44UOpX25wD+5+jI0rU5LkrXPDk6dhhB6alrQHzJa9IpWjSnuWRHb5lwdI4PTXhN4rKEzgz9OXlWzTf3O9DrPwb7mROmo7NxcXFHZ7MldIZjcUuODo7jWOAz0NyQwBlL54Tu25hMWIEKD++Pr3ztwX19CH68Ni3uwIqQ4bbP22yKnzueOWnt45sfP3nU+FnYtLgD567sOrX9alG+9qNtR2MNoAjyvUcPG0ODG5MK3/69K/AXN2819vvOo4dwbLC6rs6RgXG8978fDf0bODSRwju+/FAs87xK5djgBD747Sdw2d/9Apf+3c/xh998PNabA+S5B4UOsbAdHTfHtcIIatXRcRREAPh3dKwwggpK19qaksadyslUxvkFhtbadnTKmKMDxCd0Kg0iAIC2pgbD/UllNHo8zvzZJwTKTIlreVYvMC+G93se1jiZSmO/WOvGGRydFfNajZ+9gbFp7/OTALs/5+zlc9HUUPh31QXC7ZHv98kDIor58nULQve7drMZSPDgvv7Yo7B/9MRRY/s3zllmbF+9odsoZx2eSOGe3dWZTfRf9+03tl970UqsX9iB37pstfGzM53W1r5x83e3Pl10JMCh/nHc8otdMa6oME8fHcLNt9yJbzx0EMeGJnB8aBL/88ghvPjTd1ZlVlYpjEymMDA2VfWeMVI5FDrEwurR8eTouAwjmEpnnP0ikkLHZema8zAC2aNTgaOjlMJcK2LaraszNpU2xGhTQwLtZX5fpdA54cvRqTCIII8sXzvi8W6lvBMqe28KsUoIHZnc5po9J0eNC+vlXa0zhiYkEspyfZ455r98TUZEB12HMM4Tr8cZMS0jsC9ZGy50Ni7qMEpFRyZTePpofCVNI5MpPCDW+pJzTaHTkEzgprPN8rVf7oi/xO6Z48N4PHDRrRTwu9euB5DtK33n1euM/b/zyCFnfyPL5YlDA/ihEJB//KLNeOOlq4zn/vPufV57Gkuhb3QKb//Sg1avJpAdF/DWLz3ofT5aOTx5eBCv/dy9OOsvb8N5H/kZXvhPv8ZPC8Sik9qGQodYJGPq0YkSL51IKG+ujixda4tUuuY5jMBKXSvf0QFCIqYd9+mEzdApN+BB9uj4ckqsGTolBhHkWTY3nohprTUO95tCZ3lXa4G9TaQg8l26JhPXNswQRJBH9unsPO4/Yvrpo+Y55EwfyVnLzdefOjIUy4Xv6GQKT4okuovXhvcSKaVw8RrzNSk8fHLv7l4jjGZdd3uo+yj7i36142Tsd9K//fAhY/uK9QuMQcAvP3+54TQeGZzAvXt6Y1tfkP+4c6+xvXXpHPzetevx5y8+A0sDv4em0hl84a698u2x8rEf78CRImV+PSOT+KsfbI9xRYW545mTeOW/3mP8jDx7YgS/8/8exn/8ek8VVxbO3p5RfP7OPbjlF7tw+84TVRtcXKtQ6BALqT9cDQyVQ+CiDAwFYJWTTDnKwbZ6dCI4Om1NcZeule/oAP77dORdvHKDCACguzMuoVN56RoQkrzmKWK6f2zacB9bG5MlhyasmNeKoM48NjThtR9ilxVEUKrQMfeTyW0+kE5Hof6cPMu7WjE38PMzOpWOJdzhkQNm+dm6he1FRbkMJIhT6Pxa9ARdI2b75Ll8XTeaA7/XDw+MY9eJ+EIotNb48ZOmQ/KaC1ca2x3NDVZwwv8+fsT72iQnhifwE7HWP7lxMxIJhfbmBrz7uvXGa1974EDVep6ePDyIbzxkxnG/7qKVeMvlq43nfrTtaKw9bmHsOTmC3//qIwX7fj9669P45Y7CaXxxkkpn8He3Po3nf/J2/O2PnsanfvYMfvs/H8QrP3s3DvX777usFyh0ZhlKqYJfpeKrR0fGS0cJIwBg/EEEgMlpR0LHYY+O9zCCcU+OjmOhI2foVCR0Qubo+LjbKx2d6KVrfhwdWRK3fF5ryT/nzQ1Ja+aPzz+Mu6wgguL9OXnidnT6R6dwNHDXuTGprAGrEqWU5fpsP+K/LEz2Al0ihIzkUlHW9uC+vtjckl/vkkKnO3S/1qYkrlhvrlMmtflk5/FhHOw7/XPV1JDAC7cutvZ7+fn2bKK4y9e+9dAho+913cJ2Yzjsay5aafU83Val0qt/u8McsLphUQf+9hVn4UMv2WrNy/q/P69ekp3WGn/xvSdn/Dv9wf/ZVrQvKg601vjz7z6Jf//1Hsgf48cPDeK1/3Zv5PhzF9eTtQCFDrGwhI6rHh2H8dKAR0dH9ui4DCOY8p26VpnQkT06g45L13pHos3QAbL9R8F/84npDEan3N+htGbolOnoyPIxX47OoQrL1vLI8jUZFuCSvSIdrtLStV3HR7xenEs3Z8OizqJBBHnkzJ84hM5T4hwz9RKdsbTT6IvrHZ3y3psFAAf7xozPVlMygcsKhCYAwNUbTbfnvhjLwn4m5uZctaHb+h0OZEMfOgPP94xM4tGDA76XZ/CDx0wX6U2XrTYuQFsak3iFEGTfesgsy4uDg31juHWb6Tz96U1b0JhMoCGZwJ++eIvx2p27eqxS17j4yZPHcM9u8/P2Fzefga++41JjztPJ4cmql7B9/cGDlksW5MjgBN7334+yjA0UOrMOrXXBr1KRgzy9xUtHLF2zHR03F73S3m9tqvzHxO7RcXth7qp0ba4oXXN9t8qeoVOeSwJk7y5ZfToemlePRw4jED06nuJnZRDB8nnlCR0rec2T0MlktHXstSXO+1k6t8W4OB+ZTHltWH5KCJ2tM5St5bEdHf+BBE8fK2+tDSFR2I/HkHQl5/ycv6rLKukNIkXQA3v7YnNLfv60KXRecIbt5gDZm2wyye5nT8VXzvTsiWHD3UwmFF523nJrv9dcZJbd3b27J/aG/6/ef8CKQA/2Yl2+boHVP/bVKiTZaa3xmV89azx39cZuvP2qtbhyQzd+71qzFPCLd+/1mqhZjN6RSfz9rU8bzy2e04xL1pqu7v17+/CtImJoJlxcT9YCFDrEIq6BoVHCCAB/js6YDCMo8kd5JuzUtToJI3BeuiaFTmXrlH06ruOGtdZ2GEGZjs6yrnhS1yoNIsizUgYSeLq7f3RowggKmdvaiHklOnpKKawVw033eJz2LoXOGUtLK7ELK13zeTEwMpkyxGNCAZuXzLzWc1aaztMTMbgQD+4zey5kr5Bky5JO48bL4Pi0Jep80Dc6ZQm/F5yxqMDesEra4hzC+qMnzBK0K9YvCC0H3ryk0/hsam2LOZ9kMtoa/PqOq9YZzpNSCm+6fI2xz3ceOWz1yvrmrmd7DCdWKeAvf2PrqbX+3nXr0R0YiTA2lcZ/338g1jXm+dTPnjGGhbc1JfHVd1yK/37nZbhyg3mj4BM/3YnhieqW2VUbCh1iIVtnXAkdGUYQJV4ayPYZBHHWozPlsXTNeY+OcHQqiJcGbKHT7z2MoHxHBwAWitk7rh2doYkUJgKfo9bGpFGiUgqL57QYjf49I5NOB9rmOTxgCpNyhY50dHwJHTnUtNRZP3nWdZtlbntO+hM6MnGtVEdnbXeH0cvXNzplhVq4ZKe48F/b3V7S76lzhaPzRAyOzsNC6Fy0JjwZLk8ioaw70/ft8R+cIEvkti6dU/Qmx3WbFhl/K3ccG47tDr8sBbv57KUF973xTDM4Ic4+nfv29ho9b62NSdx8jr3WG89cYvYTTaZijxb/0t37jO0XbV2CDYtO3zxob27Au64xXZ2v3n/Auq7xzYmhCasE8f+8YBM2LOpEMqHwj68+Fy2Bgeo9I1P47weqI8hqBQodYiFL17yFEdRoj45VuhZF6Ag3aGwq7awMQ2tt3amp1NGRpWsy5CAqtqNTfo8OEBJI4PjCQs6aWDynuezGy6aGhLFOre2AAxfIkIOyS9fmm4Jjv6ekMNmfU7bQkY7OST8pXKl0Bs+K0ISZEtfyJBMKm4Sj4rPPQPbnlLrOc1aYjs62w4NIebxQGxybNkqslAIuWF1c6AB2+VocfTr3it4MeWdcMret0erNkv0dPjgyMG6Vrd0gxEyQF4mEuLuf7bEqAXzxvUdNN+dFZy4O7XlqakhYpXc/fCK+JLsTwxO4XSQDvvOaddZ+r714pXE9cGxoAj+PsWQRAL549z7jWmfl/Fa85Yo1p7aXd7Vas56+eNc+Lzfb6gUKHWIhL+yc9ehYpWv1krpW+Y9JMqEsoeQqkGB0Km2I0JbGREmN02F0tYmBoa7DCOQcnY7KhI4cGura0ZF34cstW8sjZ+kc9dCnY/XolBtGIBydg/3jXnohpKOzpsT+nDxSGPkqXdvfN2akWC3qbC65xA4ANsvhpj6FztHKBNnyrlaj/GZ8Oo1nPQlHIBuBHWTz4s6SAlMuFY7Oowf6vfcF3LPbTHe7fH1xoQMAV24w0+PujiEhTkZ1X7Cqq+iNo42LOoyfoem0xp3P+F9nKp3BbSLc4RUXrCi4/2+cazo9v9xxwnmpdyG+/+gR4zpn8+JOXLCqy9pvbmsjXnGBKci+I8ScTyam0/jq/Wb/0u9cvc76u//WK9cars6xoQn8aFv8Eei1AoUOsZBGi7PUNRlGEFHo2I6Om5pea2BohB4dwC5fkz1AlSJdl0oT1wD/c3RcxEsDYY6OW0FmR0tXJnSWWELHbZ/O2FTKcMkaEqrstc5tbTScvKlUBsc8OE/S0VnT3VZgz3BkvLMvR0fO+ik1GS6PFYV9zJ/QkelwpZbYKaWsQIInDvorX3twn1lyNlPZWp4tSzrRFgih6BmZslIGXXJ8aAK7AyWRyYSasZcIAK5cbwqdu57t8S7I7pAziTaGzyTKo5Syeo3uFHHfPnhof78RajOvrRFXFhGP563swoqAKz2ZyuAXMfUTySGxr75wRUEn/3Ui4OH2nScwMOb271Ahbtt+zAggmt/ehFeLOU/5518r1vmNBysPJah3KHSIhY85OpmMto4jS+TKxZejMybjpSMMDAXs5DVXd6nsxLUIQsdzGEH/qHm8SuKlAdvRcZ0gZCWudVbWSyRn6bh2dGTAwZK5LRX9PMk+nYMe+nT29kYrXZP7H+wf91KGsftkNKEjwwB8OTrpjLZE1NZlpQkdwC5fe/zQgItlhSIdnVLEA5BPiDPXKY/lElkad86KuSWVAV+0Zp5xw+3wwLjXyO5UOoO7njXdmELDV4vtc+cu/4JMipTnbV5UtFxdKWX17/ziaf99Ovt6Ru0Eu/OXFdz/nBVzLYfs1m3x9D1JQfaqC5YXHGj+ZjGM9b49fd7Kk2sdCh1iIYVO2sEvxOmMHUQQdehUkwgjcNajM+WuRwfwF0hgJ65V7jz5jJeeTKUNcZdMqIrdJ+nouG7+jTpDJ4+MmD7mWOhEnaGTx3fyWiqdscTTmjKFTntzA5YE/h3SGe3lYvLZExGFzmIpdEa8lALu7x01ymvntzdhURmCXAoIXzN/MhmNJw+bxz5vhlk/Qc5fZbo/ckCqS6TQkUNLC9HSmMRFoufogb3+ghMePzRg3dGXAzfDuHjNfOPG4OGBca/phUB2iGqQ6wtEdQd5odjnjmdOeu0hA+y0vEvXzseizsK/95VSeNl5phD6weP+y9cOD4xbIvdVFxYuBdywyC6/q8YcpVqAQodYyDvDLu78uI6WBuLs0XErdFw5Oi5L1zpbGo2ksJHJlLM0GRlEMK+tCYkK3Tzvjo4VLV2ho+M5Yjpqf06elfPsPh2XHBmYMPpeFrQ3VfQ5jSOQwBI6C8sTOgs7mw1ndHw67aXcKiwCu5ybRmcuMy+Mdxwb8jJUcG/vqPG7bm5rozWkthjnC1HkcyDnw/tNt+jStaUJHcB2qR7a5895+rXorblqQ3dJv0tbGpNWkp3s9XHJ7pMjRslqY1Lhmk3dRd6R5fxV84yfocHxaTziUeACsEIIrts8s0MmgxMe2NuH/lG/5Ws/eOwIgpdiZy+fiy1Liju5snzte48drrsZOC6g0CEW8vemiz+CltCJGC0N2D06k44uzC2hE2FgKAB0WI6Omx4dl6VrYS6Lq+S1XtFHU2nZGgCjkRrIOjouf3G76tGxHB3HvS9SOJWbuJZHXni6Ll2TZWvlujl5LKHj+G50JqMjl64ppew+HQ/la7I/54wZLnYkizqbjZ/BiemM1UflgicPm70/Zy+fW5YgO0/cjX7qyKCViOmCoYlp7AqIXKXscxdDCp0H9/tzdO7fazpPV2+cWTzkuTakfM0XvxLR0JetW1BSKWAyoXCdWOcvdvjr05mYTltpe8/bXHh2Up613e2Gg5vR8B6HLecfvUqEIoRx8zlLjeukQ/3j2HbYf6R8rUGhQyzkHSIXN/tk6VrUIAIgzNHxE0bQ2ug2jKAWS9eAkD4dR0LHVbQ0kBWNwX/3yVTGaTKPTF1zJXRkFHRUog4LzSOFjuuSsKiJa3nWilk6ex3P0jk6NGGEhHS2NFjuYSnY5Ws+hE5liWt5lFJWT490iVwgZ/ScvWLmEqsgizpbjOb06bT2Umb3+MEB4075xkUdZbmO563qMqog9pwcRa+HeTqTqbRVvidjuItxtQgtuH9Pr7eyMFli9fwtM4uHU/uK8rVfeuzTuXdPrzHMeHlXa8k3OOTA2J95jJnuHZm0etSKRYrn6WxptITjj8QMpucCdSl0lFLNSqn3KqXuUUr1KKVGlFLblVL/oJSaWeaWd67zlVJfUErtUUqNK6WOKKVuVUq9sszjLFVKfVQp9WRuvb1KqfuUUu9XSlV2NeUJO4zAh6MT/aPna46O7ejUSRhBhNI1wF/ymiV0KoyWBrIXab7K17TWOCHCCMrpfTDf53doqFW65sjRcS107Bk65SWu5bEdHbela2H9OZX0EMpZOj6S1yxHp0yhA9gpbXIujwvkneNSekkkdp+O+7KwR/YPmOdcWVoyXJ6O5gbr+/nQfvfrfPLwoHFRvnSuKQRnYtPiDsMRH51K40kP/+5TqYzVp3TVhjKcp40LDeG468SI89TKPHfstMvWSv25l0Ln17tOenEcgaxbFLwMO3PZHCwr8eaWDHj40RNHn3Pla3UndJRSKwHcB+AWAKsBfBnApwCMAvgggMeVUi9wdK7/A+ABAG8F8CSAvwfwIwDXAvgfpdQ3lVIzXgkppZ4H4AkAfwZgAsA/AfhPAMsB/F8A9yul1rhYswuSHuboyGjpRieOjikgnPXouA4jaPLk6MgendZojs5cMUtn0NEsHTlDZ35b5UIHCAskcLPO/rFpo5+ks7khdLhdKcihoYDboaGuHJ2lXS1GqerJ4Unr8x+FfY5K19Z3y4hpt45O1P6cPL4dnf7RKSPBrzGpyi6xA+yUNteOTjqjsd2B0JHhBT76dB49aIqSC1Z3he9YBBmb/dA+9+Vr9wvxcMna+WWJcaWU1XvkYxDrE4cGDHd0YWdzWZ/RuW2NVn/WXZ7K7H4lggiuK6FsLc/Zy+dicaCHc2wqbc1icoUsWysl2CG473O9fK2uhI5Sqh3ADwGch6zY2aK1/kOt9Ye11pcA+GcACwB8Vyl1dsRzvQlZAZUE8Hqt9Uu11h/RWr8TwIUATgJ4DYB/n+E4ZwL4PoBuAP+itb5Ia/0hrfUfATgDwL0AzgHwv0qpziKHig27dK02HR1ZuubN0amb1LVojo5MXnPn6LiZoZPHl6PjKoggj6+hodNpe95NqXf3JI3JhPXeQ/3uXB1XpWvL57Uaf6x7R6cw6DACPWriWp5NYmjo7pMjzkI9ANvN2bCos6IhwbajM+j0Lu/enhGMBi52u9oay3If8kih87hjoZPJaKsc7IJV5Tk6QEgggQdHR7okpUZ1B7l0nfme+z0InbuftRPsynVHrUGsz7oXEHt7RrG/9/TvuqZkouS0PSB7nfSCM2T5mvsyu4nptNVPJdPpitHR3GCVr/3kyXjisGuFuhI6yDoi5wBIAXiz1lreLvtDAM8C6ADwuUpPopRaAOAzuc2vaK2/GXxda70DWfcIAN6slHpRkcN9DkBnbl3/RxxnBMBvI/v/cxay/39VR5otLiJSrWGhDsIIfKWuSfu5xXEYwYijMIIhq3QtYo+Op4hpWbq2IELpGuAvYtpVEEEeX0NDjw9NGH1z3R1NaIkgxn2Vr6XSGSt1rFJHJ5lQWCNm/rgsX9vtSOh0tTUZd3mn09oSe1EIS1yrhLXd7cbvz56RKacJhmFla5WUAp65bI7Rz3mof9xppPyenlHj91xnS4M1oLYUZMT0k4cHnTqj6YzGwyLN7dK1FQgd4eg8tK/feZ/O3cLVkENVS+EqEbJw17O9zsutZKz0JWvnl+3gv0CUr/1qxwnn67x3T6/hkC2e04yzlpdXrnrT2WY/TxzziWqJuhE6SqkuAO/Pbd6mtd4l99FaT+O0wLlcKXVjhaf7AID8J+kzBfb5KoD8b56/DttBKfVCAFfmNj+XW5+B1voZALflNt+nlCr/t5djZLy0kzAC4eg0OoiXtnt0ov9hmU5njLUmEwpNEd0nb46OVboWsUfH09DQsHjpKCwMSV5zgasZOnl8DQ11VbaWx5fQOTIwgVTgl0d3R5Ml+stBDg51mRT2bMTEtSAyee2Z4+4EmQwikM5MqTQkE9gi+om2Oyxfs4IIKihbA7KxyLIHyaWrI3t+zlvZVVH0/aI5Lcbw3em0djqI9emjQxgO/N2Y395U0Wd046IOw1Efnkw5LVscm0pZ39MrNpTukuQ5b2UX2gO9sT0jk84TDH8V0p9TLpevW2BUfBwbmnAemCEHr15/xuKybxo8b/Mi47pu5/FhHOj1N9i21qgboQPgpQDyf+l+VGS/HwYev77Cc+Xfd0Jr/VDYDlrrKQA/zW1eWqDH5g2Bx6WsuQ3Z/8+qIn+IXAwM9REv7cPRCStbizrYtF2GEUy5Kl1z6+j4GhraP2oeJ0q8NFA/pWu+hoa6CiLI42to6P4+U4iUM0MlDJm85qpPp290yhDjzQ0JrJhX+Vp9Rky7CCLIY/XpOLxAk9HSckhpOfgsX5MzWiopW8tzoXB15GyeKNhla/Mq+ruUSChcskaWr7nrJ3poX79xo3DV/LaKfpYakwkrUc5ln874VNrqT6pE6LQ0Ji33yWXMtNbacl/KKVvL09XWZLmOsu9nNlNPQuemwONHiuy3E0D+L8uLyz2JUmozgHUlnAcAgiLo5pDX82seza2r0uPEigwjcFG65iNe2kfq2oQoN4hSEpTHVxjBsOjRiZy6JpyWgTE3Tf594jjzIgodb6VrInFtcZHp2KXga2ioa0dHCh1Xs3T2izuGlfbn5JHJa64cHdmfs25hh+Vql4Ps09nlSOhMpzPWWqMJHVN8uLqzn85oPHnYPNZZFTo6AHCuEDqPHXLXSC3dh/PLmJ8juWi1HBzqTkC46M/JY/Xp7HXXp2OVrVXg5px+r78+nXv39BgpmCvmtVZUsggA14vo7F84FDrbjwwZlQCtjUlcXkYfURCZEkehU5ucE3i8u9BOOlsguS+3uVApNXPYeAXnybEn8NgIP1BKLQSQP/c+rXWxq/CCx6kGVo+OA0dHJre5CSNwn7rmelgo4LN0zTxO1DACK17amaPjbo4O4NPRcV265mdoqHR0Kg0iyGMPDXUjyKQztGpBNEdnnShdkwM+K8VVEEEeX47O7pMjxs2cxXOaI/0sybK3px05OntOjhi/R+e3N0US42GOjos+iJHJlPVvU260dBCZvPbw/n4nNwm11nhAiCbZa1MO0il5YG+fk2RVALjHCiIovz8nj3RK7t/b5yyi//YIsdISOSPo8YMDzv4mSTFy9cbuim++yqS2B/b2OavaqHXqQugopRIANuY2p7XWM0n7I4HHm8s8XXD/IwX3mvk8JR9Ha90HIP+TsV4pFd1GiICsUXbRqyiTh5w4Okn3jo4UOm0Rh4UCPsMIXMdLuy9dy2Q0+oWjI3uBysVXvPQJK4zAbemaq6GhVumahx4dFxeS+0W09OqoQkfccd3XO+rkQnLXCfNit9Jo6TwbhdDZ3zvmZL6GLC2rtD8nz5Ylncasp729o05uwsj+nLMqDCLIs667HZ2B36GD49PY56C/QA4K3bCow/odWA4bFnYY5cNDEymr96sSdp8cMUorO5obKg6hALIR6MHfwUMTKaskshIGx6bx5BHz375S9wHI9hMF55iNTaWdzFHSWttCZ1PpsdKSRXNarNJMGVtdKVLoyPCDcljb3W7cxEllNO545mSRd8we6kLoIJuilv/JLOU3R3Cfcm/RBH3dmc5V7DzlHCe4TwOyKW0VoZQq+0siS9dcXPTIHp1GF45Oo+jRSUW/mBiTpWsRh4UCdo+Oi4uJiem0cXerIaEix2BbqWsOwgiGJqaNMIuO5gbLiSsXy9EZmXTyGXXt6Cye42doqOsenXltjYYYH59OOxGPsnRt1fxopWvz2hqNPrKJaTtmuxJcOzodzQ2G+ExntJN+Ipf9OUDWaV4bKCfUGthxLPoFr0xcOydC2RqQvfF2zkrzGI8djH7BKy+aL4hQtgZk1yn7dB50UL72wF5znReunhepIiKRUFbpm4t5Ovfu6TWE45YlndZNqXJQSlmDRu9yUL62p2fUcJubkomKAhOCSFdHBghUwtHBcaMEVCn7POUi47B//tTx3LGjXzfWMvUkdPKU4gkG//qVKxrKOVex88S5ZqfIQDQnYQQe4qUtR8fBRaTs0WltjP4jIh0dF0JneEKWrTVE/uUj72a6KF2zEtfao7k5QPYCLSjqplIZK5ihXNIZjZOi10cKqnJpTCaw0PHQUK211euzoiuaU6KUch5IoLW2jhHV0VFKWclrLgSEq2jpIFafzono5WsycS2q0AGAM0QggYvEKBlEUG4Ubhh2+Vr0Ph05P+e8CGVreS4SAkJGQleCFEuXVBArLZHla3IYaSXcK/pzopSt5ZF9OnKeTCVIN+fSdfPR1hStGuL6LaaAuHNXT+QbrzKE4PyVXZGEIwC84AxTKP1q5wmnc75qlXoROuXiNsg8nvM4OZbWuuwvSUKGEXiIl25wEC/dLByMSQdCx/WwUMDu0RlxIHTssrXoAsIeGDoVuTRIlq3Njxgtnae7023EdO/opFGn3tXW6CSIQpavRY2Y7h2dwkSgF62juSFyySIArBSuUNShoT0jU4Y72t6UjJy2B4QFEkQrDRqdTOFI4N8koYA13dEEGQBsEtHNO49FEzpaa+eODpCdUxNk++FoQied0VaoQZQggjznrugyth+NmLymtbaOccHqrtB9y0E6Oi4Gh7oMIshzWcjg0Kh9OvfstgeFRkX26TxxaCBypYGcn3Pd5mguCZD9OZJldlHT7KQrFKVsLc/5q+aZ8eITKTy4t8/JdWMtUy9CJ/jXrBRJG/yrXe5fmHLOVew8ca7ZKZbQcTEw1BI6teno2GEE0S9225qSRgnTZCoTeUibdHSiJq4B2XCHtsD/b0ZHj8LuE9HSURPX8kinJGrzpzVDJ2LiWh7XQ0Nl4tqyrhYnZQRWn07EHogDMlp6QbuTddqBBNEcHekIrV7QHrm0EgA2LXI7S+fk8CR6A+5oS2PCcrcqQfb5RE1e29szagjceW2NkXvIANvRefrIUKQ75gf7xg23ub0piY2LohdSnLuiy/jbdqBvDCeGK7+5cWRg3ChVbUomIkV15zljyRzjxlbUPp0TwxPYFXBGkwllpbtVwuI5Ldgc6HnLaOCe3ZW7OmNTKUuAVBIrLUkklFVWFiVmenQyhbuFcJRlZ5WQDFnnT5+a/elr9SR08ldcpfx2D9YNDJR5ruAtmJlqGIqdp5zjAKf/v9KostCR0aouEll8lK7ZPToOhI5Vuhb9brlSyo6Yjjg1Ww4L7Yw4QyeP6z4dK3HNlaPjOGLa9QydPK6HhroOIsgjE9Gilq7J/pzVEWfo5JGBBFEjpmVy2/qF0cUDAGxeIoVOtF/pcpjn5sWdkSKw85wpIqZ3HhuOVMqy/YjbIII8i+a0YFngpsFUOoMdRyv/nj4qenzOWdHl5PvZ2pTEmcLBilK+JsvWzlkx14nTnEgoXLrWXZ/OveKi/KzlcyOngOaRrs6dEfp07t3da4QWrZzfat08qRSZavaLHccrdj7u3GXGX6+a34aNDkpqATtm+qfbj9WdQ1MudSF0ctHMu3KbTUqpmYo/lwUeF5tfE0Zw/2UF95r5PCUfRyk1H0D+t/hurbWbWK4KsUvXajOMIB5Hx82PiOtAAh+ODgDMFUIkavKa6xk6eWT/TE9ER0cGESxy5Oi4Hhoq+3OiBhHkcd2jYwmdiP05eaSLEVXoyCCC9Y4uJtYv7DBc3IP9YxiL4I76KFsDsj9HwZKbqZBZPeWwLSRxzRXnibCAxyKUr1n9ORGDCILIwYxRytek0LnYQX9OHtmnc1+EUispdFyUreW5WgqdXZUnhcn+nOdtXuSssf7KDQuM2X4H+8YNl6scrLK1MxY7W+c1GxeiJXCT+MjghBUgMtuoC6GT44nA43WFdlLZT8Oa3Gav1vqoj/OEvL4t+ILW+gSA/Kd1TS4iu+zjVAMfc3QsR8fB3TMfqWu2o+Mm6dv1LB3X0dJ55orjDLh2dBwJHenoyCCBcpGOTtRo6Tyuh4YesoaFuhEQK8X08qhDQ2W0dNQZOnnk0NFD/WORfu5tR8eN0GltShoulta2qCoHGUSwdZkboQOE9OlECCSQ8cJnLXMndGSfzuNRhI547/miNC4KToWOSFy7xEF/Th57nk7lfTo++nPyXLp2gXFT82DfuPX7pRS01lbss4uytTxtTQ3W/7cMFCiFdEZbZW8yRCAKrU1JXLvJ/P++bfsxZ8evRepJ6Pw48PjCIvttxunUslvLPYnWegdODxy9YIbdLwo8DjtXfs3tKD7PZ6bjxIq08L2EEbiIl07WRxgBEDZLJ6LQsUrX3Dg6Xa2mEBkYjxYzbKWuOQsjkI5OtHXKOvqo0dJ5XA8NdR0tnWeFOM7RoYlIDul+mbgWMVo6T2tT0ijXy+ho/USuo6WDyHk6Ufp0fDk6gC2a5LyeUslktBVmcLZDR+dcIUYqdXQmU2lrOKpLR+dCMTh0++FB6wZaKQyOTRsDTZUCLlgdPRkuz5YlbubpHOofMxzgxqTCRavdCbLWpqQ1jPXXFaSv7T45atwoampI4PJ10ZPhglxv9emU3//yyIF+ox9vTkuDUycPAF505hJj+ydPUujUCj8AkP9purnIfi8JPP56hefKv2+xUuqisB2UUk0AbshtPqi13lPkOEBpax4H8P1yFuoDWbrmpEdH1H031mqPjhA6LuboALB7dCIODfVVuiaHeUZ2dGTqmoN4aSAkjCCyoyNn6Ljq0XE7NFSGESzvciPIWhqTWBIQd1rboqocpPhwVboG2OVrlQYSpNIZ7BN3hl05OgCMJmqg8j6diek09gjnacuS6I3zeWSfjuyzKZUDfWMYDtzA6WxpwMr5boQ4kBVNwXtwe3pGK+oh3H5kyOjTWN7V6qxUFciWvQbDPVIZjccPDZR9nIf2m6Vkmxd3WsmYUXDVpyPL1s5fNc9JiE+QqzeaDsRdFZSvybS1y9YtcL7O54s+nYf391tVDTPxU+GuPH/LIiel/kGu37LYqKrZfXI0kuNc69SN0NFa9wO4Jbd5g1Jqo9xHKdUI4F25zQe01pY7opR6pVLqhFJqm1JqU4HTfRKnAwHeU2Cf38TpIaF/VWDNtwG4N7f5O7n1yfVsAvCi3OZntNbRJ3dFJGE5Oi5K19zHS4f16ERtqpNzdNo8la5FdnR8la4JoRO5R8eTo7PQcby0HUbg5sLH9dBQO4zAnYCwktcqLF8bmUwZdyQbEsoSfFGwI6YrEzoH+sYMp3lhZ7PTC8mNYpZOpUJn57Fhw1VfOb/VmYML2KVrTx0dquj3aFjZmsvBgu3NDdgkxGMlAuIxj/05eWT52sMVlK89IPtzHJat5bH7dKILncvXuStbyyP7dO55trfs5FJZRnbdJndla3mWd7UaNyEyGrj9mdLL17TWVgraC7cuKbB35cxta8TlosyunPI1Fze/46RuhE6OjwJ4EkAjgK8opeRtrU8C2ABgFMDvFDjGZwAsBHAWgL8M20Fr3QPgfbnNNyulXht8XSm1GcDHcptfDRNUAd6FbGrcRgCfEsdpB/AlAA0Angbwt0WOExs+enTs0rXofwATCWU5Q1MRY5vHZI+Oozs+HY7DCGIrXRuLVhLWL+64uurRWdhhXji7DiNwVbrmcmjoyGTKEJ6NSWU0kkfFVSCBrJ9fMa/VSalqHjuQoLI7kdIJcpW4lsdKXqtwlo5VtrbEXdkakO3P6gzciBmeSOFgX/lu3pOybM1BDLLEHhw6UPYxfPbn5JHlaw/tK7/R/yGR1ua6fAkIHxxazkWs1tprf06erUvnmPNfJlN4/FDpzuPg+LQV7HC9w76XYsctp09n14kRI8ilKZnAtQ77iILcIMrXyhE6UtzWOnUldLTWI8iWeT0B4DIATyulPqGU+ohS6gEA70U21vlVWuvHCxxGFXgsz/UlAH+MbNzz15VS31dKfVgp9e8AHkFWLH0HwDtmWPM2AK8A0AvgPUqph3Lr/TiAHQAuB7AdwM1a6+hjqR2Q9FC6lvYQRgC4T16zStd8hRFEnE9jl645ipf27ei4CiOwHJ2pit286XQGvaOm0JHiJAquhobKIIOlc1st9zUKssyo0kACWba2aoFbASEjpuUsnFLx2Z8DZAVZsN/xyOAEhifK/3ny2Z8DZG8YyWM+dbT88rUnRXKTdIpcIPt0KnJ0RLT0+V4cHVOUPLy/v6x5dONTaTwh/t8uXuOuPyfP5sVmn85wmX06u06MGH2HLY0JLw5ZIqFw5QbT1fn1M6WXr92566RRVbJhUQdWO/69lOf5W8zytTueOVlyZLssW7tiwwKrv9cVN4iY6ScODVolsoX4n0cO+ViSN+pK6ACA1no/gEsAvB/AIQBvA/CHyAYQfBzAObmSsUK8D0APgKcAfGSGc30CwKUAvgzgHAB/BuClAO4E8Bqt9au01jNetWitfw7gbAD/AKANwAeQFUhHco8v1lrvnek4cWGXrkU/po8wAgBobnQbSDBRL2EEVumao3jpVnc9Oql0xhJKck5PpbQ1NRjDTafSGQyNV/Y97RmZRFAjLWhvMmJCo2LP0qms98Xuz3HX/wDYpWuVCh07iMBdeR1gDw2ttHTNV+JanuaGpOU+VRJI4DNxrdAxy01e01pbpWsugwjySEfnsYMDZd3gODk8abhVjUll9Si5YOOiDuPm09BECs+WeBEJZPtzgn8zV85vtX6PuCCsT+fuMubUhPW9uBi4G4YsX/v506U3+v9SuCoyNMAl563sMt2niZTlzhXiR9tMoXODh7K1PIvntOAS8W//3UcPz/i+kclU3YUX1J3QAQCt9aTW+hat9WVa6/la63at9Rla6z/RWheVmlrrb2mtF2qtz8wlrM10rke01m/VWq/VWrdorZdorW/UWn+7zDUf1Vr/qdZ6q9a6Q2s9T2t9qdb6n7TW0TJnHWPN0fEwMLSxThydtiY3d1Ocx0uLi3pfA0MHIjg68r1zWxudljDJWTonRypzSqwZOo7K1vIsceToHBKOzjLPQqfy0jV/QQRA9v87KER7R6cqakr3LXQAYJPo09lVZp9OJqOtO+xbHTs6QPSI6UP948ZNkY7mBisK3AUbF3UYN596RqbKCs2Q5Utbl85x5toHSSSUlZBW6sUuANz9rFkadOV6t+lgQa4Qx5YRzMWQc2l89L3kef6WRUa/4/YjQyXdjEln7Fjp53sUOsmEwvM2l5++9szxYeNnPaGAF2z1t04AePUFK4zt7zxyeMbrvVu3HbWuk2qduhQ6xC/yWtTHwFB3jo7b5DW7R8fVwFDXqWvC0XE2MFSUrkVwdHzN0MljzdKpMGLa1wydPK6GhlqOjqNo6TyW0Okdq6gc8ECfmKHj2NFJJhTWCPG0p8w+Ha2199I1AFbz/M4yhc7BfjvJTEaBuyBq8pqMet66bI7Tsso8DcmE5RSVEzP9wF7/Df55rHk6ZfTp3LPbdFWu2OBP6MiL8of29VsVA2GMTKYs4XjdZn8X5t0dzdb39GdPzSwg7t/ba/SKzmlpwIUOY7rDqKRP5/uPmW7KlRu6naYBhnHT2UvQHLhpdHhgHPfvLf45/e8HDnhdkw8odIiFTMpJeyhdcxEvDXhwdKb89OjIMILopWuiR8dRSViXSEWLMkfHTlxzlxQF2H00lSavnZBCx/EfF1dDQ+Wda9cXvAs7m40/esMi/KBUbEfH/Z19O5CgvPK1kyOTRp9bW1PSaTJcHil0dpVZuiadla1L5zhNMsuzYVGH8Tv5+NBkWT9PUmz46HvJI3tAygkkkBfmsnTHJRcJEXX37p6SbhwMjk1bk+p9JJnlWbWgzUgyTGU07i5hTs09z/YYf9fXLGjDmm4/fS955PyXUhrof/iEOTP++jMWO60sCOPqjd1GH/KentGiNw+01vj+Y0eM51523nJv68vT2dJofU+/ev/+gvs/cWgAj4rUwnqAQodYyDACH6VrcihppdiOTjSnxFePjsvStXRGW0LJVcOiVboWxdGxZug4dnREIMHJCpPXfM3QyeNqaOihflNArHBcuqaUipy8NpXKWELOtaMDRA8kkG7O+oUdXgREVEdHXhz56CcBssMTZUpcOQLi0QOiwd9Dklmec1eYxy7V0RmemLbKAH06Ouev6jL+fhwfmsSuEmaV3Lun1+gZ3Ly40yrTdc3zhRNTSvma3Menm5NH9qw8uK+vqCBPpTNWP8lLzlnqZW1BOlsarfCErz9wsOD+9+zutYaZvujMxQX3d8lrLjLL13785DHrb02eL99TWATVMhQ6xEKKED/x0m4+er57dFzFS7ucozMi3JzO5gZnwrGtKWnc2Z1MZSzxVyp9o6ZIcjVDJ48VMV2ho+Nrhk4eV0NDfZeuAWGBBOW5T4cHxo3wkkWdzc6H8gHRHR3f0dJ51ixoM35HnRyeLGuAoHR0fCSZ5Tl/pVnOU+qd26lUBk+KdZ6/yl9pkHR0th0eLGmmysP7+43P5sZFHc5SIMNobkjisnWmkColKUyGAVyxwZ+bk+d5W6TQOVn0BmcqncFt282yses8xSAHWbWgzZpT8wPhhAS5d0+vUVkwp6XBGj7qi9ddvNLY/t6jh62KkTxfuXefsX3D1sVOZ2UV46oN3dgYKNtNZzT+8+591n4H+8as8rp6gUKHWMgbmz7ipV2FEciEl6g9OvIXkTNHp8mdoyPrp10FEQDZu/oyea3SiOm6cXSG/czQCR4v6tDQiek0TgTWqZSd5uaCqIEE+4TgcB1EkEcmr8lggZmQM2189OcA2Rs6csBpOa6OJXSWexQ6QkA8erC05vmnjw4Zn+elc1uc/wwFWTa3xejPm5jOYEcJM4qs/hyPZWt5rhHN+XfMIHS01vjlDtMpucpjf06ei9fMR3vghsTJ4Uk8VGTI6QN7+ywBIUMNfCFLur71cOH8qW88aLooLzpzidNEzWK84IzFWCBm/4Slmh0eGLd6jd502Wrv68ujlMI7rl5rPPf/7ttvuTqf/sUua/B7vUChQyykO+DA0PEWRiB/aUV1dCamzfe7m6MjB4ZWXmInhYer/pw8riKmfc3QySPDCJz16DguXXMxNFQmtS3ubPHyBztq6doeIXTWdfsRELJ0bV/vaFkltjvFhbEsMXPJFlESVmqi2YnhCUO8NzUkvCTD5ZEuzOMHB0u6yWWVrXnszwGyF2YXrjbPUUok8r17zCSzSzyWreWR7sEDe/uKOuQ7jg0bvXjNDYlYBERTQwLPP8MslfrB44Xv3v9om9n38sKt8QmIV16w3Bhq/vTRIWuGE5D9eyB7eF5xgf++lzxNDQm8WpSFffb2Z62ZOp/91bOG07h5cafX3rEwXnbecmP49FQqg7/94dOnesoe2NuHbxcRlLUOhQ6xkPHSaRelaxk/YQTNDe56dFLpDKYCv4SUso9fKS7n6NjDQt0KHSuQYKyyQAIrdc116VqnFDquUtfc342OOjRUlq35SN4CgJXzog0N3SvSz9Z6Kgmb19ZoCPKJ6UzJvU9aa8tV2bLEn1NylkgJ21bikMunhCDasqQTjR6bqNcsaDMCQ0YmU1YvUxiyR0bOuvGB7H+4awahMzg2bfUcXeaxwT/P+oXtxryryVTGSlQL8gsxG+aqDd1eSj/DeOm5y4ztW7cdCx10OZlK48ei7+XFZ/ub9yJZPKfFcspk6ReQdXOCJfPrutu9hjqE8ZbL1xjXOof6xw2XaV/PKL75kOk6vfXKNV76BYvR0pjEH92w2XjuJ9uP4T/u3IND/WN4/9cfNV7zVerrCwodYuFljo74hdmQ8OPoRCldmxDvbW1MOvuFY4URTNVm6RrgbpZO35hfR0e6JJWUrk2m0kb0aELBKDdwRdShobKMwEd/DpCtgQ9ysEBTaiFkKIAsMXOFUsoqCSul0RvINoUHXdG2pqQ34QjYgzNlolYh4uzPAbLfU+nqPHKgePma1hoPivkw563015+TR5ZzzeSU3L27x7prLudb+UAphWtF78qPniicFPYzOdjyjHga0gHgmk3dxpDTvtEp3LnLLrX72VPHrbK1qzbGU7aW53UXmf0v3330sBGCMjqZwhfuMmewv+GSVbELiGVdrXitWOvHfrwDRwbGkUpn8MH/ecIaDPuqC1fIw8TCqy5cYf2u+rtbd+Cqj/3KujH30VecHefSIkOhM8tQShX8KhXZPuMnjKD2enR89ecAtqMTpUfHcnRcl645mqVjz9Fxu05ZutY7Olm2KD8hEte6O5q9RI9GHRoqo6WXO05cy7Nynil0DvePl9TonUeGAkgx4pJNi0Si2bHSSsJ2iP02Le70MvMlz5nL5xo9Wnt6RktydGU5zlZPiWtBZFraI0X6NIDsHergZ7OpIYFzVvhf59rudiwL/ExNpjJF1yov2K/ZFN+F+c1nmylfP3vqWGiJ9f7eUct1kvNYfNLckMRNZ5lrDUvZknNUXnH+cuvvsG9uOHOJMUtrOq3xTz975tT2F+7aa4ixjuYGS3DExe8/b4NxLTE8mcJvfv5+vPVLD1ozaz7wwk1eXdtiJBMKn379eUavVhhDD34Pl8fUj+UKCh1iIXt0XJSuyXjpBkcXFi57dOQdQZcTs5sbEsb3dTqtK17rkOzRce7omI5GpWEElqPjuHSttSlpCMjptC57rXGUrQHAsq5oQ0MPWaVrfpr825sb0N1x+t8pldEli7KxqZSxb0LZPT8ukXHIpTSkA9kJ5MZxPPbnANmLrGBKnNbA9hJcHZl6dm4MAuICMUhRzp2R3Cf6Xi5Y1eX092YhlFJW+dqvC8x+0Vrj18+Yr8nSJ59cuna+EcQyNJHCXc/aTsn3HjXTwy5ZM99rqEMYr7/EFAN3PHMSz544/fOy7dAg7n7W/Dd/w6WrYllbkGRC4V3Xrjee+9bDh/CrnSew/cggPvPLZ43XfvuKNdYNvLhY1tWKP7nRLAvb2zOKO8Xn9eqN3Xh5DLNzirFuYQf+7U0XFrzJO7rjTvT/6osxryo6FDqzDK11wa9SsUvXoq9LNrW6umtu9+hEcHQ8RUsD2T/M8k5Jpa6OXbrmOYygwqGh/SJe2nXqGgDjohwoP5DAnqHj58JiydxoQ0PjiJbOI8VJqX06+3rEnJ95bV7v9G5ZKoTO0dKEjhREUjD54Jwyy9eODo4bPUfNDQmvfUR5zl/VZfQU7OsdKzhTAwDu22MKoTj6XvJcLcTKbduPhf6de/LwkNXg73N+jqQhmbCGMn7rIbOxO5PR+O6j5nMvPz/+i97zV82zeqw+cVvWKdFa41M/22m8dtHqebF8LsN41QUrjFhkAHjnlx/CKz97j9Fru6C9yUoVi5u3XL4GN2wtXIa4vKsVn3zNubGX1oVx9caF+M67r8DVG7tPOdGL5zTjwy/ZiuPf+XvoTLqs68lagEKHWMgyDjela77ipd05Oj5L1wB3gQR26ZpjR6cteuraZCpt/P8llPvQBMAOJDhZptCRDeyuE9fyRB0aGlfpGmCXr5WavLZHBhF4npIuL7CePTES2jwtkYlrMhXNBzKQICwlKoh0c85ePjeWVKu2pgarT+cecQc/j9bacnQuXRuf0Llu80JDlO3tGQ2N7r71STMh7LrNC2NxnYK8/Dyz0f+nTx03bnbc/swJ7Os9/XPWlExYJW9x8c6r1xnbP9l+DD976jh+8PgR/Gqn6US99/qNcS7NoKkhgY++4myjLDSV0dbNzg//xlYrYCduEgmFW95wvhX4AGR//3z1HZc6n98WhTOWzsH/e/ulePKvXoQH//wFuO9Pr8fbrlrrtcTXJxQ6xCIpU9echBHEEy8dJXXNcnQc/zF0FUhgl665Tl2LHkYgxdG8tiYvvyRln065gQSydG2Jpz82UYaGTqczVniBz+Z5a2hoiYEEe2UQgedknvntTWYkajpjzfGRpDPaCi2Iw9GRTb4yqUwSd2RzkCvXl5Zotqdn1OzPSSZiXeeclkYrlODWbWajv9Yat4oo5BdXQUBcsnY+Ni02hzJ+Mdcsr7XGv92xx9j/xWcvqVqp1U1nLcG5wtV551cewvu//pjx3IWr5+GamEMIJJesnY+/uHlrwdffeuUaa+5OtWhpTOKWN5yPb/zOZXjXNevw21eswadffx5+8J6rsMbzTaFKaW9uwMLO5ppwmqJAoUMs7DCC6MeU8dLuwggcOjqyR8dxrKcldOqkdK2SMALfM3TyRI2Ylr0yiz0lMUUZGnpscML4GezuaPJ6R9oeGlpamZ0VRBDDH+8tS01X5+kZ+nR2nxwxvu/dHc1Y0OHHxQty9oq5Ro/evt4xnBguLHaloyNdFp9cucF0Ze7Z3RNaqvIrMdjy0nXzY3dKbhKi5fuPHTYCSR7Y24f9wil5/pb4GvzzKKXw5svXGM995d792Nczitu2H7OGmb79KtNViZNEQuGvfmOr1asbpDGp8HevOLsmLoDfftVafPzV5xh/t1oaE/jgjVvw4ZcUFkHV4tJ1C/CnLz4Df/XSM/Gy85bHNn/ouQy/w8TCR+maTG5qrMF46UnL0XH742GXrlXmPvkvXYseRuB7hk6eenF0ogwNtcrWPAUR5Kl0aKgcFrrW07DQILLsbKbktScOmSVjZy2Pp7+granBKl97cG94StjEdBpPiNK2OJ2Sc1d2Gf2EPSNT1vcNAH4hopCrISBu2LoYTYHqgP29Y/h1IGHtayIh7PozFjm/MVQqr7pgheHsTqUzeO3n7sUffvNxY7+rN3bj7BiCJ4px/qp5+NDNZxR8/aMvPzsWJ7RUXnPRStz3p9fja++8FP/v7ZfggT9/AX7vuvU1IcRI9aHQIRaydM2N0DGPUexuUTnIZmeXjo770jU/YQTOS9cchBHYM3T8XFzYjk40oeMz5ajSoaFW4prH/hwgO8shyL6e0RmbT7XW2H0inmGhQaTQeXqGQAI5rFOGBPjkUjHt/IG94b0vj+zvN36PLe9qteYw+aQxmcDVG81Gf9nnMjA2ZSWyVUPodLU14eZzTFfn83dmS8IO9I7hR0+Y6/7NS1fHtjZJa1MSf/wiM33rxPAkRgO9ocmEwp8XERhx8ttXrsUnXnOu4ZTMb2/CP7/hfLz24upENRejtSmJK9Z34+qNC730g5L6hUKHWMjUNSc9OiK6rdFR6ZrTHp0pMTDUc+lapWEEQ+Pm+1wPDLVS1yooXbNn6MTj6JQjdLTWViiAL0cHqHxoqHRUfPbnAMCyua1oCbiZg+PTM5YEHh2cwHDg89zelDTmnPhCBhI8cWiwqCiTTsnZK7p8LCsUmfT1wL5wR+fu3WZPzBXr453mDgA3iUn3P95mJpr97xNHkQr8XdiwqAOrF1Snz+BNl5vi5a5ne/CLp4/j72592ljj2u72qnwvg7zi/OV40ZmF07c+8MJNVUsxC+PVF67A/X92Pb71u5fjW797Oe790+fjN0Ia6gmpZSh0iIWsKnORJJiKKV7aaY+O59S1Sh2dYenoOB4YKo83PJEqa2gkAPSN2mEEPpDx0uWUrg2NpzAxffr/q6Ux4bwMMEilQ0P395olYb4vKBMJhQ0itnVXSJpVEDmbZtOSzljKRjYt7jBEWc/IJI4U+L6m0hk8dcQsbZMhAT65eI3ZZ7Pj2JB1QwCANadEzouJg+dvWWTcRDrQN4aHAgM5v/uIGYUcliYVF+ev7MJl60wR+fYvP4SfbDeDCd53/Yaqp0YppfCp156H52225/i869p1ePd160PeVV1aGpO4eM18XLxmfuyDQQlxAYUOsfDi6MjUNU8DQ6P06MiBod5T1yoQOlprDE34dXSSCWUNIZXnnIn+sXgcnSila2Fujs+Lczk09GiJs3SCzdQAsHqB3x4dANi0yCwJk0JGYgmdRfHU7zckE3aimWjkz7PrxIjx+2FhZ7O3OPEwutqajFI7rbMDGYMMjk/jCVFeVw0XorOl0boY/8q9+wFkh0Y+Ir7Hr6jCzJc8Sin8xc1brRCdIGcvn4uXnlsb6VvtzQ344m9fjC+85SK8/aq1ePd16/H9378Sf3rTGewpIcQDFDrEQvbPpH3M0XHm6Djs0Yl9jk75ZXZjU2lDeDY3JLzcZZOBBANj5fXpWKlrMYUR9IxMGalLxYizPwcAlndV1uQv95OpaD7YuFgIHdF/I9l5zHx9U4yNynLA4eNCKOSRSWbnLJ8b+4Wl7GP5hUgu++WO40bC3sZFHVWbr/Fbl5klYbduO4pnTwzj07/YZTx/+boFVoBF3Jy1fC7+8IbNoa91NDfgn153nrO+UBcopXD9GYvxoZdsxZ/cuMWKcyaEuINCh1jIv/0upuDapWu15+j4Ll1rb4oeRmAnrvlpupSzdMpNXovL0WlpTBqOVjqjS577Yw8L9XtBKZ0Y6dSEMTwxbYjGxqTCMs9hBACMmR/AzKVru06Yr29eHJ/QkReJhRwd2TwvBVIcXH+GKXRu33nCuAn0kyfNcqsbivRz+ObK9d3GLKR0RuOGf/o1fv70cWO/37m2elHIQd593Xr88Ys2Gylsqxe04WvvvNQqxSSEPHfwV5BO6hYfA0Olo+OqdO25NkfHTlzz8yNsBRKUKXRk8/qCDn+TqRd2NBsCsGdksiRhdVz0csgeGtdIoXOwfwzpjC56p1mKoZXz2mK5M71JOjrHR6C1DnVAMhkd0qMT34WlFCzbDg9iOp2xXGM5q+TSdfGXhJ23ch7mtzedEq/DEyncvvMkXrh1MYYmpq1SthvPjH+4ZZ5EQuGPbtiMd3/1kVPPyT8F563swnWb7H6TaqCUwu8/bwNed/FKPHZgAB0tDbhw9Txn1QOEkPqEvwGIhbyQcjEw1OrRcfTHx2Xq2kTspWuVODp+h4XmsWbplJm81it6ZXwOZax0lk7cjk5nS6MhwKbTGkdm6NOpRn8OkI00Dn7+B8enC35fD/aPGaEOXW2N1swgnyzvajV6tcan03j84ICxz6H+MWMeUVNDAudUYVZJMqGs1K1vPJid9fK9Rw8b38flXa2xzfkpxE1nLcF1IY3zQHb45t+/sjaGRgbp7mjGC7YuxmXrFlDkEEIodIhNobu2UZCukC9Hx2XpmvcwgqkKHJ3xeErX5or0sXJ6dDIZbfXoLPBUugZUHkgQ17DQIFKozNSns78v3sS1PImEwkZRvrazQPnadpFktmlxPIlreZRSVsP+Xc+aEc337bHL1lyXppbK6y5eZWz/cscJPHVkCF+8a6/x/GsvWll1EaGUwqdffz7OFaKwqSGBT7/+PJyxtHaikAkhJAwKHRKK60CCaWuOTu3HS7c2uf3xsOfolO8+ydI114lreWR4QF8Zjs7QxLTRk9XelPR6UVlpxPTxIXO/JXP9uxCr55fXp3OgN/4ggjyyz+bJw0Oh+22Ts2lijGzOc5WIYL5rlyl0frXTbPqXwzvj5NwVcw2BkNHAi2+5E/sC/9bJhMLramQo49zWRnz7967AP77qHLz+4pX4vevW47Y/uAY3nV29sjpCCCkVCh0SijRcMhGETjqjjVk8StlCqlJk4lgkR2fKcxhBc/QwAhnz7GsCtBQ6YfM+CtEr3RzPZUzS0TlZoqMjS9cWdcbh6JiOjJyRI5FCaE13fELnbHEXf9vhgdD9th0yhU41SsLkrJlHDw6cCtCYSmXw651m78vzRPpZnCil8P7rNxTd5/UXr/TeM1YOjckEXnvxSvzDq87BB2/cgrXd1RkOSggh5UKhQ0KRs3QylesHO1paTiSNQF3N0WlyEEYwLoeF+nF0ZHiALEUrRm+MQQRASMT08MxrnUylDedHKf89OkD5yWt7eszY5jinz5+zosvYfvzgoLWP1tqa+1INR2dZVyvWi4Sw23IDI+/f24vhwM9ad0cTzhP/b3HzojOX4PICYQjz2hrxBy/YFPOKCCFkdkKhQ0KxAwkqd3R8RUsDYaVrlYcR2KVrfsMI3KSu+XF0ZGpZ72jpgzitIIL2eB2dE8MTBfY8zbFB6eY0W6LZB1Ko7Cvi6AxNTBvldQ0JFWvp2pYlnUYv3eGBcevf9kDfmOEydjY3YE2MYizIi0Up1Q8eOwIA+PbDh4znn7d5ERJVnqmilMItbzjfiG8GsmWen/3NC63PNCGEkMqg0CGhSEcnSo9OSjg6LuNxfc7R8R9GkC57RpE1R8dTj44UOuU4Oj1iX9lD4xrpxEgRE8ZhkXYWx2waIDyMoNBn4FkxpHNtd3usKVItjUlsWWr26Twh+nEeOdBvbJ+5fE7VRMTLzltmbN+9uwf37+nFj8VsmpefvzzOZRVkYWcz/vc9V+H/u2kLbj57Kd5x1Vr85A+uweXr44+9JoSQ2Qrn6JBQ5LWKjlC6Jh0dlxdrTeJYU+lMwXkfMzE+Zf5PuhY6TQ0JNCUTmMoJv3RGYzKVKasXyC5d8+PoSBemvNI1GS3tV+gsFyLl8MD4jJ+Bw/2m0JHH8MWC9iZ0tjScEqxjU2kcGZwIPf+zx02hU42hh2cv7zJCCB7Z34/nbT7d33LfbjPN7KLV1Wvy37CoE2cvn3sqHEFr4HX/fp+xz8r5rQVLxqpBe3MDfvfa9dVeBiGEzFro6MwylFIFv8pB3pWN5uj4iZYGsvN4gg6R1tn5JJUw6XlgKGAHEpQ7S0eGEXhLXWs3BVT/2HTJEeOyR2e+59K1rrZGQ5SOTaVPNaIX4siA6frEJXSUUtgoBIsctpnn2ZPVFzoXrZ5nbN+zu9fYvn+vuX3puuoJHQAzioa3Xbm26mVrhBBSD7i6nqw2FDoklKQsXYswR8cKI3BcfmP16aQrs598l64BIeVrZQodOTDUV49Oc0MSnYG1pjN6RvGQR7o/vkvXlFJY1mWWr8nSNMnhATMEYPm8eIQOkJ0zE2RXIaFzovpC54oNpvvx+MGBU+L82OCEEYnckFC4UAijuLnprCUFU99WL2jDGy9dFfoaIYSQ2QmFzixDa13wqxykYi/3/UF8hhEAIX060+UHEkynM8Y6GxLKSz+EDCQo29EZl3N0/AgdAJjfIQMJSitfkwM7fYcRAHaPjXRsJPL1ZXPjEzobhdB5RpSo5dl1whRA6xfGL3SWzm3FukCUcCqj8eDebLmanE1z9oq5aGuqbjV0IqFwy+vPtwbUdjQ34F/eeIEVR08IISQcV9eT1YZCh4Qir/FdhhG4LF0D3Dg6cbg5QJijU54ok6Vrcz316AAhQ0NLFDr2HB2/jg5gl54dmdHRET06sTo6pmAJc3TGplI4FOgjUqo6QgewXZ18bPNPt5tN/s/fXL3ZNEHWdLfjB++9Cm+8dBUuWNWFV1+4Av/73qtwVhVirwkhhFQXhhGQUGTpWoTKNatnpsHhHB0gzNEpX+hMyGGhHvpzgOila3HN0QFg3RXvKzFiOu4wAiDM0SksdLTWVUtdA0JK106MIJPRRu/I00eHjCG7axa0O487L5UXnLEY/3XfgVPbt247ij94wSbc/azZn3PDmUviXlpBlne14u9ecXa1l0EIIaTK0NEhocjStVIb0cNIiWmjrkvXZDmKC0enpdHPj0ZHhDCCiem0EZ/dkFDenCcgbJbOzI5OKp1B/5gpxua3xS90ivXo9IxMYSrwfexsbvDqjEkWdTYbseBjU2lrvcGkMwBVdSOu3NBtiN6hiRR+6wv3Gz9na7vbLaeKEEIIqTYUOiQUOesmShiB3aPj2NFJRnd0Yitda6rc0bGGhbY2ek0/kT06/SUInb4xc595bY3O/73DkGEExRwd+Vqcbg6QvYmweYnp6jwp5tPI7bOWzfG+rkI0JhN4yTnmME4ZlPCGS1bWXRIPIYSQ2Q+FDglFttFkHMZLN7ru0WmUPTrlhxGMT1WnR6ccR2doPL7+HMAuXSvF0bGjpf27OUBYj07hMIIDfdVLXMtzzoouY/uxgwPG9pNHasfRAYB3XL2uYG9dZ3MDXnPhyphXRAghhMwMhQ4JRc6aiCZ0/Jau+XB0yhniWQ4yda2cMALL0fE0QyePnH9TShiB3GdBh//ENQBYMtd0dI4PTxjlaUGk0Fm9oM3bugpx3souYzsodMamUlZAwZlVdHQAYOX8NrzlijWhr/3BCzdhXkyClhBCCCkHCh0SitMwAvFm53N0hCiZrKBHZ0KWrsUVRjBVjqNjl675xA4jmFnoyGhp3zN08jQ3JLGw87So0jo75yWMfT2jxvaaBe2h+/lECp1thwdPlYc+emDAKPdcvaANXTH0Oc3EB2/cgpvOMgMH3nTZarztyjXVWRAhhBAyA0xdI6EkHA4M9R0v7cTRmTLf46t0LUoYgYyW9jUsNI8VRjAys9A5ORz/DJ08K+e1Guff1zuKVSFuzf7e6js6K+a1Yn570ynxODaVxtNHh3DW8rm4f4+ZZnbp2vmxry+MpoYEPvubF+DRgwPYeWwY567owtYqO02EEEJIMejokFBclq7JeOmk43hpu0enhsMIIsRLxxktDdhCpxRHRwqdRZ3xCZ013aYzs693NHQ/+Xw1HB2lFC5cPc947s5dPQCA+3IDOfNcutacY1NNlFK4YNU8vOGSVRQ5hBBCah4KHRKKFUZQvnY4hXSDGl3HS1uOTgVhBLJHpwbn6AzGXbrWYQudmSYin5BCZ058QmetECx7e2yhMzaVMtaYTKiqhBEAwDWbFhrbdzxzAgNjU3h4f7/x/KXrasPRIYQQQuoNCh0SihUvHSWMwJqjU3uOjhwY6q90LULqmhVG4FfotDU1GPOEptKZGdd7Ytjsi1nU2VJgT/dYjk6I0JFlayvmtTrvGSuVazeaQuehff341kOHjBsDmxZ3YMW8+EvrCCGEkNkAhQ4JxRoY6rB0zXW8dF3N0YmSuibipX07OoDdYyNL0yQnhszXF8ZYurbWKl0bs/bZL8rWVlehbC3PqgVt2LDo9JDNVEbjo7c+bexz45lL5NsIIYQQUiIUOiQUWV2WcRlG4Lp0TYgSJz06nkrXZBhBpIGhnuOlAbv0TJamSapZuiYdnYN9Y9Znb/dJ2Z9TXbfkVResKPr6S85dFtNKCCGEkNkHhQ4JRZauuYyXdl661mAeT0ZFl4J8j685Om1N7uKlfQ8MBewwgWJCZ2I6bfQRJRMq1tS1juYGdAfm9qQyGocHxo19nhHzaTYu7oxlbYV49YUr0NQQ/vNw5YYF2FTl9RFCCCH1DIUOCUWWrtVyvLQUOpMFBkUWw5qjU5Ola/GGEQB2j82JofDZNIBd1tbd0WQJZt+s7TYdmt0nR4ztZ46b25sCpWPVYGFnM9593Xrr+WRC4f+78YwqrIgQQgiZPVDokFDsgaFRhI5wdBzHS0v3pRJHZ1yGETT5+dFoFyVxo1OpGZPM8sQ9RwewHZ1iPTpW2VqMQQR5NiwyHZCnj552cFLpDHafEEKnBhyT9zxvA155/vJT280NCfzjq87B2SvmVnFVhBBCSP3DgaEkFKlFIgkd3/HSQuhU4ujEFUbQkEygpTGBiVxggtbZYZHS6Qkj7jk6gN1jU1ToDMnEtfjK1vJsXWoKl6eODp16vK93zOjfWtTZjHliVlA1aEgm8KnXnYe3X70WxwYncPbyuVg0J36RSAghhMw2KHRIKAmfpWuuhY6DHp1xkdTmq0cHyPaSTEyfHr45OpmaUehorWOPlwZCStfKcXRiDCLIc8ZSc4jl0wGhs/OY2Z9TC25OkDOXzcWZy+jiEEIIIa5g6dosQylV8KscZG9FBEPHDiPwXLpWSby0nKPjU+hIUVPKLJ2J6YwR093ckPC6xjwyHlrOySn22sIqlK5tEUJnX8/oqbLExw8NGK+dsbS2hA4hhBBSK7i6nqw2FDokFJ+OjuvStRYrjKASRyee0jUAaJfJayUEEgxWIYgAKC91Tc7QqUbpWkdzA1YHIqMzGthxLOvqPHZgwNj3vJXz4lwaIYQQQmKGQmeWobUu+FUOUui47NFxHS9thxHU7hwdIHsxHqQUR6caM3QAYEFHM4Lm3sDYdEEheUz06CyuUp/JmctMV+fh/f1IpTPYdnjQeP7clSwTI4QQQsJwdT1ZbSh0SCgyFTiK0JmOOV7aSeqazx4dIVKGhYgJoxrR0kBuFk5HaYEERwdNobN0bnWEzkWr5xvb9+3pw7bDg4aY7e5oxvKu1riXRgghhJAYodAhocgenXT5JkngvbJHx3HpmnR0Kihdi2tgKGAP+pSx0WFIRyeOYaF5Silf01rjiBjOWS0hcek6U+g8uK8Pt+88ae6zdn7d1RkTQgghpDwodEgoLkvXpuUcHc+la5WEEcRZuibLzmT/TRhD4/HP0MljCZ0hW+gMjacwFnDFWhoT6GqLb41Bzlgyx/geD45P49O/2GXsc82m7riXRQghhJCYodAhoSQSLgeG+g0jsErXynR0tNaW0JEBBy6RbkwpQscOI4gvGX6JKEE7Ojhu7XNYuDnLulqr5pgkEgrXn7G46D5Xb1wY02oIIYQQUi0odEgoUos4DSPwHC9dbhjBZCpjxGc3JRPOXacgsr9G9t+EYfXoxOjoyBK0w/220JFla8vmVrf/5aXnLSv42mXr5mMZ+3MIIYSQWQ+FDgnFjpeu/FhWGIHreOnGaGEEdn+O3x+LSoROteKlAWD5PCF0BmyhI12eZV3VCSLIc/WGbqycHy5mfuuy1TGvhhBCCCHVgEKHhGKVrkWaoxPzwNBUeaoszv4coLLStf4xc595Mfa/LO9qM7bDhM7hATNxrdqOSUMygQ/dvNV6/pI18/His5ZWYUWEEEIIiRsKHRKKy3jpVMavo9MkysymUpmyhFmc0dJApT06U8Z2V1uT0zUVQ7ozYaVrlqNT5dI1ALjhzCX45GvOxZI5LehobsBNZy3B5950oSXiCSGEEDI7ia+jmdQVVry0wx4d12EEiYRCU0MCUwEnZzKVKdmZkT09PqOlAbu/RkZHhyEdna4YS9eWzGlBMqFOxYT3jk5hfCptfH8PCfGztMqla3ledeEKvPKC5YySJoQQQp6D0NEhodjx0pUfy3fpGmCnpE2WkbwWe+laW/mOzsCY6ejMa4/P0WlIJrBkjilcjggHZ3/vqLG9en6793WVCkUOIYQQ8tyEQoeEYgmdCErHdxgBEC15TYYR1GLp2kAVHR2gePLa8MQ0ekZOC7HGpKp6GAEhhBBCCIUOCUWWrrmMl270EN3cHCF5Le4enfampPH9nZjOFHWgtNYYEGJIukK+kclrwVK1/b1jxmsr57V5jecmhBBCCCkFXo2QUGS1TzpS6ppwdDw0g7c0CEcnQulai+fSNaUU5rSY7XFD46mC+w9Ppozvf1tTEs0NftcoWTnfTF7b2zNy6vE+Wba2wNyXEEIIIaQaUOiQUJJWj06U0rUYenRkxHQZpWuW0IlBRJRTvjYwKqOl4+vPybN+odlzs/vkaXEjHZ013bXTn0MIIYSQ5y4UOiQUa45OhDAC6Qb56dGpvHTN6tFp8v9jIQd+FhU6IlpaiqQ4WL+ww9jec/K0o7O3x3R01iyg0CGEEEJI9aHQIaHIMIIopWvTYo6O63hpAFYp10QZQ0Pj7tEBbLFSLGLaGhbaHr/QWSccnQN9Y6f6inadGDFeo6NDCCGEkFqAQoeEInvJdZQwglhK10S8dDlhBDGnrgG2ozNUzNER0dJdrfGXrrU1NWDZ3NNJahmdLVlLZzSeOTZs7HvGks64l0cIIYQQYkGhQ0KxHZ3Kj2WFEfhwdGS8dDmOTsxhBECZPToyWjrmxLU86xeZ5Wu7jo/gQN+Y8f2b396EhZ3NcS+NEEIIIcSCQoeEYgmdKGEEMcRLW6lr5fToTMUfRjCnRQidsWKla8LRqZLQ2bjIdGq2HR7EjqNDxnNblnRyQCchhBBCaoKGmXch9USxi8xyys+k0IlWuma6K3JGjwvkHJ1yStfGhNBpq4KjU6xHRzo61UhdA4BzV841tp84NGDFkG9m2RohhBBS98yWm5YUOiQUabpEm6MjHB0fPTrChZkso3RtzEpdq7XSNenoVEnorOgytp84NGg5Z+etNPchhBBCCKkWFDqzjCjOSxCX8dKpGo+XlqlrbU3+fyzmtJrnKB4vLXp0qhAvDWQHgc5tbTy11pHJFB45MGDsc8na+VVYGSGEEEJcUux6sp7cHvbokFBk6VqUgaGpTAxhBFaPThmOzlTK2I6jdE2Wn/WP1na8NJD9xXbxmsJCZsW8Viyd2xrjigghhBBCCkOhQ0JJSqFToaWjtcZ0HKVrDh2dOErX5rebQqdPlKcFkaVrc6sQL53nhVsXFXzt+VsKv0YIIYQQEjcUOiQU6UpWmrome3sSyi6Lc0FLY4QenSqEEUih0z9aWOj0jZivLWivntB5/pbFaCjw73fz2UtjXg0hhBBCSGEodEgoMhmtUkfH7s/x85GL5OiIfdsa/ffoWKVrY1Oh3+OJ6TSGJ0+X1iUTygoyiJOFnc145QXLrefPWTGX/TmEEEIIqSkodEgodo9OZceZlsNCPbg5QEiPTjkDQ6tQutbUkEBn82lBldHhgQR9wumZ397kxRErhz+5cQvWdref2u5qa8THXnVOXTUnEkIIIWT2w9Q1Eoq8mHZVuuZL6EhHp9bn6ADAvPYmw63pG5vCPFGW1ltDZWt5ujua8aP3XYUfPHYEaa3xwjMWY9GclmovixBCCCHEgEKHhCLDCCqNrbaCCDyVrjU3VuboZDLaKl1rbYxH6Mxvb8KBvrFT232jU1i/0NynZ3TS2O7uaI5jaTPS1tSA11+yqtrLIIQQQggpCEvXSCjSeKl0YGgc0dKAPTC01B6diZS5X0tjIrbSMCt5LSSQwAoi6Ki+o0MIIYQQUg9Q6JBQrNK10lteDFJpWbrmy9GprHTNLluLz+QsRej0CkdnQXttODqEEEIIIbUOhQ4JRYYRVF66ZiqkxpgcnVLjpa0ggpjK1oAShQ4dHUIIIYSQiqgroaOUSiil3qyU+qVS6rhSakwptUsp9Rml1GYP59uglPq0UuqZ3LlOKKVuV0q9VSk14/cut68u8eu3Xa8/CrKVptIwAhkvLWOrXVFpvLR0dOJIXMtjRUyHCJ0eIXS6KXQIIYQQQkqiboSOUqoLwE8BfBnAeQC+BeAfARwA8PsAHlVK/abD870ewGMA3gfgcO5c3wBwNoAvAvilUmqeq/PVGr7ipX2FEciBoRPTpTk6Y1MpYzuuxDXATlBj6RohhBBCiDvqInVNKZUE8E0A1wN4FsA1Wuujgdc/AOCTAL6klDqutf55xPM9D8D/Q/b788da608EXvsogF8DuBbAt5RSN2qtU+FHAgA8CODNJZz26My7xIcldCpUOla8tKfSteYG0aOTKs3RqWbpmoyS7htj6RohhBBCiCvqQugAeBuAF+YevzMocgBAa/0ppdTLAFwD4PNKqU1aa/uqsQSUUk0AvoDs9+aOoMjJneuYUupdAH6JrPB6O4DPFTnkmNZ6RyVrqSayxCzjKF7aVxhB5Y5OdWboAKX26NDRIYQQQgiphJovXcv1wnwot7lda317gV3/Offf1cgKo0p5C4C1ucefCdtBa/0rANtzmx/KOU6zCmfx0nGFEVhzdNIlBSjIGTpxpq7JfpueYVPUZDLa6tGho0MIIYQQUho1L3QAXAVgZe7xj4rs92MA+avW10c43xty/80A+EmR/X6Y++9yAFdHOF9NYvfouAkj8OXoJBPKEFFaA1MlZGJbpWsxOjqLOluM7RPDk0aJYP/YlPH/0NncgPbmejFhCSGEEEKqSz0InZsCjx8ptJPWehRAvkTsKqXUnHJPpJRqR7b8DQCe0VqPFNn9ocDjm0s9vlJqeSVrixtfYQS+enQAoLmCiOlqhhG0NiUxp+W0cElltNGnc2xowth/8VxTGBFCCCGEkMLUg9A5J/B49wz77sn9NwlgawXn2pp7bznnArJJbIVoVUr9uVJqJ4ARAIcADCqlepRSX1dKXVLBOr0je3QqL12Tjo4/oWOVr03NHEgwNl09RwcAFs8xxcvxgLg5LoTOkjkUOoQQQgghpVIPQic4H+fIDPsGX69kro6Pc10C4G8APA3g3QBeB+CPAOzPPb5fKfX3Sil/CqACEo7CCKzSNU/x0gDQ2mQeW/bfhCFL19oa4y0Nk0LnxNDpPp1jg5NF9yWEEEIIIYWph4L/+YHHxUrJ5OuVzLjxca4JAK/QWhv9PkqpfwLwT8jO6fn/cvv9delLDacSvRTWtC+Nl8qFTjxhBIAdDV2K0Klm6hoALJpjpqgFXRyrdG0OE9cIIYQQ4o4au8/unHpwdDoCjycL7pUleGXYGeO5Ogrs8xcArpAiBwC01hkAHwCwLffUh5RSG0tdqG+SylfpmkdHRwqdUkrXqhhGAISVrp3+2B0fFKVr7NEhhBBCCCkZJ46OUmqLi+M4mDdTYcu8n3Npre+a4fW0UupfAXwW2d6gdwP4P5EWVaHzIpEKvx7CCKRIKUXojFcxjAAAFnUKR2d4IvQxwNI1QgghhLilkuvGenKBXJWuPe3oOGHfuRGcLg1rRnGnpTXweLiC8wfL0WaqEwqea6Yyt2LcGXj8/AjHcYo1MLRSR0e8rzFOR6cOStfsHp1A6Zp0dCh0CCGEEEJKph5K1/oDjwuViIW9PlDj58qzL/B4TYTjOEVmBlTcoyMcnWScjk4pYQRW6lrcYQSmns735Witcbh/3HhtKUvXCCGEEEJKxslVndbap4e1E8C63ONlKJ6Gtky8r5JzhR3Lx7nyBK9mK+kr8oK0JdMVlq7Zjo7PMALz4yzdmjCsHp3GeB2dpXNbje1DOXEzOD6N4cnTZXXNDQks7GQYASGEEEJIqdSDo/NE4PG6gnuZr2cAbK/gXE8ByF/5lnou4HSgQCUExc1ghOM4RYYRVNr7Y4URxBgvPVEHpWtL5rSgKfA9GRibxuD4NA70jRn7rZrfVlc1sYQQQggh1aYehM6PA48vLLSTUqodQD4U4W6t9VC5J9Jaj+B0z8zm3DELcVHg8a0h6/mUUuqQUqpphtNuCDzeVdpK/ZNwlLo2nYkvjKCtqXxHR4qhuFPXEgmFFfNNV+dg3xj299pChxBCCCGElE49CJ27ABzOPb65yH43IZtcBgBfj3C+/HsTuWMW4iW5/x4FcEfI6/MBLAewfobzXR94/PNSFhgHMjPAVby0zzCCloripaubugYAq4WI2d87Zjk6Kyl0CCGEEELKouaFjtY6DeBvcptnKqWuK7Dre3L/PQjgC2E7KKWuVErtV0rtU0pdXuA4/wlgvzimPM7zAJyZ2/zb3BoL8VuFXlBKtQH4/dzmFIB/LXKcWLFS1xyFEXiNlxZCp6LStcb4Z+iuXmAahwf6xnAwpHSNEEIIIYSUTs0LnRyfB/CL3OP/UEotDb6olPoAgGuR7a95p9a6UAT1xwGsArAawCfCdtBaTwF4B4AUgGuVUn8kzrUYwOdym7cD+PcZ1v7HSqlXyieVUp3Iukcrc0/9kdb64AzHig1XA0OnM3JgqM/SNVPolFK6Jl2fuEvXANutOdA3imdPmInlqxdQ6BBCCCGElEP8t68rIDdY8zUAvgPgOgDblVJfA3ASwDXIzp8ZB/C7WuvbihxKFXgsz/dzpdRbAPwHgI8rpV6MbHnaAgC/iWxZ2p0AXq21ThU4zL0AXg5gLoD/UUrdmzvGELJC6+UAFiPr5PyR1vqfi6w7dhKWo1PZcWxHp3bm6EylMkYqXENCoakhfu2/RoiYXcdHsPO4OQZq0+KaCeQjhBBCCKkL6kLoAIDWul8pdT2ANwN4C4DXIptYdhjZkq9btNY7ZjjMBwH8FwAN4I9nON/XlFIPAngfgBsB/H/IDgZ9EsBXAHypWMma1vpzSqn/QraX58UAzgfwbgBtyKar7Ua2xO5ftdaHZlh37LhydGS8tE9Hp6XMOTq14OYAwOYlpoh5aH+/sd3R3IAV88zAAkIIIYQQUpy6EToAoLXOAPhS7quS9/8a2dK1UvffBeC9lZwr9/5RAN/IfdUVskfHWRiBR0enrcwwgrHp6gcRAMDyrlbMbW3E4Ph06Oubl3QyWpoQQgghpEzqpUeHxIxdulapoxNjGIF0dGYSOtYMnerofqUUti6dU/D1Yq8RQgghhJBwKHRIKM7CCKoZL11u6VpjdRwdADh3ZVfB1y5ZOz++hRBCCCGEzBIodEgoUo/UQ7y0LD2bydEZnTRL1zqaq1fJee2mhQVfu3QdhQ4hhBBCSLlQ6JBQfMVLy94fl5SbujYqh4U2V8/RuWjNPMxpsYXWJWvnY1FnSxVWRAghhBBS31DokFBchRGkYwwjsHp0ZhA6I5Pm6+1VdHQakwm89cq11vO/fcWa+BdDCCGEEDILoNAhoTiboyPDCHw6OuWGEYjStfYqpa7leffz1uMFZywCADQmFd51zTrcdNaSqq6JEEIIIaReqat4aRIfsnRNCpZSscIIYh4YqrUuGM08IoVOFR0dAGhuSOI/3nwRDvSNoau1CXPbGqu6HkIIIYSQeoZCh4QiS9cq1Dmxxks3JhNoSKhTQ0rTGY2pdAbNDeFOjYyXbq9SvHQQpRRWL2iv9jIIIYQQQuoelq7NMpRSBb/KwerRqTB1TTo6DR7jpQG7fG1iqrBCk6lr1XZ0CCGEEEJqAVfXk9WGQoeE4ip1Lc54aaC85DWZutZexdQ1QgghhBDiFt7CnmXoCp0XiQwjAIBMRoc+X4xURjo6noWOcHTGhJgJMipT12qgdI0QQgghpNoUu56sJ1eHjg4piIvytVSMYQRAeY6OHUZAR4cQQgghZLZAoUMK4qJ8Lc4wAiCkR6eI0JFuD3t0CCGEEEJmDxQ6pCAyNyDjwNHxHUbQZpWuFXN0zNfaWLpGCCGEEDJroNAhBXHh6EwLR6cx7jCCIkJHDgztoKNDCCGEEDJroNAhBZHBA5XM0rEcHc89Oi3lpK4JoSPdIEIIIYQQUr9Q6JCCuAgjsOfo+HV0pFgp5ujIMAI6OoQQQgghswcKHVIQF6VraRlG4DteurG0Hh2ttfVaG1PXCCGEEEJmDRQ6pCBW6ZqLMALPpWttwpUpNEdnMpUxZvw0JhWaGyh0CCGEEEJmCxQ6pCD1GEYgy89ksloey81h4hohhBBCyKyCQocUxOrRqWSOTszx0u2iR0cGDhR6nv05hBBCCCGzCwodUpCoQkdrbZSHAf57dOTQz4JCxxoWyrI1QgghhJDZBIUOKUjU1DUpchLK7vtxjSV0CvTo2NHSdHQIIYQQQmYTFDqkIFKTZMp0dOIOIgDCHJ3wHh3Zu8PSNUIIIYSQ2QWFDilIdEdHBBF4dnMAoEOUoMlZOXnGOCyUEEIIIWRWQ6FDCpKImLpWC45OoXhpDgslhBBCCJndUOiQgkhHRxg0MxJ3tDQAtDeVVrrGYaGEEEIIIbMbCh1SkMilazFHSwO2o1OodE0+L99HCCGEEELqGwodUhD3pWsxODrN9hwdHSLQhiamje05LY1e10UIIYQQQuKFt7FnGUoVFhNhF/zFsErXyny/LF3zPUMHAJobkmhMKkznRFYqozGVzqC5wRRAwxOmo9PZwh8FQgghhBCg+PVkPUFHhxQkGdHRkfvHEUYA2DNxwvp0KHQIIYQQQmY3FDqzDK11wa9ykS015c7RmU7H7+gAdoKaHA4KAMOidK2zmaVrhBBCCCGA2+vJakKhQwriOoygMSZHx+rTCYmYpqNDCCGEEDK7odAhBYkcRiB7dGIIIwDCStdKcHQYRkAIIYQQMqug0CEFiRxGIB2dGOKlAbt0bYQ9OoQQQgghzzkodEhB7DCC8t4vS9ekcPJFWMS0RAodxksTQgghhMwuKHRIQawenUx5SseKl46pdE0O/5RCJ53R1sDQDjo6hBBCCCGzCgodUhBb6JT3/nS1wghm6NGRIqe9KRmb20QIIYQQQuKBQocUJBE1da0KA0OBEEdnyuzRYRABIYQQQsjsh0KHFET26JQ/R6c6jk6H6NGRDg6DCAghhBBCZj8UOqQgdulafcRLS0dnZIJChxBCCCHkuQaFDimINUcnYrx0Q0zx0jJBTZaqsXSNEEIIIWT2Q6FDCiIrzcotXZPx0nH16MxpNYXLEB0dQgghhJDnHBQ6pCBW6VqZjo6Mo46rdG2OEC5D43R0CCGEEEKea1DokILI0rV6CSOY22YKl0EhdKTDI4URIYQQQgipfyh0SEGchxHEVbrWIkvXpKPD0jVCCCGEkNkOhQ4piB1GUN77rTCCmBwdq0dn3BQ2g+NTxvbcVpauEUIIIYTMNih0SEGkoxM1jKAxrnjppiSCSx+fTmMqddpdGhgzHZ6utqZY1kUIIYQQQuKDQocUJGoYgV26Fs/HTSlluTrBAAJb6NDRIYQQQgiZbVDokIJYpWsRwwjiSl0D7D6dYCBB/5hZujaPjg4hhBBCyKyDQocUJPocneqEEQDAnFYRMR0IIJApbOzRIYQQQgiZfTBuapahVGExocssPUuKUrNU2alr1QkjAEKS14o5Ou10dAghhBBC8hS7nqwn6OiQgiTlHJ2IPTpxhREAhSOmJ6bTmJg+va6GhEJ7UzK2dRFCCCGEkHigozPLKNe1KYY0YMqeoyN7dGIKIwDscrR8xHRY4tpsuWtBCCGEEOKCYteT9XTdREeHFCQRMXWtqmEEVo9OVuAMiBk6TFwjhBBCCJmdUOiQglila2X36FSvdE06Ovm+HOnozKPQIYQQQgiZlVDokIJYc3QyBXYsQDVL12TAQN9IXuiYjs7cVgYREEIIIYTMRih0SEHkHJ1ywwim09VzdBa0NxvbfaNZgdPPYaGEEEIIIc8JKHRIQWxHJ2K8dIyOzoIO06npyQmdnuHJovsRQgghhJDZAYUOKUj0MALT0UnG6OjMl6Vro1mB0zNiCp2FHabzQwghhBBCZgcUOqQgUcMIpAPUGKejU6BHp2fE7NFZ2EmhQwghhBAyG6HQIQVxPkcn5oGhwdK70ak0JqbTOClK17rp6BBCCCGEzEoodEhBZBhB2aVrVYyXTiRUSPnalF26RkeHEEIIIWRWQqFDCiLDCMqeo1PFeGkgpHxtdIqODiGEEELIcwQKHVIQK3WtPJ1jhRHEWboG2IEEhwfGMTyZOrWdTCh0tTJemhBCCCFkNkKhQwpizdGJGC/dKJt+PLNIlKU9eXjQ2F7Q3mQlyxFCCCGEkNkBhQ4pSIMQASnRczMTKenoxCwqlna1GtsP7es3tpfMbYlzOYQQQgghJEYodEhBrDk65ekcTKer6+gsE0LnwX19xvZy8TohhBBCCJk9UOiQglhzdMpMXZMOkOz58c0y4djIUjoKHUIIIYSQ2QuFDimIFUYQcWBo3GEE0tGRLJ9HoUMIIYQQMluh0CEFkaVr5To6VulazPHSy+bOIHTo6BBCCCGEzFoodEhBZOlauY6OFUYQs6Mzp7UBHc0NBV9f090e42oIIYQQQkicUOiQgkgDplyhM13leGmlFDYu7gh9rSGhsGYBhQ4hhBBCyGyFQmeWoZQq+FUukcMIqhwvDQBblnSGPr+mux1NDfz4E0IIIYRIXF5PVhNe6ZGCRAkjyGQ05O5xp64BwJYlcwo8Hy6ACCGEEELI7KBwAwOpS3SZrksxrDk6ZRx6WkRLNyarcxfgglXzQp+/dN2CmFdCCCGEEFIfFLuerCdXh44OKYhVulaGo5MSqqgh5sS1PGctn4OlYp6OUsDzNi+synoIIYQQQkg8UOiQgkQpXbOETsyJa3mUUnjP8zcYz73qghVYMa+tKushhBBCCCHxwNI1UpBEhDCCVKb6QQR53njJKjQlE7h950mcsbQT77xmXdXWQgghhBBC4oFChxQkkqOTkY5O9cxDpRRec9FKvOailVVbAyGEEEIIiReWrpGCSG2SLsPRmRbR0o1VdHQIIYQQQshzDwodUpCkCBCI1qPDjxohhBBCCIkPXn2SgsjUtfJK10SPTpXCCJ7r1ONwL+IXfiZIGPxckDD4uSD1DoUOKYhMhC4nXnpaODqNVYqXJoQQQgghz0149UkKYoURlJO6ViPx0oQQQggh5LlJXQkdpVRCKfVmpdQvlVLHlVJjSqldSqnPKKU2ezpnUin1p0qpSaWUVkpdV8ExmpVS71VK3aOU6lFKjSiltiul/kEptdz9qt1gl66V/t5pq3Strj5qhBBCCCGkzqmbq0+lVBeAnwL4MoDzAHwLwD8COADg9wE8qpT6TcfnPAPAvQD+DkBThcdYCeA+ALcAWI3s+j8FYBTABwE8rpR6gZMFOyaRiDBHxypdo6NDCCGEEELioy7m6CilkgC+CeB6AM8CuEZrfTTw+gcAfBLAl5RSx7XWP3dwvj8E8BEAKQC7Aayv4DjtAH4I4Bxkxc4NWuvh3MsfVkrdAuC9AL6rlLpCa70tyrpd4zKMQJbBEUIIIYQQ4pN6cXTeBuCFucfvDIocANBafwrAr5EVbp9XSlXkvgT4FoCPAXgAWZFyV4XH+bPc+1MA3hwQOXn+EFnh1gHgcxWewxuWozOD0Amms1iOToyla7WQElMLa6gVauF7UQtrqKV11AK18L2ohTXU0jpqgVr4XtTCGmppHbVALXwvamENtbSOeqHmhY5SKgHgQ7nN7Vrr2wvs+s+5/65GVhhFYQmADwC4Tmu9p5ID5Ert3p/bvE1rvUvuo7WexmmBc7lS6sZKzuWLSGEEjJcmhBBCCCFVpOaFDoCrAKzMPf5Rkf1+DCCde/z6iOd8qdb6n7TWZbTf28cA0J57XGzdPww8jrpup0QpXZPx0g2MlyaEEEIIITFSD1efNwUeP1JoJ631KIAduc2rlFJzKj2h1rqn0vcGKGndAHYCyJe0vdjBeZ1hzdGJEkZAR4cQQgghhMRIPQidcwKPd8+wb77MLAlgq5/llExJ69ZaawD7cpsLlVJLfC6qHFyGETBemhBCCCGExEk9XH0G5+McmWHf4Ote5uqUQq6vaGNuc7oEh6gm1i2RPToZDegSXR1ZusZ4aUIIIYQQEif1IHTmBx6PzLBv8PV5HtZSKh0AGnOPZ1qz3Kea6zbIJnuYz5Vq6qTSDCMghBBCCCHVox7m6HQEHk/OsO9E4HGnh7WUSjlrBhyu23fkYMPHKlvDx3NfcVIL8Yu1sAagNtbBNZymFtZRC2sAamMdtbAGoDbWUQtrAGpjHbWwBqA21lELawBqYx21sAagdtZR6zgROkqpLS6Oo7XeMfNexQ/hYh1VoF7XTQghhBBCSE3iytF52tFxwuTpCE6XczWjuEPSGngsh3PGSbAUrbmE/SOvW2tNaU8IIYQQQkiOeujR6Q887ii4l/36gPullMwIgFTucXuxHXPUyroJIYQQQgiZFTgROlpr5eKrwOF3Bh4vm2Epwdd3FtzLM7lBo7tym01Kqe4Z3lIT6yaEEEIIIWS2UA+OzhOBx+tm2Df/egbAdj/LKZmS1q2y3WRrcpu9WuujPhdFCCGEEELIc4F6EDo/Djy+sNBOSql2APlQhLu11kNeVzUzJa0b2bk5+aS1W/0thxBCCCGEkOcO9SB07gJwOPf45iL73QQgmXv8da8rKo0fABjLPS627pcEHtfCugkhhBBCCKl7al7oaK3TAP4mt3mmUuq6Aru+J/ffgwC+ELaDUupKpdR+pdQ+pdTlThcq0Fr3A7glt3mDUmpjyHoaAbwrt/mA1pqODiGEEEIIIQ6oeaGT4/MAfpF7/B9KqaXBF5VSHwBwLYA0gHdqrQtFUH8cwCoAqwF8wtNag3wUwJMAGgF8RSklh4F+EsAGAKMAfieG9RBCCCGEEPKcwNUcHa9ordNKqdcA+A6A6wBsV0p9DcBJANcAeD6AcQC/q7W+rcihVIHH5k5KrQTwusBTZwYev04pdVHu8aDW+j+KrHtEKfUSZMvYLgPwtFLq68iWtN0I4GJk47PfoLV+vMi6CSGEEEIIIWWgtNbVXkPJKKUSAN4M4C3Iio9OZPt3fgrgFq31jhnefw2A/wKgAbxRa313gf2uA/CrEpa0X2u9poR1NyNbovZGAJuQHSJ6AMD/5tZ9qIRzEUIIIYQQQkqkroQOIYQQQgghhJRCvfToEPKcRSnVrJR6hVLqS0qpp5VSQ0qpSaXUUaXUbUqp9yilOso85rVKqW8opQ4opSZy//22Uup6X/8fJD6UUi9SSunc1+1lvI+fi1mGUmq+UuoPlFJ3KKUO5353HFdKPaaU+qJS6reUUvNnOAY/F7MEleU1Sqnv5MKZxnP/pgeVUt9TSr0uVz1TyrH4uagjcoFcz+T+Lnypgvc7+fdWSm1QSn06t5YxpdQJpdTtSqm3lvrZK+t8dHQIqV2UUr8H4C8BLAYwDeBHAB5DdijuOQBejmyv3SEAry9UjimO+UkAHwCQAvBtAE8hO4Pqtblj3QLgDzR/OdQlSqkWZENQ1ueeukNrfV0J7+PnYpahlHolgH8FMA/AzwE8CmAC2SHWr8LpGW6/p7X+twLH4OdilqCUWgDgewCuyj11F4D7AEwBuADZ3mEAuBvAy7TWvUWOxc9FnZD7m/BRAH+A0wbHl7XWv13GMZz8eyulXo9swFg7gNsB3AFgAbKtHfNz26/IJRe7QWvNL37xq0a/AOxAtqfsEICtIa+fC+B4bp9hAGfNcLwP5fYdA3CNeO2q3PMawF9X+/+dXxV/Zv4m92+Y/7q9hPfwczHLvgC8Htkk0u0AtoS8vhjAM7l/19/l52L2fyHbe5z/vfDOkNdvQvZCViN7g6TQcfi5qJMvZIOw8tcRjwX+/b9UxjGc/HsDeB6yN2w1gD8Sry0J/D76OYAGZ9+Dav8j8Itf/Cr8FfgF9eIi+7w68MvrtiL7bQn8EfurAvv8de71dJiw4ldtfwHYDGASwOOlCh1+LmbfF4CNuc/BMICVRfb7LQAjAN7Oz8Xs/gJwReB3wo+L7Pdvgf1ewM9F/X4BeEXu36oH2Rsf15UrdFz9ewNoArCn2N+knBDKr+9drr4P7NEhpPY5DuDHRV7/DoDB3OMXFKm3/xCAJLK/jP61wD6fzb2eAPDh8pdKqsy/Iju36/fKeA8/F7OPTyF7YfEvWuuDhXbSWv+X1rpDax02ZJufi9nFpYHHdxbZL/ja80Ne5+eifliNbLn7WVrrr1d4DFf/3m8BsDb3+DNhO2itf4WsAw0AH1JKJStZsIRCh5Da5osAPqJztzvC0FpnkLV8gezP9Aa5j1KqFcDLcpsPa62PFzjWcQAP5TZ/QynVVunCSbwopd6E7B2xL2it7ynxPfxczDKUUmsA3Jzb/HaFx+DnYvbRFHg8UmS/4cDj7uAL/FzUHf+ltX6Z1vpYJW92/O/9htx/MwB+UuS0P8z9dzmAq8tbcTgUOoTUMFrrf9Raf7aEXYM/y2GDgK9BtvkPAB6Z4Vj5X1htyF44kxpHKTUPwCeQLVH4YBlv5edi9vE6ZAdip5AtYQQAKKUalFJLlFJzSjgGPxezj8cCj88qsl/wNXlhy89FHaG17ol4CCf/3kqp9tyxAOAZrXUxof1Q4PHNBfcqAwodQmYHq3L/zTcfS84JPN49w7H2BB6fHWVRJDb+AcAiAH+ite4r4338XMw+8olah7TW00qplyilfols2tpRAIO5aPp/U0qtLHAMfi5mHz8D8EDu8ZuUUmHO/3wA7w889b9iF34unlu4+vfeimz5W9TjVASFDiF1jlJqI4CFuc0faa0HQ3bbHHh8ZIZDBl/fXHAvUhMopS4D8E5ko2K/VObb+bmYfZyb+++IUuozyF6stiIbLft6ZOPqNYB3AXhKKXVDyDH4uZhl5EqcXwzgfwC0ALhfKfV+pdQlSqnzlVJvQ9b1WZR7y79orR8Qh+Hn4rmFq3/vqn5uwkpcCCH1xZty/80gGy0cRjCgoJhtLF+fV+miiH+UUg3IpiSlkZ2FUu7MCn4uZhG5YXt5l+as3NfnAfxO8LOhlPossrNSNgH4rlLqQq31jsCh+LmYhejsXJxXK6WuBfCPAP5vyG6HAPyt1vpzIa/xc/HcwtW/d1U/NxQ6hNQxud6Md+c2/0Vr/VCBXTsCjydnOOxE4HFnwb1ILfB+ZO/gf1xr/WQF7+fnYnYh+2+OA3i/FMBa6x6l1O8C+CWyNfWfAPCSwC78XMxCck3if4+sm5dE1gG+A9l/w7ORjR/+KoBvFjgEPxfPLVz9e1d6nI6Ce5UBhQ4h9c0tyE4VfhTAnzg6JidZ1wFKqRUA/grAQWTnGPiGn4vaR14Y/I/WeixsR631r5RS+wCsAfBipdQyrfVMZSWhh6rgPSRmcu7vrQCuBTAO4PkinfHrSqlFyE6r/6hS6ve11l+LcEp+Lp5buPr3dv65YY8OIXWKUurdyA78OwTgpVrrif+/vbsNtawqAzj+f3wpU8swaSQidUoUB2FoBkxCZYLGlwLLN6K+9MGXMXyFDD9EaAoKYqAQ2ogUopiIjogVqDATgwxSgjg4g0qpICjjaL6MM2nq04e1r2fN4Z6775w5eu9d9/+Dy1n77LXXPpf13Hv2c85aa89Qvf46+PM9TX+hKr87spbm2q2UC9vLMvO9MdswLtrywdD2P3rqT83BCMoNJacYF+25nJLkANw43RL0mbmNMt/vy8A9EXHOUBXjYnGZVH+P207fMLdZMdGRFqCIOJNyobsdWJ2Zr/Qc8p+q3Pd1cL3/rT1/dfq0RcQPKHe9fiQzH9qLpoyLtgxfYPTdP6O+megRVdm4aM+FVfmuUZUy8wkGK1/dEhH7V7uNi8VlUv09p3Hj0DVpgYmIU4H7gLeB72fm1lkc9lxV/lpP3Xr/cyNraU5ExAGUO0t/CNzc3SByJgcM1fmwSoyNi4Zk5q6IeJPB5N//9RyyqyofVJWNi4ZExBcpC08A7MjMl3oO2QwspfTtCZQVHcG4WGwm1d9zGjcmOtICEhHfA9ZRLlBWZ+bTszz0maq8tKduvX/z7F+dPiOHU+ZVAKyfRf0TgBer7Zer442L9mxmMESpbxJ4ndy8VZWNi7bUi1TMZjhQXedIBomOcbG4TKq/t1BWBt13L9sZi4mOtEBExEnAw5RPaU/NzKeG9u9DeUP77zTzdf4O7KSssLSi51Qru8ddzO5CWp+tbZRha33WdY/PAr+unq8npxsX7dnAINHpu6g4qirXn54aF22phw59KSKiZyn6Q6py/V5iXCwuE+nvzNwRERspq/odExEHzTCvdGVV/usev+JpOEdHWgAi4kTgL5QVSU6b5kZuAN+gvKFdPbwjM3dRkiSAFRGxZMR5ljD4R/PIXkxy16ckM3dm5kN9P9Uh24f2PVq1ZVy0p14a+ORRlboPRk7sNndS7qsDGBet6Vbee6HbPBA4dlTdiAjg29VTz1ftGBeLyIT7+8/d4z7A6TOcdmqZ+1cpidZeM9GR5rmIWAn8jfL3ekZmbhqzqesYfH188Yg6v+j2fwz8dszzaGExLhqSmVuAB7vN0yPiiBFVzwKmLlxuz8zhIU3GRVvurcoXzVDvhwzmSbyQmc8M7TcuFpdJ9fcfKcOmAS6ZrkJErAKWdZvXZ+ZH47zgYSY60jwWEcuBRylDCR4GlkXEmul+gJ/N1FZ3AXR9t/mrbihcfa7vAld1mzeMeQNKLTDGRZOupAxx/BxlmeB6KBIRcSxlQQso4+d/M9yAcdGc3wH/6sqXRMRPhitExHHA7d3mx5Q42o1xsbhMqr8z8wPgfMoiOqdExC+H2lkC/KHb3ACsncgvAMTMwzQlzaWIeB04bA8PuzYzrxnRXlDe8K6g/MO5H9gKHAOcB+wP/B64tGcMt+aZiFjG7kMCbuoe/w3cVj2/NjPfGTrWuGhM9yHJOspk8tcoffoapU/PpdyvYhNwVmZOuwy1cdGWiFgKPAAs757aSBke9D5wPPAjSnK8A7g4M+8e0Y5xsUBExAUM5lx9E1jTlf9JWb11yn2ZWS83X7cxsf6OiJ8Cd1CGUK6nxN9XKB/UHkqJyR9n5ht78nvOeE5jUJq/ImKcP9CRiU7V7irK183fAb4KvA48CdyWmY+PcU7NsYj4OWV4QJ+jRi0va1y0JSIOpgw3ORv4FmUVtu2Ui5x7KRc3vf9jjIt2dPfFOZuS7K6g9Od+lFX3tgKPAXdm5quzaMu4mOci4iV2v0fWKKsyc0NPWxPp74g4GrgMOA34OiWx3kK5v9OfJjVk7ZPzmehIkiRJao1zdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ1x0RHkiRJUnNMdCRJkiQ15/+EVHJfkJ4VwwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 257, + "width": 413 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x =np.linspace(0,100,10000)\n", + "y = np.sin(x)/x\n", + "plt.plot(x,y)\n", + "plt.ylim(-0.1,0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e3154a5", + "metadata": {}, "outputs": [], "source": [] } diff --git a/class/notebooks/Test HMcode2020.ipynb b/class/notebooks/Test HMcode2020.ipynb index 89b552fe..86a2f81c 100644 --- a/class/notebooks/Test HMcode2020.ipynb +++ b/class/notebooks/Test HMcode2020.ipynb @@ -903,10 +903,22 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 3, "id": "166f4d10", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'h' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m'omega_b'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.02225\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m'omega_cdm'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.1198\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;34m'h'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m'A_s'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m2.100549e-09\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m'n_s'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.9645\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'h' is not defined" + ] + } + ], "source": [ "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", "\n", @@ -996,6 +1008,50 @@ "pkclass_lin = np.array([cosmo.pk_lin(ki,0) for ki in k])\n" ] }, + { + "cell_type": "code", + "execution_count": 2, + "id": "01959bae", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'np' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpkclass_lin\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcosmo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpk_lin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mki\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mki\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined" + ] + } + ], + "source": [ + "pkclass_lin = np.array([cosmo.pk_lin(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c3242ee8", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pkclass_lin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpkamod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpkclass_lin\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m0.919\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpkclass_dm\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mpkclass_lin\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'pkclass_lin' is not defined" + ] + } + ], + "source": [ + "pkamod = pkclass_lin+0.919*(pkclass_dm-pkclass_lin)" + ] + }, { "cell_type": "code", "execution_count": 24, diff --git a/class/notebooks/cambvsclass-v2.ipynb b/class/notebooks/cambvsclass-v2.ipynb index 0d81d0ff..6175d20b 100644 --- a/class/notebooks/cambvsclass-v2.ipynb +++ b/class/notebooks/cambvsclass-v2.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "id": "f5a8a3bd", "metadata": {}, "outputs": [], @@ -107,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 3, "id": "28f881e4", "metadata": {}, "outputs": [], @@ -124,13 +124,13 @@ "m_nu_min, m_nu_max = 0., 1.0\n", "zs = [0.0]#1.008916e+00]\n", "zs = np.array(zs)\n", - "nuFlag=False\n", + "nuFlag=True\n", "k = np.logspace(-3,np.log10(20),2000)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "id": "3572f79c", "metadata": {}, "outputs": [], @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "25528d17", "metadata": {}, "outputs": [], @@ -204,8 +204,10 @@ " else:\n", " N_ncdm=0\n", " m_ncdm=0 \n", - " \n", - " N_ur=3.046-N_ncdm\n", + " if N_ncdm!=0:\n", + " N_ur=2.0308\n", + " else:\n", + " N_ur=3.0440#3.046-N_ncdm\n", " # N_ur = 3.046\n", " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", " \n", @@ -273,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "dd878ca2", "metadata": {}, "outputs": [], @@ -329,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "269e5d7b", "metadata": { "scrolled": true @@ -859,7 +861,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "id": "a6dbd1e8", "metadata": { "scrolled": true @@ -871,7 +873,7 @@ "dict_keys([0.0])" ] }, - "execution_count": 12, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -882,7 +884,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "4afb4236", "metadata": {}, "outputs": [ @@ -893,7 +895,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlinearratio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHM2020DM\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2020TAGN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2016\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcosmo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlinearratio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHM2020DM\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2020TAGN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2016\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcosmo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: 1" ] } @@ -914,10 +916,272 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 12, "id": "ff1446a3", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1875484811639968 {'h': 0.6773656795309324, 'Omb': 0.059682848398124905, 'Omcb': 0.38845587241425783, 'ns': 0.9227238721784777, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.06381725610417532, 'As': 1.7928947328346282e-09, 'TAGN': 8.2, 'Omcdm': 0.32877302401613295}\n", + "0.1287667512244799 {'h': 0.8032350960341496, 'Omb': 0.05394993197366195, 'Omcb': 0.4194761663721784, 'ns': 0.9354525968129869, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931211213221977, 'As': 4.673777448553246e-09, 'TAGN': 8.2, 'Omcdm': 0.36552623439851645}\n", + "0.19856567962038651 {'h': 0.6303301432552608, 'Omb': 0.06402529197302631, 'Omcb': 0.41297772315458975, 'ns': 0.9370459706034869, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1894713590842857, 'As': 1.474096162541431e-09, 'TAGN': 8.2, 'Omcdm': 0.34895243118156344}\n", + "0.17033244426312666 {'h': 0.8329039205580804, 'Omb': 0.044370999241461234, 'Omcb': 0.3844240196419111, 'ns': 0.9804764357496802, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2883281039302441, 'As': 1.2202487834934918e-09, 'TAGN': 8.2, 'Omcdm': 0.3400530204004498}\n", + "0.18673278100122104 {'h': 0.5799632809900434, 'Omb': 0.039192574508279295, 'Omcb': 0.3756916753032744, 'ns': 0.9007362269751006, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6648508565920321, 'As': 3.061218870631084e-09, 'TAGN': 8.2, 'Omcdm': 0.3364991007949951}\n", + "0.16847238666756947 {'h': 0.7260944425924756, 'Omb': 0.049132886184293977, 'Omcb': 0.3828134785423883, 'ns': 0.9764998857416025, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5535794006579958, 'As': 2.156196438393418e-09, 'TAGN': 8.2, 'Omcdm': 0.33368059235809433}\n", + "0.15675014100064444 {'h': 0.765725416130955, 'Omb': 0.058516946273192406, 'Omcb': 0.3699233767414481, 'ns': 0.940638686144007, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1669729199077039, 'As': 3.2582949026979073e-09, 'TAGN': 8.2, 'Omcdm': 0.31140643046825567}\n", + "0.1960284500465631 {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "0.15068880012285113 {'h': 0.7363661965925667, 'Omb': 0.045406094136045114, 'Omcb': 0.36161832207612415, 'ns': 0.9022803871029698, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.48230343694290023, 'As': 4.544951127752614e-09, 'TAGN': 8.2, 'Omcdm': 0.316212227940079}\n", + "0.14834065675849406 {'h': 0.6946633323352641, 'Omb': 0.03748189999767316, 'Omcb': 0.3940289454477304, 'ns': 0.9490706994354521, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5717280523760754, 'As': 4.333077525529854e-09, 'TAGN': 8.2, 'Omcdm': 0.3565470454500573}\n", + "0.2163686146009235 {'h': 0.6326275989370209, 'Omb': 0.04300926989275681, 'Omcb': 0.3377071501041476, 'ns': 0.9520672402471538, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.021612079880330426, 'As': 1.3736669982617794e-09, 'TAGN': 8.2, 'Omcdm': 0.29469788021139076}\n", + "0.17868628457579205 {'h': 0.7219409877565933, 'Omb': 0.036122376685285396, 'Omcb': 0.28216517486426157, 'ns': 0.9370922283862438, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8082514720643018, 'As': 3.378778698168805e-09, 'TAGN': 8.2, 'Omcdm': 0.24604279817897617}\n", + "0.18340270860469832 {'h': 0.6740388240012152, 'Omb': 0.03634731858176987, 'Omcb': 0.2692688820981735, 'ns': 0.9992375564055838, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7486080194569492, 'As': 3.896254084756198e-09, 'TAGN': 8.2, 'Omcdm': 0.23292156351640364}\n", + "0.1531060814887134 {'h': 0.7075433441545796, 'Omb': 0.0618033991909359, 'Omcb': 0.43996189736664093, 'ns': 0.9315929051830794, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6616612631677611, 'As': 2.957892842286542e-09, 'TAGN': 8.2, 'Omcdm': 0.378158498175705}\n", + "0.1542494631384378 {'h': 0.7987158445396104, 'Omb': 0.037834000041845464, 'Omcb': 0.31256554581658746, 'ns': 0.9262460515922865, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.24097057500568475, 'As': 4.322979288964827e-09, 'TAGN': 8.2, 'Omcdm': 0.274731545774742}\n", + "0.19171309821253124 {'h': 0.810961935296471, 'Omb': 0.044309710187002846, 'Omcb': 0.2835966433299175, 'ns': 0.9971826426060968, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.14389750255125078, 'As': 1.583839575607536e-09, 'TAGN': 8.2, 'Omcdm': 0.23928693314291466}\n", + "0.18623347088600273 {'h': 0.5799102606640231, 'Omb': 0.05243349827662708, 'Omcb': 0.3912859854052044, 'ns': 0.9804124526182263, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7389840039155418, 'As': 2.5964330818204293e-09, 'TAGN': 8.2, 'Omcdm': 0.3388524871285773}\n", + "0.1776872136164641 {'h': 0.556135838825565, 'Omb': 0.038176922112522604, 'Omcb': 0.36497194444873965, 'ns': 0.9419114319316304, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5960425532343728, 'As': 4.625960461315958e-09, 'TAGN': 8.2, 'Omcdm': 0.32679502233621704}\n", + "0.1882574160625815 {'h': 0.5930562967865735, 'Omb': 0.05890451264975485, 'Omcb': 0.42479023562630214, 'ns': 0.9530769590599053, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8677389537760112, 'As': 2.0183004871743145e-09, 'TAGN': 8.2, 'Omcdm': 0.3658857229765473}\n", + "0.18497607516055303 {'h': 0.6496736173628731, 'Omb': 0.04737714707821041, 'Omcb': 0.3679985785459555, 'ns': 0.942588208637351, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8674906317523249, 'As': 2.243370630433631e-09, 'TAGN': 8.2, 'Omcdm': 0.32062143146774513}\n", + "0.19272930436872027 {'h': 0.5946649451990325, 'Omb': 0.04243518688854075, 'Omcb': 0.3332145633038007, 'ns': 0.9746014280243447, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.10527807985412496, 'As': 3.2774703218763633e-09, 'TAGN': 8.2, 'Omcdm': 0.29077937641525997}\n", + "0.14374213847435935 {'h': 0.8333834215154239, 'Omb': 0.038050157087111486, 'Omcb': 0.342800746830639, 'ns': 0.9051961866465105, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.0991131415798755, 'As': 4.2054441849636246e-09, 'TAGN': 8.2, 'Omcdm': 0.30475058974352753}\n", + "0.15152611089571155 {'h': 0.7144272143790549, 'Omb': 0.03903656625239441, 'Omcb': 0.39483583716802023, 'ns': 0.9514222870190414, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.46279936559351587, 'As': 3.6019870613144487e-09, 'TAGN': 8.2, 'Omcdm': 0.3557992709156258}\n", + "0.14935169254878 {'h': 0.821756731178831, 'Omb': 0.05457762021680307, 'Omcb': 0.424289717971528, 'ns': 0.953272227606574, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2881556141824617, 'As': 2.147274830986831e-09, 'TAGN': 8.2, 'Omcdm': 0.3697120977547249}\n", + "0.12982330297667588 {'h': 0.8130496418518187, 'Omb': 0.05281046013399063, 'Omcb': 0.41298729535101, 'ns': 0.9795114838983086, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2533833538391872, 'As': 4.4156746538119785e-09, 'TAGN': 8.2, 'Omcdm': 0.3601768352170194}\n", + "0.17826951122833756 {'h': 0.7464662800096485, 'Omb': 0.03785147592693204, 'Omcb': 0.35586665499859393, 'ns': 0.9171291304092789, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5724305140338497, 'As': 1.8362026752845854e-09, 'TAGN': 8.2, 'Omcdm': 0.3180151790716619}\n", + "0.17633129233784905 {'h': 0.8055693560026351, 'Omb': 0.050678953265393685, 'Omcb': 0.34387598386163915, 'ns': 0.9799244716512067, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5995934415226123, 'As': 1.5528275224134366e-09, 'TAGN': 8.2, 'Omcdm': 0.29319703059624547}\n", + "0.19572303646901534 {'h': 0.5468414263600442, 'Omb': 0.038592007655033685, 'Omcb': 0.42483925479305407, 'ns': 0.9087709011910768, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4186083007903795, 'As': 2.2742242671943008e-09, 'TAGN': 8.2, 'Omcdm': 0.3862472471380204}\n", + "0.1707682923576591 {'h': 0.6334551033312953, 'Omb': 0.05513694239925778, 'Omcb': 0.4100012256276264, 'ns': 0.9898366547361536, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2705349409101757, 'As': 2.894024153437499e-09, 'TAGN': 8.2, 'Omcdm': 0.35486428322836866}\n", + "0.19641057642653492 {'h': 0.5630446594499998, 'Omb': 0.04443319940612789, 'Omcb': 0.3172716029605387, 'ns': 0.9147783372542192, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.43790403719875326, 'As': 4.316159325298945e-09, 'TAGN': 8.2, 'Omcdm': 0.2728384035544108}\n", + "0.17103340936375666 {'h': 0.72119722610116, 'Omb': 0.05689057126032134, 'Omcb': 0.3335545358158033, 'ns': 0.9936139986838463, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.47936956412454035, 'As': 3.014890187190486e-09, 'TAGN': 8.2, 'Omcdm': 0.276663964555482}\n", + "0.16399114149637717 {'h': 0.8988138631350293, 'Omb': 0.038317652329883316, 'Omcb': 0.3945764594161865, 'ns': 0.9879200024307745, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8368965796609382, 'As': 9.613431634845404e-10, 'TAGN': 8.2, 'Omcdm': 0.3562588070863032}\n", + "0.14564961322724734 {'h': 0.840452439904774, 'Omb': 0.05390035533729196, 'Omcb': 0.4029379810030609, 'ns': 0.9155212992441091, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1930414908689041, 'As': 2.7138828481489586e-09, 'TAGN': 8.2, 'Omcdm': 0.3490376256657689}\n", + "0.14956112257645982 {'h': 0.8136323793365632, 'Omb': 0.0487568192737547, 'Omcb': 0.4447622551845932, 'ns': 0.9636408342107777, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1451302546650497, 'As': 1.8680270222387256e-09, 'TAGN': 8.2, 'Omcdm': 0.39600543591083853}\n", + "0.15518033833834255 {'h': 0.7312068863230169, 'Omb': 0.04404027897544154, 'Omcb': 0.43324516968706056, 'ns': 0.9699775944589066, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9405944096955184, 'As': 2.229477837765396e-09, 'TAGN': 8.2, 'Omcdm': 0.389204890711619}\n", + "0.2026956778761605 {'h': 0.67116128547254, 'Omb': 0.04414113811282494, 'Omcb': 0.29975624726907646, 'ns': 0.9610987547036628, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.41181089658557024, 'As': 2.1557536085927514e-09, 'TAGN': 8.2, 'Omcdm': 0.2556151091562515}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1732376184298221 {'h': 0.7289831732488463, 'Omb': 0.04176778604612633, 'Omcb': 0.33659432106416043, 'ns': 0.9565771900431921, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.64794848220121, 'As': 2.517515687355492e-09, 'TAGN': 8.2, 'Omcdm': 0.2948265350180341}\n", + "0.17229026865290242 {'h': 0.8149728887943816, 'Omb': 0.04448642455472129, 'Omcb': 0.3749730358589276, 'ns': 0.9549144383599679, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6260124809410571, 'As': 1.3501692088808208e-09, 'TAGN': 8.2, 'Omcdm': 0.3304866113042063}\n", + "0.1516317442603191 {'h': 0.7946822753928882, 'Omb': 0.05038217733820275, 'Omcb': 0.3225136442282536, 'ns': 0.9886402886723707, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5036329251830992, 'As': 4.168954945144129e-09, 'TAGN': 8.2, 'Omcdm': 0.27213146689005085}\n", + "0.20648360130000687 {'h': 0.6257802766976805, 'Omb': 0.0589961123229151, 'Omcb': 0.36305113527102895, 'ns': 0.9837382362345068, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.11585672433526839, 'As': 1.5599534928456277e-09, 'TAGN': 8.2, 'Omcdm': 0.3040550229481138}\n", + "0.17520241801995184 {'h': 0.775066019666437, 'Omb': 0.04432884529762299, 'Omcb': 0.3987498235685401, 'ns': 0.9705406365484013, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6408886345861594, 'As': 1.22127002962972e-09, 'TAGN': 8.2, 'Omcdm': 0.3544209782709171}\n", + "0.17412227643154343 {'h': 0.8356278923526854, 'Omb': 0.05167908284085346, 'Omcb': 0.44950568337757457, 'ns': 0.9990321664326273, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4482456132543511, 'As': 6.9273302570401e-10, 'TAGN': 8.2, 'Omcdm': 0.39782660053672114}\n", + "0.18730212079691277 {'h': 0.8021320691178978, 'Omb': 0.037401478509385556, 'Omcb': 0.31591602167776955, 'ns': 0.9433779027322593, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.15067297381324019, 'As': 1.4733195053191614e-09, 'TAGN': 8.2, 'Omcdm': 0.278514543168384}\n", + "0.19580556601408128 {'h': 0.5336461338227528, 'Omb': 0.04979869927552, 'Omcb': 0.3670877338784792, 'ns': 0.9243667454055714, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6375887004784591, 'As': 3.4878547374883196e-09, 'TAGN': 8.2, 'Omcdm': 0.3172890346029592}\n", + "0.18181067351150615 {'h': 0.8051612076158117, 'Omb': 0.05510609766054065, 'Omcb': 0.3849359076873955, 'ns': 0.9058108481721447, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5395274352616787, 'As': 1.1629964505480073e-09, 'TAGN': 8.2, 'Omcdm': 0.32982981002685485}\n", + "0.17295375525607415 {'h': 0.6930290034349176, 'Omb': 0.0603343661986156, 'Omcb': 0.3280256628580808, 'ns': 0.9768627589459379, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5047914829034981, 'As': 3.556194625058616e-09, 'TAGN': 8.2, 'Omcdm': 0.2676912966594652}\n", + "0.15432332298854912 {'h': 0.8401097195334888, 'Omb': 0.05261371821610942, 'Omcb': 0.43452416699037943, 'ns': 0.9340590795591525, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5314110410045777, 'As': 1.5768375841553706e-09, 'TAGN': 8.2, 'Omcdm': 0.38191044877427}\n", + "0.20317281996669811 {'h': 0.8709841834016108, 'Omb': 0.03574469395395718, 'Omcb': 0.27406529588649714, 'ns': 0.9448207328256871, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5984771915577366, 'As': 1.0150912325793207e-09, 'TAGN': 8.2, 'Omcdm': 0.23832060193253995}\n", + "0.17149821169215262 {'h': 0.781213386279557, 'Omb': 0.04334066319802442, 'Omcb': 0.24480355445662755, 'ns': 0.9633769773069263, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.620357709658044, 'As': 4.794860228405666e-09, 'TAGN': 8.2, 'Omcdm': 0.20146289125860312}\n", + "0.15818405289658888 {'h': 0.7929654011975151, 'Omb': 0.03842312213550912, 'Omcb': 0.41178340978789446, 'ns': 0.9440088699527369, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6541024094823568, 'As': 1.7867912076340281e-09, 'TAGN': 8.2, 'Omcdm': 0.3733602876523853}\n", + "0.16709118792350175 {'h': 0.6152912981951622, 'Omb': 0.06453734244294874, 'Omcb': 0.4585003657840626, 'ns': 0.9733753497437916, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3464928613130488, 'As': 2.811600049374857e-09, 'TAGN': 8.2, 'Omcdm': 0.3939630233411139}\n", + "0.16165006515262137 {'h': 0.8109372510116715, 'Omb': 0.036228408808571595, 'Omcb': 0.26100236378141584, 'ns': 0.9489699741816906, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.46497345619365305, 'As': 4.836265936598365e-09, 'TAGN': 8.2, 'Omcdm': 0.22477395497284425}\n", + "0.15146608066867595 {'h': 0.8174728602239891, 'Omb': 0.0473472800658218, 'Omcb': 0.4429306758805899, 'ns': 0.9084819272311833, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8020597869857242, 'As': 1.7965185855368337e-09, 'TAGN': 8.2, 'Omcdm': 0.3955833958147681}\n", + "0.1467739247151797 {'h': 0.8094882731006505, 'Omb': 0.056397745889350946, 'Omcb': 0.39145887162284776, 'ns': 0.9865456548055663, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8008715921066321, 'As': 2.744109724274722e-09, 'TAGN': 8.2, 'Omcdm': 0.33506112573349683}\n", + "0.17863987896935762 {'h': 0.6605422230213551, 'Omb': 0.0358882186738584, 'Omcb': 0.3713456985467378, 'ns': 0.9895634881383697, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2376583633605973, 'As': 2.347376828204859e-09, 'TAGN': 8.2, 'Omcdm': 0.33545747987287944}\n", + "0.1506971163880254 {'h': 0.8413378684576238, 'Omb': 0.045440942702285436, 'Omcb': 0.415997168628668, 'ns': 0.9298943651118906, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3969400677478341, 'As': 1.9466606729750223e-09, 'TAGN': 8.2, 'Omcdm': 0.37055622592638254}\n", + "0.13571413990597192 {'h': 0.7380851361653487, 'Omb': 0.056026430303619756, 'Omcb': 0.45554243775620323, 'ns': 0.9392369092921794, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.49691659613034944, 'As': 4.114042412591355e-09, 'TAGN': 8.2, 'Omcdm': 0.3995160074525835}\n", + "0.1702787660332863 {'h': 0.6681527086021108, 'Omb': 0.045298773871367236, 'Omcb': 0.3722068268617266, 'ns': 0.9959209272844576, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5408566369449512, 'As': 2.82444502411833e-09, 'TAGN': 8.2, 'Omcdm': 0.3269080529903594}\n", + "0.19299881423212817 {'h': 0.5940388467522638, 'Omb': 0.06190990396318986, 'Omcb': 0.3188180789855549, 'ns': 0.9325342730516677, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5295420552850724, 'As': 4.055410476504786e-09, 'TAGN': 8.2, 'Omcdm': 0.25690817502236507}\n", + "0.16481220315958556 {'h': 0.7248682934950289, 'Omb': 0.040555380348607034, 'Omcb': 0.3980733475944749, 'ns': 0.9101894157314545, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.955349428187811, 'As': 2.248496060010111e-09, 'TAGN': 8.2, 'Omcdm': 0.3575179672458678}\n", + "0.21998307519314286 {'h': 0.5006642830699202, 'Omb': 0.047498288992074436, 'Omcb': 0.32632344442769395, 'ns': 0.9112070370998697, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.001233062511908134, 'As': 3.645310848694224e-09, 'TAGN': 8.2, 'Omcdm': 0.27882515543561953}\n", + "0.182087662834988 {'h': 0.6332376644042551, 'Omb': 0.04968506019521625, 'Omcb': 0.3513185313577913, 'ns': 0.9431327020146449, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8412037062149564, 'As': 3.0168321098409554e-09, 'TAGN': 8.2, 'Omcdm': 0.30163347116257505}\n", + "0.21873701488409658 {'h': 0.5969931412113331, 'Omb': 0.044674713229031895, 'Omcb': 0.2967444219120819, 'ns': 0.9479863400551065, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.22825287546342055, 'As': 2.411172945423811e-09, 'TAGN': 8.2, 'Omcdm': 0.25206970868305}\n", + "0.1959824208060148 {'h': 0.7476476345707896, 'Omb': 0.060601083780271, 'Omcb': 0.2615493623626458, 'ns': 0.9162743486104957, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8554915417905857, 'As': 2.9641992460185836e-09, 'TAGN': 8.2, 'Omcdm': 0.2009482785823748}\n", + "0.17137504553686278 {'h': 0.6817829721194631, 'Omb': 0.06256381042708042, 'Omcb': 0.3134165071779119, 'ns': 0.9603424454333321, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.36153607863919934, 'As': 4.8263580550362566e-09, 'TAGN': 8.2, 'Omcdm': 0.2508526967508315}\n", + "0.1811815825509685 {'h': 0.8196854088965964, 'Omb': 0.044551973534853795, 'Omcb': 0.40718384269887636, 'ns': 0.9600733918862643, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4140260937892364, 'As': 8.22859522890889e-10, 'TAGN': 8.2, 'Omcdm': 0.36263186916402257}\n", + "0.13925379915896996 {'h': 0.795432154582953, 'Omb': 0.05624273707050764, 'Omcb': 0.4012794012406814, 'ns': 0.9317153171129979, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5938305480284476, 'As': 3.881409472871225e-09, 'TAGN': 8.2, 'Omcdm': 0.34503666417017376}\n", + "0.17905721692351984 {'h': 0.8344980707370405, 'Omb': 0.05490863139981056, 'Omcb': 0.3138596700403632, 'ns': 0.9018160543914364, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.23128053968685225, 'As': 1.9709870871383704e-09, 'TAGN': 8.2, 'Omcdm': 0.25895103864055263}\n", + "0.17591766615187343 {'h': 0.7443080532941673, 'Omb': 0.04260993519685486, 'Omcb': 0.41738763477761515, 'ns': 0.9553540840089612, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6776207635997941, 'As': 1.244905840355612e-09, 'TAGN': 8.2, 'Omcdm': 0.3747776995807603}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.16897888805528993 {'h': 0.8033688948739017, 'Omb': 0.05200813385958161, 'Omcb': 0.39716206080266836, 'ns': 0.9983417075992937, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5145830518855309, 'As': 1.31293247992834e-09, 'TAGN': 8.2, 'Omcdm': 0.3451539269430868}\n", + "0.17784990449163196 {'h': 0.5848589630093206, 'Omb': 0.06237748232425794, 'Omcb': 0.4341740544358007, 'ns': 0.9469800888174829, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8783657338108016, 'As': 2.7068544805760078e-09, 'TAGN': 8.2, 'Omcdm': 0.37179657211154277}\n", + "0.16070028335940545 {'h': 0.796686564207894, 'Omb': 0.05051058460548288, 'Omcb': 0.32632112361294396, 'ns': 0.9731135976652796, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5699338186415264, 'As': 3.033403156592986e-09, 'TAGN': 8.2, 'Omcdm': 0.2758105390074611}\n", + "0.1390437001105127 {'h': 0.8916898534829119, 'Omb': 0.035694202837458396, 'Omcb': 0.3844142758589888, 'ns': 0.9377144680355681, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8875710884880433, 'As': 2.6198868680845645e-09, 'TAGN': 8.2, 'Omcdm': 0.3487200730215304}\n", + "0.19981393376018874 {'h': 0.7434964515592987, 'Omb': 0.044573974657989984, 'Omcb': 0.32349995228800643, 'ns': 0.9580989373748051, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6017747558677085, 'As': 1.2826553647960354e-09, 'TAGN': 8.2, 'Omcdm': 0.2789259776300165}\n", + "0.19490648192733262 {'h': 0.5180692467957706, 'Omb': 0.04278319519563603, 'Omcb': 0.3364665234449903, 'ns': 0.9481491340326281, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6525192007526632, 'As': 4.553049290954409e-09, 'TAGN': 8.2, 'Omcdm': 0.2936833282493543}\n", + "0.19271181213550748 {'h': 0.6009745162198349, 'Omb': 0.03832076222088849, 'Omcb': 0.3374220735466122, 'ns': 0.9294773949574543, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8767107972646193, 'As': 2.9091998529228057e-09, 'TAGN': 8.2, 'Omcdm': 0.2991013113257237}\n", + "0.19172440180523298 {'h': 0.6619419857706135, 'Omb': 0.04613757911264832, 'Omcb': 0.3053441516946535, 'ns': 0.9760014971744035, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2068135275140317, 'As': 2.960213207755029e-09, 'TAGN': 8.2, 'Omcdm': 0.2592065725820052}\n", + "0.1696523131316382 {'h': 0.8584488329694522, 'Omb': 0.0386196601233106, 'Omcb': 0.42692743147093043, 'ns': 0.9100395645649809, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.846478536067957, 'As': 9.194112541781424e-10, 'TAGN': 8.2, 'Omcdm': 0.38830777134761985}\n", + "0.20191598593830784 {'h': 0.6799437199776505, 'Omb': 0.047407037939299096, 'Omcb': 0.28330545240851657, 'ns': 0.9245258973023209, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8513346494022038, 'As': 2.565755128588292e-09, 'TAGN': 8.2, 'Omcdm': 0.23589841446921747}\n", + "0.19675578870924948 {'h': 0.7123401577151258, 'Omb': 0.045179664372096834, 'Omcb': 0.4200946923432112, 'ns': 0.9248406403865652, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.16125406285192412, 'As': 8.785500461280469e-10, 'TAGN': 8.2, 'Omcdm': 0.3749150279711143}\n", + "0.18627796544721242 {'h': 0.552701933156827, 'Omb': 0.048036892540930715, 'Omcb': 0.35535049525634854, 'ns': 0.9125663852868536, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.48203075958635055, 'As': 4.479398705757772e-09, 'TAGN': 8.2, 'Omcdm': 0.30731360271541786}\n", + "0.19079123935240738 {'h': 0.7217666208159734, 'Omb': 0.0399073063313033, 'Omcb': 0.4305484113123411, 'ns': 0.920771725335154, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.030054578761178785, 'As': 8.956835755059731e-10, 'TAGN': 8.2, 'Omcdm': 0.3906411049810378}\n", + "0.14435794749731545 {'h': 0.8954415594078307, 'Omb': 0.04061716833846025, 'Omcb': 0.3469943866076739, 'ns': 0.9818307868703863, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.46875929701395247, 'As': 2.7579388782750915e-09, 'TAGN': 8.2, 'Omcdm': 0.30637721826921366}\n", + "0.13925716546104316 {'h': 0.817454153544951, 'Omb': 0.057525157542345794, 'Omcb': 0.3820669065399874, 'ns': 0.9211954611080543, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4379896029203726, 'As': 4.195206282927418e-09, 'TAGN': 8.2, 'Omcdm': 0.32454174899764165}\n", + "0.1760980917039795 {'h': 0.7529131252120841, 'Omb': 0.03956980130472727, 'Omcb': 0.26537581274113564, 'ns': 0.9392927391570234, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.31915649460807005, 'As': 4.176595868035049e-09, 'TAGN': 8.2, 'Omcdm': 0.22580601143640838}\n", + "0.17233230231234598 {'h': 0.7639805204517116, 'Omb': 0.04883298290464723, 'Omcb': 0.39406900858142746, 'ns': 0.959969535671599, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9500610946244371, 'As': 1.4850941149563843e-09, 'TAGN': 8.2, 'Omcdm': 0.34523602567678024}\n", + "0.1536797107546093 {'h': 0.7954042850746514, 'Omb': 0.04599006465669609, 'Omcb': 0.43549718458989456, 'ns': 0.9403140204119083, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7197825350215462, 'As': 1.8230095107406042e-09, 'TAGN': 8.2, 'Omcdm': 0.3895071199331985}\n", + "0.2249508467911021 {'h': 0.5791239389036787, 'Omb': 0.0447964052801534, 'Omcb': 0.24874969434869176, 'ns': 0.9778151422544012, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.24668037722614733, 'As': 3.627441403637719e-09, 'TAGN': 8.2, 'Omcdm': 0.20395328906853838}\n", + "0.1373684815870031 {'h': 0.7168316139802877, 'Omb': 0.04107567223772558, 'Omcb': 0.4231410542747761, 'ns': 0.9701391101243433, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6100604828871738, 'As': 4.486342986006341e-09, 'TAGN': 8.2, 'Omcdm': 0.38206538203705054}\n", + "0.16487438781355768 {'h': 0.7178193608165359, 'Omb': 0.04466647021468815, 'Omcb': 0.415463345444134, 'ns': 0.9489824256092463, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3341112669587556, 'As': 2.1437419395708718e-09, 'TAGN': 8.2, 'Omcdm': 0.3707968752294458}\n", + "0.19424532848062703 {'h': 0.50300281312, 'Omb': 0.04003098559033343, 'Omcb': 0.41214496944920864, 'ns': 0.9336129968529374, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8391738662343244, 'As': 3.1367567412660105e-09, 'TAGN': 8.2, 'Omcdm': 0.37211398385887523}\n", + "0.2106383285787986 {'h': 0.5462816669237718, 'Omb': 0.05823007703549154, 'Omcb': 0.2858958910587014, 'ns': 0.9390062590156529, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1925908232309098, 'As': 4.984017050010838e-09, 'TAGN': 8.2, 'Omcdm': 0.22766581402320984}\n", + "0.16767811477157968 {'h': 0.7478674103879446, 'Omb': 0.047684009976403804, 'Omcb': 0.2784767264919291, 'ns': 0.9932900782413253, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.06964063659139463, 'As': 4.783999767447058e-09, 'TAGN': 8.2, 'Omcdm': 0.2307927165155253}\n", + "0.182496649897267 {'h': 0.6693981578718615, 'Omb': 0.04029069140024228, 'Omcb': 0.4067965483850437, 'ns': 0.955218492855933, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6861629156151504, 'As': 1.5839306159774846e-09, 'TAGN': 8.2, 'Omcdm': 0.3665058569848014}\n", + "0.21290178838612317 {'h': 0.5139353401119663, 'Omb': 0.058238716438766894, 'Omcb': 0.34550204837761955, 'ns': 0.9652257606465855, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.16800084857787112, 'As': 3.327341078640462e-09, 'TAGN': 8.2, 'Omcdm': 0.2872633319388527}\n", + "0.20182135262965561 {'h': 0.587675686591453, 'Omb': 0.04603713020665453, 'Omcb': 0.3389730577781204, 'ns': 0.9208379341435016, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1189103480339605, 'As': 2.8213750073750126e-09, 'TAGN': 8.2, 'Omcdm': 0.2929359275714659}\n", + "0.1869146274773945 {'h': 0.6794918028805003, 'Omb': 0.0546061947708093, 'Omcb': 0.2820484463289318, 'ns': 0.9392918176697074, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9755956458283996, 'As': 3.750198047658158e-09, 'TAGN': 8.2, 'Omcdm': 0.22744225155812248}\n", + "0.18386358090302313 {'h': 0.6040738621371966, 'Omb': 0.04958576226866827, 'Omcb': 0.36989745275987146, 'ns': 0.9418656087314802, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.82661148465793, 'As': 2.8633888076688022e-09, 'TAGN': 8.2, 'Omcdm': 0.32031169049120317}\n", + "0.19600545964432292 {'h': 0.5004269860090989, 'Omb': 0.03698237632758185, 'Omcb': 0.3723128528295094, 'ns': 0.9212277138840743, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6462907632285592, 'As': 3.921764419692938e-09, 'TAGN': 8.2, 'Omcdm': 0.33533047650192754}\n", + "0.1804466815869732 {'h': 0.687982376114936, 'Omb': 0.06170791885470857, 'Omcb': 0.29609998924211317, 'ns': 0.9476091756678661, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.05948669218334002, 'As': 4.3103441633060694e-09, 'TAGN': 8.2, 'Omcdm': 0.23439207038740462}\n", + "0.21431193664975068 {'h': 0.5704553196692319, 'Omb': 0.04768202102816187, 'Omcb': 0.28907905295632985, 'ns': 0.9134692024923348, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.32039720359730783, 'As': 3.6245316009274214e-09, 'TAGN': 8.2, 'Omcdm': 0.24139703192816797}\n", + "0.20933488572425596 {'h': 0.6429478494008216, 'Omb': 0.036658112285036834, 'Omcb': 0.30880984958868757, 'ns': 0.926480717732158, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.20539029767240669, 'As': 2.0391776931438586e-09, 'TAGN': 8.2, 'Omcdm': 0.2721517373036507}\n", + "0.1743936776393108 {'h': 0.6994558187505261, 'Omb': 0.06435902431701317, 'Omcb': 0.298427263048717, 'ns': 0.9493672076270646, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.38073236121714504, 'As': 4.675787147691123e-09, 'TAGN': 8.2, 'Omcdm': 0.2340682387317038}\n", + "0.19230746719352365 {'h': 0.6434691166111645, 'Omb': 0.052679934983824284, 'Omcb': 0.42590885625002833, 'ns': 0.9408669377366713, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6331491821447094, 'As': 1.3504826467586517e-09, 'TAGN': 8.2, 'Omcdm': 0.37322892126620405}\n", + "0.1854940086400324 {'h': 0.6565967918122654, 'Omb': 0.06298338858970948, 'Omcb': 0.44833726688750813, 'ns': 0.932926245959777, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5679342304284926, 'As': 1.412591226398415e-09, 'TAGN': 8.2, 'Omcdm': 0.38535387829779866}\n", + "0.15160726567219884 {'h': 0.8307159527694978, 'Omb': 0.04272267087036115, 'Omcb': 0.3938305793650466, 'ns': 0.9927504859625049, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6689476589915796, 'As': 1.978629744150718e-09, 'TAGN': 8.2, 'Omcdm': 0.3511079084946855}\n", + "0.2019448187679621 {'h': 0.7250672055327733, 'Omb': 0.05541256417009766, 'Omcb': 0.2631209640347848, 'ns': 0.9026532437206074, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8521453370691817, 'As': 2.7696823634477654e-09, 'TAGN': 8.2, 'Omcdm': 0.20770839986468714}\n", + "0.19874564936715244 {'h': 0.608136715279731, 'Omb': 0.05195233731892117, 'Omcb': 0.3265644548305318, 'ns': 0.9160588312584919, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4965904788462816, 'As': 2.9776792031389376e-09, 'TAGN': 8.2, 'Omcdm': 0.27461211751161063}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.18450110738755 {'h': 0.6699917542664405, 'Omb': 0.05321634291482216, 'Omcb': 0.4496452021783911, 'ns': 0.9369984367847198, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.11839908317866876, 'As': 1.3079444428557214e-09, 'TAGN': 8.2, 'Omcdm': 0.39642885926356897}\n", + "0.16740774480589116 {'h': 0.6137588538293636, 'Omb': 0.060131505745611234, 'Omcb': 0.4190816174291256, 'ns': 0.9303796618409944, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.023970355527955456, 'As': 3.743727767765493e-09, 'TAGN': 8.2, 'Omcdm': 0.3589501116835144}\n", + "0.16914523838884865 {'h': 0.7760507078313839, 'Omb': 0.04891027144044503, 'Omcb': 0.35300176019389057, 'ns': 0.9163391700149455, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.37673400787487643, 'As': 2.3297039988438476e-09, 'TAGN': 8.2, 'Omcdm': 0.30409148875344555}\n", + "0.15185354279764274 {'h': 0.7606677871739976, 'Omb': 0.03742205840008218, 'Omcb': 0.4323054830218515, 'ns': 0.9871409086741214, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4290261213574127, 'As': 2.1537953664116673e-09, 'TAGN': 8.2, 'Omcdm': 0.39488342462176934}\n", + "0.15962786152866937 {'h': 0.7138403005157101, 'Omb': 0.03607696658022077, 'Omcb': 0.32229223810780844, 'ns': 0.9993542996786847, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.04039922884216318, 'As': 4.546503505809335e-09, 'TAGN': 8.2, 'Omcdm': 0.2862152715275877}\n", + "0.13012194337022331 {'h': 0.8611956613624547, 'Omb': 0.04405294600090793, 'Omcb': 0.3852123467268056, 'ns': 0.9045114745709278, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8374757437877769, 'As': 4.313642072273683e-09, 'TAGN': 8.2, 'Omcdm': 0.3411594007258977}\n", + "0.19638143290265575 {'h': 0.8338830657307743, 'Omb': 0.036794730119518976, 'Omcb': 0.26029560657003925, 'ns': 0.9155757670974579, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9157448578787095, 'As': 1.713437065020149e-09, 'TAGN': 8.2, 'Omcdm': 0.22350087645052027}\n", + "0.16052231118648785 {'h': 0.6780064219415969, 'Omb': 0.046916999044184726, 'Omcb': 0.3604066217540494, 'ns': 0.9063117170703872, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3106541850810828, 'As': 4.652885074869786e-09, 'TAGN': 8.2, 'Omcdm': 0.3134896227098647}\n", + "0.15617906301779427 {'h': 0.8857492779565916, 'Omb': 0.04358141905521186, 'Omcb': 0.28145411738978265, 'ns': 0.9094286053488008, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7078438944014478, 'As': 3.6836049240239474e-09, 'TAGN': 8.2, 'Omcdm': 0.2378726983345708}\n", + "0.14933349935914597 {'h': 0.8595686305282055, 'Omb': 0.051304867852395825, 'Omcb': 0.36044000666860543, 'ns': 0.9971803818646712, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4829383894717839, 'As': 2.534010017305082e-09, 'TAGN': 8.2, 'Omcdm': 0.3091351388162096}\n", + "0.19349943324059293 {'h': 0.5874816904606539, 'Omb': 0.06427208073168982, 'Omcb': 0.30543603933429136, 'ns': 0.9515755676288051, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9771927299143573, 'As': 4.3166509849454786e-09, 'TAGN': 8.2, 'Omcdm': 0.24116395860260154}\n", + "0.1452121319681986 {'h': 0.7503958226796323, 'Omb': 0.0511165665108302, 'Omcb': 0.43360632576995856, 'ns': 0.9201867251609541, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6177889085055832, 'As': 3.159029089087014e-09, 'TAGN': 8.2, 'Omcdm': 0.38248975925912837}\n", + "0.18025913660839554 {'h': 0.808309285466148, 'Omb': 0.04634929467120246, 'Omcb': 0.4354880250360971, 'ns': 0.9540476692170755, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3207341189534516, 'As': 7.616909135112537e-10, 'TAGN': 8.2, 'Omcdm': 0.38913873036489466}\n", + "0.17511767532048717 {'h': 0.6739038987236184, 'Omb': 0.05518560184054681, 'Omcb': 0.3858239788451106, 'ns': 0.9228645602662114, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.16887304161271477, 'As': 2.6355835233866024e-09, 'TAGN': 8.2, 'Omcdm': 0.3306383770045638}\n", + "0.1458865630556062 {'h': 0.75504359209162, 'Omb': 0.041839033166695475, 'Omcb': 0.3604303593966187, 'ns': 0.9050833461948478, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4690050790126722, 'As': 4.790238154273368e-09, 'TAGN': 8.2, 'Omcdm': 0.31859132622992326}\n", + "0.18498083415477196 {'h': 0.842491601518643, 'Omb': 0.05413810232739935, 'Omcb': 0.33977207502917406, 'ns': 0.9631065442871888, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6625295943661998, 'As': 1.1133805729795145e-09, 'TAGN': 8.2, 'Omcdm': 0.2856339727017747}\n", + "0.16875593567356328 {'h': 0.6483649286166677, 'Omb': 0.06381760887519874, 'Omcb': 0.3981884465980122, 'ns': 0.9425081767514132, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5057623147427412, 'As': 3.244090532526263e-09, 'TAGN': 8.2, 'Omcdm': 0.3343708377228135}\n", + "0.19870052251006942 {'h': 0.6165317814233863, 'Omb': 0.04093000946763919, 'Omcb': 0.27181462707206766, 'ns': 0.9529391354026288, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7605460227298669, 'As': 3.817645256323142e-09, 'TAGN': 8.2, 'Omcdm': 0.23088461760442847}\n", + "0.19925744937687628 {'h': 0.543462841304905, 'Omb': 0.06009839123098079, 'Omcb': 0.37053093189186626, 'ns': 0.9225177666105545, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8478368672236546, 'As': 3.1043807610519343e-09, 'TAGN': 8.2, 'Omcdm': 0.31043254066088544}\n", + "0.15842490799565978 {'h': 0.879717409203703, 'Omb': 0.0367383603361439, 'Omcb': 0.27577546629987504, 'ns': 0.9402879608507629, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6813294726896911, 'As': 3.412643295958072e-09, 'TAGN': 8.2, 'Omcdm': 0.23903710596373112}\n", + "0.16272125081154387 {'h': 0.824795280604218, 'Omb': 0.04026386739737264, 'Omcb': 0.2786480996795897, 'ns': 0.9264711710619538, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.14005540468949063, 'As': 4.095012087554979e-09, 'TAGN': 8.2, 'Omcdm': 0.23838423228221706}\n", + "0.16961751713199968 {'h': 0.594102555366258, 'Omb': 0.059434216280928015, 'Omcb': 0.39497593917182194, 'ns': 0.9276207363456567, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2645976053461583, 'As': 4.6077498162696826e-09, 'TAGN': 8.2, 'Omcdm': 0.3355417228908939}\n", + "0.19455018281782333 {'h': 0.6012138999718735, 'Omb': 0.047975467797270986, 'Omcb': 0.33396687777728057, 'ns': 0.9775791086437091, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.37831801422378564, 'As': 2.9567822850704356e-09, 'TAGN': 8.2, 'Omcdm': 0.2859914099800096}\n", + "0.18199687114420027 {'h': 0.5017223102670715, 'Omb': 0.04139224803197007, 'Omcb': 0.40841740624811684, 'ns': 0.9571167362055741, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.038644309826884604, 'As': 4.9322806104902185e-09, 'TAGN': 8.2, 'Omcdm': 0.3670251582161468}\n", + "0.19763078178792848 {'h': 0.8018292552872539, 'Omb': 0.056894457389086, 'Omcb': 0.3060695747900977, 'ns': 0.9097787997445443, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.20056247132155403, 'As': 1.4696076703664479e-09, 'TAGN': 8.2, 'Omcdm': 0.24917511740101173}\n", + "0.1911639215274079 {'h': 0.6157718830032259, 'Omb': 0.04891484331388629, 'Omcb': 0.28598989787438345, 'ns': 0.9796060447625871, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8027206052883656, 'As': 4.041800708860033e-09, 'TAGN': 8.2, 'Omcdm': 0.23707505456049716}\n", + "0.19374408832875423 {'h': 0.601891340046987, 'Omb': 0.04322403181065825, 'Omcb': 0.29643020633499134, 'ns': 0.9135038096056236, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.40204779815706937, 'As': 4.393072518635253e-09, 'TAGN': 8.2, 'Omcdm': 0.2532061745243331}\n", + "0.1305396089850136 {'h': 0.8669582357064569, 'Omb': 0.04132803165466139, 'Omcb': 0.3979090864890062, 'ns': 0.9850997120052164, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.22766114679921412, 'As': 3.5265557870547675e-09, 'TAGN': 8.2, 'Omcdm': 0.3565810548343448}\n", + "0.21888234338583157 {'h': 0.622320091495427, 'Omb': 0.06102270618447751, 'Omcb': 0.27112990391448905, 'ns': 0.9618916381173526, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.12829325851112017, 'As': 2.8769802996634697e-09, 'TAGN': 8.2, 'Omcdm': 0.21010719773001152}\n", + "0.16424442022608476 {'h': 0.733057739725815, 'Omb': 0.05015830766879288, 'Omcb': 0.35073329506486356, 'ns': 0.9395101837547891, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9131537503472078, 'As': 3.0609862996347285e-09, 'TAGN': 8.2, 'Omcdm': 0.3005749873960707}\n", + "0.19934570061441792 {'h': 0.53752312960309, 'Omb': 0.0645988624058969, 'Omcb': 0.35938540993351253, 'ns': 0.9412374914297225, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.28405131052651544, 'As': 3.754127764077284e-09, 'TAGN': 8.2, 'Omcdm': 0.2947865475276156}\n", + "0.16312410154218526 {'h': 0.8919914159560633, 'Omb': 0.046483494883407674, 'Omcb': 0.4040420650111823, 'ns': 0.9883529836423708, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7701931135378551, 'As': 1.0006688067611976e-09, 'TAGN': 8.2, 'Omcdm': 0.3575585701277746}\n", + "0.17900313068406926 {'h': 0.8780593150683091, 'Omb': 0.04689308706094437, 'Omcb': 0.25307165446815083, 'ns': 0.9050880734545015, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.25761261618203646, 'As': 2.809802246413313e-09, 'TAGN': 8.2, 'Omcdm': 0.20617856740720647}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.17351682251384315 {'h': 0.6904535284361641, 'Omb': 0.05094838756086319, 'Omcb': 0.39974733209986135, 'ns': 0.944953224112352, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2015349753923832, 'As': 2.1847875707548966e-09, 'TAGN': 8.2, 'Omcdm': 0.3487989445389982}\n", + "0.1669829173616192 {'h': 0.752364803109062, 'Omb': 0.05823251613707997, 'Omcb': 0.37428055948566863, 'ns': 0.9882175070328948, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5221250929031509, 'As': 2.174891180275821e-09, 'TAGN': 8.2, 'Omcdm': 0.31604804334858866}\n", + "0.18302502356009764 {'h': 0.8060097620712172, 'Omb': 0.037332340007751263, 'Omcb': 0.4086142661388991, 'ns': 0.930766546637903, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6889014524529722, 'As': 8.233649368057058e-10, 'TAGN': 8.2, 'Omcdm': 0.37128192613114785}\n", + "0.16668966059170343 {'h': 0.7275335221537276, 'Omb': 0.043850576261371864, 'Omcb': 0.4258099008080186, 'ns': 0.9289834113849492, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6218620306543405, 'As': 1.7916599677263595e-09, 'TAGN': 8.2, 'Omcdm': 0.3819593245466468}\n", + "0.14316024881183098 {'h': 0.8318999640499647, 'Omb': 0.0421118623095399, 'Omcb': 0.3906931242811563, 'ns': 0.9545798285739464, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4725559833368571, 'As': 2.8799947065294738e-09, 'TAGN': 8.2, 'Omcdm': 0.34858126197161643}\n", + "0.15002048491930575 {'h': 0.7062749754087888, 'Omb': 0.03715551006458703, 'Omcb': 0.38465853752413226, 'ns': 0.9481591589206043, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4935065804363411, 'As': 4.174985664239928e-09, 'TAGN': 8.2, 'Omcdm': 0.3475030274595452}\n", + "0.18560260114512184 {'h': 0.7114166915769812, 'Omb': 0.041115818819886324, 'Omcb': 0.4277025105105874, 'ns': 0.9832837054661512, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4398090424804667, 'As': 1.005013929147953e-09, 'TAGN': 8.2, 'Omcdm': 0.38658669169070103}\n", + "0.20961769570344235 {'h': 0.5508903847567312, 'Omb': 0.04492030990839058, 'Omcb': 0.31163029520406166, 'ns': 0.918871221002892, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.44628233858044153, 'As': 3.5439769065977037e-09, 'TAGN': 8.2, 'Omcdm': 0.2667099852956711}\n", + "0.22349180920538203 {'h': 0.5259787116839775, 'Omb': 0.04325093121890759, 'Omcb': 0.3744255034154757, 'ns': 0.9054934989197669, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.021723455704089623, 'As': 1.9085225790328123e-09, 'TAGN': 8.2, 'Omcdm': 0.3311745721965681}\n", + "0.17560385051790073 {'h': 0.7426265340781719, 'Omb': 0.03966191357771827, 'Omcb': 0.409420336204936, 'ns': 0.9444688028010746, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.07179714236004586, 'As': 1.3861860550875294e-09, 'TAGN': 8.2, 'Omcdm': 0.36975842262721775}\n", + "0.18693470396884448 {'h': 0.5044066669536914, 'Omb': 0.06179157454259758, 'Omcb': 0.4223420245850407, 'ns': 0.9178604175697118, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5494936128000582, 'As': 4.0075061096541316e-09, 'TAGN': 8.2, 'Omcdm': 0.3605504500424431}\n", + "0.19487028850823185 {'h': 0.7639944976948456, 'Omb': 0.04108371357827477, 'Omcb': 0.2710916292279168, 'ns': 0.9724816822246873, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9531483799125258, 'As': 1.9879104326436015e-09, 'TAGN': 8.2, 'Omcdm': 0.23000791564964201}\n", + "0.16966382188008067 {'h': 0.7846823283677551, 'Omb': 0.05931559146979393, 'Omcb': 0.41464527864753714, 'ns': 0.910279769614475, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6034059574876086, 'As': 1.492768452589617e-09, 'TAGN': 8.2, 'Omcdm': 0.3553296871777432}\n", + "0.12651027888854482 {'h': 0.8052077187106992, 'Omb': 0.03536155589047776, 'Omcb': 0.4257473139066593, 'ns': 0.9970201572569843, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.970710161196213, 'As': 4.025985655317113e-09, 'TAGN': 8.2, 'Omcdm': 0.3903857580161816}\n", + "0.16080798333587443 {'h': 0.8399156791220145, 'Omb': 0.03734468419656165, 'Omcb': 0.34740938533608956, 'ns': 0.9613828255809012, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4172536098586862, 'As': 2.0592389704486547e-09, 'TAGN': 8.2, 'Omcdm': 0.3100647011395279}\n", + "0.15876726036465216 {'h': 0.7959080106264602, 'Omb': 0.03960739337258344, 'Omcb': 0.3539757886768053, 'ns': 0.9075017307351543, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.848978422624854, 'As': 2.6838038488514235e-09, 'TAGN': 8.2, 'Omcdm': 0.31436839530422184}\n", + "0.18891523796684484 {'h': 0.6248857091688313, 'Omb': 0.05029491098171148, 'Omcb': 0.3447886464946091, 'ns': 0.9969458583725588, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.36898855330034497, 'As': 2.7045466626031317e-09, 'TAGN': 8.2, 'Omcdm': 0.29449373551289765}\n", + "0.19752000783372237 {'h': 0.68556891444402, 'Omb': 0.041587387766062744, 'Omcb': 0.27654886501266374, 'ns': 0.9942568400314338, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.21524374817914982, 'As': 2.710917805755678e-09, 'TAGN': 8.2, 'Omcdm': 0.234961477246601}\n", + "0.14785974627367116 {'h': 0.8406888731010075, 'Omb': 0.04634601569029044, 'Omcb': 0.4182582423740701, 'ns': 0.9241699597981131, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9266704880812819, 'As': 2.077928579183259e-09, 'TAGN': 8.2, 'Omcdm': 0.37191222668377966}\n", + "0.12506154988487939 {'h': 0.8370927875225889, 'Omb': 0.050602157367844645, 'Omcb': 0.4197420374972391, 'ns': 0.944638949214371, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6507945897177367, 'As': 4.486887348315764e-09, 'TAGN': 8.2, 'Omcdm': 0.36913988012939447}\n", + "0.1896144575402382 {'h': 0.7457544426140743, 'Omb': 0.03596130768134532, 'Omcb': 0.2918885735018514, 'ns': 0.9373718002882352, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.10866697080426846, 'As': 2.2402939346500838e-09, 'TAGN': 8.2, 'Omcdm': 0.25592726582050607}\n", + "0.2074612424467729 {'h': 0.6826189291976209, 'Omb': 0.042448827436558784, 'Omcb': 0.24520429849536887, 'ns': 0.9394071974168468, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.37783764419282395, 'As': 3.230520933745425e-09, 'TAGN': 8.2, 'Omcdm': 0.2027554710588101}\n", + "0.15775552013906236 {'h': 0.7529420203065205, 'Omb': 0.0586266675458965, 'Omcb': 0.3155881852758744, 'ns': 0.992916263227107, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.042346113998704804, 'As': 4.786023378386866e-09, 'TAGN': 8.2, 'Omcdm': 0.2569615177299779}\n", + "0.18788169089591122 {'h': 0.558697293283061, 'Omb': 0.051409633627346546, 'Omcb': 0.3403971858327478, 'ns': 0.9336285830427362, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.016230456342471444, 'As': 4.859789429827184e-09, 'TAGN': 8.2, 'Omcdm': 0.2889875522054013}\n", + "0.1699232389264307 {'h': 0.6295605050877153, 'Omb': 0.06027963865154588, 'Omcb': 0.3507812249564227, 'ns': 0.9479798502755153, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4748768364757039, 'As': 4.753524647630476e-09, 'TAGN': 8.2, 'Omcdm': 0.2905015863048768}\n", + "0.19117029545695774 {'h': 0.8781666289759794, 'Omb': 0.03655164474999174, 'Omcb': 0.2627359071792916, 'ns': 0.9265809413275066, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.0907017660899686, 'As': 1.5960037627090004e-09, 'TAGN': 8.2, 'Omcdm': 0.22618426242929984}\n", + "0.2004128421518272 {'h': 0.6205602546880743, 'Omb': 0.04059449884267592, 'Omcb': 0.43589991212570506, 'ns': 0.903106960006984, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.20018343058485955, 'As': 1.2325589915943728e-09, 'TAGN': 8.2, 'Omcdm': 0.39530541328302915}\n", + "0.18699748349372447 {'h': 0.7699251009623479, 'Omb': 0.040439643762975576, 'Omcb': 0.3764466308445539, 'ns': 0.9263475428189318, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.3488606520463975, 'As': 1.1328902482153403e-09, 'TAGN': 8.2, 'Omcdm': 0.3360069870815783}\n", + "0.18662525033688893 {'h': 0.6445195595410732, 'Omb': 0.04899527789415029, 'Omcb': 0.39234562792687216, 'ns': 0.985262271903945, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2138308212779978, 'As': 1.866038629482725e-09, 'TAGN': 8.2, 'Omcdm': 0.34335035003272185}\n", + "0.15240594819913889 {'h': 0.8227776897416144, 'Omb': 0.03892255440128956, 'Omcb': 0.3883447289387718, 'ns': 0.9936907288130954, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7103591920228293, 'As': 2.020701224998102e-09, 'TAGN': 8.2, 'Omcdm': 0.34942217453748226}\n", + "0.19484989722564072 {'h': 0.6366153048806491, 'Omb': 0.06478423871811335, 'Omcb': 0.40750156069959687, 'ns': 0.9162856551242703, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5332498098317082, 'As': 1.6524839089934555e-09, 'TAGN': 8.2, 'Omcdm': 0.3427173219814835}\n", + "0.1543594692999869 {'h': 0.8059026751730595, 'Omb': 0.05821818315912969, 'Omcb': 0.3211344969662982, 'ns': 0.9844272357582444, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.43434924822529575, 'As': 3.93074238313088e-09, 'TAGN': 8.2, 'Omcdm': 0.2629163138071685}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.15130632281319678 {'h': 0.7624918592420002, 'Omb': 0.03779812715972982, 'Omcb': 0.3918162707915037, 'ns': 0.903417941092826, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7992229216590553, 'As': 2.9454859384203436e-09, 'TAGN': 8.2, 'Omcdm': 0.3540181436317739}\n", + "0.17631979810832377 {'h': 0.6570940048407012, 'Omb': 0.042956403683376984, 'Omcb': 0.3325996211976103, 'ns': 0.9425102631992307, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.27034097052763906, 'As': 3.787753758643176e-09, 'TAGN': 8.2, 'Omcdm': 0.2896432175142333}\n", + "0.19596547094889694 {'h': 0.6311230882775944, 'Omb': 0.04777912894438548, 'Omcb': 0.42652775468763987, 'ns': 0.9502512049335146, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2573723130551461, 'As': 1.3083179222402633e-09, 'TAGN': 8.2, 'Omcdm': 0.3787486257432544}\n", + "0.19007385302173008 {'h': 0.827290941050903, 'Omb': 0.04009935563587357, 'Omcb': 0.3453913737628764, 'ns': 0.9584162149183296, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9295989720071713, 'As': 9.171055437532833e-10, 'TAGN': 8.2, 'Omcdm': 0.3052920181270028}\n", + "0.196720389366975 {'h': 0.7884162218666901, 'Omb': 0.05191587210413942, 'Omcb': 0.2749530827669916, 'ns': 0.9058848537332432, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8159012154630941, 'As': 1.9807334576254918e-09, 'TAGN': 8.2, 'Omcdm': 0.22303721066285218}\n", + "0.1714858186247128 {'h': 0.6293063537460418, 'Omb': 0.040579232596271275, 'Omcb': 0.41952494893921766, 'ns': 0.9587634974653043, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.4426560151602582, 'As': 2.612355883645641e-09, 'TAGN': 8.2, 'Omcdm': 0.3789457163429464}\n", + "0.1562388585804968 {'h': 0.8999061347657376, 'Omb': 0.03812454481408615, 'Omcb': 0.26938280920628116, 'ns': 0.9455352121443488, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.48237600462911445, 'As': 3.728221902271489e-09, 'TAGN': 8.2, 'Omcdm': 0.23125826439219502}\n", + "0.16966273067605353 {'h': 0.5456076765338204, 'Omb': 0.03763278148314652, 'Omcb': 0.4221043091923472, 'ns': 0.9929632187724224, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.31471744746536334, 'As': 4.4306051643514645e-09, 'TAGN': 8.2, 'Omcdm': 0.3844715277092007}\n", + "0.17883966819011254 {'h': 0.6664646720269163, 'Omb': 0.04857350704504274, 'Omcb': 0.3196064844438172, 'ns': 0.9190045215959597, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.25330760070564373, 'As': 3.9568117462793456e-09, 'TAGN': 8.2, 'Omcdm': 0.2710329773987744}\n", + "0.162320579686292 {'h': 0.6515471825391829, 'Omb': 0.05815581622531778, 'Omcb': 0.3649369427697924, 'ns': 0.958751949255584, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5219801141180507, 'As': 4.625648518841641e-09, 'TAGN': 8.2, 'Omcdm': 0.3067811265444746}\n", + "0.17430473566106353 {'h': 0.7248036698851471, 'Omb': 0.03778356362380219, 'Omcb': 0.32945882185610476, 'ns': 0.9126563792123961, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5076769974617779, 'As': 2.8215617847711372e-09, 'TAGN': 8.2, 'Omcdm': 0.29167525823230256}\n", + "0.1528303611981896 {'h': 0.7515792068651108, 'Omb': 0.06108085480635571, 'Omcb': 0.40576712848181307, 'ns': 0.9612439329253182, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8424550014526674, 'As': 2.841451841473879e-09, 'TAGN': 8.2, 'Omcdm': 0.34468627367545734}\n", + "0.14713241357700169 {'h': 0.7224761187191158, 'Omb': 0.036092905870486504, 'Omcb': 0.4099036631258871, 'ns': 0.9216269309797551, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6483976852033612, 'As': 3.6250658090874464e-09, 'TAGN': 8.2, 'Omcdm': 0.3738107572554006}\n", + "0.15977337416184167 {'h': 0.579917972263253, 'Omb': 0.05792631048740351, 'Omcb': 0.43553206213291373, 'ns': 0.9292311543429992, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7081844867591174, 'As': 4.688567593504814e-09, 'TAGN': 8.2, 'Omcdm': 0.37760575164551025}\n", + "0.1888061886639505 {'h': 0.6196500576666089, 'Omb': 0.044228854562723914, 'Omcb': 0.3663332554054889, 'ns': 0.9039523618690231, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.043175225056884536, 'As': 2.675789044300583e-09, 'TAGN': 8.2, 'Omcdm': 0.322104400842765}\n", + "0.18771119312608353 {'h': 0.7086856856743361, 'Omb': 0.04473931001331001, 'Omcb': 0.3319665945431311, 'ns': 0.9431150957141116, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8981200805010945, 'As': 1.982156241711966e-09, 'TAGN': 8.2, 'Omcdm': 0.2872272845298211}\n", + "0.1949865425631634 {'h': 0.6538733890645365, 'Omb': 0.037362298696487516, 'Omcb': 0.43636418216124956, 'ns': 0.918070619576681, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.287473018548423, 'As': 1.1248392917102598e-09, 'TAGN': 8.2, 'Omcdm': 0.39900188346476206}\n", + "0.16090605687468085 {'h': 0.732175318881138, 'Omb': 0.0499399487237947, 'Omcb': 0.36466808248293653, 'ns': 0.9376735278208547, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.13858055144246284, 'As': 3.3553077828916676e-09, 'TAGN': 8.2, 'Omcdm': 0.3147281337591418}\n", + "0.18371064823708372 {'h': 0.7911523567994088, 'Omb': 0.03707414487398344, 'Omcb': 0.27113796249634925, 'ns': 0.9288059968722141, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.06639827904327456, 'As': 2.646764460608622e-09, 'TAGN': 8.2, 'Omcdm': 0.2340638176223658}\n", + "0.1556935293450038 {'h': 0.8322815754983726, 'Omb': 0.03950388670247772, 'Omcb': 0.4373222746024582, 'ns': 0.9051749745603885, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8863348239330235, 'As': 1.501823078731518e-09, 'TAGN': 8.2, 'Omcdm': 0.3978183878999805}\n", + "0.1778500961908831 {'h': 0.5535145702375421, 'Omb': 0.05306358175500282, 'Omcb': 0.42748444215571757, 'ns': 0.9693859334209002, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.2375356720522589, 'As': 3.520760412235955e-09, 'TAGN': 8.2, 'Omcdm': 0.37442086040071476}\n", + "0.2197601225110718 {'h': 0.5189001355425941, 'Omb': 0.03525851771401257, 'Omcb': 0.2653786365814654, 'ns': 0.9762251348303512, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.0448803224762766, 'As': 4.854632247015842e-09, 'TAGN': 8.2, 'Omcdm': 0.23012011886745282}\n", + "0.1855261947454553 {'h': 0.7368531299614667, 'Omb': 0.037155864975228804, 'Omcb': 0.38677005679120735, 'ns': 0.9756075282428238, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.010934721110663737, 'As': 1.143337377787163e-09, 'TAGN': 8.2, 'Omcdm': 0.3496141918159785}\n", + "0.1483694155872497 {'h': 0.8012293094482039, 'Omb': 0.05876812511511208, 'Omcb': 0.3780571449871668, 'ns': 0.9892541494795087, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.24726708307944445, 'As': 3.1970004888434587e-09, 'TAGN': 8.2, 'Omcdm': 0.3192890198720547}\n", + "0.18503598796592136 {'h': 0.631914151820601, 'Omb': 0.0439223587728074, 'Omcb': 0.35509783974795966, 'ns': 0.9931944369229997, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9745904132511058, 'As': 2.403620555539396e-09, 'TAGN': 8.2, 'Omcdm': 0.31117548097515224}\n", + "0.15663959153499663 {'h': 0.7344705181083888, 'Omb': 0.05655051689519465, 'Omcb': 0.42219008739306185, 'ns': 0.9322463318581777, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9569715846307795, 'As': 2.490254113557429e-09, 'TAGN': 8.2, 'Omcdm': 0.3656395704978672}\n", + "0.15536253622490892 {'h': 0.6748512168799203, 'Omb': 0.054930346053027615, 'Omcb': 0.3724347021588025, 'ns': 0.9756120809743074, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1603893240677361, 'As': 4.973216852754137e-09, 'TAGN': 8.2, 'Omcdm': 0.3175043561057749}\n", + "0.16490614115732594 {'h': 0.7629335847073495, 'Omb': 0.05255574053914888, 'Omcb': 0.36915139295226107, 'ns': 0.9720216029002664, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.790243155389435, 'As': 2.1903686134415494e-09, 'TAGN': 8.2, 'Omcdm': 0.31659565241311216}\n", + "0.17604315464380815 {'h': 0.7365450439006839, 'Omb': 0.052803688177699204, 'Omcb': 0.4182918586794487, 'ns': 0.9338591443210814, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8641083538153455, 'As': 1.3970759788044963e-09, 'TAGN': 8.2, 'Omcdm': 0.3654881705017495}\n", + "0.17612571206226146 {'h': 0.5203776356012089, 'Omb': 0.047064142247106616, 'Omcb': 0.4388833549213288, 'ns': 0.9923302690257878, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5221414472090018, 'As': 3.825042684529424e-09, 'TAGN': 8.2, 'Omcdm': 0.39181921267422215}\n", + "0.15479504345558281 {'h': 0.6108792560842159, 'Omb': 0.059874514710372514, 'Omcb': 0.44997376867091377, 'ns': 0.9053325084933341, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9370627248797014, 'As': 4.3583431084038285e-09, 'TAGN': 8.2, 'Omcdm': 0.39009925396054124}\n", + "0.19172528594829785 {'h': 0.6472373083986462, 'Omb': 0.051899487250938875, 'Omcb': 0.28454082419449633, 'ns': 0.962615928584047, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.15099313143506765, 'As': 4.0848427701613125e-09, 'TAGN': 8.2, 'Omcdm': 0.23264133694355746}\n", + "0.1377296936990824 {'h': 0.8832370316642599, 'Omb': 0.03549446601788472, 'Omcb': 0.37359357626144735, 'ns': 0.958560376146558, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.37728183906136314, 'As': 3.0229839664581098e-09, 'TAGN': 8.2, 'Omcdm': 0.33809911024356265}\n", + "0.17989243463124394 {'h': 0.8879727532199235, 'Omb': 0.04625834419080482, 'Omcb': 0.3517673190902414, 'ns': 0.9172927307766932, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.293960470924571, 'As': 1.0438439344399657e-09, 'TAGN': 8.2, 'Omcdm': 0.30550897489943657}\n", + "0.18495692047444035 {'h': 0.6804360643215626, 'Omb': 0.03997978734461082, 'Omcb': 0.3068516326880893, 'ns': 0.9402370883172184, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931303060700324, 'As': 2.9284043077212737e-09, 'TAGN': 8.2, 'Omcdm': 0.26687184534347846}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1796537505059257 {'h': 0.664481270819557, 'Omb': 0.06351994524408458, 'Omcb': 0.4520208690907809, 'ns': 0.9667396888098797, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7534605394363417, 'As': 1.4312503394642095e-09, 'TAGN': 8.2, 'Omcdm': 0.3885009238466963}\n", + "0.20825626337473047 {'h': 0.7456795214174397, 'Omb': 0.039324714467640756, 'Omcb': 0.24564098060624046, 'ns': 0.9232552262443063, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.35122292746129835, 'As': 2.3175136650254613e-09, 'TAGN': 8.2, 'Omcdm': 0.2063162661385997}\n", + "0.2009175337132676 {'h': 0.7284852765407991, 'Omb': 0.06295472872385946, 'Omcb': 0.3086219750502447, 'ns': 0.9422495083918152, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.34260235665027783, 'As': 1.8169538658375807e-09, 'TAGN': 8.2, 'Omcdm': 0.24566724632638523}\n", + "0.21011516236697614 {'h': 0.5329711957828507, 'Omb': 0.042239430139325865, 'Omcb': 0.2999500315315163, 'ns': 0.9496564897147187, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6301519692743847, 'As': 3.861283418566843e-09, 'TAGN': 8.2, 'Omcdm': 0.25771060139219043}\n", + "0.17233700586881706 {'h': 0.6857606505268767, 'Omb': 0.047857787547527494, 'Omcb': 0.3520529140986822, 'ns': 0.9209277347571951, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.19838296328152805, 'As': 3.325874685280018e-09, 'TAGN': 8.2, 'Omcdm': 0.3041951265511547}\n", + "0.13446620043897772 {'h': 0.7658318838109257, 'Omb': 0.058962494832852826, 'Omcb': 0.4048445867527137, 'ns': 0.9846343016989969, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.42016285452463864, 'As': 4.9211756568480864e-09, 'TAGN': 8.2, 'Omcdm': 0.34588209191986086}\n", + "0.18675362514392368 {'h': 0.6811480662848072, 'Omb': 0.05733739278554101, 'Omcb': 0.4201205295274551, 'ns': 0.9926948999732512, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5654659162762375, 'As': 1.2399264770584069e-09, 'TAGN': 8.2, 'Omcdm': 0.3627831367419141}\n", + "0.20853010408408412 {'h': 0.8362784682135043, 'Omb': 0.04177325582198799, 'Omcb': 0.2629617272201803, 'ns': 0.9396552722828847, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.24598101819062024, 'As': 1.2389508950254194e-09, 'TAGN': 8.2, 'Omcdm': 0.2211884713981923}\n", + "0.18912203161848418 {'h': 0.6594579283413661, 'Omb': 0.04841827060724808, 'Omcb': 0.37127464070156374, 'ns': 0.9471880712429489, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5009832110317768, 'As': 1.9097175230882122e-09, 'TAGN': 8.2, 'Omcdm': 0.32285637009431567}\n", + "0.15510645412781288 {'h': 0.7982591964951431, 'Omb': 0.05953505929874242, 'Omcb': 0.3539639495028717, 'ns': 0.9341378494181193, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8536506690045002, 'As': 3.158981785899869e-09, 'TAGN': 8.2, 'Omcdm': 0.29442889020412927}\n", + "0.1503060929826059 {'h': 0.8794585871664768, 'Omb': 0.0503343129028983, 'Omcb': 0.3013592441144251, 'ns': 0.9381307538456435, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9869445812038946, 'As': 3.755852171384457e-09, 'TAGN': 8.2, 'Omcdm': 0.2510249312115268}\n", + "0.16694627063094736 {'h': 0.8278632878140653, 'Omb': 0.03997598089170029, 'Omcb': 0.414946150652733, 'ns': 0.9032149395100562, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8707333733178638, 'As': 1.2367214348268274e-09, 'TAGN': 8.2, 'Omcdm': 0.3749701697610327}\n" + ] + }, { "ename": "IndexError", "evalue": "index 1 is out of bounds for axis 0 with size 1", @@ -925,13 +1189,13 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhspace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3E-2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"z={0}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIndexError\u001b[0m: index 1 is out of bounds for axis 0 with size 1" ] }, { "data": { - "image/png": "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95fevwv1BxdddBGnnHLKmqKP3XffnTe96U1MmDCBRx99lIsuuogFCxYAsPfee3PZZZcxZcqUHo/rhhtu4LjjjmPmzJkAbL311hx11FFMnjyZadOmcfHFF685tu2223LppZey55579nhckuovItptk5ntN+pHzAMkSWrfQMwBwDxAkqSOMA+QJGnw6qk8wKIUDTomn2oE11xzDW9/+9tpbm4G4KyzzuL0009f52Iwd+5c3v72t3PzzTcDsOOOO3Lbbbcxfvz4Hovr7rvv5lWvehVLliwB4PTTT+cb3/gGQ4eunXhryZIlnHTSSVx66aUAbLzxxtx+++29UjAjqb4G4htR5gGSJLVvIOYAYB4gSVJHmAdIkjR4WZQi1UlL8unvvvqrJ554gj322INFixYB8MlPfpJvfOMbbbZdtGgRu+yyC9OnTwfgTW96E7/73e96JK758+ezyy67MGPGDACOPvpoLrnkkjbbrlq1igMPPJA777wTKGZ5ufvuu9cpXpHU2FqS00Z7I8o8QJKk7mnUHADMAyRJ6i7zAEmSBq/u5AFNdY9GktQtn/nMZ9YUpGyyySZ87nOfq9p2zJgxfO1rX1uzf+2113L99df3SFxf+9rX1hSkjBgxgm9/+9tV2w4dOpTvfve7a/bvu+8+zj333B6JS5IkSZIkSZIkSVL/5EwpGnSsiFZ/dt9997HHHnus+f382Mc+xllnnVXznJUrVzJp0iTmzJkDwN57781dd91V17hmzpzJ1ltvzdKlSwE48sgjufzyy9s97+Uvfzn33XcfAJMnT+bJJ59k+PDhdY1NUt9o1LujzAMkSeqeRs0BwDxAkqTuMg+QJGnwcqYUSRogfvnLX67zH6Ojjz663XOGDRvGEUccsWb/7rvv5qGHHqprXJdddtmagpSOxgVwzDHHrNmeMWMGf/7zn+salyRJkiRJkiRJkqT+y6IUSepHrrjiijXbw4cPZ6+99urQeQcccMA6+x2ZxaQzWvfXerxqejouSZIkSZIkSZIkSf2XRSmS1E888cQTTJ06dc3+7rvv3uGlbl7xiless3/99dfXLa7ly5dz0003rdmfMGECW221VYfO3WeffXosLkmSJEmSJEmSJEn9m0UpkhrOIYccQkR063HjjTf29bfxEg888MA6+9tss02Hz23d9sEHH6xLTAAPP/wwq1at6lJc48aNY8KECWv2n376aRYsWFC32CRJkiRJkiRJkiT1X0P7OgBJ6qpx48YxatSodtstWbKEhQsXrtlvampap1Civ2hdSDJ58uQOnzt69GjGjRu3puBj7ty5PP/882y66aZ9GldL+9mzZ6/Z/9e//sX+++/f7bgkSZIkSZIkSZIk9W/OlCKpYX33u9/l+eefr/mYOnUqW2+99TrnnXnmmey6664v6e+kk07q9gws7T3OP//8qt/PtGnT1tnvbEFJ6/at++uq/hqXJEmSJEmSJEmSpP7NohRJA9oHPvAB7rvvvjX7b3/72/nMZz7ThxFVVzmbC9ChWWBqtW/dX1f117gkSZIkSZIkSZIk9W8WpUgasL7zne/wq1/9as3+DjvswAUXXEBE9GFU1bUu1hgxYkSnzh85cmTN/rqqv8YlSZIkSZIkSZIkqX8b2tcBSH2lVmFCZvZiJOqsT37ykxx//PEcdNBBVdv89a9/5ZOf/OSa/TFjxvCb3/yGcePGVT3n/PPPr7m8Tk9bunTpOvvDhw/v1Pmt2y9ZsqTbMUH/jUtSz+uvRXz1YB4gSVJ1AzkHAPMASZJqMQ+QJGnw6qk8wKIUSQ3nzW9+c83jzz77LMcccwyrVq1a89x5553Hzjvv3NOhdUvrZW5WrFjRqfNbt19vvfW6HRP037gkSZIkSZIkSZIk9W8WpWjQsup5YFqxYgVHHXUUs2bNWvPcJz/5Sd75znf2YVQdM3bs2HX2ly9f3qnzly1bts7+mDFjuh0T9N+4JPW8WtfKRr9zyjxAkqTqBnIOAOYBkiTVYh4gSdLg1VN5QFOXz5Skfui0007j9ttvX7P/2te+lq9+9at9GFHHtS7+aL1sTntat2/dX1f117gkSZIkSZIkSZIk9W8WpQxwETEiIk6LiFsjYnZELIqIByPiaxGxWZ3H2jMifh4RUyNiaUTMiIhrI+LIDp6/XkQcERE/iIjbI2JORKyMiAVlzD+NiAPqGbMGlnPPPZef/OQna/a33HJLLrroIoYMGdKHUXXclClT1tmfOXNmp85v3b51f13VX+OSJEmSJEmSJEmS1L9ZlDKARcQWwG3A2cBWwC+AbwOLgU8B90bE6+o01unAHcD7gAeArwK/A14NXB4Rl0TEiBrnvxWYCVwBfAhYAVwA/A9wKbARcDJwa0T8KCIao8pAveauu+7iQx/60Jr9kSNHcvnllzNhwoQO93HSSScRET36OP/886uOv8suu6yz/+yzz3Y49sWLF/Piiy+u2d9ggw2YNGlSh8+vpTtxtdV+55137nZMkiRJkiRJkiRJkvq/oX0dgHpGRIwGrgF2pyhMOSwzF5aHPxcRZwOnAb+JiAMz8/5ujHUCRbFLAsdm5iUVx84C/gYcDSwF3lulm82AMcAq4IjMvKbVGGOBc4F3AqcCzwJf6mrMGlhmz57NUUcdxfLly9c894Mf/IB99tmnD6PqvF133XWd/alTp3b43NZtWxeSdMdOO+3E0KFDWbVqVafjWrBgAXPmzFmzv/nmm7P++uvXLTZJkiRJkiRJkiRJ/ZczpQxcZ1AUpKwCTqwoSGnxceBxikKQc7o6SERsBHy/3L2gsiAFIDMfppiVBeDEiHhDO11+t3VBStnPQuADwLLyqdMiIroatwaO1atX8653vYvp06evee6DH/wg73//+/swqq7Zdttt2Xrrrdfs33///axcubJD5951113r7B922GF1i2vEiBEcfPDBa/Znz569zs+7lrvvvpvM7JG4JEmSJEmSJEmSJPVvFqUMQBExHvhIuXtdZj7Wuk1mrmRtMcoBEXF4F4f7GDCu3P5+lTYXAvPK7TOrtJkN3EuxVE+bMnM+8GC5uzEwsTOBamD67//+b2644YY1+/vvvz9nn312l/o6//zzycwefZx00kk1YzjyyCPXbC9fvpx77rmnQ7H//e9/X2f/qKOO6vT339G4AG677bYOndfTcUmSJEmSJEmSJEnqvyxKGZjeBowut39Xo13ljCTHdnGslvNmZeZdbTXIzBXA9eXufhExpY02l2XmHpl5ezvjNVdsL6vaSoPCpZdeyre+9a01+5tssgmXXXYZw4cPr3rORRddxDve8Y4uF670tOOPP57KSYAuueSSGq0Lq1at4je/+c2a/b322oudd965rnEdffTRjBw5slNxtW636aab8rrXva6ucUmSJEmSJEmSJEnqvyxKGZjeWLH9jxrtHgFalvV5U2cHiYgdgW06MA5AZcHKmzs7VjneGGDXcvfOzFzQlX40MDz44IPrLNEzdOhQLrnkEjbbbLOa5z388MNcddVV/OMf7f3K9o099tiDd77znWv2L7zwQhYvXlzznMsvv5zZs2ev2f/yl7/c7jiZyZVXXslZZ53FHXfc0W77TTbZhNNOO23N/u9+9zueffbZmufcfvvt3HvvvWv2P//5z9csGJIkSZIkSZIkSZI0sFiUMjDtXrH9RLVGmZnAtHJ3YkRs2hPjlKZWbO/WyXFafBMYBawAPtrFPjQALFiwgCOPPJJFixatee6b3/wmr3rVq/owqvr5yle+wujRxWRHzz//PF/84hertl28eDGf+tSn1uy/4Q1v4PDD21+N69hjj+WII47gE5/4BPvvvz/nnHNOu+d8+tOfZtNNi38mli1bxsc//vGqbVevXs1HPvKRNfu77rorJ598crtjSJIkSZIkSZIkSRo4LEoZYCKiCdi+3F2ZmbNrtQdmVGzv2MnhKtvPqNqqC+NExJiI2CYi9o6If4uIW4FTgYeB12bmrZ2MVQNEZnLCCSfw6KOPrnnune98J6eeeirLli1r97Fq1ao+jL5jtttuOy688EKamop/or/+9a/zne98h6KObK158+bxpje9iaeeegqA7bffnl/96lft9v/II4+ss6xOZnLmmWe2e94GG2zAVVddxahRowC4+OKL+cQnPvGSn+nSpUs57rjjuP32YjWuCRMmcNVVVzF06NB2x5AkSZIkSZIkSZI0cPgJ4cAzBhhWbi+q1bCNNht0cqwNq/RTj3HeCZxXsb8A+DLwP5m5omPhaSC64ooruPrqq9d57rLLLuOyyy7ro4h6xtvf/nYuuOACTj31VBYtWsTpp5/O+eefz5vf/GY22mgjHnvsMX7961/z4osvArDnnnty2WWXseGGG7bTc/fsu+++XHXVVRx//PHMmjWLs846iyuvvJIjjzySSZMm8dRTT3HRRRcxc+ZMALbeemsuvfRSttlmm3Z6liRJkiRJkiRJkjTQWJQy8Iyp2F7egfbLKrbH9uBYnR3nBuAIYD1gO+AY4DPAyRHxmcz8eWcCbUtEdPqc1jNVqPctXLiwr0PoNe95z3vYb7/9OOOMM7j66qu59957uffee9dps9lmm/GBD3yAT3/60wwfPrxD/e64444cddRRXH755UDxt/DZz362w3G9/vWv57777uOMM87gkksu4YknnuCb3/zmOm023HBDTjzxRM4880zGjRvX4b4l9Y2uXBMbnXmAJEmDMwcA8wBJksA8oDPMAyRJA01v5wHhxXRgiYjJwLPl7vOZOamd9r8Eji93T8zMX3ZirJ8AHyh3T83Mc2q03RZ4vNydmpnbdnSc8vygmCnl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\n", + "image/png": "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L30pM2bM4I477uCiiy5i3rx5AOy2225cdtllzJo1a8jH9dOf/pSjjz6ahx9+GIAtttiCww47jI022oh77rmHiy++eMW+rbbaiksvvZRddtllyMclqf0iYsA6mTlwpRHEOECSpIH1YgwAxgGSJDXCOECSpNFrqOIAk1I06hh8qhtcffXVvPKVr2T58uUAnH322bztbW9b5WTw2GOP8cpXvpJf//rXAMyePZvf/e53rLXWWkM2rhtuuIHnP//5PPXUUwC87W1v42Mf+xjjxq2ceOupp57ihBNO4NJLLwVgvfXW4/e//31HEmYktVcvXogyDpAkaWC9GAOAcYAkSY0wDpAkafQyKUVqk77g08++Rqq77rqLnXfemQULFgBw2mmn8bGPfaxq3QULFrDddttx3333AfDSl76U7373u0MyrieeeILtttuOOXPmAHDEEUdwySWXVK27dOlS9tlnH/7whz8AxSwvN9xwwyrJK5K6W19w2m0XoowDJElqTbfGAGAcIElSq4wDJEkavVqJA8a0fTSSpJa85z3vWZGQsv766/O+972vZt2pU6dy5plnrihfc801/PCHPxyScZ155pkrElImTpzIJz7xiZp1x40bx6c+9akV5ZtuuomvfvWrQzIuSZIkSZIkSZIkSSOTM6Vo1DEjWiPZTTfdxM4777zi83nqqady9tln1z1myZIlbLjhhjz66KMA7Lbbblx//fVtHdfDDz/MFltswdNPPw3AoYceyre+9a0Bj9tpp5246aabANhoo434+9//zoQJE9o6NknDo1vvjjIOkCSpNd0aA4BxgCRJrTIOkCRp9HKmFEnqEV//+tdX+Y/REUccMeAx48eP55BDDllRvuGGG/jrX//a1nFddtllKxJSGh0XwJFHHrlie86cOfzkJz9p67gkSZIkSZIkSZIkjVwmpUjSCHL55Zev2J4wYQK77rprQ8ftvffeq5QbmcWkGf3b699fLUM9LkmSJEmSJEmSJEkjl0kpkjRC3HXXXdx9990ryjvuuGPDS93sscceq5R/+MMftm1cixYt4le/+tWK8owZM9h8880bOnb33XcfsnFJkiRJkiRJkiRJGtlMSpHUdfbff38ioqXHz3/+8+F+Gau55ZZbVilvueWWDR/bv+6tt97aljEB3HbbbSxdunRQ45o+fTozZsxYUb7//vuZN29e28YmSZIkSZIkSZIkaeQaN9wDkKTBmj59OmusscaA9Z566inmz5+/ojxmzJhVEiVGiv6JJBtttFHDx06ZMoXp06evSPh47LHH+Mc//sEGG2wwrOPqqz937twV5b/85S/stddeLY9LkiRJkiRJkiRJ0sjmTCmSutanPvUp/vGPf9R93H333WyxxRarHHfGGWew/fbbr9beCSec0PIMLAM9zj///Jqv55577lml3GxCSf/6/dsbrJE6LkmSJEmSJEmSJEkjm0kpknraSSedxE033bSi/MpXvpL3vOc9wzii2ipncwEamgWmXv3+7Q3WSB2XJEmSJEmSJEmSpJHNpBRJPeuTn/wk3/jGN1aUt9lmGy644AIiYhhHVVv/ZI2JEyc2dfykSZPqtjdYI3VckiRJkiRJkiRJkka2ccM9AGm41EtMyMwOjkTNOu200zj22GPZd999a9b5xS9+wWmnnbaiPHXqVL797W8zffr0msecf/75dZfXGWpPP/30KuUJEyY0dXz/+k899VTLY4KROy5JQ2+kJvG1g3GAJEm19XIMAMYBkiTVYxwgSdLoNVRxgEkpkrrOwQcfXHf/gw8+yJFHHsnSpUtXPHfeeeex7bbbDvXQWtJ/mZvFixc3dXz/+pMnT255TDByxyVJkiRJkiRJkiRpZDMpRaOWWc+9afHixRx22GE88sgjK5477bTTOPzww4dxVI2ZNm3aKuVFixY1dfwzzzyzSnnq1KktjwlG7rgkDb1658puv3PKOECSpNp6OQYA4wBJkuoxDpAkafQaqjhgzKCPlKQR6JRTTuH3v//9ivILX/hCPvKRjwzjiBrXP/mj/7I5A+lfv397gzVSxyVJkiRJkiRJkiRpZDMppcdFxMSIOCUiro2IuRGxICJujYgzI2LjNve1S0R8JSLujoinI2JORFwTEYc2ePzkiDgkIj4TEb+PiEcjYklEzCvH/KWI2LudY1Zv+epXv8oXv/jFFeXNNtuMiy66iLFjxw7jqBo3a9asVcoPP/xwU8f3r9+/vcEaqeOSJEmSJEmSJEmSNLKZlNLDImJT4HfAOcDmwNeATwALgXcCN0bEi9rU19uA64DXArcAHwG+C7wA+FZEXBIRE+sc/3LgYeBy4I3AYuAC4IPApcC6wInAtRHxuYjojiwDdcz111/PG9/4xhXlSZMm8a1vfYsZM2Y03MYJJ5xARAzp4/zzz6/Z/3bbbbdK+cEHH2x47AsXLuTJJ59cUV577bXZcMMNGz6+nlbGVa3+tttu2/KYJEmSJEmSJEmSJI1844Z7ABoaETEFuBrYkSIx5cDMnF/ufl9EnAOcAnw7IvbJzJtb6Os4imSXBI7KzEsq9p0N/BI4AngaeE2NZjYGpgJLgUMy8+p+fUwDvgocDpwMPAj8z2DHrN4yd+5cDjvsMBYtWrTiuc985jPsvvvuwziq5m2//farlO++++6Gj+1ft38iSSue/exnM27cOJYuXdr0uObNm8ejjz66orzJJpuw5pprtm1skiRJkiRJkiRJkkYuZ0rpXadTJKQsBY6vSEjp83bgbxSJIF8YbCcRsS5wblm8oDIhBSAzb6OYlQXg+Ih4yQBNfqp/QkrZznzgJOCZ8qlTIiIGO271jmXLlvHqV7+a++67b8Vzb3jDG3jd6143jKManK222oottthiRfnmm29myZIlDR17/fXXr1I+8MAD2zauiRMnst9++60oz507d5Xfdz033HADmTkk45IkSZIkSZIkSZI0spmU0oMiYi3gLWXxB5l5Z/86mbmElckoe0fEQYPs7lRgerl9bo06FwKPl9tn1KgzF7iRYqmeqjLzCeDWsrgeMLOZgao3vetd7+KnP/3pivJee+3FOeecM6i2zj//fDJzSB8nnHBC3TEceuihK7YXLVrEn/70p4bG/tvf/naV8mGHHdb06290XAC/+93vGjpuqMclSZIkSZIkSZIkaeQyKaU3vQKYUm5/t069yhlJjhpkX33HPZKZ11erkJmLgR+WxT0jYlaVOpdl5s6Z+fsB+ltesf1MzVoaFS699FI+/vGPryivv/76XHbZZUyYMKHmMRdddBGvetWrBp24MtSOPfZYKicBuuSSS+rULixdupRvf/vbK8q77ror2267bVvHdcQRRzBp0qSmxtW/3gYbbMCLXvSito5LkiRJkiRJkiRJ0shlUkpv+teK7T/WqXc70Lesz0ub7SQiZgNbNtAPQGXCysHN9lX2NxXYviz+ITPnDaYd9YZbb711lSV6xo0bxyWXXMLGG29c97jbbruNK6+8kj/+caCP7PDYeeedOfzww1eUL7zwQhYuXFj3mG9961vMnTt3RflDH/rQgP1kJldccQVnn30211133YD1119/fU455ZQV5e9+97s8+OCDdY/5/e9/z4033rii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xnwS+BfwO2PM1cSn6MkFbgdygNeBD1lroyfqe4ukljEJyxNbbPuntbb6RMcSERERERERERERERERERGRc8dYa891H+QsMcZ4gE8AnyQ+fU46sA94BfiTtXbjSfafAjwMWOA2a+2yk7QfAHwdmAl0B2qB9cCDwP2nMm2PMeZUfyD7WGt3nmJbERERERERERERERERERER+YApKUVERERERERERERERERERERE2pznXHdARERERERERERERERERERERDoeJaWIiIiIiIiIiIiIiIiIiIiISJtTUoqIiIiIiIiIiIiIiIiIiIiItDklpYiIiIiIiIiIiIiIiIiIiIhIm1NSioiIiIiIiIiIiIiIiIiIiIi0OSWliIiIiIiIiIiIiIiIiIiIiEibU1KKiIiIiIiIiIiIiIiIiIiIiLQ5JaWIiIiIiIiIiIiIiIiIiIiISJtTUoqIiIiIiIiIiIiIiIiIiIiItDklpYiIiIiIiIiIiIiIiIiIiIhIm1NSioiIiIiIiIiIiIiIiIiIiIi0OSWldHDGmKAx5mvGmDeMMaXGmFpjzDpjzK+NMd3a+FyjjDH3GGO2G2MajDHFxpiXjDE3t/K4vzLG2Kb/3dVG3RUREREREREREREREREREZGzSEkpHZgxpgewAvgT0At4APgfoA74PvCuMebyNjrXt4BVwKeB94FfAXOAqcAzxpgnjTHBMzjuEOA7bdFHERERERERERERERERERER+eAYa+257oOcBcaYVOANYATxxJQZ1tqahO1/Ar4G1AITrbVrW3GuO4AHAQt8zFr7ZMK2C4AlQD7woLX2k6dxXAMsBqYkrP6ptfauM+2riIiIiIiIiIiIiIiIiIiIfDBUKaXj+iHxhJQo8InEhJQm3wG2AmnAP870JMaYXODupo8PJiakAFhrNxKvygLwCWPMladx+E8RT0h570z7JyIiIiIiIiIiIiIiIiIiIueGklI6IGNMFvCNpo/zrLVbWrax1kZoTkaZYIyZeYan+zaQ0bR893HaPAJUNC3/9FQO2pTs8lvgIPCTM+ybiIiIiIiIiIiIiIiIiIiInCNKSumYrgdSm5bnnKDd7ITlj53huQ7vd8ha++axGlhrw8ArTR/HGWN6n8JxfwvkEa/oUnmGfRMREREREREREREREREREZFzREkpHdNVCctvn6DdJuDwtD5Xn+5JjDGDgL6ncB6AxISVa05y3EnAp4FXrbWPnG6/RERERERERERERERERERE5NxTUkrHNCJhedvxGllrLbCz6WO+MabL2ThPk+0Jy8OP18gY4wf+BkSAL59mf0REREREREREREREREREROQ8oaSUDsYY4wEGNH2MWGtLT7JLccLyoNM8XWL74uO2Or3zfBsYBvzOWrvxNPsjIiIiIiIiIiIiIiIiIiIi5wklpXQ8aYC/abn2FNontsk+zXPlHOc4Z3QeY0wv4L+AHcAvT7MvIiIiIiIiIiIiIiIiIiIich7xnesOSJtLS1gOnUL7xoTl9LN4rlM5z5+BFOCr1tqG0+zLKTPG2LN1bBERkc7GWmvOdR9Oh+IAERGRttHeYgBQHCAiItJWFAeIiIh0XmcSB6hSinxQgdgJz2OMuRG4DnjWWvvSB9IjEREREREREREREREREREROWtUKaXjSZwmJ3gK7ZMTlmvO4rmOex5jTCrwp6bjfeM0+3DGrD13idHGmDbrw5ke61T3O5V2J2pzvG2ns74tr9eZOtf37HT20T079/frdPc7WdszuV/H23Y+3q+27oP+u/jBONyH9up8uHb6eW9/P+8dIQ440+3t6Z6d6/t1OvudrX9jx9t2Pt6vtu5De71n7fHfWHumn3f9vJ+qtj5/R4oDzsf71dZ90L+xD8a5vmd65nZ6FAe0jn7e2+fPe3v4nXIqbfW35QdzLMUBp+dc37PzNdY+1vrz6X6dCSWldDy1QJT4vU09hfaJU/BUnua5Ko5znNM9z0+BHsB3rbV7T7MPIiIiIiIiIiIiIiIiIiIich5SUkoHY611jDFbgMFAwBiTZ60tPcEuXROWN53m6RLbdz1uqxOcxxgzjHh1lF3A88aY3sfYt0vCclaLNrUn+X4iIiIiIiIiIiIiIiIiIiJyDigppWN6j3hSCkBf4JhJGyZeY6d308cya+3+MzjPYX1P0jZx+9qE5THEfw57AVtO4ZzfwD3FzwPAp05hPxEREREREREREREREREREfkAKSmlY3oZ+GjT8kXAquO0GwSkNy2/dLonsdZuNMbsJJ7YMvokzcckLCeeaxFw00n2HQb8vGn5CeDxhG27T9pRERERERERERERERERERER+cApKaVjegGoB1KAa4C/HafdtQnLjx+nzck8DvwnUGiMGWOtfbNlA2NMAJjR9HG1tXb74W3W2t2cJLHEGFOZ8HGjtfa5M+yriIiIiIiIiIiIiIiIiIiIfEA857oD0vastRXAn5o+zjDGDGjZxhjjB77Q9HGVtfaoSinGmJuNMYeMMWuNMQOPc7o/ADVNy189Tpvbgeym5btO4SuIiIiIiIiIiIiIiIiIiIhIO2estee6D3IWGGPSgOXEp75ZAcyw1tYkbP8T8DWgDrjEWvvuMY5RDBQ1fXzUWnv7cc71KeA+wAIfs9Y+mbBtEPA6kA88Yq39+Bl8l2nAq00ff2qtvet0j9HieBZAP/vthzEG0D1rT3TP2hfdr/bnfLhnCX0w56wTZ0BxQPtzPvy8y+nRPWtfdL/an3N9z9prDACKA9qjc/3zLqdH96v90T1rf871PVMcIB+kc/3zLqdH96v90T1rX86H+9WaOEDT93RQ1tpaY8y1xKfyGQ9sMMY8Tnxan5nAWKACuPVYCSlNzHGWW57rfmNMHvAr4HFjzO3AW0B34lVSUoBngTtPtf/GmJnEE2oA+iVsmmiM+W7TcpW19l+nekwRERERERERERERERERERH54KhSSgdnjAkSn6bnNmAgEAR2Ay8Cf7LW7j3Bvh8G/gocAm6x1m48yblGE6++Mo14hZVK4B3g39bap0+z3/cDnzxJs13W2t6nc9ymYysjup05H7L/5PTonrUvul/tz/lwz9rr6CjFAe3P+fDzLqdH96x90f1qf871PWuvMQAoDmiPzvXPu5we3a/2R/es/TnX90xxgHyQzvXPu5we3a/2R/esfTkf7ldr4gAlpUino+Cz/Tkf/kMrp0f3rH3R/Wp/zod71l4fRCkOaH/Oh593OT26Z+2L7lf7c67vWXuNAUBxQHt0rn/e5fTofrU/umftz7m+Z4oD5IN0rn/e5fTofrU/umfty/lwvzR9j8gZOPwP51j0H2AREZET/65s7xQHiIiIHF9HjgFAcYCIiMiJKA4QERHpvM5WHOA5K0cVERERERERERERERERERERkU5N0/dIp6MyfSIiIq3XXkv2Kg4QERFpnfYaA4DiABERkdZSHCAiItJ5tSYOUKUUEREREREREREREREREREREWlzSkoRERERERERERERERERERERkTanpBQRERERERERERERERERERERaXNKShERERERERERERERERERERGRNqekFBERERERERERERERERERERFpc0pKEREREREREREREREREREREZE2p6QUEREREREREREREREREREREWlzSkoRERERERERERERERERERERkTanpBQRERERERERERERERERERERaXNKShERERERERERERERERERERGRNqekFBERERERERERERERERERERFpc75z3QGRc8UYc9xt1toPsCciIiLnpxP9rmzvFAeIiIgcX0eOAUBxgIiIyIkoDhAREem8zlYcoEopIiIiIiIiIiIiIiIiIiIiItLmVClFOi1lPYuIiJzYiX5XtveRU4oDREREjq8jxwCgOEBEROREFAeIiIh0XmcrDlClFBERERERERERERERERERERFpc0pKEREREREREREREREREREREZE2p6QUEREREREREREREREREREREWlzSkoRERERERERERERERERERERkTanpBQRERERERERERERERERERERaXNKShERERERERERERERERERERGRNqekFBERERERERERERERERERERFpc0pKEREREREREREREREREREREZE2p6QUEREREREREREREREREREREWlzSkoRERERERERERERERERERERkTbnO9cdEDlXjDHH3Wat/QB7IiIicn460e/K9k5xgIiIyPF15BgAFAeIiIiciOIAERGRzutsxQGqlCIiIiIiIiIiIiIiIiIiIiIibU6VUqTTUtaziIjIiZ3od2V7HzmlOEBEROT4OnIMAIoDRERETkRxgIiISOd1tuIAVUoRERERERERERERERERERERkTanpBQRERERERERERERERERERERaXNKShERERERERERERERERERERGRNqekFBERERERERERERERERERERFpc0pKEREREREREREREREREREREZE2p6QUEREREREREREREREREREREWlzSkoRERERERERERERERERERERkTanpBQRERERERERERERERERERERaXNKShERERERERERERERERERERGRNqekFBERERERERERERERERERERFpc0pKEREREREREREREREREREREZE25zvXHRA5V4wxx91mrf0AeyIiInJ+OtHvyvZOcYCIiMjxdeQYABQHiIiInIjiABERkc7rbMUBqpQiIiIiIiIiIiIiIiIiIiIiIm1OlVKk01LWs4iIyImd6Hdlex85pThARETk+DpyDACKA0RERE5EcYCIiEjndbbiAFVKEREREREREREREREREREREZE2p6SUDs4YEzTGfM0Y84YxptQYU2uMWWeM+bUxplsbn2uUMeYeY8x2Y0yDMabYGPOSMebmU9w/xRhzkzHmL8aYlcaYMmNMxBhT3dTnfxljJrRln0VEREREREREREREREREROTsMCpV1nEZY3oALwAjgWLgcaAOmAmMBcqAj1lrF7TBub4F/BbwArOBN4EewG1ACvAUcIe1NnSc/a8DHgXSmlYtbTpGOdAbuAYobNr2d+Cr1trYGfbVgsr0iYiItMbhUn3W2nZVu1dxgIiISOu01xgAFAeIiIi0luIAERGRzqs1cYCSUjooY0wq8AYwAlgBzLDW1iRs/xPwNaAWmGitXduKc90BPAhY4kkuTyZsuwBYAuQDD1prP3mcY3wR+BsQBW6y1s5usT0duBf4UNOqH1trf3GG/VXwKSIi0krt9UGU4gAREZHWaa8xACgOEBERaS3FASIiIp1Xa+IATd/Tcf2QeEJKFPhEYkJKk+8AW4lXJvnHmZ7EGJML3N308cHEhBQAa+1G4PtNHz9hjLnyJIf8Y8uElKbj1ACfAxqbVn3NHP7JFxERERERERERERERERERkfOOklI6IGNMFvCNpo/zrLVbWrax1kZoTkaZYIyZeYan+zaQ0bR893HaPAJUNC3/9DhtSoF3iU/zc0zW2kpgXdPHAuLVV0REREREREREREREREREROQ8pKSUjul6ILVpec4J2iVWJPnYGZ7r8H6HrLVvHquBtTYMvNL0cZwxpvcx2jxtrR1prV15kvM5CcuNx20lIiIiIiIiIiIiIiIiIiIi55SSUjqmqxKW3z5Bu03A4Wl9rj7dkxhjBgF9T+E8AIkJK9ec7rmazpcGDGv6uNpaW30mxxEREREREREREREREREREZGzT0kpHdOIhOVtx2tkrbXAzqaP+caYLmfjPE22JywPP83zHPY7IBkIA988w2OIiIiIiIiIiIiIiIiIiIjIB8B3rjsgbcsY4wEGNH2MWGtLT7JLMc1JIoOAA6dxukEtjnOy8xxrv2NqqopSAGQDI4HPAhOAjcDnrLVvnEY/RURERERERERERERERERE5AOmpJSOJw3wNy3XnkL7xDbZp3munOMcpy3O8yHgvoTP1cAvgZ9Za8On1r0TM8ac9j7x4jIiIiIdy5n8TmzvFAeIiIh0zhgAFAeIiIiA4oDToThAREQ6mg86DtD0PR1PWsJy6BTaNyYsp5/Fc53ueRYBNwG3Az8B9gA/AnYbYz57Op0UERERERERERERERERERGRD54qpcgHleJ7Wuex1u4Gdh/+bIz5OfFKKT8A/m2M6W+t/UGrOqTsZhEREeDMfie29xFVigNEREQ6ZwwAigNERERAcYCIiEhn9kHHAaqU0vEkTpMTPIX2yQnLNWfxXK05Dzbuh8CCplX/aYyZdrrHERERERERERERERERERERkQ+GklI6nlog2rScegrtE6fgqTzNc1Uc5zhtfZ5Edycsf60VxxEREREREREREREREREREZGzSEkpHYy11gG2NH0MGGPyTrJL14TlTad5usT2XY/bqvXnSbQ6YXliK44jIiIiIiIiIiIiIiIiIiIiZ5GSUjqm9xKW+x6vkYlP/NS76WOZtXb/2TjPMbavPc3zJCpPWM5txXFERERERERERERERERERETkLFJSSsf0csLyRSdoNwhIb1p+6XRPYq3dCOxs+jj6JM3HJCwfdS5jzApjzM9O4bQZCcvVp9BeREREREREREREREREREREzgElpXRMLwD1TcvXnKDdtQnLj5/huQ7vV2iMGXOsBsaYADCj6eNqa+32YzQbB1x+Cue7OGG5NRVXRERERERERERERERERERE5CxSUkoHZK2tAP7U9HGGMWZAyzbGGD/whaaPq6y1x6pecrMx5pAxZq0xZuBxTvcHoKZp+avHaXM7kN20fNcJun6xMeaC421smm7o2wmrHj3BsUREREREREREREREREREROQcUlLK/2fv36Nlu+r7wPf7E0c6Rg8GAhQeBlshIBEbNGwQjcEPcGILYWHnggMRUiPwDQaPexEE8B3ucDsX6ITGj8jdrSh2sMFg9ZVbDYTuYBANTcdu0sGYVwCBES9ZJli0dYWlWEe8JPjdP/Y6Tfmwq/auXWvv2lX1+YzhobnOmmvOebRqa33Z/tVc6+vVST6R5OQkV1fVGSecvyLJw5LcmeT5U8a4KslZSR6Z5BXbdejuW5O8aDi8rKqeOXm+qs5N8ivD4TXbFb9MuEeSt1bVw048Mey28i+S/PjwR3+U5HdmjAUAAAAAAAAALNGRZS+A/dHdx6rqqdl6lc8PJflUVV2brdf6XJjksUluS/Ks7v7YlGFqSvvEud5YVfdL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\n", "text/plain": [ "
" ] @@ -1004,21 +1268,59 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 21, "id": "18a6ad7c", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.031038070346583346 {'h': 0.8032350960341496, 'Omb': 0.05394993197366195, 'Omcb': 0.4194761663721784, 'ns': 0.9354525968129869, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931211213221977, 'As': 4.673777448553246e-09, 'TAGN': 8.2, 'Omcdm': 0.36552623439851645}\n", + "0.030870145811764838 {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "0.029097104889193703 {'h': 0.7219409877565933, 'Omb': 0.036122376685285396, 'Omcb': 0.28216517486426157, 'ns': 0.9370922283862438, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8082514720643018, 'As': 3.378778698168805e-09, 'TAGN': 8.2, 'Omcdm': 0.24604279817897617}\n", + "0.03106512391230898 {'h': 0.6740388240012152, 'Omb': 0.03634731858176987, 'Omcb': 0.2692688820981735, 'ns': 0.9992375564055838, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7486080194569492, 'As': 3.896254084756198e-09, 'TAGN': 8.2, 'Omcdm': 0.23292156351640364}\n", + "0.029043315998405372 {'h': 0.556135838825565, 'Omb': 0.038176922112522604, 'Omcb': 0.36497194444873965, 'ns': 0.9419114319316304, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.5960425532343728, 'As': 4.625960461315958e-09, 'TAGN': 8.2, 'Omcdm': 0.32679502233621704}\n", + "0.028688574029368974 {'h': 0.5228927760613041, 'Omb': 0.06048226528769219, 'Omcb': 0.3081928294131699, 'ns': 0.9800963853641677, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7721083991043806, 'As': 4.234142152966638e-09, 'TAGN': 8.2, 'Omcdm': 0.2477105641254777}\n", + "0.027421533756331495 {'h': 0.7312068863230169, 'Omb': 0.04404027897544154, 'Omcb': 0.43324516968706056, 'ns': 0.9699775944589066, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9405944096955184, 'As': 2.229477837765396e-09, 'TAGN': 8.2, 'Omcdm': 0.389204890711619}\n", + "0.03394568633337958 {'h': 0.5478690223459577, 'Omb': 0.05302521223835243, 'Omcb': 0.2837477920504794, 'ns': 0.9364919361078252, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9954644725836371, 'As': 4.543590525231708e-09, 'TAGN': 8.2, 'Omcdm': 0.23072257981212696}\n", + "0.026908261331924033 {'h': 0.7248682934950289, 'Omb': 0.040555380348607034, 'Omcb': 0.3980733475944749, 'ns': 0.9101894157314545, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.955349428187811, 'As': 2.248496060010111e-09, 'TAGN': 8.2, 'Omcdm': 0.3575179672458678}\n", + "0.02691514769898773 {'h': 0.6332376644042551, 'Omb': 0.04968506019521625, 'Omcb': 0.3513185313577913, 'ns': 0.9431327020146449, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8412037062149564, 'As': 3.0168321098409554e-09, 'TAGN': 8.2, 'Omcdm': 0.30163347116257505}\n", + "0.026423416693104107 {'h': 0.5848589630093206, 'Omb': 0.06237748232425794, 'Omcb': 0.4341740544358007, 'ns': 0.9469800888174829, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8783657338108016, 'As': 2.7068544805760078e-09, 'TAGN': 8.2, 'Omcdm': 0.37179657211154277}\n", + "0.029074299505529755 {'h': 0.5180692467957706, 'Omb': 0.04278319519563603, 'Omcb': 0.3364665234449903, 'ns': 0.9481491340326281, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6525192007526632, 'As': 4.553049290954409e-09, 'TAGN': 8.2, 'Omcdm': 0.2936833282493543}\n", + "0.028358944406199793 {'h': 0.6009745162198349, 'Omb': 0.03832076222088849, 'Omcb': 0.3374220735466122, 'ns': 0.9294773949574543, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8767107972646193, 'As': 2.9091998529228057e-09, 'TAGN': 8.2, 'Omcdm': 0.2991013113257237}\n", + "0.025816536926220435 {'h': 0.7168316139802877, 'Omb': 0.04107567223772558, 'Omcb': 0.4231410542747761, 'ns': 0.9701391101243433, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6100604828871738, 'As': 4.486342986006341e-09, 'TAGN': 8.2, 'Omcdm': 0.38206538203705054}\n", + "0.029840244447419728 {'h': 0.50300281312, 'Omb': 0.04003098559033343, 'Omcb': 0.41214496944920864, 'ns': 0.9336129968529374, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8391738662343244, 'As': 3.1367567412660105e-09, 'TAGN': 8.2, 'Omcdm': 0.37211398385887523}\n", + "0.02870263128464101 {'h': 0.6794918028805003, 'Omb': 0.0546061947708093, 'Omcb': 0.2820484463289318, 'ns': 0.9392918176697074, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9755956458283996, 'As': 3.750198047658158e-09, 'TAGN': 8.2, 'Omcdm': 0.22744225155812248}\n", + "0.027589730412470148 {'h': 0.6040738621371966, 'Omb': 0.04958576226866827, 'Omcb': 0.36989745275987146, 'ns': 0.9418656087314802, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.82661148465793, 'As': 2.8633888076688022e-09, 'TAGN': 8.2, 'Omcdm': 0.32031169049120317}\n", + "0.027752857564637523 {'h': 0.5004269860090989, 'Omb': 0.03698237632758185, 'Omcb': 0.3723128528295094, 'ns': 0.9212277138840743, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6462907632285592, 'As': 3.921764419692938e-09, 'TAGN': 8.2, 'Omcdm': 0.33533047650192754}\n", + "0.02754061773426808 {'h': 0.8611956613624547, 'Omb': 0.04405294600090793, 'Omcb': 0.3852123467268056, 'ns': 0.9045114745709278, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8374757437877769, 'As': 4.313642072273683e-09, 'TAGN': 8.2, 'Omcdm': 0.3411594007258977}\n", + "0.02882695172111438 {'h': 0.5874816904606539, 'Omb': 0.06427208073168982, 'Omcb': 0.30543603933429136, 'ns': 0.9515755676288051, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9771927299143573, 'As': 4.3166509849454786e-09, 'TAGN': 8.2, 'Omcdm': 0.24116395860260154}\n", + "0.02756482521222625 {'h': 0.6165317814233863, 'Omb': 0.04093000946763919, 'Omcb': 0.27181462707206766, 'ns': 0.9529391354026288, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7605460227298669, 'As': 3.817645256323142e-09, 'TAGN': 8.2, 'Omcdm': 0.23088461760442847}\n", + "0.02987289451812214 {'h': 0.6157718830032259, 'Omb': 0.04891484331388629, 'Omcb': 0.28598989787438345, 'ns': 0.9796060447625871, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8027206052883656, 'As': 4.041800708860033e-09, 'TAGN': 8.2, 'Omcdm': 0.23707505456049716}\n", + "0.02844903861590664 {'h': 0.733057739725815, 'Omb': 0.05015830766879288, 'Omcb': 0.35073329506486356, 'ns': 0.9395101837547891, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9131537503472078, 'As': 3.0609862996347285e-09, 'TAGN': 8.2, 'Omcdm': 0.3005749873960707}\n", + "0.03587728728207695 {'h': 0.8052077187106992, 'Omb': 0.03536155589047776, 'Omcb': 0.4257473139066593, 'ns': 0.9970201572569843, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.970710161196213, 'As': 4.025985655317113e-09, 'TAGN': 8.2, 'Omcdm': 0.3903857580161816}\n", + "0.026224441374454566 {'h': 0.7624918592420002, 'Omb': 0.03779812715972982, 'Omcb': 0.3918162707915037, 'ns': 0.903417941092826, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7992229216590553, 'As': 2.9454859384203436e-09, 'TAGN': 8.2, 'Omcdm': 0.3540181436317739}\n", + "0.027336256116796465 {'h': 0.5234874726600599, 'Omb': 0.05881017872769281, 'Omcb': 0.4407696940312017, 'ns': 0.9429098871469257, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9867119124481999, 'As': 2.4962519216482176e-09, 'TAGN': 8.2, 'Omcdm': 0.3819595153035089}\n", + "0.03098313905720884 {'h': 0.579917972263253, 'Omb': 0.05792631048740351, 'Omcb': 0.43553206213291373, 'ns': 0.9292311543429992, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.7081844867591174, 'As': 4.688567593504814e-09, 'TAGN': 8.2, 'Omcdm': 0.37760575164551025}\n", + "0.0299039336806457 {'h': 0.631914151820601, 'Omb': 0.0439223587728074, 'Omcb': 0.35509783974795966, 'ns': 0.9931944369229997, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9745904132511058, 'As': 2.403620555539396e-09, 'TAGN': 8.2, 'Omcdm': 0.31117548097515224}\n", + "0.026563685840623297 {'h': 0.7344705181083888, 'Omb': 0.05655051689519465, 'Omcb': 0.42219008739306185, 'ns': 0.9322463318581777, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9569715846307795, 'As': 2.490254113557429e-09, 'TAGN': 8.2, 'Omcdm': 0.3656395704978672}\n", + "0.035942349996566536 {'h': 0.6108792560842159, 'Omb': 0.059874514710372514, 'Omcb': 0.44997376867091377, 'ns': 0.9053325084933341, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9370627248797014, 'As': 4.3583431084038285e-09, 'TAGN': 8.2, 'Omcdm': 0.39009925396054124}\n", + "0.02823678113621475 {'h': 0.6804360643215626, 'Omb': 0.03997978734461082, 'Omcb': 0.3068516326880893, 'ns': 0.9402370883172184, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.8931303060700324, 'As': 2.9284043077212737e-09, 'TAGN': 8.2, 'Omcdm': 0.26687184534347846}\n", + "0.029780610350466974 {'h': 0.8794585871664768, 'Omb': 0.0503343129028983, 'Omcb': 0.3013592441144251, 'ns': 0.9381307538456435, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.9869445812038946, 'As': 3.755852171384457e-09, 'TAGN': 8.2, 'Omcdm': 0.2510249312115268}\n" + ] + }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAACXcAAAK9CAYAAABlmM30AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAEAAElEQVR4nOzdd5QUxdrH8e+zeUkiigEDGBBzzhFzzjmj13SN1xyu2WtEvYbra84ZA6goCkYw5wAKEgQVESSnzVvvHz3rdM/OzM7szmzPzP4+58zZrprqqme3B7qmu7rKnHOIiIiIiIiIiIiIiIiIiIiIiIhIbikKOwARERERERERERERERERERERERFpToO7REREREREREREREREREREREREcpAGd4mIiIiIiIiIiIiIiIiIiIiIiOQgDe4SERERERERERERERERERERERHJQRrcJSIiIiIiIiIiIiIiIiIiIiIikoM0uEtERERERERERERERERERERERCQHaXCXiIiIiIiIiIiIiIiIiIiIiIhIDtLgLhERERERERERERERERERERERkRykwV0iIiIiIiIiIiIiIiIiIiIiIiI5SIO7REREREREREREREREREREREREcpAGd4mIiIiIiIiIiIiIiIiIiIiIiOQgDe4SERERERERERERERERERERERHJQRrcJSIiIiIiIiIiIiIiIiIiIiIikoM0uEtEcpaZDTAzl+T1foL9Hmthv6t9Za9OUOZHM7NWxFxuZtPi1dn6v0Q4zGyfVP/mGWyz2Mx2M7P7zOw7M5trZrVmNsPM3jezS81s6TTr3MjMHjazSWZWZWZ/mNkbZnZQivsvZWanmdnLZjY5UsciM/vFzF4wswPNLOXzqZkVmdlxZvaumU03s8VmNt7M/mdm/dL53RLUP7eFz3+9mf1lZuPMbLCZnWdmfVOot0+SOrdoZax3JKhvQGvqE5HcoXN4uHQO/3v/vDiHm1n/Fj736bwGJGmns5ktiJR7t7Xx+upbzcwuNLPhkWO0IHLM/zKzr8zsSTM73czWSlLH+3F+h1/NbMkU2k/2/8X7bf39RKTjynY/Rn2YxNSHSVjfSWY2r6VzfQt1dDKzU8zsrci5ttrMZprZaDN7NtJGr9bULSIiuam1fZok9V0e+d43xMxKshS2iIiIJGDO5d33fBHpIMxsHWDPSPKfwKqR7RuA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2hhvNrD+eDN+zQW+BR5yzr2YZtyPAce3UGyKc65POvVG6tYTOnkmF0ajS3p0zPKLjlf+yYVjlq9P6agfkH9y4fMu6dExyy86Xvkn7GOWr30AUD8gH4X9eZf06HjlHx2z/BP2MVM/QNpT2J93SY+OV/7RMcsvuXC88rkfEM/ffYPe3UOOJDNsylygcI6PNKfBXdLh6Etc/smFDoukR8csv+h45Z9cOGb5+kVO/YD8kwufd0mPjll+0fHKP2Efs3ztA4D6Afko7M+7pEfHK//omOWfsI+Z+gHSnsL+vEt6dLzyj45ZfsmF45XP/YB4/u4brLpk2KFkhE2aAxTO8ZHmNMeciIiIiIiIiIiIiIiIiIiIiIhIDioJOwARERERERERERERERERERERkXZVovmQJD9ocJeI5DxNCZt/dMzyi45X/tExk45En/f8o2OWX3S88o+OmXQk+rznFx2v/KNjln90zKQj0ec9v+h45R8ds/yi4yUA9vOssEOQEGlwl4iIiIiIiIiIiIiIiIiIiIh0LMUWdgQiKdHgLhERERERERERERERERERERGRHOXWWjrhe/bTzHaMRMKgBURFRERERERERERERERERERERERykGbuEhEREREREREREREREREREZGOpVjzIUl+0CdVREREREREREREREREREREREQkB2nmLhERERERERERERERERERERHpWDRzl+QJDe6SDsvMEr7nnGvHSERERHJTsnNlvlM/QEREJLFC7gOA+gEiIiLJqB8gIiLScRV6P0Akn2lwl4iIiIiIiIiIiIiIiIiIiIh0LMUa0Cb5QYO7pMPSUzgiIiLJJTtX5vsTPOoHiIiIJFbIfQBQP0BERCQZ9QNEREQ6rkLvB4jkMw3uEhEREREREREREREREREREZGOpbgo7AhEUqJPqoiIiIiIiIiIiIiIiIiIiIiISA7S4C4REREREREREREREREREREREZEcpGUZRURERERERERERERERERERKRjKbawIxBJiWbuEhERERERERERERERERERERERyUGauUtEREREREREREREREREREREOpZizYck+UGfVBERERERERERERERERERERERkRykmbtEREREREREREREREREREREpGMptrAjEEmJZu4SERERERERERERERERERERERHJQZq5S0RERERERERERERERERE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ERERERERERERERERWWUTx8Pt/9TfAA5eB9f+CK74hk/4qkzNf48DXAxBDFYDnCNbhvwMRHmjloda0Vf46vbmTA0yVTAHsxth6ljAIFMxciWfMMbNR+oTr65gkaEpRQaFkrtk3VIvHBERkYUtdKwc9p68igNERER6W8sxACgOEBERWYjiABERkcEyeQrc6Tn+liRw8/lw2Tlw8edh35Xzp3cABmHsb5mqIz8LcWhUR6FahDjXZUHOvzc/B+EUVHNQHYO5Qvr6Gk3uEhkWSu4SERERERERERERERERERERGWBBACfczd8e/EaYutFX9PrD5+G6n0ISzX9PcwhHR+YgFA9BLW9UxqFaADqreTk/VGOYwMRuP+RjaeKIf7RV45LVXgOR/ii5S0RERERERERERERERERERGSITJwAd32Rv1Wmm4leV34L4sr86R3gDPJlR64McWCUJ6AyBhbOn7hWBAzGDhyFDyMiC1Jyl4iIiIiIiIiIiIiIiIiIiMiQyo/D7Z7qb9U5uOrb8IcvwOVfg6g0f3oHZBLH2EEYOeAreZU2QNKZQeJ88he7j/xnWA1hvNprINIfJXeJiIiIiIiIiIiIiIiIiIiIrAG5Ebj1E/ytVoZrvgcXfQYu/TLE1fnTB85RnIHCtFEehdLGLkleIrKq9JMUERERERERERERERERERERWWOyBTjrMf5WnoKLvwgXfBh2/Gr+tM45inNQmDXKYzC3sctwjSKyKpTcJSIiIiIiIiIiIiIiIiIiIrKGFSbgLs/3t71XwLnvhQs+ArXZ9umccxRnIV8y5jZAeXx11vdoCGK32qsg0pdgtVdARERERERERERERERERERERI6OLbeER/0HvPp6eMQ7YPLU+dMEiWPsgGPy5qO9diLSSZW7RERERERERERERERERERERNaZwga41yvg7n8Ol/wv/OytsPPC9mkytbVb3SqIV3sNRPqjyl0iIiIiIiIiIiIiIiIiIiIi61SYgds9FV56Hjzza3DKH632GolIK1XuEhEREREREREREREREREREVnnnIMzH+lv1/8cfvpWuOLrq71WR44qd8mwUOUuEREREREREREREREREREREWk4+T7wjP+Dl/12tddERFS5S0RERERERERERERERERERETmOeZ2q70GR04Qu9VeBZG+qHKXiIiIiIiIiIiIiIiIiIiIiIjIAFJyl4iIiIiIiIiIiIiIiIiIiIiIyADSsIwiIiIiIiIiIiIiIiIiIiIisq4E8WqvgUh/VLlLRERERERERERERERERERERERkAKlyl4iIiIiIiIiIiIiIiIiIiIisK6rcJcNClbtEREREREREREREREREREREREQGkCp3iYiIiIiIiIiIiIiIiIiIiMi6ospdMiyU3CXrlnOu52tmdhTXREREZDAtdKwcdooDREREelvLMQAoDhAREVmI4gAREZH1a63HASLDTMldIiIiIiIiIiIiIiIiIiIiIrKuBLES2mQ4KLlL1i31whEREVnYQsfKYe/BozhARESkt7UcA4DiABERkYUoDhAREVm/1nocIDLMlNwlIiIiIiIiIiIiIiIiIiIiIjKgzvmK0nvWM219EREREREREREREREREREREVlXgni110CkP0ruEhEREREREREREREREREREREZUI97bNTzta9+Tak/a522sIiIiIiIiIiIiIiIiIiIiIisK6rcJcMiWO0VEBERERERERERERERERERERERkflUuUtERERERERERERERERERERE1hVV7pJhocpdIiIiIiIiIiIiIiIiIiIiIiIiA0iVu0RERERERERERERERERERERkXQlit9qrINIXVe4SEREREREREREREREREREREREZQEruEhERERERERERERERERERERERGUAallFERERERERERERERERERERE1pUgXu01EOmPKneJiIiIiIiIiIiIiIiIiIiIiIgMIFXuEhEREREREREREREREREREZF1RZW7ZFiocpeIiIiIiIiIiIiIiIiIiIiIiMgAUuUuEREREREREREREREREREREVlXVLlLhoUqd4mIiIiIiIiIiIiIiIiIiIiIiAwgVe4SERERERERERERERERERERkXVFlbtkWKhyl4iIiIiIiIiIiIiIiIiIiIiIyABS5S5Zt5xzPV8zs6O4JiIiIoNpoWPlsFMcICIi0ttajgFAcYCIiMhCFAeIiIisX2s9DhAZZkruEhEREREREREREREREREREZF1JYiV0CbDQcldsm6pF46IiMjCFjpWDnsPHsUBIiIiva3lGAAUB4iIiCxEcYCIiMj6tdbjAJFhpuQuEREREREREREREREREREREVlXgni110CkP8Fqr4CIiIiIiIiIiIiIiIiIiIiIiIjM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\n", "text/plain": [ - "
" + "
" ] }, "metadata": { "image/png": { "height": 350, - "width": 1115 + "width": 1211 }, "needs_background": "light" }, @@ -1070,16 +1372,16 @@ " axes[j][2].axhline(0,ls=':',c='k')\n", " axes[0][2].set_title(\"HMcode2016\")\n", " for i in range(4):\n", - " axes[j][i].set_ylim(-5E-3,5E-3)\n", + " axes[j][i].set_ylim(-1E-2, 4E-2)\n", " from matplotlib.cm import ScalarMappable\n", " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", " axes[0][0].text(1E-2,1E-3,\"z={0}\".format(zs[0]), size=20)\n", " #axes[1][0].text(1E-2,3E-2,\"z={0}\".format(zs[1]), size=20)\n", " #axes[2][0].text(1E-2,3E-2,\"z={0}\".format(zs[2]), size=20)\n", "\n", - " #sm = ScalarMappable(cmap=cmap)\n", - " #cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", - " #fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" + " sm = ScalarMappable(cmap=cmap)\n", + " cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n" ] }, { diff --git a/class/source/.input.c.swo b/class/source/.input.c.swo new file mode 100644 index 0000000000000000000000000000000000000000..93f3475d381e8ed56a67f85bc4cb1f582249e6d1 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/class_old/Makefile b/class_old/Makefile new file mode 100644 index 00000000..6bddd5a0 --- /dev/null +++ b/class_old/Makefile @@ -0,0 +1,203 @@ +#Some Makefile for CLASS. +#Julien Lesgourgues, 28.11.2011 + +MDIR := $(shell pwd) +WRKDIR = $(MDIR)/build + +.base: + if ! [ -e $(WRKDIR) ]; then mkdir $(WRKDIR) ; mkdir $(WRKDIR)/lib; fi; + touch build/.base + +vpath %.c source:tools:main:test +vpath %.o build +vpath .base build + +######################################################## +###### LINES TO ADAPT TO YOUR PLATEFORM ################ +######################################################## + +# your C compiler: +CC = gcc +#CC = icc +#CC = pgcc + +# your tool for creating static libraries: +AR = ar rv + +# (OPT) your python interpreter +PYTHON = python + +# your optimization flag +OPTFLAG = -O3 -ffast-math #-march=native +#OPTFLAG = -Ofast -ffast-math #-march=native +#OPTFLAG = -fast + +# your openmp flag (comment for compiling without openmp) +# OMPFLAG = -fopenmp +# OMPFLAG = -mp -mp=nonuma -mp=allcores -g +# OMPFLAG = -openmp + +# all other compilation flags +CCFLAG = -g -fPIC +LDFLAG = -g -fPIC + +# leave blank to compile without HyRec, or put path to HyRec directory +# (with no slash at the end: e.g. hyrec or ../hyrec) +#HYREC = hyrec + +######################################################## +###### IN PRINCIPLE THE REST SHOULD BE LEFT UNCHANGED ## +######################################################## + +# pass current working directory to the code +CCFLAG += -D__CLASSDIR__='"$(MDIR)"' + +# where to find include files *.h +INCLUDES = -I../include + +# automatically add external programs if needed. First, initialize to blank. +EXTERNAL = + +# Try to automatically avoid an error 'error: can't combine user with ...' +# which sometimes happens with brewed Python on OSX: +CFGFILE=$(shell $(PYTHON) -c "import sys; print(sys.prefix+'/lib/'+'python'+'.'.join(['%i' % e for e in sys.version_info[0:2]])+'/distutils/distutils.cfg')") +PYTHONPREFIX=$(shell grep -s "prefix" $(CFGFILE)) +ifeq ($(PYTHONPREFIX),) +PYTHONFLAGS=--user +else +PYTHONFLAGS= +endif + +# eventually update flags for including HyRec +ifneq ($(HYREC),) +vpath %.c $(HYREC) +CCFLAG += -DHYREC +#LDFLAGS += -DHYREC +INCLUDES += -I../hyrec +EXTERNAL += hyrectools.o helium.o hydrogen.o history.o +endif + +%.o: %.c .base + cd $(WRKDIR);$(CC) $(OPTFLAG) $(OMPFLAG) $(CCFLAG) $(INCLUDES) -c ../$< -o $*.o + +TOOLS = growTable.o dei_rkck.o sparse.o evolver_rkck.o evolver_ndf15.o arrays.o parser.o quadrature.o hyperspherical.o common.o + +SOURCE = input.o background.o thermodynamics.o perturbations.o primordial.o nonlinear.o transfer.o spectra.o lensing.o + +INPUT = input.o + +PRECISION = precision.o + +BACKGROUND = background.o + +THERMO = thermodynamics.o + +PERTURBATIONS = perturbations.o + +TRANSFER = transfer.o + +PRIMORDIAL = primordial.o + +SPECTRA = spectra.o + +NONLINEAR = nonlinear.o + +LENSING = lensing.o + +OUTPUT = output.o + +CLASS = class.o + +TEST_LOOPS = test_loops.o + +TEST_LOOPS_OMP = test_loops_omp.o + +TEST_DEGENERACY = test_degeneracy.o + +TEST_TRANSFER = test_transfer.o + +TEST_NONLINEAR = test_nonlinear.o + +TEST_PERTURBATIONS = test_perturbations.o + +TEST_THERMODYNAMICS = test_thermodynamics.o + +TEST_BACKGROUND = test_background.o + +TEST_SIGMA = test_sigma.o + +TEST_HYPERSPHERICAL = test_hyperspherical.o + +TEST_STEPHANE = test_stephane.o + +C_TOOLS = $(addprefix tools/, $(addsuffix .c,$(basename $(TOOLS)))) +C_SOURCE = $(addprefix source/, $(addsuffix .c,$(basename $(SOURCE) $(OUTPUT)))) +C_TEST = $(addprefix test/, $(addsuffix .c,$(basename $(TEST_DEGENERACY) $(TEST_LOOPS) $(TEST_TRANSFER) $(TEST_NONLINEAR) $(TEST_PERTURBATIONS) $(TEST_THERMODYNAMICS)))) +C_MAIN = $(addprefix main/, $(addsuffix .c,$(basename $(CLASS)))) +C_ALL = $(C_MAIN) $(C_TOOLS) $(C_SOURCE) +H_ALL = $(addprefix include/, common.h svnversion.h $(addsuffix .h, $(basename $(notdir $(C_ALL))))) +PRE_ALL = cl_ref.pre clt_permille.pre +INI_ALL = explanatory.ini lcdm.ini +MISC_FILES = Makefile CPU psd_FD_single.dat myselection.dat myevolution.dat README bbn/sBBN.dat external_Pk/* cpp +PYTHON_FILES = python/classy.pyx python/setup.py python/cclassy.pxd python/test_class.py + + + + +all: libclass.a +#all: class + +# libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) +# $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) + +libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) + +class: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o class $(addprefix build/,$(notdir $^)) -lm + +test_sigma: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_SIGMA) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_sigma $(addprefix build/,$(notdir $^)) -lm + +test_loops: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_loops_omp: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS_OMP) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_stephane: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_STEPHANE) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_degeneracy: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_DEGENERACY) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_transfer: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_TRANSFER) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_nonlinear: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_NONLINEAR) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_perturbations: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_PERTURBATIONS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_thermodynamics: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_THERMODYNAMICS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_background: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_BACKGROUND) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_hyperspherical: $(TOOLS) $(TEST_HYPERSPHERICAL) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_hyperspherical $(addprefix build/,$(notdir $^)) -lm + + +tar: $(C_ALL) $(C_TEST) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + tar czvf class.tar.gz $(C_ALL) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + +classy: libclass.a python/classy.pyx python/cclassy.pxd + cd python; export CC=$(CC); $(PYTHON) setup.py install $(PYTHONFLAGS) + +clean: .base + rm -rf $(WRKDIR); + rm -f libclass.a + rm -f $(MDIR)/python/classy.c + rm -rf $(MDIR)/python/build diff --git a/class_old/bbn/sBBN.dat b/class_old/bbn/sBBN.dat new file mode 100644 index 00000000..26ba7b04 --- /dev/null +++ b/class_old/bbn/sBBN.dat @@ -0,0 +1,313 @@ +# standard BBN prediction of the primordial Helium abundance $Y_p$ as +# function of the baryon density $\omega_b h^2$ and number of extra +# radiation degrees of freedom $\Delta N$. Impact of chemical +# potential of electron neutrinos neglected in this version. +# +# Calculated with PArthENoPE v1.00 [arXiv:0705.0290] for a neutron +# lifetime of 885.7 s, using a network of 26 nuclides and 100 +# reactions. For details see arXiv:0712.2826 by J. Hamann, +# J. Lesgourgues and G. Mangano +# +# format: first line must contain (num_ombh2,num_DeltaN), +# other lines must contain (ombh2,DeltaN,YHe) +# blank lines and lines starting with # neglected + +26 11 + + 0.005 -3.0 0.178540 + 0.007 -3.0 0.183043 + 0.009 -3.0 0.186014 + 0.011 -3.0 0.188205 + 0.013 -3.0 0.189936 + 0.015 -3.0 0.191381 + 0.016 -3.0 0.192031 + 0.017 -3.0 0.192615 + 0.018 -3.0 0.193171 + 0.019 -3.0 0.193709 + 0.020 -3.0 0.194185 + 0.021 -3.0 0.194662 + 0.022 -3.0 0.195089 + 0.023 -3.0 0.195527 + 0.024 -3.0 0.195921 + 0.025 -3.0 0.196300 + 0.026 -3.0 0.196655 + 0.027 -3.0 0.197018 + 0.028 -3.0 0.197358 + 0.029 -3.0 0.197664 + 0.030 -3.0 0.197991 + 0.032 -3.0 0.198568 + 0.034 -3.0 0.199121 + 0.036 -3.0 0.199655 + 0.038 -3.0 0.200148 + 0.040 -3.0 0.200603 + + 0.005 -2.0 0.198733 + 0.007 -2.0 0.203575 + 0.009 -2.0 0.206688 + 0.011 -2.0 0.208970 + 0.013 -2.0 0.210757 + 0.015 -2.0 0.212239 + 0.016 -2.0 0.212910 + 0.017 -2.0 0.213515 + 0.018 -2.0 0.214066 + 0.019 -2.0 0.214609 + 0.020 -2.0 0.215112 + 0.021 -2.0 0.215569 + 0.022 -2.0 0.216027 + 0.023 -2.0 0.216451 + 0.024 -2.0 0.216840 + 0.025 -2.0 0.217226 + 0.026 -2.0 0.217595 + 0.027 -2.0 0.217962 + 0.028 -2.0 0.218300 + 0.029 -2.0 0.218626 + 0.030 -2.0 0.218929 + 0.032 -2.0 0.219538 + 0.034 -2.0 0.220096 + 0.036 -2.0 0.220601 + 0.038 -2.0 0.221106 + 0.040 -2.0 0.221611 + + 0.005 -1.0 0.215291 + 0.007 -1.0 0.220412 + 0.009 -1.0 0.223655 + 0.011 -1.0 0.226034 + 0.013 -1.0 0.227863 + 0.015 -1.0 0.229362 + 0.016 -1.0 0.230012 + 0.017 -1.0 0.230626 + 0.018 -1.0 0.231199 + 0.019 -1.0 0.231733 + 0.020 -1.0 0.232237 + 0.021 -1.0 0.232711 + 0.022 -1.0 0.233179 + 0.023 -1.0 0.233586 + 0.024 -1.0 0.234004 + 0.025 -1.0 0.234387 + 0.026 -1.0 0.234757 + 0.027 -1.0 0.235100 + 0.028 -1.0 0.235451 + 0.029 -1.0 0.235780 + 0.030 -1.0 0.236089 + 0.032 -1.0 0.236674 + 0.034 -1.0 0.237229 + 0.036 -1.0 0.237761 + 0.038 -1.0 0.238252 + 0.040 -1.0 0.238702 + + 0.005 0.0 0.229294 + 0.007 0.0 0.234696 + 0.009 0.0 0.238053 + 0.011 0.0 0.240463 + 0.013 0.0 0.242327 + 0.015 0.0 0.243853 + 0.016 0.0 0.244504 + 0.017 0.0 0.245122 + 0.018 0.0 0.245711 + 0.019 0.0 0.246237 + 0.020 0.0 0.246738 + 0.021 0.0 0.247234 + 0.022 0.0 0.247681 + 0.023 0.0 0.248105 + 0.024 0.0 0.248510 + 0.025 0.0 0.248892 + 0.026 0.0 0.249249 + 0.027 0.0 0.249620 + 0.028 0.0 0.249941 + 0.029 0.0 0.250264 + 0.030 0.0 0.250596 + 0.032 0.0 0.251168 + 0.034 0.0 0.251720 + 0.036 0.0 0.252236 + 0.038 0.0 0.252725 + 0.040 0.0 0.253202 + + 0.005 1.0 0.241373 + 0.007 1.0 0.247034 + 0.009 1.0 0.250510 + 0.011 1.0 0.252954 + 0.013 1.0 0.254858 + 0.015 1.0 0.256383 + 0.016 1.0 0.257056 + 0.017 1.0 0.257687 + 0.018 1.0 0.258266 + 0.019 1.0 0.258809 + 0.020 1.0 0.259297 + 0.021 1.0 0.259785 + 0.022 1.0 0.260220 + 0.023 1.0 0.260662 + 0.024 1.0 0.261068 + 0.025 1.0 0.261433 + 0.026 1.0 0.261824 + 0.027 1.0 0.262166 + 0.028 1.0 0.262508 + 0.029 1.0 0.262813 + 0.030 1.0 0.263141 + 0.032 1.0 0.263724 + 0.034 1.0 0.264276 + 0.036 1.0 0.264785 + 0.038 1.0 0.265266 + 0.040 1.0 0.265724 + + 0.005 2.0 0.252003 + 0.007 2.0 0.257924 + 0.009 2.0 0.261466 + 0.011 2.0 0.263970 + 0.013 2.0 0.265884 + 0.015 2.0 0.267451 + 0.016 2.0 0.268125 + 0.017 2.0 0.268745 + 0.018 2.0 0.269324 + 0.019 2.0 0.269865 + 0.020 2.0 0.270371 + 0.021 2.0 0.270850 + 0.022 2.0 0.271290 + 0.023 2.0 0.271701 + 0.024 2.0 0.272104 + 0.025 2.0 0.272489 + 0.026 2.0 0.272865 + 0.027 2.0 0.273201 + 0.028 2.0 0.273550 + 0.029 2.0 0.273870 + 0.030 2.0 0.274168 + 0.032 2.0 0.274749 + 0.034 2.0 0.275312 + 0.036 2.0 0.275813 + 0.038 2.0 0.276297 + 0.040 2.0 0.276730 + + 0.005 3.0 0.261458 + 0.007 3.0 0.267617 + 0.009 3.0 0.271270 + 0.011 3.0 0.273816 + 0.013 3.0 0.275757 + 0.015 3.0 0.277299 + 0.016 3.0 0.277980 + 0.017 3.0 0.278603 + 0.018 3.0 0.279182 + 0.019 3.0 0.279721 + 0.020 3.0 0.280241 + 0.021 3.0 0.280700 + 0.022 3.0 0.281168 + 0.023 3.0 0.281587 + 0.024 3.0 0.281984 + 0.025 3.0 0.282350 + 0.026 3.0 0.282717 + 0.027 3.0 0.283062 + 0.028 3.0 0.283395 + 0.029 3.0 0.283725 + 0.030 3.0 0.284019 + 0.032 3.0 0.284615 + 0.034 3.0 0.285150 + 0.036 3.0 0.285642 + 0.038 3.0 0.286136 + 0.040 3.0 0.286563 + + 0.005 4.0 0.269959 + 0.007 4.0 0.276363 + 0.009 4.0 0.280091 + 0.011 4.0 0.282694 + 0.013 4.0 0.284650 + 0.015 4.0 0.286203 + 0.016 4.0 0.286884 + 0.017 4.0 0.287508 + 0.018 4.0 0.288109 + 0.019 4.0 0.288626 + 0.020 4.0 0.289133 + 0.021 4.0 0.289625 + 0.022 4.0 0.290069 + 0.023 4.0 0.290472 + 0.024 4.0 0.290887 + 0.025 4.0 0.291263 + 0.026 4.0 0.291630 + 0.027 4.0 0.291957 + 0.028 4.0 0.292286 + 0.029 4.0 0.292606 + 0.030 4.0 0.292910 + 0.032 4.0 0.293507 + 0.034 4.0 0.294049 + 0.036 4.0 0.294538 + 0.038 4.0 0.294988 + 0.040 4.0 0.295446 + + 0.005 5.0 0.277687 + 0.007 5.0 0.284287 + 0.009 5.0 0.288140 + 0.011 5.0 0.290752 + 0.013 5.0 0.292749 + 0.015 5.0 0.294309 + 0.016 5.0 0.295010 + 0.017 5.0 0.295633 + 0.018 5.0 0.296195 + 0.019 5.0 0.296753 + 0.020 5.0 0.297238 + 0.021 5.0 0.297709 + 0.022 5.0 0.298155 + 0.023 5.0 0.298575 + 0.024 5.0 0.298971 + 0.025 5.0 0.299366 + 0.026 5.0 0.299724 + 0.027 5.0 0.300081 + 0.028 5.0 0.300381 + 0.029 5.0 0.300697 + 0.030 5.0 0.301001 + 0.032 5.0 0.301571 + 0.034 5.0 0.302118 + 0.036 5.0 0.302617 + 0.038 5.0 0.303076 + 0.040 5.0 0.303521 + + 0.005 6.0 0.284707 + 0.007 6.0 0.291575 + 0.009 6.0 0.295503 + 0.011 6.0 0.298173 + 0.013 6.0 0.300152 + 0.015 6.0 0.301754 + 0.016 6.0 0.302424 + 0.017 6.0 0.303069 + 0.018 6.0 0.303633 + 0.019 6.0 0.304189 + 0.020 6.0 0.304698 + 0.021 6.0 0.305167 + 0.022 6.0 0.305586 + 0.023 6.0 0.306024 + 0.024 6.0 0.306404 + 0.025 6.0 0.306800 + 0.026 6.0 0.307155 + 0.027 6.0 0.307482 + 0.028 6.0 0.307807 + 0.029 6.0 0.308119 + 0.030 6.0 0.308420 + 0.032 6.0 0.308988 + 0.034 6.0 0.309535 + 0.036 6.0 0.310032 + 0.038 6.0 0.310467 + 0.040 6.0 0.310901 + + 0.005 7.0 0.291188 + 0.007 7.0 0.298279 + 0.009 7.0 0.302304 + 0.011 7.0 0.305005 + 0.013 7.0 0.307002 + 0.015 7.0 0.308598 + 0.016 7.0 0.309287 + 0.017 7.0 0.309917 + 0.018 7.0 0.310498 + 0.019 7.0 0.311034 + 0.020 7.0 0.311536 + 0.021 7.0 0.312009 + 0.022 7.0 0.312469 + 0.023 7.0 0.312866 + 0.024 7.0 0.313276 + 0.025 7.0 0.313654 + 0.026 7.0 0.314017 + 0.027 7.0 0.314360 + 0.028 7.0 0.314658 + 0.029 7.0 0.314971 + 0.030 7.0 0.315268 + 0.032 7.0 0.315853 + 0.034 7.0 0.316374 + 0.036 7.0 0.316840 + 0.038 7.0 0.317298 + 0.040 7.0 0.317730 + diff --git a/class_old/build/.base b/class_old/build/.base new file mode 100644 index 00000000..e69de29b diff --git a/class_old/explanatory.ini b/class_old/explanatory.ini new file mode 100644 index 00000000..4ce23a4a --- /dev/null +++ b/class_old/explanatory.ini @@ -0,0 +1,774 @@ +*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* +* CLASS input parameter file * +*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* + +> This example of input file, intended for CLASS beginners, lists all +> possibilities with detailed comments. You can use a more concise version, in +> which only the arguments in which you are interested would appear. Only +> lines containing an equal sign not preceded by a sharp sign "#" are +> considered by the code. Hence, do not write an equal sign within a comment, +> the whole line would be interpreted as relevant input. Input files must have +> an extension ".ini". + +---------------------------- +----> background parameters: +---------------------------- + +1) Hubble parameter : either 'H0' in km/s/Mpc or 'h' or '100*theta_s' where the + latter is the peak scale parameter 100(ds_dec/da_dec) close to 1.042143 + (default: 'h' set to 0.67556) + +#H0 = 67.556 +h =0.67556 +#100*theta_s = 1.042143 + +2) photon density: either 'T_cmb' in K or 'Omega_g' or 'omega_g' (default: + 'T_cmb' set to 2.7255) + +T_cmb = 2.7255 +#Omega_g = +#omega_g = + +3) baryon density: either 'Omega_b' or 'omega_b' (default: 'omega_b' set to + 0.022032) + +#Omega_b = +omega_b = 0.022032 + +4a) ultra-relativistic species / massless neutrino density: either 'N_ur' or + 'Omega_ur' or 'omega_ur' (default: 'N_ur' set to 3.046) (note: instead of + 'N_ur' you can pass equivalently 'N_eff', although this syntax is + deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) + +N_ur = 3.046 +#Omega_ur = +#omega_ur = + +4b) to simulate ultra-relativistic species with non-standard + properties, you can pass 'ceff2_ur' and 'cvis2_ur' (effective squared + sound speed and viscosity parameter, like in the Generalised Dark + Matter formalism of W. Hu) (default: both set to 1/3) + +#ceff2_ur = +#cvis2_ur = + +5) density of cdm (cold dark matter): 'Omega_cdm' or 'omega_cdm' (default: + 'omega_cdm' set to 0.12038) + +#Omega_cdm = +omega_cdm = 0.12038 + +5b) For models with decaying cold dark matter (dcdm) you can choose to pass either: + +5b1) the current fractional density of dcdm+dr (decaying cold dark + matter and its relativistic decay radiation): 'Omega_dcdmdr' or + 'omega_dcdmdr' (default: 'Omega_dcdmdr' set to 0) + +Omega_dcdmdr = 0.0 +#omega_dcdmdr = 0.0 + +5b2) the rescaled initial value for dcdm density (see 1407.2418 for definitions). If you specify 5b1, 5b2 will be found autamtically by a shooting method, and vice versa. (default: 'Omega_dcdmdr' set to 0, hence so is 'Omega_ini_dcdm') + +#Omega_ini_dcdm = +#omega_ini_dcdm = + +5c) decay constant of dcdm in km/s/Mpc, same unit as H0 above. + +Gamma_dcdm = 0.0 + +6) all parameters describing the ncdm sector (i.e. any non-cold dark matter + relics, including massive neutrinos, warm dark matter, etc.): + + -> 'N_ncdm' is the number of distinct species (default: set to 0) + +N_ncdm = 0 + + -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space + distribution (psd) passed analytically inside the code, in the mnodule + background.c, inside the function background_ncdm_distribution()'; 1 means + 'psd passed as a file with at list two columns: first for q, second for + f_0(q)', where q is p/T_ncdm (default: only zeros) + +#use_ncdm_psd_files = 0 + + -> if some of the previous values are equal to one, 'ncdm_psd_filenames' is + the list of names of psd files (as many as number of ones in previous entry) + +ncdm_psd_filenames = psd_FD_single.dat + + -> 'ncdm_psd_parameters' is an optional list of double parameters to describe + the analytic distribution function or to modify a p.s.d. passed as a file. + It is made available in the routine background_ncdm_distribution. + +#ncdm_psd_parameters = Nactive, sin^2_12 ,s23 ,s13 +ncdm_psd_parameters = 0.3 ,0.5, 0.05 + + +The remaining parameters should be entered as a list of N_ncdm numbers +separated by commas: + + -> 'Omega_ncdm' or 'omega_ncdm' or 'm_ncdm' in eV (default: all set to zero); + with only one of these inputs, CLASS computes the correct value of + the mass; if both (Omega_ncdm, m_ncdm) or (omega_ncdm, m_ncdm) are + passed, CLASS will renormalise the psd in order to fulfill both + conditions. + Passing zero in the list of m_ncdm's or Omeg_ncdm's means that for + this component, this coefficient is not imposed, and its value is + inferred from the other one. + +m_ncdm = 0.04, 0.04, 0.04 +Omega_ncdm = + + -> 'T_ncdm' is the ncdm temperature in units of photon temperature + (default: set to 0.71611, which is slightly larger than the + instantaneous decoupling value (4/11)^(1/3); indeed, this default + value is fudged to give a ratio m/omega equal to 93.14 eV for + active neutrinos, as predicted by precise studies of active + neutrino decoupling, see hep-ph/0506164) + +T_ncdm = + + -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature + (default: set to 0) + +ksi_ncdm = + + -> 'deg_ncdm' is the degeneracy parameter multiplying the psd: 1 stands for + 'one family', i.e. one particle + anti-particle (default: set to 1.0) + +deg_ncdm = + +7) curvature: 'Omega_k' (default: 'Omega_k' set to 0) + +Omega_k = 0. + +8a) Dark energy contributions. At least one out of three conditions must be satisfied: + i) 'Omega_Lambda' unspecified. + ii) 'Omega_fld' unspecified. + iii) 'Omega_scf' set to a negative value. [Will be refered to as + unspecified in the following text.] + The code will then use the first unspecified component to satisfy the + closure equation (sum_i Omega_i) equals (1 + Omega_k) + (default: 'Omega_fld' and 'Omega_scf' set to 0 and 'Omega_Lambda' inferred + by code) + +Omega_Lambda = 0.0 +#Omega_fld = 0 +Omega_scf = 0 + +8b) equation of state parameter (p/rho equal to w0+wa(1-a/a0) ) and sound speed + of the fluid (this is the sound speed defined in the frame comoving with + the fluid, i.e. obeying to the most sensible physical definition) + +w0_fld = -0.9 +wa_fld = 0. +cs2_fld = 1 + +8c) Scalar field (scf) initial conditions from attractor solution (assuming + pure exponential potential). (default: yes) + +attractor_ic_scf = yes + +8d) Scalar field (scf) potential parameters and initial conditions. V equals + ((\phi-B)^\alpha + A)exp(-lambda*phi), see + http://arxiv.org/abs/astro-ph/9908085. + +#scf_parameters = [scf_lambda, scf_alpha, scf_A, scf_B, phi, phi_prime] +scf_parameters = 10.0, 0.0, 0.0, 0.0, 100.0, 0.0 + +If 'attractor_ic_scf' is set to 'no', the last two entries are assumed to be +the initial values of phi in units of the reduced planck mass m_Pl and the +conformal time derivative of phi in units of [m_Pl/Mpc]. (Note however that +CLASS determines the initial scale factor dynamically and the results might not +be as expected in some models.) + +8e) Scalar field (scf) tuning parameter: If Omega_scf is negative, the + following index (0,1,2,...) in scf_parameters will be used for tuning: + +scf_tuning_index = 0 + +9) scale factor today 'a_today' (arbitrary and irrelevant for most purposes) + (default: set to 1) + +# a_today = 1. + +-------------------------------- +----> thermodynamics parameters: +-------------------------------- + +1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will + be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') + +YHe = BBN + +2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' + +recombination = RECFAST + +2) parametrization of reionization: 'reio_parametrization' must be one + of 'reio_none' (no reionization), 'reio_camb' (like CAMB: one + tanh() step for hydrogen reionization one for second helium + reionization), 'reio_bins_tanh' (binned history x_e(z) with tanh() + interpolation between input values), 'reio_half_tanh' (like + 'reio_camb' excepted that we match the function xe(z) from + recombination with only half a tanh(z-z_reio)), 'reio_many_tanh' + (arbitrary number of tanh-like steps with specified central values, + a scheme usually more useful than 'reio_bins_tanh')... (default: + set to 'reio_camb') + +reio_parametrization = reio_camb + +3.a.) if 'reio_parametrization' set to 'reio_camb' or 'reio_half_tanh': enter + one of 'z_reio' or 'tau_reio' (default: 'z_reio' set to 11.357 to get tau_reio of 0.0925), plus + 'reionization_exponent', 'reionization_width', + 'helium_fullreio_redshift', 'helium_fullreio_width' + (default: set to 1.5, 0.5, 3.5, 0.5) + +z_reio = 11.357 +#tau_reio = 0.0925 + +reionization_exponent = 1.5 +reionization_width = 0.5 +helium_fullreio_redshift = 3.5 +helium_fullreio_width = 0.5 + +3.b.) if 'reio_parametrization' set to 'reio_bins_tanh': enter number of bins + and list of z_i and xe_i defining the free electron density at the center + of each bin. Also enter a dimensionless paramater regulating the + sharpness of the tanh() steps, independently of the bin width; + recommended sharpness is 0.3, smaller values will make steps too sharp, + larger values will make the step very progressive but with discontinuity + of x_e(z) derivative around z_i values. + (default: set to 0, blank, blank, 0.3) + +binned_reio_num = 3 +binned_reio_z = 8,12,16 +binned_reio_xe = 0.8,0.2,0.1 +binned_reio_step_sharpness = 0.3 + +3.c.) if 'reio_parametrization' set to 'reio_many_tanh': enter number of jumps, + list of jump redhsifts z_i (central value of each tanh()), list of free electron density x_i after each jump, and common width of all jumps. If you want to end up with all hydrogen reionized but neglecting helium reionization, the first value of x_i in the list should be 1. For each x_i you can also pass the flags -1 or -2. They mean: for -1, after hydrogen + first helium recombination (so the code will substitute a value bigger than one based on Y_He); for -2, after hydrogen + second helium recombination (the code will substitite an even bigger value based on Y_He). You can get results close to reio_camb by setting these parameters to the value showed below (and adapting the second many_tanh_z to the usual z_reio). (default: not set) + +many_tanh_num = 2 +many_tanh_z = 3.5,11.3 +many_tanh_xe = -2,-1 +many_tanh_width = 0.5 + +4.a) in order to model energy injection from DM annihilation, specify a + parameter 'annihilation' corresponding to the energy fraction absorbed by + the gas times the DM cross section divided by the DM mass, (f / + m_cdm), see e.g. 0905.0003, expressed here in units of m^3/s/Kg + (default: set to zero) + +annihilation = 0. + +4.b) you can model simple variations of the above quanity as a function of + redhsift. If 'annihilation_variation' is non-zero, the function F(z) + defined as (f / m_cdm)(z) will be a parabola in log-log scale + between 'annihilation_zmin' and 'annihilation_zmax', with a curvature + given by 'annihilation_variation' (must be negative), and with a maximum + in 'annihilation_zmax'; it will be constant outside this range. To take DM + halos into account, specify the parameters 'annihilation_f_halo', the + amplitude of the halo contribution, and 'annihilation_z_halo', the + characteristic redshift of halos + (default: no variation, 'annihilation_variation' and 'annihilation_f_halo' + set to zero). + +annihilation_variation = 0. +annihilation_z = 1000 +annihilation_zmax = 2500 +annihilation_zmin = 30 +annihilation_f_halo= 20 +annihilation_z_halo= 8 + +4.c) You can also state whether you want to use the on-the-spot approximation + (default: 'on the spot' is 'yes') + +on the spot = yes + +5) to model DM decay, specify a parameter 'decay' which is equal to the energy + fraction absorbed by the gas divided by the lifetime of the particle, see + e.g. 1109.6322, expressed here in 1/s + (default: set to zero) + +decay = 0. + +6) State whether you want the code to compute the simplest analytic approximation to the photon damping scale (it will be added to the thermodynamics output, and its value at recombination will be stored and displayed in the standard output) (default: 'compute damping scale' set to 'no') + +# compute damping scale = yes + +---------------------------------------------------- +----> define which perturbations should be computed: +---------------------------------------------------- + +1.a) list of output spectra requested: +- 'tCl' for temperature Cls, +- 'pCl' for polarization Cls, +- 'lCl' for CMB lensing potential Cls, +- 'nCl' (or 'dCl') for density number count Cls, +- 'sCl' for galaxy lensing potential Cls, +- 'mPk' for total matter power spectrum P(k) infered from gravitational potential, +- 'dTk' (or 'mTk') for density transfer functions for each species, +- 'vTk' for velocity transfer function for each species. +By defaut, the code will try to compute the following cross-correlation Cls (if +available): temperature-polarisation, temperature-CMB lensing, polarization-CMB +lensing, and density-lensing. Other cross-correlations are not computed because +they would slow down the code considerably. + +Can be left blank if you do not want to evolve cosmological perturbations at +all. (default: set to blanck, no perturbation calculation) + +#output = tCl,pCl,lCl +#output = tCl,pCl,lCl,mPk +output = mPk + +1.b) if you included 'tCl' in the list, you can take into account only some of + the terms contributing to the temperature spectrum: intrinsic temperature + corrected by Sachs-Wolfe ('tsw' or 'TSW'), early integrated Sachs-Wolfe + ('eisw' or 'EISW'), late integrated Sachs-Wolfe ('lisw' or 'LISW'), + Doppler ('dop' or 'Dop'), polarisation contribution ('pol' or 'Pol'). Put + below the list of terms to be included + (defaut: if this field is not passed, all terms will be included) + +#temperature contributions = tsw, eisw, lisw, dop, pol + +1.c) if one of 'eisw' or 'lisw' is turned off, the code will read 'early/late + isw redshift', the split value of redshift z at which the isw is + considered as late or early (if this field is absent or left blank, by + default, 'early/late isw redshift' is set to 50) + +#early/late isw redshift = + +1.d) if you included 'nCl' (or 'dCl') in the list, you can take into account + only some of the terms contributing to the obsevable number count + fluctuation spectrum: matter density ('density'), redshift-space and + Doppler distortions ('rsd'), lensing ('lensing'), or gravitational + potential terms ('gr'). Put below the list of terms to be included + (defaut: if this field is not passed, only 'dens' will be included) + +#number count contributions = density, rsd, lensing, gr + +2) if you want an estimate of the non-linear P(k) and Cls, enter 'halofit' or + 'Halofit' or 'HALOFIT' for Halofit; otherwise leave blank + (default: blank, linear P(k) and Cls) + +non linear = Halofit + +3) if you want to consider perturbed recombination, enter a word containing the + letter 'y' or 'Y'. CLASS will then compute the perturbation in the + ionization fraction x_e and the baryon temperature. The initial conformal + time will be small, therefore you should use the default integrator ndf15 + (i.e. do not set 'evolver' to 0, otherwise the code will be slower). + (default: neglect perturbed recombination) + +#perturbed recombination = yes + +4) list of modes ('s' for scalars, 'v' for vectors, 't' for tensors). More than + one letter allowed, can be attached or separated by arbitrary characters; + letters can be small or capital. + (default: set to 's') + +modes = s +#modes = s,t + +5) relevant only if you ask for 'tCl, lCl' and/or 'pCl, lCl': if you want the + spectrum of lensed Cls, enter a word containing the letter 'y' or 'Y' + (default: no lensed Cls) + +lensing = no + +6) which perturbations should be included in tensor calculations? write 'exact' + to include photons, ultra-relativistic species 'ur' and all non-cold dark + matter species 'ncdm'; write 'massless' to appriximate 'ncdm' as extra + relativistic species (good approximation if ncdm is still relativistic at + the time of recombination); write 'photons' to include only photons + (default: 'massless') + +tensor method = + +7) list of initial conditions for scalars ('ad' for adiabatic, 'bi' for baryon + isocurvature, 'cdi' for CDM isocurvature, 'nid' for neutrino density + isocurvature, 'niv' for neutrino velocity isocurvature). More than one of + these allowed, can be attached or separated by arbitrary characters; letters + can be small or capital. + (default: set to 'ad') + +ic = ad +#ic = ad&bi&nid + +8) gauge in which calculations are performed: 'sync' or 'synchronous' or + 'Synchronous' for synchronous, 'new' or 'newtonian' or 'Newtonian' for + Newtonian/longitudinal gauge + (default: set to synchronous) + +gauge = synchronous + +--------------------------------------------- +----> define primordial perturbation spectra: +--------------------------------------------- + +1) primordial spectrum type ('analytic_Pk' for an analytic smooth function with amplitude, tilt, running, etc.; analytic spectra with feature can also be added as a new type;'inflation_V' for a numerical computation of the inflationary primordial spectrum, through a full integration of the perturbation equations, given a parametrization of the potential V(phi) in the observable window, like in astro-ph/0703625; 'inflation_H' for the same, but given a parametrization of the potential H(phi) in the observable window, like in astro-ph/0710.1630; 'inflation_V_end' for the same, but given a parametrization of the potential V(phi) in the whole region between the observable part and the end of inflation; there is also an option 'two scales' in order to specify two amplitudes instead of one amplitude and one tilt, like in the isocurvature mode analysis of the Planck inflation paper (works also for adiabatic mode only; see details below, item 2.c); finally 'external_Pk' allows for the primordial spectrum to be computed externally by some piece of code, or to be read from a table, see 2.d). (default: set to 'analytic_Pk') + +P_k_ini type = analytic_Pk + +2) parameters related to one of the primordial spectrum types (will only be + read if they correspond to the type selected above) + +2.a) for type 'analytic_Pk': + +2.a.1) pivot scale in Mpc-1 (default: set to 0.05) + +k_pivot = 0.05 + +2.a.2) scalar adiabatic perturbations: curvature power spectrum value at pivot scale ('A_s' or 'ln10^{10}A_s'), tilt at the same scale 'n_s', and tilt running 'alpha_s' (default: set 'A_s' to 2.215e-9, 'n_s' to 0.9619, 'alpha_s' to 0) + +sigma_8 = 0.83 +#A_s = 2.215e-9 +#ln10^{10}A_s = 3.0980 +n_s = 0.9619 +alpha_s = 0. + +2.a.3) isocurvature/entropy perturbations: for each mode xx ('xx' being one of + 'bi', 'cdi', 'nid', 'niv', corresponding to baryon, cdm, neutrino + density and neutrino velocity entropy perturbations), enter the + entropy-to-curvature ratio f_xx, tilt n_xx and running alpha_xx, all + defined at the pivot scale; e.g. f_cdi of 0.5 means S_cdi/R equal to + one half and (S_cdi/R)^2 to 0.25 + (default: set each 'f_xx' to 1, 'n_xx' to 1, 'alpha_xx' to 0) + +f_bi = 1. +n_bi = 1.5 + +f_cdi=1. + +f_nid=1. +n_nid=2. +alpha_nid= 0.01 + +etc. + +2.a.4) cross-correlation between different adiabatic/entropy mode: for each + pair (xx, yy) where 'xx' and 'yy' are one of 'ad', 'bi', 'cdi', 'nid', + 'niv', enter the correlation c_xx_yy (parameter between -1 and 1, + standing for cosDelta, the cosine of the cross-correlation angle), the + tilt n_xx_yy of the function cosDelta(k), and its running alpha_xx_yy, + all defined at the pivot scale. So, for a pair of fully correlated + (resp. anti-correlated) modes, one should set (c_xx_yy, n_xx_yy, + alpha_xx_yy) to (1,0,0) (resp. (-1,0,0) + (default: set each 'c_xx_yy' to 0, 'n_xx_yy' to 0, 'alpha_xx_yy' to 0) + +c_ad_bi = 0.5 +#n_ad_bi = 0.1 + +c_ad_cdi = -1. + +c_bi_nid = 1. +#n_bi_nid = -0.2 +#alpha_bi_nid = 0.002 + +etc. + +2.a.5) tensor mode (if any): tensor-to-scalar power spectrum ratio, tilt, + running at the pivot scale; if 'n_t' and/or 'alpha_t' is set to 'scc' or + 'SCC' isntead of a numerical value, it will be inferred from the + self-consistency condition of single field slow-roll inflation: for n_t, + -r/8*(2-r/8-n_s); for alpha_t, r/8(r/8+n_s-1) + (default: set 'r' to 1, 'n_t' to 'scc', 'alpha_t' to 'scc') + +r = 1. +n_t = scc +alpha_t = scc + +2.b) for type 'inflation_V' + +2.b.1) type of potential: 'polynomial' for a Taylor expansion of the potential around phi_pivot. Other shapes can easily be defined in primordial module. + +potential = polynomial + +2.b.2) for 'inflation_V' and 'polynomial': enter either the coefficients 'V_0', 'V_1', 'V_2', 'V_3', 'V_4' of the Taylor expansion (in units of Planck mass to appropriate power), or their ratios 'R_0', 'R_1', 'R_2', 'R_3', 'R_4' corresponding to (128pi/3)*V_0^3/V_1^2, V_1^2/V_0^2, V_2/V_0, V_1*V_3/V_0, V_1^2*V_4/V_0^3, or the potential-slow-roll parameters 'PSR_0', 'PSR_1', 'PSR_2', 'PSR_3', 'PSR_4', equal respectively to R_0, epsilon_V=R_1/(16pi), eta_V=R_2/(8pi), ksi_V=R_3/(8pi)^2, omega_V=R_4/(8pi)^3 (default: 'V_0' set to 1.25e-13, 'V_1' to 1.12e-14, 'V_2' to 6.95e-14, 'V_3' and 'V_4' to zero). + +V_0=1.e-13 +V_1=-1.e-14 +V_2=7.e-14 +V_3= +V_4= + +#R_0=2.18e-9 +#R_1=0.1 +#R_2=0.01 +#R_3= +#R_4= + +#PSR_0 = 2.18e-9 +#PSR_1 = 0.001989 +#PSR_2 = 0.0003979 +#PSR_3 = +#PSR_4 = + +2.c) for 'inflation_H': enter either the coefficients 'H_0', 'H_1', 'H_2', 'H_3', 'H_4' of the Taylor expansion (in units of Planck mass to appropriate power), or the Hubble-slow-roll parameters 'HSR_0', 'HSR_1', 'HSR_2', 'HSR_3', 'HSR_4' + +H_0=1.e-13 +H_1=-1.e-14 +H_2=7.e-14 +H_3= +H_4= + +#HSR_0 = 2.18e-9 +#HSR_1 = 0.001989 +#HSR_2 = 0.0003979 +#HSR_3 = +#HSR_4 = + +2.d) for type 'inflation_V_end': + +2.d.1) value of the field at the minimum of the potential after inflation, or at a value in which you want to impose the end of inflation, in hybrid-like models. By convention, the code expects inflation to take place for values smaller than this value, with phi increasing with time (using a reflection symmetry, it is always possible to be in that case) (default: 'phi_end' set to 0) + +phi_end = + +2.d.2) shape of the potential. Refers to functions pre-coded in the primordail module, so far 'polynomial' and 'higgs_inflation'. (default: 'full_potential' set to 0) + +full_potential = polynomial + +2.d.3) parameters of the potential. The meaning of each parameter is explained in the function primrodial_inflation_potential() in source/primordial.c + +Vparam0 = +Vparam1 = +Vparam2 = +Vparam3 = +Vparam4 = + +2.d.4) how much the scale factor a or the product (aH) increases between Hubble crossing for the pivot scale (during inflation) and the end of inflation. You can pass either: 'N_star' (standing for log(a_end/a_pivot)) set to a number; or 'ln_aH_ratio' (standing for log(aH_end/aH_pivot)) set to a number; (default: 'N_star' set to 60) + +#ln_aH_ratio = 50 +#N_star = 55 + +2.d.5) should the inflation module do its nomral job of numerical integration ('numerical') or use analytical slow-roll formulas to infer the primordial spectrum from the potential ('analytical') (default: 'inflation_behavior' set to 'numerical') + +#inflation_behavior = numerical + +2.e) for type 'two_scales' (currently this option works only for scalar modes, and either for pure adiabatic modes or adiabatic + one type of isocurvature): + +2.e.1) two wavenumbers 'k1' and 'k2' in 1/Mpc, at which primordial amplitude + parameters will be given. The value of 'k_pivot' will not be used in + input but quantities at k_pivot will still be calculated and stored in + the primordial structure (no default value: compulsory input if 'P_k_ini + type' has been set to 'two_scales') + +k1=0.002 +k2=0.1 + +2.e.2) two amplitudes 'P_{RR}^1', 'P_{RR}^2' for the adiabatic primordial + spectrum (no default value: compulsory input if 'P_k_ini type' has been + set to 'two_scales') + +P_{RR}^1 = 2.3e-9 +P_{RR}^2 = 2.3e-9 + +2.e.3) if one isocurvature mode has been turned on ('ic' set e.g. to 'ad,cdi' + or 'ad,nid', etc.), enter values of the isocurvature amplitude + 'P_{II}^1', 'P_{II}^2', and cross-correlation amplitude 'P_{RI}^1', + '|P_{RI}^2|' (see Planck paper on inflation for details on definitions) + +P_{II}^1 = 1.e-11 +P_{II}^2 = 1.e-11 +P_{RI}^1 = -1.e-13 +|P_{RI}^2| = 1.e-13 + +2.e.4) set 'special iso' to 'axion' or 'curvaton' for two particular cases: + 'axion' means uncorrelated, n_ad equal to n_iso, 'curvaton' means fully + anti-correlated with f_iso<0 (in the conventions of the Planck inflation + paper this would be called fully correlated), n_iso equal to one; in + these two cases, the last three of the four paramneters in 2.c.3 will be + over-written give the input for 'P_{II}^1' (defaut: 'special_iso' left + blanck, code assumes general case described by four parameters of 2.c.3) + +special_iso = + +2.f) for type 'external_Pk' (see external documentation external_Pk/README.md + for more details): + +2.f.1) Command generating the table. If the table is already generated, just + write "cat ". The table should have two columns (k, pk) if + tensors are not requested, or three columns (k, pks, pkt) if they are. + +#command = python external_Pk/generate_Pk_example.py +#command = python external_Pk/generate_Pk_example_w_tensors.py +command = cat external_Pk/Pk_example.dat +#command = cat external_Pk/Pk_example_w_tensors.dat + +2.f.2) If the table is not pregenerated, parameters to be passed to the + command, in the right order, starting from "custom1" and up to + "custom10". They must be real numbers. + +custom1 = 0.05 # In the example command: k_pivot +custom2 = 2.215e-9 # In the example command: A_s +custom3 = 0.9624 # In the example command: n_s +custom4 = 2e-10 # In the example (with tensors) command: A_t +custom5 = -0.1 # In the example (with tensors) command: n_t +#custom6 = 0 +#custom7 = 0 +#custom8 = 0 +#custom9 = 0 +#custom10 = 0 + +------------------------------------- +----> define format of final spectra: +------------------------------------- + +1) maximum l for CLs: +- 'l_max_scalars' for CMB scalars (temperature, polarization, cmb lensing potential), +- 'l_max_tensors' for CMB tensors (temperature, polarization) +- 'l_max_lss' for Large Scale Structure Cls (density, galaxy lensing potential) +Reducing 'l_max_lss' with respect to l_max_scalars reduces the execution time significantly +(default: set 'l_max_scalars' to 2500, 'l_max_tensors' to 500, 'l_max_lss' to 300) + +#l_max_scalars = 2500 +#l_max_tensors = 500 +#l_max_lss = 600 + +2) maximum k in P(k), 'P_k_max_h/Mpc' in units of h/Mpc or 'P_k_max_1/Mpc' in + units of 1/Mpc. If scalar Cls are also requested, a minimum value is + automatically imposed (the same as in scalar Cls computation) + (default: set to 0.1h/Mpc) + +P_k_max_h/Mpc = 100. +#P_k_max_1/Mpc = 0.7 + +3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered + arbitrarily, but must be separated by comas (default: set 'z_pk' to 0) + +z_pk = 0 +#z_pk = 0., 1.2, 3.5 + +4) if the code is interfaced with routines that need to interpolate P(k,z) at + various values of (k,z), enter 'z_max_pk', the maximum value of z at which + such interpolations are needed. (default: set to maximum value in above + 'z_pk' input) + +z_max_pk = 10. + +6) parameters for the the matter density number count (option 'nCl' (or 'dCl')) + or galaxy lensing potential (option 'sCl') Cls: + +6a) enter here a description of the selection functions W(z) of each + redshift bin; selection can be set to 'gaussian', 'tophat' or + 'dirac', then pass a list of N mean redshifts in growing order + separated by comas, 1 or N widths separated by comas, 1 or N bias + separated by a comma, and 1 or N magnification bias separated by a + comma. The width stands for one standard deviation of the gaussian + (in z space), or for the half-width of the top-hat. Finally, + non_diagonal sets the number of cross-correlation spectra that you + want to calculate: 0 means only auto-correlation, 1 means only + adjacent bins, and number of bins minus one means all correlations + (default: set to 'gaussian',1,0.1,1.,0.,0) + +selection=gaussian +selection_mean = 0.98,0.99,1.0,1.1,1.2 +selection_width = 0.1 +selection_bias = +selection_magnification_bias = +non_diagonal=4 + + [note: for good performances, the code uses the Limber approximation for nCl. If you want high precision even with thin selection functions, increase the default value of the precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z; for instance, add them to the input file with values 10000 and 2000, instead of the default 100 and 30] + +6b) It is possible to multiply the window function W(z) by a selection function + 'dNdz' (number of objects per redshift interval). Type the name of the file + containing the redshift in the first column and the number of objects in + the second column (do not call it 'analytic*'). Set to 'analytic' to use + instead the analytic expression from arXiv:1004.4640 (this function can be + tuned in the module transfer.c, in the subroutine transfer_dNdz_analytic). + Leave blank to use a uniform distribution (default). + +dNdz_selection = + +6c) It is possible to consider source number counts evolution. Type the name of + the file containing the redshift on the first column and the number of + objects on the second column (do not call it 'analytic*'). Set to + 'analytic' to use instead the analytic expression from Eq. 48 of + arXiv:1105.5292. Leave blank to use constant comoving number densities + (default). + +dNdz_evolution = + +7a) file name root 'root' for all output files (if Cl requested, written to + 'cl.dat'; if P(k) requested, written to 'pk.dat'; plus similar + files for scalars, tensors, pairs of initial conditions, etc.; if file with + input parameters requested, written to 'parameters.ini') (default: + the input module sets automatically 'root' to 'output/N_', + where N is the first available integer number, starting from 00, to avoid + erasing the output of previous runs) + +#root = output/test_ + +7b) do you want headers at the beginning of each output file (giving precisions + on the output units/ format) ? If 'headers' set to something containing the + letter 'y' or 'Y', headers written, otherwise not written + (default: written) + +headers = yes + +7c) in all output files, do you want columns to be normalized and ordered with + the default CLASS definitions or with the CAMB definitions (often idential + to the CMBFAST one) ? Set 'format' to either 'class', 'CLASS', 'camb' or + 'CAMB' (default: 'class') + +format = class + +7d) Do you want to write a table of background quantitites in a file? This will + include H, densities, Omegas, various cosmological distances, sound + horizon, etc., as a function of conformal time, proper time, scale factor. + File created if 'write background' set to something containing the letter + 'y' or 'Y', file written, otherwise not written (default: not written) + +write background = no + +7e) Do you want to write a table of thermodynamics quantitites in a file? File + is created if 'write thermodynamics' is set to something containing the + letter 'y' or 'Y'. (default: not written) + +write thermodynamics = no + +7f) Do you want to write a table of perturbations to files for certain + wavenumbers k? Dimension of k is 1/Mpc. The actual wave numbers are chosen + such that they are as close as possible to the requested k-values. + +k_output_values = #0.01, 0.1, 0.0001 + +7g) Do you want to write the primordial scalar(/tensor) spectrum in a file, + with columns k [1/Mpc], P_s(k) [dimensionless], ( P_t(k) [dimensionless])? + File created if 'write primordial' set to something containing the letter + 'y' or 'Y', file written, otherwise not written (default: not written) + +write primordial = no + +7h) Do you want to have all input/precision parameters which have been read + written in file 'parameters.ini', and those not written in file + 'unused_parameters' ? If 'write parameters' set to something + containing the letter 'y' or 'Y', file written, otherwise not written + (default: not written) + +write parameters = yeap + +7i) Do you want a warning written in the standard output when an input + parameter or value could not be interpreted ? If 'write warnings' set to + something containing the letter 'y' or 'Y', warnings written, otherwise not + written (default: not written) + +write warnings = + +---------------------------------------------------- +----> amount of information sent to standard output: +---------------------------------------------------- + +Increase integer values to make each module more talkative (default: all set to 0) + +input_verbose = 1 +background_verbose = 1 +thermodynamics_verbose = 0 +perturbations_verbose = 0 +transfer_verbose = 0 +primordial_verbose = 0 +spectra_verbose = 0 +nonlinear_verbose = 0 +lensing_verbose = 1 +output_verbose = 1 diff --git a/class_old/include/arrays.h b/class_old/include/arrays.h new file mode 100644 index 00000000..ca3f7112 --- /dev/null +++ b/class_old/include/arrays.h @@ -0,0 +1,441 @@ +/** + * definitions for module thermodynamics.c + */ + +#ifndef __ARRAYS__ +#define __ARRAYS__ + +#include "common.h" + +#define _SPLINE_NATURAL_ 0 /**< natural spline: ddy0=ddyn=0 */ +#define _SPLINE_EST_DERIV_ 1 /**< spline with estimation of first derivative on both edges */ + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int array_derive( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_dydx, + ErrorMsg errmsg); + + int array_derive_spline( + double * x_array, + int n_lines, + double * array, + double * array_splined, + int n_columns, + int index_y, + int index_dydx, + ErrorMsg errmsg); + + int array_derive_spline_table_line_to_line( + double * x_array, + int n_lines, + double * array, + int n_columns, + int index_y, + int index_ddy, + int index_dy, + ErrorMsg errmsg); + + int array_derive1_order2_table_line_to_line( + double * x_array, + int n_lines, + double * array, + int n_columns, + int index_y, + int index_dy, + ErrorMsg errmsg); + + int array_derive2_order2_table_line_to_line( + double * x_array, + int n_lines, + double * array, + int n_columns, + int index_y, + int index_dy, + int index_ddy, + ErrorMsg errmsg); + + int array_derive_two( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_dydx, + int index_ddydxdx, + ErrorMsg errmsg); + + + + int array_spline( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_ddydx2, + short spline_mode, + ErrorMsg errmsg); + + int array_spline_table_line_to_line( + double * x, /* vector of size x_size */ + int x_size, + double * array, + int n_columns, + int index_y, + int index_ddydx2, + short spline_mode, + ErrorMsg errmsg); + + int array_spline_table_columns( + double * x, + int x_size, + double * y_array, + int y_size, + double * ddy_array, + short spline_mode, + ErrorMsg errmsg); + + int array_spline_table_columns2( + double * x, + int x_size, + double * y_array, + int y_size, + double * ddy_array, + short spline_mode, + ErrorMsg errmsg); + + int array_spline_table_lines( + double * x, + int x_size, + double * y_array, + int y_size, + double * ddy_array, + short spline_mode, + ErrorMsg errmsg + ); + + int array_logspline_table_lines( + double * x, + int x_size, + double * y_array, + int y_size, + double * ddlny_array, + short spline_mode, + ErrorMsg errmsg + ); + + int array_spline_table_one_column( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ); + + int array_logspline_table_one_column( + double * x, /* vector of size x_size */ + int x_size, + int x_stop, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddlogy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ); + + int array_integrate_all_spline( + double * array, + int n_columns, + int n_lines, + int index_x, + int index_y, + int index_ddy, + double * result, + ErrorMsg errmsg + ); + +int array_integrate_all_trapzd_or_spline( + double * array, + int n_columns, + int n_lines, + int index_start_spline, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_ddy, + double * result, + ErrorMsg errmsg); + + int array_integrate_spline_table_line_to_line( + double * x_array, + int n_lines, + double * array, + int n_columns, + int index_y, + int index_ddy, + int index_inty, + ErrorMsg errmsg); + + int array_integrate( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_int_y_dx, + ErrorMsg errmsg); + + int array_integrate_all( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + double * result); + + int array_integrate_ratio( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y1, + int index_y2, + int index_int_y1_over_y2_dx, + ErrorMsg errmsg); + + int array_interpolate( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + double x, + int * last_index, + double * result, + int result_size, + ErrorMsg errmsg); /** from 1 to n_columns */ + + int array_interpolate_spline( + double * __restrict__ x_array, + int n_lines, + double * __restrict__ array, + double * __restrict__ array_splined, + int n_columns, + double x, + int * __restrict__ last_index, + double * __restrict__ result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg); + + int array_interpolate_linear( + double * x_array, + int n_lines, + double * array, + int n_columns, + double x, + int * last_index, + double * result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg); + + int array_interpolate_growing_closeby( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + double x, + int * last_index, + double * result, + int result_size, + ErrorMsg errmsg); + + int array_interpolate_one_growing_closeby( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + double x, + int * last_index, + int index_y, + double * result, + ErrorMsg errmsg); + + int array_interpolate_spline_growing_closeby( + double * x_array, + int n_lines, + double * array, + double * array_splined, + int n_columns, + double x, + int * last_index, + double * result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg); + + int array_interpolate_spline_growing_hunt( + double * x_array, + int n_lines, + double * array, + double * array_splined, + int n_columns, + double x, + int * last_index, + double * result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg); + + int array_interpolate_two( + double * array_x, + int n_columns_x, + int index_x, /** from 0 to (n_columns_x-1) */ + double * array_y, + int n_columns_y, + int n_lines, /** must be the same for array_x and array_y */ + double x, + double * result, + int result_size, /** from 1 to n_columns_y */ + ErrorMsg errmsg); + + int array_interpolate_two_bis( + double * array_x, + int n_columns_x, + int index_x, /** from 0 to (n_columns_x-1) */ + double * array_y, + int n_columns_y, + int n_lines, /** must be the same for array_x and array_y */ + double x, + double * result, + int result_size, /** from 1 to n_columns_y */ + ErrorMsg errmsg); + + int array_interpolate_spline_one_column( + double * x_array, + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddy_array, /* array of size x_size*y_size */ + double x, /* input */ + double * y, /* output */ + ErrorMsg errmsg + ); + + int array_interpolate_extrapolate_spline_one_column( + double * x_array, + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddy_array, /* array of size x_size*y_size */ + double x, /* input */ + double * y, /* output */ + ErrorMsg errmsg + ); + + int array_interpolate_extrapolate_logspline_loglinear_one_column( + double * x_array, + int x_size, + int x_stop, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddlogy_array, /* array of size x_size*y_size */ + double x, /* input */ + double * y, /* output */ + ErrorMsg errmsg + ); + + int array_interpolate_two_arrays_one_column( + double * array_x, /* assumed to be a vector (i.e. one column array) */ + double * array_y, + int n_columns_y, + int index_y, /* between 0 and (n_columns_y-1) */ + int n_lines, /** must be the same for array_x and array_y */ + double x, + double * result, + ErrorMsg errmsg); + + int array_interpolate_equal( + double * array, + int n_colums, + int n_lines, + double x, + double x_min, + double x_max, + double * result, + ErrorMsg errmsg); + + int array_interpolate_cubic_equal( + double x0, + double dx, + double *yarray, + int Nx, + double x, + double * result, + ErrorMsg errmsg); + + int array_interpolate_parabola(double x1, + double x2, + double x3, + double x, + double y1, + double y2, + double y3, + double * y, + double * dy, + double * ddy, + ErrorMsg errmsg); + + int array_smooth(double * array, + int n_columns, + int n_lines, + int index, /** from 0 to (n_columns-1) */ + int radius, + ErrorMsg errmsg); + + int array_trapezoidal_weights(double * __restrict__ x, + int n, + double * __restrict__ w_trapz, + ErrorMsg errmsg); + + int array_trapezoidal_mweights(double * __restrict__ x, + int n, + double * __restrict__ w_trapz, + ErrorMsg errmsg); + + int array_trapezoidal_integral(double * __restrict__ integrand, + int n, + double * __restrict__ w_trapz, + double * __restrict__ I, + ErrorMsg errmsg); + + int array_trapezoidal_convolution(double * __restrict__ integrand1, + double * __restrict__ integrand2, + int n, + double * __restrict__ w_trapz, + double * __restrict__ I, + ErrorMsg errmsg); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/class_old/include/background.h b/class_old/include/background.h new file mode 100644 index 00000000..edb30d56 --- /dev/null +++ b/class_old/include/background.h @@ -0,0 +1,556 @@ +/** @file background.h Documented includes for background module */ + +#ifndef __BACKGROUND__ +#define __BACKGROUND__ + +#include "common.h" +#include "quadrature.h" +#include "growTable.h" +#include "arrays.h" +#include "dei_rkck.h" +#include "parser.h" + +enum spatial_curvature {flat,open,closed}; + +/** + * All background parameters and evolution that other modules need to know. + * + * Once initialized by the backgound_init(), contains all necessary + * information on the background evolution (except thermodynamics), + * and in particular, a table of all background quantities as a + * function of time and scale factor, used for interpolation in other + * modules. + */ + +struct background +{ + /** @name - input parameters initialized by user in input module + * (all other quantities are computed in this module, given these parameters + * and the content of the 'precision' structure) + * + * The background cosmological parameters listed here form a parameter + * basis which is directly usable by the background module. Nothing + * prevents from defining the input cosmological parameters + * differently, and to pre-process them into this format, using the input + * module (this might require iterative calls of background_init() + * e.g. for dark energy or decaying dark matter). */ + + //@{ + + double H0; /**< \f$ H_0 \f$: Hubble parameter (in fact, [\f$H_0/c\f$]) in \f$ Mpc^{-1} \f$ */ + + double Omega0_g; /**< \f$ \Omega_{0 \gamma} \f$: photons */ + + double T_cmb; /**< \f$ T_{cmb} \f$: current CMB temperature in Kelvins */ + + double Omega0_b; /**< \f$ \Omega_{0 b} \f$: baryons */ + + double Omega0_cdm; /**< \f$ \Omega_{0 cdm} \f$: cold dark matter */ + + double Omega0_lambda; /**< \f$ \Omega_{0_\Lambda} \f$: cosmological constant */ + + double Omega0_fld; /**< \f$ \Omega_{0 de} \f$: fluid with constant + \f$ w \f$ and \f$ c_s^2 \f$ */ + double w0_fld; /**< \f$ w0_{DE} \f$: current fluid equation of state parameter */ + double wa_fld; /**< \f$ wa_{DE} \f$: fluid equation of state parameter derivative */ + + double cs2_fld; /**< \f$ c^2_{s~DE} \f$: sound speed of the fluid + in the frame comoving with the fluid (so, this is + not [delta p/delta rho] in the synchronous or + newtonian gauge!!!) */ + + double Omega0_ur; /**< \f$ \Omega_{0 \nu r} \f$: ultra-relativistic neutrinos */ + + double Omega0_dcdmdr; /**< \f$ \Omega_{0 dcdm}+\Omega_{0 dr} \f$: decaying cold dark matter (dcdm) decaying to dark radiation (dr) */ + + double Gamma_dcdm; /**< \f$ \Gamma_{dcdm} \f$: decay constant for decaying cold dark matter */ + + double Omega_ini_dcdm; /**< \f$ \Omega_{ini,dcdm} \f$: rescaled initial value for dcdm density (see 1407.2418 for definitions) */ + + double Omega0_scf; /**< \f$ \Omega_{0 scf} \f$: scalar field */ + short attractor_ic_scf; /**< whether the scalar field has attractor initial conditions */ + double phi_ini_scf; /**< \f$ \phi(t_0) \f$: scalar field initial value */ + double phi_prime_ini_scf; /**< \f$ d\phi(t_0)/d\tau \f$: scalar field initial derivative wrt conformal time */ + double * scf_parameters; /**< list of parameters describing the scalar field potential */ + int scf_parameters_size; /**< size of scf_parameters */ + int scf_tuning_index; /**< index in scf_parameters used for tuning */ + //double scf_lambda; /**< \f$ \lambda \f$ : scalar field exponential potential slope */ + //double scf_alpha; /**< \f$ \alpha \f$ : Albrecht-Skordis polynomial slope */ + //double scf_B; /**< \f$ \alpha \f$ : Albrecht-Skordis field shift */ + //double scf_A; /**< \f$ \alpha \f$ : Albrecht-Skordis offset */ + + double Omega0_k; /**< \f$ \Omega_{0_k} \f$: curvature contribution */ + + int N_ncdm; /**< Number of distinguishable ncdm species */ + double * M_ncdm; /**< vector of masses of non-cold relic: + dimensionless ratios m_ncdm/T_ncdm */ + double * Omega0_ncdm, Omega0_ncdm_tot; /**< Omega0_ncdm for each species and for the total Omega0_ncdm */ + double * deg_ncdm, deg_ncdm_default; /**< vector of degeneracy parameters in factor + of p-s-d: 1 for one family of neutrinos + (= one neutrino plus its anti-neutrino, + total g*=1+1=2, so deg = 0.5 g*); and its + default value */ + + /* the following parameters help to define the analytical ncdm phase space distributions (p-s-d) */ + double * T_ncdm,T_ncdm_default; /**< list of 1st parameters in + p-s-d of non-cold relics: + relative temperature + T_ncdm1/T_gamma; and its + default value */ + double * ksi_ncdm, ksi_ncdm_default; /**< list of 2nd parameters in + p-s-d of non-cold relics: + relative chemical potential + ksi_ncdm1/T_ncdm1; and its + default value */ + double * ncdm_psd_parameters; /**< list of parameters for specifying/modifying + ncdm p.s.d.'s, to be customized for given model + (could be e.g. mixing angles) */ + /* end of parameters for analytical ncdm p-s-d */ + + /* the following parameters help to define tabulated ncdm p-s-d passed in file */ + int * got_files; /**< list of flags for each species, set to true if + p-s-d is passed through file */ + char * ncdm_psd_files; /**< list of filenames for tabulated p-s-d */ + /* end of parameters for tabulated ncdm p-s-d */ + + //@} + + /** @name - related parameters */ + + //@{ + + double h; /**< reduced Hubble parameter */ + double age; /**< age in Gyears */ + double conformal_age; /**< conformal age in Mpc */ + double K; /**< \f$ K \f$: Curvature parameter \f$ K=-\Omega0_k*a_{today}^2*H_0^2\f$; */ + int sgnK; /**< K/|K|: -1, 0 or 1 */ + double * m_ncdm_in_eV; /**< list of ncdm masses in eV (inferred from M_ncdm and other parameters above) */ + double Neff; /**< so-called "effective neutrino number", computed at earliest time in interpolation table */ + double Omega0_dcdm; /**< \f$ \Omega_{0 dcdm} \f$: decaying cold dark matter */ + double Omega0_dr; /**< \f$ \Omega_{0 dr} \f$: decay radiation */ + + + //@} + + /** @name - other background parameters */ + + //@{ + + double a_today; /**< scale factor today (arbitrary and irrelevant for most purposes) */ + + //@} + + /** @name - all indices for the vector of background (=bg) quantities stored in table */ + + //@{ + + int index_bg_a; /**< scale factor */ + int index_bg_H; /**< Hubble parameter in \f$Mpc^{-1}\f$ */ + int index_bg_H_prime; /**< its derivative w.r.t. conformal time */ + + /* end of vector in short format, now quantities in normal format */ + + int index_bg_rho_g; /**< photon density */ + int index_bg_rho_b; /**< baryon density */ + int index_bg_rho_cdm; /**< cdm density */ + int index_bg_rho_lambda; /**< cosmological constant density */ + int index_bg_rho_fld; /**< fluid with constant w density */ + int index_bg_rho_ur; /**< relativistic neutrinos/relics density */ + int index_bg_rho_dcdm; /**< dcdm density */ + int index_bg_rho_dr; /**< dr density */ + + int index_bg_phi_scf; /**< scalar field value */ + int index_bg_phi_prime_scf; /**< scalar field derivative wrt conformal time */ + int index_bg_V_scf; /**< scalar field potential V */ + int index_bg_dV_scf; /**< scalar field potential derivative V' */ + int index_bg_ddV_scf; /**< scalar field potential second derivative V'' */ + int index_bg_rho_scf; /**< scalar field energy density */ + int index_bg_p_scf; /**< scalar field pressure */ + + int index_bg_rho_ncdm1; /**< density of first ncdm species (others contiguous) */ + int index_bg_p_ncdm1; /**< pressure of first ncdm species (others contiguous) */ + int index_bg_pseudo_p_ncdm1;/**< another statistical momentum useful in ncdma approximation */ + + int index_bg_Omega_r; /**< relativistic density fraction (\f$ \Omega_{\gamma} + \Omega_{\nu r} \f$) */ + + /* end of vector in normal format, now quantities in long format */ + + int index_bg_rho_crit; /**< critical density */ + int index_bg_Omega_m; /**< non-relativistic density fraction (\f$ \Omega_b + \Omega_cdm + \Omega_{\nu nr} \f$) */ + int index_bg_conf_distance; /**< conformal distance (from us) in Mpc */ + int index_bg_ang_distance; /**< angular diameter distance in Mpc */ + int index_bg_lum_distance; /**< luminosity distance in Mpc */ + int index_bg_time; /**< proper (cosmological) time in Mpc */ + int index_bg_rs; /**< comoving sound horizon in Mpc */ + + int index_bg_D; /**< density growth factor in dust universe, \f$ D = H \int [da/(aH)^3] \f$ (arbitrary normalization) */ + int index_bg_f; /**< velocity growth factor in dust universe, [dlnD]/[dln a] */ + + int bg_size_short; /**< size of background vector in the "short format" */ + int bg_size_normal; /**< size of background vector in the "normal format" */ + int bg_size; /**< size of background vector in the "long format" */ + + //@} + + /** @name - background interpolation tables */ + + //@{ + + int bt_size; /**< number of lines (i.e. time-steps) in the array */ + double * tau_table; /**< vector tau_table[index_tau] with values of \f$ \tau \f$ (conformal time) */ + double * z_table; /**< vector z_table[index_tau] with values of \f$ z \f$ (redshift) */ + double * background_table; /**< table background_table[index_tau*pba->bg_size+pba->index_bg] with all other quantities (array of size bg_size*bt_size) **/ + + //@} + + /** @name - table of their second derivatives, used for spline interpolation */ + + //@{ + + double * d2tau_dz2_table; /**< vector d2tau_dz2_table[index_tau] with values of \f$ d^2 \tau / dz^2 \f$ (conformal time) */ + double * d2background_dtau2_table; /**< table d2background_dtau2_table[index_tau*pba->bg_size+pba->index_bg] with values of \f$ d^2 b_i / d\tau^2 \f$ (conformal time) */ + + //@} + + + /** @name - all indices for the vector of background quantities to be integrated (=bi) + * + * Most background quantities can be immediately inferred from the + * scale factor. Only few of them require an integration with + * respect to conformal time (in the minimal case, only one quantity needs to + * be integrated with time: the scale factor, using the Friedmann + * equation). These indices refer to the vector of + * quantities to be integrated with time. + * {B} quantities are needed by background_functions() while {C} quantities are not. + */ + + //@{ + + int index_bi_a; /**< {B} scale factor */ + int index_bi_rho_dcdm;/**< {B} dcdm density */ + int index_bi_rho_dr; /**< {B} dr density */ + int index_bi_phi_scf; /**< {B} scalar field value */ + int index_bi_phi_prime_scf; /**< {B} scalar field derivative wrt conformal time */ + + int index_bi_time; /**< {C} proper (cosmological) time in Mpc */ + int index_bi_rs; /**< {C} sound horizon */ + int index_bi_tau; /**< {C} conformal time in Mpc */ + int index_bi_growth; /**< {C} integral over \f$ [da/(aH)^3]=[d\tau/(aH^2)]\f$, useful for growth factor */ + + int bi_B_size; /**< Number of {B} parameters */ + int bi_size; /**< Number of {B}+{C} parameters */ + + //@} + + /** @name - flags describing the absence or presence of cosmological + ingredients + * + * having one of these flag set to zero allows to skip the + * corresponding contributions, instead of adding null contributions. + */ + + + //@{ + + short has_cdm; /**< presence of cold dark matter? */ + short has_dcdm; /**< presence of decaying cold dark matter? */ + short has_dr; /**< presence of relativistic decay radiation? */ + short has_scf; /**< presence of a scalar field? */ + short has_ncdm; /**< presence of non-cold dark matter? */ + short has_lambda; /**< presence of cosmological constant? */ + short has_fld; /**< presence of fluid with constant w and cs2? */ + short has_ur; /**< presence of ultra-relativistic neutrinos/relics? */ + short has_curvature; /**< presence of global spatial curvature? */ + + //@} + + /** + *@name - arrays related to sampling and integration of ncdm phase space distributions + */ + + + //@{ + + double ** q_ncdm_bg; /**< Pointers to vectors of background sampling in q */ + double ** w_ncdm_bg; /**< Pointers to vectors of corresponding quadrature weights w */ + double ** q_ncdm; /**< Pointers to vectors of perturbation sampling in q */ + double ** w_ncdm; /**< Pointers to vectors of corresponding quadrature weights w */ + double ** dlnf0_dlnq_ncdm; /**< Pointers to vectors of logarithmic derivatives of p-s-d */ + int * q_size_ncdm_bg; /**< Size of the q_ncdm_bg arrays */ + int * q_size_ncdm; /**< Size of the q_ncdm arrays */ + double * factor_ncdm; /**< List of normalization factors for calculating energy density etc.*/ + + //@} + + /** + *@name - some flags needed for calling background functions + */ + + //@{ + + short short_info; /**< flag for calling background_at_eta and return little information */ + short normal_info; /**< flag for calling background_at_eta and return medium information */ + short long_info; /**< flag for calling background_at_eta and return all information */ + + short inter_normal; /**< flag for calling background_at_eta and find position in interpolation table normally */ + short inter_closeby; /**< flag for calling background_at_eta and find position in interpolation table starting from previous position in previous call */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short shooting_failed; /**< flag is set to true if shooting failed. */ + + ErrorMsg shooting_error; /**< Error message from shooting failed. */ + + short background_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/** + * temporary parameters and workspace passed to the background_derivs function + */ + +struct background_parameters_and_workspace { + + /* structures containing fixed input parameters (indices, ...) */ + struct background * pba; + + /* workspace */ + double * pvecback; + +}; + +/** + * temporary parameters and workspace passed to phase space distribution function + */ + +struct background_parameters_for_distributions { + + /* structures containing fixed input parameters (indices, ...) */ + struct background * pba; + + /* Additional parameters */ + + /* Index of current distribution function */ + int n_ncdm; + + /* Used for interpolating in file of tabulated p-s-d: */ + int tablesize; + double *q; + double *f0; + double *d2f0; + int last_index; + +}; + +/**************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int background_at_tau( + struct background *pba, + double tau, + short return_format, + short inter_mode, + int * last_index, + double * pvecback + ); + + int background_functions( + struct background *pba, + double * pvecback_B, + short return_format, + double * pvecback + ); + + int background_tau_of_z( + struct background *pba, + double z, + double * tau + ); + + int background_init( + struct precision *ppr, + struct background *pba + ); + + int background_free( + struct background *pba + ); + + int background_free_input( + struct background *pba + ); + + int background_indices( + struct background *pba + ); + + int background_ncdm_distribution( + void *pba, + double q, + double * f0 + ); + + int background_ncdm_test_function( + void *pba, + double q, + double * test + ); + + int background_ncdm_init( + struct precision *ppr, + struct background *pba + ); + + + int background_ncdm_momenta( + double * qvec, + double * wvec, + int qsize, + double M, + double factor, + double z, + double * n, + double * rho, + double * p, + double * drho_dM, + double * pseudo_p + ); + + int background_ncdm_M_from_Omega( + struct precision *ppr, + struct background *pba, + int species + ); + + int background_solve( + struct precision *ppr, + struct background *pba + ); + + int background_initial_conditions( + struct precision *ppr, + struct background *pba, + double * pvecback, + double * pvecback_integration + ); + + int background_output_titles(struct background * pba, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int background_output_data( + struct background *pba, + int number_of_titles, + double *data); + + int background_derivs( + double z, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + /** Scalar field potential and its derivatives **/ + double V_scf( + struct background *pba, + double phi + ); + + double dV_scf( + struct background *pba, + double phi + ); + + double ddV_scf( + struct background *pba, + double phi + ); + + /** Coupling between scalar field and matter **/ + double Q_scf( + struct background *pba, + double phi, + double phi_prime + ); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +/** + * @name Some conversion factors and fundamental constants needed by background module: + */ + +//@{ + +#define _Mpc_over_m_ 3.085677581282e22 /**< conversion factor from meters to megaparsecs */ +/* remark: CAMB uses 3.085678e22: good to know if you want to compare with high accuracy */ + +#define _Gyr_over_Mpc_ 3.06601394e2 /**< conversion factor from megaparsecs to gigayears + (c=1 units, Julian years of 365.25 days) */ +#define _c_ 2.99792458e8 /**< c in m/s */ +#define _G_ 6.67428e-11 /**< Newton constant in m^3/Kg/s^2 */ +#define _eV_ 1.602176487e-19 /**< 1 eV expressed in J */ + +/* parameters entering in Stefan-Boltzmann constant sigma_B */ +#define _k_B_ 1.3806504e-23 +#define _h_P_ 6.62606896e-34 +/* remark: sigma_B = 2 pi^5 k_B^4 / (15h^3c^2) = 5.670400e-8 + = Stefan-Boltzmann constant in W/m^2/K^4 = Kg/K^4/s^3 */ + +//@} + +/** + * @name Some numbers useful in numerical algorithms - but not + * affecting precision, otherwise would be in precision structure + */ + +//@{ + +#define _H0_BIG_ 1./2997.9 /**< maximal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=1.0) \f$ */ +#define _H0_SMALL_ 0.3/2997.9 /**< minimal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=0.3) \f$ */ +#define _TCMB_BIG_ 2.8 /**< maximal \f$ T_{cmb} \f$ in K */ +#define _TCMB_SMALL_ 2.7 /**< minimal \f$ T_{cmb} \f$ in K */ +#define _TOLERANCE_ON_CURVATURE_ 1.e-5 /**< if \f$ | \Omega_k | \f$ smaller than this, considered as flat */ +#define _OMEGAK_BIG_ 0.5 /**< maximal \f$ Omega_k \f$ */ +#define _OMEGAK_SMALL_ -0.5 /**< minimal \f$ Omega_k \f$ */ + +//@} + +/** + * @name Some limits imposed in other parts of the module: + */ + +//@{ + +#define _SCALE_BACK_ 0.1 /**< logarithmic step used when searching + for an initial scale factor at which ncdm + are still relativistic */ + +#define _PSD_DERIVATIVE_EXP_MIN_ -30 /**< for ncdm, for accurate computation of dlnf0/dlnq, q step is varied in range specified by these parameters */ +#define _PSD_DERIVATIVE_EXP_MAX_ 2 /**< for ncdm, for accurate computation of dlnf0/dlnq, q step is varied in range specified by these parameters */ + +#define _zeta3_ 1.2020569031595942853997381615114499907649862923404988817922 /**< for quandrature test function */ +#define _zeta5_ 1.0369277551433699263313654864570341680570809195019128119741 /**< for quandrature test function */ + +//@} + + +#endif +/* @endcond */ diff --git a/class_old/include/class.h b/class_old/include/class.h new file mode 100644 index 00000000..7250c9c5 --- /dev/null +++ b/class_old/include/class.h @@ -0,0 +1,34 @@ +#ifndef __CLASS__ +#define __CLASS__ + +/* standard libraries */ +#include "stdio.h" +#include "stdlib.h" +#include "math.h" +#include "string.h" +#include "float.h" +#ifdef _OPENMP +#include "omp.h" +#endif + +/* tools for class */ +#include "quadrature.h" +#include "growTable.h" +#include "arrays.h" +#include "dei_rkck.h" +#include "parser.h" + +/* class modules */ +#include "common.h" +#include "input.h" +#include "background.h" +#include "thermodynamics.h" +#include "perturbations.h" +#include "primordial.h" +#include "nonlinear.h" +#include "transfer.h" +#include "spectra.h" +#include "lensing.h" +#include "output.h" + +#endif diff --git a/class_old/include/common.h b/class_old/include/common.h new file mode 100644 index 00000000..dcc9e1f0 --- /dev/null +++ b/class_old/include/common.h @@ -0,0 +1,806 @@ +/** @file common.h Generic libraries, parameters and functions used in the whole code. */ + +#include "stdio.h" +#include "stdlib.h" +#include "math.h" +#include "string.h" +#include "float.h" +#include "svnversion.h" +#include + +#ifdef _OPENMP +#include "omp.h" +#endif + +#ifndef __COMMON__ +#define __COMMON__ + +#define _VERSION_ "v2.5.0" +/* @cond INCLUDE_WITH_DOXYGEN */ + +#define _TRUE_ 1 /**< integer associated to true statement */ +#define _FALSE_ 0 /**< integer associated to false statement */ + +#define _SUCCESS_ 0 /**< integer returned after successful call of a function */ +#define _FAILURE_ 1 /**< integer returned after failure in a function */ + +#define _ERRORMSGSIZE_ 2048 /**< generic error messages are cut beyond this number of characters */ +typedef char ErrorMsg[_ERRORMSGSIZE_]; /**< Generic error messages (there is such a field in each structure) */ + +#define _FILENAMESIZE_ 256 /**< size of the string read in each line of the file (extra characters not taken into account) */ +typedef char FileName[_FILENAMESIZE_]; + +#define _PI_ 3.1415926535897932384626433832795e0 /**< The number pi */ + +#define _PIHALF_ 1.57079632679489661923132169164e0 /**< pi divided by 2 */ + +#define _TWOPI_ 6.283185307179586476925286766559e0 /**< 2 times pi */ + +#define _SQRT2_ 1.41421356237309504880168872421e0 /** < square root of 2. */ + +#define _SQRT6_ 2.4494897427831780981972840747059e0 /**< square root of 6. */ + +#define _SQRT_PI_ 1.77245385090551602729816748334e0 /**< square root of pi. */ + +#define _MAX_IT_ 10000/**< default maximum number of iterations in conditional loops (to avoid infinite loops) */ + +#define _QUADRATURE_MAX_ 250 /**< maximum allowed number of abssices in quadrature integral estimation */ + +#define _QUADRATURE_MAX_BG_ 800 /**< maximum allowed number of abssices in quadrature integral estimation */ + +#define _TOLVAR_ 100. /**< The minimum allowed variation is the machine precision times this number */ + +#define _HUGE_ 1.e99 + +#define _OUTPUTPRECISION_ 12 /**< Number of significant digits in some output files */ + +#define _COLUMNWIDTH_ 24 /**< Must be at least _OUTPUTPRECISION_+8 for guaranteed fixed width columns */ + +#define _MAXTITLESTRINGLENGTH_ 8000 /**< Maximum number of characters in title strings */ + +#define _DELIMITER_ "\t" /**< character used for delimiting titles in the title strings */ + + + +#ifndef __CLASSDIR__ +#define __CLASSDIR__ "." /**< The directory of CLASS. This is set to the absolute path to the CLASS directory so this is just a failsafe. */ +#endif + +#define MIN(a,b) (((a)<(b)) ? (a) : (b) ) /**< the usual "min" function */ +#define MAX(a,b) (((a)<(b)) ? (b) : (a) ) /**< the usual "max" function */ +#define SIGN(a) (((a)>0) ? 1. : -1. ) +#define NRSIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) +#define index_symmetric_matrix(i1,i2,N) (((i1)<=(i2)) ? (i2+N*i1-(i1*(i1+1))/2) : (i1+N*i2-(i2*(i2+1))/2)) /**< assigns an index from 0 to [N(N+1)/2-1] to the coefficients M_{i1,i2} of an N*N symmetric matrix; useful for converting a symmetric matrix to a vector, without losing or double-counting any information */ +/* @endcond */ +// needed because of weird openmp bug on macosx lion... +void class_protect_sprintf(char* dest, char* tpl,...); +void class_protect_fprintf(FILE* dest, char* tpl,...); +void* class_protect_memcpy(void* dest, void* from, size_t sz); + +int get_number_of_titles(char * titlestring); + +#define class_build_error_string(dest,tmpl,...) { \ + ErrorMsg FMsg; \ + class_protect_sprintf(FMsg,tmpl,__VA_ARGS__); \ + class_protect_sprintf(dest,"%s(L:%d) :%s",__func__,__LINE__,FMsg); \ +} + +// Error reporting macros + +// Call +#define class_call_message(err_out,extra,err_mess) \ + class_build_error_string(err_out,"error in %s;\n=>%s",extra,err_mess); + +/* macro for calling function and returning error if it failed */ +#define class_call_except(function, error_message_from_function, error_message_output,list_of_commands) { \ + if (function == _FAILURE_) { \ + class_call_message(error_message_output,#function,error_message_from_function); \ + list_of_commands; \ + return _FAILURE_; \ + } \ +} + +/* macro for trying to call function */ +#define class_call_try(function, error_message_from_function, error_message_output,list_of_commands) { \ + if (function == _FAILURE_) { \ + class_call_message(error_message_output,#function,error_message_from_function); \ + list_of_commands; \ + } \ +} + +/* macro for calling function and returning error if it failed */ +#define class_call(function, error_message_from_function, error_message_output) \ + class_call_except(function, error_message_from_function,error_message_output,) + +/* same in parallel region */ +#define class_call_parallel(function, error_message_from_function, error_message_output) { \ + if (abort == _FALSE_) { \ + if (function == _FAILURE_) { \ + class_call_message(error_message_output,#function,error_message_from_function); \ + abort=_TRUE_; \ + } \ + } \ +} + + + + +// Alloc +#define class_alloc_message(err_out,extra,sz) \ + class_build_error_string(err_out,"could not allocate %s with size %d",extra,sz); + +/* macro for allocating memory and returning error if it failed */ +#define class_alloc(pointer, size, error_message_output) { \ + pointer=malloc(size); \ + if (pointer == NULL) { \ + int size_int; \ + size_int = size; \ + class_alloc_message(error_message_output,#pointer, size_int); \ + return _FAILURE_; \ + } \ +} + +/* same inside parallel structure */ +#define class_alloc_parallel(pointer, size, error_message_output) { \ + pointer=NULL; \ + if (abort == _FALSE_) { \ + pointer=malloc(size); \ + if (pointer == NULL) { \ + int size_int; \ + size_int = size; \ + class_alloc_message(error_message_output,#pointer, size_int); \ + abort=_TRUE_; \ + } \ + } \ +} + +/* macro for allocating memory, initializing it with zeros/ and returning error if it failed */ +#define class_calloc(pointer, init,size, error_message_output) { \ + pointer=calloc(init,size); \ + if (pointer == NULL) { \ + int size_int; \ + size_int = size; \ + class_alloc_message(error_message_output,#pointer, size_int); \ + return _FAILURE_; \ + } \ +} + +/* macro for re-allocating memory, returning error if it failed */ +#define class_realloc(pointer, newname, size, error_message_output) { \ + pointer=realloc(newname,size); \ + if (pointer == NULL) { \ + int size_int; \ + size_int = size; \ + class_alloc_message(error_message_output,#pointer, size_int); \ + return _FAILURE_; \ + } \ +} + +// Testing + +#define class_test_message(err_out,extra,args...) { \ + ErrorMsg Optional_arguments; \ + class_protect_sprintf(Optional_arguments,args); \ + class_build_error_string(err_out,"condition (%s) is true; %s",extra,Optional_arguments); \ +} + +/* macro for testing condition and returning error if condition is true; + args is a variable list of optional arguments, e.g.: args="x=%d",x + args cannot be empty, if there is nothing to pass use args="" */ +#define class_test_except(condition, error_message_output,list_of_commands, args...) { \ + if (condition) { \ + class_test_message(error_message_output,#condition, args); \ + list_of_commands; \ + return _FAILURE_; \ + } \ +} + +#define class_test(condition, error_message_output, args...) { \ + if (condition) { \ + class_test_message(error_message_output,#condition, args); \ + return _FAILURE_; \ + } \ +} + +#define class_test_parallel(condition, error_message_output, args...) { \ + if (abort == _FALSE_) { \ + if (condition) { \ + class_test_message(error_message_output,#condition, args); \ + abort=_TRUE_; \ + } \ + } \ +} + +/* macro for returning error message; + args is a variable list of optional arguments, e.g.: args="x=%d",x + args cannot be empty, if there is nothing to pass use args="" */ +#define class_stop(error_message_output,args...) { \ + ErrorMsg Optional_arguments; \ + class_protect_sprintf(Optional_arguments,args); \ + class_build_error_string(error_message_output,"error; %s",Optional_arguments); \ + return _FAILURE_; \ +} + +// IO +/* macro for opening file and returning error if it failed */ +#define class_open(pointer, filename, mode, error_output) { \ + pointer=fopen(filename,mode); \ + if (pointer == NULL) { \ + class_build_error_string(error_output,"could not open %s with name %s and mode %s",#pointer,filename,#mode); \ + return _FAILURE_; \ + } \ +} + +/* macro for defining indices (usually one, sometimes a block) */ +#define class_define_index(index, \ + condition, \ + running_index, \ + number_of_indices) { \ + if (condition) { \ + index = running_index; \ + running_index += number_of_indices; \ + } \ + } + +/* macros for writing formatted output */ +#define class_fprintf_double(file, \ + output, \ + condition){ \ + if (condition == _TRUE_) \ + fprintf(file,"%*.*e ",_COLUMNWIDTH_,_OUTPUTPRECISION_,output); \ + } + +#define class_fprintf_double_or_default(file, \ + output, \ + condition, \ + defaultvalue){ \ + if (condition == _TRUE_) \ + fprintf(file,"%*.*e ",_COLUMNWIDTH_,_OUTPUTPRECISION_,output); \ + else \ + fprintf(file,"%*.*e ",_COLUMNWIDTH_,_OUTPUTPRECISION_,defaultvalue); \ +} + +#define class_fprintf_int(file, \ + output, \ + condition){ \ + if (condition == _TRUE_) \ + fprintf(file,"%*d%*s ", \ + MAX(0,_COLUMNWIDTH_-_OUTPUTPRECISION_-5), \ + output, _OUTPUTPRECISION_+5," "); \ + } + +#define class_fprintf_columntitle(file, \ + title, \ + condition, \ + colnum){ \ + if (condition == _TRUE_) \ + fprintf(file,"%*s%2d:%-*s ", \ + MAX(0,MIN(_COLUMNWIDTH_-_OUTPUTPRECISION_-6-3,_COLUMNWIDTH_-((int) strlen(title))-3)), \ + "",colnum++,_OUTPUTPRECISION_+6,title); \ + } + +#define class_store_columntitle(titlestring, \ + title, \ + condition){ \ + if (condition == _TRUE_){ \ + strcat(titlestring,title); \ + strcat(titlestring,_DELIMITER_); \ + } \ + } +//,_MAXTITLESTRINGLENGTH_-strlen(titlestring)-1); + +#define class_store_double(storage, \ + value, \ + condition, \ + dataindex){ \ + if (condition == _TRUE_) \ + storage[dataindex++] = value; \ + } + +#define class_store_double_or_default(storage, \ + value, \ + condition, \ + dataindex, \ + defaultvalue){ \ + if (condition == _TRUE_) \ + storage[dataindex++] = value; \ + else \ + storage[dataindex++] = defaultvalue; \ +} + +/** parameters related to the precision of the code and to the method of calculation */ + +/** + * list of evolver types for integrating perturbations over time + */ +enum evolver_type { + rk, /* Runge-Kutta integrator */ + ndf15 /* stiff integrator */ +}; + +/** + * List of ways in which matter power spectrum P(k) can be defined. + * The standard definition is the first one (delta_m_squared) but + * alternative definitions can be useful in some projects. + * + */ +enum pk_def { + delta_m_squared, /**< normal definition (delta_m includes all non-relativistic species at late times) */ + delta_tot_squared, /**< delta_tot includes all species contributions to (delta rho), and only non-relativistic contributions to rho */ + delta_bc_squared, /**< delta_bc includes contribution of baryons and cdm only to (delta rho) and to rho */ + delta_tot_from_poisson_squared /**< use delta_tot inferred from gravitational potential through Poisson equation */ +}; +/** + * Different ways to present output files + */ + +enum file_format {class_format,camb_format}; + +/** + * All precision parameters. + * + * Includes integrations + * steps, flags telling how the computation is to be performed, etc. + */ +struct precision +{ + + /** @name - parameters related to the background */ + //@{ + + /** + * default initial value of scale factor in background integration, in + * units of scale factor today + */ + double a_ini_over_a_today_default; + + /** + * default step d tau in background integration, in units of + * conformal Hubble time (\f$ d \tau \f$ = back_integration_stepsize / aH ) + */ + double back_integration_stepsize; + + /** + * parameter controlling precision of background integration + */ + double tol_background_integration; + + + /** + * parameter controlling how deep inside radiation domination must the + * initial time be chosen + */ + double tol_initial_Omega_r; + + /** + * parameter controlling relative precision of ncdm mass for given + * ncdm current density + */ + double tol_M_ncdm; + + /** + * parameter controlling relative precision of integrals over ncdm + * phase-space distribution during perturbation calculation: value + * to be applied in Newtonian gauge + */ + double tol_ncdm_newtonian; + + /** + * parameter controlling relative precision of integrals over ncdm + * phase-space distribution during perturbation calculation: value + * to be applied in synchronous gauge + */ + double tol_ncdm_synchronous; + + /** + * parameter controlling relative precision of integrals over ncdm + * phase-space distribution during perturbation calculation: value + * actually applied in chosen gauge + */ + double tol_ncdm; + + /** + * parameter controlling relative precision of integrals over ncdm + * phase-space distribution during background evolution + */ + double tol_ncdm_bg; + + /** + * parameter controlling how relativistic must non-cold relics be at + * initial time + */ + double tol_ncdm_initial_w; + + /** + * parameter controlling the initial scalar field in background functions + */ + double safe_phi_scf; + + //@} + + /** @name - parameters related to the thermodynamics */ + + //@{ + + /* - for bbn */ +/* @cond INCLUDE_WITH_DOXYGEN */ + FileName sBBN_file; +/* @endcond */ + /* - for recombination */ + + /* initial and final redshifts in recfast */ + + double recfast_z_initial; /**< initial redshift in recfast */ + + /* parameters governing precision of integration */ + + int recfast_Nz0; /**< number of integration steps */ + double tol_thermo_integration; /**< precision of each integration step */ + + /* He fudge parameters from recfast 1.4 */ + + int recfast_Heswitch; /**< recfast 1.4 parameter */ + double recfast_fudge_He; /**< recfast 1.4 parameter */ + + /* H fudge parameters from recfast 1.5 (Gaussian fits for extra H physics by Adam Moss) */ + + int recfast_Hswitch; /**< recfast 1.5 switching parameter */ + double recfast_fudge_H; /**< H fudge factor when recfast_Hswitch set to false (v1.4 fudging) */ + double recfast_delta_fudge_H; /**< correction to H fudge factor in v1.5 */ + double recfast_AGauss1; /**< Amplitude of 1st Gaussian */ + double recfast_AGauss2; /**< Amplitude of 2nd Gaussian */ + double recfast_zGauss1; /**< ln(1+z) of 1st Gaussian */ + double recfast_zGauss2; /**< ln(1+z) of 2nd Gaussian */ + double recfast_wGauss1; /**< Width of 1st Gaussian */ + double recfast_wGauss2; /**< Width of 2nd Gaussian */ + + /* triggers for switching approximations; ranges for doing it smoothly */ + + double recfast_z_He_1; /**< down to which redshift Helium fully ionized */ + double recfast_delta_z_He_1; /**< z range over which transition is smoothed */ + + double recfast_z_He_2; /**< down to which redshift first Helium recombination not complete */ + double recfast_delta_z_He_2; /**< z range over which transition is smoothed */ + + double recfast_z_He_3; /**< down to which redshift Helium singly ionized */ + double recfast_delta_z_He_3; /**< z range over which transition is smoothed */ + + double recfast_x_He0_trigger; /**< value below which recfast uses the full equation for Helium */ + double recfast_x_He0_trigger2; /**< a second threshold used in derivative routine */ + double recfast_x_He0_trigger_delta; /**< x_He range over which transition is smoothed */ + + double recfast_x_H0_trigger; /**< value below which recfast uses the full equation for Hydrogen */ + double recfast_x_H0_trigger2; /**< a second threshold used in derivative routine */ + double recfast_x_H0_trigger_delta; /**< x_H range over which transition is smoothed */ + + double recfast_H_frac; /**< governs time at which full equation of evolution for Tmat is used */ +/* @cond INCLUDE_WITH_DOXYGEN */ + FileName hyrec_Alpha_inf_file; + FileName hyrec_R_inf_file; + FileName hyrec_two_photon_tables_file; +/* @endcond */ + /* - for reionization */ + + double reionization_z_start_max; /**< maximum redshift at which reionization should start. If not, return an error. */ + double reionization_sampling; /**< control stepsize in z during reionization */ + double reionization_optical_depth_tol; /**< fractional error on optical_depth */ + double reionization_start_factor; /**< parameter for CAMB-like parametrization */ + + /* - general */ + + int thermo_rate_smoothing_radius; /**< plays a minor (almost aesthetic) role in the definition of the variation rate of thermodynamical quantities */ + + //@} + + /** @name - parameters related to the perturbation */ + + //@{ + + enum evolver_type evolver; /**< which type of evolver for integrating perturbations (Runge-Kutta? Stiff?...) */ + + double k_min_tau0; /**< number defining k_min for the computation of Cl's and P(k)'s (dimensionless): (k_min tau_0), usually chosen much smaller than one */ + + double k_max_tau0_over_l_max; /**< number defining k_max for the computation of Cl's (dimensionless): (k_max tau_0)/l_max, usually chosen around two */ + + double k_step_sub; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales inside sound horizon at decoupling */ + double k_step_super; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales above sound horizon at decoupling */ + double k_step_transition; /**< dimensionless number regulating the transition from 'sub' steps to 'super' steps. Decrease for more precision. */ + double k_step_super_reduction; /**< the step k_step_super is reduced by this amount in the k-->0 limit (below scale of Hubble and/or curvature radius) */ + + double k_per_decade_for_pk; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade outside the BAO region*/ + + double k_per_decade_for_bao; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade inside the BAO region (for finer sampling)*/ + + double k_bao_center; /**< in ln(k) space, the central value of the BAO region where sampling is finer is defined as k_rec times this number (recommended: 3, i.e. finest sampling near 3rd BAO peak) */ + + double k_bao_width; /**< in ln(k) space, width of the BAO region where sampling is finer: this number gives roughly the number of BAO oscillations well resolved on both sides of the central value (recommended: 4, i.e. finest sampling from before first up to 3+4=7th peak) */ + + double start_small_k_at_tau_c_over_tau_h; /**< largest wavelengths start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_largek_at_tau_c_over_tau_h equals this ratio. Decrease this value to start integrating the wavenumbers earlier in time. */ + + double start_large_k_at_tau_h_over_tau_k; /**< largest wavelengths start being sampled when mode is sufficiently outside Hubble scale. This is quantified in terms of the ratio of hubble time scale to wavenumber time scale, \f$ \tau_h/\tau_k \f$ which is roughly equal to (k*tau). Start when this ratio equals start_large_k_at_tau_k_over_tau_h. Decrease this value to start integrating the wavenumbers earlier in time. */ + + /** + * when to switch off tight-coupling approximation: first condition: + * \f$ \tau_c/\tau_H \f$ > tight_coupling_trigger_tau_c_over_tau_h. + * Decrease this value to switch off earlier in time. If this + * number is larger than start_sources_at_tau_c_over_tau_h, the code + * returns an error, because the source computation requires + * tight-coupling to be switched off. + */ + double tight_coupling_trigger_tau_c_over_tau_h; + + /** + * when to switch off tight-coupling approximation: + * second condition: \f$ \tau_c/\tau_k \equiv k \tau_c \f$ < + * tight_coupling_trigger_tau_c_over_tau_k. + * Decrease this value to switch off earlier in time. + */ + double tight_coupling_trigger_tau_c_over_tau_k; + + double start_sources_at_tau_c_over_tau_h; /**< sources start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_sources_at_tau_c_over_tau_h equals this ratio. Decrease this value to start sampling the sources earlier in time. */ + + int tight_coupling_approximation; /**< method for tight coupling approximation */ + + int l_max_g; /**< number of momenta in Boltzmann hierarchy for photon temperature (scalar), at least 4 */ + int l_max_pol_g; /**< number of momenta in Boltzmann hierarchy for photon polarization (scalar), at least 4 */ + int l_max_dr; /**< number of momenta in Boltzmann hierarchy for decay radiation, at least 4 */ + int l_max_ur; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ + int l_max_ncdm; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ + int l_max_g_ten; /**< number of momenta in Boltzmann hierarchy for photon temperature (tensor), at least 4 */ + int l_max_pol_g_ten; /**< number of momenta in Boltzmann hierarchy for photon polarization (tensor), at least 4 */ + + double curvature_ini; /**< initial condition for curvature for adiabatic */ + double entropy_ini; /**< initial condition for entropy perturbation for isocurvature */ + double gw_ini; /**< initial condition for tensor metric perturbation h */ + + /** + * default step \f$ d \tau \f$ in perturbation integration, in units of the timescale involved in the equations (usually, the min of \f$ 1/k \f$, \f$ 1/aH \f$, \f$ 1/\dot{\kappa} \f$) + */ + double perturb_integration_stepsize; + + /** + * default step \f$ d \tau \f$ for sampling the source function, in units of the timescale involved in the sources: \f$ (\dot{\kappa}- \ddot{\kappa}/\dot{\kappa})^{-1} \f$ + */ + double perturb_sampling_stepsize; + + /** + * control parameter for the precision of the perturbation integration + */ + double tol_perturb_integration; + + /** + * precision with which the code should determine (by bisection) the + * times at which sources start being sampled, and at which + * approximations must be switched on/off (units of Mpc) + */ + double tol_tau_approx; + + /** + * method for switching off photon perturbations + */ + int radiation_streaming_approximation; + + /** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and thtau, set + * shear and higher momenta to zero): + * first condition: \f$ k \tau \f$ > radiation_streaming_trigger_tau_h_over_tau_k + */ + double radiation_streaming_trigger_tau_over_tau_k; + + /** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and theta, set + * shear and higher momenta to zero): + * second condition: + */ + double radiation_streaming_trigger_tau_c_over_tau; + + int ur_fluid_approximation; /**< method for ultra relativistic fluid approximation */ + + /** + * when to switch off ur (massless neutrinos / ultra-relativistic + * relics) fluid approximation + */ + double ur_fluid_trigger_tau_over_tau_k; + + int ncdm_fluid_approximation; /**< method for non-cold dark matter fluid approximation */ + + /** + * when to switch off ncdm (massive neutrinos / non-cold + * relics) fluid approximation + */ + double ncdm_fluid_trigger_tau_over_tau_k; + + /** + * whether CMB source functions can be approximated as zero when + * visibility function g(tau) is tiny + */ + double neglect_CMB_sources_below_visibility; + + //@} + + /** @name - parameters related to the primordial spectra */ + + //@{ + + double k_per_decade_primordial; /**< logarithmic sampling for primordial spectra (number of points per decade in k space) */ + + double primordial_inflation_ratio_min; /**< for each k, start following wavenumber when aH = k/primordial_inflation_ratio_min */ + double primordial_inflation_ratio_max; /**< for each k, stop following wavenumber, at the latest, when aH = k/primordial_inflation_ratio_max */ + int primordial_inflation_phi_ini_maxit; /**< maximum number of iteration when searching a suitable initial field value phi_ini (value reached when no long-enough slow-roll period before the pivot scale) */ + double primordial_inflation_pt_stepsize; /**< controls the integration timestep for inflaton perturbations */ + double primordial_inflation_bg_stepsize; /**< controls the integration timestep for inflaton background */ + double primordial_inflation_tol_integration; /**< controls the precision of the ODE integration during inflation */ + double primordial_inflation_attractor_precision_pivot; /**< targeted precision when searching attractor solution near phi_pivot */ + double primordial_inflation_attractor_precision_initial; /**< targeted precision when searching attractor solution near phi_ini */ + int primordial_inflation_attractor_maxit; /**< maximum number of iteration when searching attractor solution */ + double primordial_inflation_tol_curvature; /**< for each k, stop following wavenumber, at the latest, when curvature perturbation R is stable up to to this tolerance */ + double primordial_inflation_aH_ini_target; /**< control the step size in the search for a suitable initial field value */ + double primordial_inflation_end_dphi; /**< first bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ + double primordial_inflation_end_logstep; /**< logarithmic step for updating the bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ + double primordial_inflation_small_epsilon; /**< value of slow-roll parameter epsilon used to define a field value phi_end close to the end of inflation (doesn't need to be exactly at the end): epsilon(phi_end)=small_epsilon (should be smaller than one) */ + double primordial_inflation_small_epsilon_tol; /**< tolerance in the search for phi_end */ + double primordial_inflation_extra_efolds; /**< a small number of efolds, irrelevant at the end, used in the search for the pivot scale (backward from the end of inflation) */ + + //@} + + /** @name - parameters related to the transfer function */ + + //@{ + + int l_linstep; /**< factor for logarithmic spacing of values of l over which bessel and transfer functions are sampled */ + + double l_logstep; /**< maximum spacing of values of l over which Bessel and transfer functions are sampled (so, spacing becomes linear instead of logarithmic at some point) */ + + /* parameters relevant for bessel functions */ + double hyper_x_min; /**< flat case: lower bound on the smallest value of x at which we sample \f$ \Phi_l^{\nu}(x)\f$ or \f$ j_l(x)\f$ */ + double hyper_sampling_flat; /**< flat case: number of sampled points x per approximate wavelength \f$ 2\pi \f$*/ + double hyper_sampling_curved_low_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ smaller than hyper_nu_sampling_step */ + double hyper_sampling_curved_high_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ greater than hyper_nu_sampling_step */ + double hyper_nu_sampling_step; /**< open/closed cases: value of nu at which sampling changes */ + double hyper_phi_min_abs; /**< small value of Bessel function used in calculation of first point x (\f$ \Phi_l^{\nu}(x) \f$ equals hyper_phi_min_abs) */ + double hyper_x_tol; /**< tolerance parameter used to determine first value of x */ + double hyper_flat_approximation_nu; /**< value of nu below which the flat approximation is used to compute Bessel function */ + + /* parameters relevant for transfer function */ + + double q_linstep; /**< asymptotic linear sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_rec) \f$ + (comoving angular diameter distance to + recombination) */ + + double q_logstep_spline; /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec})\f$ + (comoving angular diameter distance to + recombination) */ + + double q_logstep_open; /**< in open models, the value of + q_logstep_spline must be decreased + according to curvature. Increasing + this number will make the calculation + more accurate for large positive + Omega_k */ + + double q_logstep_trapzd; /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec}) \f$ + (comoving angular diameter distance to + recombination), in the case of small + q's in the closed case, for which one + must used trapezoidal integration + instead of spline (the number of q's + for which this is the case decreases + with curvature and vanishes in the + flat limit) */ + + double q_numstep_transition; /**< number of steps for the transition + from q_logstep_trapzd steps to + q_logstep_spline steps (transition + must be smooth for spline) */ + + double transfer_neglect_delta_k_S_t0; /**< for temperature source function T0 of scalar mode, range of k values (in 1/Mpc) taken into account in transfer function: for l < (k-delta_k)*tau0, ie for k > (l/tau0 + delta_k), the transfer function is set to zero */ + double transfer_neglect_delta_k_S_t1; /**< same for temperature source function T1 of scalar mode */ + double transfer_neglect_delta_k_S_t2; /**< same for temperature source function T2 of scalar mode */ + double transfer_neglect_delta_k_S_e; /**< same for polarization source function E of scalar mode */ + double transfer_neglect_delta_k_V_t1; /**< same for temperature source function T1 of vector mode */ + double transfer_neglect_delta_k_V_t2; /**< same for temperature source function T2 of vector mode */ + double transfer_neglect_delta_k_V_e; /**< same for polarization source function E of vector mode */ + double transfer_neglect_delta_k_V_b; /**< same for polarization source function B of vector mode */ + double transfer_neglect_delta_k_T_t2; /**< same for temperature source function T2 of tensor mode */ + double transfer_neglect_delta_k_T_e; /**< same for polarization source function E of tensor mode */ + double transfer_neglect_delta_k_T_b; /**< same for polarization source function B of tensor mode */ + + double transfer_neglect_late_source; /**< value of l below which the CMB source functions can be neglected at late time, excepted when there is a Late ISW contribution */ + + /** when to use the Limber approximation for project gravitational potential cl's */ + double l_switch_limber; + + /** when to use the Limber approximation for local number count contributions to cl's (relative to central redshift of each bin) */ + double l_switch_limber_for_nc_local_over_z; + + /** when to use the Limber approximation for number count contributions to cl's integrated along the line-of-sight (relative to central redshift of each bin) */ + double l_switch_limber_for_nc_los_over_z; + + /** in sigma units, where to cut gaussian selection functions */ + double selection_cut_at_sigma; + + /** controls sampling of integral over time when selection functions vary quicker than Bessel functions. Increase for better sampling. */ + double selection_sampling; + + /** controls sampling of integral over time when selection functions vary slower than Bessel functions. Increase for better sampling */ + double selection_sampling_bessel; + + /** controls sampling of integral over time when selection functions vary slower than Bessel functions. This parameter is specific to number counts contributions to Cl integrated along the line of sight. Increase for better sampling */ + double selection_sampling_bessel_los; + + /** controls how smooth are the edge of top-hat window function (<<1 for very sharp, 0.1 for sharp) */ + double selection_tophat_edge; + + //@} + + /** @name - parameters related to non-linear computations */ + + //@{ + + /** parameters relevant for HALOFIT computation */ + + double halofit_dz; /**< spacing in redshift space defining values of z + at which HALOFIT will be used. Intermediate + values will be obtained by + interpolation. Decrease for more precise + interpolations, at the expense of increasing + time spent in nonlinear_init() */ + + double halofit_min_k_nonlinear; /**< value of k in 1/Mpc above + which non-linear corrections will + be computed */ + + double halofit_sigma_precision; /**< a smaller value will lead to a + more precise halofit result at + the highest requested redshift, + at the expense of requiring a + larger k_max */ + + double halofit_min_k_max; /**< when halofit is used, k_max must be at + least equal to this value (otherwise + halofit could not find the scale of + non-linearity) */ + + double halofit_k_per_decade; /**< halofit needs to evalute integrals + (linear power spectrum times some + kernels). They are sampled using + this logarithmic step size. */ + + //@} + + /** @name - parameters related to lensing */ + + //@{ + + int accurate_lensing; /**< switch between Gauss-Legendre quadrature integration and simple quadrature on a subdomain of angles */ + int num_mu_minus_lmax; /**< difference between num_mu and l_max, increase for more precision */ + int delta_l_max; /**< difference between l_max in unlensed and lensed spectra */ + double tol_gauss_legendre; /**< tolerance with which quadrature points are found: must be very small for an accurate integration (if not entered manually, set automatically to match machine precision) */ + //@} + + /** @name - general precision parameters */ + + //@{ + + double smallest_allowed_variation; /**< machine-dependent, assigned automatically by the code */ + + //@} + + /** @name - zone for writing error messages */ + + //@{ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} + +}; + + + +#endif diff --git a/class_old/include/dei_rkck.h b/class_old/include/dei_rkck.h new file mode 100644 index 00000000..648bf87f --- /dev/null +++ b/class_old/include/dei_rkck.h @@ -0,0 +1,123 @@ +#ifndef __DEI__ +#define __DEI__ + +#include "common.h" + +struct generic_integrator_workspace +{ + + int n; + + double * yscal; + double * y; + double * dydx; + + double * yerr; + double * ytempo; + + double * ak2; + double * ak3; + double * ak4; + double * ak5; + double * ak6; + double * ytemp; + + double stepmin; + + /** + * zone for writing error messages + */ + ErrorMsg error_message; + +}; + +/**************************************************************/ + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int initialize_generic_integrator( + int n_dim, + struct generic_integrator_workspace * pgi + ); + + int cleanup_generic_integrator(struct generic_integrator_workspace * pgi); + + int generic_integrator(int (*derivs)(double x, + double y[], + double yprime[], + void * parameters_and_workspace, + ErrorMsg error_message), + double x1, + double x2, + double ystart[], + void * parameters_and_workspace_for_derivs, + double eps, + double hmin, + struct generic_integrator_workspace * pgi); + + int rkqs(double *x, + double htry, + double eps, + double *hdid, + double *hnext, + int (*derivs)(double, double [], double [], void *, ErrorMsg), + void * parameters_and_workspace_for_derivs, + struct generic_integrator_workspace * pgi); + + int rkck(double x, + double h, + int (*derivs)(double, double [], double [], void *, ErrorMsg), + void * parameters_and_workspace_for_derivs, + struct generic_integrator_workspace * pgi); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +#define dsign(a,b) ( (b) > 0. ? (a) : (-(a)) ) + +#define _MAXSTP_ 100000 +#define _TINY_ 1.0e-30 +#define _SAFETY_ 0.9 +#define _PGROW_ -0.2 +#define _PSHRNK_ -0.25 +#define _ERRCON_ 1.89e-4 + +#define _RKCK_a2_ 0.2 +#define _RKCK_a3_ 0.3 +#define _RKCK_a4_ 0.6 +#define _RKCK_a5_ 1.0 +#define _RKCK_a6_ 0.875 +#define _RKCK_b21_ 0.2 +#define _RKCK_b31_ 3.0/40.0 +#define _RKCK_b32_ 9.0/40.0 +#define _RKCK_b41_ 0.3 +#define _RKCK_b42_ -0.9 +#define _RKCK_b43_ 1.2 +#define _RKCK_b51_ -11.0/54.0 +#define _RKCK_b52_ 2.5 +#define _RKCK_b53_ -70.0/27.0 +#define _RKCK_b54_ 35.0/27.0 +#define _RKCK_b61_ 1631.0/55296.0 +#define _RKCK_b62_ 175.0/512.0 +#define _RKCK_b63_ 575.0/13824.0 +#define _RKCK_b64_ 44275.0/110592.0 +#define _RKCK_b65_ 253.0/4096.0 +#define _RKCK_c1_ 37.0/378.0 +#define _RKCK_c3_ 250.0/621.0 +#define _RKCK_c4_ 125.0/594.0 +#define _RKCK_c6_ 512.0/1771.0 +#define _RKCK_dc5_ -277.00/14336.0 +#define _RKCK_dc1_ (37.0/378.0-2825.0/27648.) +#define _RKCK_dc3_ (250.0/621.0-18575.0/48384.0) +#define _RKCK_dc4_ (125.0/594.0-13525.0/55296.0) +#define _RKCK_dc6_ (512.0/1771.0-0.25) + +#endif diff --git a/class_old/include/evolver_ndf15.h b/class_old/include/evolver_ndf15.h new file mode 100644 index 00000000..263187fa --- /dev/null +++ b/class_old/include/evolver_ndf15.h @@ -0,0 +1,125 @@ +#ifndef __EVO__ +#define __EVO__ +#include "common.h" +// #include "perturbations.h" +#include "sparse.h" +#define TINY 1e-50 +/**************************************************************/ + +struct jacobian{ +/*Stuff for normal method: */ + double **dfdy; + double *jacvec; /*Stores experience gained from subsequent calls */ + double **LU; + double *LUw; + int *luidx; + /*Sparse stuff:*/ + int use_sparse; + int sparse_stuff_initialized; + int max_nonzero; /*Maximal number of non-zero entries to be considered sparse */ + int repeated_pattern; + int trust_sparse; /* Number of times a pattern is repeated (actually included) before we trust it. */ + int has_grouping; + int has_pattern; + int new_jacobian; /* True if sp_ludcmp has not been run on the current jacobian. */ + int cnzmax; + int *col_group; /* Column grouping. Groups go from 0 to max_group*/ + int *col_wi; /* Workarray for column grouping*/ + int max_group; /*Number of columngroups -1 */ + sp_mat *spJ; /* Stores the matrix we want to decompose */ + double *xjac; /*Stores the values of the sparse jacobian. (Same pattern as spJ) */ + sp_num *Numerical; /*Stores the LU decomposition.*/ + int *Cp; /* Stores the column pointers of the spJ+spJ' sparsity pattern. */ + int *Ci; /* Stores the row indices of the spJ+spJ' sparsity pattern. */ +}; + +struct numjac_workspace{ + /* Allocate vectors and matrices: */ + double *yscale; + double *del; + double * Difmax; + double * absFdelRm; + double * absFvalue; + double * absFvalueRm; + double * Fscale; + double * ffdel; + double * yydel; + double * tmp; + + double **ydel_Fdel; + + int * logj; + int * Rowmax; +}; + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int initialize_jacobian(struct jacobian *jac, int neq, ErrorMsg error_message); + int uninitialize_jacobian(struct jacobian *jac); + int initialize_numjac_workspace(struct numjac_workspace * nj_ws,int neq, ErrorMsg error_message); + int uninitialize_numjac_workspace(struct numjac_workspace * nj_ws); + int calc_C(struct jacobian *jac); + int interp_from_dif(double tinterp,double tnew,double *ynew,double h,double **dif,int k, double *yinterp, + double *ypinterp, double *yppinterp, int* index, int neq, int output); + int new_linearisation(struct jacobian *jac,double hinvGak,int neq, ErrorMsg error_message); + int adjust_stepsize(double **dif, double abshdivabshlast, int neq,int k); + void eqvec(double *datavec,double *emptyvec, int n); + int lubksb(double **a, int n, int *indx, double b[]); + int ludcmp(double **a, int n, int *indx, double *d, double *vv); + int fzero_Newton(int (*func)(double *x, + int x_size, + void *param, + double *F, + ErrorMsg error_message), + double *x_inout, + double *dxdF, + int x_size, + double tolx, + double tolF, + void *param, + int *fevals, + ErrorMsg error_message); + + int numjac(int (*derivs)(double x,double * y,double * dy,void * parameters_and_workspace,ErrorMsg error_message), + double t, double *y, double *fval, struct jacobian *jac, struct numjac_workspace *nj_ws, + double thresh, int neq, int *nfe, + void * parameters_and_workspace_for_derivs, ErrorMsg error_message); + + +int evolver_ndf15( + int (*derivs)(double x,double * y,double * dy, + void * parameters_and_workspace, ErrorMsg error_message), + double x_ini, + double x_final, + double * y_inout, + int * used_in_output, + int neq, + void * parameters_and_workspace_for_derivs, + double rtol, + double minimum_variation, + int (*timescale_and_approximation)(double x, + void * parameters_and_workspace, + double * timescales, + ErrorMsg error_message), + double timestep_over_timescale, + double * t_vec, + int t_res, + int (*output)(double x,double y[],double dy[],int index_x,void * parameters_and_workspace, + ErrorMsg error_message), + int (*print_variables)(double x, double y[], double dy[], void *parameters_and_workspace, + ErrorMsg error_message), + ErrorMsg error_message); + + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +#endif diff --git a/class_old/include/evolver_rkck.h b/class_old/include/evolver_rkck.h new file mode 100644 index 00000000..9da76c0f --- /dev/null +++ b/class_old/include/evolver_rkck.h @@ -0,0 +1,54 @@ +#ifndef __EVO__ +#define __EVO__ + +#include "dei_rkck.h" + +/**************************************************************/ + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int evolver_rk(int (*derivs)(double x, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message), + double x_ini, + double x_end, + double * y, + int * used_in_output, + int y_size, + void * parameters_and_workspace_for_derivs, + double tolerance, + double minimum_variation, + int (*evaluate_timescale)(double x, + void * parameters_and_workspace, + double * timescale, + ErrorMsg error_message), + double timestep_over_timescale, + double * x_sampling, + int x_size, + int (*output)(double x, + double y[], + double dy[], + int index_x, + void * parameters_and_workspace, + ErrorMsg error_message), + int (*print_variables)(double x, + double y[], + double dy[], + void * parameters_and_workspace, + ErrorMsg error_message), + ErrorMsg error_message); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +#endif diff --git a/class_old/include/growTable.h b/class_old/include/growTable.h new file mode 100644 index 00000000..0f73e8b7 --- /dev/null +++ b/class_old/include/growTable.h @@ -0,0 +1,47 @@ +/*** + * A table that grows automatically. + */ + +#ifndef __GROWTABLE__ +#define __GROWTABLE__ + +#include "common.h" + +#define _GT_INITSIZE_ 4096 /**< Init size of a growTable (in bytes)*/ +#define _GT_FACTOR_ 2 /**< inflating factor when current max size is reached */ +#define _GT_END_ -1 /**< flag meaning the end of the current data in the growTable */ + +/** + * growTable structure. + */ +typedef struct { + void* buffer; /**< stack of data */ + long sz; /**< total size */ + long csz; /**< real size */ + int freeze; /**< if set to _TRUE_ no data can be added */ + + ErrorMsg error_message; /**< error message slot */ +} growTable; + +/** Boilerplate for C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +int gt_init(growTable*); + +int gt_add(growTable*, long idx, void* data, long sz); +int gt_retrieve(growTable *,long idx, long sz, void* data); +int gt_retrieveAll(growTable *,void* data); + +int gt_getSize(growTable*, long *idx); + +int gt_getPtr(growTable*, void** ptr); + +int gt_free(growTable*); + +/** Boilerplate for C++ */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/class_old/include/hermite3_interpolation_csource.h b/class_old/include/hermite3_interpolation_csource.h new file mode 100644 index 00000000..0cfe0437 --- /dev/null +++ b/class_old/include/hermite3_interpolation_csource.h @@ -0,0 +1,166 @@ +/** Hermite interpolation of order 3 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +int l = pHIS->l[lnum]; +#if defined (HERMITE_DO_PHI)|| defined (HERMITE_DO_D2PHI) +double ym=0; +#endif +double yp=0, dyp=0, x; +double z[2]={0.,0.}; +#ifdef HERMITE_DO_PHI +double a[3]={0.,0.}; +#endif +#ifdef HERMITE_DO_DPHI +double b[3]={0.,0.}; +#endif +#ifdef HERMITE_DO_D2PHI +double c[3]={0.,0.}; +double d2ym = 0, d3yp=0; +double cotKm=0,sinKm=0; +double sinKm2; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double dym=0; +double d2yp=0; +double cotKp=0,sinKp=0; +double sinKp2; +double *sinK = pHIS->sinK; +double *cotK = pHIS->cotK; +int K = pHIS->K; +double lxlp1 = l*(l+1.0); +double beta = pHIS->beta; +double beta2 = beta*beta; +#endif +double *xvec; +double xmin, xmax, deltax; +double left_border, right_border, next_border; +int j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +deltax = pHIS->delta_x; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; + +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(l, (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. +#if defined (HERMITE_DO_PHI) || defined (HERMITE_DO_D2PHI) + ym = yp; +#endif +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + dym = dyp; +#endif +#ifdef HERMITE_DO_D2PHI + d2ym = d2yp; + sinKm = sinKp; + cotKm = cotKp; +#endif + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#endif +#ifdef HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif + +#ifdef HERMITE_DO_PHI + a[0] = -dyp*deltax-2*ym+2*yp; + a[1] = dyp*deltax+ym-yp; +#endif +#ifdef HERMITE_DO_DPHI + b[0] = -d2yp*deltax-2*dym+2*dyp; + b[1] = d2yp*deltax+dym-dyp; +#endif +#ifdef HERMITE_DO_D2PHI + c[0] = -d3yp*deltax-2*d2ym+2*d2yp; + c[1] = d3yp*deltax+d2ym-d2yp; +#endif + } + //Evaluate polynomial: + z[0] = (x-left_border)/deltax; + z[1] = z[0]*z[0]; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a[0]*z[0]+a[1]*z[1])*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b[0]*z[0]+b[1]*z[1])*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c[0]*z[0]+c[1]*z[1])*phisign; +#endif + } + diff --git a/class_old/include/hermite4_interpolation_csource.h b/class_old/include/hermite4_interpolation_csource.h new file mode 100644 index 00000000..21fc2f8f --- /dev/null +++ b/class_old/include/hermite4_interpolation_csource.h @@ -0,0 +1,163 @@ +/** Hermite interpolation of order 4 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +int l = pHIS->l[lnum]; +double ym=0, yp=0, dym=0, dyp=0, x; +double z[3]={0.,0.,0.}; +#ifdef HERMITE_DO_PHI +double a[3]={0.,0.,0.}; +#endif +#ifdef HERMITE_DO_DPHI +double b[3]={0.,0.,0.}; +#endif +#ifdef HERMITE_DO_D2PHI +double c[3]={0.,0.,0.}; +double d3ym=0, d3yp=0; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double *sinK = pHIS->sinK; +double *cotK = pHIS->cotK; +double cotKm=0,cotKp=0,sinKm=0,sinKp=0; +double sinKm2, sinKp2; +double d2ym = 0, d2yp=0; +int K = pHIS->K; +double lxlp1 = l*(l+1.0); +double beta = pHIS->beta; +double beta2 = beta*beta; +#endif +double *xvec; +double xmin, xmax, deltax; +double left_border, right_border, next_border; +int j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +deltax = pHIS->delta_x; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; + +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(l, (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. + ym = yp; + dym = dyp; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d2ym = d2yp; + sinKm = sinKp; + cotKm = cotKp; +#endif +#ifdef HERMITE_DO_D2PHI + d3ym = d3yp; +#endif + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#endif +#ifdef HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif + +#ifdef HERMITE_DO_PHI + a[0] = dym*deltax; + a[1] = -2*dym*deltax-dyp*deltax-3*ym+3*yp; + a[2] = dym*deltax+dyp*deltax+2*ym-2*yp; +#endif +#ifdef HERMITE_DO_DPHI + b[0] = d2ym*deltax; + b[1] = -2*d2ym*deltax-d2yp*deltax-3*dym+3*dyp; + b[2] = d2ym*deltax+d2yp*deltax+2*dym-2*dyp; +#endif +#ifdef HERMITE_DO_D2PHI + c[0] = d3ym*deltax; + c[1] = -2*d3ym*deltax-d3yp*deltax-3*d2ym+3*d2yp; + c[2] = d3ym*deltax+d3yp*deltax+2*d2ym-2*d2yp; +#endif + } + //Evaluate polynomial: + z[0] = (x-left_border)/deltax; + z[1] = z[0]*z[0]; + z[2] = z[1]*z[0]; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a[0]*z[0]+a[1]*z[1]+a[2]*z[2])*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b[0]*z[0]+b[1]*z[1]+b[2]*z[2])*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c[0]*z[0]+c[1]*z[1]+c[2]*z[2])*phisign; +#endif + } + diff --git a/class_old/include/hermite6_interpolation_csource.h b/class_old/include/hermite6_interpolation_csource.h new file mode 100644 index 00000000..6920a6cb --- /dev/null +++ b/class_old/include/hermite6_interpolation_csource.h @@ -0,0 +1,176 @@ +/** Hermite interpolation of order 6 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5; +double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2; +#ifdef HERMITE_DO_PHI +double a1=0, a2=0, a3=0, a4=0, a5=0; +#endif +#ifdef HERMITE_DO_DPHI +double b1=0, b2=0, b3=0, b4=0, b5=0; +#endif +#ifdef HERMITE_DO_D2PHI +double c1=0, c2=0, c3=0, c4=0, c5=0; +double d4ym=0, d4yp=0; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double d3ym = 0, d3yp=0; +#endif +double beta, beta2, *xvec, *sinK, *cotK; +double xmin, xmax, deltax, deltax2, lxlp1; +double left_border, right_border, next_border; +int K, l, j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +sinK = pHIS->sinK; +cotK = pHIS->cotK; +beta = pHIS->beta; +beta2 = beta*beta; +deltax = pHIS->delta_x; +deltax2 = deltax*deltax; +K = pHIS->K; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; +l = pHIS->l[lnum]; +lxlp1 = l*(l+1.0); +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(pHIS->l[lnum], (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. + ym = yp; + dym = dyp; + d2ym = d2yp; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d3ym = d3yp; +#endif +#ifdef HERMITE_DO_D2PHI + d4ym = d4yp; +#endif + sinKm = sinKp; + cotKm = cotKp; + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif +#ifdef HERMITE_DO_D2PHI + d4yp = -2*cotKp*d3yp + d2yp*(K-beta2+(4+lxlp1)/sinKp2)+ + dyp*(-4*(1+lxlp1)*cotKp/sinKp2)+ + yp*(2*lxlp1/sinKp2*(2*cotKp*cotKp+1/sinKp2)); +#endif + +#ifdef HERMITE_DO_PHI + a1 = dym*deltax; + a2 = 0.5*d2ym*deltax2; + a3 = (-1.5*d2ym+0.5*d2yp)*deltax2-(6*dym+4*dyp)*deltax-10*(ym-yp); + a4 = (1.5*d2ym-d2yp)*deltax2+(8*dym+7*dyp)*deltax+15*(ym-yp); + a5 = (-0.5*d2ym+0.5*d2yp)*deltax2-3*(dym+dyp)*deltax-6*(ym-yp); +#endif +#ifdef HERMITE_DO_DPHI + b1 = d2ym*deltax; + b2 = 0.5*d3ym*deltax2; + b3 = (-1.5*d3ym+0.5*d3yp)*deltax2-(6*d2ym+4*d2yp)*deltax-10*(dym-dyp); + b4 = (1.5*d3ym-d3yp)*deltax2+(8*d2ym+7*d2yp)*deltax+15*(dym-dyp); + b5 = (-0.5*d3ym+0.5*d3yp)*deltax2-3*(d2ym+d2yp)*deltax-6*(dym-dyp); +#endif +#ifdef HERMITE_DO_D2PHI + c1 = d3ym*deltax; + c2 = 0.5*d4ym*deltax2; + c3 = (-1.5*d4ym+0.5*d4yp)*deltax2-(6*d3ym+4*d3yp)*deltax-10*(d2ym-d2yp); + c4 = (1.5*d4ym-d4yp)*deltax2+(8*d3ym+7*d3yp)*deltax+15*(d2ym-d2yp); + c5 = (-0.5*d4ym+0.5*d4yp)*deltax2-3*(d3ym+d3yp)*deltax-6*(d2ym-d2yp); +#endif + } + //Evaluate polynomial: + z = (x-left_border)/deltax; + z2 = z*z; + z3 = z2*z; + z4 = z2*z2; + z5 = z2*z3; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a1*z+a2*z2+a3*z3+a4*z4+a5*z5)*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b1*z+b2*z2+b3*z3+b4*z4+b5*z5)*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c1*z+c2*z2+c3*z3+c4*z4+c5*z5)*phisign; +#endif + } + diff --git a/class_old/include/hyperspherical.h b/class_old/include/hyperspherical.h new file mode 100644 index 00000000..140c4c46 --- /dev/null +++ b/class_old/include/hyperspherical.h @@ -0,0 +1,192 @@ +/** + * definitions for module hyperspherical.c + */ + +#ifndef __HYPERSPHERICAL__ +#define __HYPERSPHERICAL__ + +#include "common.h" +#define _HYPER_OVERFLOW_ 1e200 +#define _ONE_OVER_HYPER_OVERFLOW_ 1e-200 +#define _HYPER_SAFETY_ 1e-5 +#define _TRIG_PRECISSION_ 1e-7 +#define _HYPER_BLOCK_ 8 +#define _HYPER_CHUNK_ 16 +#define _TWO_OVER_THREE_ 0.666666666666666666666666666667e0 +#define _HIS_BYTE_ALIGNMENT_ 16 + +typedef struct HypersphericalInterpolationStructure{ + int K; //Sign of the curvature, (0,-1,1) + double beta; + double delta_x; //x-spacing. (xvec is uniformly spaced) + int trig_order; //Order of the interpolation formula for SinK and CosK. + int l_size; //Number of l values + int *l; //Vector of l values stored + double * chi_at_phimin; // vector x_min[index-l] below which neglect Bessels + int x_size; //Number of x-values + double *x; //Pointer to x-values + double *sinK; //Vector of sin_K(xvec) + double *cotK; //Vector of cot_K(xvec) + double *phi; //array of size nl*nx. [y_{l1}(x1) t_{l1}(x2)...] + double *dphi; //Same as phivec, but containing derivatives. +} HyperInterpStruct; + +struct WKB_parameters{ + int K; + int l; + double beta; + double phiminabs; +}; + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + int hyperspherical_HIS_create(int K, + double beta, + int nl, + int *lvec, + double xmin, + double xmax, + double sampling, + int l_WKB, + double phiminabs, + HyperInterpStruct *pHIS, + ErrorMsg error_message); + + int hyperspherical_HIS_free(HyperInterpStruct *pHIS, ErrorMsg error_message); + int hyperspherical_forwards_recurrence(int K, + int lmax, + double beta, + double x, + double sinK, + double cotK, + double *sqrtK, + double *one_over_sqrtK, + double *PhiL); +int hyperspherical_forwards_recurrence_chunk(int K, + int lmax, + double beta, + double * __restrict__ x, + double * __restrict__ sinK, + double * __restrict__ cotK, + int chunk, + double * __restrict__ sqrtK, + double * __restrict__ one_over_sqrtK, + double * __restrict__ PhiL); + int hyperspherical_backwards_recurrence(int K, + int lmax, + double beta, + double x, + double sinK, + double cotK, + double *sqrtK, + double *one_over_sqrtK, + double *PhiL); + + int hyperspherical_backwards_recurrence_chunk(int K, + int lmax, + double beta, + double * __restrict__ x, + double * __restrict__ sinK, + double * __restrict__ cotK, + int chunk, + double * __restrict__ sqrtK, + double * __restrict__ one_over_sqrtK, + double * __restrict__ PhiL); + int hyperspherical_get_xmin(HyperInterpStruct *pHIS, + double xtol, + double phiminabs, + double *xmin); + + int hyperspherical_WKB(int K,int l,double beta,double y, double *Phi); + int hyperspherical_WKB_vec(int l, + double beta, + double *sinK_vec, + int size_sinK_vec, + double *Phi); + int ClosedModY(int l, int beta, double *y, int * phisign, int * dphisign); + int get_CF1(int K,int l,double beta, double cotK, double *CF, int *isign); + int CF1_from_Gegenbauer(int l, int beta, double sinK, double cotK, double *CF); + double airy_cheb_approx(double z); + double coef1(double z); + double coef2(double z); + double coef3(double z); + double coef4(double z); + double cheb(double x, int n, const double A[]); + double get_value_at_small_phi(int K,int l,double beta,double Phi); + + double PhiWKB_minus_phiminabs(double x, void *param); + + int hyperspherical_get_xmin_from_Airy(int K, + int l, + double beta, + double xtol, + double phiminabs, + double *xmin, + int *fevals + ); + + int fzero_ridder(double (*func)(double, void *), + double x1, + double x2, + double xtol, + void *param, + double *Fx1, + double *Fx2, + double *xzero, + int *fevals + ); + + int HypersphericalExplicit(int K,int l, double beta,double x, double *Phi); + + int hyperspherical_get_xmin_from_approx(int K, + int l, + double nu, + double ignore1, + double phiminabs, + double *xmin, + int *ignore2); + + size_t hyperspherical_HIS_size(int nl, int nx); + int hyperspherical_update_pointers(HyperInterpStruct *pHIS_local, + void * HIS_storage_shared); + + int hyperspherical_Hermite_interpolation_vector(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double *xinterp, + double *Phi, + double *dPhi, + double *d2Phi); + + int hyperspherical_Hermite3_interpolation_vector_Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_dPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_dPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_dPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *dPhi,double *d2Phi, ErrorMsg error_message); + int hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,int nxi,int lnum,double *xinterp,double *Phi,double *dPhi,double *d2Phi, ErrorMsg error_message); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/class_old/include/input.h b/class_old/include/input.h new file mode 100644 index 00000000..74bb1c07 --- /dev/null +++ b/class_old/include/input.h @@ -0,0 +1,287 @@ +/** @file input.h Documented includes for input module */ + +#ifndef __INPUT__ +#define __INPUT__ + +#include "common.h" +#include "parser.h" +#include "quadrature.h" +#include "background.h" +#include "thermodynamics.h" +#include "perturbations.h" +#include "transfer.h" +#include "primordial.h" +#include "spectra.h" +#include "nonlinear.h" +#include "lensing.h" +#include "output.h" + +/* macro for reading parameter values with routines from the parser */ +#define class_read_double(name,destination) \ + do { \ + class_call(parser_read_double(pfc,name,¶m1,&flag1,errmsg), \ + errmsg, \ + errmsg); \ + if (flag1 == _TRUE_) \ + destination = param1; \ + } while(0); + + +#define class_read_int(name,destination) \ + do { \ + class_call(parser_read_int(pfc,name,&int1,&flag1,errmsg), \ + errmsg, \ + errmsg); \ + if (flag1 == _TRUE_) \ + destination = int1; \ + } while(0); + +#define class_read_string(name,destination) \ + do { \ + class_call(parser_read_string(pfc,name,&string1,&flag1,errmsg), \ + errmsg, \ + errmsg); \ + if (flag1 == _TRUE_) \ + strcpy(destination,string1); \ + } while(0); + +#define class_read_double_one_of_two(name1,name2,destination) \ + do { \ + class_call(parser_read_double(pfc,name1,¶m1,&flag1,errmsg), \ + errmsg, \ + errmsg); \ + class_call(parser_read_double(pfc,name2,¶m2,&flag2,errmsg), \ + errmsg, \ + errmsg); \ + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), \ + errmsg, \ + "In input file, you can only enter one of %s, %s, choose one", \ + name1,name2); \ + if (flag1 == _TRUE_) \ + destination = param1; \ + if (flag2 == _TRUE_) \ + destination = param2; \ + } while(0); + +#define class_at_least_two_of_three(a,b,c) \ + ((a == _TRUE_) && (b == _TRUE_)) || \ + ((a == _TRUE_) && (c == _TRUE_)) || \ + ((b == _TRUE_) && (c == _TRUE_)) + +#define class_none_of_three(a,b,c) \ + (a == _FALSE_) && (b == _FALSE_) && (c == _FALSE_) + +/* macro for reading parameter values with routines from the parser */ +#define class_read_list_of_doubles_or_default(name,destination,default,siz) \ + do { \ + class_call(parser_read_list_of_doubles(pfc,name, \ + &entries_read,&(destination),&flag1,errmsg), \ + errmsg, \ + errmsg); \ + if (flag1 == _TRUE_){ \ + class_test(entries_read != siz,errmsg, \ + "Number of entries in %s, %d, does not match expected number, %d.", \ + name,entries_read,siz); \ + }else{ \ + class_alloc(destination,siz*sizeof(double),errmsg); \ + for(n=0; nlt_size + index_lt] */ + + double * ddcl_lens; /**< second derivatives for interpolation */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short lensing_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int lensing_cl_at_l( + struct lensing * ple, + int l, + double * cl_lensed + ); + + int lensing_init( + struct precision * ppr, + struct perturbs * ppt, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple + ); + + int lensing_free( + struct lensing * ple + ); + + int lensing_indices( + struct precision * ppr, + struct spectra * psp, + struct lensing * ple + ); + + int lensing_lensed_cl_tt( + double *ksi, + double **d00, + double *w8, + int nmu, + struct lensing * ple + ); + + int lensing_lensed_cl_te( + double *ksiX, + double **d20, + double *w8, + int nmu, + struct lensing * ple + ); + + int lensing_lensed_cl_ee_bb( + double *ksip, + double *ksim, + double **d22, + double **d2m2, + double *w8, + int nmu, + struct lensing * ple + ); + int lensing_addback_cl_tt( + struct lensing *ple, + double *cl_tt + ); + + int lensing_addback_cl_te( + struct lensing *ple, + double *cl_te + ); + + int lensing_addback_cl_ee_bb( + struct lensing *ple, + double *cl_ee, + double *cl_bb + ); + + + int lensing_X000( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X000 + ); + + int lensing_Xp000( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** Xp000 + ); + + int lensing_X220( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X220 + ); + + int lensing_X022( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X022 + ); + + int lensing_Xp022( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** Xp022 + ); + + int lensing_X121( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X121 + ); + + int lensing_X132( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X132 + ); + + int lensing_X242( + double * mu, + int num_mu, + int lmax, + double * sigma2, + double ** X242 + ); + + int lensing_d00( + double * mu, + int num_mu, + int lmax, + double ** d00 + ); + + int lensing_d11( + double * mu, + int num_mu, + int lmax, + double ** d11 + ); + + int lensing_d1m1( + double * mu, + int num_mu, + int lmax, + double ** d1m1 + ); + + int lensing_d2m2( + double * mu, + int num_mu, + int lmax, + double ** d2m2 + ); + + int lensing_d22( + double * mu, + int num_mu, + int lmax, + double ** d22 + ); + + int lensing_d20( + double * mu, + int num_mu, + int lmax, + double ** d20 + ); + + int lensing_d31( + double * mu, + int num_mu, + int lmax, + double ** d3m1 + ); + + int lensing_d3m1( + double * mu, + int num_mu, + int lmax, + double ** d3m1 + ); + + int lensing_d3m3( + double * mu, + int num_mu, + int lmax, + double ** d3m3 + ); + + int lensing_d40( + double * mu, + int num_mu, + int lmax, + double ** d40 + ); + + int lensing_d4m2( + double * mu, + int num_mu, + int lmax, + double ** d4m2 + ); + + int lensing_d4m4( + double * mu, + int num_mu, + int lmax, + double ** d4m4 + ); + +#ifdef __cplusplus +} +#endif + +#endif +/* @endcond */ \ No newline at end of file diff --git a/class_old/include/nonlinear.h b/class_old/include/nonlinear.h new file mode 100644 index 00000000..aabcb81d --- /dev/null +++ b/class_old/include/nonlinear.h @@ -0,0 +1,118 @@ +/** @file nonlinear.h Documented includes for trg module */ + +#include "primordial.h" + +#ifndef __NONLINEAR__ +#define __NONLINEAR__ + +#define _M_EV_TOO_BIG_FOR_HALOFIT_ 10. /**< above which value of non-CDM mass (in eV) do we stop trusting halofit? */ + +enum non_linear_method {nl_none,nl_halofit}; + +/** + * Structure containing all information on non-linear spectra. + * + * Once initialized by nonlinear_init(), contains a table for all two points correlation functions + * and for all the ai,bj functions (containing the three points correlation functions), for each + * time and wave-number. + */ + +struct nonlinear { + + /** @name - input parameters initialized by user in input module + (all other quantities are computed in this module, given these + parameters and the content of the 'precision', 'background', + 'thermo', 'primordial' and 'spectra' structures) */ + + //@{ + + enum non_linear_method method; /**< method for computing non-linear corrections (none, Halogit, etc.) */ + + //@} + + /** @name - table non-linear corrections for matter density, sqrt(P_NL(k,z)/P_NL(k,z)) */ + + //@{ + + int k_size; /**< k_size = total number of k values */ + double * k; /**< k[index_k] = list of k values */ + int tau_size; /**< tau_size = number of values */ + double * tau; /**< tau[index_tau] = list of time values */ + + double * nl_corr_density; /**< nl_corr_density[index_tau * ppt->k_size + index_k] */ + double * k_nl; /**< wavenumber at which non-linear corrections become important, defined differently by different non_linear_method's */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short nonlinear_verbose; /**< amount of information written in standard output */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/********************************************************************************/ + +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int nonlinear_k_nl_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * k_nl + ); + + int nonlinear_init( + struct precision *ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl + ); + + int nonlinear_free( + struct nonlinear *pnl + ); + + int nonlinear_pk_l(struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_tau, + double *pk_l, + double *lnk, + double *lnpk, + double *ddlnpk); + + int nonlinear_halofit( + struct precision *ppr, + struct background *pba, + struct primordial *ppm, + struct nonlinear *pnl, + double tau, + double *pk_l, + double *lnk, + double *lnpk, + double *ddlnpk, + double *pk_nl, + double *k_nl + ); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +#endif +/* @endcond */ diff --git a/class_old/include/output.h b/class_old/include/output.h new file mode 100644 index 00000000..80e9cc74 --- /dev/null +++ b/class_old/include/output.h @@ -0,0 +1,202 @@ +/** @file output.h Documented includes for output module */ + +#ifndef __OUTPUT__ +#define __OUTPUT__ + +#include "common.h" +#include "lensing.h" + +/** + * Maximum number of values of redshift at which the spectra will be + * written in output files + */ + +#define _Z_PK_NUM_MAX_ 100 + +/** + * Structure containing various informations on the output format, + * all of them initialized by user in input module. + * + */ + +struct output { + + //@{ + + FileName root; /**< root for all file names */ + + //@} + + /** @name - number and value(s) of redshift at which P(k,z) and T_i(k,z) should be written */ + + //@{ + + int z_pk_num; /**< number of redshift at which P(k,z) and T_i(k,z) should be written */ + double z_pk[_Z_PK_NUM_MAX_]; /**< value(s) of redshift at which P(k,z) and T_i(k,z) should be written */ + + //@} + + /** @name - extra information on output */ + + //@{ + + short write_header; /**< flag stating whether we should write a header in output files */ + + enum file_format output_format; /**< which format for output files (definitions, order of columns, etc.) */ + + short write_background; /**< flag for outputing background evolution in file */ + short write_thermodynamics; /**< flag for outputing thermodynamical evolution in file */ + short write_perturbations; /**< flag for outputing perturbations of selected wavenumber(s) in file(s) */ + short write_primordial; /**< flag for outputing scalar/tensor primordial spectra in files */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short output_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int output_total_cl_at_l( + struct spectra * psp, + struct lensing * ple, + struct output * pop, + int l, + double * cl + ); + + int output_init( + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct primordial * ppm, + struct transfers * ptr, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop + ); + + int output_cl( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct lensing * ple, + struct output * pop + ); + + int output_pk( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ); + + int output_pk_nl( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ); + + int output_tk( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ); + + int output_background( + struct background * pba, + struct output * pop + ); + + int output_thermodynamics( + struct background * pba, + struct thermo * pth, + struct output * pop + ); + + int output_perturbations( + struct background * pba, + struct perturbs * ppt, + struct output * pop + ); + + int output_primordial( + struct perturbs * ppt, + struct primordial * ppm, + struct output * pop + ); + + int output_print_data(FILE *out, + char titles[_MAXTITLESTRINGLENGTH_], + double *dataptr, + int tau_size); + int output_open_cl_file( + struct spectra * psp, + struct output * pop, + FILE ** clfile, + FileName filename, + char * first_line, + int lmax + ); + + int output_one_line_of_cl( + struct background * pba, + struct spectra * psp, + struct output * pop, + FILE * clfile, + double l, + double * cl, + int ct_size + ); + + int output_open_pk_file( + struct background * pba, + struct spectra * psp, + struct output * pop, + FILE ** pkfile, + FileName filename, + char * first_line, + double z + ); + + int output_one_line_of_pk( + FILE * tkfile, + double one_k, + double one_pk + ); + + int output_open_pk_nl_file( + struct background * pba, + struct nonlinear * pnl, + struct output * pop, + FILE ** pkfile, + FileName filename, + char * first_line, + double z, + int k_size + ); + + +#ifdef __cplusplus +} +#endif + +#endif +/* @endcond */ diff --git a/class_old/include/parser.h b/class_old/include/parser.h new file mode 100644 index 00000000..0a7da143 --- /dev/null +++ b/class_old/include/parser.h @@ -0,0 +1,125 @@ +#ifndef __PARSER__ +#define __PARSER__ + +#include "common.h" + +#define _LINE_LENGTH_MAX_ 1024 /**< size of the string read in each line of the file (extra characters not taken into account) */ +#define _ARGUMENT_LENGTH_MAX_ 1024 /**< maximum size of each argument (name or value), including the final null character */ + +typedef char FileArg[_ARGUMENT_LENGTH_MAX_]; + +/* after reading a given file, all relevant information stored in this structure, in view of being processed later*/ +struct file_content { + char * filename; + int size; + FileArg * name; /**< list of (size) names */ + FileArg * value; /**< list of (size) values */ + short * read; /**< set to _TRUE_ if this parameter is effectively read */ +}; + +/**************************************************************/ + +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + +int parser_read_file( + char * filename, + struct file_content * pfc, + ErrorMsg errmsg + ); + +int parser_init( + struct file_content * pfc, + int size, + char * filename, + ErrorMsg errmsg + ); + +int parser_free( + struct file_content * pfc + ); + +int parser_read_line( + char * line, + int * is_data, + char * name, + char * value, + ErrorMsg errmsg + ); + +int parser_read_int( + struct file_content * pfc, + char * name, + int * value, + int * found, + ErrorMsg errmsg + ); + +int parser_read_double( + struct file_content * pfc, + char * name, + double * value, + int * found, + ErrorMsg errmsg + ); + + int parser_read_double_and_position( + struct file_content * pfc, + char * name, + double * value, + int * position, + int * found, + ErrorMsg errmsg + ); + +int parser_read_string( + struct file_content * pfc, + char * name, + FileArg * value, + int * found, + ErrorMsg errmsg + ); + +int parser_read_list_of_doubles( + struct file_content * pfc, + char * name, + int * size, + double ** pointer_to_list, + int * found, + ErrorMsg errmsg + ); + +int parser_read_list_of_integers( + struct file_content * pfc, + char * name, + int * size, + int ** pointer_to_list, + int * found, + ErrorMsg errmsg + ); + +int parser_read_list_of_strings( + struct file_content * pfc, + char * name, + int * size, + char ** pointer_to_list, + int * found, + ErrorMsg errmsg + ); + +int parser_cat( + struct file_content * pfc1, + struct file_content * pfc2, + struct file_content * pfc3, + ErrorMsg errmsg + ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/class_old/include/perturbations.h b/class_old/include/perturbations.h new file mode 100644 index 00000000..8a60b8ab --- /dev/null +++ b/class_old/include/perturbations.h @@ -0,0 +1,799 @@ +/** @file perturbations.h Documented includes for perturbation module */ + +#ifndef __PERTURBATIONS__ +#define __PERTURBATIONS__ + +#include "thermodynamics.h" +#include "evolver_ndf15.h" +#include "evolver_rkck.h" + +#define _scalars_ ((ppt->has_scalars == _TRUE_) && (index_md == ppt->index_md_scalars)) +#define _vectors_ ((ppt->has_vectors == _TRUE_) && (index_md == ppt->index_md_vectors)) +#define _tensors_ ((ppt->has_tensors == _TRUE_) && (index_md == ppt->index_md_tensors)) + +#define _set_source_(index) ppt->sources[index_md][index_ic * ppt->tp_size[index_md] + index][index_tau * ppt->k_size[index_md] + index_k] + +/** + * flags for various approximation schemes + * (tca = tight-coupling approximation, + * rsa = radiation streaming approximation, + * ufa = massless neutrinos / ultra-relativistic relics fluid approximation) + * + * CAUTION: must be listed below in chronological order, and cannot be + * reversible. When integrating equations for a given mode, it is only + * possible to switch from left to right in the lists below. + */ + +//@{ + +enum tca_flags {tca_on, tca_off}; +enum rsa_flags {rsa_off, rsa_on}; +enum ufa_flags {ufa_off, ufa_on}; +enum ncdmfa_flags {ncdmfa_off, ncdmfa_on}; + +//@} + +/** + * labels for the way in which each approximation scheme is implemented + */ + +//@{ + +enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS}; +enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none}; +enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none}; +enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none}; +enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact}; + +//@} + +/** + * List of coded gauges. More gauges can in principle be defined. + */ + +//@{ + +enum possible_gauges { + newtonian, /**< newtonian (or longitudinal) gauge */ + synchronous /**< synchronous gauge with \f$ \theta_{cdm} = 0 \f$ by convention */ +}; + +//@} + +//@{ + +/** + * maximum number and types of selection function (for bins of matter density or cosmic shear) + */ +#define _SELECTION_NUM_MAX_ 100 +enum selection_type {gaussian,tophat,dirac}; + +//@} + + +//@{ + +/** + * maximum number of k-values for perturbation output + */ +#define _MAX_NUMBER_OF_K_FILES_ 30 + +//@} + + + +/** + * Structure containing everything about perturbations that other + * modules need to know, in particular tabled values of the source + * functions \f$ S(k, \tau) \f$ for all requested modes + * (scalar/vector/tensor), initial conditions, types (temperature, + * E-polarization, B-polarization, lensing potential, etc), multipole + * l and wavenumber k. + * + */ + +struct perturbs +{ + /** @name - input parameters initialized by user in input module + * (all other quantities are computed in this module, given these + * parameters and the content of the 'precision', 'background' and + * 'thermodynamics' structures) */ + + //@{ + + short has_perturbations; /**< do we need to compute perturbations at all ? */ + + short has_cls; /**< do we need any harmonic space spectrum \f$ C_l \f$ (and hence Bessel functions, transfer functions, ...)? */ + + short has_scalars; /**< do we need scalars? */ + short has_vectors; /**< do we need vectors? */ + short has_tensors; /**< do we need tensors? */ + + short has_ad; /**< do we need adiabatic mode? */ + short has_bi; /**< do we need isocurvature bi mode? */ + short has_cdi; /**< do we need isocurvature cdi mode? */ + short has_nid; /**< do we need isocurvature nid mode? */ + short has_niv; /**< do we need isocurvature niv mode? */ + + /* perturbed recombination */ + /** Do we want to consider perturbed temperature and ionization fraction? */ + short has_perturbed_recombination; + /** Neutrino contribution to tensors */ + enum tensor_methods tensor_method; /**< way to treat neutrinos in tensor perturbations(neglect, approximate as massless, take exact equations) */ + + short evolve_tensor_ur; /**< will we evolve ur tensor perturbations (either because we have ur species, or we have ncdm species with massless approximation) ? */ + short evolve_tensor_ncdm; /**< will we evolve ncdm tensor perturbations (if we have ncdm species and we use the exact method) ? */ + + short has_cl_cmb_temperature; /**< do we need \f$ C_l \f$'s for CMB temperature? */ + short has_cl_cmb_polarization; /**< do we need \f$ C_l \f$'s for CMB polarization? */ + short has_cl_cmb_lensing_potential; /**< do we need \f$ C_l \f$'s for CMB lensing potential? */ + short has_cl_lensing_potential; /**< do we need \f$ C_l \f$'s for galaxy lensing potential? */ + short has_cl_number_count; /**< do we need \f$ C_l \f$'s for density number count? */ + short has_pk_matter; /**< do we need matter Fourier spectrum? */ + short has_density_transfers; /**< do we need to output individual matter density transfer functions? */ + short has_velocity_transfers; /**< do we need to output individual matter velocity transfer functions? */ + + short has_nl_corrections_based_on_delta_m; /**< do we want to compute non-linear corrections with an algorithm relying on delta_m (like halofit)? */ + + short has_nc_density; /**< in dCl, do we want density terms ? */ + short has_nc_rsd; /**< in dCl, do we want redshift space distortion terms ? */ + short has_nc_lens; /**< in dCl, do we want lensing terms ? */ + short has_nc_gr; /**< in dCl, do we want gravity terms ? */ + + int l_scalar_max; /**< maximum l value for CMB scalars \f$ C_l \f$'s */ + int l_vector_max; /**< maximum l value for CMB vectors \f$ C_l \f$'s */ + int l_tensor_max; /**< maximum l value for CMB tensors \f$ C_l \f$'s */ + int l_lss_max; /**< maximum l value for LSS \f$ C_l \f$'s (density and lensing potential in bins) */ + double k_max_for_pk; /**< maximum value of k in 1/Mpc in P(k) (if \f$ C_l \f$'s also requested, overseeded by value kmax inferred from l_scalar_max if it is bigger) */ + + int selection_num; /**< number of selection functions + (i.e. bins) for matter density \f$ C_l \f$'s */ + enum selection_type selection; /**< type of selection functions */ + double selection_mean[_SELECTION_NUM_MAX_]; /**< centers of selection functions */ + double selection_width[_SELECTION_NUM_MAX_]; /**< widths of selection functions */ + + int switch_sw; /**< in temperature calculation, do we want to include the intrinsic temperature + Sachs Wolfe term? */ + int switch_eisw; /**< in temperature calculation, do we want to include the early integrated Sachs Wolfe term? */ + int switch_lisw; /**< in temperature calculation, do we want to include the late integrated Sachs Wolfe term? */ + int switch_dop; /**< in temperature calculation, do we want to include the Doppler term? */ + int switch_pol; /**< in temperature calculation, do we want to include the polarization-related term? */ + double eisw_lisw_split_z; /**< at which redshift do we define the cut between eisw and lisw ?*/ + + int store_perturbations; /**< Do we want to store perturbations? */ + int k_output_values_num; /**< Number of perturbation outputs (default=0) */ + double k_output_values[_MAX_NUMBER_OF_K_FILES_]; /**< List of k values where perturbation output is requested. */ + int *index_k_output_values; /**< List of indices corresponding to k-values close to k_output_values for each mode. [index_md*k_output_values_num+ik]*/ + char scalar_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for scalar perturbation output files. */ + char vector_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for vector perturbation output files. */ + char tensor_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for tensor perturbation output files. */ + int number_of_scalar_titles; /**< number of titles/columns in scalar perturbation output files */ + int number_of_vector_titles; /**< number of titles/columns in vector perturbation output files*/ + int number_of_tensor_titles; /**< number of titles/columns in tensor perturbation output files*/ + + + double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for scalars */ + double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for vectors */ + double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for tensors */ + int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of scalar double pointers */ + int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of vector double pointers */ + int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of tensor double pointers */ + + double three_ceff2_ur;/**< 3 x effective squared sound speed for the ultrarelativistic perturbations */ + double three_cvis2_ur;/**< 3 x effective viscosity parameter for the ultrarelativistic perturbations */ + + double z_max_pk; /**< when we compute only the matter spectrum / transfer functions, but not the CMB, we are sometimes interested to sample source functions at very high redshift, way before recombination. This z_max_pk will then fix the initial sampling time of the sources. */ + + //@} + + /** @name - useful flags inferred from the ones above */ + + //@{ + + short has_cmb; /**< do we need CMB-related sources (temperature, polarization) ? */ + short has_lss; /**< do we need LSS-related sources (lensing potential, ...) ? */ + + //@} + + /** @name - gauge in which to perform the calculation */ + + //@{ + + enum possible_gauges gauge; /**< gauge in which to perform this calculation */ + + //@} + + /** @name - indices running on modes (scalar, vector, tensor) */ + + //@{ + + int index_md_scalars; /**< index value for scalars */ + int index_md_tensors; /**< index value for tensors */ + int index_md_vectors; /**< index value for vectors */ + + int md_size; /**< number of modes included in computation */ + + //@} + + /** @name - indices running on initial conditions (for scalars: ad, cdi, nid, niv; for tensors: only one) */ + + //@{ + + int index_ic_ad; /**< index value for adiabatic */ + int index_ic_cdi; /**< index value for CDM isocurvature */ + int index_ic_bi; /**< index value for baryon isocurvature */ + int index_ic_nid; /**< index value for neutrino density isocurvature */ + int index_ic_niv; /**< index value for neutrino velocity isocurvature */ + int index_ic_ten; /**< index value for unique possibility for tensors */ + + int * ic_size; /**< for a given mode, ic_size[index_md] = number of initial conditions included in computation */ + + //@} + + /** @name - flags and indices running on types (temperature, polarization, lensing, ...) */ + + //@{ + + short has_source_t; /**< do we need source for CMB temperature? */ + short has_source_p; /**< do we need source for CMB polarization? */ + short has_source_delta_m; /**< do we need source for delta of total matter? */ + short has_source_delta_g; /**< do we need source for delta of gammas? */ + short has_source_delta_b; /**< do we need source for delta of baryons? */ + short has_source_delta_cdm; /**< do we need source for delta of cold dark matter? */ + short has_source_delta_dcdm; /**< do we need source for delta of DCDM? */ + short has_source_delta_fld; /**< do we need source for delta of dark energy? */ + short has_source_delta_scf; /**< do we need source for delta from scalar field? */ + short has_source_delta_dr; /**< do we need source for delta of decay radiation? */ + short has_source_delta_ur; /**< do we need source for delta of ultra-relativistic neutrinos/relics? */ + short has_source_delta_ncdm; /**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_theta_m; /**< do we need source for theta of total matter? */ + short has_source_theta_g; /**< do we need source for theta of gammas? */ + short has_source_theta_b; /**< do we need source for theta of baryons? */ + short has_source_theta_cdm; /**< do we need source for theta of cold dark matter? */ + short has_source_theta_dcdm; /**< do we need source for theta of DCDM? */ + short has_source_theta_fld; /**< do we need source for theta of dark energy? */ + short has_source_theta_scf; /**< do we need source for theta of scalar field? */ + short has_source_theta_dr; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_ur; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_ncdm; /**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_phi; /**< do we need source for metric fluctuation phi? */ + short has_source_phi_prime; /**< do we need source for metric fluctuation phi'? */ + short has_source_phi_plus_psi; /**< do we need source for metric fluctuation (phi+psi)? */ + short has_source_psi; /**< do we need source for metric fluctuation psi? */ + + /* remember that the temperature source function includes three + terms that we call 0,1,2 (since the strategy in class v > 1.7 is + to avoid the integration by part that would reduce the source to + a single term) */ + int index_tp_t0; /**< index value for temperature (j=0 term) */ + int index_tp_t1; /**< index value for temperature (j=1 term) */ + int index_tp_t2; /**< index value for temperature (j=2 term) */ + int index_tp_p; /**< index value for polarization */ + int index_tp_delta_m; /**< index value for delta tot */ + int index_tp_delta_g; /**< index value for delta of gammas */ + int index_tp_delta_b; /**< index value for delta of baryons */ + int index_tp_delta_cdm; /**< index value for delta of cold dark matter */ + int index_tp_delta_dcdm;/**< index value for delta of DCDM */ + int index_tp_delta_fld; /**< index value for delta of dark energy */ + int index_tp_delta_scf; /**< index value for delta of scalar field */ + int index_tp_delta_dr; /**< index value for delta of decay radiation */ + int index_tp_delta_ur; /**< index value for delta of ultra-relativistic neutrinos/relics */ + int index_tp_delta_ncdm1; /**< index value for delta of first non-cold dark matter species (e.g. massive neutrinos) */ + int index_tp_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ + int index_tp_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ + + int index_tp_theta_m; /**< index value for theta tot */ + int index_tp_theta_g; /**< index value for theta of gammas */ + int index_tp_theta_b; /**< index value for theta of baryons */ + int index_tp_theta_cdm; /**< index value for theta of cold dark matter */ + int index_tp_theta_dcdm;/**< index value for theta of DCDM */ + int index_tp_theta_fld; /**< index value for theta of dark energy */ + int index_tp_theta_scf; /**< index value for theta of scalar field */ + int index_tp_theta_ur; /**< index value for theta of ultra-relativistic neutrinos/relics */ + int index_tp_theta_dr; /**< index value for F1 of decay radiation */ + int index_tp_theta_ncdm1; /**< index value for theta of first non-cold dark matter species (e.g. massive neutrinos) */ + + int index_tp_phi; /**< index value for metric fluctuation phi */ + int index_tp_phi_prime; /**< index value for metric fluctuation phi' */ + int index_tp_phi_plus_psi; /**< index value for metric fluctuation phi+psi */ + int index_tp_psi; /**< index value for metric fluctuation psi */ + + int * tp_size; /**< number of types tp_size[index_md] included in computation for each mode */ + + //@} + + /** @name - list of k values for each mode */ + + //@{ + + int * k_size_cmb; /**< k_size_cmb[index_md] number of k values used + for CMB calculations, requiring a fine + sampling in k-space */ + + int * k_size_cl; /**< k_size_cl[index_md] number of k values used + for non-CMB \f$ C_l \f$ calculations, requiring a coarse + sampling in k-space. */ + + int * k_size; /**< k_size[index_md] = total number of k + values, including those needed for P(k) but not + for \f$ C_l \f$'s */ + + double ** k; /**< k[index_md][index_k] = list of values */ + + double k_min; /**< minimum value (over all modes) */ + double k_max; /**< maximum value (over all modes) */ + + //@} + + /** @name - list of conformal time values in the source table + (common to all modes and types) */ + + //@{ + + int tau_size; /**< tau_size = number of values */ + + double * tau_sampling; /**< tau_sampling[index_tau] = list of tau values */ + + double selection_min_of_tau_min; /**< used in presence of selection functions (for matter density, cosmic shear...) */ + double selection_max_of_tau_max; /**< used in presence of selection functions (for matter density, cosmic shear...) */ + + double selection_delta_tau; /**< used in presence of selection functions (for matter density, cosmic shear...) */ + + double * selection_tau_min; /**< value of conformal time below which W(tau) is considered to vanish for each bin */ + double * selection_tau_max; /**< value of conformal time above which W(tau) is considered to vanish for each bin */ + double * selection_tau; /**< value of conformal time at the center of each bin */ + double * selection_function; /**< selection function W(tau), normalized to \f$ \int W(tau) dtau=1 \f$, stored in selection_function[bin*ppt->tau_size+index_tau] */ + + //@} + + /** @name - source functions interpolation table */ + + //@{ + + double *** sources; /**< Pointer towards the source interpolation table + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_type] + [index_tau * ppt->k_size + index_k] */ + + + //@} + + /** @name - technical parameters */ + + //@{ + + short perturbations_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} + +}; + +/** + * Structure containing the indices and the values of the perturbation + * variables which are integrated over time (as well as their + * time-derivatives). For a given wavenumber, the size of these + * vectors changes when the approximation scheme changes. + */ + +struct perturb_vector +{ + int index_pt_delta_g; /**< photon density */ + int index_pt_theta_g; /**< photon velocity */ + int index_pt_shear_g; /**< photon shear */ + int index_pt_l3_g; /**< photon l=3 */ + int l_max_g; /**< max momentum in Boltzmann hierarchy (at least 3) */ + int index_pt_pol0_g; /**< photon polarization, l=0 */ + int index_pt_pol1_g; /**< photon polarization, l=1 */ + int index_pt_pol2_g; /**< photon polarization, l=2 */ + int index_pt_pol3_g; /**< photon polarization, l=3 */ + int l_max_pol_g; /**< max momentum in Boltzmann hierarchy (at least 3) */ + int index_pt_delta_b; /**< baryon density */ + int index_pt_theta_b; /**< baryon velocity */ + int index_pt_delta_cdm; /**< cdm density */ + int index_pt_theta_cdm; /**< cdm velocity */ + int index_pt_delta_dcdm; /**< dcdm density */ + int index_pt_theta_dcdm; /**< dcdm velocity */ + int index_pt_delta_fld; /**< dark energy density */ + int index_pt_theta_fld; /**< dark energy velocity */ + int index_pt_phi_scf; /**< scalar field density */ + int index_pt_phi_prime_scf; /**< scalar field velocity */ + int index_pt_delta_ur; /**< density of ultra-relativistic neutrinos/relics */ + int index_pt_theta_ur; /**< velocity of ultra-relativistic neutrinos/relics */ + int index_pt_shear_ur; /**< shear of ultra-relativistic neutrinos/relics */ + int index_pt_l3_ur; /**< l=3 of ultra-relativistic neutrinos/relics */ + int l_max_ur; /**< max momentum in Boltzmann hierarchy (at least 3) */ +/* perturbed recombination */ + int index_pt_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ + int index_pt_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ + + /** The index to the first Legendre multipole of the DR expansion. Not + that this is not exactly the usual delta, see Kaplinghat et al., + astro-ph/9907388. */ + int index_pt_F0_dr; + int l_max_dr; /**< max momentum in Boltzmann hierarchy for dr) */ + int index_pt_psi0_ncdm1; /**< first multipole of perturbation of first ncdm species, Psi_0 */ + int N_ncdm; /**< number of distinct non-cold-dark-matter (ncdm) species */ + int* l_max_ncdm; /**< mutipole l at which Boltzmann hierarchy is truncated (for each ncdm species) */ + int* q_size_ncdm; /**< number of discrete momenta (for each ncdm species) */ + + int index_pt_eta; /**< synchronous gauge metric perturbation eta*/ + int index_pt_phi; /**< newtonian gauge metric perturbation phi */ + int index_pt_hv_prime; /**< vector metric perturbation h_v' in synchronous gauge */ + int index_pt_V; /**< vector metric perturbation V in Newtonian gauge */ + + int index_pt_gw; /**< tensor metric perturbation h (gravitational waves) */ + int index_pt_gwdot; /**< its time-derivative */ + int pt_size; /**< size of perturbation vector */ + + double * y; /**< vector of perturbations to be integrated */ + double * dy; /**< time-derivative of the same vector */ + + int * used_in_sources; /**< boolean array specifying which + perturbations enter in the calculation of + source functions */ + +}; + + +/** + * Workspace containing, among other things, the value at a given time + * of all background/perturbed quantities, as well as their indices. + * There will be one such structure created for each mode + * (scalar/.../tensor) and each thread (in case of parallel computing) + */ + +struct perturb_workspace +{ + + /** @name - all possible useful indices for those metric + perturbations which are not integrated over time, but just + inferred from Einstein equations. "_mt_" stands for "metric".*/ + + //@{ + + int index_mt_psi; /**< psi in longitudinal gauge */ + int index_mt_phi_prime; /**< (d phi/d conf.time) in longitudinal gauge */ + int index_mt_h_prime; /**< h' (wrt conf. time) in synchronous gauge */ + int index_mt_h_prime_prime; /**< h'' (wrt conf. time) in synchronous gauge */ + int index_mt_eta_prime; /**< eta' (wrt conf. time) in synchronous gauge */ + int index_mt_alpha; /**< \f$ \alpha = (h' + 6 \eta') / (2 k^2) \f$ in synchronous gauge */ + int index_mt_alpha_prime; /**< \f$ \alpha'\f$ wrt conf. time) in synchronous gauge */ + int index_mt_gw_prime_prime;/**< second derivative wrt conformal time of gravitational wave field, often called h */ + int index_mt_V_prime; /**< derivative of Newtonian gauge vector metric perturbation V */ + int index_mt_hv_prime_prime;/**< Second derivative of Synchronous gauge vector metric perturbation \f$ h_v\f$ */ + int mt_size; /**< size of metric perturbation vector */ + + //@} + + /** @name - value at a given time of all background/perturbed + quantities + */ + + //@{ + + double * pvecback; /**< background quantities */ + double * pvecthermo; /**< thermodynamics quantities */ + double * pvecmetric; /**< metric quantities */ + struct perturb_vector * pv; /**< pointer to vector of integrated + perturbations and their + time-derivatives */ + + double delta_rho; /**< total density perturbation (gives delta Too) */ + double rho_plus_p_theta; /**< total (rho+p)*theta perturbation (gives delta Toi) */ + double rho_plus_p_shear; /**< total (rho+p)*shear (gives delta Tij) */ + double delta_p; /**< total pressure perturbation (gives Tii) */ + double gw_source; /**< stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) */ + double vector_source_pi; /**< first stress-energy source term in Einstein's vector equations */ + double vector_source_v; /**< second stress-energy source term in Einstein's vector equations */ + + double tca_shear_g; /**< photon shear in tight-coupling approximation */ + double tca_slip; /**< photon-baryon slip in tight-coupling approximation */ + double rsa_delta_g; /**< photon density in radiation streaming approximation */ + double rsa_theta_g; /**< photon velocity in radiation streaming approximation */ + double rsa_delta_ur; /**< photon density in radiation streaming approximation */ + double rsa_theta_ur; /**< photon velocity in radiation streaming approximation */ + + double * delta_ncdm; /**< relative density perturbation of each ncdm species */ + double * theta_ncdm; /**< velocity divergence theta of each ncdm species */ + double * shear_ncdm; /**< shear for each ncdm species */ + + double delta_m; /**< relative density perturbation of all non-relativistic species */ + double theta_m; /**< velocity divergence theta of all non-relativistic species */ + + FILE * perturb_output_file; /**< filepointer to output file*/ + int index_ikout; /**< index for output k value (when k_output_values is set) */ + + //@} + + /** @name - indices useful for searching background/thermo quantities in tables */ + + //@{ + + short inter_mode; /**< flag defining the method used for interpolation background/thermo quantities tables */ + + int last_index_back; /**< the background interpolation function background_at_tau() keeps memory of the last point called through this index */ + int last_index_thermo; /**< the thermodynamics interpolation function thermodynamics_at_z() keeps memory of the last point called through this index */ + + //@} + + /** @name - approximations used at a given time */ + + //@{ + + int index_ap_tca; /**< index for tight-coupling approximation */ + int index_ap_rsa; /**< index for radiation streaming approximation */ + int index_ap_ufa; /**< index for ur fluid approximation */ + int index_ap_ncdmfa; /**< index for ncdm fluid approximation */ + int ap_size; /**< number of relevant approximations for a given mode */ + + int * approx; /**< array of approximation flags holding at a given time: approx[index_ap] */ + + //@} + + /** @name - approximations used at a given time */ + + //@{ + + int max_l_max; /**< maximum l_max for any multipole */ + double * s_l; /**< array of freestreaming coefficients \f$ s_l = \sqrt{1-K*(l^2-1)/k^2} \f$*/ + + //@} + +}; + +/** + * Structure pointing towards all what the function that perturb_derivs + * needs to know: fixed input parameters and indices contained in the + * various structures, workspace, etc. + */ + +struct perturb_parameters_and_workspace { + + struct precision * ppr; /**< pointer to the precision structure */ + struct background * pba; /**< pointer to the background structure */ + struct thermo * pth; /**< pointer to the thermodynamics structure */ + struct perturbs * ppt; /**< pointer to the precision structure */ + int index_md; /**< index of mode (scalar/.../vector/tensor) */ + int index_ic; /**< index of initial condition (adiabatic/isocurvature(s)/...) */ + int index_k; /**< index of wavenumber */ + double k; /**< current value of wavenumber in 1/Mpc */ + struct perturb_workspace * ppw; /**< workspace defined above */ + +}; + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int perturb_sources_at_tau( + struct perturbs * ppt, + int index_md, + int index_ic, + int index_type, + double tau, + double * pvecsources + ); + + int perturb_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ); + + int perturb_free( + struct perturbs * ppt + ); + + int perturb_indices_of_perturbs( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ); + + int perturb_timesampling_for_sources( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ); + int perturb_get_k_list( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ); + + int perturb_workspace_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + struct perturb_workspace * ppw + ); + + int perturb_workspace_free( + struct perturbs * ppt, + int index_md, + struct perturb_workspace * ppw + ); + + int perturb_solve( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + int index_ic, + int index_k, + struct perturb_workspace * ppw + ); + + int perturb_find_approximation_number( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + struct perturb_workspace * ppw, + double tau_ini, + double tau_end, + int * interval_number, + int * interval_number_of + ); + + int perturb_find_approximation_switches( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + struct perturb_workspace * ppw, + double tau_ini, + double tau_end, + double precision, + int interval_number, + int * interval_number_of, + double * interval_limit, + int ** interval_approx + ); + + int perturb_vector_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + int index_ic, + double k, + double tau, + struct perturb_workspace * ppw, + int * pa_old + ); + + int perturb_vector_free( + struct perturb_vector * pv + ); + + int perturb_initial_conditions( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + int index_md, + int index_ic, + double k, + double tau, + struct perturb_workspace * ppw + ); + + int perturb_approximations( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double tau, + struct perturb_workspace * ppw + ); + + int perturb_timescale( + double tau, + void * parameters_and_workspace, + double * timescale, + ErrorMsg error_message + ); + + int perturb_einstein( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double tau, + double * y, + struct perturb_workspace * ppw + ); + + int perturb_total_stress_energy( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double * y, + struct perturb_workspace * ppw + ); + + int perturb_sources( + double tau, + double * pvecperturbations, + double * pvecderivs, + int index_tau, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + int perturb_print_variables( + double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + int perturb_derivs( + double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + int perturb_tca_slip_and_shear( + double * y, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + int perturb_rsa_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ); + + int perturb_prepare_output_file(struct background * pba, + struct perturbs * ppt, + struct perturb_workspace * ppw, + int index_ikout, + int index_md); + + int perturb_prepare_output(struct background * pba, + struct perturbs * ppt); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +#endif +/* @endcond */ diff --git a/class_old/include/primordial.h b/class_old/include/primordial.h new file mode 100644 index 00000000..44289f6e --- /dev/null +++ b/class_old/include/primordial.h @@ -0,0 +1,533 @@ +/** @file primordial.h Documented includes for primordial module. */ + +#ifndef __PRIMORDIAL__ +#define __PRIMORDIAL__ + +#include "perturbations.h" + +/** enum defining how the primordial spectrum should be computed */ + +enum primordial_spectrum_type { + analytic_Pk, + two_scales, + inflation_V, + inflation_H, + inflation_V_end, + external_Pk +}; + +/** enum defining whether the spectrum routine works with linear or logarithmic input/output */ + +enum linear_or_logarithmic { + linear, + logarithmic +}; + +/** enum defining the type of inflation potential function V(phi) */ + +enum potential_shape { + polynomial, + natural, + higgs_inflation +}; + +/** enum defining which quantity plays the role of a target for evolving inflationary equations */ + +enum target_quantity { + _aH_, + _phi_, + _end_inflation_, + _a_ +}; + +/** enum specifying if we want to integrate equations forward or backward in time */ + +enum integration_direction { + backward, + forward +}; + +/** enum specifying if we want to evolve quantities with conformal or proper time */ + +enum time_definition { + conformal, + proper +}; + +/** enum specifying how, in the inflation_V_end case, the value of phi_pivot should calculated */ + +enum phi_pivot_methods { + N_star, + ln_aH_ratio, + ln_aH_ratio_auto +}; + +/** enum specifying how the inflation module computes the primordial spectrum (default: numerical) */ + +enum inflation_module_behavior { + numerical, + analytical +}; + +/** + * Structure containing everything about primordial spectra that other modules need to know. + * + * Once initialized by primordial_init(), contains a table of all + * primordial spectra as a function of wavenumber, mode, and pair of initial conditions. + */ + +struct primordial { + + /** @name - input parameters initialized by user in input module + (all other quantities are computed in this module, given these parameters + and the content of the 'precision' and 'perturbs' structures) */ + + //@{ + + double k_pivot; /**< pivot scale in \f$ Mpc^{-1} \f$ */ + + enum primordial_spectrum_type primordial_spec_type; /**< type of primordial spectrum (simple analytic from, integration of inflationary perturbations, etc.) */ + + /* - parameters describing the case primordial_spec_type = analytic_Pk : amplitudes, tilts, runnings, cross-correlations, ... */ + + double A_s; /**< usual scalar amplitude = curvature power spectrum at pivot scale */ + double n_s; /**< usual scalar tilt = [curvature power spectrum tilt at pivot scale -1] */ + double alpha_s; /**< usual scalar running */ + double beta_s; /**< running of running */ + + double r; /**< usual tensor to scalar ratio of power spectra, \f$ r=A_T/A_S=P_h/P_R \f$*/ + double n_t; /**< usual tensor tilt = [GW power spectrum tilt at pivot scale] */ + double alpha_t; /**< usual tensor running */ + + double f_bi; /**< baryon isocurvature (BI) entropy-to-curvature ratio \f$ S_{bi}/R \f$*/ + double n_bi; /**< BI tilt */ + double alpha_bi; /**< BI running */ + + double f_cdi; /**< CDM isocurvature (CDI) entropy-to-curvature ratio \f$ S_{cdi}/R \f$*/ + double n_cdi; /**< CDI tilt */ + double alpha_cdi; /**< CDI running */ + + double f_nid; /**< neutrino density isocurvature (NID) entropy-to-curvature ratio \f$ S_{nid}/R \f$*/ + double n_nid; /**< NID tilt */ + double alpha_nid; /**< NID running */ + + double f_niv; /**< neutrino velocity isocurvature (NIV) entropy-to-curvature ratio \f$ S_{niv}/R \f$*/ + double n_niv; /**< NIV tilt */ + double alpha_niv; /**< NIV running */ + + double c_ad_bi; /**< ADxBI cross-correlation at pivot scale, from -1 to 1 */ + double n_ad_bi; /**< ADxBI cross-correlation tilt */ + double alpha_ad_bi; /**< ADxBI cross-correlation running */ + + double c_ad_cdi; /**< ADxCDI cross-correlation at pivot scale, from -1 to 1 */ + double n_ad_cdi; /**< ADxCDI cross-correlation tilt */ + double alpha_ad_cdi; /**< ADxCDI cross-correlation running */ + + double c_ad_nid; /**< ADxNID cross-correlation at pivot scale, from -1 to 1 */ + double n_ad_nid; /**< ADxNID cross-correlation tilt */ + double alpha_ad_nid; /**< ADxNID cross-correlation running */ + + double c_ad_niv; /**< ADxNIV cross-correlation at pivot scale, from -1 to 1 */ + double n_ad_niv; /**< ADxNIV cross-correlation tilt */ + double alpha_ad_niv; /**< ADxNIV cross-correlation running */ + + double c_bi_cdi; /**< BIxCDI cross-correlation at pivot scale, from -1 to 1 */ + double n_bi_cdi; /**< BIxCDI cross-correlation tilt */ + double alpha_bi_cdi; /**< BIxCDI cross-correlation running */ + + double c_bi_nid; /**< BIxNIV cross-correlation at pivot scale, from -1 to 1 */ + double n_bi_nid; /**< BIxNIV cross-correlation tilt */ + double alpha_bi_nid; /**< BIxNIV cross-correlation running */ + + double c_bi_niv; /**< BIxNIV cross-correlation at pivot scale, from -1 to 1 */ + double n_bi_niv; /**< BIxNIV cross-correlation tilt */ + double alpha_bi_niv; /**< BIxNIV cross-correlation running */ + + double c_cdi_nid; /**< CDIxNID cross-correlation at pivot scale, from -1 to 1 */ + double n_cdi_nid; /**< CDIxNID cross-correlation tilt */ + double alpha_cdi_nid; /**< CDIxNID cross-correlation running */ + + double c_cdi_niv; /**< CDIxNIV cross-correlation at pivot scale, from -1 to 1 */ + double n_cdi_niv; /**< CDIxNIV cross-correlation tilt */ + double alpha_cdi_niv; /**< CDIxNIV cross-correlation running */ + + double c_nid_niv; /**< NIDxNIV cross-correlation at pivot scale, from -1 to 1 */ + double n_nid_niv; /**< NIDxNIV cross-correlation tilt */ + double alpha_nid_niv; /**< NIDxNIV cross-correlation running */ + + /** parameters describing the case primordial_spec_type = inflation_V */ + + enum potential_shape potential; + + double V0; /**< one parameter of the function V(phi) */ + double V1; /**< one parameter of the function V(phi) */ + double V2; /**< one parameter of the function V(phi) */ + double V3; /**< one parameter of the function V(phi) */ + double V4; /**< one parameter of the function V(phi) */ + + /* parameters describing the case primordial_spec_type = inflation_H */ + + double H0; /**< one parameter of the function H(phi) */ + double H1; /**< one parameter of the function H(phi) */ + double H2; /**< one parameter of the function H(phi) */ + double H3; /**< one parameter of the function H(phi) */ + double H4; /**< one parameter of the function H(phi) */ + + /* parameters describing inflation_V_end */ + + double phi_end; /**< value of inflaton at the end of inflation */ + enum phi_pivot_methods phi_pivot_method; /**< flag for method used to define and find the pivot scale */ + double phi_pivot_target; /**< For each of the above methods, critical value to be reached between pivot and end of inflation (N_star, [aH]ratio, etc.) */ + + /* behavior of the inflation module */ + enum inflation_module_behavior behavior; /**< Specifies if the inflation module computes the primordial spectrum numerically (default) or analytically*/ + + /** 'external_Pk' mode: command generating the table of Pk and custom parameters to be passed to it */ + + char* command; /**< string with the command for calling 'external_Pk' */ + double custom1; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom2; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom3; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom4; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom5; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom6; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom7; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom8; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom9; /**< one parameter of the primordial computed in 'external_Pk' */ + double custom10; /**< one parameter of the primordial computed in 'external_Pk' */ + + //@} + + /** @name - pre-computed table of primordial spectra, and related quantities */ + + //@{ + + int md_size; /**< number of modes included in computation */ + + int * ic_size; /**< for a given mode, ic_size[index_md] = number of initial conditions included in computation */ + + int * ic_ic_size; /**< number of ordered pairs of (index_ic1, index_ic2); this number is just N(N+1)/2 where N = ic_size[index_md] */ + + int lnk_size; /**< number of ln(k) values */ + + double * lnk; /**< list of ln(k) values lnk[index_k] */ + + double ** lnpk; /**< depends on indices index_md, index_ic1, index_ic2, index_k as: + lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] + where index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since + the primordial spectrum is symmetric in (index_ic1, index_ic2)). + - for diagonal elements (index_ic1 = index_ic2) this arrays contains + ln[P(k)] where P(k) is positive by construction. + - for non-diagonal elements this arrays contains the k-dependent + cosine of the correlation angle, namely + P(k )_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + This choice is convenient since the sign of the non-diagonal cross-correlation + is arbitrary. For fully correlated or anti-correlated initial conditions, + this non -diagonal element is independent on k, and equal to +1 or -1. + */ + + double ** ddlnpk; /**< second derivative of above array, for spline interpolation. So: + - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is + good since this function is usually smooth. + - for non-diagonal coefficients, we spline + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + vs. ln(k), which is fine since this quantity is often assumed to be + constant (e.g for fully correlated/anticorrelated initial conditions) + or nearly constant, and with arbitrary sign. + */ + + short ** is_non_zero; /**< is_non_zero[index_md][index_ic1_ic2] set to false if pair + (index_ic1, index_ic2) is uncorrelated + (ensures more precision and saves time with respect to the option + of simply setting P(k)_(index_ic1, index_ic2) to zero) */ + + //@} + + //@{ + + /** @name - parameters describing the case primordial_spec_type = analytic_Pk : amplitudes, tilts, runnings, cross-correlations, ... */ + + double ** amplitude; /**< all amplitudes in matrix form: amplitude[index_md][index_ic1_ic2] */ + double ** tilt; /**< all tilts in matrix form: tilt[index_md][index_ic1_ic2] */ + double ** running; /**< all runnings in matrix form: running[index_md][index_ic1_ic2] */ + + //@} + + //@{ + + /** @name - for the inflation simulator, indices in vector of + background/perturbation */ + + int index_in_a; /**< scale factor */ + int index_in_phi; /**< inflaton vev */ + int index_in_dphi; /**< its time derivative */ + int index_in_ksi_re; /**< Mukhanov variable (real part) */ + int index_in_ksi_im; /**< Mukhanov variable (imaginary part) */ + int index_in_dksi_re; /**< Mukhanov variable (real part, time derivative) */ + int index_in_dksi_im; /**< Mukhanov variable (imaginary part, time derivative) */ + int index_in_ah_re; /**< tensor perturbation (real part) */ + int index_in_ah_im; /**< tensor perturbation (imaginary part) */ + int index_in_dah_re; /**< tensor perturbation (real part, time derivative) */ + int index_in_dah_im; /**< tensor perturbation (imaginary part, time derivative) */ + int in_bg_size; /**< size of vector of background quantities only */ + int in_size; /**< full size of vector */ + + //@} + + /** @name - derived parameters */ + + //@{ + + double phi_pivot; /**< in inflationary module, value of + phi_pivot (set to 0 for inflation_V, + inflation_H; found by code for + inflation_V_end) */ + double phi_min; /**< in inflationary module, value of phi when \f$ k_{min}=aH \f$*/ + double phi_max; /**< in inflationary module, value of phi when \f$ k_{max}=aH \f$*/ + double phi_stop; /**< in inflationary module, value of phi at the end of inflation */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short primordial_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + //@} + + ErrorMsg error_message; /**< zone for writing error messages */ + +}; + +struct primordial_inflation_parameters_and_workspace { + + struct primordial * ppm; + double N; + double a2; + + double V; + double dV; + double ddV; + double aH; + + double H; + double dH; + double ddH; + double dddH; + + double zpp_over_z; + double app_over_a; + + double k; + + enum integration_direction integrate; + enum time_definition time; + +}; + + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int primordial_spectrum_at_k( + struct primordial * ppm, + int index_md, + enum linear_or_logarithmic mode, + double k, + double * pk + ); + + int primordial_init( + struct precision * ppr, + struct perturbs * ppt, + struct primordial * ppm + ); + + int primordial_free( + struct primordial * ppm + ); + + int primordial_indices( + struct perturbs * ppt, + struct primordial * ppm + ); + + int primordial_get_lnk_list( + struct primordial * ppm, + double kmin, + double kmax, + double k_per_decade + ); + + int primordial_analytic_spectrum_init( + struct perturbs * ppt, + struct primordial * ppm + ); + + int primordial_analytic_spectrum( + struct primordial * ppm, + int index_md, + int index_ic1_ic2, + double k, + double * pk + ); + + int primordial_inflation_potential( + struct primordial * ppm, + double phi, + double * V, + double * dV, + double * ddV + ); + + int primordial_inflation_hubble( + struct primordial * ppm, + double phi, + double * H, + double * dH, + double * ddH, + double * dddH + ); + + int primordial_inflation_indices( + struct primordial * ppm + ); + + int primordial_inflation_solve_inflation( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr + ); + + int primordial_inflation_analytic_spectra( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini + ); + + int primordial_inflation_spectra( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini + ); + + int primordial_inflation_one_wavenumber( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini, + int index_k + ); + + int primordial_inflation_one_k( + struct primordial * ppm, + struct precision * ppr, + double k, + double * y, + double * dy, + double * curvature, + double * tensor + ); + + int primordial_inflation_find_attractor( + struct primordial * ppm, + struct precision * ppr, + double phi_0, + double precision, + double * y, + double * dy, + double * H_0, + double * dphidt_0 + ); + + int primordial_inflation_evolve_background( + struct primordial * ppm, + struct precision * ppr, + double * y, + double * dy, + enum target_quantity target, + double stop, + short check_epsilon, + enum integration_direction direction, + enum time_definition time + ); + + int primordial_inflation_check_potential( + struct primordial * ppm, + double phi, + double * V, + double * dV, + double * ddV + ); + + int primordial_inflation_check_hubble( + struct primordial * ppm, + double phi, + double *H, + double * dH, + double * ddH, + double * dddH + ); + + int primordial_inflation_get_epsilon( + struct primordial * ppm, + double phi, + double * epsilon + ); + + int primordial_inflation_find_phi_pivot( + struct primordial * ppm, + struct precision * ppr, + double * y, + double * dy + ); + + int primordial_inflation_derivs( + double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ); + + int primordial_external_spectrum_init( + struct perturbs * ppt, + struct primordial * ppm + ); + + int primordial_output_titles(struct perturbs * ppt, + struct primordial * ppm, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int primordial_output_data(struct perturbs * ppt, + struct primordial * ppm, + int number_of_titles, + double *data); +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +/** + * @name Some limits imposed on parameter values: + */ + +//@{ + +#define _K_PER_DECADE_PRIMORDIAL_MIN_ 1. + +//@} + +#endif +/* @endcond */ diff --git a/class_old/include/quadrature.h b/class_old/include/quadrature.h new file mode 100644 index 00000000..4927d352 --- /dev/null +++ b/class_old/include/quadrature.h @@ -0,0 +1,112 @@ +#ifndef __QSS__ +#define __QSS__ + +#define _MIN_NUMBER_OF_LAGUERRE_POINTS_ 5 + +/******************************************/ +/* Quadrature Sampling Strategy for CLASS */ +/* 10/12 2010 */ +/* Thomas Tram */ +/******************************************/ +#include "common.h" + +/* Structures for QSS */ + +typedef struct adaptive_integration_tree_node{ + /* binary tree node: */ + double I; /* Estimate of integral */ + double err; /* Estimated error */ + double *x; /* Pointer to the abscissas of node */ + double *w; /* Pointer to the corresponding weights */ + int leaf_childs;/* Number of leafs under current node. 1 means that the node is a leaf. */ + /* Pointer to children: */ + struct adaptive_integration_tree_node *left, *right; /* Pointer to left child. */ +} qss_node; + + /** + * Boilerplate for C++ + */ +#ifdef __cplusplus + extern "C" { +#endif + int get_qsampling(double *x, + double *w, + int *N, + int N_max, double rtol, + double *qvec, + int qsiz, + int (*test)(void * params_for_function, double q, double *psi), + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg); + + int sort_x_and_w(double *x, double *w, double *workx, double *workw, int startidx, int endidx); + int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite); + int reduce_tree(qss_node *node, int level); + int burn_tree(qss_node *node); + int leaf_count(qss_node *node); + double get_integral(qss_node *node, int level); + int gk_adapt( + qss_node **node, + int (*test)(void * params_for_function, double q, double *psi), + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + double tol, + int treemode, + double a, + double b, + int isindefinite, + ErrorMsg errmsg); + int compute_Hermite(double *x, double *w, int N, int alpha, double *b, double *c); + int compute_Laguerre(double *x, double *w, int N, double alpha, double *b, double *c, int totalweight); + int gk_quad(int (*test)(void * params_for_function, double q, double *psi), + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + qss_node* node, + double a, + double b, + int isindefinite); + double testfun(double x); + + int quadrature_gauss_legendre( + double *mu, + double *w8, + int n, + double tol, + ErrorMsg error_message); + + int quadrature_gauss_legendre_2D( + int n, + double * x, + double * y, + double * w, + ErrorMsg error_message); + + int quadrature_in_rectangle( + double xl, + double xr, + double yl, + double yr, + int *n, + double ** x, + double ** y, + double ** w, + ErrorMsg error_message); + + int cubature_order_eleven( + double xl, + double xr, + double yl, + double yr, + double *x, + double *y, + double *w, + ErrorMsg error_message); + + +#ifdef __cplusplus + } +#endif + + +#endif diff --git a/class_old/include/sparse.h b/class_old/include/sparse.h new file mode 100644 index 00000000..82179c67 --- /dev/null +++ b/class_old/include/sparse.h @@ -0,0 +1,69 @@ +#ifndef __SPA__ +#define __SPA__ +/****************************************/ +/* Sparse Matrix algorithms for CLASS */ +/* 15/11 2010 */ +/* Thomas Tram */ +/****************************************/ +#include "common.h" + +/* Structures: */ +typedef struct sparse_matrix{ + /* Sparse matrix in compressed column form: */ + int ncols; /* Number of columns */ + int nrows; /* Number of rows */ + int maxnz; /* Maximum number of non-zero entries*/ + int *Ap; /* Ap[0..ncols]. Ap[k+1]-Ap[k] is the number of entries in the k'th column. */ + int *Ai; /* Ai[0..(maxnz-1)]. Contains the row indices of the entries. */ + double *Ax; /* Ax[0..(maxnz-1)]. Contains the values of the entries. */ +} sp_mat; + +typedef struct sparse_numerical{ + /* Sparse LU decomposition along with enough information to do a fast refactorization: */ + int n; /*Matrix assumed square, [nxn] */ + sp_mat *L; /*L and U is the factors of the decomposed matrix.*/ + sp_mat *U; + int **xi; /*xi[k] points to a row of xi, which holds the topological ordered indices.*/ + int *topvec; /*topvec[k] holds the first index in xi[k].*/ + int *pinv; /*Inverse row permutation. */ + int *p; /*Row permutation. */ + int *q; /* Column permutation */ + int *wamd; /* Work array for sp_amd */ + double *w; /* Work array for sp_lu */ +} sp_num; + + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif +/* Routines and macros: */ +int sp_mat_alloc(sp_mat** A, int ncols, int nrows, int maxnz, ErrorMsg error_message); +int sp_mat_free(sp_mat *A); +int sp_num_alloc(sp_num** N, int n,ErrorMsg error_message); +int sp_num_free(sp_num *N); +int reachr(sp_mat *G, sp_mat *B,int k, int *xik,int *pinv); +void dfsr(int j, sp_mat *G, int *top, int *xik, int *pinv); +int sp_splsolve(sp_mat *G, sp_mat *B, int k, int*xik, int top, double *x, int *pinv); +int sp_ludcmp(sp_num *N, sp_mat *A, double pivtol); +int sp_lusolve(sp_num *N, double *b, double *x); +int sp_refactor(sp_num *N, sp_mat *A); +int column_grouping(sp_mat *G, int *col_g, int *col_wi); +int sp_amd(int *Cp, int *Ci, int n, int cnzmax, int *P, int *W); +int sp_wclear(int mark, int lemax, int *w, int n); +int sp_tdfs(int j, int k, int *head, const int *next, int *post, int *stack); + + +#define SPFLIP(i) (-(i)-2) +#define SPUNFLIP(i) (((i)<0) ? SPFLIP(i) : (i)) +#define SPMARKED(w,j) (w[j] < 0) +#define SPMARK(w,j) {w[j] = SPFLIP(w[j]);} + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/class_old/include/spectra.h b/class_old/include/spectra.h new file mode 100644 index 00000000..5b41cda9 --- /dev/null +++ b/class_old/include/spectra.h @@ -0,0 +1,411 @@ +/** @file spectra.h Documented includes for spectra module */ + +#ifndef __SPECTRA__ +#define __SPECTRA__ + +#include "transfer.h" + +/** + * Structure containing everything about anisotropy and Fourier power spectra that other modules need to know. + * + * Once initialized by spectra_init(), contains a table of all + * \f$ C_l\f$'s and P(k) as a function of multipole/wavenumber, + * mode (scalar/tensor...), type (for \f$ C_l\f$'s: TT, TE...), + * and pairs of initial conditions (adiabatic, isocurvatures...). + */ + +struct spectra { + + /** @name - input parameters initialized by user in input module + (all other quantities are computed in this module, given these parameters + and the content of the 'background', 'perturbs', 'transfers' and + 'primordial' structures) */ + + //@{ + + double z_max_pk; /**< maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today */ + + + int non_diag; /**< sets the number of cross-correlation spectra + that you want to calculate: 0 means only + auto-correlation, 1 means only adjacent bins, + and number of bins minus one means all + correlations */ + + //@} + + /** @name - information on number of modes and pairs of initial conditions */ + + //@{ + + int md_size; /**< number of modes (scalar, tensor, ...) included in computation */ + int index_md_scalars; /**< index for scalar modes */ + + int * ic_size; /**< for a given mode, ic_size[index_md] = number of initial conditions included in computation */ + int * ic_ic_size; /**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)/2 where N = ic_size[index_md] */ + short ** is_non_zero; /**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated */ + + //@} + + /** @name - information on number of type of C_l's (TT, TE...) */ + + //@{ + + int has_tt; /**< do we want \f$ C_l^{TT}\f$? (T = temperature) */ + int has_ee; /**< do we want \f$ C_l^{EE}\f$? (E = E-polarization) */ + int has_te; /**< do we want \f$ C_l^{TE}\f$? */ + int has_bb; /**< do we want \f$ C_l^{BB}\f$? (B = B-polarization) */ + int has_pp; /**< do we want \f$ C_l^{\phi\phi}\f$? (\f$ \phi \f$ = CMB lensing potential) */ + int has_tp; /**< do we want \f$ C_l^{T\phi}\f$? */ + int has_ep; /**< do we want \f$ C_l^{E\phi}\f$? */ + int has_dd; /**< do we want \f$ C_l^{dd}\f$? (d = density) */ + int has_td; /**< do we want \f$ C_l^{Td}\f$? */ + int has_pd; /**< do we want \f$ C_l^{\phi d}\f$? */ + int has_ll; /**< do we want \f$ C_l^{ll}\f$? (l = galaxy lensing potential) */ + int has_tl; /**< do we want \f$ C_l^{Tl}\f$? */ + int has_dl; /**< do we want \f$ C_l^{dl}\f$? */ + + int index_ct_tt; /**< index for type \f$ C_l^{TT} \f$*/ + int index_ct_ee; /**< index for type \f$ C_l^{EE} \f$*/ + int index_ct_te; /**< index for type \f$ C_l^{TE} \f$*/ + int index_ct_bb; /**< index for type \f$ C_l^{BB} \f$*/ + int index_ct_pp; /**< index for type \f$ C_l^{\phi\phi} \f$*/ + int index_ct_tp; /**< index for type \f$ C_l^{T\phi} \f$*/ + int index_ct_ep; /**< index for type \f$ C_l^{E\phi} \f$*/ + int index_ct_dd; /**< first index for type \f$ C_l^{dd} \f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)/2) values) */ + int index_ct_td; /**< first index for type \f$ C_l^{Td} \f$(d_size values) */ + int index_ct_pd; /**< first index for type \f$ C_l^{pd} \f$(d_size values) */ + int index_ct_ll; /**< first index for type \f$ C_l^{ll} \f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)/2) values) */ + int index_ct_tl; /**< first index for type \f$ C_l^{Tl} \f$(d_size values) */ + int index_ct_dl; /**< first index for type \f$ C_l^{dl} \f$(d_size values) */ + + int d_size; /**< number of bins for which density Cl's are computed */ + + int ct_size; /**< number of \f$ C_l \f$ types requested */ + + //@} + + /** @name - table of pre-computed C_l values, and related quantities */ + + //@{ + + int * l_size; /**< number of multipole values for each requested mode, l_size[index_md] */ + + int l_size_max; /**< greatest of all l_size[index_md] */ + + double * l; /**< list of multipole values l[index_l] */ + + + int ** l_max_ct; /**< last multipole (given as an input) at which + we want to output \f$ C_l\f$'s for a given mode and type; + l[index_md][l_size[index_md]-1] can be larger + than l_max[index_md], in order to ensure a + better interpolation with no boundary effects */ + + int * l_max; /**< last multipole (given as an input) at which + we want to output \f$ C_l\f$'s for a given mode (maximized over types); + l[index_md][l_size[index_md]-1] can be larger + than l_max[index_md], in order to ensure a + better interpolation with no boundary effects */ + + int l_max_tot; /**< last multipole (given as an input) at which + we want to output \f$ C_l\f$'s (maximized over modes and types); + l[index_md][l_size[index_md]-1] can be larger + than l_max[index_md], in order to ensure a + better interpolation with no boundary effects */ + + double ** cl; /**< table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] */ + double ** ddcl; /**< second derivatives of previous table with respect to l, in view of spline interpolation */ + + double alpha_II_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ + double alpha_RI_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ + double alpha_RR_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ + + double alpha_II_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ + double alpha_RI_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ + double alpha_RR_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ + + double alpha_II_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ + double alpha_RI_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ + double alpha_RR_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ + + double alpha_II_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ + double alpha_RI_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ + double alpha_RR_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ + + double alpha_kp; /**< parameter describing adiabatic versus isocurvature contribution at pivot scale (see Planck parameter papers) */ + double alpha_k1; /**< parameter describing adiabatic versus isocurvature contribution at scale k1 (see Planck parameter papers) */ + double alpha_k2; /**< parameter describing adiabatic versus isocurvature contribution at scale k2 (see Planck parameter papers) */ + + //@} + + /** @name - table of pre-computed matter power spectrum P(k) values, and related quantities */ + + //@{ + + int ln_k_size; /**< number ln(k) values */ + double * ln_k; /**< list of ln(k) values ln_k[index_k] */ + + int ln_tau_size; /**< number ln(tau) values (only one if z_max_pk = 0) */ + double * ln_tau; /**< list of ln(tau) values ln_tau[index_tau] */ + + double * ln_pk; /**< Matter power spectrum. + depends on indices index_md, index_ic1, index_ic2, index_k, index_tau as: + ln_pk[(index_tau * psp->k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] + where index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since + the primordial spectrum is symmetric in (index_ic1, index_ic2)). + - for diagonal elements (index_ic1 = index_ic2) this arrays contains + ln[P(k)] where P(k) is positive by construction. + - for non-diagonal elements this arrays contains the k-dependent + cosine of the correlation angle, namely + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + This choice is convenient since the sign of the non-diagonal cross-correlation + is arbitrary. For fully correlated or anti-correlated initial conditions, + this non-diagonal element is independent on k, and equal to +1 or -1. + */ + + double * ddln_pk; /**< second derivative of above array with respect to log(tau), for spline interpolation. So: + - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is + good since this function is usually smooth. + - for non-diagonal coefficients, we spline + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + vs. ln(k), which is fine since this quantity is often assumed to be + constant (e.g for fully correlated/anticorrelated initial conditions) + or nearly constant, and with arbitrary sign. + */ + + double sigma8; /**< sigma8 parameter */ + + double * ln_pk_nl; /**< Non-linear matter power spectrum. + depends on indices index_k, index_tau as: + ln_pk_nl[index_tau * psp->k_size + index_k] + */ + double * ddln_pk_nl; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + int index_tr_delta_g; /**< index of gamma density transfer function */ + int index_tr_delta_b; /**< index of baryon density transfer function */ + int index_tr_delta_cdm; /**< index of cold dark matter density transfer function */ + int index_tr_delta_dcdm; /**< index of decaying cold dark matter density transfer function */ + int index_tr_delta_scf; /**< index of scalar field phi transfer function */ + int index_tr_delta_fld; /**< index of dark energy fluid density transfer function */ + int index_tr_delta_ur; /**< index of ultra-relativistic neutrinos/relics density transfer function */ + int index_tr_delta_dr; /**< index of decay radiation density transfer function */ + int index_tr_delta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) density transfer function */ + int index_tr_delta_tot; /**< index of total matter density transfer function */ + int index_tr_theta_g; /**< index of gamma velocity transfer function */ + int index_tr_theta_b; /**< index of baryon velocity transfer function */ + int index_tr_theta_cdm; /**< index of cold dark matter velocity transfer function */ + int index_tr_theta_dcdm; /**< index of decaying cold dark matter velocity transfer function */ + int index_tr_theta_scf; /**< index of derivative of scalar field phi transfer function */ + int index_tr_theta_fld; /**< index of dark energy fluid velocity transfer function */ + int index_tr_theta_ur; /**< index of ultra-relativistic neutrinos/relics velocity transfer function */ + int index_tr_theta_dr; /**< index of decay radiation velocity transfer function */ + int index_tr_theta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) velocity transfer function */ + int index_tr_theta_tot; /**< index of total matter velocity transfer function */ + int index_tr_phi; /**< index of Bardeen potential phi */ + int index_tr_psi; /**< index of Bardeen potential psi */ + int tr_size; /**< total number of species in transfer functions */ + + double * matter_transfer; /**< Matter transfer functions. + Depends on indices index_md,index_tau,index_ic,index_k, index_tr as: + matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] + */ + double * ddmatter_transfer; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + /* double * LddCl; /\**< density Cl's in the Limber plus thin shell approximation (then, there are no non-diagonal correlations between various shells of different redshifts); depends on index_tau,index_l as: LddCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ + + /* double * LTdCl; /\**< cross (temperature * density) Cl's in the Limber plus thin shell approximation; depends on index_tau,index_l as: LTdCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short spectra_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int spectra_bandpower( + struct spectra * psp, + int l1, + int l2, + double * TT_II, + double * TT_RI, + double * TT_RR + ); + + int spectra_cl_at_l( + struct spectra * psp, + double l, + double * cl, + double ** cl_md, + double ** cl_md_ic + ); + + int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, + double * output_ic + ); + + int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk, + double * pk_ic + ); + + int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot + ); + + int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot + ); + + int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output + ); + + int spectra_tk_at_k_and_z( + struct background * pba, + struct spectra * psp, + double k, + double z, + double * output + ); + + int spectra_init( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear *pnl, + struct transfers * ptr, + struct spectra * psp + ); + + int spectra_free( + struct spectra * psp + ); + + int spectra_indices( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ); + + int spectra_cls( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ); + + int spectra_compute_cl( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + int index_md, + int index_ic1, + int index_ic2, + int index_l, + int cl_integrand_num_columns, + double * cl_integrand, + double * primordial_pk, + double * transfer_ic1, + double * transfer_ic2 + ); + + int spectra_k_and_tau( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp + ); + + int spectra_pk( + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear *pnl, + struct spectra * psp + ); + + int spectra_sigma( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double *sigma + ); + + int spectra_matter_transfers( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp + ); + + int spectra_output_tk_titles(struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int spectra_output_tk_data( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ); + + int spectra_firstline_and_ic_suffix(struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix); + +#ifdef __cplusplus +} +#endif + +#endif +/* @endcond */ diff --git a/class_old/include/svnversion.h b/class_old/include/svnversion.h new file mode 100644 index 00000000..779741fa --- /dev/null +++ b/class_old/include/svnversion.h @@ -0,0 +1 @@ +#define _SVN_VERSION_ "6142M" diff --git a/class_old/include/thermodynamics.h b/class_old/include/thermodynamics.h new file mode 100644 index 00000000..e416c78c --- /dev/null +++ b/class_old/include/thermodynamics.h @@ -0,0 +1,688 @@ +/** @file thermodynamics.h Documented includes for thermodynamics module */ + +#ifndef __THERMODYNAMICS__ +#define __THERMODYNAMICS__ + +#include "background.h" +//#include "arrays.h" +//#include "helium.h" +//#include "hydrogen.h" + +/** + * List of possible recombination algorithms. + */ + +enum recombination_algorithm { + recfast, + hyrec +}; + +/** + * List of possible reionization schemes. + */ + +enum reionization_parametrization { + reio_none, /**< no reionization */ + reio_camb, /**< reionization parameterized like in CAMB */ + reio_bins_tanh, /**< binned reionization history with tanh inteprolation between bins */ + reio_half_tanh, /**< half a tanh, instead of the full tanh */ + reio_many_tanh /**< similar to reio_camb but with more than one tanh */ +}; + +/** + * Is the input parameter the reionization redshift or optical depth? + */ + +enum reionization_z_or_tau { + reio_z, /**< input = redshift */ + reio_tau /**< input = tau */ +}; + +/** + * Two useful smooth step functions, for smoothing transitions in recfast. + */ + +#define f1(x) (-0.75*x*(x*x/3.-1.)+0.5) /**< goes from 0 to 1 when x goes from -1 to 1 */ +#define f2(x) (x*x*(0.5-x/3.)*6.) /**< goes from 0 to 1 when x goes from 0 to 1 */ + +/** + * All thermodynamics parameters and evolution that other modules need to know. + * + * Once initialized by thermodynamics_init(), contains all the + * necessary information on the thermodynamics, and in particular, a + * table of thermodynamical quantities as a function of the redshift, + * used for interpolation in other modules. + */ + +struct thermo +{ + /** @name - input parameters initialized by user in input module + * (all other quantities are computed in this module, given these parameters + * and the content of the 'precision' and 'background' structures) */ + + //@{ + + double YHe; /**< \f$ Y_{He} \f$: primordial helium fraction */ + + enum recombination_algorithm recombination; /**< recombination code */ + + enum reionization_parametrization reio_parametrization; /**< reionization scheme */ + + enum reionization_z_or_tau reio_z_or_tau; /**< is the input parameter the reionization redshift or optical depth? */ + + double tau_reio; /**< if above set to tau, input value of reionization optical depth */ + + double z_reio; /**< if above set to z, input value of reionization redshift */ + + short compute_cb2_derivatives; /**< do we want to include in computation derivatives of baryon sound speed? */ + + short compute_damping_scale; /**< do we want to compute the simplest analytic approximation to the photon damping (or diffusion) scale? */ + + /** parameters for reio_camb */ + + double reionization_width; /**< width of H reionization */ + + double reionization_exponent; /**< shape of H reionization */ + + double helium_fullreio_redshift; /**< redshift for of helium reionization */ + + double helium_fullreio_width; /**< width of helium reionization */ + + /** parameters for reio_bins_tanh */ + + int binned_reio_num; /**< with how many bins do we want to describe reionization? */ + + double * binned_reio_z; /**< central z value for each bin */ + + double * binned_reio_xe; /**< imposed \f$ X_e(z)\f$ value at center of each bin */ + + double binned_reio_step_sharpness; /**< sharpness of tanh() step interpolating between binned values */ + + /** parameters for reio_many_tanh */ + + int many_tanh_num; /**< with how many jumps do we want to describe reionization? */ + + double * many_tanh_z; /**< central z value for each tanh jump */ + + double * many_tanh_xe; /**< imposed \f$ X_e(z)\f$ value at the end of each jump (ie at later times)*/ + + double many_tanh_width; /**< sharpness of tanh() steps */ + + /** parameters for energy injection */ + + double annihilation; /** parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + + short has_on_the_spot; /** flag to specify if we want to use the on-the-spot approximation **/ + + double decay; /** parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ + + double annihilation_variation; /** if this parameter is non-zero, + the function F(z)=(f / + m_cdm)(z) will be a parabola in + log-log scale between zmin and + zmax, with a curvature given by + annihlation_variation (must be + negative), and with a maximum in + zmax; it will be constant outside + this range */ + + double annihilation_z; /** if annihilation_variation is non-zero, + this is the value of z at which the + parameter annihilation is defined, i.e. + F(annihilation_z)=annihilation */ + + double annihilation_zmax; /** if annihilation_variation is non-zero, + redshift above which annihilation rate + is maximal */ + + double annihilation_zmin; /** if annihilation_variation is non-zero, + redshift below which annihilation rate + is constant */ + + double annihilation_f_halo; /** takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /** characteristic redshift for DM annihilation in halos*/ + + //@} + + /** @name - all indices for the vector of thermodynamical (=th) quantities stored in table */ + + //@{ + + int index_th_xe; /**< ionization fraction \f$ x_e \f$ */ + int index_th_dkappa; /**< Thomson scattering rate \f$ d \kappa / d \tau\f$ (units 1/Mpc) */ + int index_th_tau_d; /**< Baryon drag optical depth */ + int index_th_ddkappa; /**< scattering rate derivative \f$ d^2 \kappa / d \tau^2 \f$ */ + int index_th_dddkappa; /**< scattering rate second derivative \f$ d^3 \kappa / d \tau^3 \f$ */ + int index_th_exp_m_kappa; /**< \f$ exp^{-\kappa} \f$ */ + int index_th_g; /**< visibility function \f$ g = (d \kappa / d \tau) * exp^{-\kappa} \f$ */ + int index_th_dg; /**< visibility function derivative \f$ (d g / d \tau) \f$ */ + int index_th_ddg; /**< visibility function second derivative \f$ (d^2 g / d \tau^2) \f$ */ + int index_th_Tb; /**< baryon temperature \f$ T_b \f$ */ + int index_th_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_th_dcb2; /**< derivative wrt conformal time of squared baryon sound speed \f$ d [c_b^2] / d \tau \f$ (only computed if some non-minimal tight-coupling schemes is requested) */ + int index_th_ddcb2; /**< second derivative wrt conformal time of squared baryon sound speed \f$ d^2 [c_b^2] / d \tau^2 \f$ (only computed if some non0-minimal tight-coupling schemes is requested) */ + int index_th_rate; /**< maximum variation rate of \f$ exp^{-\kappa}\f$, g and \f$ (d g / d \tau) \f$, used for computing integration step in perturbation module */ + int index_th_r_d; /**< simple analytic approximation to the photon comoving damping scale */ + int th_size; /**< size of thermodynamics vector */ + + //@} + + /** @name - thermodynamics interpolation tables */ + + //@{ + + int tt_size; /**< number of lines (redshift steps) in the tables */ + double * z_table; /**< vector z_table[index_z] with values of redshift (vector of size tt_size) */ + double * thermodynamics_table; /**< table thermodynamics_table[index_z*pth->tt_size+pba->index_th] with all other quantities (array of size th_size*tt_size) */ + + //@} + + /** @name - table of their second derivatives, used for spline interpolation */ + + //@{ + + double * d2thermodynamics_dz2_table; /**< table d2thermodynamics_dz2_table[index_z*pth->tt_size+pba->index_th] with values of \f$ d^2 t_i / dz^2 \f$ (array of size th_size*tt_size) */ + + //@} + + + /** @name - redshift, conformal time and sound horizon at recombination */ + + //@{ + + double z_rec; /**< z at which the visibility reaches its maximum (= recombination redshift) */ + double tau_rec; /**< conformal time at which the visibility reaches its maximum (= recombination time) */ + double rs_rec; /**< comoving sound horizon at recombination */ + double ds_rec; /**< physical sound horizon at recombination */ + double ra_rec; /**< conformal angular diameter distance to recombination */ + double da_rec; /**< physical angular diameter distance to recombination */ + double rd_rec; /**< comoving photon damping scale at recombination */ + double z_d; /**< baryon drag redshift */ + double tau_d; /**< baryon drag time */ + double ds_d; /**< physical sound horizon at baryon drag */ + double rs_d; /**< comoving sound horizon at baryon drag */ + double tau_cut; /**< at at which the visibility goes below a fixed fraction of the maximum visibility, used for an approximation in perturbation module */ + double angular_rescaling; /**< [ratio ra_rec / (tau0-tau_rec)]: gives CMB rescaling in angular space relative to flat model (=1 for curvature K=0) */ + + //@} + + /** @name - redshift, conformal time and sound horizon at recombination */ + + //@{ + + double tau_free_streaming; /**< minimum value of tau at which sfree-streaming approximation can be switched on */ + + //@} + + /** @name - initial conformal time at which thermodynamical variables have been be integrated */ + + //@{ + + double tau_ini; /**< initial conformal time at which thermodynamical variables have been be integrated */ + + //@} + +/** @name - total number density of electrons today (free or not) */ + + //@{ + + double n_e; /**< total number density of electrons today (free or not) */ + + //@} + + /** + *@name - some flags needed for thermodynamics functions + */ + + //@{ + + short inter_normal; /**< flag for calling thermodynamics_at_z and find position in interpolation table normally */ + short inter_closeby; /**< flag for calling thermodynamics_at_z and find position in interpolation table starting from previous position in previous call */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short thermodynamics_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} + +}; + +/** + * Temporary structure where all the recombination history is defined and stored. + * + * This structure is used internally by the thermodynamics module, + * but never passed to other modules. + */ + +struct recombination { + + /** @name - indices of vector of thermodynamics variables related to recombination */ + + //@{ + + int index_re_z; /**< redshift \f$ z \f$ */ + int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ + int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ + int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau \f$ (units 1/Mpc) */ + int re_size; /**< size of this vector */ + + //@} + + /** @name - table of the above variables at each redshift, and number of redshifts */ + + //@{ + + int rt_size; /**< number of lines (redshift steps) in the table */ + double * recombination_table; /**< table recombination_table[index_z*preco->re_size+index_re] with all other quantities (array of size preco->rt_size*preco->re_size) */ + + //@} + + /** @name - recfast parameters needing to be passed to + thermodynamics_derivs_with_recfast() routine */ + + //@{ + + double CDB; /**< defined as in RECFAST */ + double CR; /**< defined as in RECFAST */ + double CK; /**< defined as in RECFAST */ + double CL; /**< defined as in RECFAST */ + double CT; /**< defined as in RECFAST */ + double fHe; /**< defined as in RECFAST */ + double CDB_He; /**< defined as in RECFAST */ + double CK_He; /**< defined as in RECFAST */ + double CL_He; /**< defined as in RECFAST */ + double fu; /**< defined as in RECFAST */ + double H_frac; /**< defined as in RECFAST */ + double Tnow; /**< defined as in RECFAST */ + double Nnow; /**< defined as in RECFAST */ + double Bfact; /**< defined as in RECFAST */ + double CB1; /**< defined as in RECFAST */ + double CB1_He1; /**< defined as in RECFAST */ + double CB1_He2; /**< defined as in RECFAST */ + double H0; /**< defined as in RECFAST */ + double YHe; /**< defined as in RECFAST */ + + /* parameters for energy injection */ + + double annihilation; /**< parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + + short has_on_the_spot; /**< flag to specify if we want to use the on-the-spot approximation **/ + + double decay; /**< parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ + + double annihilation_variation; /**< if this parameter is non-zero, + the function F(z)=(f / + m_cdm)(z) will be a parabola in + log-log scale between zmin and + zmax, with a curvature given by + annihlation_variation (must be + negative), and with a maximum in + zmax; it will be constant outside + this range */ + + double annihilation_z; /**< if annihilation_variation is non-zero, + this is the value of z at which the + parameter annihilation is defined, i.e. + F(annihilation_z)=annihilation */ + + double annihilation_zmax; /**< if annihilation_variation is non-zero, + redshift above which annihilation rate + is maximal */ + + double annihilation_zmin; /**< if annihilation_variation is non-zero, + redshift below which annihilation rate + is constant */ + + double annihilation_f_halo; /**< takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /**< characteristic redshift for DM annihilation in halos*/ + + //@} + +}; + +/** + * Temporary structure where all the reionization history is defined and stored. + * + * This structure is used internally by the thermodynamics module, + * but never passed to other modules. + */ + +struct reionization { + + /** @name - indices of vector of thermodynamics variables related to reionization */ + + //@{ + + int index_re_z; /**< redshift \f$ z \f$ */ + int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ + int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ + int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau\f$ (units 1/Mpc) */ + int index_re_dkappadz; /**< Thomson scattering rate with respect to redshift \f$ d \kappa / d z\f$ (units 1/Mpc) */ + int index_re_d3kappadz3; /**< second derivative of previous quantity with respect to redshift */ + int re_size; /**< size of this vector */ + + //@} + + /** @name - table of the above variables at each redshift, and number of redshifts */ + + //@{ + + int rt_size; /**< number of lines (redshift steps) in the table */ + double * reionization_table; /**< table reionization_table[index_z*preio->re_size+index_re] with all other quantities (array of size preio->rt_size*preio->re_size) */ + + //@} + + /** @name - reionization optical depth inferred from reionization history */ + + //@{ + + double reionization_optical_depth; /**< reionization optical depth inferred from reionization history */ + + //@} + + /** @name - indices describing input parameters used in the definition of the various possible functions x_e(z) */ + + //@{ + + /* parameters used by reio_camb */ + + int index_reio_redshift; /**< hydrogen reionization redshift */ + int index_reio_exponent; /**< an exponent used in the function x_e(z) in the reio_camb scheme */ + int index_reio_width; /**< a width defining the duration of hydrogen reionization in the reio_camb scheme */ + int index_reio_xe_before; /**< ionization fraction at redshift 'reio_start' */ + int index_reio_xe_after; /**< ionization fraction after full reionization */ + int index_helium_fullreio_fraction; /**< helium full reionization fraction inferred from primordial helium fraction */ + int index_helium_fullreio_redshift; /**< helium full reionization redshift */ + int index_helium_fullreio_width; /**< a width defining the duration of helium full reionization in the reio_camb scheme */ + + /* parameters used by reio_bins_tanh and reio_many_tanh */ + + int reio_num_z; /**< number of reionization jumps */ + int index_reio_first_z; /**< redshift at which we start to impose reionization function */ + int index_reio_first_xe; /**< ionization fraction at redshift first_z (inferred from recombination code) */ + int index_reio_step_sharpness; /**< sharpness of tanh jump */ + + /* parameters used by all schemes */ + + int index_reio_start; /**< redshift above which hydrogen reionization neglected */ + + //@} + + /** @name - vector of such parameters, and its size */ + + double * reionization_parameters; /**< vector containing all reionization parameters necessary to compute xe(z) */ + int reio_num_params; /**< length of vector reionization_parameters */ + + //@} + + /** @name - index of line in recombination table corresponding to first line of reionization table */ + + //@{ + + int index_reco_when_reio_start; /**< index of line in recombination table corresponding to first line of reionization table*/ + + //@} + +}; + +/** + * temporary parameters and workspace passed to the thermodynamics_derivs function + */ + +struct thermodynamics_parameters_and_workspace { + + /* structures containing fixed input parameters (indices, ...) */ + struct background * pba; + struct precision * ppr; + struct recombination * preco; + + /* workspace */ + double * pvecback; + +}; + +/**************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int thermodynamics_at_z( + struct background * pba, + struct thermo * pth, + double z, + short inter_mode, + int * last_index, + double * pvecback, + double * pvecthermo + ); + + int thermodynamics_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth + ); + + int thermodynamics_free( + struct thermo * pthermo + ); + + int thermodynamics_indices( + struct thermo * pthermo, + struct recombination * preco, + struct reionization * preio + ); + + int thermodynamics_helium_from_bbn( + struct precision * ppr, + struct background * pba, + struct thermo * pth + ); + + int thermodynamics_onthespot_energy_injection( + struct precision * ppr, + struct background * pba, + struct recombination * preco, + double z, + double * energy_rate, + ErrorMsg error_message + ); + + int thermodynamics_energy_injection( + struct precision * ppr, + struct background * pba, + struct recombination * preco, + double z, + double * energy_rate, + ErrorMsg error_message + ); + + int thermodynamics_reionization_function( + double z, + struct thermo * pth, + struct reionization * preio, + double * xe + ); + + int thermodynamics_reionization( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio, + double * pvecback + ); + + int thermodynamics_reionization_sample( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio, + double * pvecback + ); + + int thermodynamics_get_xe_before_reionization( + struct precision * ppr, + struct thermo * pth, + struct recombination * preco, + double z, + double * xe); + + int thermodynamics_recombination( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * prec, + double * pvecback + ); + + int thermodynamics_recombination_with_hyrec( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * prec, + double * pvecback + ); + + int thermodynamics_recombination_with_recfast( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * prec, + double * pvecback + ); + + int thermodynamics_derivs_with_recfast( + double z, + double * y, + double * dy, + void * fixed_parameters, + ErrorMsg error_message + ); + + int thermodynamics_merge_reco_and_reio( + struct precision * ppr, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio + ); + + int thermodynamics_output_titles(struct background * pba, + struct thermo *pth, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int thermodynamics_output_data(struct background * pba, + struct thermo *pth, + int number_of_titles, + double *data + ); + + int thermodynamics_tanh(double x, + double center, + double before, + double after, + double width, + double * result); + +#ifdef __cplusplus +} +#endif + +/**************************************************************/ + +/** + * @name some flags + */ + +//@{ + +#define _BBN_ -1 + +//@} + +/** + * @name Some basic constants needed by RECFAST: + */ + +//@{ + +#define _m_e_ 9.10938215e-31 /**< electron mass in Kg */ +#define _m_p_ 1.672621637e-27 /**< proton mass in Kg */ +#define _m_H_ 1.673575e-27 /**< Hydrogen mass in Kg */ +#define _not4_ 3.9715 /**< Helium to Hydrogen mass ratio */ +#define _sigma_ 6.6524616e-29 /**< Thomson cross-section in m^2 */ + +//@} + +/** + * @name Some specific constants needed by RECFAST: + */ + +//@{ + +#define _RECFAST_INTEG_SIZE_ 3 + +#define _Lambda_ 8.2245809 +#define _Lambda_He_ 51.3 +#define _L_H_ion_ 1.096787737e7 +#define _L_H_alpha_ 8.225916453e6 +#define _L_He1_ion_ 1.98310772e7 +#define _L_He2_ion_ 4.389088863e7 +#define _L_He_2s_ 1.66277434e7 +#define _L_He_2p_ 1.71134891e7 +#define _A2P_s_ 1.798287e9 /*updated like in recfast 1.4*/ +#define _A2P_t_ 177.58e0 /*updated like in recfast 1.4*/ +#define _L_He_2Pt_ 1.690871466e7 /*updated like in recfast 1.4*/ +#define _L_He_2St_ 1.5985597526e7 /*updated like in recfast 1.4*/ +#define _L_He2St_ion_ 3.8454693845e6 /*updated like in recfast 1.4*/ +#define _sigma_He_2Ps_ 1.436289e-22 /*updated like in recfast 1.4*/ +#define _sigma_He_2Pt_ 1.484872e-22 /*updated like in recfast 1.4*/ + +//@} + +/** + * @name Some specific constants needed by recfast_derivs: + */ + +//@{ + +#define _a_PPB_ 4.309 +#define _b_PPB_ -0.6166 +#define _c_PPB_ 0.6703 +#define _d_PPB_ 0.5300 +#define _T_0_ pow(10.,0.477121) /* from recfast 1.4 */ +#define _a_VF_ pow(10.,-16.744) +#define _b_VF_ 0.711 +#define _T_1_ pow(10.,5.114) +#define _a_trip_ pow(10.,-16.306) /* from recfast 1.4 */ +#define _b_trip_ 0.761 /* from recfast 1.4 */ + +//@} + +/** + * @name Some limits imposed on cosmological parameter values: + */ +/* @endcond */ +//@{ + +#define _YHE_BIG_ 0.5 /**< maximal \f$ Y_{He} \f$ */ +#define _YHE_SMALL_ 0.01 /**< minimal \f$ Y_{He} \f$ */ +#define _Z_REC_MAX_ 2000. +#define _Z_REC_MIN_ 500. + +//@} + +#endif diff --git a/class_old/include/transfer.h b/class_old/include/transfer.h new file mode 100644 index 00000000..cccb4b81 --- /dev/null +++ b/class_old/include/transfer.h @@ -0,0 +1,673 @@ +/** @file transfer.h Documented includes for transfer module. */ + +#ifndef __TRANSFER__ +#define __TRANSFER__ + +#include "nonlinear.h" +#include "hyperspherical.h" +#include +#include +#include "errno.h" + +/* macro: test if index_tt is in the range between index and index+num, while the flag is true */ +#define _index_tt_in_range_(index,num,flag) (flag == _TRUE_) && (index_tt >= index) && (index_tt < index+num) + +/** + * Structure containing everything about transfer functions in + * harmonic space \f$ \Delta_l^{X} (q) \f$ that other modules need to + * know. + * + * Once initialized by transfer_init(), contains all tables of + * transfer functions used for interpolation in other modules, for all + * requested modes (scalar/vector/tensor), initial conditions, types + * (temperature, polarization, etc), multipoles l, and wavenumbers q. + * + * Wavenumbers are called q in this module and k in the perturbation + * module. In flat universes k=q. In non-flat universes q and k differ + * through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, + * tensor. q should be used throughout the transfer module, except + * when interpolating or manipulating the source functions S(k,tau) + * calculated in the perturbation module: for a given value of q, this + * should be done at the corresponding k(q). + * + * The content of this structure is entirely computed in this module, + * given the content of the 'precision', 'bessels', 'background', + * 'thermodynamics' and 'perturbation' structures. + */ + +struct transfers { + + /** @name - input parameters initialized by user in input module + * (all other quantities are computed in this module, given these + * parameters and the content of previous structures) */ + + //@{ + + double lcmb_rescale; /**< normally set to one, can be used + exceptionally to rescale by hand the CMB + lensing potential */ + double lcmb_tilt; /**< normally set to zero, can be used + exceptionally to tilt by hand the CMB + lensing potential */ + double lcmb_pivot; /**< if lcmb_tilt non-zero, corresponding pivot + scale */ + + double selection_bias[_SELECTION_NUM_MAX_]; /**< light-to-mass bias in the transfer function of density number count */ + double selection_magnification_bias[_SELECTION_NUM_MAX_]; /**< magnification bias in the transfer function of density number count */ + + short has_nz_file; /**< Has dN/dz (selection function) input file? */ + short has_nz_analytic; /**< Use analytic form for dN/dz (selection function) distribution? */ + FileName nz_file_name; /**< dN/dz (selection function) input file name */ + int nz_size; /**< number of redshift values in input tabulated selection function */ + double * nz_z; /**< redshift values in input tabulated selection function */ + double * nz_nz; /**< input tabulated values of selection function */ + double * nz_ddnz; /**< second derivatives in splined selection function*/ + + short has_nz_evo_file; /**< Has dN/dz (evolution function) input file? */ + short has_nz_evo_analytic; /**< Use analytic form for dN/dz (evolution function) distribution? */ + FileName nz_evo_file_name; /**< dN/dz (evolution function) input file name */ + int nz_evo_size; /**< number of redshift values in input tabulated evolution function */ + double * nz_evo_z; /**< redshift values in input tabulated evolution function */ + double * nz_evo_nz; /**< input tabulated values of evolution function */ + double * nz_evo_dlog_nz; /**< log of tabulated values of evolution function */ + double * nz_evo_dd_dlog_nz; /**< second derivatives in splined log of evolution function */ + + //@} + + /** @name - flag stating whether we need transfer functions at all */ + + //@{ + + short has_cls; /**< copy of same flag in perturbation structure */ + + //@} + + /** @name - number of modes and transfer function types */ + + //@{ + + int md_size; /**< number of modes included in computation */ + + int index_tt_t0; /**< index for transfer type = temperature (j=0 term) */ + int index_tt_t1; /**< index for transfer type = temperature (j=1 term) */ + int index_tt_t2; /**< index for transfer type = temperature (j=2 term) */ + int index_tt_e; /**< index for transfer type = E-polarization */ + int index_tt_b; /**< index for transfer type = B-polarization */ + int index_tt_lcmb; /**< index for transfer type = CMB lensing */ + int index_tt_density; /**< index for first bin of transfer type = matter density */ + int index_tt_lensing; /**< index for first bin of transfer type = galaxy lensing */ + + int index_tt_rsd; /**< index for first bin of transfer type = redshift space distortion of number count */ + int index_tt_d0; /**< index for first bin of transfer type = doppler effect for of number count (j=0 term) */ + int index_tt_d1; /**< index for first bin of transfer type = doppler effect for of number count (j=1 term) */ + int index_tt_nc_lens; /**< index for first bin of transfer type = lensing for of number count */ + int index_tt_nc_g1; /**< index for first bin of transfer type = gravity term G1 for of number count */ + int index_tt_nc_g2; /**< index for first bin of transfer type = gravity term G2 for of number count */ + int index_tt_nc_g3; /**< index for first bin of transfer type = gravity term G3 for of number count */ + int index_tt_nc_g4; /**< index for first bin of transfer type = gravity term G3 for of number count */ + int index_tt_nc_g5; /**< index for first bin of transfer type = gravity term G3 for of number count */ + + int * tt_size; /**< number of requested transfer types tt_size[index_md] for each mode */ + + //@} + + /** @name - number and list of multipoles */ + + //@{ + + int ** l_size_tt; /**< number of multipole values for which we effectively compute the transfer function,l_size_tt[index_md][index_tt] */ + + int * l_size; /**< number of multipole values for each requested mode, l_size[index_md] */ + + int l_size_max; /**< greatest of all l_size[index_md] */ + + int * l; /**< list of multipole values l[index_l] */ + + //int * l_size_bessel; /**< for each wavenumber, maximum value of l at which bessel functions must be evaluated */ + + double angular_rescaling; /**< correction between l and k space due to curvature (= comoving angular diameter distance to recombination / comoving radius to recombination) */ + + //@} + + /** @name - number and list of wavenumbers */ + + //@{ + + size_t q_size; /**< number of wavenumber values */ + + double * q; /**< list of wavenumber values, q[index_q] */ + + double ** k; /**< list of wavenumber values for each requested mode, k[index_md][index_q]. In flat universes k=q. In non-flat universes q and k differ through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, tensor. q should be used throughout the transfer module, excepted when interpolating or manipulating the source functions S(k,tau): for a given value of q this should be done in k(q). */ + + int index_q_flat_approximation; /**< index of the first q value using the flat rescaling approximation */ + + //@} + + /** @name - transfer functions */ + + //@{ + + double ** transfer; /**< table of transfer functions for each mode, initial condition, type, multipole and wavenumber, with argument transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) * ptr->l_size[index_md] + index_l) * ptr->q_size + index_q] */ + + //@} + + /** @name - technical parameters */ + + //@{ + + short initialise_HIS_cache; /**< only true if we are using CLASS for setting up a cache of HIS structures */ + + short transfer_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ + + ErrorMsg error_message; /**< zone for writing error messages */ + + //@} +}; + +/** + * Structure containing all the quantities that each thread needs to + * know for computing transfer functions (but that can be forgotten + * once the transfer functions are known, otherwise they would be + * stored in the transfer module) +*/ + +struct transfer_workspace { + + /** @name - quantities related to Bessel functions */ + + //@{ + + HyperInterpStruct HIS; /**< structure containing all hyperspherical bessel functions (flat case) or all hyperspherical bessel functions for a given value of beta=q/sqrt(|K|) (non-flat case). HIS = Hyperspherical Interpolation Structure. */ + + int HIS_allocated; /**< flag specifying whether the previous structure has been allocated */ + + HyperInterpStruct * pBIS; /**< pointer to structure containing all the spherical bessel functions of the flat case (used even in the non-flat case, for approximation schemes). pBIS = pointer to Bessel Interpolation Structure. */ + + int l_size; /**< number of l values */ + + //@} + + /** @name - quantities related to the integrand of the transfer functions (most of them are arrays of time) */ + + //@{ + + int tau_size; /**< number of discrete time values for a given type */ + int tau_size_max; /**< maximum number of discrete time values for all types */ + double * interpolated_sources; /**< interpolated_sources[index_tau]: + sources interpolated from the + perturbation module at the right + value of k */ + double * sources; /**< sources[index_tau]: sources + used in transfer module, possibly + differing from those in the + perturbation module by some + resampling or rescaling */ + double * tau0_minus_tau; /**< tau0_minus_tau[index_tau]: values of (tau0 - tau) */ + double * w_trapz; /**< w_trapz[index_tau]: values of weights in trapezoidal integration (related to time steps) */ + double * chi; /**< chi[index_tau]: value of argument of bessel + function: k(tau0-tau) (flat case) + or sqrt(|K|)(tau0-tau) (non-flat + case) */ + double * cscKgen; /**< cscKgen[index_tau]: useful trigonometric function */ + double * cotKgen; /**< cotKgen[index_tau]: useful trigonometric function */ + + //@} + + /** @name - parameters defining the spatial curvature (copied from background structure) */ + + //@{ + + double K; /**< curvature parameter (see background module for details) */ + int sgnK; /**< 0 (flat), 1 (positive curvature, spherical, closed), -1 (negative curvature, hyperbolic, open) */ + + //@} + + double tau0_minus_tau_cut; /**< critical value of (tau0-tau) in time cut approximation for the wavenumber at hand */ + short neglect_late_source; /**< flag stating whether we use the time cut approximation for the wavenumber at hand */ +}; + +/** + * enumeration of possible source types. This looks redundant with + * respect to the definition of indices index_tt_... This definition is however + * convenient and time-saving: it allows to use a "case" statement in + * transfer_radial_function() + */ + +typedef enum {SCALAR_TEMPERATURE_0, + SCALAR_TEMPERATURE_1, + SCALAR_TEMPERATURE_2, + SCALAR_POLARISATION_E, + VECTOR_TEMPERATURE_1, + VECTOR_TEMPERATURE_2, + VECTOR_POLARISATION_E, + VECTOR_POLARISATION_B, + TENSOR_TEMPERATURE_2, + TENSOR_POLARISATION_E, + TENSOR_POLARISATION_B, + NC_RSD} radial_function_type; + +enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6}; + +/*************************************************************************************************************/ +/* @cond INCLUDE_WITH_DOXYGEN */ +/* + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int transfer_functions_at_q( + struct transfers * ptr, + int index_md, + int index_ic, + int index_type, + int index_l, + double q, + double * ptransfer_local + ); + + int transfer_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr + ); + + int transfer_free( + struct transfers * ptr + ); + + int transfer_indices_of_transfers( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_period, + double K, + int sgnK + ); + + int transfer_perturbation_copy_sources_and_nl_corrections( + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr, + double *** sources + ); + + int transfer_perturbation_source_spline( + struct perturbs * ppt, + struct transfers * ptr, + double *** sources, + double *** sources_spline + ); + + int transfer_perturbation_sources_free( + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr, + double *** sources + ); + + int transfer_perturbation_sources_spline_free( + struct perturbs * ppt, + struct transfers * ptr, + double *** sources_spline + ); + + int transfer_get_l_list( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr + ); + + int transfer_get_q_list( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_period, + double K, + int sgnK + ); + + int transfer_get_q_list_v1( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_period, + double K, + int sgnK + ); + + int transfer_get_k_list( + struct perturbs * ppt, + struct transfers * ptr, + double K + ); + + int transfer_get_source_correspondence( + struct perturbs * ppt, + struct transfers * ptr, + int ** tp_of_tt + ); + + int transfer_free_source_correspondence( + struct transfers * ptr, + int ** tp_of_tt + ); + + int transfer_source_tau_size_max( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + double tau0, + int * tau_size_max + ); + + int transfer_source_tau_size( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + double tau0, + int index_md, + int index_tt, + int * tau_size + ); + + int transfer_compute_for_each_q( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int ** tp_of_tt, + int index_q, + int tau_size_max, + double tau_rec, + double *** sources, + double *** sources_spline, + struct transfer_workspace * ptw + ); + + int transfer_radial_coordinates( + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_md, + int index_q + ); + + int transfer_interpolate_sources( + struct perturbs * ppt, + struct transfers * ptr, + int index_q, + int index_md, + int index_ic, + int index_type, + double * sources, + double * source_spline, + double * interpolated_sources + ); + + int transfer_sources( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double * interpolated_sources, + double tau_rec, + int index_q, + int index_md, + int index_tt, + double * sources, + double * tau0_minus_tau, + double * delta_tau, + int * tau_size_out + ); + + int transfer_selection_function( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double z, + double * selection); + + int transfer_dNdz_analytic( + struct transfers * ptr, + double z, + double * dNdz, + double * dln_dNdz_dz); + + int transfer_selection_sampling( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau0_minus_tau, + int tau_size); + + int transfer_lensing_sampling( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double tau0, + double * tau0_minus_tau, + int tau_size); + + int transfer_source_resample( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau0_minus_tau, + int tau_size, + int index_md, + double tau0, + double * interpolated_sources, + double * sources); + + int transfer_selection_times( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau_min, + double * tau_mean, + double * tau_max); + + int transfer_selection_compute( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double * selection, + double * tau0_minus_tau, + double * delta_tau, + int tau_size, + double * pvecback, + double tau0, + int bin); + + int transfer_compute_for_each_l( + struct transfer_workspace * ptw, + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_q, + int index_md, + int index_ic, + int index_tt, + int index_l, + double l, + double q_max_bessel, + radial_function_type radial_type + ); + + int transfer_use_limber( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_max_bessel, + int index_md, + int index_tt, + double q, + double l, + short * use_limber + ); + + int transfer_integrate( + struct perturbs * ppt, + struct transfers * ptr, + struct transfer_workspace *ptw, + int index_q, + int index_md, + int index_tt, + double l, + int index_l, + double q, + radial_function_type radial_type, + double * trsf + ); + + int transfer_limber( + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_md, + int index_q, + double l, + double q, + radial_function_type radial_type, + double * trsf + ); + + int transfer_limber_interpolate( + struct transfers * ptr, + double * tau0_minus_tau, + double * sources, + int tau_size, + double tau0_minus_tau_limber, + double * S + ); + + int transfer_limber2( + int tau_size, + struct transfers * ptr, + int index_md, + int index_q, + double l, + double q, + double * tau0_minus_tau, + double * sources, + radial_function_type radial_type, + double * trsf + ); + + int transfer_can_be_neglected( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_md, + int index_ic, + int index_tt, + double ra_rec, + double q, + double l, + short * neglect + ); + + int transfer_late_source_can_be_neglected( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_md, + int index_tt, + double l, + short * neglect); + + int transfer_select_radial_function( + struct perturbs * ppt, + struct transfers * ptr, + int index_md, + int index_tt, + radial_function_type *radial_type + ); + + int transfer_radial_function( + struct transfer_workspace * ptw, + struct perturbs * ppt, + struct transfers * ptr, + double k, + int index_q, + int index_l, + int x_size, + double * radial_function, + radial_function_type radial_type + ); + + int transfer_init_HIS_from_bessel( + struct transfers * ptr, + HyperInterpStruct *pHIS + ); + + int transfer_global_selection_read( + struct transfers * ptr + ); + + int transfer_workspace_init( + struct transfers * ptr, + struct precision * ppr, + struct transfer_workspace **ptw, + int perturb_tau_size, + int tau_size_max, + double K, + int sgnK, + double tau0_minus_tau_cut, + HyperInterpStruct * pBIS + ); + + int transfer_workspace_free( + struct transfers * ptr, + struct transfer_workspace *ptw + ); + + int transfer_update_HIS( + struct precision * ppr, + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_q, + double tau0 + ); + + int transfer_get_lmax(int (*get_xmin_generic)(int sgnK, + int l, + double nu, + double xtol, + double phiminabs, + double *x_nonzero, + int *fevals), + int sgnK, + double nu, + int *lvec, + int lsize, + double phiminabs, + double xmax, + double xtol, + int *index_l_left, + int *index_l_right, + ErrorMsg error_message); + +#ifdef __cplusplus +} +#endif + +#endif +/* @endcond */ diff --git a/class_old/main/class.c b/class_old/main/class.c new file mode 100644 index 00000000..aedb3aa6 --- /dev/null +++ b/class_old/main/class.c @@ -0,0 +1,172 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + struct file_content fc; + + if (parser_init(&fc,15,"none",errmsg) == _FAILURE_){ + printf("\n\nparser_init\n=>%s\n",errmsg); + return _FAILURE_; + } + strcpy(fc.name[0],"h"); + strcpy(fc.value[0],"0.7"); + + strcpy(fc.name[1],"Omega_cdm"); + strcpy(fc.value[1],"0.25"); + + strcpy(fc.name[2],"Omega_b"); + strcpy(fc.value[2],"0.04"); + + strcpy(fc.name[3],"Omega_k"); + strcpy(fc.value[3],"0.0"); + + // set Omega_Lambda = 0.0 if w !=-1 + strcpy(fc.name[4],"Omega_Lambda"); + strcpy(fc.value[4],"0.0"); + + strcpy(fc.name[5],"w0_fld"); + strcpy(fc.value[5],"-.99"); + + strcpy(fc.name[6],"wa_fld"); + strcpy(fc.value[6],"0.0"); + + strcpy(fc.name[7],"n_s"); + strcpy(fc.value[7],"0.0"); + + strcpy(fc.name[8],"A_s"); + strcpy(fc.value[8],"2.215e-9"); + + strcpy(fc.name[9],"output"); + strcpy(fc.value[9],"mPk"); + + strcpy(fc.name[10],"non linear"); + strcpy(fc.value[10],"Halofit"); + + strcpy(fc.name[11],"P_k_max_1/Mpc"); + strcpy(fc.value[11],"100."); + + strcpy(fc.name[12],"z_max_pk"); + strcpy(fc.value[12],"10."); + + strcpy(fc.name[13],"modes"); + strcpy(fc.value[13],"s"); + + strcpy(fc.name[14],"lensing"); + strcpy(fc.value[14],"no"); + + + if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init\n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + double Z, ic; + int i = spectra_pk_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z,&ic); + printf("%e\n",Z); + i = spectra_pk_nl_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z); + printf("%e\n",Z); + + // if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + // printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + // return _FAILURE_; + // } + + // if (output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) == _FAILURE_) { + // printf("\n\nError in output_init \n=>%s\n",op.error_message); + // return _FAILURE_; + // } + + // /****** all calculations done, now free the structures ******/ + + // if (lensing_free(&le) == _FAILURE_) { + // printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + // return _FAILURE_; + // } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class_old/source/.spectra.c.swp b/class_old/source/.spectra.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..e1010a850747252d7be62c77678c02c1ec56346a GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/class_old/source/background.c b/class_old/source/background.c new file mode 100644 index 00000000..787c2742 --- /dev/null +++ b/class_old/source/background.c @@ -0,0 +1,2194 @@ +/** @file background.c Documented background module + * + * * Julien Lesgourgues, 17.04.2011 + * * routines related to ncdm written by T. Tram in 2011 + * + * Deals with the cosmological background evolution. + * This module has two purposes: + * + * - at the beginning, to initialize the background, i.e. to integrate + * the background equations, and store all background quantities + * as a function of conformal time inside an interpolation table. + * + * - to provide routines which allow other modules to evaluate any + * background quantity for a given value of the conformal time (by + * interpolating within the interpolation table), or to find the + * correspondence between redshift and conformal time. + * + * + * The overall logic in this module is the following: + * + * 1. most background parameters that we will call {A} + * (e.g. rho_gamma, ..) can be expressed as simple analytical + * functions of a few variables that we will call {B} (in simplest + * models, of the scale factor 'a'; in extended cosmologies, of 'a' + * plus e.g. (phi, phidot) for quintessence, or some temperature for + * exotic particles, etc...). + * + * 2. in turn, quantities {B} can be found as a function of conformal + * time by integrating the background equations. + * + * 3. some other quantities that we will call {C} (like e.g. the + * sound horizon or proper time) also require an integration with + * respect to time, that cannot be inferred analytically from + * parameters {B}. + * + * So, we define the following routines: + * + * - background_functions() returns all background + * quantities {A} as a function of quantities {B}. + * + * - background_solve() integrates the quantities {B} and {C} with + * respect to conformal time; this integration requires many calls + * to background_functions(). + * + * - the result is stored in the form of a big table in the background + * structure. There is one column for conformal time 'tau'; one or + * more for quantities {B}; then several columns for quantities {A} + * and {C}. + * + * Later in the code, if we know the variables {B} and need some + * quantity {A}, the quickest and most precise way is to call directly + * background_functions() (for instance, in simple models, if we want + * H at a given value of the scale factor). If we know 'tau' and want + * any other quantity, we can call background_at_tau(), which + * interpolates in the table and returns all values. Finally it can be + * useful to get 'tau' for a given redshift 'z': this can be done with + * background_tau_of_z(). So if we are somewhere in the code, knowing + * z and willing to get background quantities, we should call first + * background_tau_of_z() and then background_at_tau(). + * + * + * In order to save time, background_at_tau() can be called in three + * modes: short_info, normal_info, long_info (returning only essential + * quantities, or useful quantities, or rarely useful + * quantities). Each line in the interpolation table is a vector whose + * first few elements correspond to the short_info format; a larger + * fraction contribute to the normal format; and the full vector + * corresponds to the long format. The guideline is that short_info + * returns only geometric quantities like a, H, H'; normal format + * returns quantities strictly needed at each step in the integration + * of perturbations; long_info returns quantities needed only + * occasionally. + * + * In summary, the following functions can be called from other modules: + * + * -# background_init() at the beginning + * -# background_at_tau(), background_tau_of_z() at any later time + * -# background_free() at the end, when no more calls to the previous functions are needed + */ + +#include "background.h" + +/** + * Background quantities at given conformal time tau. + * + * Evaluates all background quantities at a given value of + * conformal time by reading the pre-computed table and interpolating. + * + * @param pba Input: pointer to background structure (containing pre-computed table) + * @param tau Input: value of conformal time + * @param return_format Input: format of output vector (short, normal, long) + * @param intermode Input: interpolation mode (normal or closeby) + * @param last_index Input/Output: index of the previous/current point in the interpolation array (input only for closeby mode, output for both) + * @param pvecback Output: vector (assumed to be already allocated) + * @return the error status + */ + +int background_at_tau( + struct background *pba, + double tau, + short return_format, + short intermode, + int * last_index, + double * pvecback /* vector with argument pvecback[index_bg] (must be already allocated with a size compatible with return_format) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + /* size of output vector, controlled by input parameter return_format */ + int pvecback_size; + + /** - check that tau is in the pre-computed range */ + + class_test(tau < pba->tau_table[0], + pba->error_message, + "out of range: tau=%e < tau_min=%e, you should decrease the precision parameter a_ini_over_a_today_default\n",tau,pba->tau_table[0]); + + class_test(tau > pba->tau_table[pba->bt_size-1], + pba->error_message, + "out of range: tau=%e > tau_max=%e\n",tau,pba->tau_table[pba->bt_size-1]); + + /** - deduce length of returned vector from format mode */ + + if (return_format == pba->normal_info) { + pvecback_size=pba->bg_size_normal; + } + else { + if (return_format == pba->short_info) { + pvecback_size=pba->bg_size_short; + } + else { + pvecback_size=pba->bg_size; + } + } + + /** - interpolate from pre-computed table with array_interpolate() + or array_interpolate_growing_closeby() (depending on + interpolation mode) */ + + if (intermode == pba->inter_normal) { + class_call(array_interpolate_spline( + pba->tau_table, + pba->bt_size, + pba->background_table, + pba->d2background_dtau2_table, + pba->bg_size, + tau, + last_index, + pvecback, + pvecback_size, + pba->error_message), + pba->error_message, + pba->error_message); + } + if (intermode == pba->inter_closeby) { + class_call(array_interpolate_spline_growing_closeby( + pba->tau_table, + pba->bt_size, + pba->background_table, + pba->d2background_dtau2_table, + pba->bg_size, + tau, + last_index, + pvecback, + pvecback_size, + pba->error_message), + pba->error_message, + pba->error_message); + } + + return _SUCCESS_; +} + +/** + * Conformal time at given redshift. + * + * Returns tau(z) by interpolation from pre-computed table. + * + * @param pba Input: pointer to background structure + * @param z Input: redshift + * @param tau Output: conformal time + * @return the error status + */ + +int background_tau_of_z( + struct background *pba, + double z, + double * tau + ) { + + /** Summary: */ + + /** - define local variables */ + + /* necessary for calling array_interpolate(), but never used */ + int last_index; + + /** - check that \f$ z \f$ is in the pre-computed range */ + class_test(z < pba->z_table[pba->bt_size-1], + pba->error_message, + "out of range: z=%e < z_min=%e\n",z,pba->z_table[pba->bt_size-1]); + + class_test(z > pba->z_table[0], + pba->error_message, + "out of range: a=%e > a_max=%e\n",z,pba->z_table[0]); + + /** - interpolate from pre-computed table with array_interpolate() */ + class_call(array_interpolate_spline( + pba->z_table, + pba->bt_size, + pba->tau_table, + pba->d2tau_dz2_table, + 1, + z, + &last_index, + tau, + 1, + pba->error_message), + pba->error_message, + pba->error_message); + + return _SUCCESS_; +} + +/** + * Background quantities at given \f$ a \f$. + * + * Function evaluating all background quantities which can be computed + * analytically as a function of {B} parameters such as the scale factor 'a' + * (see discussion at the beginning of this file). In extended + * cosmological models, the pvecback_B vector contains other input parameters than + * just 'a', e.g. (phi, phidot) for quintessence, some temperature of + * exotic relics, etc... + * + * @param pba Input: pointer to background structure + * @param pvecback_B Input: vector containing all {B} type quantities (scale factor, ...) + * @param return_format Input: format of output vector + * @param pvecback Output: vector of background quantities (assumed to be already allocated) + * @return the error status + */ + +int background_functions( + struct background *pba, + double * pvecback_B, /* Vector containing all {B} quantities. */ + short return_format, + double * pvecback /* vector with argument pvecback[index_bg] (must be already allocated with a size compatible with return_format) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + /* total density */ + double rho_tot; + /* total pressure */ + double p_tot; + /* total relativistic density */ + double rho_r; + /* total non-relativistic density */ + double rho_m; + /* scale factor relative to scale factor today */ + double a_rel; + /* background ncdm quantities */ + double rho_ncdm,p_ncdm,pseudo_p_ncdm; + /* index for n_ncdm species */ + int n_ncdm; + /* scale factor */ + double a; + /* scalar field quantities */ + double phi, phi_prime; + + /** - initialize local variables */ + a = pvecback_B[pba->index_bi_a]; + rho_tot = 0.; + p_tot = 0.; + rho_r=0.; + rho_m=0.; + a_rel = a / pba->a_today; + + class_test(a_rel <= 0., + pba->error_message, + "a = %e instead of strictly positive",a_rel); + + /** - pass value of \f$ a\f$ to output */ + pvecback[pba->index_bg_a] = a; + + /** - compute each component's density and pressure */ + + /* photons */ + pvecback[pba->index_bg_rho_g] = pba->Omega0_g * pow(pba->H0,2) / pow(a_rel,4); + rho_tot += pvecback[pba->index_bg_rho_g]; + p_tot += (1./3.) * pvecback[pba->index_bg_rho_g]; + rho_r += pvecback[pba->index_bg_rho_g]; + + /* baryons */ + pvecback[pba->index_bg_rho_b] = pba->Omega0_b * pow(pba->H0,2) / pow(a_rel,3); + rho_tot += pvecback[pba->index_bg_rho_b]; + p_tot += 0; + rho_m += pvecback[pba->index_bg_rho_b]; + + /* cdm */ + if (pba->has_cdm == _TRUE_) { + pvecback[pba->index_bg_rho_cdm] = pba->Omega0_cdm * pow(pba->H0,2) / pow(a_rel,3); + rho_tot += pvecback[pba->index_bg_rho_cdm]; + p_tot += 0.; + rho_m += pvecback[pba->index_bg_rho_cdm]; + } + + /* dcdm */ + if (pba->has_dcdm == _TRUE_) { + /* Pass value of rho_dcdm to output */ + pvecback[pba->index_bg_rho_dcdm] = pvecback_B[pba->index_bi_rho_dcdm]; + rho_tot += pvecback[pba->index_bg_rho_dcdm]; + p_tot += 0.; + rho_m += pvecback[pba->index_bg_rho_dcdm]; + } + + /* dr */ + if (pba->has_dr == _TRUE_) { + /* Pass value of rho_dr to output */ + pvecback[pba->index_bg_rho_dr] = pvecback_B[pba->index_bi_rho_dr]; + rho_tot += pvecback[pba->index_bg_rho_dr]; + p_tot += (1./3.)*pvecback[pba->index_bg_rho_dr]; + rho_r += pvecback[pba->index_bg_rho_dr]; + } + + /* Scalar field */ + if (pba->has_scf == _TRUE_) { + phi = pvecback_B[pba->index_bi_phi_scf]; + phi_prime = pvecback_B[pba->index_bi_phi_prime_scf]; + pvecback[pba->index_bg_phi_scf] = phi; // value of the scalar field phi + pvecback[pba->index_bg_phi_prime_scf] = phi_prime; // value of the scalar field phi derivative wrt conformal time + pvecback[pba->index_bg_V_scf] = V_scf(pba,phi); //V_scf(pba,phi); //write here potential as function of phi + pvecback[pba->index_bg_dV_scf] = dV_scf(pba,phi); // dV_scf(pba,phi); //potential' as function of phi + pvecback[pba->index_bg_ddV_scf] = ddV_scf(pba,phi); // ddV_scf(pba,phi); //potential'' as function of phi + pvecback[pba->index_bg_rho_scf] = (phi_prime*phi_prime/(2*a*a) + V_scf(pba,phi))/3.; // energy of the scalar field. The field units are set automatically by setting the initial conditions + pvecback[pba->index_bg_p_scf] =(phi_prime*phi_prime/(2*a*a) - V_scf(pba,phi))/3.; // pressure of the scalar field + rho_tot += pvecback[pba->index_bg_rho_scf]; + p_tot += pvecback[pba->index_bg_p_scf]; + //divide relativistic & nonrelativistic (not very meaningful for oscillatory models) + rho_r += 3.*pvecback[pba->index_bg_p_scf]; //field pressure contributes radiation + rho_m += pvecback[pba->index_bg_rho_scf] - 3.* pvecback[pba->index_bg_p_scf]; //the rest contributes matter + //printf(" a= %e, Omega_scf = %f, \n ",a_rel, pvecback[pba->index_bg_rho_scf]/rho_tot ); + } + + /* ncdm */ + if (pba->has_ncdm == _TRUE_) { + + /* Loop over species: */ + for(n_ncdm=0; n_ncdmN_ncdm; n_ncdm++){ + + /* function returning background ncdm[n_ncdm] quantities (only + those for which non-NULL pointers are passed) */ + class_call(background_ncdm_momenta( + pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + pba->M_ncdm[n_ncdm], + pba->factor_ncdm[n_ncdm], + 1./a_rel-1., + NULL, + &rho_ncdm, + &p_ncdm, + NULL, + &pseudo_p_ncdm), + pba->error_message, + pba->error_message); + + pvecback[pba->index_bg_rho_ncdm1+n_ncdm] = rho_ncdm; + rho_tot += rho_ncdm; + pvecback[pba->index_bg_p_ncdm1+n_ncdm] = p_ncdm; + p_tot += p_ncdm; + pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm] = pseudo_p_ncdm; + + /* (3 p_ncdm1) is the "relativistic" contribution to rho_ncdm1 */ + rho_r += 3.* p_ncdm; + + /* (rho_ncdm1 - 3 p_ncdm1) is the "non-relativistic" contribution + to rho_ncdm1 */ + rho_m += rho_ncdm - 3.* p_ncdm; + } + } + + /* Lambda */ + if (pba->has_lambda == _TRUE_) { + pvecback[pba->index_bg_rho_lambda] = pba->Omega0_lambda * pow(pba->H0,2); + rho_tot += pvecback[pba->index_bg_rho_lambda]; + p_tot -= pvecback[pba->index_bg_rho_lambda]; + } + + /* fluid with w=w0+wa(1-a/a0) and constant cs2 */ + if (pba->has_fld == _TRUE_) { + pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) + / pow(a_rel,3.*(1.+pba->w0_fld+pba->wa_fld)) + * exp(3.*pba->wa_fld*(a_rel-1.)); + rho_tot += pvecback[pba->index_bg_rho_fld]; + p_tot += (pba->w0_fld+pba->wa_fld*(1.-a_rel)) * pvecback[pba->index_bg_rho_fld]; + } + + /* relativistic neutrinos (and all relativistic relics) */ + if (pba->has_ur == _TRUE_) { + pvecback[pba->index_bg_rho_ur] = pba->Omega0_ur * pow(pba->H0,2) / pow(a_rel,4); + rho_tot += pvecback[pba->index_bg_rho_ur]; + p_tot += (1./3.) * pvecback[pba->index_bg_rho_ur]; + rho_r += pvecback[pba->index_bg_rho_ur]; + } + + /** - compute expansion rate H from Friedmann equation: this is the + only place where the Friedmann equation is assumed. Remember + that densities are all expressed in units of \f$ [3c^2/8\pi G] \f$, ie + \f$ \rho_{class} = [8 \pi G \rho_{physical} / 3 c^2]\f$ */ + pvecback[pba->index_bg_H] = sqrt(rho_tot-pba->K/a/a); + + /** - compute derivative of H with respect to conformal time */ + pvecback[pba->index_bg_H_prime] = - (3./2.) * (rho_tot + p_tot) * a + pba->K/a; + + /** - compute relativistic density to total density ratio */ + pvecback[pba->index_bg_Omega_r] = rho_r / rho_tot; + + /** - compute other quantities in the exhaustive, redundant format */ + if (return_format == pba->long_info) { + + /** - compute critical density */ + pvecback[pba->index_bg_rho_crit] = rho_tot-pba->K/a/a; + class_test(pvecback[pba->index_bg_rho_crit] <= 0., + pba->error_message, + "rho_crit = %e instead of strictly positive",pvecback[pba->index_bg_rho_crit]); + + /** - compute Omega_m */ + pvecback[pba->index_bg_Omega_m] = rho_m / rho_tot; + + /* one can put other variables here */ + /* */ + /* */ + + } + + return _SUCCESS_; + +} + +/** + * Initialize the background structure, and in particular the + * background interpolation table. + * + * @param ppr Input: pointer to precision structure + * @param pba Input/Output: pointer to initialized background structure + * @return the error status + */ + +int background_init( + struct precision * ppr, + struct background * pba + ) { + + /** Summary: */ + + /** - define local variables */ + int n_ncdm; + double rho_ncdm_rel,rho_nu_rel; + double Neff; + int filenum=0; + + /** - in verbose mode, provide some information */ + if (pba->background_verbose > 0) { + printf("Running CLASS version %s\n",_VERSION_); + printf("Computing background\n"); + + /* below we want to inform the user about ncdm species*/ + if (pba->N_ncdm > 0) { + + Neff = pba->Omega0_ur/7.*8./pow(4./11.,4./3.)/pba->Omega0_g; + + /* loop over ncdm species */ + for (n_ncdm=0;n_ncdmN_ncdm; n_ncdm++) { + + /* inform if p-s-d read in files */ + if (pba->got_files[n_ncdm] == _TRUE_) { + printf(" -> ncdm species i=%d read from file %s\n",n_ncdm+1,pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); + filenum++; + } + + /* call this function to get rho_ncdm */ + background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + 0., + pba->factor_ncdm[n_ncdm], + 0., + NULL, + &rho_ncdm_rel, + NULL, + NULL, + NULL); + + /* inform user of the contribution of each species to + radiation density (in relativistic limit): should be + between 1.01 and 1.02 for each active neutrino species; + evaluated as rho_ncdm/rho_nu_rel where rho_nu_rel is the + density of one neutrino in the instantaneous decoupling + limit, i.e. assuming T_nu=(4/11)^1/3 T_gamma (this comes + from the definition of N_eff) */ + rho_nu_rel = 56.0/45.0*pow(_PI_,6)*pow(4.0/11.0,4.0/3.0)*_G_/pow(_h_P_,3)/pow(_c_,7)* + pow(_Mpc_over_m_,2)*pow(pba->T_cmb*_k_B_,4); + + printf(" -> ncdm species i=%d sampled with %d (resp. %d) points for purpose of background (resp. perturbation) integration. In the relativistic limit it gives Delta N_eff = %g\n", + n_ncdm+1, + pba->q_size_ncdm_bg[n_ncdm], + pba->q_size_ncdm[n_ncdm], + rho_ncdm_rel/rho_nu_rel); + + Neff += rho_ncdm_rel/rho_nu_rel; + + } + + printf(" -> total N_eff = %g (sumed over ultra-relativistic and ncdm species)\n",Neff); + + } + } + + /** - if shooting failed during input, catch the error here */ + class_test(pba->shooting_failed == _TRUE_, + pba->error_message, + "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s", + pba->shooting_error); + + /** - assign values to all indices in vectors of background quantities with background_indices()*/ + class_call(background_indices(pba), + pba->error_message, + pba->error_message); + + /** - control that cosmological parameter values make sense */ + + /* H0 in Mpc^{-1} */ + class_test((pba->H0 < _H0_SMALL_)||(pba->H0 > _H0_BIG_), + pba->error_message, + "H0=%g out of bounds (%gH0,_H0_SMALL_,_H0_BIG_); + + class_test(fabs(pba->h * 1.e5 / _c_ / pba->H0 -1.)>ppr->smallest_allowed_variation, + pba->error_message, + "inconsistency between Hubble and reduced Hubble parameters: you have H0=%f/Mpc=%fkm/s/Mpc, but h=%f",pba->H0,pba->H0/1.e5* _c_,pba->h); + + /* T_cmb in K */ + class_test((pba->T_cmb < _TCMB_SMALL_)||(pba->T_cmb > _TCMB_BIG_), + pba->error_message, + "T_cmb=%g out of bounds (%gT_cmb,_TCMB_SMALL_,_TCMB_BIG_); + + /* H0 in Mpc^{-1} */ + class_test((pba->Omega0_k < _OMEGAK_SMALL_)||(pba->Omega0_k > _OMEGAK_BIG_), + pba->error_message, + "Omegak = %g out of bounds (%gOmega0_k,_OMEGAK_SMALL_,_OMEGAK_BIG_); + + /* fluid equation of state */ + if (pba->has_fld == _TRUE_) { + class_test(pba->w0_fld+pba->wa_fld>=1./3., + pba->error_message, + "Your choice for w0_fld+wa_fld=%g is suspicious, there would not be radiation domination at early times\n", + pba->w0_fld+pba->wa_fld); + } + + /* in verbose mode, inform the user about the value of the ncdm + masses in eV and about the ratio [m/omega_ncdm] in eV (the usual + 93 point something)*/ + if ((pba->background_verbose > 0) && (pba->has_ncdm == _TRUE_)) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + printf(" -> non-cold dark matter species with i=%d has m_i = %e eV (so m_i / omega_i =%e eV)\n", + n_ncdm+1, + pba->m_ncdm_in_eV[n_ncdm], + pba->m_ncdm_in_eV[n_ncdm]*pba->deg_ncdm[n_ncdm]/pba->Omega0_ncdm[n_ncdm]/pba->h/pba->h); + } + } + + /* check other quantities which would lead to segmentation fault if zero */ + class_test(pba->a_today <= 0, + pba->error_message, + "input a_today = %e instead of strictly positive",pba->a_today); + + class_test(_Gyr_over_Mpc_ <= 0, + pba->error_message, + "_Gyr_over_Mpc = %e instead of strictly positive",_Gyr_over_Mpc_); + + /** - this function integrates the background over time, allocates + and fills the background table */ + class_call(background_solve(ppr,pba), + pba->error_message, + pba->error_message); + + return _SUCCESS_; + +} + +/** + * Free all memory space allocated by background_init(). + * + * + * @param pba Input: pointer to background structure (to be freed) + * @return the error status + */ + +int background_free( + struct background *pba + ) { + int err; + + free(pba->tau_table); + free(pba->z_table); + free(pba->d2tau_dz2_table); + free(pba->background_table); + free(pba->d2background_dtau2_table); + + err = background_free_input(pba); + + return err; +} + +/** + * Free pointers inside background structure which were + * allocated in input_read_parameters() + * + * @param pba Input: pointer to background structure + * @return the error status + */ + +int background_free_input( + struct background *pba + ) { + + int k; + if (pba->Omega0_ncdm_tot != 0.){ + for(k=0; kN_ncdm; k++){ + free(pba->q_ncdm[k]); + free(pba->w_ncdm[k]); + free(pba->q_ncdm_bg[k]); + free(pba->w_ncdm_bg[k]); + free(pba->dlnf0_dlnq_ncdm[k]); + } + + free(pba->q_ncdm); + free(pba->w_ncdm); + free(pba->q_ncdm_bg); + free(pba->w_ncdm_bg); + free(pba->dlnf0_dlnq_ncdm); + free(pba->q_size_ncdm); + free(pba->q_size_ncdm_bg); + free(pba->M_ncdm); + free(pba->T_ncdm); + free(pba->ksi_ncdm); + free(pba->deg_ncdm); + free(pba->Omega0_ncdm); + free(pba->m_ncdm_in_eV); + free(pba->factor_ncdm); + if(pba->got_files!=NULL) + free(pba->got_files); + if(pba->ncdm_psd_files!=NULL) + free(pba->ncdm_psd_files); + if(pba->ncdm_psd_parameters!=NULL) + free(pba->ncdm_psd_parameters); + } + + if (pba->Omega0_scf != 0.){ + if (pba->scf_parameters != NULL) + free(pba->scf_parameters); + } + return _SUCCESS_; +} + +/** + * Assign value to each relevant index in vectors of background quantities. + * + * @param pba Input: pointer to background structure + * @return the error status + */ + +int background_indices( + struct background *pba + ) { + + /** Summary: */ + + /** - define local variables */ + + /* a running index for the vector of background quantities */ + int index_bg; + /* a running index for the vector of background quantities to be integrated */ + int index_bi; + + /** - initialize all flags: which species are present? */ + + pba->has_cdm = _FALSE_; + pba->has_ncdm = _FALSE_; + pba->has_dcdm = _FALSE_; + pba->has_dr = _FALSE_; + pba->has_scf = _FALSE_; + pba->has_lambda = _FALSE_; + pba->has_fld = _FALSE_; + pba->has_ur = _FALSE_; + pba->has_curvature = _FALSE_; + + if (pba->Omega0_cdm != 0.) + pba->has_cdm = _TRUE_; + + if (pba->Omega0_ncdm_tot != 0.) + pba->has_ncdm = _TRUE_; + + if (pba->Omega0_dcdmdr != 0.){ + pba->has_dcdm = _TRUE_; + if (pba->Gamma_dcdm != 0.) + pba->has_dr = _TRUE_; + } + + if (pba->Omega0_scf != 0.) + pba->has_scf = _TRUE_; + + if (pba->Omega0_lambda != 0.) + pba->has_lambda = _TRUE_; + + if (pba->Omega0_fld != 0.) + pba->has_fld = _TRUE_; + + if (pba->Omega0_ur != 0.) + pba->has_ur = _TRUE_; + + if (pba->sgnK != 0) + pba->has_curvature = _TRUE_; + + /** - initialize all indices */ + + index_bg=0; + + /* index for scale factor */ + class_define_index(pba->index_bg_a,_TRUE_,index_bg,1); + + /* - indices for H and its conformal-time-derivative */ + class_define_index(pba->index_bg_H,_TRUE_,index_bg,1); + class_define_index(pba->index_bg_H_prime,_TRUE_,index_bg,1); + + /* - end of indices in the short vector of background values */ + pba->bg_size_short = index_bg; + + /* - index for rho_g (photon density) */ + class_define_index(pba->index_bg_rho_g,_TRUE_,index_bg,1); + + /* - index for rho_b (baryon density) */ + class_define_index(pba->index_bg_rho_b,_TRUE_,index_bg,1); + + /* - index for rho_cdm */ + class_define_index(pba->index_bg_rho_cdm,pba->has_cdm,index_bg,1); + + /* - indices for ncdm. We only define the indices for ncdm1 + (density, pressure, pseudo-pressure), the other ncdm indices + are contiguous */ + class_define_index(pba->index_bg_rho_ncdm1,pba->has_ncdm,index_bg,pba->N_ncdm); + class_define_index(pba->index_bg_p_ncdm1,pba->has_ncdm,index_bg,pba->N_ncdm); + class_define_index(pba->index_bg_pseudo_p_ncdm1,pba->has_ncdm,index_bg,pba->N_ncdm); + + /* - index for dcdm */ + class_define_index(pba->index_bg_rho_dcdm,pba->has_dcdm,index_bg,1); + + /* - index for dr */ + class_define_index(pba->index_bg_rho_dr,pba->has_dr,index_bg,1); + + /* - indices for scalar field */ + class_define_index(pba->index_bg_phi_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_phi_prime_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_V_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_dV_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_ddV_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_rho_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_p_scf,pba->has_scf,index_bg,1); + + /* - index for Lambda */ + class_define_index(pba->index_bg_rho_lambda,pba->has_lambda,index_bg,1); + + /* - index for fluid */ + class_define_index(pba->index_bg_rho_fld,pba->has_fld,index_bg,1); + + /* - index for ultra-relativistic neutrinos/species */ + class_define_index(pba->index_bg_rho_ur,pba->has_ur,index_bg,1); + + /* - index for Omega_r (relativistic density fraction) */ + class_define_index(pba->index_bg_Omega_r,_TRUE_,index_bg,1); + + /* - put here additional ingredients that you want to appear in the + normal vector */ + /* */ + /* */ + + /* - end of indices in the normal vector of background values */ + pba->bg_size_normal = index_bg; + + /* - indices in the long version : */ + + /* -> critical density */ + class_define_index(pba->index_bg_rho_crit,_TRUE_,index_bg,1); + + /* - index for Omega_m (non-relativistic density fraction) */ + class_define_index(pba->index_bg_Omega_m,_TRUE_,index_bg,1); + + /* -> conformal distance */ + class_define_index(pba->index_bg_conf_distance,_TRUE_,index_bg,1); + + /* -> angular diameter distance */ + class_define_index(pba->index_bg_ang_distance,_TRUE_,index_bg,1); + + /* -> luminosity distance */ + class_define_index(pba->index_bg_lum_distance,_TRUE_,index_bg,1); + + /* -> proper time (for age of the Universe) */ + class_define_index(pba->index_bg_time,_TRUE_,index_bg,1); + + /* -> conformal sound horizon */ + class_define_index(pba->index_bg_rs,_TRUE_,index_bg,1); + + /* -> density growth factor in dust universe */ + class_define_index(pba->index_bg_D,_TRUE_,index_bg,1); + + /* -> velocity growth factor in dust universe */ + class_define_index(pba->index_bg_f,_TRUE_,index_bg,1); + + /* -> put here additional quantities describing background */ + /* */ + /* */ + + /* -> end of indices in the long vector of background values */ + pba->bg_size = index_bg; + + /* - now, indices in vector of variables to integrate. + First {B} variables, then {C} variables. */ + + index_bi=0; + + /* -> scale factor */ + class_define_index(pba->index_bi_a,_TRUE_,index_bi,1); + + /* -> energy density in DCDM */ + class_define_index(pba->index_bi_rho_dcdm,pba->has_dcdm,index_bi,1); + + /* -> energy density in DR */ + class_define_index(pba->index_bi_rho_dr,pba->has_dr,index_bi,1); + + /* -> scalar field and its derivative wrt conformal time (Zuma) */ + class_define_index(pba->index_bi_phi_scf,pba->has_scf,index_bi,1); + class_define_index(pba->index_bi_phi_prime_scf,pba->has_scf,index_bi,1); + + /* End of {B} variables, now continue with {C} variables */ + pba->bi_B_size = index_bi; + + /* -> proper time (for age of the Universe) */ + class_define_index(pba->index_bi_time,_TRUE_,index_bi,1); + + /* -> sound horizon */ + class_define_index(pba->index_bi_rs,_TRUE_,index_bi,1); + + /* -> integral for growth factor */ + class_define_index(pba->index_bi_growth,_TRUE_,index_bi,1); + + /* -> index for conformal time in vector of variables to integrate */ + class_define_index(pba->index_bi_tau,_TRUE_,index_bi,1); + + /* -> end of indices in the vector of variables to integrate */ + pba->bi_size = index_bi; + + /* index_bi_tau must be the last index, because tau is part of this vector for the purpose of being stored, */ + /* but it is not a quantity to be integrated (since integration is over tau itself) */ + class_test(pba->index_bi_tau != index_bi-1, + pba->error_message, + "background integration requires index_bi_tau to be the last of all index_bi's"); + + /* flags for calling the interpolation routine */ + + pba->short_info=0; + pba->normal_info=1; + pba->long_info=2; + + pba->inter_normal=0; + pba->inter_closeby=1; + + return _SUCCESS_; + +} + +/** + * This is the routine where the distribution function f0(q) of each + * ncdm species is specified (it is the only place to modify if you + * need a partlar f0(q)) + * + * @param pbadist Input: structure containing all parameters defining f0(q) + * @param q Input: momentum + * @param f0 Output: phase-space distribution + */ + +int background_ncdm_distribution( + void * pbadist, + double q, + double * f0 + ) { + struct background * pba; + struct background_parameters_for_distributions * pbadist_local; + int n_ncdm,lastidx; + double ksi; + double qlast,dqlast,f0last,df0last; + double *param; + /* Variables corresponding to entries in param: */ + //double square_s12,square_s23,square_s13; + //double mixing_matrix[3][3]; + //int i; + + /** - extract from the input structure pbadist all the relevant information */ + pbadist_local = pbadist; /* restore actual format of pbadist */ + pba = pbadist_local->pba; /* extract the background structure from it */ + param = pba->ncdm_psd_parameters; /* extract the optional parameter list from it */ + n_ncdm = pbadist_local->n_ncdm; /* extract index of ncdm species under consideration */ + ksi = pba->ksi_ncdm[n_ncdm]; /* extract chemical potential */ + + /** - shall we interpolate in file, or shall we use analytical formula below? */ + + /** - a) deal first with the case of interpolating in files */ + if (pba->got_files[n_ncdm]==_TRUE_) { + + lastidx = pbadist_local->tablesize-1; + if(qq[0]){ + //Handle q->0 case: + *f0 = pbadist_local->f0[0]; + } + else if(q>pbadist_local->q[lastidx]){ + //Handle q>qmax case (ensure continuous and derivable function with Boltzmann tail): + qlast=pbadist_local->q[lastidx]; + f0last=pbadist_local->f0[lastidx]; + dqlast=qlast - pbadist_local->q[lastidx-1]; + df0last=f0last - pbadist_local->f0[lastidx-1]; + + *f0 = f0last*exp(-(qlast-q)*df0last/f0last/dqlast); + } + else{ + //Do interpolation: + class_call(array_interpolate_spline( + pbadist_local->q, + pbadist_local->tablesize, + pbadist_local->f0, + pbadist_local->d2f0, + 1, + q, + &pbadist_local->last_index, + f0, + 1, + pba->error_message), + pba->error_message, pba->error_message); + } + } + + /** - b) deal now with case of reading analytical function */ + else{ + /** + Next enter your analytic expression(s) for the p.s.d.'s. If + you need different p.s.d.'s for different species, put each + p.s.d inside a condition, like for instance: if (n_ncdm==2) + {*f0=...}. Remember that n_ncdm = 0 refers to the first + species. + */ + + /**************************************************/ + /* FERMI-DIRAC INCLUDING CHEMICAL POTENTIALS */ + /**************************************************/ + + *f0 = 1.0/pow(2*_PI_,3)*(1./(exp(q-ksi)+1.) +1./(exp(q+ksi)+1.)); + + /**************************************************/ + + /** This form is only appropriate for approximate studies, since in + reality the chemical potentials are associated with flavor + eigenstates, not mass eigenstates. It is easy to take this into + account by introducing the mixing angles. In the later part + (not read by the code) we illustrate how to do this. */ + + if (_FALSE_) { + + /* We must use the list of extra parameters read in input, stored in the + ncdm_psd_parameter list, extracted above from the structure + and now called param[..] */ + + /* check that this list has been read */ + class_test(param == NULL, + pba->error_message, + "Analytic expression wants to use 'ncdm_psd_parameters', but they have not been entered!"); + + /* extract values from the list (in this example, mixing angles) */ + double square_s12=param[0]; + double square_s23=param[1]; + double square_s13=param[2]; + + /* infer mixing matrix */ + double mixing_matrix[3][3]; + int i; + + mixing_matrix[0][0]=pow(fabs(sqrt((1-square_s12)*(1-square_s13))),2); + mixing_matrix[0][1]=pow(fabs(sqrt(square_s12*(1-square_s13))),2); + mixing_matrix[0][2]=fabs(square_s13); + mixing_matrix[1][0]=pow(fabs(sqrt((1-square_s12)*square_s13*square_s23)+sqrt(square_s12*(1-square_s23))),2); + mixing_matrix[1][1]=pow(fabs(sqrt(square_s12*square_s23*square_s13)-sqrt((1-square_s12)*(1-square_s23))),2); + mixing_matrix[1][2]=pow(fabs(sqrt(square_s23*(1-square_s13))),2); + mixing_matrix[2][0]=pow(fabs(sqrt(square_s12*square_s23)-sqrt((1-square_s12)*square_s13*(1-square_s23))),2); + mixing_matrix[2][1]=pow(sqrt((1-square_s12)*square_s23)+sqrt(square_s12*square_s13*(1-square_s23)),2); + mixing_matrix[2][2]=pow(fabs(sqrt((1-square_s13)*(1-square_s23))),2); + + /* loop over flavor eigenstates and compute psd of mass eigenstates */ + *f0=0.0; + for(i=0;i<3;i++){ + + *f0 += mixing_matrix[i][n_ncdm]*1.0/pow(2*_PI_,3)*(1./(exp(q-pba->ksi_ncdm[i])+1.) +1./(exp(q+pba->ksi_ncdm[i])+1.)); + + } + } /* end of region not used, but shown as an example */ + } + + return _SUCCESS_; +} + +/** + * This function is only used for the purpose of finding optimal + * quadrature weights. The logic is: if we can accurately convolve + * f0(q) with this function, then we can convolve it accurately with + * any other relevant function. + * + * @param pbadist Input: structure containing all background parameters + * @param q Input: momentum + * @param test Output: value of the test function test(q) + */ + +int background_ncdm_test_function( + void * pbadist, + double q, + double * test + ) { + + double c = 2.0/(3.0*_zeta3_); + double d = 120.0/(7.0*pow(_PI_,4)); + double e = 2.0/(45.0*_zeta5_); + + /** Using a + bq creates problems for otherwise acceptable distributions + which diverges as \f$ 1/r \f$ or \f$ 1/r^2 \f$ for \f$ r\to 0 \f$*/ + *test = pow(2.0*_PI_,3)/6.0*(c*q*q-d*q*q*q-e*q*q*q*q); + + return _SUCCESS_; +} + +/** + * This function finds optimal quadrature weights for each ncdm + * species + * + * @param ppr Input: precision structure + * @param pba Input/Output: background structure + */ + +int background_ncdm_init( + struct precision *ppr, + struct background *pba + ) { + + int index_q, k,tolexp,row,status,filenum; + double f0m2,f0m1,f0,f0p1,f0p2,dq,q,df0dq,tmp1,tmp2; + struct background_parameters_for_distributions pbadist; + FILE *psdfile; + + pbadist.pba = pba; + + /* Allocate pointer arrays: */ + class_alloc(pba->q_ncdm, sizeof(double*)*pba->N_ncdm,pba->error_message); + class_alloc(pba->w_ncdm, sizeof(double*)*pba->N_ncdm,pba->error_message); + class_alloc(pba->q_ncdm_bg, sizeof(double*)*pba->N_ncdm,pba->error_message); + class_alloc(pba->w_ncdm_bg, sizeof(double*)*pba->N_ncdm,pba->error_message); + class_alloc(pba->dlnf0_dlnq_ncdm, sizeof(double*)*pba->N_ncdm,pba->error_message); + + /* Allocate pointers: */ + class_alloc(pba->q_size_ncdm,sizeof(int)*pba->N_ncdm,pba->error_message); + class_alloc(pba->q_size_ncdm_bg,sizeof(int)*pba->N_ncdm,pba->error_message); + class_alloc(pba->factor_ncdm,sizeof(double)*pba->N_ncdm,pba->error_message); + + for(k=0, filenum=0; kN_ncdm; k++){ + pbadist.n_ncdm = k; + pbadist.q = NULL; + pbadist.tablesize = 0; + /*Do we need to read in a file to interpolate the distribution function? */ + if ((pba->got_files!=NULL)&&(pba->got_files[k]==_TRUE_)){ + psdfile = fopen(pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_,"r"); + class_test(psdfile == NULL,pba->error_message, + "Could not open file %s!",pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); + // Find size of table: + for (row=0,status=2; status==2; row++){ + status = fscanf(psdfile,"%lf %lf",&tmp1,&tmp2); + } + rewind(psdfile); + pbadist.tablesize = row-1; + + /*Allocate room for interpolation table: */ + class_alloc(pbadist.q,sizeof(double)*pbadist.tablesize,pba->error_message); + class_alloc(pbadist.f0,sizeof(double)*pbadist.tablesize,pba->error_message); + class_alloc(pbadist.d2f0,sizeof(double)*pbadist.tablesize,pba->error_message); + for (row=0; rowerror_message), + pba->error_message, + pba->error_message); + filenum++; + } + + /* Handle perturbation qsampling: */ + class_alloc(pba->q_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm[k], + pba->w_ncdm[k], + &(pba->q_size_ncdm[k]), + _QUADRATURE_MAX_, + ppr->tol_ncdm, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + pba->q_ncdm[k]=realloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + pba->w_ncdm[k]=realloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + + + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of perturbation integration\n", + k+1, + pba->q_size_ncdm[k]); + + /* Handle background q_sampling: */ + class_alloc(pba->q_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm_bg[k], + pba->w_ncdm_bg[k], + &(pba->q_size_ncdm_bg[k]), + _QUADRATURE_MAX_BG_, + ppr->tol_ncdm_bg, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + + + pba->q_ncdm_bg[k]=realloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + pba->w_ncdm_bg[k]=realloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + + /** - in verbose mode, inform user of number of sampled momenta + for background quantities */ + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of background integration\n", + k+1, + pba->q_size_ncdm_bg[k]); + + class_alloc(pba->dlnf0_dlnq_ncdm[k], + pba->q_size_ncdm[k]*sizeof(double), + pba->error_message); + + + for (index_q=0; index_qq_size_ncdm[k]; index_q++) { + q = pba->q_ncdm[k][index_q]; + class_call(background_ncdm_distribution(&pbadist,q,&f0), + pba->error_message,pba->error_message); + + //Loop to find appropriate dq: + for(tolexp=_PSD_DERIVATIVE_EXP_MIN_; tolexp<_PSD_DERIVATIVE_EXP_MAX_; tolexp++){ + + if (index_q == 0){ + dq = MIN((0.5-ppr->smallest_allowed_variation)*q,2*exp(tolexp)*(pba->q_ncdm[k][index_q+1]-q)); + } + else if (index_q == pba->q_size_ncdm[k]-1){ + dq = exp(tolexp)*2.0*(pba->q_ncdm[k][index_q]-pba->q_ncdm[k][index_q-1]); + } + else{ + dq = exp(tolexp)*(pba->q_ncdm[k][index_q+1]-pba->q_ncdm[k][index_q-1]); + } + + class_call(background_ncdm_distribution(&pbadist,q-2*dq,&f0m2), + pba->error_message,pba->error_message); + class_call(background_ncdm_distribution(&pbadist,q+2*dq,&f0p2), + pba->error_message,pba->error_message); + + if (fabs((f0p2-f0m2)/f0)>sqrt(ppr->smallest_allowed_variation)) break; + } + + class_call(background_ncdm_distribution(&pbadist,q-dq,&f0m1), + pba->error_message,pba->error_message); + class_call(background_ncdm_distribution(&pbadist,q+dq,&f0p1), + pba->error_message,pba->error_message); + //5 point estimate of the derivative: + df0dq = (+f0m2-8*f0m1+8*f0p1-f0p2)/12.0/dq; + //printf("df0dq[%g] = %g. dlf=%g ?= %g. f0 =%g.\n",q,df0dq,q/f0*df0dq, + //Avoid underflow in extreme tail: + if (fabs(f0)==0.) + pba->dlnf0_dlnq_ncdm[k][index_q] = -q; /* valid for whatever f0 with exponential tail in exp(-q) */ + else + pba->dlnf0_dlnq_ncdm[k][index_q] = q/f0*df0dq; + } + + pba->factor_ncdm[k]=pba->deg_ncdm[k]*4*_PI_*pow(pba->T_cmb*pba->T_ncdm[k]*_k_B_,4)*8*_PI_*_G_ + /3./pow(_h_P_/2./_PI_,3)/pow(_c_,7)*_Mpc_over_m_*_Mpc_over_m_; + + /* If allocated, deallocate interpolation table: */ + if ((pba->got_files!=NULL)&&(pba->got_files[k]==_TRUE_)){ + free(pbadist.q); + free(pbadist.f0); + free(pbadist.d2f0); + } + } + + + return _SUCCESS_; +} + +/** + * For a given ncdm species: given the quadrature weights, the mass + * and the redshift, find background quantities by a quick weighted + * sum over. Input parameters passed as NULL pointers are not + * evaluated for speed-up + * + * @param qvec Input: sampled momenta + * @param wvec Input: quadrature weights + * @param qsize Input: number of momenta/weights + * @param M Input: mass + * @param factor Input: normalization factor for the p.s.d. + * @param z Input: redshift + * @param n Output: number density + * @param rho Output: energy density + * @param p Output: pressure + * @param drho_dM Output: derivative used in next function + * @param pseudo_p Output: pseudo-pressure used in perturbation module for fluid approx + * + */ + +int background_ncdm_momenta( + /* Only calculate for non-NULL pointers: */ + double * qvec, + double * wvec, + int qsize, + double M, + double factor, + double z, + double * n, + double * rho, // density + double * p, // pressure + double * drho_dM, // d rho / d M used in next function + double * pseudo_p // pseudo-p used in ncdm fluid approx + ) { + + int index_q; + double epsilon; + double q2; + double factor2; + /** Summary: */ + + /** - rescale normalization at given redshift */ + factor2 = factor*pow(1+z,4); + + /** - initialize quantities */ + if (n!=NULL) *n = 0.; + if (rho!=NULL) *rho = 0.; + if (p!=NULL) *p = 0.; + if (drho_dM!=NULL) *drho_dM = 0.; + if (pseudo_p!=NULL) *pseudo_p = 0.; + + /** - loop over momenta */ + for (index_q=0; index_qH0*pba->H0*pba->Omega0_ncdm[n_ncdm]; /*Remember that rho is defined such that H^2=sum(rho_i) */ + M = 0.0; + + background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + M, + pba->factor_ncdm[n_ncdm], + 0., + &n, + &rho, + NULL, + NULL, + NULL); + + /* Is the value of Omega less than a massless species?*/ + class_test(rho0error_message, + "The value of Omega for the %dth species, %g, is less than for a massless species! It should be atleast %g. Check your input.", + n_ncdm,pba->Omega0_ncdm[n_ncdm],pba->Omega0_ncdm[n_ncdm]*rho/rho0); + + /* In the strict NR limit we have rho = n*(M) today, giving a zeroth order guess: */ + M = rho0/n; /* This is our guess for M. */ + for (iter=1; iter<=maxiter; iter++){ + + /* Newton iteration. First get relevant quantities at M: */ + background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + M, + pba->factor_ncdm[n_ncdm], + 0., + NULL, + &rho, + NULL, + &drhodM, + NULL); + + deltaM = (rho0-rho)/drhodM; /* By definition of the derivative */ + if ((M+deltaM)<0.0) deltaM = -M/2.0; /* Avoid overshooting to negative M value. */ + M += deltaM; /* Update value of M.. */ + if (fabs(deltaM/M)tol_M_ncdm){ + /* Accuracy reached.. */ + pba->M_ncdm[n_ncdm] = M; + break; + } + } + class_test(iter>=maxiter,pba->error_message, + "Newton iteration could not converge on a mass for some reason."); + return _SUCCESS_; +} + +/** + * This function integrates the background over time, allocates and + * fills the background table + * + * @param ppr Input: precision structure + * @param pba Input/Output: background structure + */ + +int background_solve( + struct precision *ppr, + struct background *pba + ) { + + /** Summary: */ + + /** - define local variables */ + + /* contains all quantities relevant for the integration algorithm */ + struct generic_integrator_workspace gi; + /* parameters and workspace for the background_derivs function */ + struct background_parameters_and_workspace bpaw; + /* a growing table (since the number of time steps is not known a priori) */ + growTable gTable; + /* needed for growing table */ + double * pData; + /* needed for growing table */ + void * memcopy_result; + /* initial conformal time */ + double tau_start; + /* final conformal time */ + double tau_end; + /* an index running over bi indices */ + int i; + /* vector of quantities to be integrated */ + double * pvecback_integration; + /* vector of all background quantities */ + double * pvecback; + /* necessary for calling array_interpolate(), but never used */ + int last_index=0; + /* comoving radius coordinate in Mpc (equal to conformal distance in flat case) */ + double comoving_radius=0.; + + bpaw.pba = pba; + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + bpaw.pvecback = pvecback; + + /** - allocate vector of quantities to be integrated */ + class_alloc(pvecback_integration,pba->bi_size*sizeof(double),pba->error_message); + + /** - initialize generic integrator with initialize_generic_integrator() */ + + /* Size of vector to integrate is (pba->bi_size-1) rather than + * (pba->bi_size), since tau is not integrated. + */ + class_call(initialize_generic_integrator((pba->bi_size-1),&gi), + gi.error_message, + pba->error_message); + + /** - impose initial conditions with background_initial_conditions() */ + class_call(background_initial_conditions(ppr,pba,pvecback,pvecback_integration), + pba->error_message, + pba->error_message); + + /* here tau_end is in fact the initial time (in the next loop + tau_start = tau_end) */ + tau_end=pvecback_integration[pba->index_bi_tau]; + + /** - create a growTable with gt_init() */ + class_call(gt_init(&gTable), + gTable.error_message, + pba->error_message); + + /* initialize the counter for the number of steps */ + pba->bt_size=0; + + /** - loop over integration steps: call background_functions(), find step size, save data in growTable with gt_add(), perform one step with generic_integrator(), store new value of tau */ + + while (pvecback_integration[pba->index_bi_a] < pba->a_today) { + + tau_start = tau_end; + + /* -> find step size (trying to adjust the last step as close as possible to the one needed to reach a=a_today; need not be exact, difference corrected later) */ + class_call(background_functions(pba,pvecback_integration, pba->short_info, pvecback), + pba->error_message, + pba->error_message); + + if ((pvecback_integration[pba->index_bi_a]*(1.+ppr->back_integration_stepsize)) < pba->a_today) { + tau_end = tau_start + ppr->back_integration_stepsize / (pvecback_integration[pba->index_bi_a]*pvecback[pba->index_bg_H]); + /* no possible segmentation fault here: non-zeroness of "a" has been checked in background_functions() */ + } + else { + tau_end = tau_start + (pba->a_today/pvecback_integration[pba->index_bi_a]-1.) / (pvecback_integration[pba->index_bi_a]*pvecback[pba->index_bg_H]); + /* no possible segmentation fault here: non-zeroness of "a" has been checked in background_functions() */ + } + + class_test((tau_end-tau_start)/tau_start < ppr->smallest_allowed_variation, + pba->error_message, + "integration step: relative change in time =%e < machine precision : leads either to numerical error or infinite loop",(tau_end-tau_start)/tau_start); + + /* -> save data in growTable */ + class_call(gt_add(&gTable,_GT_END_,(void *) pvecback_integration,sizeof(double)*pba->bi_size), + gTable.error_message, + pba->error_message); + pba->bt_size++; + + /* -> perform one step */ + class_call(generic_integrator(background_derivs, + tau_start, + tau_end, + pvecback_integration, + &bpaw, + ppr->tol_background_integration, + ppr->smallest_allowed_variation, + &gi), + gi.error_message, + pba->error_message); + + /* -> store value of tau */ + pvecback_integration[pba->index_bi_tau]=tau_end; + + } + + /** - save last data in growTable with gt_add() */ + class_call(gt_add(&gTable,_GT_END_,(void *) pvecback_integration,sizeof(double)*pba->bi_size), + gTable.error_message, + pba->error_message); + pba->bt_size++; + + + /* integration finished */ + + /** - clean up generic integrator with cleanup_generic_integrator() */ + class_call(cleanup_generic_integrator(&gi), + gi.error_message, + pba->error_message); + + /** - retrieve data stored in the growTable with gt_getPtr() */ + class_call(gt_getPtr(&gTable,(void**)&pData), + gTable.error_message, + pba->error_message); + + /** - interpolate to get quantities precisely today with array_interpolate() */ + class_call(array_interpolate( + pData, + pba->bi_size, + pba->bt_size, + pba->index_bi_a, + pba->a_today, + &last_index, + pvecback_integration, + pba->bi_size, + pba->error_message), + pba->error_message, + pba->error_message); + + /* substitute last line with quantities today */ + for (i=0; ibi_size; i++) + pData[(pba->bt_size-1)*pba->bi_size+i]=pvecback_integration[i]; + + /** - deduce age of the Universe */ + /* -> age in Gyears */ + pba->age = pvecback_integration[pba->index_bi_time]/_Gyr_over_Mpc_; + /* -> conformal age in Mpc */ + pba->conformal_age = pvecback_integration[pba->index_bi_tau]; + /* -> contribution of decaying dark matter and dark radiation to the critical density today: */ + if (pba->has_dcdm == _TRUE_){ + pba->Omega0_dcdm = pvecback_integration[pba->index_bi_rho_dcdm]/pba->H0/pba->H0; + } + if (pba->has_dr == _TRUE_){ + pba->Omega0_dr = pvecback_integration[pba->index_bi_rho_dr]/pba->H0/pba->H0; + } + + + /** - allocate background tables */ + class_alloc(pba->tau_table,pba->bt_size * sizeof(double),pba->error_message); + + class_alloc(pba->z_table,pba->bt_size * sizeof(double),pba->error_message); + + class_alloc(pba->d2tau_dz2_table,pba->bt_size * sizeof(double),pba->error_message); + + class_alloc(pba->background_table,pba->bt_size * pba->bg_size * sizeof(double),pba->error_message); + + class_alloc(pba->d2background_dtau2_table,pba->bt_size * pba->bg_size * sizeof(double),pba->error_message); + + /** - In a loop over lines, fill background table using the result of the integration plus background_functions() */ + for (i=0; i < pba->bt_size; i++) { + + /* -> establish correspondence between the integrated variable and the bg variables */ + + pba->tau_table[i] = pData[i*pba->bi_size+pba->index_bi_tau]; + + class_test(pData[i*pba->bi_size+pba->index_bi_a] <= 0., + pba->error_message, + "a = %e instead of strictly positiv",pData[i*pba->bi_size+pba->index_bi_a]); + + pba->z_table[i] = pba->a_today/pData[i*pba->bi_size+pba->index_bi_a]-1.; + + pvecback[pba->index_bg_time] = pData[i*pba->bi_size+pba->index_bi_time]; + pvecback[pba->index_bg_conf_distance] = pba->conformal_age - pData[i*pba->bi_size+pba->index_bi_tau]; + + if (pba->sgnK == 0) comoving_radius = pvecback[pba->index_bg_conf_distance]; + else if (pba->sgnK == 1) comoving_radius = sin(sqrt(pba->K)*pvecback[pba->index_bg_conf_distance])/sqrt(pba->K); + else if (pba->sgnK == -1) comoving_radius = sinh(sqrt(-pba->K)*pvecback[pba->index_bg_conf_distance])/sqrt(-pba->K); + + pvecback[pba->index_bg_ang_distance] = pba->a_today*comoving_radius/(1.+pba->z_table[i]); + pvecback[pba->index_bg_lum_distance] = pba->a_today*comoving_radius*(1.+pba->z_table[i]); + pvecback[pba->index_bg_rs] = pData[i*pba->bi_size+pba->index_bi_rs]; + + /* -> compute all other quantities depending only on {B} variables. + The value of {B} variables in pData are also copied to pvecback.*/ + class_call(background_functions(pba,pData+i*pba->bi_size, pba->long_info, pvecback), + pba->error_message, + pba->error_message); + + /* -> compute growth functions (valid in dust universe) */ + + /* D = H \int [da/(aH)^3] = H \int [dtau/(aH^2)] = H * growth */ + pvecback[pba->index_bg_D] = pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]; + + /* f = [dlnD]/[dln a] = 1/(aH) [dlnD]/[dtau] = H'/(aH^2) + 1/(a^2 H^3 growth) */ + pvecback[pba->index_bg_f] = pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H] + 1./(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]); + + /* -> write in the table */ + memcopy_result = memcpy(pba->background_table + i*pba->bg_size,pvecback,pba->bg_size*sizeof(double)); + + class_test(memcopy_result != pba->background_table + i*pba->bg_size, + pba->error_message, + "cannot copy data back to pba->background_table"); + } + + /** - free the growTable with gt_free() */ + + class_call(gt_free(&gTable), + gTable.error_message, + pba->error_message); + + /** - fill tables of second derivatives (in view of spline interpolation) */ + class_call(array_spline_table_lines(pba->z_table, + pba->bt_size, + pba->tau_table, + 1, + pba->d2tau_dz2_table, + _SPLINE_EST_DERIV_, + pba->error_message), + pba->error_message, + pba->error_message); + + class_call(array_spline_table_lines(pba->tau_table, + pba->bt_size, + pba->background_table, + pba->bg_size, + pba->d2background_dtau2_table, + _SPLINE_EST_DERIV_, + pba->error_message), + pba->error_message, + pba->error_message); + + /** - compute remaining "related parameters" + * - so-called "effective neutrino number", computed at earliest + time in interpolation table. This should be seen as a + definition: Neff is the equivalent number of + instantaneously-decoupled neutrinos accounting for the + radiation density, beyond photons */ + pba->Neff = (pba->background_table[pba->index_bg_Omega_r] + *pba->background_table[pba->index_bg_rho_crit] + -pba->background_table[pba->index_bg_rho_g]) + /(7./8.*pow(4./11.,4./3.)*pba->background_table[pba->index_bg_rho_g]); + + /** - done */ + if (pba->background_verbose > 0) { + printf(" -> age = %f Gyr\n",pba->age); + printf(" -> conformal age = %f Mpc\n",pba->conformal_age); + } + + if (pba->background_verbose > 2) { + if ((pba->has_dcdm == _TRUE_)&&(pba->has_dr == _TRUE_)){ + printf(" Decaying Cold Dark Matter details: (DCDM --> DR)\n"); + printf(" -> Omega0_dcdm = %f\n",pba->Omega0_dcdm); + printf(" -> Omega0_dr = %f\n",pba->Omega0_dr); + printf(" -> Omega0_dr+Omega0_dcdm = %f, input value = %f\n", + pba->Omega0_dr+pba->Omega0_dcdm,pba->Omega0_dcdmdr); + printf(" -> Omega_ini_dcdm/Omega_b = %f\n",pba->Omega_ini_dcdm/pba->Omega0_b); + } + if (pba->has_scf == _TRUE_){ + printf(" Scalar field details:\n"); + printf(" -> Omega_scf = %g, wished %g\n", + pvecback[pba->index_bg_rho_scf]/pvecback[pba->index_bg_rho_crit], pba->Omega0_scf); + if(pba->has_lambda == _TRUE_) + printf(" -> Omega_Lambda = %g, wished %g\n", + pvecback[pba->index_bg_rho_lambda]/pvecback[pba->index_bg_rho_crit], pba->Omega0_lambda); + printf(" -> parameters: [lambda, alpha, A, B] = \n"); + printf(" ["); + for (i=0; iscf_parameters_size-1; i++){ + printf("%.3f, ",pba->scf_parameters[i]); + } + printf("%.3f]\n",pba->scf_parameters[pba->scf_parameters_size-1]); + } + } + + free(pvecback); + free(pvecback_integration); + + return _SUCCESS_; + +} + +/** + * Assign initial values to background integrated variables. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pvecback Input: vector of background quantities used as workspace + * @param pvecback_integration Output: vector of background quantities to be integrated, returned with proper initial values + * @return the error status + */ + +int background_initial_conditions( + struct precision *ppr, + struct background *pba, + double * pvecback, /* vector with argument pvecback[index_bg] (must be already allocated, normal format is sufficient) */ + double * pvecback_integration /* vector with argument pvecback_integration[index_bi] (must be already allocated with size pba->bi_size) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + /* scale factor */ + double a; + + double rho_ncdm, p_ncdm, rho_ncdm_rel_tot=0.; + double f,Omega_rad, rho_rad; + int counter,is_early_enough,n_ncdm; + double scf_lambda; + + /** - fix initial value of \f$ a \f$ */ + a = ppr->a_ini_over_a_today_default * pba->a_today; + + /** If we have ncdm species, perhaps we need to start earlier + than the standard value for the species to be relativistic. + This could happen for some WDM models. + */ + + if (pba->has_ncdm == _TRUE_) { + + for (counter=0; counter < _MAX_IT_; counter++) { + + is_early_enough = _TRUE_; + rho_ncdm_rel_tot = 0.; + + for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { + + class_call(background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + pba->M_ncdm[n_ncdm], + pba->factor_ncdm[n_ncdm], + pba->a_today/a-1.0, + NULL, + &rho_ncdm, + &p_ncdm, + NULL, + NULL), + pba->error_message, + pba->error_message); + rho_ncdm_rel_tot += 3.*p_ncdm; + if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) + is_early_enough = _FALSE_; + } + if (is_early_enough == _TRUE_) + break; + else + a *= _SCALE_BACK_; + } + class_test(counter == _MAX_IT_, + pba->error_message, + "Search for initial scale factor a such that all ncdm species are relativistic failed."); + } + + pvecback_integration[pba->index_bi_a] = a; + + /* Set initial values of {B} variables: */ + Omega_rad = pba->Omega0_g; + if (pba->has_ur == _TRUE_) + Omega_rad += pba->Omega0_ur; + rho_rad = Omega_rad*pow(pba->H0,2)/pow(a/pba->a_today,4); + if (pba->has_ncdm == _TRUE_){ + /** - We must add the relativistic contribution from NCDM species */ + rho_rad += rho_ncdm_rel_tot; + } + if (pba->has_dcdm == _TRUE_){ + /* Remember that the critical density today in CLASS conventions is H0^2 */ + pvecback_integration[pba->index_bi_rho_dcdm] = + pba->Omega_ini_dcdm*pba->H0*pba->H0*pow(pba->a_today/a,3); + if (pba->background_verbose > 3) + printf("Density is %g. a_today=%g. Omega_ini=%g\n",pvecback_integration[pba->index_bi_rho_dcdm],pba->a_today,pba->Omega_ini_dcdm); + } + + if (pba->has_dr == _TRUE_){ + if (pba->has_dcdm == _TRUE_){ + /** - f is the critical density fraction of DR. The exact solution is: + * + * `f = -Omega_rad+pow(pow(Omega_rad,3./2.)+0.5*pow(a/pba->a_today,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3),2./3.);` + * + * but it is not numerically stable for very small f which is always the case. + * Instead we use the Taylor expansion of this equation, which is equivalent to + * ignoring f(a) in the Hubble rate. + */ + f = 1./3.*pow(a/pba->a_today,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3)/sqrt(Omega_rad); + pvecback_integration[pba->index_bi_rho_dr] = f*pba->H0*pba->H0/pow(a/pba->a_today,4); + } + else{ + /** There is also a space reserved for a future case where dr is not sourced by dcdm */ + pvecback_integration[pba->index_bi_rho_dr] = 0.0; + } + } + + /** - Fix initial value of \f$ \phi, \phi' \f$ + * set directly in the radiation attractor => fixes the units in terms of rho_ur + * + * TODO: + * - There seems to be some small oscillation when it starts. + * - Check equations and signs. Sign of phi_prime? + * - is rho_ur all there is early on? + */ + if(pba->has_scf == _TRUE_){ + scf_lambda = pba->scf_parameters[0]; + if(pba->attractor_ic_scf == _TRUE_){ + pvecback_integration[pba->index_bi_phi_scf] = -1/scf_lambda* + log(rho_rad*4./(3*pow(scf_lambda,2)-12))*pba->phi_ini_scf; + if (3.*pow(scf_lambda,2)-12. < 0){ + /** - --> If there is no attractor solution for scf_lambda, assign some value. Otherwise would give a nan.*/ + pvecback_integration[pba->index_bi_phi_scf] = 1./scf_lambda;//seems to the work + if (pba->background_verbose > 0) + printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda); + } + pvecback_integration[pba->index_bi_phi_prime_scf] = 2*pvecback_integration[pba->index_bi_a]* + sqrt(V_scf(pba,pvecback_integration[pba->index_bi_phi_scf]))*pba->phi_prime_ini_scf; + } + else{ + printf("Not using attractor initial conditions\n"); + /** - --> If no attractor initial conditions are assigned, gets the provided ones. */ + pvecback_integration[pba->index_bi_phi_scf] = pba->phi_ini_scf; + pvecback_integration[pba->index_bi_phi_prime_scf] = pba->phi_prime_ini_scf; + } + class_test(!isfinite(pvecback_integration[pba->index_bi_phi_scf]) || + !isfinite(pvecback_integration[pba->index_bi_phi_scf]), + pba->error_message, + "initial phi = %e phi_prime = %e -> check initial conditions", + pvecback_integration[pba->index_bi_phi_scf], + pvecback_integration[pba->index_bi_phi_scf]); + } + + /* Infer pvecback from pvecback_integration */ + class_call(background_functions(pba, pvecback_integration, pba->normal_info, pvecback), + pba->error_message, + pba->error_message); + + /* Just checking that our initial time indeed is deep enough in the radiation + dominated regime */ + class_test(fabs(pvecback[pba->index_bg_Omega_r]-1.) > ppr->tol_initial_Omega_r, + pba->error_message, + "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.", + pvecback[pba->index_bg_Omega_r]); + + /** - compute initial proper time, assuming radiation-dominated + universe since Big Bang and therefore \f$ t=1/(2H) \f$ (good + approximation for most purposes) */ + + class_test(pvecback[pba->index_bg_H] <= 0., + pba->error_message, + "H = %e instead of strictly positive",pvecback[pba->index_bg_H]); + + pvecback_integration[pba->index_bi_time] = 1./(2.* pvecback[pba->index_bg_H]); + + /** - compute initial conformal time, assuming radiation-dominated + universe since Big Bang and therefore \f$ \tau=1/(aH) \f$ + (good approximation for most purposes) */ + pvecback_integration[pba->index_bi_tau] = 1./(a * pvecback[pba->index_bg_H]); + + /** - compute initial sound horizon, assuming \f$ c_s=1/\sqrt{3} \f$ initially */ + pvecback_integration[pba->index_bi_rs] = pvecback_integration[pba->index_bi_tau]/sqrt(3.); + + /** - compute initial value of the integral over \f$ d\tau /(aH^2) \f$, + assumed to be proportional to \f$ a^4 \f$ during RD, but with arbitrary + normalization */ + pvecback_integration[pba->index_bi_growth] = 1./(4.*a*a*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]); + + return _SUCCESS_; + +} + +/** + * Subroutine for formatting background output + * + */ + +int background_output_titles(struct background * pba, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + + /** - Length of the column title should be less than _OUTPUTPRECISION_+6 + to be indented correctly, but it can be as long as . */ + int n; + char tmp[20]; + + class_store_columntitle(titles,"z",_TRUE_); + class_store_columntitle(titles,"proper time [Gyr]",_TRUE_); + class_store_columntitle(titles,"conf. time [Mpc]",_TRUE_); + class_store_columntitle(titles,"H [1/Mpc]",_TRUE_); + class_store_columntitle(titles,"comov. dist.",_TRUE_); + class_store_columntitle(titles,"ang.diam.dist.",_TRUE_); + class_store_columntitle(titles,"lum. dist.",_TRUE_); + class_store_columntitle(titles,"comov.snd.hrz.",_TRUE_); + class_store_columntitle(titles,"(.)rho_g",_TRUE_); + class_store_columntitle(titles,"(.)rho_b",_TRUE_); + class_store_columntitle(titles,"(.)rho_cdm",pba->has_cdm); + if (pba->has_ncdm == _TRUE_){ + for (n=0; nN_ncdm; n++){ + sprintf(tmp,"(.)rho_ncdm[%d]",n); + class_store_columntitle(titles,tmp,_TRUE_); + sprintf(tmp,"(.)p_ncdm[%d]",n); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"(.)rho_lambda",pba->has_lambda); + class_store_columntitle(titles,"(.)rho_fld",pba->has_fld); + class_store_columntitle(titles,"(.)rho_ur",pba->has_ur); + class_store_columntitle(titles,"(.)rho_crit",_TRUE_); + class_store_columntitle(titles,"(.)rho_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"(.)rho_dr",pba->has_dr); + + class_store_columntitle(titles,"(.)rho_scf",pba->has_scf); + class_store_columntitle(titles,"(.)p_scf",pba->has_scf); + class_store_columntitle(titles,"phi_scf",pba->has_scf); + class_store_columntitle(titles,"phi'_scf",pba->has_scf); + class_store_columntitle(titles,"V_scf",pba->has_scf); + class_store_columntitle(titles,"V'_scf",pba->has_scf); + class_store_columntitle(titles,"V''_scf",pba->has_scf); + + class_store_columntitle(titles,"gr.fac. D",_TRUE_); + class_store_columntitle(titles,"gr.fac. f",_TRUE_); + + return _SUCCESS_; +} + +int background_output_data( + struct background *pba, + int number_of_titles, + double *data){ + int index_tau, storeidx, n; + double *dataptr, *pvecback; + + /** Stores quantities */ + for (index_tau=0; index_taubt_size; index_tau++){ + dataptr = data + index_tau*number_of_titles; + pvecback = pba->background_table + index_tau*pba->bg_size; + storeidx = 0; + + class_store_double(dataptr,pba->a_today/pvecback[pba->index_bg_a]-1.,_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_time]/_Gyr_over_Mpc_,_TRUE_,storeidx); + class_store_double(dataptr,pba->conformal_age-pvecback[pba->index_bg_conf_distance],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_H],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_conf_distance],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_ang_distance],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_lum_distance],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rs],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_g],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_b],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_cdm],pba->has_cdm,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n=0; nN_ncdm; n++){ + class_store_double(dataptr,pvecback[pba->index_bg_rho_ncdm1+n],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_ncdm1+n],_TRUE_,storeidx); + } + } + class_store_double(dataptr,pvecback[pba->index_bg_rho_lambda],pba->has_lambda,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_fld],pba->has_fld,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_ur],pba->has_ur,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_crit],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_dcdm],pba->has_dcdm,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_dr],pba->has_dr,storeidx); + + class_store_double(dataptr,pvecback[pba->index_bg_rho_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_phi_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_phi_prime_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_V_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_dV_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_ddV_scf],pba->has_scf,storeidx); + + class_store_double(dataptr,pvecback[pba->index_bg_D],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_f],_TRUE_,storeidx); + } + + return _SUCCESS_; +} + + +/** + * Subroutine evaluating the derivative with respect to conformal time + * of quantities which are integrated (a, t, etc). + * + * This is one of the few functions in the code which is passed to + * the generic_integrator() routine. Since generic_integrator() + * should work with functions passed from various modules, the format + * of the arguments is a bit special: + * + * - fixed input parameters and workspaces are passed through a generic + * pointer. Here, this is just a pointer to the background structure + * and to a background vector, but generic_integrator() doesn't know + * its fine structure. + * + * - the error management is a bit special: errors are not written as + * usual to pba->error_message, but to a generic error_message passed + * in the list of arguments. + * + * @param tau Input: conformal time + * @param y Input: vector of variable + * @param dy Output: its derivative (already allocated) + * @param parameters_and_workspace Input: pointer to fixed parameters (e.g. indices) + * @param error_message Output: error message + */ +int background_derivs( + double tau, + double* y, /* vector with argument y[index_bi] (must be already allocated with size pba->bi_size) */ + double* dy, /* vector with argument dy[index_bi] + (must be already allocated with + size pba->bi_size) */ + void * parameters_and_workspace, + ErrorMsg error_message + ) { + + /** Summary: */ + + /** - define local variables */ + + struct background_parameters_and_workspace * pbpaw; + struct background * pba; + double * pvecback; + + pbpaw = parameters_and_workspace; + pba = pbpaw->pba; + pvecback = pbpaw->pvecback; + + /** - calculate functions of \f$ a \f$ with background_functions() */ + class_call(background_functions(pba, y, pba->normal_info, pvecback), + pba->error_message, + error_message); + + /** - calculate \f$ a'=a^2 H \f$ */ + dy[pba->index_bi_a] = y[pba->index_bi_a] * y[pba->index_bi_a] * pvecback[pba->index_bg_H]; + + /** - calculate \f$ t' = a \f$ */ + dy[pba->index_bi_time] = y[pba->index_bi_a]; + + class_test(pvecback[pba->index_bg_rho_g] <= 0., + error_message, + "rho_g = %e instead of strictly positive",pvecback[pba->index_bg_rho_g]); + + /** - calculate \f$ rs' = c_s \f$*/ + dy[pba->index_bi_rs] = 1./sqrt(3.*(1.+3.*pvecback[pba->index_bg_rho_b]/4./pvecback[pba->index_bg_rho_g]))*sqrt(1.-pba->K*y[pba->index_bi_rs]*y[pba->index_bi_rs]); // TBC: curvature correction + + /** - calculate growth' \f$ = 1/(aH^2) \f$ */ + dy[pba->index_bi_growth] = 1./(y[pba->index_bi_a] * pvecback[pba->index_bg_H] * pvecback[pba->index_bg_H]); + + if (pba->has_dcdm == _TRUE_){ + /** - compute dcdm density \f$ \rho' = -3aH \rho - a \Gamma \rho \f$*/ + dy[pba->index_bi_rho_dcdm] = -3.*y[pba->index_bi_a]*pvecback[pba->index_bg_H]*y[pba->index_bi_rho_dcdm]- + y[pba->index_bi_a]*pba->Gamma_dcdm*y[pba->index_bi_rho_dcdm]; + } + + if ((pba->has_dcdm == _TRUE_) && (pba->has_dr == _TRUE_)){ + /** - Compute dr density \f$ \rho' = -4aH \rho - a \Gamma \rho \f$ */ + dy[pba->index_bi_rho_dr] = -4.*y[pba->index_bi_a]*pvecback[pba->index_bg_H]*y[pba->index_bi_rho_dr]+ + y[pba->index_bi_a]*pba->Gamma_dcdm*y[pba->index_bi_rho_dcdm]; + } + + if (pba->has_scf == _TRUE_){ + /** - Scalar field equation: \f$ \phi'' + 2 a H \phi' + a^2 dV = 0 \f$ (note H is wrt cosmic time) */ + dy[pba->index_bi_phi_scf] = y[pba->index_bi_phi_prime_scf]; + dy[pba->index_bi_phi_prime_scf] = - y[pba->index_bi_a]* + (2*pvecback[pba->index_bg_H]*y[pba->index_bi_phi_prime_scf] + + y[pba->index_bi_a]*dV_scf(pba,y[pba->index_bi_phi_scf])) ; + } + + + return _SUCCESS_; + +} + +/** + * Scalar field potential and its derivatives with respect to the field _scf + * For Albrecht & Skordis model: 9908085 + * - \f$ V = V_{p_{scf}}*V_{e_{scf}} \f$ + * - \f$ V_e = \exp(-\lambda \phi) \f$ (exponential) + * - \f$ V_p = (\phi - B)^\alpha + A \f$ (polynomial bump) + * + * TODO: + * - Add some functionality to include different models/potentials (tuning would be difficult, though) + * - Generalize to Kessence/Horndeski/PPF and/or couplings + * - A default module to numerically compute the derivatives when no analytic functions are given should be added. + * - Numerical derivatives may further serve as a consistency check. + * + */ + +/** + * + * The units of phi, tau in the derivatives and the potential V are the following: + * - phi is given in units of the reduced Planck mass \f$ m_{pl} = (8 \pi G)^{(-1/2)}\f$ + * - tau in the derivative is given in units of Mpc. + * - the potential \f$ V(\phi) \f$ is given in units of \f$ m_{pl}^2/Mpc^2 \f$. + * With this convention, we have + * \f$ \rho^{class} = (8 \pi G)/3 \rho^{physical} = 1/(3 m_{pl}^2) \rho^{physical} = 1/3 * [ 1/(2a^2) (\phi')^2 + V(\phi) ] \f$ + and \f$ \rho^{class} \f$ has the proper dimension \f$ Mpc^-2 \f$. + */ + +double V_e_scf(struct background *pba, + double phi + ) { + double scf_lambda = pba->scf_parameters[0]; + // double scf_alpha = pba->scf_parameters[1]; + // double scf_A = pba->scf_parameters[2]; + // double scf_B = pba->scf_parameters[3]; + + return exp(-scf_lambda*phi); +} + +double dV_e_scf(struct background *pba, + double phi + ) { + double scf_lambda = pba->scf_parameters[0]; + // double scf_alpha = pba->scf_parameters[1]; + // double scf_A = pba->scf_parameters[2]; + // double scf_B = pba->scf_parameters[3]; + + return -scf_lambda*V_scf(pba,phi); +} + +double ddV_e_scf(struct background *pba, + double phi + ) { + double scf_lambda = pba->scf_parameters[0]; + // double scf_alpha = pba->scf_parameters[1]; + // double scf_A = pba->scf_parameters[2]; + // double scf_B = pba->scf_parameters[3]; + + return pow(-scf_lambda,2)*V_scf(pba,phi); +} + + +/** parameters and functions for the polynomial coefficient + * \f$ V_p = (\phi - B)^\alpha + A \f$(polynomial bump) + * + * double scf_alpha = 2; + * + * double scf_B = 34.8; + * + * double scf_A = 0.01; (values for their Figure 2) + */ + +double V_p_scf( + struct background *pba, + double phi) { + // double scf_lambda = pba->scf_parameters[0]; + double scf_alpha = pba->scf_parameters[1]; + double scf_A = pba->scf_parameters[2]; + double scf_B = pba->scf_parameters[3]; + + return pow(phi - scf_B, scf_alpha) + scf_A; +} + +double dV_p_scf( + struct background *pba, + double phi) { + + // double scf_lambda = pba->scf_parameters[0]; + double scf_alpha = pba->scf_parameters[1]; + // double scf_A = pba->scf_parameters[2]; + double scf_B = pba->scf_parameters[3]; + + return scf_alpha*pow(phi - scf_B, scf_alpha - 1); +} + +double ddV_p_scf( + struct background *pba, + double phi) { + // double scf_lambda = pba->scf_parameters[0]; + double scf_alpha = pba->scf_parameters[1]; + // double scf_A = pba->scf_parameters[2]; + double scf_B = pba->scf_parameters[3]; + + return scf_alpha*(scf_alpha - 1.)*pow(phi - scf_B, scf_alpha - 2); +} + +/** Fianlly we can obtain the overall potential \f$ V = V_p*V_e \f$ + */ + +double V_scf( + struct background *pba, + double phi) { + return V_e_scf(pba,phi)*V_p_scf(pba,phi); +} + +double dV_scf( + struct background *pba, + double phi) { + return dV_e_scf(pba,phi)*V_p_scf(pba,phi) + V_e_scf(pba,phi)*dV_p_scf(pba,phi); +} + +double ddV_scf( + struct background *pba, + double phi) { + return ddV_e_scf(pba,phi)*V_p_scf(pba,phi) + 2*dV_e_scf(pba,phi)*dV_p_scf(pba,phi) + V_e_scf(pba,phi)*ddV_p_scf(pba,phi); +} diff --git a/class_old/source/input.c b/class_old/source/input.c new file mode 100644 index 00000000..ac40b992 --- /dev/null +++ b/class_old/source/input.c @@ -0,0 +1,3956 @@ +/** @file input.c Documented input module. + * + * Julien Lesgourgues, 27.08.2010 + */ + +/* modified for CCL to include sigma_8 following recipe in + https://github.com/lesgourg/class_public/issues/83 */ + +#include "input.h" + +/** + * Use this routine to extract initial parameters from files 'xxx.ini' + * and/or 'xxx.pre'. They can be the arguments of the main() routine. + * + * If class is embedded into another code, you will probably prefer to + * call directly input_init() in order to pass input parameters + * through a 'file_content' structure. + */ + +int input_init_from_arguments( + int argc, + char **argv, + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ) { + + /** Summary: */ + + /** - define local variables */ + + struct file_content fc; /** - --> the final structure with all parameters */ + struct file_content fc_input; /** - --> a temporary structure with all input parameters */ + struct file_content fc_precision; /** - --> a temporary structure with all precision parameters */ + struct file_content fc_root; /** - --> a temporary structure with only the root name */ + struct file_content fc_inputroot; /** - --> sum of fc_inoput and fc_root */ + struct file_content * pfc_input; /** - --> a pointer to either fc_root or fc_inputroot */ + + char input_file[_ARGUMENT_LENGTH_MAX_]; + char precision_file[_ARGUMENT_LENGTH_MAX_]; + char tmp_file[_ARGUMENT_LENGTH_MAX_]; + + int i; + char extension[5]; + FileArg stringoutput, inifilename; + int flag1, filenum; + + pfc_input = &fc_input; + + /** - Initialize the two file_content structures (for input + parameters and precision parameters) to some null content. If no + arguments are passed, they will remain null and inform + init_params() that all parameters take default values. */ + + fc.size = 0; + fc_input.size = 0; + fc_precision.size = 0; + input_file[0]='\0'; + precision_file[0]='\0'; + + /** - If some arguments are passed, identify eventually some 'xxx.ini' + and 'xxx.pre' files, and store their name. */ + + if (argc > 1) { + for (i=1; i input_auxillary_target_conditions() takes care of the case where for + instance Omega_dcdmdr is set to 0.0. + */ + class_call(input_auxillary_target_conditions(pfc, + index_target, + param1, + &aux_flag, + errmsg), + errmsg, errmsg); + if (aux_flag == _TRUE_){ + //printf("Found target: %s\n",target_namestrings[index_target]); + target_indices[unknown_parameters_size] = index_target; + fzw.required_computation_stage = MAX(fzw.required_computation_stage,target_cs[index_target]); + unknown_parameters_size++; + } + } + } + + /** - case with unknown parameters */ + if (unknown_parameters_size > 0) { + + /* Create file content structure with additional entries */ + class_call(parser_init(&(fzw.fc), + pfc->size+unknown_parameters_size, + pfc->filename, + errmsg), + errmsg,errmsg); + /* Copy input file content to the new file content structure: */ + memcpy(fzw.fc.name, pfc->name, pfc->size*sizeof(FileArg)); + memcpy(fzw.fc.value, pfc->value, pfc->size*sizeof(FileArg)); + memcpy(fzw.fc.read, pfc->read, pfc->size*sizeof(short)); + + class_alloc(unknown_parameter, + unknown_parameters_size*sizeof(double), + errmsg); + class_alloc(fzw.unknown_parameters_index, + unknown_parameters_size*sizeof(int), + errmsg); + fzw.target_size = unknown_parameters_size; + class_alloc(fzw.target_name, + fzw.target_size*sizeof(enum target_names), + errmsg); + class_alloc(fzw.target_value, + fzw.target_size*sizeof(double), + errmsg); + + /** - --> go through all cases with unknown parameters: */ + for (counter = 0; counter < unknown_parameters_size; counter++){ + index_target = target_indices[counter]; + class_call(parser_read_double(pfc, + target_namestrings[index_target], + ¶m1, + &flag1, + errmsg), + errmsg, + errmsg); + + // store name of target parameter + fzw.target_name[counter] = index_target; + // store target value of target parameter + fzw.target_value[counter] = param1; + fzw.unknown_parameters_index[counter]=pfc->size+counter; + // substitute the name of the target parameter with the name of the corresponding unknown parameter + strcpy(fzw.fc.name[fzw.unknown_parameters_index[counter]],unknown_namestrings[index_target]); + //printf("%d, %d: %s\n",counter,index_target,target_namestrings[index_target]); + } + + if (unknown_parameters_size == 1){ + /* We can do 1 dimensional root finding */ + /* If shooting fails, postpone error to background module to play nice with MontePython. */ + class_call_try(input_find_root(&xzero, + &fevals, + &fzw, + errmsg), + errmsg, + pba->shooting_error, + shooting_failed=_TRUE_); + + /* Store xzero */ + sprintf(fzw.fc.value[fzw.unknown_parameters_index[0]],"%e",xzero); + if (input_verbose > 0) { + fprintf(stdout,"Computing unknown input parameters\n"); + fprintf(stdout," -> found %s = %s\n", + fzw.fc.name[fzw.unknown_parameters_index[0]], + fzw.fc.value[fzw.unknown_parameters_index[0]]); + } + } + else{ + class_alloc(x_inout, + sizeof(double)*unknown_parameters_size, + errmsg); + class_alloc(dxdF, + sizeof(double)*unknown_parameters_size, + errmsg); + class_call(input_get_guess(x_inout, + dxdF, + &fzw, + errmsg), + errmsg, errmsg); + + class_call_try(fzero_Newton(input_try_unknown_parameters, + x_inout, + dxdF, + unknown_parameters_size, + 1e-4, + 1e-6, + &fzw, + &fevals, + errmsg), + errmsg, pba->shooting_error,shooting_failed=_TRUE_); + + if (input_verbose > 0) { + fprintf(stdout,"Computing unknown input parameters\n"); + } + + /* Store xzero */ + for (counter = 0; counter < unknown_parameters_size; counter++){ + sprintf(fzw.fc.value[fzw.unknown_parameters_index[counter]], + "%e",x_inout[counter]); + if (input_verbose > 0) { + fprintf(stdout," -> found %s = %s\n", + fzw.fc.name[fzw.unknown_parameters_index[counter]], + fzw.fc.value[fzw.unknown_parameters_index[counter]]); + } + } + + free(x_inout); + free(dxdF); + } + + if (input_verbose > 1) { + fprintf(stdout,"Shooting completed using %d function evaluations\n",fevals); + } + + + /** - --> Read all parameters from tuned pfc */ + class_call(input_read_parameters(&(fzw.fc), + ppr, + pba, + pth, + ppt, + ptr, + ppm, + psp, + pnl, + ple, + pop, + errmsg), + errmsg, + errmsg); + + /** - --> Set status of shooting */ + pba->shooting_failed = shooting_failed; + + /* all parameters read in fzw must be considered as read in + pfc. At the same time the parameters read before in pfc (like + theta_s,...) must still be considered as read (hence we could + not do a memcopy) */ + for (i=0; i < pfc->size; i ++) { + if (fzw.fc.read[i] == _TRUE_) + pfc->read[i] = _TRUE_; + } + + // Free tuned pfc + parser_free(&(fzw.fc)); + /** - --> Free arrays allocated*/ + free(unknown_parameter); + free(fzw.unknown_parameters_index); + free(fzw.target_name); + free(fzw.target_value); + } + /** - case with no unknown parameters */ + else{ + + /** - --> just read all parameters from input pfc: */ + class_call(input_read_parameters(pfc, + ppr, + pba, + pth, + ppt, + ptr, + ppm, + psp, + pnl, + ple, + pop, + errmsg), + errmsg, + errmsg); + } + + /** - eventually write all the read parameters in a file, unread parameters in another file, and warnings about unread parameters */ + + class_call(parser_read_string(pfc,"write parameters",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + sprintf(param_output_name,"%s%s",pop->root,"parameters.ini"); + sprintf(param_unused_name,"%s%s",pop->root,"unused_parameters"); + + class_open(param_output,param_output_name,"w",errmsg); + class_open(param_unused,param_unused_name,"w",errmsg); + + fprintf(param_output,"# List of input/precision parameters actually read\n"); + fprintf(param_output,"# (all other parameters set to default values)\n"); + fprintf(param_output,"# Obtained with CLASS %s (for developers: svn version %s)\n",_VERSION_,_SVN_VERSION_); + fprintf(param_output,"#\n"); + fprintf(param_output,"# This file can be used as the input file of another run\n"); + fprintf(param_output,"#\n"); + + fprintf(param_unused,"# List of input/precision parameters passed\n"); + fprintf(param_unused,"# but not used (just for info)\n"); + fprintf(param_unused,"#\n"); + + for (i=0; isize; i++) { + if (pfc->read[i] == _TRUE_) + fprintf(param_output,"%s = %s\n",pfc->name[i],pfc->value[i]); + else + fprintf(param_unused,"%s = %s\n",pfc->name[i],pfc->value[i]); + } + fprintf(param_output,"#\n"); + + fclose(param_output); + fclose(param_unused); + } + + class_call(parser_read_string(pfc,"write warnings",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + for (i=0; isize; i++) { + if (pfc->read[i] == _FALSE_) + fprintf(stdout,"[WARNING: input line not recognized and not taken into account: '%s=%s']\n",pfc->name[i],pfc->value[i]); + } + } + + return _SUCCESS_; + +} + +int input_read_parameters( + struct file_content * pfc, + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ) { + + /** Summary: */ + + /** - define local variables */ + + int flag1,flag2,flag3; + double param1,param2,param3; + int N_ncdm=0,n,entries_read; + int int1,fileentries; + double scf_lambda; + double fnu_factor; + double * pointer1; + char string1[_ARGUMENT_LENGTH_MAX_]; + char string2[_ARGUMENT_LENGTH_MAX_]; + double k1=0.; + double k2=0.; + double prr1=0.; + double prr2=0.; + double pii1=0.; + double pii2=0.; + double pri1=0.; + double pri2=0.; + double n_iso=0.; + double f_iso=0.; + double n_cor=0.; + double c_cor=0.; + + double Omega_tot; + + int i; + + double sigma_B; /* Stefan-Boltzmann constant in \f$ W/m^2/K^4 = Kg/K^4/s^3 \f$*/ + + double rho_ncdm; + double R0,R1,R2,R3,R4; + double PSR0,PSR1,PSR2,PSR3,PSR4; + double HSR0,HSR1,HSR2,HSR3,HSR4; + + double z_max=0.; + int bin; + + sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); + + /** - set all parameters (input and precision) to default values */ + + class_call(input_default_params(pba, + pth, + ppt, + ptr, + ppm, + psp, + pnl, + ple, + pop), + errmsg, + errmsg); + + class_call(input_default_precision(ppr), + errmsg, + errmsg); + + /** - if entries passed in file_content structure, carefully read + and interpret each of them, and tune the relevant input + parameters accordingly*/ + + /** Knowing the gauge from the very beginning is useful (even if + this could be a run not requiring perturbations at all: even in + that case, knowing the gauge is important e.g. for fixing the + sampling in momentum space for non-cold dark matter) */ + + class_call(parser_read_string(pfc,"gauge",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"newtonian") != NULL) || (strstr(string1,"Newtonian") != NULL) || (strstr(string1,"new") != NULL)) { + ppt->gauge = newtonian; + } + + if ((strstr(string1,"synchronous") != NULL) || (strstr(string1,"sync") != NULL) || (strstr(string1,"Synchronous") != NULL)) { + ppt->gauge = synchronous; + } + } + + /** (a) background parameters */ + + /** - scale factor today (arbitrary) */ + class_read_double("a_today",pba->a_today); + + /** - h (dimensionless) and [\f$ H_0/c\f$] in \f$ Mpc^{-1} = h / 2997.9... = h * 10^5 / c \f$ */ + class_call(parser_read_double(pfc,"H0",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"h",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), + errmsg, + "In input file, you cannot enter both h and H0, choose one"); + if (flag1 == _TRUE_) { + pba->H0 = param1 * 1.e3 / _c_; + pba->h = param1 / 100.; + } + if (flag2 == _TRUE_) { + pba->H0 = param2 * 1.e5 / _c_; + pba->h = param2; + } + + /** - Omega_0_g (photons) and T_cmb */ + class_call(parser_read_double(pfc,"T_cmb",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"Omega_g",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_g",¶m3,&flag3,errmsg), + errmsg, + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of T_cmb, Omega_g or omega_g, choose one"); + + if (class_none_of_three(flag1,flag2,flag3)) { + pba->Omega0_g = (4.*sigma_B/_c_*pow(pba->T_cmb,4.)) / (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); + } + else { + + if (flag1 == _TRUE_) { + /** - Omega0_g = rho_g / rho_c0, each of them expressed in \f$ Kg/m/s^2 \f$*/ + /** - rho_g = (4 sigma_B / c) \f$ T^4 \f$*/ + /** - rho_c0 \f$ = 3 c^2 H_0^2 / (8 \pi G) \f$*/ + pba->Omega0_g = (4.*sigma_B/_c_*pow(param1,4.)) / (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); + pba->T_cmb=param1; + } + + if (flag2 == _TRUE_) { + pba->Omega0_g = param2; + pba->T_cmb=pow(pba->Omega0_g * (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_) / (4.*sigma_B/_c_),0.25); + } + + if (flag3 == _TRUE_) { + pba->Omega0_g = param3/pba->h/pba->h; + pba->T_cmb = pow(pba->Omega0_g * (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_) / (4.*sigma_B/_c_),0.25); + } + } + + Omega_tot = pba->Omega0_g; + + /** - Omega_0_b (baryons) */ + class_call(parser_read_double(pfc,"Omega_b",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_b",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_b or omega_b, choose one"); + if (flag1 == _TRUE_) + pba->Omega0_b = param1; + if (flag2 == _TRUE_) + pba->Omega0_b = param2/pba->h/pba->h; + + Omega_tot += pba->Omega0_b; + + /** - Omega_0_ur (ultra-relativistic species / massless neutrino) */ + + /* (a) try to read N_ur */ + class_call(parser_read_double(pfc,"N_ur",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + /* these lines have been added for compatibility with deprecated syntax 'N_eff' instead of 'N_ur', in the future they could be suppressed */ + class_call(parser_read_double(pfc,"N_eff",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), + errmsg, + "In input file, you can only enter one of N_eff (deprecated syntax) or N_ur (up-to-date syntax), since they botgh describe the same, i.e. the contribution ukltra-relativistic species to the effective neutrino number"); + if (flag2 == _TRUE_) { + param1 = param2; + flag1 = _TRUE_; + flag2 = _FALSE_; + } + /* end of lines for deprecated syntax */ + + /* (b) try to read Omega_ur */ + class_call(parser_read_double(pfc,"Omega_ur",¶m2,&flag2,errmsg), + errmsg, + errmsg); + + /* (c) try to read omega_ur */ + class_call(parser_read_double(pfc,"omega_ur",¶m3,&flag3,errmsg), + errmsg, + errmsg); + + /* (d) infer the unpassed ones from the passed one */ + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of N_eff, Omega_ur or omega_ur, choose one"); + + if (class_none_of_three(flag1,flag2,flag3)) { + pba->Omega0_ur = 3.046*7./8.*pow(4./11.,4./3.)*pba->Omega0_g; + } + else { + + if (flag1 == _TRUE_) { + pba->Omega0_ur = param1*7./8.*pow(4./11.,4./3.)*pba->Omega0_g; + } + if (flag2 == _TRUE_) { + pba->Omega0_ur = param2; + } + if (flag3 == _TRUE_) { + pba->Omega0_ur = param3/pba->h/pba->h; + } + } + + class_call(parser_read_double(pfc,"ceff2_ur",¶m1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_) ppt->three_ceff2_ur = 3.*param1; + + class_call(parser_read_double(pfc,"cvis2_ur",¶m1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_) ppt->three_cvis2_ur = 3.*param1; + + Omega_tot += pba->Omega0_ur; + + /** - Omega_0_cdm (CDM) */ + class_call(parser_read_double(pfc,"Omega_cdm",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_cdm",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_cdm or omega_cdm, choose one"); + if (flag1 == _TRUE_) + pba->Omega0_cdm = param1; + if (flag2 == _TRUE_) + pba->Omega0_cdm = param2/pba->h/pba->h; + + Omega_tot += pba->Omega0_cdm; + + /** - Omega_0_dcdmdr (DCDM) */ + class_call(parser_read_double(pfc,"Omega_dcdmdr",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_dcdmdr",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_dcdmdr or omega_dcdmdr, choose one"); + if (flag1 == _TRUE_) + pba->Omega0_dcdmdr = param1; + if (flag2 == _TRUE_) + pba->Omega0_dcdmdr = param2/pba->h/pba->h; + Omega_tot += pba->Omega0_dcdmdr; + + /** - Read Omega_ini_dcdm or omega_ini_dcdm */ + class_call(parser_read_double(pfc,"Omega_ini_dcdm",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_ini_dcdm",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_ini_dcdm or omega_ini_dcdm, choose one"); + if (flag1 == _TRUE_) + pba->Omega_ini_dcdm = param1; + if (flag2 == _TRUE_) + pba->Omega_ini_dcdm = param2/pba->h/pba->h; + + /** - Read Gamma in same units as H0, i.e. km/(s Mpc)*/ + class_read_double("Gamma_dcdm",pba->Gamma_dcdm); + /* Convert to Mpc */ + pba->Gamma_dcdm *= (1.e3 / _c_); + + /** - non-cold relics (ncdm) */ + class_read_int("N_ncdm",N_ncdm); + if ((flag1 == _TRUE_) && (N_ncdm > 0)){ + pba->N_ncdm = N_ncdm; + /* Precision parameters for ncdm has to be read now since they are used here:*/ + class_read_double("tol_M_ncdm",ppr->tol_M_ncdm); + class_read_double("tol_ncdm_newtonian",ppr->tol_ncdm_newtonian); + class_read_double("tol_ncdm_synchronous",ppr->tol_ncdm_synchronous); + class_read_double("tol_ncdm_bg",ppr->tol_ncdm_bg); + if (ppt->gauge == synchronous) + ppr->tol_ncdm = ppr->tol_ncdm_synchronous; + if (ppt->gauge == newtonian) + ppr->tol_ncdm = ppr->tol_ncdm_newtonian; + + /* Read temperatures: */ + class_read_list_of_doubles_or_default("T_ncdm",pba->T_ncdm,pba->T_ncdm_default,N_ncdm); + + /* Read chemical potentials: */ + class_read_list_of_doubles_or_default("ksi_ncdm",pba->ksi_ncdm,pba->ksi_ncdm_default,N_ncdm); + + /* Read degeneracy of each ncdm species: */ + class_read_list_of_doubles_or_default("deg_ncdm",pba->deg_ncdm,pba->deg_ncdm_default,N_ncdm); + + /* Read mass of each ncdm species: */ + class_read_list_of_doubles_or_default("m_ncdm",pba->m_ncdm_in_eV,0.0,N_ncdm); + + /* Read Omega of each ncdm species: */ + class_read_list_of_doubles_or_default("Omega_ncdm",pba->Omega0_ncdm,0.0,N_ncdm); + + /* Read omega of each ncdm species: (Use pba->M_ncdm temporarily)*/ + class_read_list_of_doubles_or_default("omega_ncdm",pba->M_ncdm,0.0,N_ncdm); + + /* Check for duplicate Omega/omega entries, missing mass definition and + update pba->Omega0_ncdm:*/ + for(n=0; nM_ncdm holds value of omega */ + if (pba->M_ncdm[n]!=0.0){ + class_test(pba->Omega0_ncdm[n]!=0,errmsg, + "Nonzero values for both Omega and omega for ncdm species %d are specified!",n); + pba->Omega0_ncdm[n] = pba->M_ncdm[n]/pba->h/pba->h; + } + if ((pba->Omega0_ncdm[n]==0.0) && (pba->m_ncdm_in_eV[n]==0.0)) { + /* this is the right place for passing the default value of + the mass (all parameters must have a default value; most of + them are defined in input_default_params{}, but the ncdm mass + is a bit special and there is no better place for setting its + default value). We put an arbitrary value m << 10^-3 eV, + i.e. the ultra-relativistic limit.*/ + pba->m_ncdm_in_eV[n]=1.e-5; + } + } + + /* Check if filenames for interpolation tables are given: */ + class_read_list_of_integers_or_default("use_ncdm_psd_files",pba->got_files,_FALSE_,N_ncdm); + + if (flag1==_TRUE_){ + for(n=0,fileentries=0; ngot_files[n] == _TRUE_) fileentries++; + } + + if (fileentries > 0) { + + /* Okay, read filenames.. */ + class_call(parser_read_list_of_strings(pfc,"ncdm_psd_filenames", + &entries_read,&(pba->ncdm_psd_files),&flag2,errmsg), + errmsg, + errmsg); + class_test(flag2 == _FALSE_,errmsg, + "Input use_ncdm_files is found, but no filenames found!"); + class_test(entries_read != fileentries,errmsg, + "Number of filenames found, %d, does not match number of _TRUE_ values in use_ncdm_files, %d", + entries_read,fileentries); + } + } + /* Read (optional) p.s.d.-parameters:*/ + parser_read_list_of_doubles(pfc, + "ncdm_psd_parameters", + &entries_read, + &(pba->ncdm_psd_parameters), + &flag2, + errmsg); + + class_call(background_ncdm_init(ppr,pba), + pba->error_message, + errmsg); + + /* We must calculate M from omega or vice versa if one of them is missing. + If both are present, we must update the degeneracy parameter to + reflect the implicit normalization of the distribution function.*/ + for (n=0; n < N_ncdm; n++){ + if (pba->m_ncdm_in_eV[n] != 0.0){ + /* Case of only mass or mass and Omega/omega: */ + pba->M_ncdm[n] = pba->m_ncdm_in_eV[n]/_k_B_*_eV_/pba->T_ncdm[n]/pba->T_cmb; + class_call(background_ncdm_momenta(pba->q_ncdm_bg[n], + pba->w_ncdm_bg[n], + pba->q_size_ncdm_bg[n], + pba->M_ncdm[n], + pba->factor_ncdm[n], + 0., + NULL, + &rho_ncdm, + NULL, + NULL, + NULL), + pba->error_message, + errmsg); + if (pba->Omega0_ncdm[n] == 0.0){ + pba->Omega0_ncdm[n] = rho_ncdm/pba->H0/pba->H0; + } + else{ + fnu_factor = (pba->H0*pba->H0*pba->Omega0_ncdm[n]/rho_ncdm); + pba->factor_ncdm[n] *= fnu_factor; + /* dlnf0dlnq is already computed, but it is + independent of any normalization of f0. + We don't need the factor anymore, but we + store it nevertheless:*/ + pba->deg_ncdm[n] *=fnu_factor; + } + } + else{ + /* Case of only Omega/omega: */ + class_call(background_ncdm_M_from_Omega(ppr,pba,n), + pba->error_message, + errmsg); + //printf("M_ncdm:%g\n",pba->M_ncdm[n]); + pba->m_ncdm_in_eV[n] = _k_B_/_eV_*pba->T_ncdm[n]*pba->M_ncdm[n]*pba->T_cmb; + } + pba->Omega0_ncdm_tot += pba->Omega0_ncdm[n]; + //printf("Adding %g to total Omega..\n",pba->Omega0_ncdm[n]); + } + } + Omega_tot += pba->Omega0_ncdm_tot; + + /** - Omega_0_k (effective fractional density of curvature) */ + class_read_double("Omega_k",pba->Omega0_k); + /** - Set curvature parameter K */ + pba->K = -pba->Omega0_k*pow(pba->a_today*pba->H0,2); + /** - Set curvature sign */ + if (pba->K > 0.) pba->sgnK = 1; + else if (pba->K < 0.) pba->sgnK = -1; + + /** - Omega_0_lambda (cosmological constant), Omega0_fld (dark energy fluid), Omega0_scf (scalar field) */ + + class_call(parser_read_double(pfc,"Omega_Lambda",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"Omega_fld",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"Omega_scf",¶m3,&flag3,errmsg), + errmsg, + errmsg); + + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_) && ((flag3 == _FALSE_) || (param3 >= 0.)), + errmsg, + "In input file, either Omega_Lambda or Omega_fld must be left unspecified, except if Omega_scf is set and <0.0, in which case the contribution from the scalar field will be the free parameter."); + + /** - --> (flag3 == _FALSE_) || (param3 >= 0.) explained: + * it means that either we have not read Omega_scf so we are ignoring it + * (unlike lambda and fld!) OR we have read it, but it had a + * positive value and should not be used for filling. + * We now proceed in two steps: + * 1) set each Omega0 and add to the total for each specified component. + * 2) go through the components in order {lambda, fld, scf} and + * fill using first unspecified component. + */ + + /* Step 1 */ + if (flag1 == _TRUE_){ + pba->Omega0_lambda = param1; + Omega_tot += pba->Omega0_lambda; + } + if (flag2 == _TRUE_){ + pba->Omega0_fld = param2; + Omega_tot += pba->Omega0_fld; + } + if ((flag3 == _TRUE_) && (param3 >= 0.)){ + pba->Omega0_scf = param3; + Omega_tot += pba->Omega0_scf; + } + /* Step 2 */ + if (flag1 == _FALSE_) //Fill with Lambda + pba->Omega0_lambda= 1. - pba->Omega0_k - Omega_tot; + else if (flag2 == _FALSE_) // Fill up with fluid + pba->Omega0_fld = 1. - pba->Omega0_k - Omega_tot; + else if ((flag3 == _TRUE_) && (param3 < 0.)){ // Fill up with scalar field + pba->Omega0_scf = 1. - pba->Omega0_k - Omega_tot; + } + + /** - Test that the user have not specified Omega_scf = -1 but left either + Omega_lambda or Omega_fld unspecified:*/ + class_test(((flag1 == _FALSE_)||(flag2 == _FALSE_)) && ((flag3 == _TRUE_) && (param3 < 0.)), + errmsg, + "It looks like you want to fulfil the closure relation sum Omega = 1 using the scalar field, so you have to specify both Omega_lambda and Omega_fld in the .ini file"); + + if (pba->Omega0_fld != 0.) { + class_read_double("w0_fld",pba->w0_fld); + class_read_double("wa_fld",pba->wa_fld); + class_read_double("cs2_fld",pba->cs2_fld); + } + + /* Additional SCF parameters: */ + if (pba->Omega0_scf != 0.){ + /** - Read parameters describing scalar field potential */ + class_call(parser_read_list_of_doubles(pfc, + "scf_parameters", + &(pba->scf_parameters_size), + &(pba->scf_parameters), + &flag1, + errmsg), + errmsg,errmsg); + class_read_int("scf_tuning_index",pba->scf_tuning_index); + class_test(pba->scf_tuning_index >= pba->scf_parameters_size, + errmsg, + "Tuning index scf_tuning_index = %d is larger than the number of entries %d in scf_parameters. Check your .ini file.",pba->scf_tuning_index,pba->scf_parameters_size); + /** - Assign shooting parameter */ + class_read_double("scf_shooting_parameter",pba->scf_parameters[pba->scf_tuning_index]); + + scf_lambda = pba->scf_parameters[0]; + if ((fabs(scf_lambda) <3.)&&(pba->background_verbose>1)) + printf("lambda = %e <3 won't be tracking (for exp quint) unless overwritten by tuning function\n",scf_lambda); + + class_call(parser_read_string(pfc, + "attractor_ic_scf", + &string1, + &flag1, + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_){ + if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ + pba->attractor_ic_scf = _TRUE_; + } + else{ + pba->attractor_ic_scf = _FALSE_; + class_test(pba->scf_parameters_size<2, + errmsg, + "Since you are not using attractor initial conditions, you must specify phi and its derivative phi' as the last two entries in scf_parameters. See explanatory.ini for more details."); + pba->phi_ini_scf = pba->scf_parameters[pba->scf_parameters_size-2]; + pba->phi_prime_ini_scf = pba->scf_parameters[pba->scf_parameters_size-1]; + } + } + } + + /** (b) assign values to thermodynamics cosmological parameters */ + + /** - primordial helium fraction */ + class_call(parser_read_string(pfc,"YHe",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"BBN") != NULL) || (strstr(string1,"bbn") != NULL)) { + pth->YHe = _BBN_; + } + else { + class_read_double("YHe",pth->YHe); + } + + } + + /** - recombination parameters */ + class_call(parser_read_string(pfc,"recombination",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"HYREC") != NULL) || (strstr(string1,"hyrec") != NULL) || (strstr(string1,"HyRec") != NULL)) { + pth->recombination = hyrec; + } + + } + + /** - reionization parametrization */ + class_call(parser_read_string(pfc,"reio_parametrization",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + flag2=_FALSE_; + if (strcmp(string1,"reio_none") == 0) { + pth->reio_parametrization=reio_none; + flag2=_TRUE_; + } + if (strcmp(string1,"reio_camb") == 0) { + pth->reio_parametrization=reio_camb; + flag2=_TRUE_; + } + if (strcmp(string1,"reio_bins_tanh") == 0) { + pth->reio_parametrization=reio_bins_tanh; + flag2=_TRUE_; + } + if (strcmp(string1,"reio_half_tanh") == 0) { + pth->reio_parametrization=reio_half_tanh; + flag2=_TRUE_; + } + if (strcmp(string1,"reio_many_tanh") == 0) { + pth->reio_parametrization=reio_many_tanh; + flag2=_TRUE_; + } + + class_test(flag2==_FALSE_, + errmsg, + "could not identify reionization_parametrization value, check that it is one of 'reio_none', 'reio_camb', 'reio_bins_tanh', 'reio_half_tanh', 'reio_many_tanh'..."); + } + + /** - reionization parameters if reio_parametrization=reio_camb */ + if ((pth->reio_parametrization == reio_camb) || (pth->reio_parametrization == reio_half_tanh)){ + class_call(parser_read_double(pfc,"z_reio",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"tau_reio",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of z_reio or tau_reio, choose one"); + if (flag1 == _TRUE_) { + pth->z_reio=param1; + pth->reio_z_or_tau=reio_z; + } + if (flag2 == _TRUE_) { + pth->tau_reio=param2; + pth->reio_z_or_tau=reio_tau; + } + + class_read_double("reionization_exponent",pth->reionization_exponent); + class_read_double("reionization_width",pth->reionization_width); + class_read_double("helium_fullreio_redshift",pth->helium_fullreio_redshift); + class_read_double("helium_fullreio_width",pth->helium_fullreio_width); + + } + + /** - reionization parameters if reio_parametrization=reio_bins_tanh */ + if (pth->reio_parametrization == reio_bins_tanh) { + class_read_int("binned_reio_num",pth->binned_reio_num); + class_read_list_of_doubles("binned_reio_z",pth->binned_reio_z,pth->binned_reio_num); + class_read_list_of_doubles("binned_reio_xe",pth->binned_reio_xe,pth->binned_reio_num); + class_read_double("binned_reio_step_sharpness",pth->binned_reio_step_sharpness); + } + + /** - reionization parameters if reio_parametrization=reio_many_tanh */ + if (pth->reio_parametrization == reio_many_tanh) { + class_read_int("many_tanh_num",pth->many_tanh_num); + class_read_list_of_doubles("many_tanh_z",pth->many_tanh_z,pth->many_tanh_num); + class_read_list_of_doubles("many_tanh_xe",pth->many_tanh_xe,pth->many_tanh_num); + class_read_double("many_tanh_width",pth->many_tanh_width); + } + + /** - energy injection parameters from CDM annihilation/decay */ + + class_read_double("annihilation",pth->annihilation); + + if (pth->annihilation > 0.) { + + class_read_double("annihilation_variation",pth->annihilation_variation); + class_read_double("annihilation_z",pth->annihilation_z); + class_read_double("annihilation_zmax",pth->annihilation_zmax); + class_read_double("annihilation_zmin",pth->annihilation_zmin); + class_read_double("annihilation_f_halo",pth->annihilation_f_halo); + class_read_double("annihilation_z_halo",pth->annihilation_z_halo); + + class_call(parser_read_string(pfc, + "on the spot", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)) { + pth->has_on_the_spot = _TRUE_; + } + else { + if ((strstr(string1,"n") != NULL) || (strstr(string1,"N") != NULL)) { + pth->has_on_the_spot = _FALSE_; + } + else { + class_stop(errmsg,"incomprehensible input '%s' for the field 'on the spot'",string1); + } + } + } + } + + class_read_double("decay",pth->decay); + + class_call(parser_read_string(pfc, + "compute damping scale", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)) { + pth->compute_damping_scale = _TRUE_; + } + else { + if ((strstr(string1,"n") != NULL) || (strstr(string1,"N") != NULL)) { + pth->compute_damping_scale = _FALSE_; + } + else { + class_stop(errmsg,"incomprehensible input '%s' for the field 'compute damping scale'",string1); + } + } + } + + /** (c) define which perturbations and sources should be computed, and down to which scale */ + + ppt->has_perturbations = _FALSE_; + ppt->has_cls = _FALSE_; + + class_call(parser_read_string(pfc,"output",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"tCl") != NULL) || (strstr(string1,"TCl") != NULL) || (strstr(string1,"TCL") != NULL)) { + ppt->has_cl_cmb_temperature = _TRUE_; + ppt->has_perturbations = _TRUE_; + ppt->has_cls = _TRUE_; + } + + if ((strstr(string1,"pCl") != NULL) || (strstr(string1,"PCl") != NULL) || (strstr(string1,"PCL") != NULL)) { + ppt->has_cl_cmb_polarization = _TRUE_; + ppt->has_perturbations = _TRUE_; + ppt->has_cls = _TRUE_; + } + + if ((strstr(string1,"lCl") != NULL) || (strstr(string1,"LCl") != NULL) || (strstr(string1,"LCL") != NULL)) { + ppt->has_cl_cmb_lensing_potential = _TRUE_; + ppt->has_perturbations = _TRUE_; + ppt->has_cls = _TRUE_; + } + + if ((strstr(string1,"nCl") != NULL) || (strstr(string1,"NCl") != NULL) || (strstr(string1,"NCL") != NULL) || + (strstr(string1,"dCl") != NULL) || (strstr(string1,"DCl") != NULL) || (strstr(string1,"DCL") != NULL)) { + ppt->has_cl_number_count = _TRUE_; + ppt->has_perturbations = _TRUE_; + ppt->has_cls = _TRUE_; + } + + if ((strstr(string1,"sCl") != NULL) || (strstr(string1,"SCl") != NULL) || (strstr(string1,"SCL") != NULL)) { + ppt->has_cl_lensing_potential=_TRUE_; + ppt->has_perturbations = _TRUE_; + ppt->has_cls = _TRUE_; + } + + if ((strstr(string1,"mPk") != NULL) || (strstr(string1,"MPk") != NULL) || (strstr(string1,"MPK") != NULL)) { + ppt->has_pk_matter=_TRUE_; + ppt->has_perturbations = _TRUE_; + } + + if ((strstr(string1,"mTk") != NULL) || (strstr(string1,"MTk") != NULL) || (strstr(string1,"MTK") != NULL) || + (strstr(string1,"dTk") != NULL) || (strstr(string1,"DTk") != NULL) || (strstr(string1,"DTK") != NULL)) { + ppt->has_density_transfers=_TRUE_; + ppt->has_perturbations = _TRUE_; + } + + if ((strstr(string1,"vTk") != NULL) || (strstr(string1,"VTk") != NULL) || (strstr(string1,"VTK") != NULL)) { + ppt->has_velocity_transfers=_TRUE_; + ppt->has_perturbations = _TRUE_; + } + + } + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + + class_call(parser_read_string(pfc,"temperature contributions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + ppt->switch_sw = 0; + ppt->switch_eisw = 0; + ppt->switch_lisw = 0; + ppt->switch_dop = 0; + ppt->switch_pol = 0; + + if ((strstr(string1,"tsw") != NULL) || (strstr(string1,"TSW") != NULL)) + ppt->switch_sw = 1; + if ((strstr(string1,"eisw") != NULL) || (strstr(string1,"EISW") != NULL)) + ppt->switch_eisw = 1; + if ((strstr(string1,"lisw") != NULL) || (strstr(string1,"LISW") != NULL)) + ppt->switch_lisw = 1; + if ((strstr(string1,"dop") != NULL) || (strstr(string1,"Dop") != NULL)) + ppt->switch_dop = 1; + if ((strstr(string1,"pol") != NULL) || (strstr(string1,"Pol") != NULL)) + ppt->switch_pol = 1; + + class_test((ppt->switch_sw == 0) && (ppt->switch_eisw == 0) && (ppt->switch_lisw == 0) && (ppt->switch_dop == 0) && (ppt->switch_pol == 0), + errmsg, + "In the field 'output', you selected CMB temperature, but in the field 'temperature contributions', you removed all contributions"); + + class_read_double("early/late isw redshift",ppt->eisw_lisw_split_z); + + } + + } + + if (ppt->has_cl_number_count == _TRUE_) { + + class_call(parser_read_string(pfc,"number count contributions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if (strstr(string1,"density") != NULL) + ppt->has_nc_density = _TRUE_; + if (strstr(string1,"rsd") != NULL) + ppt->has_nc_rsd = _TRUE_; + if (strstr(string1,"lensing") != NULL) + ppt->has_nc_lens = _TRUE_; + if (strstr(string1,"gr") != NULL) + ppt->has_nc_gr = _TRUE_; + + class_test((ppt->has_nc_density == _FALSE_) && (ppt->has_nc_rsd == _FALSE_) && (ppt->has_nc_lens == _FALSE_) && (ppt->has_nc_gr == _FALSE_), + errmsg, + "In the field 'output', you selected number count Cl's, but in the field 'number count contributions', you removed all contributions"); + + } + + else { + /* default: only the density contribution */ + ppt->has_nc_density = _TRUE_; + } + } + + if (ppt->has_perturbations == _TRUE_) { + + /* perturbed recombination */ + class_call(parser_read_string(pfc, + "perturbed recombination", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + ppt->has_perturbed_recombination = _TRUE_; + } + + /* modes */ + class_call(parser_read_string(pfc,"modes",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + /* if no modes are specified, the default is has_scalars=_TRUE_; + but if they are specified we should reset has_scalars to _FALSE_ before reading */ + ppt->has_scalars=_FALSE_; + + if ((strstr(string1,"s") != NULL) || (strstr(string1,"S") != NULL)) + ppt->has_scalars=_TRUE_; + + if ((strstr(string1,"v") != NULL) || (strstr(string1,"V") != NULL)) + ppt->has_vectors=_TRUE_; + + if ((strstr(string1,"t") != NULL) || (strstr(string1,"T") != NULL)) + ppt->has_tensors=_TRUE_; + + class_test(class_none_of_three(ppt->has_scalars,ppt->has_vectors,ppt->has_tensors), + errmsg, + "You wrote: modes=%s. Could not identify any of the modes ('s', 'v', 't') in such input",string1); + } + + if (ppt->has_scalars == _TRUE_) { + + class_call(parser_read_string(pfc,"ic",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + /* if no initial conditions are specified, the default is has_ad=_TRUE_; + but if they are specified we should reset has_ad to _FALSE_ before reading */ + ppt->has_ad=_FALSE_; + + if ((strstr(string1,"ad") != NULL) || (strstr(string1,"AD") != NULL)) + ppt->has_ad=_TRUE_; + + if ((strstr(string1,"bi") != NULL) || (strstr(string1,"BI") != NULL)) + ppt->has_bi=_TRUE_; + + if ((strstr(string1,"cdi") != NULL) || (strstr(string1,"CDI") != NULL)) + ppt->has_cdi=_TRUE_; + + if ((strstr(string1,"nid") != NULL) || (strstr(string1,"NID") != NULL)) + ppt->has_nid=_TRUE_; + + if ((strstr(string1,"niv") != NULL) || (strstr(string1,"NIV") != NULL)) + ppt->has_niv=_TRUE_; + + class_test(ppt->has_ad==_FALSE_ && ppt->has_bi ==_FALSE_ && ppt->has_cdi ==_FALSE_ && ppt->has_nid ==_FALSE_ && ppt->has_niv ==_FALSE_, + errmsg, + "You wrote: ic=%s. Could not identify any of the initial conditions ('ad', 'bi', 'cdi', 'nid', 'niv') in such input",string1); + + } + } + + else { + + class_test(ppt->has_cl_cmb_lensing_potential == _TRUE_, + errmsg, + "Inconsistency: you want C_l's for cmb lensing potential, but no scalar modes\n"); + + class_test(ppt->has_pk_matter == _TRUE_, + errmsg, + "Inconsistency: you want P(k) of matter, but no scalar modes\n"); + + } + + if (ppt->has_vectors == _TRUE_){ + + class_test((ppt->has_cl_cmb_temperature == _FALSE_) && (ppt->has_cl_cmb_polarization == _FALSE_), + errmsg, + "inconsistent input: you asked for vectors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); + + } + + if (ppt->has_tensors == _TRUE_){ + + class_test((ppt->has_cl_cmb_temperature == _FALSE_) && (ppt->has_cl_cmb_polarization == _FALSE_), + errmsg, + "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); + + } + } + + /** (d) define the primordial spectrum */ + + class_call(parser_read_string(pfc,"P_k_ini type",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + flag2=_FALSE_; + if (strcmp(string1,"analytic_Pk") == 0) { + ppm->primordial_spec_type = analytic_Pk; + flag2=_TRUE_; + } + if (strcmp(string1,"two_scales") == 0) { + ppm->primordial_spec_type = two_scales; + flag2=_TRUE_; + } + if (strcmp(string1,"inflation_V") == 0) { + ppm->primordial_spec_type = inflation_V; + flag2=_TRUE_; + } + if (strcmp(string1,"inflation_H") == 0) { + ppm->primordial_spec_type = inflation_H; + flag2=_TRUE_; + } + if (strcmp(string1,"inflation_V_end") == 0) { + ppm->primordial_spec_type = inflation_V_end; + flag2=_TRUE_; + } + if (strcmp(string1,"external_Pk") == 0) { + ppm->primordial_spec_type = external_Pk; + flag2=_TRUE_; + } + class_test(flag2==_FALSE_, + errmsg, + "could not identify primordial spectrum type, check that it is one of 'analytic_pk', 'two_scales', 'inflation_V', 'inflation_H', 'external_Pk'..."); + } + + class_read_double("k_pivot",ppm->k_pivot); + + if (ppm->primordial_spec_type == two_scales) { + + class_read_double("k1",k1); + class_read_double("k2",k2); + class_test(k1<=0.,errmsg,"enter strictly positive scale k1"); + class_test(k2<=0.,errmsg,"enter strictly positive scale k2"); + + if (ppt->has_scalars == _TRUE_) { + + class_read_double("P_{RR}^1",prr1); + class_read_double("P_{RR}^2",prr2); + class_test(prr1<=0.,errmsg,"enter strictly positive scale P_{RR}^1"); + class_test(prr2<=0.,errmsg,"enter strictly positive scale P_{RR}^2"); + + ppm->n_s = log(prr2/prr1)/log(k2/k1)+1.; + ppm->A_s = prr1*exp((ppm->n_s-1.)*log(ppm->k_pivot/k1)); + + if ((ppt->has_bi == _TRUE_) || + (ppt->has_cdi == _TRUE_) || + (ppt->has_nid == _TRUE_) || + (ppt->has_niv == _TRUE_)) { + + class_read_double("P_{II}^1",pii1); + class_read_double("P_{II}^2",pii2); + class_read_double("P_{RI}^1",pri1); + class_read_double("|P_{RI}^2|",pri2); + + class_test(pii1 <= 0., + errmsg, + "since you request iso modes, you should have P_{ii}^1 strictly positive"); + class_test(pii2 < 0., + errmsg, + "since you request iso modes, you should have P_{ii}^2 positive or eventually null"); + class_test(pri2 < 0., + errmsg, + "by definition, you should have |P_{ri}^2| positive or eventually null"); + + flag1 = _FALSE_; + + class_call(parser_read_string(pfc,"special iso",&string1,&flag1,errmsg), + errmsg, + errmsg); + + /* axion case, only one iso parameter: piir1 */ + if ((flag1 == _TRUE_) && (strstr(string1,"axion") != NULL)) { + n_iso = 1.; + n_cor = 0.; + c_cor = 0.; + } + /* curvaton case, only one iso parameter: piir1 */ + else if ((flag1 == _TRUE_) && (strstr(string1,"anticurvaton") != NULL)) { + n_iso = ppm->n_s; + n_cor = 0.; + c_cor = 1.; + } + /* inverted-correlation-curvaton case, only one iso parameter: piir1 */ + else if ((flag1 == _TRUE_) && (strstr(string1,"curvaton") != NULL)) { + n_iso = ppm->n_s; + n_cor = 0.; + c_cor = -1.; + } + /* general case, but if pii2 or pri2=0 the code interprets it + as a request for n_iso=n_ad or n_cor=0 respectively */ + else { + if (pii2 == 0.) { + n_iso = ppm->n_s; + } + else { + class_test((pii1==0.) || (pii2 == 0.) || (pii1*pii2<0.),errmsg,"should NEVER happen"); + n_iso = log(pii2/pii1)/log(k2/k1)+1.; + } + class_test(pri1==0,errmsg,"the general isocurvature case requires a non-zero P_{RI}^1"); + if (pri2 == 0.) { + n_cor = 0.; + } + else { + class_test((pri1==0.) || (pri2 <= 0.) || (pii1*pii2<0),errmsg,"should NEVER happen"); + n_cor = log(pri2/fabs(pri1))/log(k2/k1)-0.5*(ppm->n_s+n_iso-2.); + } + class_test((pii1*prr1<=0.),errmsg,"should NEVER happen"); + class_test(fabs(pri1)/sqrt(pii1*prr1)>1,errmsg,"too large ad-iso cross-correlation in k1"); + class_test(fabs(pri1)/sqrt(pii1*prr1)*exp(n_cor*log(k2/k1))>1,errmsg,"too large ad-iso cross-correlation in k2"); + c_cor = -pri1/sqrt(pii1*prr1)*exp(n_cor*log(ppm->k_pivot/k1)); + } + /* formula for f_iso valid in all cases */ + class_test((pii1==0.) || (prr1 == 0.) || (pii1*prr1<0.),errmsg,"should NEVER happen"); + f_iso = sqrt(pii1/prr1)*exp(0.5*(n_iso-ppm->n_s)*log(ppm->k_pivot/k1)); + + } + + if (ppt->has_bi == _TRUE_) { + ppm->f_bi = f_iso; + ppm->n_bi = n_iso; + ppm->c_ad_bi = c_cor; + ppm->n_ad_bi = n_cor; + } + + if (ppt->has_cdi == _TRUE_) { + ppm->f_cdi = f_iso; + ppm->n_cdi = n_iso; + ppm->c_ad_cdi = c_cor; + ppm->n_ad_cdi = n_cor; + } + + if (ppt->has_nid == _TRUE_) { + ppm->f_nid = f_iso; + ppm->n_nid = n_iso; + ppm->c_ad_nid = c_cor; + ppm->n_ad_nid = n_cor; + } + + if (ppt->has_niv == _TRUE_) { + ppm->f_niv = f_iso; + ppm->n_niv = n_iso; + ppm->c_ad_niv = c_cor; + ppm->n_ad_niv = n_cor; + } + } + + ppm->primordial_spec_type = analytic_Pk; + + } + + else if (ppm->primordial_spec_type == analytic_Pk) { + + if (ppt->has_scalars == _TRUE_) { + + class_call(parser_read_double(pfc,"A_s",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"ln10^{10}A_s",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), + errmsg, + "In input file, you cannot enter both A_s and ln10^{10}A_s, choose one"); + if (flag1 == _TRUE_) + ppm->A_s = param1; + else if (flag2 == _TRUE_) + ppm->A_s = exp(param2)*1.e-10; + + if (ppt->has_ad == _TRUE_) { + + class_read_double("n_s",ppm->n_s); + class_read_double("alpha_s",ppm->alpha_s); + + } + + if (ppt->has_bi == _TRUE_) { + + class_read_double("f_bi",ppm->f_bi); + class_read_double("n_bi",ppm->n_bi); + class_read_double("alpha_bi",ppm->alpha_bi); + + } + + if (ppt->has_cdi == _TRUE_) { + + class_read_double("f_cdi",ppm->f_cdi); + class_read_double("n_cdi",ppm->n_cdi); + class_read_double("alpha_cdi",ppm->alpha_cdi); + + } + + if (ppt->has_nid == _TRUE_) { + + class_read_double("f_nid",ppm->f_nid); + class_read_double("n_nid",ppm->n_nid); + class_read_double("alpha_nid",ppm->alpha_nid); + + } + + if (ppt->has_niv == _TRUE_) { + + class_read_double("f_niv",ppm->f_niv); + class_read_double("n_niv",ppm->n_niv); + class_read_double("alpha_niv",ppm->alpha_niv); + + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_bi == _TRUE_)) { + class_read_double_one_of_two("c_ad_bi","c_bi_ad",ppm->c_ad_bi); + class_read_double_one_of_two("n_ad_bi","n_bi_ad",ppm->n_ad_bi); + class_read_double_one_of_two("alpha_ad_bi","alpha_bi_ad",ppm->alpha_ad_bi); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_)) { + class_read_double_one_of_two("c_ad_cdi","c_cdi_ad",ppm->c_ad_cdi); + class_read_double_one_of_two("n_ad_cdi","n_cdi_ad",ppm->n_ad_cdi); + class_read_double_one_of_two("alpha_ad_cdi","alpha_cdi_ad",ppm->alpha_ad_cdi); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_)) { + class_read_double_one_of_two("c_ad_nid","c_nid_ad",ppm->c_ad_nid); + class_read_double_one_of_two("n_ad_nid","n_nid_ad",ppm->n_ad_nid); + class_read_double_one_of_two("alpha_ad_nid","alpha_nid_ad",ppm->alpha_ad_nid); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_)) { + class_read_double_one_of_two("c_ad_niv","c_niv_ad",ppm->c_ad_niv); + class_read_double_one_of_two("n_ad_niv","n_niv_ad",ppm->n_ad_niv); + class_read_double_one_of_two("alpha_ad_niv","alpha_niv_ad",ppm->alpha_ad_niv); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_)) { + class_read_double_one_of_two("c_bi_cdi","c_cdi_bi",ppm->c_bi_cdi); + class_read_double_one_of_two("n_bi_cdi","n_cdi_bi",ppm->n_bi_cdi); + class_read_double_one_of_two("alpha_bi_cdi","alpha_cdi_bi",ppm->alpha_bi_cdi); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_)) { + class_read_double_one_of_two("c_bi_nid","c_nid_bi",ppm->c_bi_nid); + class_read_double_one_of_two("n_bi_nid","n_nid_bi",ppm->n_bi_nid); + class_read_double_one_of_two("alpha_bi_nid","alpha_nid_bi",ppm->alpha_bi_nid); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_)) { + class_read_double_one_of_two("c_bi_niv","c_niv_bi",ppm->c_bi_niv); + class_read_double_one_of_two("n_bi_niv","n_niv_bi",ppm->n_bi_niv); + class_read_double_one_of_two("alpha_bi_niv","alpha_niv_bi",ppm->alpha_bi_niv); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_)) { + class_read_double_one_of_two("c_cdi_nid","c_nid_cdi",ppm->c_cdi_nid); + class_read_double_one_of_two("n_cdi_nid","n_nid_cdi",ppm->n_cdi_nid); + class_read_double_one_of_two("alpha_cdi_nid","alpha_nid_cdi",ppm->alpha_cdi_nid); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_)) { + class_read_double_one_of_two("c_cdi_niv","c_niv_cdi",ppm->c_cdi_niv); + class_read_double_one_of_two("n_cdi_niv","n_niv_cdi",ppm->n_cdi_niv); + class_read_double_one_of_two("alpha_cdi_niv","alpha_niv_cdi",ppm->alpha_cdi_niv); + } + + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_)) { + class_read_double_one_of_two("c_nid_niv","c_niv_nid",ppm->c_nid_niv); + class_read_double_one_of_two("n_nid_niv","n_niv_nid",ppm->n_nid_niv); + class_read_double_one_of_two("alpha_nid_niv","alpha_niv_nid",ppm->alpha_nid_niv); + } + + } + + if (ppt->has_tensors == _TRUE_) { + + class_read_double("r",ppm->r); + + if (ppm->r <= 0) { + ppt->has_tensors = _FALSE_; + } + else { + + class_call(parser_read_string(pfc,"n_t",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && !((strstr(string1,"SCC") != NULL) || (strstr(string1,"scc") != NULL))) { + class_read_double("n_t",ppm->n_t); + } + else { + /* enforce single slow-roll self-consistency condition (order 2 in slow-roll) */ + ppm->n_t = -ppm->r/8.*(2.-ppm->r/8.-ppm->n_s); + } + + class_call(parser_read_string(pfc,"alpha_t",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && !((strstr(string1,"SCC") != NULL) || (strstr(string1,"scc") != NULL))) { + class_read_double("alpha_t",ppm->alpha_t); + } + else { + /* enforce single slow-roll self-consistency condition (order 2 in slow-roll) */ + ppm->alpha_t = ppm->r/8.*(ppm->r/8.+ppm->n_s-1.); + } + } + } + } + + else if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_H)) { + + if (ppm->primordial_spec_type == inflation_V) { + + class_call(parser_read_string(pfc,"potential",&string1,&flag1,errmsg), + errmsg, + errmsg); + + /* only polynomial coded so far: no need to interpret string1 **/ + + class_call(parser_read_string(pfc,"PSR_0",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + PSR0=0.; + PSR1=0.; + PSR2=0.; + PSR3=0.; + PSR4=0.; + + class_read_double("PSR_0",PSR0); + class_read_double("PSR_1",PSR1); + class_read_double("PSR_2",PSR2); + class_read_double("PSR_3",PSR3); + class_read_double("PSR_4",PSR4); + + class_test(PSR0 <= 0., + errmsg, + "inconsistent parametrization of polynomial inflation potential"); + class_test(PSR1 <= 0., + errmsg, + "inconsistent parametrization of polynomial inflation potential"); + + R0 = PSR0; + R1 = PSR1*16.*_PI_; + R2 = PSR2*8.*_PI_; + R3 = PSR3*pow(8.*_PI_,2); + R4 = PSR4*pow(8.*_PI_,3); + + ppm->V0 = R0*R1*3./128./_PI_; + ppm->V1 = -sqrt(R1)*ppm->V0; + ppm->V2 = R2*ppm->V0; + ppm->V3 = R3*ppm->V0*ppm->V0/ppm->V1; + ppm->V4 = R4*ppm->V0/R1; + } + + else { + + class_call(parser_read_string(pfc,"R_0",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + R0=0.; + R1=0.; + R2=0.; + R3=0.; + R4=0.; + + class_read_double("R_0",R0); + class_read_double("R_1",R1); + class_read_double("R_2",R2); + class_read_double("R_3",R3); + class_read_double("R_4",R4); + + class_test(R0 <= 0., + errmsg, + "inconsistent parametrization of polynomial inflation potential"); + class_test(R1 <= 0., + errmsg, + "inconsistent parametrization of polynomial inflation potential"); + + ppm->V0 = R0*R1*3./128./_PI_; + ppm->V1 = -sqrt(R1)*ppm->V0; + ppm->V2 = R2*ppm->V0; + ppm->V3 = R3*ppm->V0*ppm->V0/ppm->V1; + ppm->V4 = R4*ppm->V0/R1; + } + + else { + + class_read_double("V_0",ppm->V0); + class_read_double("V_1",ppm->V1); + class_read_double("V_2",ppm->V2); + class_read_double("V_3",ppm->V3); + class_read_double("V_4",ppm->V4); + + } + } + } + + else { + + class_call(parser_read_string(pfc,"HSR_0",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + HSR0=0.; + HSR1=0.; + HSR2=0.; + HSR3=0.; + HSR4=0.; + + class_read_double("HSR_0",HSR0); + class_read_double("HSR_1",HSR1); + class_read_double("HSR_2",HSR2); + class_read_double("HSR_3",HSR3); + class_read_double("HSR_4",HSR4); + + ppm->H0 = sqrt(HSR0*HSR1*_PI_); + ppm->H1 = -sqrt(4.*_PI_*HSR1)*ppm->H0; + ppm->H2 = 4.*_PI_*HSR2*ppm->H0; + ppm->H3 = 4.*_PI_*HSR3*ppm->H0*ppm->H0/ppm->H1; + ppm->H4 = 4.*_PI_*HSR4*ppm->H0*ppm->H0*ppm->H0/ppm->H1/ppm->H1; + + } + else { + + class_read_double("H_0",ppm->H0); + class_read_double("H_1",ppm->H1); + class_read_double("H_2",ppm->H2); + class_read_double("H_3",ppm->H3); + class_read_double("H_4",ppm->H4); + } + + class_test(ppm->H0 <= 0., + errmsg, + "inconsistent parametrization of polynomial inflation potential"); + + } + } + + else if (ppm->primordial_spec_type == inflation_V_end) { + + class_call(parser_read_string(pfc,"full_potential",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if (strcmp(string1,"polynomial") == 0) { + ppm->potential = polynomial; + } + else if (strcmp(string1,"higgs_inflation") == 0) { + ppm->potential = higgs_inflation; + } + else { + class_stop(errmsg,"did not recognize input parameter 'potential': should be one of 'polynomial' or 'higgs_inflation'"); + } + } + + class_read_double("phi_end",ppm->phi_end); + class_read_double("Vparam0",ppm->V0); + class_read_double("Vparam1",ppm->V1); + class_read_double("Vparam2",ppm->V2); + class_read_double("Vparam3",ppm->V3); + class_read_double("Vparam4",ppm->V4); + + class_call(parser_read_string(pfc,"ln_aH_ratio",&string1,&flag1,errmsg), + errmsg, + errmsg); + + class_call(parser_read_string(pfc,"N_star",&string2,&flag2,errmsg), + errmsg, + errmsg); + + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), + errmsg, + "In input file, you can only enter one of ln_aH_ratio or N_star, the two are not compatible"); + + if (flag1 == _TRUE_) { + if ((strstr(string1,"auto") != NULL) || (strstr(string1,"AUTO") != NULL)) { + ppm->phi_pivot_method = ln_aH_ratio_auto; + } + else { + ppm->phi_pivot_method = ln_aH_ratio; + class_read_double("ln_aH_ratio",ppm->phi_pivot_target); + } + } + + if (flag2 == _TRUE_) { + ppm->phi_pivot_method = N_star; + class_read_double("N_star",ppm->phi_pivot_target); + } + + class_call(parser_read_string(pfc,"inflation_behavior",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if (strstr(string1,"numerical") != NULL) { + ppm->behavior = numerical; + } + else if (strstr(string1,"analytical") != NULL) { + ppm->behavior = analytical; + } + else { + class_stop(errmsg,"Your entry for 'inflation behavior' could not be understood"); + } + } + } + + else if (ppm->primordial_spec_type == external_Pk) { + class_call(parser_read_string(pfc, "command", &(string1), &(flag1), errmsg), + errmsg, errmsg); + class_test(strlen(string1) == 0, + errmsg, + "You omitted to write a command for the external Pk"); + + ppm->command = (char *) malloc (strlen(string1) + 1); + strcpy(ppm->command, string1); + class_read_double("custom1",ppm->custom1); + class_read_double("custom2",ppm->custom2); + class_read_double("custom3",ppm->custom3); + class_read_double("custom4",ppm->custom4); + class_read_double("custom5",ppm->custom5); + class_read_double("custom6",ppm->custom6); + class_read_double("custom7",ppm->custom7); + class_read_double("custom8",ppm->custom8); + class_read_double("custom9",ppm->custom9); + class_read_double("custom10",ppm->custom10); + } + + /* Tests moved from primordial module: */ + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_H) || (ppm->primordial_spec_type == inflation_V_end)) { + + class_test(ppt->has_scalars == _FALSE_, + errmsg, + "inflationary module cannot work if you do not ask for scalar modes"); + + class_test(ppt->has_vectors == _TRUE_, + errmsg, + "inflationary module cannot work if you ask for vector modes"); + + class_test(ppt->has_tensors == _FALSE_, + errmsg, + "inflationary module cannot work if you do not ask for tensor modes"); + + class_test(ppt->has_bi == _TRUE_ || ppt->has_cdi == _TRUE_ || ppt->has_nid == _TRUE_ || ppt->has_niv == _TRUE_, + errmsg, + "inflationary module cannot work if you ask for isocurvature modes"); + } + + /** (e) parameters for final spectra */ + + if (ppt->has_cls == _TRUE_) { + + if (ppt->has_scalars == _TRUE_) { + if ((ppt->has_cl_cmb_temperature == _TRUE_) || + (ppt->has_cl_cmb_polarization == _TRUE_) || + (ppt->has_cl_cmb_lensing_potential == _TRUE_)) + class_read_double("l_max_scalars",ppt->l_scalar_max); + + if ((ppt->has_cl_lensing_potential == _TRUE_) || (ppt->has_cl_number_count == _TRUE_)) + class_read_double("l_max_lss",ppt->l_lss_max); + } + + if (ppt->has_vectors == _TRUE_) { + class_read_double("l_max_vectors",ppt->l_vector_max); + } + + if (ppt->has_tensors == _TRUE_) { + class_read_double("l_max_tensors",ppt->l_tensor_max); + } + } + + class_call(parser_read_string(pfc, + "lensing", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + if ((ppt->has_scalars == _TRUE_) && + ((ppt->has_cl_cmb_temperature == _TRUE_) || (ppt->has_cl_cmb_polarization == _TRUE_)) && + (ppt->has_cl_cmb_lensing_potential == _TRUE_)) { + ple->has_lensed_cls = _TRUE_; + } + else { + class_stop(errmsg,"you asked for lensed CMB Cls, but this requires a minimal number of options: 'modes' should include 's', 'output' should include 'tCl' and/or 'pCL', and also, importantly, 'lCl', the CMB lensing potential spectrum. You forgot one of those in your input."); + } + } + + if ((ppt->has_scalars == _TRUE_) && + (ppt->has_cl_cmb_lensing_potential == _TRUE_)) { + + class_read_double("lcmb_rescale",ptr->lcmb_rescale); + class_read_double("lcmb_tilt",ptr->lcmb_tilt); + class_read_double("lcmb_pivot",ptr->lcmb_pivot); + + } + + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { + + class_call(parser_read_double(pfc,"P_k_max_h/Mpc",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"P_k_max_1/Mpc",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test((flag1 == _TRUE_) && (flag2 == _TRUE_), + errmsg, + "In input file, you cannot enter both P_k_max_h/Mpc and P_k_max_1/Mpc, choose one"); + if (flag1 == _TRUE_) { + ppt->k_max_for_pk=param1*pba->h; + } + if (flag2 == _TRUE_) { + ppt->k_max_for_pk=param2; + } + + class_call(parser_read_list_of_doubles(pfc, + "z_pk", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_test(int1 > _Z_PK_NUM_MAX_, + errmsg, + "you want to write some output for %d different values of z, hence you should increase _Z_PK_NUM_MAX_ in include/output.h to at least this number", + int1); + pop->z_pk_num = int1; + for (i=0; iz_pk[i] = pointer1[i]; + } + free(pointer1); + } + } + + /* deal with selection functions */ + if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { + + class_call(parser_read_string(pfc, + "selection", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if (strstr(string1,"gaussian") != NULL) { + ppt->selection=gaussian; + } + else if (strstr(string1,"tophat") != NULL) { + ppt->selection=tophat; + } + else if (strstr(string1,"dirac") != NULL) { + ppt->selection=dirac; + } + else { + class_stop(errmsg,"In selection function input: type %s is unclear",string1); + } + } + + class_call(parser_read_list_of_doubles(pfc, + "selection_mean", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && (int1>0)) { + + class_test(int1 > _SELECTION_NUM_MAX_, + errmsg, + "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/transfer.h to at least this number", + int1); + + ppt->selection_num = int1; + for (i=0; i 1000.), + errmsg, + "input of selection functions: you asked for a mean redshift equal to %e, sounds odd", + pointer1[i]); + ppt->selection_mean[i] = pointer1[i]; + } + free(pointer1); + /* first set all widths to default; correct eventually later */ + for (i=1; iselection_mean[i]<=ppt->selection_mean[i-1], + errmsg, + "input of selection functions: the list of mean redshifts must be passed in growing order; you entered %e before %e",ppt->selection_mean[i-1],ppt->selection_mean[i]); + ppt->selection_width[i] = ppt->selection_width[0]; + ptr->selection_bias[i] = ptr->selection_bias[0]; + ptr->selection_magnification_bias[i] = ptr->selection_magnification_bias[0]; + } + + class_call(parser_read_list_of_doubles(pfc, + "selection_width", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && (int1>0)) { + + if (int1==1) { + for (i=0; iselection_num; i++) { + ppt->selection_width[i] = pointer1[0]; + } + } + else if (int1==ppt->selection_num) { + for (i=0; iselection_width[i] = pointer1[i]; + } + } + else { + class_stop(errmsg, + "In input for selection function, you asked for %d bin centers and %d bin widths; number of bins unclear; you should pass either one bin width (common to all bins) or %d bin widths", + ppt->selection_num,int1,ppt->selection_num); + } + free(pointer1); + } + + class_call(parser_read_list_of_doubles(pfc, + "selection_bias", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && (int1>0)) { + + if (int1==1) { + for (i=0; iselection_num; i++) { + ptr->selection_bias[i] = pointer1[0]; + } + } + else if (int1==ppt->selection_num) { + for (i=0; iselection_bias[i] = pointer1[i]; + } + } + else { + class_stop(errmsg, + "In input for selection function, you asked for %d bin centers and %d bin biases; number of bins unclear; you should pass either one bin bias (common to all bins) or %d bin biases", + ppt->selection_num,int1,ppt->selection_num); + } + free(pointer1); + } + + class_call(parser_read_list_of_doubles(pfc, + "selection_magnification_bias", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && (int1>0)) { + + if (int1==1) { + for (i=0; iselection_num; i++) { + ptr->selection_magnification_bias[i] = pointer1[0]; + } + } + else if (int1==ppt->selection_num) { + for (i=0; iselection_magnification_bias[i] = pointer1[i]; + } + } + else { + class_stop(errmsg, + "In input for selection function, you asked for %d bin centers and %d bin biases; number of bins unclear; you should pass either one bin bias (common to all bins) or %d bin biases", + ppt->selection_num,int1,ppt->selection_num); + } + free(pointer1); + } + + } + + if (ppt->selection_num>1) { + class_read_int("non_diagonal",psp->non_diag); + if ((psp->non_diag<0) || (psp->non_diag>=ppt->selection_num)) + class_stop(errmsg, + "Input for non_diagonal is %d, while it is expected to be between 0 and %d\n", + psp->non_diag,ppt->selection_num-1); + } + + class_call(parser_read_string(pfc, + "dNdz_selection", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_)) { + if ((strstr(string1,"analytic") != NULL)) + ptr->has_nz_analytic = _TRUE_; + else{ + ptr->has_nz_file = _TRUE_; + class_read_string("dNdz_selection",ptr->nz_file_name); + } + } + + class_call(parser_read_string(pfc, + "dNdz_evolution", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_)) { + if ((strstr(string1,"analytic") != NULL)) + ptr->has_nz_evo_analytic = _TRUE_; + else{ + ptr->has_nz_evo_file = _TRUE_; + class_read_string("dNdz_evolution",ptr->nz_evo_file_name); + } + } + + flag1 = _FALSE_; + class_call(parser_read_double(pfc,"bias",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_test(flag1 == _TRUE_, + errmsg, + "the input parameter 'bias' is obsolete, because you can now pass an independent light-to-mass bias for each bin/selection function. The new input name is 'selection_bias'. It can be set to a single number (common bias for all bins) or as many numbers as the number of bins"); + + flag1 = _FALSE_; + class_call(parser_read_double(pfc,"s_bias",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_test(flag1 == _TRUE_, + errmsg, + "the input parameter 's_bias' is obsolete, because you can now pass an independent magnitude bias for each bin/selection function. The new input name is 'selection_magnitude_bias'. It can be set to a single number (common magnitude bias for all bins) or as many numbers as the number of bins"); + + } + /* end of selection function section */ + + /* deal with z_max issues */ + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { + + class_call(parser_read_double(pfc,"z_max_pk",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1==_TRUE_) { + ppt->z_max_pk = param1; + } + else { + ppt->z_max_pk = 0.; + + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { + for (i=0; iz_pk_num; i++) { + ppt->z_max_pk = MAX(ppt->z_max_pk,pop->z_pk[i]); + } + } + + if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { + + for (bin=0; binselection_num; bin++) { + + /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times() */ + if (ppt->selection==gaussian) { + z_max = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma; + } + if (ppt->selection==tophat) { + z_max = ppt->selection_mean[bin]+(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin]; + } + if (ppt->selection==dirac) { + z_max = ppt->selection_mean[bin]; + } + ppt->z_max_pk = MAX(ppt->z_max_pk,z_max); + } + } + } + psp->z_max_pk = ppt->z_max_pk; + } + /* end of z_max section */ + + class_read_string("root",pop->root); + + class_call(parser_read_string(pfc, + "headers", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") == NULL) && (strstr(string1,"Y") == NULL))) { + pop->write_header = _FALSE_; + } + + class_call(parser_read_string(pfc,"format",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"class") != NULL) || (strstr(string1,"CLASS") != NULL)) + pop->output_format = class_format; + else { + if ((strstr(string1,"camb") != NULL) || (strstr(string1,"CAMB") != NULL)) + pop->output_format = camb_format; + else + class_stop(errmsg, + "You wrote: format=%s. Could not identify any of the possible formats ('class', 'CLASS', 'camb', 'CAMB')",string1); + } + } + + /** (f) parameter related to the non-linear spectra computation */ + + class_call(parser_read_string(pfc, + "non linear", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + class_test(ppt->has_perturbations == _FALSE_, errmsg, "You requested non linear computation but no linear computation. You must set output to tCl or similar."); + + if ((strstr(string1,"halofit") != NULL) || (strstr(string1,"Halofit") != NULL) || (strstr(string1,"HALOFIT") != NULL)) { + pnl->method=nl_halofit; + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + } + + } + + /** (g) amount of information sent to standard output (none if all set to zero) */ + + class_read_int("background_verbose", + pba->background_verbose); + + class_read_int("thermodynamics_verbose", + pth->thermodynamics_verbose); + + class_read_int("perturbations_verbose", + ppt->perturbations_verbose); + + class_read_int("transfer_verbose", + ptr->transfer_verbose); + + class_read_int("primordial_verbose", + ppm->primordial_verbose); + + class_read_int("spectra_verbose", + psp->spectra_verbose); + + class_read_int("nonlinear_verbose", + pnl->nonlinear_verbose); + + class_read_int("lensing_verbose", + ple->lensing_verbose); + + class_read_int("output_verbose", + pop->output_verbose); + + /** (h) all precision parameters */ + + /** - (h.1.) parameters related to the background */ + + class_read_double("a_ini_over_a_today_default",ppr->a_ini_over_a_today_default); + class_read_double("back_integration_stepsize",ppr->back_integration_stepsize); + class_read_double("tol_background_integration",ppr->tol_background_integration); + class_read_double("tol_initial_Omega_r",ppr->tol_initial_Omega_r); + class_read_double("tol_ncdm_initial_w",ppr->tol_ncdm_initial_w); + class_read_double("safe_phi_scf",ppr->safe_phi_scf); + + /** - (h.2.) parameters related to the thermodynamics */ + + class_read_string("sBBN file",ppr->sBBN_file); + + class_read_double("recfast_z_initial",ppr->recfast_z_initial); + + class_read_int("recfast_Nz0",ppr->recfast_Nz0); + class_read_double("tol_thermo_integration",ppr->tol_thermo_integration); + + class_read_int("recfast_Heswitch",ppr->recfast_Heswitch); + class_read_double("recfast_fudge_He",ppr->recfast_fudge_He); + + class_read_int("recfast_Hswitch",ppr->recfast_Hswitch); + class_read_double("recfast_fudge_H",ppr->recfast_fudge_H); + if (ppr->recfast_Hswitch == _TRUE_) { + class_read_double("recfast_delta_fudge_H",ppr->recfast_delta_fudge_H); + class_read_double("recfast_AGauss1",ppr->recfast_AGauss1); + class_read_double("recfast_AGauss2",ppr->recfast_AGauss2); + class_read_double("recfast_zGauss1",ppr->recfast_zGauss1); + class_read_double("recfast_zGauss2",ppr->recfast_zGauss2); + class_read_double("recfast_wGauss1",ppr->recfast_wGauss1); + class_read_double("recfast_wGauss2",ppr->recfast_wGauss2); + } + + class_read_double("recfast_z_He_1",ppr->recfast_z_He_1); + class_read_double("recfast_delta_z_He_1",ppr->recfast_delta_z_He_1); + class_read_double("recfast_z_He_2",ppr->recfast_z_He_2); + class_read_double("recfast_delta_z_He_2",ppr->recfast_delta_z_He_2); + class_read_double("recfast_z_He_3",ppr->recfast_z_He_3); + class_read_double("recfast_delta_z_He_3",ppr->recfast_delta_z_He_3); + class_read_double("recfast_x_He0_trigger",ppr->recfast_x_He0_trigger); + class_read_double("recfast_x_He0_trigger2",ppr->recfast_x_He0_trigger2); + class_read_double("recfast_x_He0_trigger_delta",ppr->recfast_x_He0_trigger_delta); + class_read_double("recfast_x_H0_trigger",ppr->recfast_x_H0_trigger); + class_read_double("recfast_x_H0_trigger2",ppr->recfast_x_H0_trigger2); + class_read_double("recfast_x_H0_trigger_delta",ppr->recfast_x_H0_trigger_delta); + class_read_double("recfast_H_frac",ppr->recfast_H_frac); + + class_read_string("Alpha_inf hyrec file",ppr->hyrec_Alpha_inf_file); + class_read_string("R_inf hyrec file",ppr->hyrec_R_inf_file); + class_read_string("two_photon_tables hyrec file",ppr->hyrec_two_photon_tables_file); + + class_read_double("reionization_z_start_max",ppr->reionization_z_start_max); + class_read_double("reionization_sampling",ppr->reionization_sampling); + class_read_double("reionization_optical_depth_tol",ppr->reionization_optical_depth_tol); + class_read_double("reionization_start_factor",ppr->reionization_start_factor); + + class_read_int("thermo_rate_smoothing_radius",ppr->thermo_rate_smoothing_radius); + + /** - (h.3.) parameters related to the perturbations */ + + class_read_int("evolver",ppr->evolver); + + class_read_double("k_scalar_min_tau0",ppr->k_min_tau0); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_sub",ppr->k_step_sub); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_super",ppr->k_step_super); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_transition",ppr->k_step_transition); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_pk",ppr->k_per_decade_for_pk); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_bao",ppr->k_per_decade_for_bao); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_center",ppr->k_bao_center); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_width",ppr->k_bao_width); // obsolete precision parameter: read for compatibility with old precision files + + class_read_double("k_min_tau0",ppr->k_min_tau0); + class_read_double("k_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); + class_read_double("k_step_sub",ppr->k_step_sub); + class_read_double("k_step_super",ppr->k_step_super); + class_read_double("k_step_transition",ppr->k_step_transition); + class_read_double("k_step_super_reduction",ppr->k_step_super_reduction); + class_read_double("k_per_decade_for_pk",ppr->k_per_decade_for_pk); + class_read_double("k_per_decade_for_bao",ppr->k_per_decade_for_bao); + class_read_double("k_bao_center",ppr->k_bao_center); + class_read_double("k_bao_width",ppr->k_bao_width); + + class_read_double("start_small_k_at_tau_c_over_tau_h",ppr->start_small_k_at_tau_c_over_tau_h); + class_read_double("start_large_k_at_tau_h_over_tau_k",ppr->start_large_k_at_tau_h_over_tau_k); + class_read_double("tight_coupling_trigger_tau_c_over_tau_h",ppr->tight_coupling_trigger_tau_c_over_tau_h); + class_read_double("tight_coupling_trigger_tau_c_over_tau_k",ppr->tight_coupling_trigger_tau_c_over_tau_k); + class_read_double("start_sources_at_tau_c_over_tau_h",ppr->start_sources_at_tau_c_over_tau_h); + + class_read_int("tight_coupling_approximation",ppr->tight_coupling_approximation); + + if (ppt->has_tensors == _TRUE_) { + /** - ---> Include ur and ncdm shear in tensor computation? */ + class_call(parser_read_string(pfc,"tensor method",&string1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_) { + if (strstr(string1,"photons") != NULL) + ppt->tensor_method = tm_photons_only; + if (strstr(string1,"massless") != NULL) + ppt->tensor_method = tm_massless_approximation; + if (strstr(string1,"exact") != NULL) + ppt->tensor_method = tm_exact; + } + } + + /** - ---> derivatives of baryon sound speed only computed if some non-minimal tight-coupling schemes is requested */ + if ((ppr->tight_coupling_approximation == (int)first_order_CLASS) || (ppr->tight_coupling_approximation == (int)second_order_CLASS)) { + pth->compute_cb2_derivatives = _TRUE_; + } + + class_read_int("l_max_g",ppr->l_max_g); + class_read_int("l_max_pol_g",ppr->l_max_pol_g); + class_read_int("l_max_dr",ppr->l_max_dr); + class_read_int("l_max_ur",ppr->l_max_ur); + if (pba->N_ncdm>0) + class_read_int("l_max_ncdm",ppr->l_max_ncdm); + class_read_int("l_max_g_ten",ppr->l_max_g_ten); + class_read_int("l_max_pol_g_ten",ppr->l_max_pol_g_ten); + class_read_double("curvature_ini",ppr->curvature_ini); + class_read_double("entropy_ini",ppr->entropy_ini); + class_read_double("gw_ini",ppr->gw_ini); + class_read_double("perturb_integration_stepsize",ppr->perturb_integration_stepsize); + class_read_double("tol_tau_approx",ppr->tol_tau_approx); + class_read_double("tol_perturb_integration",ppr->tol_perturb_integration); + class_read_double("perturb_sampling_stepsize",ppr->perturb_sampling_stepsize); + + class_read_int("radiation_streaming_approximation",ppr->radiation_streaming_approximation); + class_read_double("radiation_streaming_trigger_tau_over_tau_k",ppr->radiation_streaming_trigger_tau_over_tau_k); + class_read_double("radiation_streaming_trigger_tau_c_over_tau",ppr->radiation_streaming_trigger_tau_c_over_tau); + + class_read_int("ur_fluid_approximation",ppr->ur_fluid_approximation); + class_read_int("ncdm_fluid_approximation",ppr->ncdm_fluid_approximation); + class_read_double("ur_fluid_trigger_tau_over_tau_k",ppr->ur_fluid_trigger_tau_over_tau_k); + class_read_double("ncdm_fluid_trigger_tau_over_tau_k",ppr->ncdm_fluid_trigger_tau_over_tau_k); + + class_test(ppr->ur_fluid_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters ur_fluid_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + if (pba->N_ncdm>0) { + + class_test(ppr->ncdm_fluid_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters ncdm_fluid_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + class_test(ppr->ncdm_fluid_trigger_tau_over_tau_k==ppr->ur_fluid_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters ncdm_fluid_trigger_tau_over_tau_k and ur_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + } + + class_read_double("neglect_CMB_sources_below_visibility",ppr->neglect_CMB_sources_below_visibility); + + /** - (h.4.) parameter related to the primordial spectra */ + + class_read_double("k_per_decade_primordial",ppr->k_per_decade_primordial); + class_read_double("primordial_inflation_ratio_min",ppr->primordial_inflation_ratio_min); + class_read_double("primordial_inflation_ratio_max",ppr->primordial_inflation_ratio_max); + class_read_int("primordial_inflation_phi_ini_maxit",ppr->primordial_inflation_phi_ini_maxit); + class_read_double("primordial_inflation_pt_stepsize",ppr->primordial_inflation_pt_stepsize); + class_read_double("primordial_inflation_bg_stepsize",ppr->primordial_inflation_bg_stepsize); + class_read_double("primordial_inflation_tol_integration",ppr->primordial_inflation_tol_integration); + class_read_double("primordial_inflation_attractor_precision_pivot",ppr->primordial_inflation_attractor_precision_pivot); + class_read_double("primordial_inflation_attractor_precision_initial",ppr->primordial_inflation_attractor_precision_initial); + class_read_int("primordial_inflation_attractor_maxit",ppr->primordial_inflation_attractor_maxit); + class_read_double("primordial_inflation_tol_curvature",ppr->primordial_inflation_tol_curvature); + class_read_double("primordial_inflation_aH_ini_target",ppr->primordial_inflation_aH_ini_target); + class_read_double("primordial_inflation_end_dphi",ppr->primordial_inflation_end_dphi); + class_read_double("primordial_inflation_end_logstep",ppr->primordial_inflation_end_logstep); + class_read_double("primordial_inflation_small_epsilon",ppr->primordial_inflation_small_epsilon); + class_read_double("primordial_inflation_small_epsilon_tol",ppr->primordial_inflation_small_epsilon_tol); + class_read_double("primordial_inflation_extra_efolds",ppr->primordial_inflation_extra_efolds); + + /** - (h.5.) parameter related to the transfer functions */ + + class_read_double("l_logstep",ppr->l_logstep); + class_read_int("l_linstep",ppr->l_linstep); + + class_read_double("hyper_x_min",ppr->hyper_x_min); + class_read_double("hyper_sampling_flat",ppr->hyper_sampling_flat); + class_read_double("hyper_sampling_curved_low_nu",ppr->hyper_sampling_curved_low_nu); + class_read_double("hyper_sampling_curved_high_nu",ppr->hyper_sampling_curved_high_nu); + class_read_double("hyper_nu_sampling_step",ppr->hyper_nu_sampling_step); + class_read_double("hyper_phi_min_abs",ppr->hyper_phi_min_abs); + class_read_double("hyper_x_tol",ppr->hyper_x_tol); + class_read_double("hyper_flat_approximation_nu",ppr->hyper_flat_approximation_nu); + + class_read_double("q_linstep",ppr->q_linstep); + class_read_double("q_logstep_spline",ppr->q_logstep_spline); + class_read_double("q_logstep_open",ppr->q_logstep_open); + class_read_double("q_logstep_trapzd",ppr->q_logstep_trapzd); + class_read_double("q_numstep_transition",ppr->q_numstep_transition); + + class_read_double("k_step_trans_scalars",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_step_trans_tensors",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_step_trans",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("q_linstep_trans",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("q_logstep_trans",ppr->q_logstep_spline); // obsolete precision parameter: read for compatibility with old precision files + + class_read_double("transfer_neglect_delta_k_S_t0",ppr->transfer_neglect_delta_k_S_t0); + class_read_double("transfer_neglect_delta_k_S_t1",ppr->transfer_neglect_delta_k_S_t1); + class_read_double("transfer_neglect_delta_k_S_t2",ppr->transfer_neglect_delta_k_S_t2); + class_read_double("transfer_neglect_delta_k_S_e",ppr->transfer_neglect_delta_k_S_e); + class_read_double("transfer_neglect_delta_k_V_t1",ppr->transfer_neglect_delta_k_V_t1); + class_read_double("transfer_neglect_delta_k_V_t2",ppr->transfer_neglect_delta_k_V_t2); + class_read_double("transfer_neglect_delta_k_V_e",ppr->transfer_neglect_delta_k_V_e); + class_read_double("transfer_neglect_delta_k_V_b",ppr->transfer_neglect_delta_k_V_b); + class_read_double("transfer_neglect_delta_k_T_t2",ppr->transfer_neglect_delta_k_T_t2); + class_read_double("transfer_neglect_delta_k_T_e",ppr->transfer_neglect_delta_k_T_e); + class_read_double("transfer_neglect_delta_k_T_b",ppr->transfer_neglect_delta_k_T_b); + + class_read_double("transfer_neglect_late_source",ppr->transfer_neglect_late_source); + + class_read_double("l_switch_limber",ppr->l_switch_limber); + + class_call(parser_read_string(pfc, + "l_switch_limber_for_cl_density_over_z", + &string1, + &flag1, + errmsg), + errmsg, + errmsg); + + class_test(flag1 == _TRUE_, + errmsg, + "You passed in input a precision parameter called l_switch_limber_for_cl_density_over_z. This syntax is deprecated since v2.5.0. Please use instead the two precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z, defined in include/common.h, and allowing for better performance."); + + class_read_double("l_switch_limber_for_nc_local_over_z",ppr->l_switch_limber_for_nc_local_over_z); + class_read_double("l_switch_limber_for_nc_los_over_z",ppr->l_switch_limber_for_nc_los_over_z); + + class_read_double("selection_cut_at_sigma",ppr->selection_cut_at_sigma); + class_read_double("selection_sampling",ppr->selection_sampling); + class_read_double("selection_sampling_bessel",ppr->selection_sampling_bessel); + class_read_double("selection_sampling_bessel_los",ppr->selection_sampling_bessel_los); + class_read_double("selection_tophat_edge",ppr->selection_tophat_edge); + + /** - (h.6.) parameters related to nonlinear calculations */ + + class_read_double("halofit_dz",ppr->halofit_dz); + class_read_double("halofit_min_k_nonlinear",ppr->halofit_min_k_nonlinear); + class_read_double("halofit_k_per_decade",ppr->halofit_k_per_decade); + class_read_double("halofit_sigma_precision",ppr->halofit_sigma_precision); + + /** - (h.7.) parameter related to lensing */ + + class_read_int("accurate_lensing",ppr->accurate_lensing); + class_read_int("delta_l_max",ppr->delta_l_max); + if (ppr->accurate_lensing == _TRUE_) { + class_read_int("num_mu_minus_lmax",ppr->num_mu_minus_lmax); + class_read_int("tol_gauss_legendre",ppr->tol_gauss_legendre); + } + /** (i) Write values in file */ + if (ple->has_lensed_cls == _TRUE_) + ppt->l_scalar_max+=ppr->delta_l_max; + + /** - (i.1.) shall we write background quantities in a file? */ + + class_call(parser_read_string(pfc,"write background",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + pop->write_background = _TRUE_; + + } + + /** - (i.2.) shall we write thermodynamics quantities in a file? */ + + class_call(parser_read_string(pfc,"write thermodynamics",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + pop->write_thermodynamics = _TRUE_; + + } + + /** - (i.3.) shall we write perturbation quantities in files? */ + + class_call(parser_read_list_of_doubles(pfc, + "k_output_values", + &(int1), + &(pointer1), + &flag1, + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_test(int1 > _MAX_NUMBER_OF_K_FILES_, + errmsg, + "you want to write some output for %d different values of k, hence you should increase _MAX_NUMBER_OF_K_FILES_ in include/perturbations.h to at least this number", + int1); + ppt->k_output_values_num = int1; + + for (i=0; ik_output_values[i] = pointer1[i]; + } + free(pointer1); + + /* Sort the k_array using qsort */ + qsort (ppt->k_output_values, ppt->k_output_values_num, sizeof(double), compare_doubles); + + ppt->store_perturbations = _TRUE_; + pop->write_perturbations = _TRUE_; + } + + /** - (i.4.) shall we write primordial spectra in a file? */ + + class_call(parser_read_string(pfc,"write primordial",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + pop->write_primordial = _TRUE_; + + } + + return _SUCCESS_; + +} + +/** + * All default parameter values (for input parameters) + * + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfer structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param pnl Input: pointer to nonlinear structure + * @param ple Input: pointer to lensing structure + * @param pop Input: pointer to output structure + * @return the error status + */ + +int input_default_params( + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output *pop + ) { + + double sigma_B; /* Stefan-Boltzmann constant in \f$ W/m^2/K^4 = Kg/K^4/s^3 \f$*/ + int filenum; + + sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); + + /** Define all default parameter values (for input parameters) for each structure:*/ + /** - background structure */ + + /* 5.10.2014: default parameters matched to Planck 2013 + WP + best-fitting model, with ones small difference: the published + Planck 2013 + WP bestfit is with h=0.6704 and one massive + neutrino species with m_ncdm=0.06eV; here we assume only massless + neutrinos in the default model; for the CMB, taking m_ncdm = 0 or + 0.06 eV makes practically no difference, provided that we adapt + the value of h in order ot get the same peak scale, i.e. the same + 100*theta_s. The Planck 2013 + WP best-fitting model with + h=0.6704 gives 100*theta_s = 1.042143 (or equivalently + 100*theta_MC=1.04119). By taking only massless neutrinos, one + gets the same 100*theta_s provided that h is increased to + 0.67556. Hence, we take h=0.67556, N_ur=3.046, N_ncdm=0, and all + other parameters from the Planck2013 Cosmological Parameter + paper. */ + + pba->h = 0.67556; + pba->H0 = pba->h * 1.e5 / _c_; + pba->T_cmb = 2.7255; + pba->Omega0_g = (4.*sigma_B/_c_*pow(pba->T_cmb,4.)) / (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); + pba->Omega0_ur = 3.046*7./8.*pow(4./11.,4./3.)*pba->Omega0_g; + pba->Omega0_b = 0.022032/pow(pba->h,2); + pba->Omega0_cdm = 0.12038/pow(pba->h,2); + pba->Omega0_dcdmdr = 0.0; + pba->Omega0_dcdm = 0.0; + pba->Gamma_dcdm = 0.0; + pba->N_ncdm = 0; + pba->Omega0_ncdm_tot = 0.; + pba->ksi_ncdm_default = 0.; + pba->ksi_ncdm = NULL; + pba->T_ncdm_default = 0.71611; /* this value gives m/omega = 93.14 eV b*/ + pba->T_ncdm = NULL; + pba->deg_ncdm_default = 1.; + pba->deg_ncdm = NULL; + pba->ncdm_psd_parameters = NULL; + pba->ncdm_psd_files = NULL; + + pba->Omega0_scf = 0.; /* Scalar field defaults */ + pba->attractor_ic_scf = _TRUE_; + pba->scf_parameters = NULL; + pba->scf_parameters_size = 0; + pba->scf_tuning_index = 0; + //MZ: initial conditions are as multiplicative factors of the radiation attractor values + pba->phi_ini_scf = 1; + pba->phi_prime_ini_scf = 1; + + pba->Omega0_k = 0.; + pba->K = 0.; + pba->sgnK = 0; + pba->Omega0_lambda = 1.-pba->Omega0_k-pba->Omega0_g-pba->Omega0_ur-pba->Omega0_b-pba->Omega0_cdm-pba->Omega0_ncdm_tot-pba->Omega0_dcdmdr; + pba->Omega0_fld = 0.; + pba->a_today = 1.; + pba->w0_fld=-1.; + pba->wa_fld=0.; + pba->cs2_fld=1.; + + pba->shooting_failed = _FALSE_; + + /** - thermodynamics structure */ + + pth->YHe=_BBN_; + pth->recombination=recfast; + pth->reio_parametrization=reio_camb; + pth->reio_z_or_tau=reio_z; + pth->z_reio=11.357; + pth->tau_reio=0.0925; + pth->reionization_exponent=1.5; + pth->reionization_width=0.5; + pth->helium_fullreio_redshift=3.5; + pth->helium_fullreio_width=0.5; + + pth->binned_reio_num=0; + pth->binned_reio_z=NULL; + pth->binned_reio_xe=NULL; + pth->binned_reio_step_sharpness = 0.3; + + pth->annihilation = 0.; + pth->decay = 0.; + + pth->annihilation_variation = 0.; + pth->annihilation_z = 1000.; + pth->annihilation_zmax = 2500.; + pth->annihilation_zmin = 30.; + pth->annihilation_f_halo = 0.; + pth->annihilation_z_halo = 30.; + pth->has_on_the_spot = _TRUE_; + + pth->compute_cb2_derivatives=_FALSE_; + + pth->compute_damping_scale = _FALSE_; + + /** - perturbation structure */ + + ppt->has_cl_cmb_temperature = _FALSE_; + ppt->has_cl_cmb_polarization = _FALSE_; + ppt->has_cl_cmb_lensing_potential = _FALSE_; + ppt->has_cl_number_count = _FALSE_; + ppt->has_cl_lensing_potential = _FALSE_; + ppt->has_pk_matter = _FALSE_; + ppt->has_density_transfers = _FALSE_; + ppt->has_velocity_transfers = _FALSE_; + + ppt->has_nl_corrections_based_on_delta_m = _FALSE_; + + ppt->has_nc_density = _FALSE_; + ppt->has_nc_rsd = _FALSE_; + ppt->has_nc_lens = _FALSE_; + ppt->has_nc_gr = _FALSE_; + + ppt->switch_sw = 1; + ppt->switch_eisw = 1; + ppt->switch_lisw = 1; + ppt->switch_dop = 1; + ppt->switch_pol = 1; + ppt->eisw_lisw_split_z = 120; + + ppt->has_ad=_TRUE_; + ppt->has_bi=_FALSE_; + ppt->has_cdi=_FALSE_; + ppt->has_nid=_FALSE_; + ppt->has_niv=_FALSE_; + + ppt->has_perturbed_recombination=_FALSE_; + ppt->tensor_method = tm_massless_approximation; + ppt->evolve_tensor_ur = _FALSE_; + ppt->evolve_tensor_ncdm = _FALSE_; + + ppt->has_scalars=_TRUE_; + ppt->has_vectors=_FALSE_; + ppt->has_tensors=_FALSE_; + + ppt->l_scalar_max=2500; + ppt->l_vector_max=500; + ppt->l_tensor_max=500; + ppt->l_lss_max=300; + ppt->k_max_for_pk=0.1; + + ppt->gauge=synchronous; + + ppt->k_output_values_num=0; + ppt->store_perturbations = _FALSE_; + ppt->number_of_scalar_titles=0; + ppt->number_of_vector_titles=0; + ppt->number_of_tensor_titles=0; + for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ + ppt->scalar_perturbations_data[filenum] = NULL; + ppt->vector_perturbations_data[filenum] = NULL; + ppt->tensor_perturbations_data[filenum] = NULL; + } + ppt->index_k_output_values=NULL; + + ppt->three_ceff2_ur=1.; + ppt->three_cvis2_ur=1.; + + ppt->z_max_pk=0.; + + ppt->selection_num=1; + ppt->selection=gaussian; + ppt->selection_mean[0]=1.; + ppt->selection_width[0]=0.1; + + /** - primordial structure */ + + ppm->primordial_spec_type = analytic_Pk; + ppm->k_pivot = 0.05; + ppm->A_s = 2.215e-9; + ppm->n_s = 0.9619; + ppm->alpha_s = 0.; + ppm->f_bi = 1.; + ppm->n_bi = 1.; + ppm->alpha_bi = 0.; + ppm->f_cdi = 1.; + ppm->n_cdi = 1.; + ppm->alpha_cdi = 0.; + ppm->f_nid = 1.; + ppm->n_nid = 1.; + ppm->alpha_nid = 0.; + ppm->f_niv = 1.; + ppm->n_niv = 1.; + ppm->alpha_niv = 0.; + ppm->c_ad_bi = 0.; + ppm->n_ad_bi = 0.; + ppm->alpha_ad_bi = 0.; + ppm->c_ad_cdi = 0.; + ppm->n_ad_cdi = 0.; + ppm->alpha_ad_cdi = 0.; + ppm->c_ad_nid = 0.; + ppm->n_ad_nid = 0.; + ppm->alpha_ad_nid = 0.; + ppm->c_ad_niv = 0.; + ppm->n_ad_niv = 0.; + ppm->alpha_ad_niv = 0.; + ppm->c_bi_cdi = 0.; + ppm->n_bi_cdi = 0.; + ppm->alpha_bi_cdi = 0.; + ppm->c_bi_nid = 0.; + ppm->n_bi_nid = 0.; + ppm->alpha_bi_nid = 0.; + ppm->c_bi_niv = 0.; + ppm->n_bi_niv = 0.; + ppm->alpha_bi_niv = 0.; + ppm->c_cdi_nid = 0.; + ppm->n_cdi_nid = 0.; + ppm->alpha_cdi_nid = 0.; + ppm->c_cdi_niv = 0.; + ppm->n_cdi_niv = 0.; + ppm->alpha_cdi_niv = 0.; + ppm->c_nid_niv = 0.; + ppm->n_nid_niv = 0.; + ppm->alpha_nid_niv = 0.; + ppm->r = 1.; + ppm->n_t = -ppm->r/8.*(2.-ppm->r/8.-ppm->n_s); + ppm->alpha_t = ppm->r/8.*(ppm->r/8.+ppm->n_s-1.); + ppm->potential=polynomial; + ppm->phi_end=0.; + ppm->phi_pivot_method = N_star; + ppm->phi_pivot_target = 60; + ppm->V0=1.25e-13; + ppm->V1=-1.12e-14; + ppm->V2=-6.95e-14; + ppm->V3=0.; + ppm->V4=0.; + ppm->H0=3.69e-6; + ppm->H1=-5.84e-7; + ppm->H2=0.; + ppm->H3=0.; + ppm->H4=0.; + ppm->behavior=numerical; + ppm->command="write here your command for the external Pk"; + ppm->custom1=0.; + ppm->custom2=0.; + ppm->custom3=0.; + ppm->custom4=0.; + ppm->custom5=0.; + ppm->custom6=0.; + ppm->custom7=0.; + ppm->custom8=0.; + ppm->custom9=0.; + ppm->custom10=0.; + + /** - transfer structure */ + + ptr->selection_bias[0]=1.; + ptr->selection_magnification_bias[0]=1.; + ptr->lcmb_rescale=1.; + ptr->lcmb_pivot=0.1; + ptr->lcmb_tilt=0.; + ptr->initialise_HIS_cache=_FALSE_; + ptr->has_nz_analytic = _FALSE_; + ptr->has_nz_file = _FALSE_; + ptr->has_nz_evo_analytic = _FALSE_; + ptr->has_nz_evo_file = _FALSE_; + + /** - output structure */ + + pop->z_pk_num = 1; + pop->z_pk[0] = 0.; + sprintf(pop->root,"output/"); + pop->write_header = _TRUE_; + pop->output_format = class_format; + pop->write_background = _FALSE_; + pop->write_thermodynamics = _FALSE_; + pop->write_perturbations = _FALSE_; + pop->write_primordial = _FALSE_; + + /** - spectra structure */ + + psp->z_max_pk = pop->z_pk[0]; + psp->non_diag=0; + + /** - nonlinear structure */ + + /** - lensing structure */ + + ple->has_lensed_cls = _FALSE_; + + /** - nonlinear structure */ + + pnl->method = nl_none; + + /** - all verbose parameters */ + + pba->background_verbose = 0; + pth->thermodynamics_verbose = 0; + ppt->perturbations_verbose = 0; + ptr->transfer_verbose = 0; + ppm->primordial_verbose = 0; + psp->spectra_verbose = 0; + pnl->nonlinear_verbose = 0; + ple->lensing_verbose = 0; + pop->output_verbose = 0; + + return _SUCCESS_; + +} + +/** + * Initialize the precision parameter structure. + * + * All precision parameters used in the other modules are listed here + * and assigned here a default value. + * + * @param ppr Input/Output: a precision_params structure pointer + * @return the error status + * + */ + +int input_default_precision ( struct precision * ppr ) { + + /** Initialize presicion parameters for different structures: + * - parameters related to the background + */ + + ppr->a_ini_over_a_today_default = 1.e-14; + ppr->back_integration_stepsize = 7.e-3; + ppr->tol_background_integration = 1.e-2; + + ppr->tol_initial_Omega_r = 1.e-4; + ppr->tol_M_ncdm = 1.e-7; + ppr->tol_ncdm = 1.e-3; + ppr->tol_ncdm_synchronous = 1.e-3; + ppr->tol_ncdm_newtonian = 1.e-5; + ppr->tol_ncdm_bg = 1.e-5; + ppr->tol_ncdm_initial_w=1.e-3; + + /** + * - parameters related to the thermodynamics + */ + + /* for bbn */ + sprintf(ppr->sBBN_file,__CLASSDIR__); + strcat(ppr->sBBN_file,"/bbn/sBBN.dat"); + + /* for recombination */ + + ppr->recfast_z_initial=1.e4; + + ppr->recfast_Nz0=20000; + ppr->tol_thermo_integration=1.e-2; + + ppr->recfast_Heswitch=6; /* from recfast 1.4 */ + ppr->recfast_fudge_He=0.86; /* from recfast 1.4 */ + + ppr->recfast_Hswitch = _TRUE_; /* from recfast 1.5 */ + ppr->recfast_fudge_H = 1.14; /* from recfast 1.4 */ + ppr->recfast_delta_fudge_H = -0.015; /* from recfast 1.5.2 */ + ppr->recfast_AGauss1 = -0.14; /* from recfast 1.5 */ + ppr->recfast_AGauss2 = 0.079; /* from recfast 1.5.2 */ + ppr->recfast_zGauss1 = 7.28; /* from recfast 1.5 */ + ppr->recfast_zGauss2 = 6.73; /* from recfast 1.5.2 */ + ppr->recfast_wGauss1 = 0.18; /* from recfast 1.5 */ + ppr->recfast_wGauss2 = 0.33; /* from recfast 1.5 */ + + ppr->recfast_z_He_1 = 8000.; /* from recfast 1.4 */ + ppr->recfast_delta_z_He_1 = 50.; /* found to be OK on 3.09.10 */ + ppr->recfast_z_He_2 = 5000.; /* from recfast 1.4 */ + ppr->recfast_delta_z_He_2 = 100.; /* found to be OK on 3.09.10 */ + ppr->recfast_z_He_3 = 3500.; /* from recfast 1.4 */ + ppr->recfast_delta_z_He_3 = 50.; /* found to be OK on 3.09.10 */ + ppr->recfast_x_He0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Helium */ + ppr->recfast_x_He0_trigger2 = 0.995; /* raised from 0.985 to same as previous one for smoother Helium */ + ppr->recfast_x_He0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ + ppr->recfast_x_H0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Hydrogen */ + ppr->recfast_x_H0_trigger2 = 0.995; /* raised from 0.98 to same as previous one for smoother Hydrogen */ + ppr->recfast_x_H0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ + + ppr->recfast_H_frac=1.e-3; /* from recfast 1.4 */ + + sprintf(ppr->hyrec_Alpha_inf_file,__CLASSDIR__); + strcat(ppr->hyrec_Alpha_inf_file,"/hyrec/Alpha_inf.dat"); + sprintf(ppr->hyrec_R_inf_file,__CLASSDIR__); + strcat(ppr->hyrec_R_inf_file,"/hyrec/R_inf.dat"); + sprintf(ppr->hyrec_two_photon_tables_file,__CLASSDIR__); + strcat(ppr->hyrec_two_photon_tables_file,"/hyrec/two_photon_tables.dat"); + + /* for reionization */ + + ppr->reionization_z_start_max = 50.; + ppr->reionization_sampling=5.e-2; + ppr->reionization_optical_depth_tol=1.e-4; + ppr->reionization_start_factor=8.; + + /* general */ + + ppr->thermo_rate_smoothing_radius=50; + + /** + * - parameters related to the perturbations + */ + + ppr->evolver = ndf15; + + ppr->k_min_tau0=0.1; + ppr->k_max_tau0_over_l_max=2.4; // very relevant for accuracy of lensed ClTT at highest l's + ppr->k_step_sub=0.05; + ppr->k_step_super=0.002; + ppr->k_step_transition=0.2; + ppr->k_step_super_reduction=0.1; + ppr->k_per_decade_for_pk=10.; + ppr->k_per_decade_for_bao=70.; + ppr->k_bao_center=3.; + ppr->k_bao_width=4.; + + ppr->start_small_k_at_tau_c_over_tau_h = 0.0015; /* decrease to start earlier in time */ + ppr->start_large_k_at_tau_h_over_tau_k = 0.07; /* decrease to start earlier in time */ + ppr->tight_coupling_trigger_tau_c_over_tau_h=0.015; /* decrease to switch off earlier in time */ + ppr->tight_coupling_trigger_tau_c_over_tau_k=0.01; /* decrease to switch off earlier in time */ + ppr->start_sources_at_tau_c_over_tau_h = 0.008; /* decrease to start earlier in time */ + ppr->tight_coupling_approximation=(int)compromise_CLASS; + + ppr->l_max_g=12; + ppr->l_max_pol_g=10; + ppr->l_max_dr=17; + ppr->l_max_ur=17; + ppr->l_max_ncdm=17; + ppr->l_max_g_ten=5; + ppr->l_max_pol_g_ten=5; + + ppr->curvature_ini=1.; /* initial curvature; used to fix adiabatic initial conditions; must remain fixed to one as long as the primordial adiabatic spectrum stands for the curvature power spectrum */ + ppr->entropy_ini=1.; /* initial entropy; used to fix isocurvature initial conditions; must remain fixed to one as long as the primordial isocurvature spectrum stands for an entropy power spectrum */ + //ppr->gw_ini=0.25; /* to match normalization convention for GW in most of literature and ensure standard definition of r */ + ppr->gw_ini=1.; + + ppr->perturb_integration_stepsize=0.5; + + ppr->tol_tau_approx=1.e-10; + ppr->tol_perturb_integration=1.e-5; + ppr->perturb_sampling_stepsize=0.10; + + ppr->radiation_streaming_approximation = rsa_MD_with_reio; + ppr->radiation_streaming_trigger_tau_over_tau_k = 45.; + ppr->radiation_streaming_trigger_tau_c_over_tau = 5.; + + ppr->ur_fluid_approximation = ufa_CLASS; + ppr->ur_fluid_trigger_tau_over_tau_k = 30.; + + ppr->ncdm_fluid_approximation = ncdmfa_CLASS; + ppr->ncdm_fluid_trigger_tau_over_tau_k = 31.; + + ppr->neglect_CMB_sources_below_visibility = 1.e-3; + + /** + * - parameter related to the primordial spectra + */ + + ppr->k_per_decade_primordial = 10.; + + ppr->primordial_inflation_ratio_min=100.; + ppr->primordial_inflation_ratio_max=1/50.; + ppr->primordial_inflation_phi_ini_maxit=10000; + ppr->primordial_inflation_pt_stepsize=0.01; + ppr->primordial_inflation_bg_stepsize=0.005; + ppr->primordial_inflation_tol_integration=1.e-3; + ppr->primordial_inflation_attractor_precision_pivot=0.001; + ppr->primordial_inflation_attractor_precision_initial=0.1; + ppr->primordial_inflation_attractor_maxit=10; + ppr->primordial_inflation_tol_curvature=1.e-3; + ppr->primordial_inflation_aH_ini_target=0.9; + ppr->primordial_inflation_end_dphi=1.e-10; + ppr->primordial_inflation_end_logstep=10.; + ppr->primordial_inflation_small_epsilon=0.1; + ppr->primordial_inflation_small_epsilon_tol=0.01; + ppr->primordial_inflation_extra_efolds=2.; + + /** + * - parameter related to the transfer functions + */ + + ppr->l_logstep=1.12; + ppr->l_linstep=40; + + ppr->hyper_x_min = 1.e-5; + ppr->hyper_sampling_flat = 8.; + ppr->hyper_sampling_curved_low_nu = 6.0; + ppr->hyper_sampling_curved_high_nu = 3.0; + ppr->hyper_nu_sampling_step = 1000.; + ppr->hyper_phi_min_abs = 1.e-10; + ppr->hyper_x_tol = 1.e-4; + ppr->hyper_flat_approximation_nu = 4000.; + + ppr->q_linstep=0.45; + ppr->q_logstep_spline=170.; + ppr->q_logstep_open=6.; + ppr->q_logstep_trapzd=20.; + ppr->q_numstep_transition=250.; + + ppr->transfer_neglect_delta_k_S_t0 = 0.15; + ppr->transfer_neglect_delta_k_S_t1 = 0.04; + ppr->transfer_neglect_delta_k_S_t2 = 0.15; + ppr->transfer_neglect_delta_k_S_e = 0.11; + ppr->transfer_neglect_delta_k_V_t1 = 1.; + ppr->transfer_neglect_delta_k_V_t2 = 1.; + ppr->transfer_neglect_delta_k_V_e = 1.; + ppr->transfer_neglect_delta_k_V_b = 1.; + ppr->transfer_neglect_delta_k_T_t2 = 0.2; + ppr->transfer_neglect_delta_k_T_e = 0.25; + ppr->transfer_neglect_delta_k_T_b = 0.1; + + ppr->transfer_neglect_late_source = 400.; + + ppr->l_switch_limber=10.; + // For density Cl, we recommend not to use the Limber approximation + // at all, and hence to put here a very large number (e.g. 10000); but + // if you have wide and smooth selection functions you may wish to + // use it; then 100 might be OK + ppr->l_switch_limber_for_nc_local_over_z=100.; + // For terms integrated along the line-of-sight involving spherical + // Bessel functions (but not their derivatives), Limber + // approximation works well. High precision can be reached with 2000 + // only. But if you have wide and smooth selection functions you may + // reduce to e.g. 30. + ppr->l_switch_limber_for_nc_los_over_z=30.; + + ppr->selection_cut_at_sigma=5.; + ppr->selection_sampling=50; + ppr->selection_sampling_bessel=20; + ppr->selection_sampling_bessel_los=ppr->selection_sampling_bessel; + ppr->selection_tophat_edge=0.1; + + /** + * - parameters related to spectra module + */ + + /* nothing */ + + /** + * - parameters related to nonlinear module + */ + + ppr->halofit_dz=0.1; + ppr->halofit_min_k_nonlinear=0.0035; + ppr->halofit_k_per_decade = 80.; + ppr->halofit_sigma_precision=0.05; + ppr->halofit_min_k_max=5.; + + /** + * - parameter related to lensing + */ + + ppr->accurate_lensing=_FALSE_; + ppr->num_mu_minus_lmax=70; + ppr->delta_l_max=500; // 750 for 0.2% near l_max, 1000 for 0.1% + + /** + * - automatic estimate of machine precision + */ + + //get_machine_precision(&(ppr->smallest_allowed_variation)); + ppr->smallest_allowed_variation=DBL_EPSILON; + + class_test(ppr->smallest_allowed_variation < 0, + ppr->error_message, + "smallest_allowed_variation = %e < 0",ppr->smallest_allowed_variation); + + ppr->tol_gauss_legendre = ppr->smallest_allowed_variation; + + return _SUCCESS_; + +} + +int class_version( + char * version + ) { + + sprintf(version,"%s",_VERSION_); + return _SUCCESS_; +} + +/** + * Automatically computes the machine precision. + * + * @param smallest_allowed_variation a pointer to the smallest allowed variation + * + * Returns the smallest + * allowed variation (minimum epsilon * _TOLVAR_) + */ + +int get_machine_precision(double * smallest_allowed_variation) { + double one, meps, sum; + + one = 1.0; + meps = 1.0; + do { + meps /= 2.0; + sum = one + meps; + } while (sum != one); + meps *= 2.0; + + *smallest_allowed_variation = meps * _TOLVAR_; + + return _SUCCESS_; + +} + +int input_fzerofun_1d(double input, + void* pfzw, + double *output, + ErrorMsg error_message){ + + class_call(input_try_unknown_parameters(&input, + 1, + pfzw, + output, + error_message), + error_message, + error_message); + + return _SUCCESS_; +} + +int class_fzero_ridder(int (*func)(double x, void *param, double *y, ErrorMsg error_message), + double x1, + double x2, + double xtol, + void *param, + double *Fx1, + double *Fx2, + double *xzero, + int *fevals, + ErrorMsg error_message){ + /**Using Ridders' method, return the root of a function func known to + lie between x1 and x2. The root, returned as zriddr, will be found to + an approximate accuracy xtol. + */ + int j,MAXIT=1000; + double ans,fh,fl,fm,fnew,s,xh,xl,xm,xnew; + if ((Fx1!=NULL)&&(Fx2!=NULL)){ + fl = *Fx1; + fh = *Fx2; + } + else{ + class_call((*func)(x1, param, &fl, error_message), + error_message, error_message); + class_call((*func)(x2, param, &fh, error_message), + error_message, error_message); + + *fevals = (*fevals)+2; + } + if ((fl > 0.0 && fh < 0.0) || (fl < 0.0 && fh > 0.0)) { + xl=x1; + xh=x2; + ans=-1.11e11; + for (j=1;j<=MAXIT;j++) { + xm=0.5*(xl+xh); + class_call((*func)(xm, param, &fm, error_message), + error_message, error_message); + *fevals = (*fevals)+1; + s=sqrt(fm*fm-fl*fh); + if (s == 0.0){ + *xzero = ans; + //printf("Success 1\n"); + return _SUCCESS_; + } + xnew=xm+(xm-xl)*((fl >= fh ? 1.0 : -1.0)*fm/s); + if (fabs(xnew-ans) <= xtol) { + *xzero = ans; + return _SUCCESS_; + } + ans=xnew; + class_call((*func)(ans, param, &fnew, error_message), + error_message, error_message); + *fevals = (*fevals)+1; + if (fnew == 0.0){ + *xzero = ans; + //printf("Success 2, ans=%g\n",ans); + return _SUCCESS_; + } + if (NRSIGN(fm,fnew) != fm) { + xl=xm; + fl=fm; + xh=ans; + fh=fnew; + } else if (NRSIGN(fl,fnew) != fl) { + xh=ans; + fh=fnew; + } else if (NRSIGN(fh,fnew) != fh) { + xl=ans; + fl=fnew; + } else return _FAILURE_; + if (fabs(xh-xl) <= xtol) { + *xzero = ans; + // printf("Success 3\n"); + return _SUCCESS_; + } + } + class_stop(error_message,"zriddr exceed maximum iterations"); + } + else { + if (fl == 0.0) return x1; + if (fh == 0.0) return x2; + class_stop(error_message,"root must be bracketed in zriddr."); + } + class_stop(error_message,"Failure in int."); +} + +int input_try_unknown_parameters(double * unknown_parameter, + int unknown_parameters_size, + void * voidpfzw, + double * output, + ErrorMsg errmsg){ + /** Summary: + * - Call the structures*/ + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + int i; + double rho_dcdm_today, rho_dr_today; + struct fzerofun_workspace * pfzw; + int input_verbose; + int flag; + int param; + + pfzw = (struct fzerofun_workspace *) voidpfzw; + + for (i=0; i < unknown_parameters_size; i++) { + sprintf(pfzw->fc.value[pfzw->unknown_parameters_index[i]], + "%e",unknown_parameter[i]); + } + + class_call(input_read_parameters(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + + class_call(parser_read_int(&(pfzw->fc), + "input_verbose", + ¶m, + &flag, + errmsg), + errmsg, + errmsg); + if (flag == _TRUE_) + input_verbose = param; + else + input_verbose = 0; + // Optimise flags for sigma8 calculation. + pt.k_max_for_pk=1.0; + pt.has_pk_matter=_TRUE_; + pt.has_perturbations = _TRUE_; + pt.has_cl_cmb_temperature = _FALSE_; + pt.has_cls = _FALSE_; + pt.has_cl_cmb_polarization = _FALSE_; + pt.has_cl_cmb_lensing_potential = _FALSE_; + pt.has_cl_number_count = _FALSE_; + pt.has_cl_lensing_potential=_FALSE_; + pt.has_density_transfers=_FALSE_; + pt.has_velocity_transfers=_FALSE_; + + + /** - Do computations */ + if (pfzw->required_computation_stage >= cs_background){ + if (input_verbose>2) + printf("Stage 1: background\n"); + ba.background_verbose = 0; + class_call(background_init(&pr,&ba), ba.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_thermodynamics){ + if (input_verbose>2) + printf("Stage 2: thermodynamics\n"); + pr.recfast_Nz0 = 10000; + th.thermodynamics_verbose = 0; + class_call(thermodynamics_init(&pr,&ba,&th), th.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_perturbations){ + if (input_verbose>2) + printf("Stage 3: perturbations\n"); + pt.perturbations_verbose = 0; + class_call(perturb_init(&pr,&ba,&th,&pt), pt.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_primordial){ + if (input_verbose>2) + printf("Stage 4: primordial\n"); + pm.primordial_verbose = 0; + class_call(primordial_init(&pr,&pt,&pm), pm.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_nonlinear){ + if (input_verbose>2) + printf("Stage 5: nonlinear\n"); + nl.nonlinear_verbose = 0; + class_call(nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl), nl.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_transfer){ + if (input_verbose>2) + printf("Stage 6: transfer\n"); + tr.transfer_verbose = 0; + class_call(transfer_init(&pr,&ba,&th,&pt,&nl,&tr), tr.error_message, errmsg); + } + + if (pfzw->required_computation_stage >= cs_spectra){ + if (input_verbose>2) + printf("Stage 7: spectra\n"); + sp.spectra_verbose = 0; + class_call(spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp),sp.error_message, errmsg); + } + + + for (i=0; i < pfzw->target_size; i++) { + switch (pfzw->target_name[i]) { + case tn_sigma8: + output[i] = sp.sigma8 - pfzw->target_value[i]; + break; + case theta_s: + output[i] = 100.*th.rs_rec/th.ra_rec-pfzw->target_value[i]; + break; + case Omega_dcdmdr: + rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm]; + if (ba.has_dr == _TRUE_) + rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr]; + else + rho_dr_today = 0.; + output[i] = (rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)-pfzw->target_value[i]; + break; + case omega_dcdmdr: + rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm]; + if (ba.has_dr == _TRUE_) + rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr]; + else + rho_dr_today = 0.; + output[i] = (rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)-pfzw->target_value[i]/ba.h/ba.h; + break; + case Omega_scf: + /** - In case scalar field is used to fill, pba->Omega0_scf is not equal to pfzw->target_value[i].*/ + output[i] = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_scf]/(ba.H0*ba.H0) + -ba.Omega0_scf; + break; + case Omega_ini_dcdm: + case omega_ini_dcdm: + rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm]; + if (ba.has_dr == _TRUE_) + rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr]; + else + rho_dr_today = 0.; + output[i] = -(rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)+ba.Omega0_dcdmdr; + break; + } + } + + + /** - Free structures */ + if (pfzw->required_computation_stage >= cs_spectra){ + class_call(spectra_free(&sp), sp.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_transfer){ + class_call(transfer_free(&tr), tr.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_nonlinear){ + class_call(nonlinear_free(&nl), nl.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_primordial){ + class_call(primordial_free(&pm), pm.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_perturbations){ + class_call(perturb_free(&pt), pt.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_thermodynamics){ + class_call(thermodynamics_free(&th), th.error_message, errmsg); + } + if (pfzw->required_computation_stage >= cs_background){ + class_call(background_free(&ba), ba.error_message, errmsg); + } + + /** - Set filecontent to unread */ + for (i=0; ifc.size; i++) { + pfzw->fc.read[i] = _FALSE_; + } + + return _SUCCESS_; +} + +int input_get_guess(double *xguess, + double *dxdy, + struct fzerofun_workspace * pfzw, + ErrorMsg errmsg){ + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + int i; + + double Omega_M, a_decay, gamma, Omega0_dcdmdr=1.0; + int index_guess; + + /* Cheat to read only known parameters: */ + pfzw->fc.size -= pfzw->target_size; + class_call(input_read_parameters(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + pfzw->fc.size += pfzw->target_size; + /** Summary: */ + /** - Here we should write reasonable guesses for the unknown parameters. + Also estimate dxdy, i.e. how the unknown parameter responds to the known. + This can simply be estimated as the derivative of the guess formula.*/ + + for (index_guess=0; index_guess < pfzw->target_size; index_guess++) { + switch (pfzw->target_name[index_guess]) { + case tn_sigma8: + // Assume linear relationship between A_s and sigma8 and fix coefficient according to vanilla LambdaCDM. Should be good enough ... + xguess[index_guess] = 2.43e-9/0.87659*pfzw->target_value[index_guess]; + dxdy[index_guess] = 2.43e-9/0.87659; + break; + case theta_s: + xguess[index_guess] = 3.54*pow(pfzw->target_value[index_guess],2)-5.455*pfzw->target_value[index_guess]+2.548; + dxdy[index_guess] = (7.08*pfzw->target_value[index_guess]-5.455); + /** - Update pb to reflect guess */ + ba.h = xguess[index_guess]; + ba.H0 = ba.h * 1.e5 / _c_; + break; + case Omega_dcdmdr: + Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + /* This formula is exact in a Matter + Lambda Universe, but only + for Omega_dcdm, not the combined. + sqrt_one_minus_M = sqrt(1.0 - Omega_M); + xguess[index_guess] = pfzw->target_value[index_guess]* + exp(2./3.*ba.Gamma_dcdm/ba.H0* + atanh(sqrt_one_minus_M)/sqrt_one_minus_M); + dxdy[index_guess] = 1.0;//exp(2./3.*ba.Gamma_dcdm/ba.H0*atanh(sqrt_one_minus_M)/sqrt_one_minus_M); + */ + gamma = ba.Gamma_dcdm/ba.H0; + if (gamma < 1) + a_decay = 1.0; + else + a_decay = pow(1+(gamma*gamma-1.)/Omega_M,-1./3.); + xguess[index_guess] = pfzw->target_value[index_guess]/a_decay; + dxdy[index_guess] = 1./a_decay; + //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); + break; + case omega_dcdmdr: + Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + /* This formula is exact in a Matter + Lambda Universe, but only + for Omega_dcdm, not the combined. + sqrt_one_minus_M = sqrt(1.0 - Omega_M); + xguess[index_guess] = pfzw->target_value[index_guess]* + exp(2./3.*ba.Gamma_dcdm/ba.H0* + atanh(sqrt_one_minus_M)/sqrt_one_minus_M); + dxdy[index_guess] = 1.0;//exp(2./3.*ba.Gamma_dcdm/ba.H0*atanh(sqrt_one_minus_M)/sqrt_one_minus_M); + */ + gamma = ba.Gamma_dcdm/ba.H0; + if (gamma < 1) + a_decay = 1.0; + else + a_decay = pow(1+(gamma*gamma-1.)/Omega_M,-1./3.); + xguess[index_guess] = pfzw->target_value[index_guess]/ba.h/ba.h/a_decay; + dxdy[index_guess] = 1./a_decay/ba.h/ba.h; + //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); + break; + case Omega_scf: + + /** - This guess is arbitrary, something nice using WKB should be implemented. + * + * - Version 2: use a fit: `xguess[index_guess] = 1.77835*pow(ba.Omega0_scf,-2./7.); + * dxdy[index_guess] = -0.5081*pow(ba.Omega0_scf,-9./7.)`; + * + * - Version 3: use attractor solution */ + + if (ba.scf_tuning_index == 0){ + xguess[index_guess] = sqrt(3.0/ba.Omega0_scf); + dxdy[index_guess] = -0.5*sqrt(3.0)*pow(ba.Omega0_scf,-1.5); + } + else{ + /* Default: take the passed value as xguess and set dxdy to 1. */ + xguess[index_guess] = ba.scf_parameters[ba.scf_tuning_index]; + dxdy[index_guess] = 1.; + } + break; + case omega_ini_dcdm: + Omega0_dcdmdr = 1./(ba.h*ba.h); + case Omega_ini_dcdm: + /** - This works since correspondence is + Omega_ini_dcdm -> Omega_dcdmdr and + omega_ini_dcdm -> omega_dcdmdr */ + Omega0_dcdmdr *=pfzw->target_value[index_guess]; + Omega_M = ba.Omega0_cdm+Omega0_dcdmdr+ba.Omega0_b; + gamma = ba.Gamma_dcdm/ba.H0; + if (gamma < 1) + a_decay = 1.0; + else + a_decay = pow(1+(gamma*gamma-1.)/Omega_M,-1./3.); + xguess[index_guess] = pfzw->target_value[index_guess]*a_decay; + dxdy[index_guess] = a_decay; + if (gamma > 100) + dxdy[index_guess] *= gamma/100; + + //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); + break; + } + //printf("xguess = %g\n",xguess[index_guess]); + } + + for (i=0; ifc.size; i++) { + pfzw->fc.read[i] = _FALSE_; + } + + /** - Deallocate everything allocated by input_read_parameters */ + background_free_input(&ba); + + return _SUCCESS_; +} + +int input_find_root(double *xzero, + int *fevals, + struct fzerofun_workspace *pfzw, + ErrorMsg errmsg){ + double x1, x2, f1, f2, dxdy, dx; + int iter, iter2; + int return_function; + /** Summary: */ + + /** - Fisrt we do our guess */ + class_call(input_get_guess(&x1, &dxdy, pfzw, errmsg), + errmsg, errmsg); + // printf("x1= %g\n",x1); + class_call(input_fzerofun_1d(x1, + pfzw, + &f1, + errmsg), + errmsg, errmsg); + (*fevals)++; + //printf("x1= %g, f1= %g\n",x1,f1); + + dx = 1.5*f1*dxdy; + + /** - Do linear hunt for boundaries */ + for (iter=1; iter<=15; iter++){ + //x2 = x1 + search_dir*dx; + x2 = x1 - dx; + + for (iter2=1; iter2 <= 3; iter2++) { + return_function = input_fzerofun_1d(x2,pfzw,&f2,errmsg); + (*fevals)++; + //printf("x2= %g, f2= %g\n",x2,f2); + //fprintf(stderr,"iter2=%d\n",iter2); + + if (return_function ==_SUCCESS_) { + break; + } + else if (iter2 < 3) { + dx*=0.5; + x2 = x1-dx; + } + else { + //fprintf(stderr,"get here\n"); + class_stop(errmsg,errmsg); + } + } + + if (f1*f2<0.0){ + /** - root has been bracketed */ + if (0==1){ + printf("Root has been bracketed after %d iterations: [%g, %g].\n",iter,x1,x2); + } + break; + } + + x1 = x2; + f1 = f2; + } + + /** - Find root using Ridders method. (Exchange for bisection if you are old-school.)*/ + class_call(class_fzero_ridder(input_fzerofun_1d, + x1, + x2, + 1e-5*MAX(fabs(x1),fabs(x2)), + pfzw, + &f1, + &f2, + xzero, + fevals, + errmsg), + errmsg,errmsg); + + return _SUCCESS_; +} + +int file_exists(const char *fname){ + FILE *file = fopen(fname, "r"); + if (file != NULL){ + fclose(file); + return _TRUE_; + } + return _FALSE_; +} + +int input_auxillary_target_conditions(struct file_content * pfc, + enum target_names target_name, + double target_value, + int * aux_flag, + ErrorMsg errmsg){ + *aux_flag = _TRUE_; + /* + double param1; + int int1, flag1; + int input_verbose = 0; + class_read_int("input_verbose",input_verbose); + */ + switch (target_name){ + case Omega_dcdmdr: + case omega_dcdmdr: + case Omega_scf: + case Omega_ini_dcdm: + case omega_ini_dcdm: + /* Check that Omega's or omega's are nonzero: */ + if (target_value == 0.) + *aux_flag = _FALSE_; + break; + default: + /* Default is no additional checks */ + *aux_flag = _TRUE_; + break; + } + return _SUCCESS_; +} + +int compare_integers (const void * elem1, const void * elem2) { + int f = *((int*)elem1); + int s = *((int*)elem2); + if (f > s) return 1; + if (f < s) return -1; + return 0; +} + +int compare_doubles(const void *a,const void *b) { + double *x = (double *) a; + double *y = (double *) b; + if (*x < *y) + return -1; + else if + (*x > *y) return 1; + return 0; +} diff --git a/class_old/source/lensing.c b/class_old/source/lensing.c new file mode 100644 index 00000000..1d4e4ad3 --- /dev/null +++ b/class_old/source/lensing.c @@ -0,0 +1,1916 @@ +/** @file lensing.c Documented lensing module + * + * Simon Prunet and Julien Lesgourgues, 6.12.2010 + * + * This module computes the lensed temperature and polarization + * anisotropy power spectra \f$ C_l^{X}, P(k), ... \f$'s given the + * unlensed temperature, polarization and lensing potential spectra. + * + * Follows Challinor and Lewis full-sky method, astro-ph/0502425 + * + * The following functions can be called from other modules: + * + * -# lensing_init() at the beginning (but after spectra_init()) + * -# lensing_cl_at_l() at any time for computing Cl_lensed at any l + * -# lensing_free() at the end + */ + +#include "lensing.h" +#include + +/** + * Anisotropy power spectra \f$ C_l\f$'s for all types, modes and initial conditions. + * SO FAR: ONLY SCALAR + * + * This routine evaluates all the lensed \f$ C_l\f$'s at a given value of l by + * picking it in the pre-computed table. When relevant, it also + * sums over all initial conditions for each mode, and over all modes. + * + * This function can be called from whatever module at whatever time, + * provided that lensing_init() has been called before, and + * lensing_free() has not been called yet. + * + * @param ple Input: pointer to lensing structure + * @param l Input: multipole number + * @param cl_lensed Output: lensed \f$ C_l\f$'s for all types (TT, TE, EE, etc..) + * @return the error status + */ + +int lensing_cl_at_l( + struct lensing * ple, + int l, + double * cl_lensed /* array with argument cl_lensed[index_ct] (must be already allocated) */ + ) { + int last_index; + int index_lt; + + class_test(l > ple->l_lensed_max, + ple->error_message, + "you asked for lensed Cls at l=%d, they were computed only up to l=%d, you should increase l_max_scalars or decrease the precision parameter delta_l_max",l,ple->l_lensed_max); + + class_call(array_interpolate_spline(ple->l, + ple->l_size, + ple->cl_lens, + ple->ddcl_lens, + ple->lt_size, + l, + &last_index, + cl_lensed, + ple->lt_size, + ple->error_message), + ple->error_message, + ple->error_message); + + /* set to zero for the types such that llt_size; index_lt++) + if ((int)l > ple->l_max_lt[index_lt]) + cl_lensed[index_lt]=0.; + + return _SUCCESS_; +} + +/** + * This routine initializes the lensing structure (in particular, + * computes table of lensed anisotropy spectra \f$ C_l^{X} \f$) + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure (just in case, not used in current version...) + * @param psp Input: pointer to spectra structure + * @param pnl Input: pointer to nonlinear structure + * @param ple Output: pointer to initialized lensing structure + * @return the error status + */ + +int lensing_init( + struct precision * ppr, + struct perturbs * ppt, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple + ) { + + /** Summary: */ + /** - Define local variables */ + + double * mu; /* mu[index_mu]: discretized values of mu + between -1 and 1, roots of Legendre polynomial */ + double * w8; /* Corresponding Gauss-Legendre quadrature weights */ + double theta,delta_theta; + + double ** d00; /* dmn[index_mu][index_l] */ + double ** d11; + double ** d2m2; + double ** d22; + double ** d20; + double ** d1m1; + double ** d31; + double ** d40; + double ** d3m1; + double ** d3m3; + double ** d4m2; + double ** d4m4; + double * buf_dxx; /* buffer */ + + double * Cgl; /* Cgl[index_mu] */ + double * Cgl2; /* Cgl2[index_mu] */ + double * sigma2; /* sigma[index_mu] */ + + double * ksi; /* ksi[index_mu] */ + double * ksiX; /* ksiX[index_mu] */ + double * ksip; /* ksip[index_mu] */ + double * ksim; /* ksim[index_mu] */ + + double fac,fac1; + double X_000; + double X_p000; + double X_220; + double X_022; + double X_p022; + double X_121; + double X_132; + double X_242; + + int num_mu,index_mu,icount; + int l; + double ll; + double * cl_unlensed; /* cl_unlensed[index_ct] */ + double * cl_tt; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_te; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_ee; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_bb; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_pp; /* potential cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + + double res,resX,lens; + double resp, resm, lensp, lensm; + + double * sqrt1; + double * sqrt2; + double * sqrt3; + double * sqrt4; + double * sqrt5; + + double ** cl_md_ic; /* array with argument + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct] */ + + double ** cl_md; /* array with argument + cl_md[index_md][index_ct] */ + + int index_md; + + /* Timing */ + //double debut, fin; + //double cpu_time; + + /** - check that we really want to compute at least one spectrum */ + + if (ple->has_lensed_cls == _FALSE_) { + if (ple->lensing_verbose > 0) + printf("No lensing requested. Lensing module skipped.\n"); + return _SUCCESS_; + } + else { + if (ple->lensing_verbose > 0) { + printf("Computing lensed spectra "); + if (ppr->accurate_lensing==_TRUE_) + printf("(accurate mode)\n"); + else + printf("(fast mode)\n"); + } + } + + /** - initialize indices and allocate some of the arrays in the + lensing structure */ + + class_call(lensing_indices(ppr,psp,ple), + ple->error_message, + ple->error_message); + + /** - put all precision variables hare; will be stored later in precision structure */ + /** - Last element in \f$ \mu \f$ will be for \f$ \mu=1 \f$, needed for sigma2. + The rest will be chosen as roots of a Gauss-Legendre quadrature **/ + + if (ppr->accurate_lensing == _TRUE_) { + num_mu=(ple->l_unlensed_max+ppr->num_mu_minus_lmax); /* Must be even ?? CHECK */ + num_mu += num_mu%2; /* Force it to be even */ + } else { + /* Integrate correlation function difference on [0,pi/16] */ + num_mu = (ple->l_unlensed_max * 2 )/16; + } + /** - allocate array of \f$ \mu \f$ values, as well as quadrature weights */ + + class_alloc(mu, + num_mu*sizeof(double), + ple->error_message); + /* Reserve last element of mu for mu=1, needed for sigma2 */ + mu[num_mu-1] = 1.0; + + class_alloc(w8, + (num_mu-1)*sizeof(double), + ple->error_message); + + if (ppr->accurate_lensing == _TRUE_) { + + //debut = omp_get_wtime(); + class_call(quadrature_gauss_legendre(mu, + w8, + num_mu-1, + ppr->tol_gauss_legendre, + ple->error_message), + ple->error_message, + ple->error_message); + //fin = omp_get_wtime(); + //cpu_time = (fin-debut); + //printf("time in quadrature_gauss_legendre=%4.3f s\n",cpu_time); + + } else { /* Crude integration on [0,pi/16]: Riemann sum on theta */ + + delta_theta = _PI_/16. / (double)(num_mu-1); + for (index_mu=0;index_muerror_message); + + class_alloc(d11, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d1m1, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d2m2, + num_mu*sizeof(double*), + ple->error_message); + icount += 4*num_mu*(ple->l_unlensed_max+1); + + if(ple->has_te==_TRUE_) { + + class_alloc(d20, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d3m1, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d4m2, + num_mu*sizeof(double*), + ple->error_message); + icount += 3*num_mu*(ple->l_unlensed_max+1); + } + + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + class_alloc(d22, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d31, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d3m3, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d40, + num_mu*sizeof(double*), + ple->error_message); + + class_alloc(d4m4, + num_mu*sizeof(double*), + ple->error_message); + icount += 5*num_mu*(ple->l_unlensed_max+1); + } + + icount += 5*(ple->l_unlensed_max+1); /* for arrays sqrt1[l] to sqrt5[l] */ + + /** - Allocate main contiguous buffer **/ + class_alloc(buf_dxx, + icount * sizeof(double), + ple->error_message); + + icount = 0; + for (index_mu=0; index_mul_unlensed_max+1)]); + d11[index_mu] = &(buf_dxx[icount+(index_mu+num_mu) * (ple->l_unlensed_max+1)]); + d1m1[index_mu]= &(buf_dxx[icount+(index_mu+2*num_mu) * (ple->l_unlensed_max+1)]); + d2m2[index_mu]= &(buf_dxx[icount+(index_mu+3*num_mu) * (ple->l_unlensed_max+1)]); + } + icount += 4*num_mu*(ple->l_unlensed_max+1); + + if (ple->has_te==_TRUE_) { + for (index_mu=0; index_mul_unlensed_max+1)]); + d3m1[index_mu]= &(buf_dxx[icount+(index_mu+num_mu) * (ple->l_unlensed_max+1)]); + d4m2[index_mu]= &(buf_dxx[icount+(index_mu+2*num_mu) * (ple->l_unlensed_max+1)]); + } + icount += 3*num_mu*(ple->l_unlensed_max+1); + } + + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + for (index_mu=0; index_mul_unlensed_max+1)]); + d31[index_mu] = &(buf_dxx[icount+(index_mu+num_mu) * (ple->l_unlensed_max+1)]); + d3m3[index_mu]= &(buf_dxx[icount+(index_mu+2*num_mu) * (ple->l_unlensed_max+1)]); + d40[index_mu] = &(buf_dxx[icount+(index_mu+3*num_mu) * (ple->l_unlensed_max+1)]); + d4m4[index_mu]= &(buf_dxx[icount+(index_mu+4*num_mu) * (ple->l_unlensed_max+1)]); + } + icount += 5*num_mu*(ple->l_unlensed_max+1); + } + + sqrt1 = &(buf_dxx[icount]); + icount += ple->l_unlensed_max+1; + sqrt2 = &(buf_dxx[icount]); + icount += ple->l_unlensed_max+1; + sqrt3 = &(buf_dxx[icount]); + icount += ple->l_unlensed_max+1; + sqrt4 = &(buf_dxx[icount]); + icount += ple->l_unlensed_max+1; + sqrt5 = &(buf_dxx[icount]); + icount += ple->l_unlensed_max+1; + + //debut = omp_get_wtime(); + class_call(lensing_d00(mu,num_mu,ple->l_unlensed_max,d00), + ple->error_message, + ple->error_message); + + class_call(lensing_d11(mu,num_mu,ple->l_unlensed_max,d11), + ple->error_message, + ple->error_message); + + class_call(lensing_d1m1(mu,num_mu,ple->l_unlensed_max,d1m1), + ple->error_message, + ple->error_message); + + class_call(lensing_d2m2(mu,num_mu,ple->l_unlensed_max,d2m2), + ple->error_message, + ple->error_message); + //fin = omp_get_wtime(); + //cpu_time = (fin-debut); + //printf("time in lensing_dxx=%4.3f s\n",cpu_time); + + + if (ple->has_te==_TRUE_) { + + class_call(lensing_d20(mu,num_mu,ple->l_unlensed_max,d20), + ple->error_message, + ple->error_message); + + class_call(lensing_d3m1(mu,num_mu,ple->l_unlensed_max,d3m1), + ple->error_message, + ple->error_message); + + class_call(lensing_d4m2(mu,num_mu,ple->l_unlensed_max,d4m2), + ple->error_message, + ple->error_message); + + } + + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + class_call(lensing_d22(mu,num_mu,ple->l_unlensed_max,d22), + ple->error_message, + ple->error_message); + + class_call(lensing_d31(mu,num_mu,ple->l_unlensed_max,d31), + ple->error_message, + ple->error_message); + + class_call(lensing_d3m3(mu,num_mu,ple->l_unlensed_max,d3m3), + ple->error_message, + ple->error_message); + + class_call(lensing_d40(mu,num_mu,ple->l_unlensed_max,d40), + ple->error_message, + ple->error_message); + + class_call(lensing_d4m4(mu,num_mu,ple->l_unlensed_max,d4m4), + ple->error_message, + ple->error_message); + } + + /** - compute \f$ Cgl(\mu)\f$, \f$ Cgl2(\mu) \f$ and sigma2(\f$\mu\f$) */ + + class_alloc(Cgl, + num_mu*sizeof(double), + ple->error_message); + + class_alloc(Cgl2, + num_mu*sizeof(double), + ple->error_message); + + class_alloc(sigma2, + (num_mu-1)*sizeof(double), /* Zero separation is omitted */ + ple->error_message); + + class_alloc(cl_unlensed, + psp->ct_size*sizeof(double), + ple->error_message); + + + /** - Locally store unlensed temperature \f$ cl_{tt}\f$ and potential \f$ cl_{pp}\f$ spectra **/ + class_alloc(cl_tt, + (ple->l_unlensed_max+1)*sizeof(double), + ple->error_message); + if (ple->has_te==_TRUE_) { + class_alloc(cl_te, + (ple->l_unlensed_max+1)*sizeof(double), + ple->error_message); + } + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + class_alloc(cl_ee, + (ple->l_unlensed_max+1)*sizeof(double), + ple->error_message); + + class_alloc(cl_bb, + (ple->l_unlensed_max+1)*sizeof(double), + ple->error_message); + } + class_alloc(cl_pp, + (ple->l_unlensed_max+1)*sizeof(double), + ple->error_message); + + class_alloc(cl_md_ic, + psp->md_size*sizeof(double *), + ple->error_message); + + class_alloc(cl_md, + psp->md_size*sizeof(double *), + ple->error_message); + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + + class_alloc(cl_md[index_md], + psp->ct_size*sizeof(double), + ple->error_message); + + if (psp->ic_size[index_md] > 1) + + class_alloc(cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size*sizeof(double), + ple->error_message); + } + + for (l=2; l<=ple->l_unlensed_max; l++) { + class_call(spectra_cl_at_l(psp,l,cl_unlensed,cl_md,cl_md_ic), + psp->error_message, + ple->error_message); + cl_tt[l] = cl_unlensed[ple->index_lt_tt]; + cl_pp[l] = cl_unlensed[ple->index_lt_pp]; + if (ple->has_te==_TRUE_) { + cl_te[l] = cl_unlensed[ple->index_lt_te]; + } + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + cl_ee[l] = cl_unlensed[ple->index_lt_ee]; + cl_bb[l] = cl_unlensed[ple->index_lt_bb]; + } + } + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + free(cl_md[index_md]); + + if (psp->ic_size[index_md] > 1) + free(cl_md_ic[index_md]); + + } + + free(cl_md_ic); + free(cl_md); + + /** - Compute sigma2\f$(\mu)\f$ and Cgl2(\f$\mu\f$) **/ + + //debut = omp_get_wtime(); +#pragma omp parallel for \ + private (index_mu,l) \ + schedule (static) + for (index_mu=0; index_mul_unlensed_max; l++) { + + Cgl[index_mu] += (2.*l+1.)*l*(l+1.)* + cl_pp[l]*d11[index_mu][l]; + + Cgl2[index_mu] += (2.*l+1.)*l*(l+1.)* + cl_pp[l]*d1m1[index_mu][l]; + + } + + Cgl[index_mu] /= 4.*_PI_; + Cgl2[index_mu] /= 4.*_PI_; + + } + + for (index_mu=0; index_mu ksi is for TT **/ + if (ple->has_tt==_TRUE_) { + + class_calloc(ksi, + (num_mu-1), + sizeof(double), + ple->error_message); + } + + /** - --> ksiX is for TE **/ + if (ple->has_te==_TRUE_) { + + class_calloc(ksiX, + (num_mu-1), + sizeof(double), + ple->error_message); + } + + /** - --> ksip, ksim for EE, BB **/ + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + class_calloc(ksip, + (num_mu-1), + sizeof(double), + ple->error_message); + + class_calloc(ksim, + (num_mu-1), + sizeof(double), + ple->error_message); + } + + for (l=2;l<=ple->l_unlensed_max;l++) { + + ll = (double)l; + sqrt1[l]=sqrt((ll+2)*(ll+1)*ll*(ll-1)); + sqrt2[l]=sqrt((ll+2)*(ll-1)); + sqrt3[l]=sqrt((ll+3)*(ll-2)); + sqrt4[l]=sqrt((ll+4)*(ll+3)*(ll-2.)*(ll-3)); + sqrt5[l]=sqrt(ll*(ll+1)); + } + + + //debut = omp_get_wtime(); +#pragma omp parallel for \ + private (index_mu,l,ll,res,resX,resp,resm,lens,lensp,lensm, \ + fac,fac1,X_000,X_p000,X_220,X_022,X_p022,X_121,X_132,X_242) \ + schedule (static) + + for (index_mu=0;index_mul_unlensed_max;l++) { + + ll = (double)l; + + fac = ll*(ll+1)/4.; + fac1 = (2*ll+1)/(4.*_PI_); + + /* In the following we will keep terms of the form (sigma2)^k*(Cgl2)^m + with k+m <= 2 */ + + X_000 = exp(-fac*sigma2[index_mu]); + X_p000 = -fac*X_000; + /* X_220 = 0.25*sqrt1[l] * exp(-(fac-0.5)*sigma2[index_mu]); */ + X_220 = 0.25*sqrt1[l] * X_000; /* Order 0 */ + /* next 5 lines useless, but avoid compiler warning 'may be used uninitialized' */ + X_242=0.; + X_132=0.; + X_121=0.; + X_p022=0.; + X_022=0.; + + if (ple->has_te==_TRUE_ || ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + /* X_022 = exp(-(fac-1.)*sigma2[index_mu]); */ + X_022 = X_000 * (1+sigma2[index_mu]*(1+0.5*sigma2[index_mu])); /* Order 2 */ + X_p022 = (fac-1.)*X_022; + /* X_242 = 0.25*sqrt4[l] * exp(-(fac-5./2.)*sigma2[index_mu]); */ + X_242 = 0.25*sqrt4[l] * X_000; /* Order 0 */ + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + /* X_121 = - 0.5*sqrt2[l] * exp(-(fac-2./3.)*sigma2[index_mu]); + X_132 = - 0.5*sqrt3[l] * exp(-(fac-5./3.)*sigma2[index_mu]); */ + X_121 = -0.5*sqrt2[l] * X_000 * (1+2./3.*sigma2[index_mu]); /* Order 1 */ + X_132 = -0.5*sqrt3[l] * X_000 * (1+5./3.*sigma2[index_mu]); /* Order 1 */ + } + } + + + if (ple->has_tt==_TRUE_) { + + res = fac1*cl_tt[l]; + + lens = (X_000*X_000*d00[index_mu][l] + + X_p000*X_p000*d1m1[index_mu][l] + *Cgl2[index_mu]*8./(ll*(ll+1)) + + (X_p000*X_p000*d00[index_mu][l] + + X_220*X_220*d2m2[index_mu][l]) + *Cgl2[index_mu]*Cgl2[index_mu]); + if (ppr->accurate_lensing == _FALSE_) { + /* Remove unlensed correlation function */ + lens -= d00[index_mu][l]; + } + res *= lens; + ksi[index_mu] += res; + } + + if (ple->has_te==_TRUE_) { + + resX = fac1*cl_te[l]; + + + lens = ( X_022*X_000*d20[index_mu][l] + + Cgl2[index_mu]*2.*X_p000/sqrt5[l] * + (X_121*d11[index_mu][l] + X_132*d3m1[index_mu][l]) + + 0.5 * Cgl2[index_mu] * Cgl2[index_mu] * + ( ( 2.*X_p022*X_p000+X_220*X_220 ) * + d20[index_mu][l] + X_220*X_242*d4m2[index_mu][l] ) ); + if (ppr->accurate_lensing == _FALSE_) { + lens -= d20[index_mu][l]; + } + resX *= lens; + ksiX[index_mu] += resX; + } + + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + resp = fac1*(cl_ee[l]+cl_bb[l]); + resm = fac1*(cl_ee[l]-cl_bb[l]); + + lensp = ( X_022*X_022*d22[index_mu][l] + + 2.*Cgl2[index_mu]*X_132*X_121*d31[index_mu][l] + + Cgl2[index_mu]*Cgl2[index_mu] * + ( X_p022*X_p022*d22[index_mu][l] + + X_242*X_220*d40[index_mu][l] ) ); + + lensm = ( X_022*X_022*d2m2[index_mu][l] + + Cgl2[index_mu] * + ( X_121*X_121*d1m1[index_mu][l] + + X_132*X_132*d3m3[index_mu][l] ) + + 0.5 * Cgl2[index_mu] * Cgl2[index_mu] * + ( 2.*X_p022*X_p022*d2m2[index_mu][l] + + X_220*X_220*d00[index_mu][l] + + X_242*X_242*d4m4[index_mu][l] ) ); + if (ppr->accurate_lensing == _FALSE_) { + lensp -= d22[index_mu][l]; + lensm -= d2m2[index_mu][l]; + } + resp *= lensp; + resm *= lensm; + ksip[index_mu] += resp; + ksim[index_mu] += resm; + } + } + } + //fin = omp_get_wtime(); + //cpu_time = (fin-debut); + //printf("time in ksi=%4.3f s\n",cpu_time); + + + /** - compute lensed \f$ C_l\f$'s by integration */ + //debut = omp_get_wtime(); + if (ple->has_tt==_TRUE_) { + class_call(lensing_lensed_cl_tt(ksi,d00,w8,num_mu-1,ple), + ple->error_message, + ple->error_message); + if (ppr->accurate_lensing == _FALSE_) { + class_call(lensing_addback_cl_tt(ple,cl_tt), + ple->error_message, + ple->error_message); + } + } + + if (ple->has_te==_TRUE_) { + class_call(lensing_lensed_cl_te(ksiX,d20,w8,num_mu-1,ple), + ple->error_message, + ple->error_message); + if (ppr->accurate_lensing == _FALSE_) { + class_call(lensing_addback_cl_te(ple,cl_te), + ple->error_message, + ple->error_message); + } + } + + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + + class_call(lensing_lensed_cl_ee_bb(ksip,ksim,d22,d2m2,w8,num_mu-1,ple), + ple->error_message, + ple->error_message); + if (ppr->accurate_lensing == _FALSE_) { + class_call(lensing_addback_cl_ee_bb(ple,cl_ee,cl_bb), + ple->error_message, + ple->error_message); + } + } + //fin=omp_get_wtime(); + //cpu_time = (fin-debut); + //printf("time in final lensing computation=%4.3f s\n",cpu_time); + + /** - spline computed \f$ C_l\f$'s in view of interpolation */ + + class_call(array_spline_table_lines(ple->l, + ple->l_size, + ple->cl_lens, + ple->lt_size, + ple->ddcl_lens, + _SPLINE_EST_DERIV_, + ple->error_message), + ple->error_message, + ple->error_message); + + /** - Free lots of stuff **/ + free(buf_dxx); + + free(d00); + free(d11); + free(d1m1); + free(d2m2); + if (ple->has_te==_TRUE_) { + free(d20); + free(d3m1); + free(d4m2); + } + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + free(d22); + free(d31); + free(d3m3); + free(d40); + free(d4m4); + } + + if (ple->has_tt==_TRUE_) + free(ksi); + if (ple->has_te==_TRUE_) + free(ksiX); + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + free(ksip); + free(ksim); + } + free(Cgl); + free(Cgl2); + free(sigma2); + + free(mu); + free(w8); + + free(cl_unlensed); + free(cl_tt); + if (ple->has_te==_TRUE_) + free(cl_te); + if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { + free(cl_ee); + free(cl_bb); + } + free(cl_pp); + /** - Exit **/ + + return _SUCCESS_; + +} + +/** + * This routine frees all the memory space allocated by lensing_init(). + * + * To be called at the end of each run, only when no further calls to + * lensing_cl_at_l() are needed. + * + * @param ple Input: pointer to lensing structure (which fields must be freed) + * @return the error status + */ + +int lensing_free( + struct lensing * ple + ) { + + if (ple->has_lensed_cls == _TRUE_) { + + free(ple->l); + free(ple->cl_lens); + free(ple->ddcl_lens); + free(ple->l_max_lt); + + } + + return _SUCCESS_; + +} + +/** + * This routine defines indices and allocates tables in the lensing structure + * + * @param ppr Input: pointer to precision structure + * @param psp Input: pointer to spectra structure + * @param ple Input/output: pointer to lensing structure + * @return the error status + */ + +int lensing_indices( + struct precision * ppr, + struct spectra * psp, + struct lensing * ple + ){ + + int index_l; + + double ** cl_md_ic; /* array with argument + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct] */ + + double ** cl_md; /* array with argument + cl_md[index_md][index_ct] */ + + int index_md; + int index_lt; + + /* indices of all Cl types (lensed and unlensed) */ + + if (psp->has_tt == _TRUE_) { + ple->has_tt = _TRUE_; + ple->index_lt_tt=psp->index_ct_tt; + } + else { + ple->has_tt = _FALSE_; + } + + if (psp->has_ee == _TRUE_) { + ple->has_ee = _TRUE_; + ple->index_lt_ee=psp->index_ct_ee; + } + else { + ple->has_ee = _FALSE_; + } + + if (psp->has_te == _TRUE_) { + ple->has_te = _TRUE_; + ple->index_lt_te=psp->index_ct_te; + } + else { + ple->has_te = _FALSE_; + } + + if (psp->has_bb == _TRUE_) { + ple->has_bb = _TRUE_; + ple->index_lt_bb=psp->index_ct_bb; + } + else { + ple->has_bb = _FALSE_; + } + + if (psp->has_pp == _TRUE_) { + ple->has_pp = _TRUE_; + ple->index_lt_pp=psp->index_ct_pp; + } + else { + ple->has_pp = _FALSE_; + } + + if (psp->has_tp == _TRUE_) { + ple->has_tp = _TRUE_; + ple->index_lt_tp=psp->index_ct_tp; + } + else { + ple->has_tp = _FALSE_; + } + + if (psp->has_dd == _TRUE_) { + ple->has_dd = _TRUE_; + ple->index_lt_dd=psp->index_ct_dd; + } + else { + ple->has_dd = _FALSE_; + } + + if (psp->has_td == _TRUE_) { + ple->has_td = _TRUE_; + ple->index_lt_td=psp->index_ct_td; + } + else { + ple->has_td = _FALSE_; + } + + if (psp->has_ll == _TRUE_) { + ple->has_ll = _TRUE_; + ple->index_lt_ll=psp->index_ct_ll; + } + else { + ple->has_ll = _FALSE_; + } + + if (psp->has_tl == _TRUE_) { + ple->has_tl = _TRUE_; + ple->index_lt_tl=psp->index_ct_tl; + } + else { + ple->has_tl = _FALSE_; + } + + ple->lt_size = psp->ct_size; + + /* number of multipoles */ + + ple->l_unlensed_max = psp->l_max_tot; + + ple->l_lensed_max = ple->l_unlensed_max - ppr->delta_l_max; + + for (index_l=0; (index_l < psp->l_size_max) && (psp->l[index_l] <= ple->l_lensed_max); index_l++); + + if (index_l < psp->l_size_max) index_l++; /* one more point in order to be able to interpolate till ple->l_lensed_max */ + + ple->l_size = index_l+1; + + class_alloc(ple->l,ple->l_size*sizeof(double),ple->error_message); + + for (index_l=0; index_l < ple->l_size; index_l++) { + + ple->l[index_l] = psp->l[index_l]; + + } + + /* allocate table where results will be stored */ + + class_alloc(ple->cl_lens, + ple->l_size*ple->lt_size*sizeof(double), + ple->error_message); + + class_alloc(ple->ddcl_lens, + ple->l_size*ple->lt_size*sizeof(double), + ple->error_message); + + /* fill with unlensed cls */ + + class_alloc(cl_md_ic, + psp->md_size*sizeof(double *), + ple->error_message); + + class_alloc(cl_md, + psp->md_size*sizeof(double *), + ple->error_message); + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + + class_alloc(cl_md[index_md], + psp->ct_size*sizeof(double), + ple->error_message); + + if (psp->ic_size[index_md] > 1) + + class_alloc(cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size*sizeof(double), + ple->error_message); + } + + for (index_l=0; index_ll_size; index_l++) { + + class_call(spectra_cl_at_l(psp,ple->l[index_l],&(ple->cl_lens[index_l*ple->lt_size]),cl_md,cl_md_ic), + psp->error_message, + ple->error_message); + + } + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + free(cl_md[index_md]); + + if (psp->ic_size[index_md] > 1) + free(cl_md_ic[index_md]); + + } + + free(cl_md_ic); + free(cl_md); + + /* we want to output Cl_lensed up to the same l_max as Cl_unlensed + (even if a number delta_l_max of extra values of l have been used + internally for more accurate results). Notable exception to the + above rule: ClBB_lensed(scalars) must be outputed at least up to the same l_max as + ClEE_unlensed(scalars) (since ClBB_unlensed is null for scalars) + */ + + class_alloc(ple->l_max_lt,ple->lt_size*sizeof(double),ple->error_message); + for (index_lt = 0; index_lt < ple->lt_size; index_lt++) { + ple->l_max_lt[index_lt]=0.; + for (index_md = 0; index_md < psp->md_size; index_md++) { + ple->l_max_lt[index_lt]=MAX(ple->l_max_lt[index_lt],psp->l_max_ct[index_md][index_lt]); + + if ((ple->has_bb == _TRUE_) && (ple->has_ee == _TRUE_) && (index_lt == ple->index_lt_bb)) { + ple->l_max_lt[index_lt]=MAX(ple->l_max_lt[index_lt],psp->l_max_ct[index_md][ple->index_lt_ee]); + } + + } + } + + return _SUCCESS_; + +} + +/** + * This routine computes the lensed power spectra by Gaussian quadrature + * + * @param ksi Input: Lensed correlation function (ksi[index_mu]) + * @param d00 Input: Legendre polynomials (\f$ d^l_{00}\f$[l][index_mu]) + * @param w8 Input: Legendre quadrature weights (w8[index_mu]) + * @param nmu Input: Number of quadrature points (0<=index_mu<=nmu) + * @param ple Input/output: Pointer to the lensing structure + * @return the error status + */ + + +int lensing_lensed_cl_tt( + double *ksi, + double **d00, + double *w8, + int nmu, + struct lensing * ple + ) { + + double cle; + int imu; + int index_l; + + /** Integration by Gauss-Legendre quadrature. **/ +#pragma omp parallel for \ + private (imu,index_l,cle) \ + schedule (static) + + for(index_l=0; index_ll_size; index_l++){ + cle=0; + for (imu=0;imul[index_l]]*w8[imu]; /* loop could be optimized */ + } + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_tt]=cle*2.0*_PI_; + } + + return _SUCCESS_; +} + +/** + * This routine adds back the unlensed \f$ cl_{tt}\f$ power spectrum + * Used in case of fast (and BB inaccurate) integration of + * correlation functions. + * + * @param ple Input/output: Pointer to the lensing structure + * @param cl_tt Input: Array of unlensed power spectrum + * @return the error status + */ + +int lensing_addback_cl_tt( + struct lensing * ple, + double *cl_tt) { + int index_l, l; + + for (index_l=0; index_ll_size; index_l++) { + l = (int)ple->l[index_l]; + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_tt] += cl_tt[l]; + } + return _SUCCESS_; + +} + +/** + * This routine computes the lensed power spectra by Gaussian quadrature + * + * @param ksiX Input: Lensed correlation function (ksiX[index_mu]) + * @param d20 Input: Wigner d-function (\f$ d^l_{20}\f$[l][index_mu]) + * @param w8 Input: Legendre quadrature weights (w8[index_mu]) + * @param nmu Input: Number of quadrature points (0<=index_mu<=nmu) + * @param ple Input/output: Pointer to the lensing structure + * @return the error status + */ + + +int lensing_lensed_cl_te( + double *ksiX, + double **d20, + double *w8, + int nmu, + struct lensing * ple + ) { + + double clte; + int imu; + int index_l; + + /** Integration by Gauss-Legendre quadrature. **/ +#pragma omp parallel for \ + private (imu,index_l,clte) \ + schedule (static) + + for(index_l=0; index_l < ple->l_size; index_l++){ + clte=0; + for (imu=0;imul[index_l]]*w8[imu]; /* loop could be optimized */ + } + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_te]=clte*2.0*_PI_; + } + + return _SUCCESS_; +} + +/** + * This routine adds back the unlensed \f$ cl_{te}\f$ power spectrum + * Used in case of fast (and BB inaccurate) integration of + * correlation functions. + * + * @param ple Input/output: Pointer to the lensing structure + * @param cl_te Input: Array of unlensed power spectrum + * @return the error status + */ + +int lensing_addback_cl_te( + struct lensing * ple, + double *cl_te) { + int index_l, l; + + for (index_l=0; index_ll_size; index_l++) { + l = (int)ple->l[index_l]; + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_te] += cl_te[l]; + } + return _SUCCESS_; + +} + +/** + * This routine computes the lensed power spectra by Gaussian quadrature + * + * @param ksip Input: Lensed correlation function (ksi+[index_mu]) + * @param ksim Input: Lensed correlation function (ksi-[index_mu]) + * @param d22 Input: Wigner d-function (\f$ d^l_{22}\f$[l][index_mu]) + * @param d2m2 Input: Wigner d-function (\f$ d^l_{2-2}\f$[l][index_mu]) + * @param w8 Input: Legendre quadrature weights (w8[index_mu]) + * @param nmu Input: Number of quadrature points (0<=index_mu<=nmu) + * @param ple Input/output: Pointer to the lensing structure + * @return the error status + */ + + +int lensing_lensed_cl_ee_bb( + double *ksip, + double *ksim, + double **d22, + double **d2m2, + double *w8, + int nmu, + struct lensing * ple + ) { + + double clp, clm; + int imu; + int index_l; + + /** Integration by Gauss-Legendre quadrature. **/ +#pragma omp parallel for \ + private (imu,index_l,clp,clm) \ + schedule (static) + + for(index_l=0; index_l < ple->l_size; index_l++){ + clp=0; clm=0; + for (imu=0;imul[index_l]]*w8[imu]; /* loop could be optimized */ + clm += ksim[imu]*d2m2[imu][(int)ple->l[index_l]]*w8[imu]; /* loop could be optimized */ + } + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_ee]=(clp+clm)*_PI_; + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_bb]=(clp-clm)*_PI_; + } + + return _SUCCESS_; +} + +/** + * This routine adds back the unlensed \f$ cl_{ee}\f$, \f$ cl_{bb}\f$ power spectra + * Used in case of fast (and BB inaccurate) integration of + * correlation functions. + * + * @param ple Input/output: Pointer to the lensing structure + * @param cl_ee Input: Array of unlensed power spectrum + * @param cl_bb Input: Array of unlensed power spectrum + * @return the error status + */ + +int lensing_addback_cl_ee_bb( + struct lensing * ple, + double * cl_ee, + double * cl_bb) { + + int index_l, l; + + for (index_l=0; index_ll_size; index_l++) { + l = (int)ple->l[index_l]; + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_ee] += cl_ee[l]; + ple->cl_lens[index_l*ple->lt_size+ple->index_lt_bb] += cl_bb[l]; + } + return _SUCCESS_; + +} + +/** + * This routine computes the d00 term + * + * @param mu Input: Vector of cos(beta) values + * @param num_mu Input: Number of cos(beta) values + * @param lmax Input: maximum multipole + * @param d00 Input/output: Result is stored here + * + * Wigner d-functions, computed by recurrence + * actual recurrence on \f$ \sqrt{(2l+1)/2} d^l_{mm'} \f$ for stability + * Formulae from Kostelec & Rockmore 2003 + **/ + +int lensing_d00( + double * mu, + int num_mu, + int lmax, + double ** d00 + ) { + double ll, dlm1, dl, dlp1; + int index_mu, l; + double *fac1, *fac2, *fac3; + ErrorMsg erreur; + + class_alloc(fac1,lmax*sizeof(double),erreur); + class_alloc(fac2,lmax*sizeof(double),erreur); + class_alloc(fac3,lmax*sizeof(double),erreur); + for (l=1; lerror_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *k_nl = pnl->k_nl[0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnl->k_nl, + 1, + pnl->tau_size, + tau, + k_nl, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + return _SUCCESS_; +} + +int nonlinear_init( + struct precision *ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl + ) { + + int index_ncdm; + int index_k; + int index_tau; + double *pk_l; + double *pk_nl; + double *lnk_l; + double *lnpk_l; + double *ddlnpk_l; + short print_warning=_FALSE_; + double * pvecback; + int last_index; + double a,z; + + /** Summary + * + * (a) First deal with the case where non non-linear corrections requested */ + + if (pnl->method == nl_none) { + if (pnl->nonlinear_verbose > 0) + printf("No non-linear spectra requested. Nonlinear module skipped.\n"); + } + + /** (b) Compute for HALOFIT non-linear spectrum */ + + else if (pnl->method == nl_halofit) { + if (pnl->nonlinear_verbose > 0) + printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); + + if (pba->has_ncdm) { + for (index_ncdm=0;index_ncdm < pba->N_ncdm; index_ncdm++){ + if (pba->m_ncdm_in_eV[index_ncdm] > _M_EV_TOO_BIG_FOR_HALOFIT_) + fprintf(stdout,"Warning: Halofit is proved to work for CDM, and also with a small HDM component thanks to Bird et al.'s update. But it sounds like you are running with a WDM component of mass %f eV, which makes the use of Halofit suspicious.\n",pba->m_ncdm_in_eV[index_ncdm]); + } + } + + /** - copy list of (k,tau) from perturbation module */ + + pnl->k_size = ppt->k_size[ppt->index_md_scalars]; + class_alloc(pnl->k,pnl->k_size*sizeof(double),pnl->error_message); + for (index_k=0; index_kk_size; index_k++) + pnl->k[index_k] = ppt->k[ppt->index_md_scalars][index_k]; + + pnl->tau_size = ppt->tau_size; + class_alloc(pnl->tau,pnl->tau_size*sizeof(double),pnl->error_message); + for (index_tau=0; index_tautau_size; index_tau++) + pnl->tau[index_tau] = ppt->tau_sampling[index_tau]; + + class_alloc(pnl->nl_corr_density,pnl->tau_size*pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(pnl->k_nl,pnl->tau_size*sizeof(double),pnl->error_message); + + class_alloc(pk_l,pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(pk_nl,pnl->k_size*sizeof(double),pnl->error_message); + + class_alloc(lnk_l,pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(lnpk_l,pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(ddlnpk_l,pnl->k_size*sizeof(double),pnl->error_message); + + /** - loop over time */ + + for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + + /* get P_L(k) at this time */ + class_call(nonlinear_pk_l(ppt,ppm,pnl,index_tau,pk_l,lnk_l,lnpk_l,ddlnpk_l), + pnl->error_message, + pnl->error_message); + + /* + for (index_k=0; index_kk_size; index_k++) { + fprintf(stdout,"%e %e\n",pnl->k[index_k],pk_l[index_k]); + } + */ + + //class_stop(pnl->error_message,"stop here"); + + /* get P_NL(k) at this time */ + if (nonlinear_halofit(ppr, + pba, + ppm, + pnl, + pnl->tau[index_tau], + pk_l, + pk_nl, + lnk_l, + lnpk_l, + ddlnpk_l, + &(pnl->k_nl[index_tau])) == _SUCCESS_) { + + /* + for (index_k=0; index_kk_size; index_k++) { + fprintf(stdout,"%e %e %e\n",pnl->k[index_k],pk_l[index_k],pk_nl[index_k]); + } + fprintf(stdout,"\n\n"); + */ + + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = sqrt(pk_nl[index_k]/pk_l[index_k]); + } + } + else { + /* when Halofit failed, use 1 as the non-linear correction, and print a warning */ + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = 1.; + } + if ((pnl->nonlinear_verbose > 0) && (print_warning == _FALSE_)) { + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + class_call(background_at_tau(pba,pnl->tau[index_tau],pba->short_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + a = pvecback[pba->index_bg_a]; + z = pba->a_today/a-1.; + fprintf(stdout, + " -> [WARNING:] Halofit non-linear corrections could not be computed at redshift z=%5.2f and higher.\n This is probably because k_max is too small for Halofit to be able to compute the scale k_NL at this redshift.\n If non-linear corrections at such high redshift really matter for you,\n just try to increase P_k_max_h/Mpc or P_k_max_1/Mpc until reaching desired z.\n", + z); + free(pvecback); + } + print_warning = _TRUE_; + } + } + + /* + for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + for (index_k=0; index_kk_size; index_k++) { + fprintf(stdout,"%e %e\n",pnl->k[index_k],pnl->nl_corr_density[index_tau * pnl->k_size + index_k]); + } + fprintf(stdout,"\n\n"); + } + */ + + free(pk_l); + free(pk_nl); + + free(lnk_l); + free(lnpk_l); + free(ddlnpk_l); + } + + else { + class_stop(pnl->error_message, + "Your non-linear method variable is set to %d, out of the range defined in nonlinear.h",pnl->method); + } + + return _SUCCESS_; +} + +int nonlinear_free( + struct nonlinear *pnl + ) { + + if (pnl->method > nl_none) { + + if (pnl->method == nl_halofit) { + /* free here */ + free(pnl->k); + free(pnl->tau); + free(pnl->nl_corr_density); + free(pnl->k_nl); + } + } + + return _SUCCESS_; + +} + +int nonlinear_pk_l( + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_tau, + double *pk_l, + double *lnk, + double *lnpk, + double *ddlnpk) { + + int index_md; + int index_k; + int index_ic1,index_ic2,index_ic1_ic2; + double * primordial_pk; + double source_ic1,source_ic2; + + index_md = ppt->index_md_scalars; + + class_alloc(primordial_pk,ppm->ic_ic_size[index_md]*sizeof(double),pnl->error_message); + + for (index_k=0; index_kk_size; index_k++) { + + class_call(primordial_spectrum_at_k(ppm, + index_md, + linear, + pnl->k[index_k], + primordial_pk), + ppm->error_message, + pnl->error_message); + + pk_l[index_k] = 0; + + /* part diagonal in initial conditions */ + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + + source_ic1 = ppt->sources[index_md] + [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [index_tau * ppt->k_size[index_md] + index_k]; + + pk_l[index_k] += 2.*_PI_*_PI_/pow(pnl->k[index_k],3) + *source_ic1*source_ic1 + *primordial_pk[index_ic1_ic2]; + } + + /* part non-diagonal in initial conditions */ + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + source_ic1 = ppt->sources[index_md] + [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [index_tau * ppt->k_size[index_md] + index_k]; + + source_ic2 = ppt->sources[index_md] + [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [index_tau * ppt->k_size[index_md] + index_k]; + + pk_l[index_k] += 2.*2.*_PI_*_PI_/pow(pnl->k[index_k],3) + *source_ic1*source_ic2 + *primordial_pk[index_ic1_ic2]; // extra 2 factor (to include the symmetric term ic2,ic1) + + } + } + } + + lnk[index_k] = log(pnl->k[index_k]); + lnpk[index_k] = log(pk_l[index_k]); + } + + class_call(array_spline_table_columns(lnk, + pnl->k_size, + lnpk, + 1, + ddlnpk, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + free(primordial_pk); + + return _SUCCESS_; + +} + +int nonlinear_halofit( + struct precision *ppr, + struct background *pba, + struct primordial *ppm, + struct nonlinear *pnl, + double tau, + double *pk_l, + double *pk_nl, + double *lnk_l, + double *lnpk_l, + double *ddlnpk_l, + double *k_nl + ) { + + double Omega_m,Omega_v,fnu,Omega0_m, w0; + + /** Determine non linear ratios (from pk) **/ + + int index_k; + double pk_lin,pk_quasi,pk_halo,rk; + double sigma,rknl,rneff,rncur,d1,d2; + double diff,xlogr1,xlogr2,rmid; + + double gam,a,b,c,xmu,xnu,alpha,beta,f1,f2,f3; + double pk_linaa; + double y; + double f1a,f2a,f3a,f1b,f2b,f3b,frac; + + double * pvecback; + + int last_index; + int counter; + double sum1,sum2,sum3; + double anorm; + + double *integrand_array; + int integrand_size; + int index_ia_k; + int index_ia_pk; + int index_ia_sum1; + int index_ia_ddsum1; + int index_ia_sum2; + int index_ia_ddsum2; + int index_ia_sum3; + int index_ia_ddsum3; + int ia_size; + int index_ia; + + double k_integrand; + double lnpk_integrand; + + double x2,R; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + Omega0_m = (pba->Omega0_cdm + pba->Omega0_b + pba->Omega0_ncdm_tot + pba->Omega0_dcdm); + w0 = pba->w0_fld; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + anorm = 1./(2*pow(_PI_,2)); + + /* Until the 17.02.2015 the values of k used for integrating sigma(R) quantities needed by Halofit where the same as in the perturbation module. + Since then, we sample these integrals on more values, in order to get more precise integrals (thanks Matteo Zennaro for noticing the need for this). + + We create a temporary integrand_array which columns will be: + - k in 1/Mpc + - just linear P(k) in Mpc**3 + - 1/(2(pi**2)) P(k) k**2 exp(-(kR)**2) + - second derivative of previous line with spline + - 1/(2(pi**2)) P(k) k**2 2 (kR) exp(-(kR)**2) + - second derivative of previous line with spline + - 1/(2(pi**2)) P(k) k**2 4 (kR)(1-kR) exp(-(kR)**2) + - second derivative of previous line with spline + */ + + index_ia=0; + class_define_index(index_ia_k, _TRUE_,index_ia,1); + class_define_index(index_ia_pk, _TRUE_,index_ia,1); + class_define_index(index_ia_sum1, _TRUE_,index_ia,1); + class_define_index(index_ia_ddsum1,_TRUE_,index_ia,1); + class_define_index(index_ia_sum2, _TRUE_,index_ia,1); + class_define_index(index_ia_ddsum2,_TRUE_,index_ia,1); + class_define_index(index_ia_sum3, _TRUE_,index_ia,1); + class_define_index(index_ia_ddsum3,_TRUE_,index_ia,1); + ia_size = index_ia; + + integrand_size=(int)(log(pnl->k[pnl->k_size-1]/pnl->k[0])/log(10.)*ppr->halofit_k_per_decade)+1; + + class_alloc(integrand_array,integrand_size*ia_size*sizeof(double),pnl->error_message); + + /* we fill integrand_array with values of k and P(k) using interpolation */ + + last_index=0; + + for (index_k=0; index_k < integrand_size; index_k++) { + + k_integrand=pnl->k[0]*pow(10.,index_k/ppr->halofit_k_per_decade); + + class_call(array_interpolate_spline(lnk_l, + pnl->k_size, + lnpk_l, + ddlnpk_l, + 1, + log(k_integrand), + &last_index, + &lnpk_integrand, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + integrand_array[index_k*ia_size + index_ia_k] = k_integrand; + integrand_array[index_k*ia_size + index_ia_pk] = exp(lnpk_integrand); + + } + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m]; + Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + + /* minimum value of R such that the integral giving sigma_R is converged */ + R=sqrt(-log(ppr->halofit_sigma_precision))/integrand_array[(integrand_size-1)*ia_size + index_ia_k]; + + /* corresponding value of sigma_R */ + sum1=0.; + for (index_k=0; index_k < integrand_size; index_k++) { + x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); + integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] + *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); + } + /* fill in second derivatives */ + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + /* integrate */ + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + &sum1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + sigma = sqrt(sum1); + + class_test_except(sigma < 1., + pnl->error_message, + free(pvecback);free(integrand_array), + "Your k_max=%g 1/Mpc is too small for Halofit to find the non-linearity scale z_nl at z=%g. Increase input parameter P_k_max_h/Mpc or P_k_max_1/Mpc", + pnl->k[pnl->k_size-1], + pba->a_today/pvecback[pba->index_bg_a]-1.); + + xlogr1 = log(R)/log(10.); + + /* maximum value of R in the bisection algorithm leading to the determination of R_nl */ + R=1./ppr->halofit_min_k_nonlinear; + + /* corresponding value of sigma_R */ + sum1=0.; + for (index_k=0; index_k < integrand_size; index_k++) { + x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); + integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] + *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); + } + /* fill in second derivatives */ + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + /* integrate */ + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + &sum1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + sigma = sqrt(sum1); + + class_test_except(sigma > 1., + pnl->error_message, + free(pvecback);free(integrand_array), + "Your input value for the precision parameter halofit_min_k_nonlinear=%e is too large, the non-linear wavenumber k_nl must be smaller than that", + ppr->halofit_min_k_nonlinear); + + xlogr2 = log(R)/log(10.); + + counter = 0; + do { + rmid = pow(10,(xlogr2+xlogr1)/2.0); + counter ++; + + /* in original halofit, this is the function wint() */ + sum1=0.; + sum2=0.; + sum3=0.; + + for (index_k=0; index_k < integrand_size; index_k++) { + x2 = pow(integrand_array[index_k*ia_size + index_ia_k],2)*rmid*rmid; + integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] + *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); + integrand_array[index_k*ia_size + index_ia_sum2] = integrand_array[index_k*ia_size + index_ia_pk] + *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*2.*x2*exp(-x2); + integrand_array[index_k*ia_size + index_ia_sum3] = integrand_array[index_k*ia_size + index_ia_pk] + *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*4.*x2*(1.-x2)*exp(-x2); + } + + /* fill in second derivatives */ + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum2, + index_ia_ddsum2, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum3, + index_ia_ddsum3, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /* integrate */ + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum1, + index_ia_ddsum1, + &sum1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum2, + index_ia_ddsum2, + &sum2, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum3, + index_ia_ddsum3, + &sum3, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + d1 = -sum2/sum1; + d2 = -sum2*sum2/sum1/sum1 - sum3/sum1; + /* in original halofit, this is the end of the function wint() */ + + diff = sigma - 1.0; + + if (diff>0.001){ + xlogr1=log10(rmid); + } + else if (diff < -0.001) { + xlogr2 = log10(rmid); + } + + class_test_except(counter > _MAX_IT_, + pnl->error_message, + free(pvecback);free(integrand_array), + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > 0.001); + + rknl = 1./rmid; + rneff = -3.-d1; + rncur = -d2; + + *k_nl = rknl; + + //fprintf(stderr,"Here\n"); + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + rk = pnl->k[index_k]; + + if (rk > ppr->halofit_min_k_nonlinear) { + + pk_lin = pk_l[index_k]*pow(pnl->k[index_k],3)*anorm; + + /* in original halofit, this is the beginning of the function halofit() */ + + /*SPB11: Standard halofit underestimates the power on the smallest + * scales by a factor of two. Add an extra correction from the + * simulations in Bird, Viel,Haehnelt 2011 which partially accounts for + * this.*/ + /*SPB14: This version of halofit is an updated version of the fit to the massive neutrinos + * based on the results of Takahashi 2012, (arXiv:1208.2701). + */ + gam=0.1971-0.0843*rneff+0.8460*rncur; + a=1.5222+2.8553*rneff+2.3706*rneff*rneff+0.9903*rneff*rneff*rneff+ 0.2250*rneff*rneff*rneff*rneff-0.6038*rncur+0.1749*Omega_v*(1.+w0); + a=pow(10,a); + b=pow(10, (-0.5642+0.5864*rneff+0.5716*rneff*rneff-1.5474*rncur+0.2279*Omega_v*(1.+w0))); + c=pow(10, 0.3698+2.0404*rneff+0.8161*rneff*rneff+0.5869*rncur); + xmu=0.; + xnu=pow(10,5.2105+3.6902*rneff); + alpha=fabs(6.0835+1.3373*rneff-0.1959*rneff*rneff-5.5274*rncur); + beta=2.0379-0.7354*rneff+0.3157*pow(rneff,2)+1.2490*pow(rneff,3)+0.3980*pow(rneff,4)-0.1682*rncur + fnu*(1.081 + 0.395*pow(rneff,2)); + + if(fabs(1-Omega_m)>0.01) { /*then omega evolution */ + f1a=pow(Omega_m,(-0.0732)); + f2a=pow(Omega_m,(-0.1423)); + f3a=pow(Omega_m,(0.0725)); + f1b=pow(Omega_m,(-0.0307)); + f2b=pow(Omega_m,(-0.0585)); + f3b=pow(Omega_m,(0.0743)); + frac=Omega_v/(1.-Omega_m); + f1=frac*f1b + (1-frac)*f1a; + f2=frac*f2b + (1-frac)*f2a; + f3=frac*f3b + (1-frac)*f3a; + } + else { + f1=1.; + f2=1.; + f3=1.; + } + + y=(rk/rknl); + pk_halo = a*pow(y,f1*3.)/(1.+b*pow(y,f2)+pow(f3*c*y,3.-gam)); + pk_halo=pk_halo/(1+xmu*pow(y,-1)+xnu*pow(y,-2))*(1+fnu*(0.977-18.015*(Omega0_m-0.3))); + // rk is in 1/Mpc, 47.48and 1.5 in Mpc**-2, so we need an h**2 here (Credits Antonio J. Cuesta) + pk_linaa=pk_lin*(1+fnu*47.48*pow(rk/pba->h,2)/(1+1.5*pow(rk/pba->h,2))); + pk_quasi=pk_lin*pow((1+pk_linaa),beta)/(1+pk_linaa*alpha)*exp(-y/4.0-pow(y,2)/8.0); + + pk_nl[index_k] = (pk_halo+pk_quasi)/pow(pnl->k[index_k],3)/anorm; + + /* in original halofit, this is the end of the function halofit() */ + } + else { + pk_nl[index_k] = pk_l[index_k]; + } + } + + free(pvecback); + free(integrand_array); + return _SUCCESS_; +} diff --git a/class_old/source/output.c b/class_old/source/output.c new file mode 100644 index 00000000..779c0bde --- /dev/null +++ b/class_old/source/output.c @@ -0,0 +1,1674 @@ +/** @file output.c Documented output module + * + * Julien Lesgourgues, 26.08.2010 + * + * This module writes the output in files. + * + * The following functions can be called from other modules or from the main: + * + * -# output_init() (must be called after spectra_init()) + * -# output_total_cl_at_l() (can be called even before output_init()) + * + * No memory needs to be deallocated after that, + * hence there is no output_free() routine like in other modules. + */ + +#include "output.h" + +int output_total_cl_at_l( + struct spectra * psp, + struct lensing * ple, + struct output * pop, + int l, + double * cl + ){ + + double ** cl_md_ic; /* array with argument + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct] */ + + double ** cl_md; /* array with argument + cl_md[index_md][index_ct] */ + + int index_md; + + if (ple->has_lensed_cls == _TRUE_) { + class_call(lensing_cl_at_l(ple, + l, + cl), + ple->error_message, + pop->error_message); + } + else { + + class_alloc(cl_md_ic, + psp->md_size*sizeof(double *), + pop->error_message); + + class_alloc(cl_md, + psp->md_size*sizeof(double *), + pop->error_message); + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + + class_alloc(cl_md[index_md], + psp->ct_size*sizeof(double), + ple->error_message); + + if (psp->ic_size[index_md] > 1) + + class_alloc(cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size*sizeof(double), + ple->error_message); + } + + class_call(spectra_cl_at_l(psp, + (double)l, + cl, + cl_md, + cl_md_ic), + psp->error_message, + pop->error_message); + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + if (psp->md_size > 1) + free(cl_md[index_md]); + + if (psp->ic_size[index_md] > 1) + free(cl_md_ic[index_md]); + + } + + free(cl_md_ic); + free(cl_md); + + } + + return _SUCCESS_; + +} + +/** + * This routine writes the output in files. + * + * + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer perturbation structure + * @param ppm Input: pointer to primordial structure + * @param ptr Input: pointer to transfer structure + * @param psp Input: pointer to spectra structure + * @param pnl Input: pointer to nonlinear structure + * @param ple Input: pointer to lensing structure + * @param pop Input: pointer to output structure + */ + +int output_init( + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct primordial * ppm, + struct transfers * ptr, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop + ) { + + /** Summary: */ + + /** - check that we really want to output at least one file */ + + if ((ppt->has_cls == _FALSE_) && (ppt->has_pk_matter == _FALSE_) && (ppt->has_density_transfers == _FALSE_) && (ppt->has_velocity_transfers == _FALSE_) && (pop->write_background == _FALSE_) && (pop->write_thermodynamics == _FALSE_) && (pop->write_primordial == _FALSE_)) { + if (pop->output_verbose > 0) + printf("No output files requested. Output module skipped.\n"); + return _SUCCESS_; + } + else { + if (pop->output_verbose > 0) + printf("Writing output files in %s... \n",pop->root); + } + + /** - deal with all anisotropy power spectra \f$ C_l\f$'s */ + + if (ppt->has_cls == _TRUE_) { + + class_call(output_cl(pba,ppt,psp,ple,pop), + pop->error_message, + pop->error_message); + } + + /** - deal with all Fourier matter power spectra P(k)'s */ + + if (ppt->has_pk_matter == _TRUE_) { + + class_call(output_pk(pba,ppt,psp,pop), + pop->error_message, + pop->error_message); + + if (pnl->method != nl_none) { + class_call(output_pk_nl(pba,ppt,psp,pop), + pop->error_message, + pop->error_message); + } + } + + /** - deal with density and matter power spectra */ + + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { + + class_call(output_tk(pba,ppt,psp,pop), + pop->error_message, + pop->error_message); + } + + /** - deal with background quantities */ + + if (pop->write_background == _TRUE_) { + + class_call(output_background(pba,pop), + pop->error_message, + pop->error_message); + + } + + /** - deal with thermodynamics quantities */ + + if (pop->write_thermodynamics == _TRUE_) { + + class_call(output_thermodynamics(pba,pth,pop), + pop->error_message, + pop->error_message); + + } + + /** - deal with perturbation quantities */ + + if (pop->write_perturbations == _TRUE_) { + + class_call(output_perturbations(pba,ppt,pop), + pop->error_message, + pop->error_message); + + } + + /** - deal with primordial spectra */ + + if (pop->write_primordial == _TRUE_) { + + class_call(output_primordial(ppt,ppm,pop), + pop->error_message, + pop->error_message); + + } + + return _SUCCESS_; + +} + +/** + * This routines writes the output in files for anisotropy power spectra \f$ C_l\f$'s. + * + * @param pba Input: pointer to background structure (needed for \f$ T_{cmb}\f$) + * @param ppt Input: pointer perturbation structure + * @param psp Input: pointer to spectra structure + * @param ple Input: pointer to lensing structure + * @param pop Input: pointer to output structure + */ + +int output_cl( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct lensing * ple, + struct output * pop + ) { + + /** Summary: */ + + /** - define local variables */ + + FILE *** out_md_ic; /* array of pointers to files with argument + out_md_ic[index_md][index_ic1_ic2] + (will contain cl's for each mode and pairs of initial conditions) */ + + FILE ** out_md; /* array of pointers to files with argument + out_md[index_md] + (will contain cl's for each mode, summed eventually over ic's) */ + + FILE * out; /* (will contain total cl's, summed eventually over modes and ic's) */ + + FILE * out_lensed; /* (will contain total lensed cl's) */ + + double ** cl_md_ic; /* array with argument + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct] */ + + double ** cl_md; /* array with argument + cl_md[index_md][index_ct] */ + + double * cl_tot; /* array with argument + cl_tot[index_ct] */ + + int index_md; + int index_ic1,index_ic2,index_ic1_ic2; + int l; + + FileName file_name; + char first_line[_LINE_LENGTH_MAX_]; + + /** - first, allocate all arrays of files and \f$ C_l\f$'s */ + + class_alloc(out_md_ic, + psp->md_size*sizeof(FILE * *), + pop->error_message); + + class_alloc(cl_md_ic, + psp->md_size*sizeof(double *), + pop->error_message); + + class_alloc(out_md, + psp->md_size*sizeof(FILE *), + pop->error_message); + + class_alloc(cl_md, + psp->md_size*sizeof(double *), + pop->error_message); + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + class_alloc(out_md_ic[index_md], + psp->ic_ic_size[index_md]*sizeof(FILE *), + pop->error_message); + + } + + /** - second, open only the relevant files, and write a heading in each of them */ + + sprintf(file_name,"%s%s",pop->root,"cl.dat"); + + class_call(output_open_cl_file(psp, + pop, + &out, + file_name, + "total [l(l+1)/2pi] C_l's", + psp->l_max_tot + ), + pop->error_message, + pop->error_message); + + class_alloc(cl_tot, + psp->ct_size*sizeof(double), + pop->error_message); + + + if (ple->has_lensed_cls == _TRUE_) { + + sprintf(file_name,"%s%s",pop->root,"cl_lensed.dat"); + + class_call(output_open_cl_file(psp, + pop, + &out_lensed, + file_name, + "total lensed [l(l+1)/2pi] C_l's", + ple->l_lensed_max + ), + pop->error_message, + pop->error_message); + } + + if (ppt->md_size > 1) { + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + if (_scalars_) { + + sprintf(file_name,"%s%s",pop->root,"cls.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar mode"); + + } + + if (_tensors_) { + + sprintf(file_name,"%s%s",pop->root,"clt.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for tensor mode"); + + } + + class_call(output_open_cl_file(psp, + pop, + &(out_md[index_md]), + file_name, + first_line, + psp->l_max[index_md] + ), + pop->error_message, + pop->error_message); + + class_alloc(cl_md[index_md], + psp->ct_size*sizeof(double), + pop->error_message); + + } + } + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + if (ppt->ic_size[index_md] > 1) { + + for (index_ic1 = 0; index_ic1 < ppt->ic_size[index_md]; index_ic1++) { + + for (index_ic2 = index_ic1; index_ic2 < ppt->ic_size[index_md]; index_ic2++) { + + if (_scalars_) { + + if ((ppt->has_ad == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + + sprintf(file_name,"%s%s",pop->root,"cls_ad.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar adiabatic (AD) mode"); + } + + if ((ppt->has_bi == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { + + sprintf(file_name,"%s%s",pop->root,"cls_bi.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar baryon isocurvature (BI) mode"); + } + + if ((ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s",pop->root,"cls_cdi.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar CDM isocurvature (CDI) mode"); + } + + if ((ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s",pop->root,"cls_nid.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar neutrino density isocurvature (NID) mode"); + } + + if ((ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s",pop->root,"cls_niv.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar neutrino velocity isocurvature (NIV) mode"); + } + + if ((ppt->has_ad == _TRUE_) && + (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + + sprintf(file_name,"%s%s",pop->root,"cls_ad_bi.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross ADxBI mode"); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s",pop->root,"cls_ad_cdi.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross ADxCDI mode"); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s",pop->root,"cls_ad_nid.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross ADxNID mode"); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s",pop->root,"cls_ad_niv.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross ADxNIV mode"); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s",pop->root,"cls_bi_cdi.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross BIxCDI mode"); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s",pop->root,"cls_bi_nid.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross BIxNID mode"); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s",pop->root,"cls_bi_niv.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross BIxNIV mode"); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s",pop->root,"cls_cdi_nid.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross CDIxNID mode"); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s",pop->root,"cls_cdi_niv.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross CDIxNIV mode"); + } + + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s",pop->root,"cls_nid_niv.dat"); + strcpy(first_line,"[l(l+1)/2pi] C_l's for scalar cross NIDxNIV mode"); + } + + } + + if (_tensors_) { + + class_test(0==0, + pop->error_message, + "Seems that we have mixed initial conditions for tensors? Should not happen!\n"); + + } + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(output_open_cl_file(psp, + pop, + &(out_md_ic[index_md][index_ic1_ic2]), + file_name, + first_line, + psp->l_max[index_md] + ), + pop->error_message, + pop->error_message); + + } + } + } + + class_alloc(cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size*sizeof(double), + pop->error_message); + } + } + + /** - third, perform loop over l. For each multipole, get all \f$ C_l\f$'s + by calling spectra_cl_at_l() and distribute the results to + relevant files */ + + for (l = 2; l <= psp->l_max_tot; l++) { + + class_call(spectra_cl_at_l(psp,(double)l,cl_tot,cl_md,cl_md_ic), + psp->error_message, + pop->error_message); + + class_call(output_one_line_of_cl(pba,psp,pop,out,(double)l,cl_tot,psp->ct_size), + pop->error_message, + pop->error_message); + + if ((ple->has_lensed_cls == _TRUE_) && (l<=ple->l_lensed_max)) { + + class_call(lensing_cl_at_l(ple, + (double)l, + cl_tot), + ple->error_message, + pop->error_message); + + class_call(output_one_line_of_cl(pba,psp,pop,out_lensed,l,cl_tot,psp->ct_size), + pop->error_message, + pop->error_message); + } + + if (ppt->md_size > 1) { + for (index_md = 0; index_md < ppt->md_size; index_md++) { + if (l <= psp->l_max[index_md]) { + + class_call(output_one_line_of_cl(pba,psp,pop,out_md[index_md],l,cl_md[index_md],psp->ct_size), + pop->error_message, + pop->error_message); + } + } + } + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + if ((ppt->ic_size[index_md] > 1) && (l <= psp->l_max[index_md])) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(output_one_line_of_cl(pba,psp,pop,out_md_ic[index_md][index_ic1_ic2],l,&(cl_md_ic[index_md][index_ic1_ic2*psp->ct_size]),psp->ct_size), + pop->error_message, + pop->error_message); + } + } + } + } + } + + /** - finally, close files and free arrays of files and \f$ C_l\f$'s */ + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + if (ppt->ic_size[index_md] > 1) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + fclose(out_md_ic[index_md][index_ic1_ic2]); + } + } + free(cl_md_ic[index_md]); + } + } + if (ppt->md_size > 1) { + for (index_md = 0; index_md < ppt->md_size; index_md++) { + fclose(out_md[index_md]); + free(cl_md[index_md]); + } + } + fclose(out); + if (ple->has_lensed_cls == _TRUE_) { + fclose(out_lensed); + } + free(cl_tot); + for (index_md = 0; index_md < ppt->md_size; index_md++) { + free(out_md_ic[index_md]); + } + free(out_md_ic); + free(cl_md_ic); + free(out_md); + free(cl_md); + + return _SUCCESS_; + +} + +/** + * This routines writes the output in files for Fourier matter power spectra P(k)'s. + * + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param ppt Input: pointer perturbation structure + * @param psp Input: pointer to spectra structure + * @param pop Input: pointer to output structure + */ + +int output_pk( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ) { + + /** Summary: */ + + /** - define local variables */ + + FILE ** out_ic=NULL; /* array of pointers to files with argument + out_ic[index_ic1_ic2] + (will contain P(k)'s for each pair of initial conditions) */ + + FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ + + double * pk_ic=NULL; /* array with argument + pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] */ + + double * pk_tot; /* array with argument + pk_tot[index_k] */ + + int index_md; + int index_ic1,index_ic2; + int index_ic1_ic2=0; + int index_k; + int index_z; + + FileName file_name; + FileName redshift_suffix; + char first_line[_LINE_LENGTH_MAX_]; + + index_md=ppt->index_md_scalars; + + for (index_z = 0; index_z < pop->z_pk_num; index_z++) { + + /** - first, check that requested redshift z_pk is consistent */ + + class_test((pop->z_pk[index_z] > psp->z_max_pk), + pop->error_message, + "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); + + if (pop->z_pk_num == 1) + redshift_suffix[0]='\0'; + else + sprintf(redshift_suffix,"z%d_",index_z+1); + + /** - second, open only the relevant files and write a heading in each of them */ + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk.dat"); + + class_call(output_open_pk_file(pba, + psp, + pop, + &out, + file_name, + "", + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); + + class_alloc(pk_tot, + psp->ln_k_size*sizeof(double), + pop->error_message); + + if (psp->ic_size[index_md] > 1) { + + class_alloc(out_ic, + psp->ic_ic_size[index_md]*sizeof(FILE *), + pop->error_message); + + class_alloc(pk_ic, + psp->ln_k_size*psp->ic_ic_size[index_md]*sizeof(double), + pop->error_message); + + for (index_ic1 = 0; index_ic1 < ppt->ic_size[index_md]; index_ic1++) { + + for (index_ic2 = index_ic1; index_ic2 < ppt->ic_size[index_md]; index_ic2++) { + + if ((ppt->has_ad == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad.dat"); + strcpy(first_line,"for adiabatic (AD) mode "); + } + + if ((ppt->has_bi == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi.dat"); + strcpy(first_line,"for baryon isocurvature (BI) mode "); + } + + if ((ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi.dat"); + strcpy(first_line,"for CDM isocurvature (CDI) mode "); + } + + if ((ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid.dat"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode "); + } + + if ((ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_niv.dat"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode "); + } + + if ((ppt->has_ad == _TRUE_) && + (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_bi.dat"); + strcpy(first_line,"for cross ADxBI mode "); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_cdi.dat"); + strcpy(first_line,"for cross ADxCDI mode "); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_nid.dat"); + strcpy(first_line,"for scalar cross ADxNID mode "); + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_niv.dat"); + strcpy(first_line,"for cross ADxNIV mode "); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_cdi.dat"); + strcpy(first_line,"for cross BIxCDI mode "); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_nid.dat"); + strcpy(first_line,"for cross BIxNID mode "); + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_niv.dat"); + strcpy(first_line,"for cross BIxNIV mode "); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_nid.dat"); + strcpy(first_line,"for cross CDIxNID mode "); + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_niv.dat"); + strcpy(first_line,"for cross CDIxNIV mode "); + } + + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && + (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid_niv.dat"); + strcpy(first_line,"for cross NIDxNIV mode "); + } + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(output_open_pk_file(pba, + psp, + pop, + &(out_ic[index_ic1_ic2]), + file_name, + first_line, + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); + } + } + } + } + + /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + + /* if z_pk = 0, no interpolation needed */ + + if (pop->z_pk[index_z] == 0.) { + + for (index_k=0; index_kln_k_size; index_k++) { + + if (psp->ic_size[index_md] == 1) { + pk_tot[index_k] = exp(psp->ln_pk[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); + } + else { + pk_tot[index_k] = 0.; + for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); + pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(psp->ln_pk[((psp->ln_tau_size-1) * psp->ln_k_size + index_k) * psp->ic_ic_size[index_md] + index_ic1_ic2]); + pk_tot[index_k] += pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; + } + for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = + psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] + *sqrt(pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * + pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); + pk_tot[index_k] += 2.*pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; + } + } + } + } + } + + /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ + else { + + class_call(spectra_pk_at_z(pba, + psp, + linear, + pop->z_pk[index_z], + pk_tot, + pk_ic), + psp->error_message, + pop->error_message); + } + + /** - fourth, write in files */ + + for (index_k=0; index_kln_k_size; index_k++) { + + class_call(output_one_line_of_pk(out, + exp(psp->ln_k[index_k])/pba->h, + pk_tot[index_k]*pow(pba->h,3)), + pop->error_message, + pop->error_message); + + if (psp->ic_size[index_md] > 1) { + + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(output_one_line_of_pk(out_ic[index_ic1_ic2], + exp(psp->ln_k[index_k])/pba->h, + pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]*pow(pba->h,3)), + pop->error_message, + pop->error_message); + } + } + } + } + + /** - fifth, free memory and close files */ + + free(pk_tot); + fclose(out); + + if (psp->ic_size[index_md] > 1) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + fclose(out_ic[index_ic1_ic2]); + } + } + free(out_ic); + free(pk_ic); + } + + } + + return _SUCCESS_; + +} + +/** + * This routines writes the output in files for Fourier non-linear matter power spectra P(k)'s. + * + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param ppt Input: pointer perturbation structure + * @param psp Input: pointer to spectra structure + * @param pop Input: pointer to output structure + */ + +int output_pk_nl( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ) { + + /** Summary: */ + + /** - define local variables */ + + FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ + + double * pk_tot; /* array with argument pk_tot[index_k] */ + + int index_k; + int index_z; + + FileName file_name; + FileName redshift_suffix; + + for (index_z = 0; index_z < pop->z_pk_num; index_z++) { + + /** - first, check that requested redshift z_pk is consistent */ + + class_test((pop->z_pk[index_z] > psp->z_max_pk), + pop->error_message, + "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); + + if (pop->z_pk_num == 1) + redshift_suffix[0]='\0'; + else + sprintf(redshift_suffix,"z%d_",index_z+1); + + /** - second, open only the relevant files, and write a heading in each of them */ + + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nl.dat"); + + class_call(output_open_pk_file(pba, + psp, + pop, + &out, + file_name, + "", + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); + + class_alloc(pk_tot, + psp->ln_k_size*sizeof(double), + pop->error_message); + + /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + + /* if z_pk = 0, no interpolation needed */ + + if (pop->z_pk[index_z] == 0.) { + + for (index_k=0; index_kln_k_size; index_k++) { + + pk_tot[index_k] = exp(psp->ln_pk_nl[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); + + } + } + + /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ + else { + + class_call(spectra_pk_nl_at_z(pba, + psp, + linear, + pop->z_pk[index_z], + pk_tot), + psp->error_message, + pop->error_message); + } + + /** - fourth, write in files */ + + for (index_k=0; index_kln_k_size; index_k++) { + + class_call(output_one_line_of_pk(out, + exp(psp->ln_k[index_k])/pba->h, + pk_tot[index_k]*pow(pba->h,3)), + pop->error_message, + pop->error_message); + + } + + /** - fifth, free memory and close files */ + + fclose(out); + free(pk_tot); + + } + + return _SUCCESS_; + +} + + +/** + * This routines writes the output in files for matter transfer functions \f$ T_i(k)\f$'s. + * + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param ppt Input: pointer perturbation structure + * @param psp Input: pointer to spectra structure + * @param pop Input: pointer to output structure + */ + +int output_tk( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + struct output * pop + ) { + + /** Summary: */ + + /** - define local variables */ + char titles[_MAXTITLESTRINGLENGTH_]={0}; + double * data; + int size_data, number_of_titles; + + FILE * tkfile; + + int index_md; + int index_ic; + int index_z; + + double z; + + FileName file_name; + FileName redshift_suffix; + char first_line[_LINE_LENGTH_MAX_]; + FileName ic_suffix; + + index_md=ppt->index_md_scalars; + + if (pop->output_format == camb_format) { + + class_test(pba->N_ncdm>1, + pop->error_message, + "you wish to output the transfer functions in CMBFAST/CAMB format but you have more than one non-cold dark matter (ncdm) species. The two are not compatible (since CMBFAST/CAMB only have one ncdm species): switch to CLASS output format or keep only on ncdm species"); + + class_test(ppt->has_velocity_transfers == _TRUE_, + pop->error_message, + "you wish to output the transfer functions in CMBFAST/CAMB format, but you requested velocity transfer functions. The two are not compatible (since CMBFAST/CAMB do not compute velocity transfer functions): switch to CLASS output format, or ask only for density transfer function"); + } + + + class_call(spectra_output_tk_titles(pba,ppt,pop->output_format,titles), + pba->error_message, + pop->error_message); + number_of_titles = get_number_of_titles(titles); + size_data = number_of_titles*psp->ln_k_size; + + class_alloc(data, sizeof(double)*psp->ic_size[index_md]*size_data, pop->error_message); + + for (index_z = 0; index_z < pop->z_pk_num; index_z++) { + + z = pop->z_pk[index_z]; + + /** - first, check that requested redshift z_pk is consistent */ + + class_test((pop->z_pk[index_z] > psp->z_max_pk), + pop->error_message, + "T_i(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); + + if (pop->z_pk_num == 1) + redshift_suffix[0]='\0'; + else + sprintf(redshift_suffix,"z%d_",index_z+1); + + /** - second, open only the relevant files, and write a heading in each of them */ + + class_call(spectra_output_tk_data(pba, + ppt, + psp, + pop->output_format, + pop->z_pk[index_z], + number_of_titles, + data + ), + psp->error_message, + pop->error_message); + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + class_call(spectra_firstline_and_ic_suffix(ppt, index_ic, first_line, ic_suffix), + pop->error_message, pop->error_message); + + if ((ppt->has_ad == _TRUE_) && (ppt->ic_size[index_md] == 1) ) + sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"tk.dat"); + else + sprintf(file_name,"%s%s%s%s%s",pop->root,redshift_suffix,"tk_",ic_suffix,".dat"); + + class_open(tkfile, file_name, "w", pop->error_message); + + if (pop->write_header == _TRUE_) { + if (pop->output_format == class_format) { + fprintf(tkfile,"# Transfer functions T_i(k) %sat redshift z=%g\n",first_line,z); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + if (ppt->has_density_transfers == _TRUE_) { + fprintf(tkfile,"# d_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); + fprintf(tkfile,"# d_tot stands for (delta rho_tot/rho_tot)(k,z) with rho_Lambda NOT included in rho_tot\n"); + fprintf(tkfile,"# (note that this differs from the transfer function output from CAMB/CMBFAST, which gives the same\n"); + fprintf(tkfile,"# quantities divided by -k^2 with k in Mpc^-1; use format=camb to match CAMB)\n"); + } + if (ppt->has_velocity_transfers == _TRUE_) { + fprintf(tkfile,"# t_i stands for theta_i(k,z) with above normalization \n"); + fprintf(tkfile,"# t_tot stands for (sum_i [rho_i+p_i] theta_i)/(sum_i [rho_i+p_i]))(k,z)\n"); + } + fprintf(tkfile,"#\n"); + } + else if (pop->output_format == camb_format) { + + fprintf(tkfile,"# Rescaled matter transfer functions [-T_i(k)/k^2] %sat redshift z=%g\n",first_line,z); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + fprintf(tkfile,"# T_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); + fprintf(tkfile,"# The rescaling factor [-1/k^2] with k in 1/Mpc is here to match the CMBFAST/CAMB output convention\n"); + fprintf(tkfile,"#\n"); + fprintf(tkfile,"#"); + fprintf(tkfile,"\n"); + + } + } + + output_print_data(tkfile, + titles, + data+index_ic*size_data, + size_data); + + /** - free memory and close files */ + fclose(tkfile); + + } + + } + + free(data); + + return _SUCCESS_; + +} + +int output_background( + struct background * pba, + struct output * pop + ) { + + FILE * backfile; + FileName file_name; + + char titles[_MAXTITLESTRINGLENGTH_]={0}; + double * data; + int size_data, number_of_titles; + + class_call(background_output_titles(pba,titles), + pba->error_message, + pop->error_message); + number_of_titles = get_number_of_titles(titles); + size_data = number_of_titles*pba->bt_size; + class_alloc(data,sizeof(double)*size_data,pop->error_message); + class_call(background_output_data(pba, + number_of_titles, + data), + pba->error_message, + pop->error_message); + + sprintf(file_name,"%s%s",pop->root,"background.dat"); + class_open(backfile,file_name,"w",pop->error_message); + + if (pop->write_header == _TRUE_) { + fprintf(backfile,"# Table of selected background quantities\n"); + fprintf(backfile,"# All densities are multiplied by (8piG/3) (below, shortcut notation (.) for this factor) \n"); + fprintf(backfile,"# Densities are in units [Mpc^-2] while all distances are in [Mpc]. \n"); + if (pba->has_scf == _TRUE_){ + fprintf(backfile,"# The units of phi, tau in the derivatives and the potential V are the following:\n"); + fprintf(backfile,"# --> phi is given in units of the reduced Planck mass m_Pl = (8 pi G)^(-1/2)\n"); + fprintf(backfile,"# --> tau in the derivative of V(phi) is given in units of Mpc.\n"); + fprintf(backfile,"# --> the potential V(phi) is given in units of m_Pl^2/Mpc^2.\n"); + } + } + + output_print_data(backfile, + titles, + data, + size_data); + + free(data); + fclose(backfile); + + return _SUCCESS_; + +} + +int output_thermodynamics( + struct background * pba, + struct thermo * pth, + struct output * pop + ) { + + FileName file_name; + FILE * thermofile; + char titles[_MAXTITLESTRINGLENGTH_]={0}; + double * data; + int size_data, number_of_titles; + + class_call(thermodynamics_output_titles(pba,pth,titles), + pth->error_message, + pop->error_message); + number_of_titles = get_number_of_titles(titles); + size_data = number_of_titles*pth->tt_size; + class_alloc(data,sizeof(double)*size_data,pop->error_message); + class_call(thermodynamics_output_data(pba, + pth, + number_of_titles, + data), + pth->error_message, + pop->error_message); + + sprintf(file_name,"%s%s",pop->root,"thermodynamics.dat"); + class_open(thermofile,file_name,"w",pop->error_message); + + if (pop->write_header == _TRUE_) { + fprintf(thermofile,"# Table of selected thermodynamics quantities\n"); + fprintf(thermofile,"# The following notation is used in column titles:\n"); + fprintf(thermofile,"# x_e = electron ionization fraction\n"); + fprintf(thermofile,"# -kappa = optical depth\n"); + fprintf(thermofile,"# kappa' = Thomson scattering rate, prime denotes conformal time derivatives\n"); + fprintf(thermofile,"# g = kappa' e^-kappa = visibility function \n"); + fprintf(thermofile,"# Tb = baryon temperature \n"); + fprintf(thermofile,"# c_b^2 = baryon sound speed squared \n"); + fprintf(thermofile,"# tau_d = baryon drag optical depth \n"); + if (pth->compute_damping_scale == _TRUE_) { + fprintf(thermofile,"# r_d = simplest analytic approximation to photon comoving damping scale \n"); + } + } + + output_print_data(thermofile, + titles, + data, + size_data); + + free(data); + fclose(thermofile); + + return _SUCCESS_; + +} + + +int output_perturbations( + struct background * pba, + struct perturbs * ppt, + struct output * pop + ) { + + FILE * out; + FileName file_name; + int index_ikout, index_md; + double k; + + for (index_ikout=0; index_ikoutk_output_values_num; index_ikout++){ + + if (ppt->has_scalars == _TRUE_){ + index_md = ppt->index_md_scalars; + k = ppt->k[index_md][ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout]]; + sprintf(file_name,"%s%s%d%s",pop->root,"perturbations_k",index_ikout,"_s.dat"); + class_open(out, file_name, "w", ppt->error_message); + fprintf(out,"#scalar perturbations for mode k = %.*e Mpc^(-1)\n",_OUTPUTPRECISION_,k); + output_print_data(out, + ppt->scalar_titles, + ppt->scalar_perturbations_data[index_ikout], + ppt->size_scalar_perturbation_data[index_ikout]); + + fclose(out); + } + if (ppt->has_vectors == _TRUE_){ + index_md = ppt->index_md_vectors; + k = ppt->k[index_md][ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout]]; + sprintf(file_name,"%s%s%d%s",pop->root,"perturbations_k",index_ikout,"_v.dat"); + class_open(out, file_name, "w", ppt->error_message); + fprintf(out,"#vector perturbations for mode k = %.*e Mpc^(-1)\n",_OUTPUTPRECISION_,k); + output_print_data(out, + ppt->vector_titles, + ppt->vector_perturbations_data[index_ikout], + ppt->size_vector_perturbation_data[index_ikout]); + + fclose(out); + } + if (ppt->has_tensors == _TRUE_){ + index_md = ppt->index_md_tensors; + k = ppt->k[index_md][ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout]]; + sprintf(file_name,"%s%s%d%s",pop->root,"perturbations_k",index_ikout,"_t.dat"); + class_open(out, file_name, "w", ppt->error_message); + fprintf(out,"#tensor perturbations for mode k = %.*e Mpc^(-1)\n",_OUTPUTPRECISION_,k); + output_print_data(out, + ppt->tensor_titles, + ppt->tensor_perturbations_data[index_ikout], + ppt->size_tensor_perturbation_data[index_ikout]); + + fclose(out); + } + + + } + return _SUCCESS_; + +} + +int output_primordial( + struct perturbs * ppt, + struct primordial * ppm, + struct output * pop + ) { + FileName file_name; + FILE * out; + char titles[_MAXTITLESTRINGLENGTH_]={0}; + double * data; + int size_data, number_of_titles; + + sprintf(file_name,"%s%s",pop->root,"primordial_Pk.dat"); + + class_call(primordial_output_titles(ppt,ppm,titles), + ppm->error_message, + pop->error_message); + number_of_titles = get_number_of_titles(titles); + size_data = number_of_titles*ppm->lnk_size; + class_alloc(data,sizeof(double)*size_data,pop->error_message); + class_call(primordial_output_data(ppt, + ppm, + number_of_titles, + data), + ppm->error_message, + pop->error_message); + + class_open(out,file_name,"w",pop->error_message); + if (pop->write_header == _TRUE_) { + fprintf(out,"# Dimensionless primordial spectrum, equal to [k^3/2pi^2] P(k) \n"); + } + + output_print_data(out, + titles, + data, + size_data); + + free(data); + fclose(out); + + return _SUCCESS_; +} + + +int output_print_data(FILE *out, + char titles[_MAXTITLESTRINGLENGTH_], + double *dataptr, + int size_dataptr){ + int colnum=1, number_of_titles; + int index_title, index_tau; + char thetitle[_MAXTITLESTRINGLENGTH_]; + char *pch; + + /** Summary*/ + + /** - First we print the titles */ + fprintf(out,"#"); + + strcpy(thetitle,titles); + pch = strtok(thetitle,_DELIMITER_); + while (pch != NULL){ + class_fprintf_columntitle(out, pch, _TRUE_, colnum); + pch = strtok(NULL,_DELIMITER_); + } + fprintf(out,"\n"); + + /** - Then we print the data */ + number_of_titles = colnum-1; + if (number_of_titles>0){ + for (index_tau=0; index_tauerror_message); + + if (pop->write_header == _TRUE_) { + + /** - First we deal with the entries that are dependent of format type */ + + if (pop->output_format == class_format) { + fprintf(*clfile,"# dimensionless %s\n",first_line); + } + if (pop->output_format == camb_format) { + fprintf(*clfile,"# %s (units: [microK]^2)\n",first_line); + } + + fprintf(*clfile,"# for l=2 to %d, i.e. number of multipoles equal to %d\n",lmax,lmax-1); + fprintf(*clfile,"#\n"); + + if (pop->output_format == class_format) { + fprintf(*clfile,"# -> if you prefer output in CAMB/HealPix/LensPix units/order, set 'format' to 'camb' in input file\n"); + } + + fprintf(*clfile,"# -> if you don't want to see such a header, set 'headers' to 'no' in input file\n"); + fprintf(*clfile,"#\n"); + + if (0==1){ + fprintf(*clfile,"#"); + class_fprintf_columntitle(*clfile,"l",_TRUE_,colnum); + } + else{ + fprintf(*clfile,"# 1:l "); + colnum++; + } + if (pop->output_format == class_format) { + class_fprintf_columntitle(*clfile,"TT",psp->has_tt,colnum); + class_fprintf_columntitle(*clfile,"EE",psp->has_ee,colnum); + class_fprintf_columntitle(*clfile,"TE",psp->has_te,colnum); + class_fprintf_columntitle(*clfile,"BB",psp->has_bb,colnum); + class_fprintf_columntitle(*clfile,"phiphi",psp->has_pp,colnum); + class_fprintf_columntitle(*clfile,"TPhi",psp->has_tp,colnum); + class_fprintf_columntitle(*clfile,"Ephi",psp->has_ep,colnum); + } + else if (pop->output_format == camb_format) { + class_fprintf_columntitle(*clfile,"TT",psp->has_tt,colnum); + class_fprintf_columntitle(*clfile,"EE",psp->has_ee,colnum); + class_fprintf_columntitle(*clfile,"BB",psp->has_bb,colnum); + class_fprintf_columntitle(*clfile,"TE",psp->has_te,colnum); + class_fprintf_columntitle(*clfile,"dd",psp->has_pp,colnum); + class_fprintf_columntitle(*clfile,"dT",psp->has_tp,colnum); + class_fprintf_columntitle(*clfile,"dE",psp->has_ep,colnum); + } + + /** - Next deal with entries that are independent of format type */ + + if (psp->has_dd == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++){ + sprintf(tmp,"dens[%d]-dens[%d]",index_d1+1,index_d2+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + } + if (psp->has_td == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + sprintf(tmp,"T-dens[%d]",index_d1+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + if (psp->has_pd == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + sprintf(tmp,"phi-dens[%d]",index_d1+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + if (psp->has_ll == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++){ + sprintf(tmp,"lens[%d]-lens[%d]",index_d1+1,index_d2+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + } + if (psp->has_tl == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + sprintf(tmp,"T-lens[%d]",index_d1+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + if (psp->has_dl == _TRUE_){ + for (index_d1=0; index_d1d_size; index_d1++){ + for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + sprintf(tmp,"dens[%d]-lens[%d]",index_d1+1,index_d2+1); + class_fprintf_columntitle(*clfile,tmp,_TRUE_,colnum); + } + } + } + fprintf(*clfile,"\n"); + } + + return _SUCCESS_; + +} + +/** + * This routine write one line with l and all \f$ C_l\f$'s for all types (TT, TE...) + * + * @param pba Input: pointer to background structure (needed for \f$ T_{cmb}\f$) + * @param psp Input: pointer to spectra structure + * @param pop Input: pointer to output structure + * @param clfile Input: file pointer + * @param l Input: multipole + * @param cl Input: \f$ C_l\f$'s for all types + * @param ct_size Input: number of types + * @return the error status + */ + +int output_one_line_of_cl( + struct background * pba, + struct spectra * psp, + struct output * pop, + FILE * clfile, + double l, + double * cl, /* array with argument cl[index_ct] */ + int ct_size + ) { + int index_ct, index_ct_rest; + double factor; + + factor = l*(l+1)/2./_PI_; + + fprintf(clfile," "); + + if (0==1){ + class_fprintf_int(clfile, (int)l, _TRUE_); + } + else{ + fprintf(clfile,"%4d ",(int)l); + } + + if (pop->output_format == class_format) { + + for (index_ct=0; index_ct < ct_size; index_ct++) { + class_fprintf_double(clfile, factor*cl[index_ct], _TRUE_); + } + fprintf(clfile,"\n"); + } + + if (pop->output_format == camb_format) { + class_fprintf_double(clfile, factor*pow(pba->T_cmb*1.e6,2)*cl[psp->index_ct_tt], psp->has_tt); + class_fprintf_double(clfile, factor*pow(pba->T_cmb*1.e6,2)*cl[psp->index_ct_ee], psp->has_ee); + class_fprintf_double(clfile, factor*pow(pba->T_cmb*1.e6,2)*cl[psp->index_ct_bb], psp->has_bb); + class_fprintf_double(clfile, factor*pow(pba->T_cmb*1.e6,2)*cl[psp->index_ct_te], psp->has_te); + class_fprintf_double(clfile, l*(l+1)*factor*cl[psp->index_ct_pp], psp->has_pp); + class_fprintf_double(clfile, sqrt(l*(l+1))*factor*pba->T_cmb*1.e6*cl[psp->index_ct_tp], psp->has_tp); + class_fprintf_double(clfile, sqrt(l*(l+1))*factor*pba->T_cmb*1.e6*cl[psp->index_ct_ep], psp->has_ep); + index_ct_rest = 0; + if (psp->has_tt == _TRUE_) + index_ct_rest++; + if (psp->has_ee == _TRUE_) + index_ct_rest++; + if (psp->has_bb == _TRUE_) + index_ct_rest++; + if (psp->has_te == _TRUE_) + index_ct_rest++; + if (psp->has_pp == _TRUE_) + index_ct_rest++; + if (psp->has_tp == _TRUE_) + index_ct_rest++; + if (psp->has_ep == _TRUE_) + index_ct_rest++; + /* Now print the remaining (if any) entries:*/ + for (index_ct=index_ct_rest; index_ct < ct_size; index_ct++) { + class_fprintf_double(clfile, factor*cl[index_ct], _TRUE_); + } + + fprintf(clfile,"\n"); + + } + return _SUCCESS_; + +} + +/** + * This routine opens one file where some P(k)'s will be written, and writes + * a heading with some general information concerning its content. + * + * @param pba Input: pointer to background structure (needed for h) + * @param psp Input: pointer to spectra structure + * @param pop Input: pointer to output structure + * @param pkfile Output: returned pointer to file pointer + * @param filename Input: name of the file + * @param first_line Input: text describing the content (initial conditions, ...) + * @param z Input: redshift of the output + * @return the error status + */ + +int output_open_pk_file( + struct background * pba, + struct spectra * psp, + struct output * pop, + FILE * * pkfile, + FileName filename, + char * first_line, + double z + ) { + + int colnum = 1; + class_open(*pkfile,filename,"w",pop->error_message); + + if (pop->write_header == _TRUE_) { + fprintf(*pkfile,"# Matter power spectrum P(k) %sat redshift z=%g\n",first_line,z); + fprintf(*pkfile,"# for k=%g to %g h/Mpc,\n", + exp(psp->ln_k[0])/pba->h, + exp(psp->ln_k[psp->ln_k_size-1])/pba->h); + fprintf(*pkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + + fprintf(*pkfile,"#"); + class_fprintf_columntitle(*pkfile,"k (h/Mpc)",_TRUE_,colnum); + class_fprintf_columntitle(*pkfile,"P (Mpc/h)^3",_TRUE_,colnum); + + fprintf(*pkfile,"\n"); + } + + return _SUCCESS_; +} + +/** + * This routine writes one line with k and P(k) + * + * @param pkfile Input: file pointer + * @param one_k Input: wavenumber + * @param one_pk Input: matter power spectrum + * @return the error status + */ + +int output_one_line_of_pk( + FILE * pkfile, + double one_k, + double one_pk + ) { + + fprintf(pkfile," "); + class_fprintf_double(pkfile,one_k,_TRUE_); + class_fprintf_double(pkfile,one_pk,_TRUE_); + fprintf(pkfile,"\n"); + + return _SUCCESS_; + +} diff --git a/class_old/source/perturbations.c b/class_old/source/perturbations.c new file mode 100644 index 00000000..5149a3b4 --- /dev/null +++ b/class_old/source/perturbations.c @@ -0,0 +1,8147 @@ +/** @file perturbations.c Documented perturbation module + * + * Julien Lesgourgues, 23.09.2010 + * + * Deals with the perturbation evolution. + * This module has two purposes: + * + * - at the beginning; to initialize the perturbations, i.e. to + * integrate the perturbation equations, and store temporarily the terms + * contributing to the source functions as a function of conformal + * time. Then, to perform a few manipulations of these terms in order to + * infer the actual source functions \f$ S^{X} (k, \tau) \f$, and to + * store them as a function of conformal time inside an interpolation + * table. + * + * - at any time in the code; to evaluate the source functions at a + * given conformal time (by interpolating within the interpolation + * table). + * + * Hence the following functions can be called from other modules: + * + * -# perturb_init() at the beginning (but after background_init() and thermodynamics_init()) + * -# perturb_sources_at_tau() at any later time + * -# perturb_free() at the end, when no more calls to perturb_sources_at_tau() are needed + */ + +#include "perturbations.h" + + +/** + * Source function \f$ S^{X} (k, \tau) \f$ at a given conformal time tau. + * + * Evaluate source functions at given conformal time tau by reading + * the pre-computed table and interpolating. + * + * @param ppt Input: pointer to perturbation structure containing interpolation tables + * @param index_md Input: index of requested mode + * @param index_ic Input: index of requested initial condition + * @param index_type Input: index of requested source function type + * @param tau Input: any value of conformal time + * @param psource Output: vector (already allocated) of source function as a function of k + * @return the error status + */ + +int perturb_sources_at_tau( + struct perturbs * ppt, + int index_md, + int index_ic, + int index_type, + double tau, + double * psource + ) { + + + /** Summary: */ + + /** - interpolate in pre-computed table contained in ppt */ + class_call(array_interpolate_two_bis(ppt->tau_sampling, + 1, + 0, + ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], + ppt->k_size[index_md], + ppt->tau_size, + tau, + psource, + ppt->k_size[index_md], + ppt->error_message), + ppt->error_message, + ppt->error_message); + + + return _SUCCESS_; +} + +/** + * Initialize the perturbs structure, and in particular the table of source functions. + * + * Main steps: + * + * - given the values of the flags describing which kind of + * perturbations should be considered (modes: scalar/vector/tensor, + * initial conditions, type of source functions needed...), + * initialize indices and wavenumber list + * + * - define the time sampling for the output source functions + * + * - for each mode (scalar/vector/tensor): initialize the indices of + * relevant perturbations, integrate the differential system, + * compute and store the source functions. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Output: Initialized perturbation structure + * @return the error status + */ + +int perturb_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { + + /** Summary: */ + + /** - define local variables */ + + /* running index for modes */ + int index_md; + /* running index for initial conditions */ + int index_ic; + /* running index for wavenumbers */ + int index_k; + /* pointer to one struct perturb_workspace per thread (one if no openmp) */ + struct perturb_workspace ** pppw; + /* number of threads (always one if no openmp) */ + int number_of_threads=1; + /* index of the thread (always 0 if no openmp) */ + int thread=0; + + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" just after leaving the + parallel region. */ + int abort; + + /* unsigned integer that will be set to the size of the workspace */ + size_t sz; + +#ifdef _OPENMP + /* instrumentation times */ + double tstart, tstop, tspent; +#endif + + /** - perform preliminary checks */ + + if (ppt->has_perturbations == _FALSE_) { + if (ppt->perturbations_verbose > 0) + printf("No sources requested. Perturbation module skipped.\n"); + return _SUCCESS_; + } + else { + if (ppt->perturbations_verbose > 0) + printf("Computing sources\n"); + } + + class_test((ppt->gauge == synchronous) && (pba->has_cdm == _FALSE_), + ppt->error_message, + "In the synchronous gauge, it is not self-consistent to assume no CDM: the later is used to define the initial timelike hypersurface. You can either add a negligible amount of CDM or switch to newtonian gauge"); + + class_test ((ppr->tight_coupling_approximation < first_order_MB) || + (ppr->tight_coupling_approximation > compromise_CLASS), + ppt->error_message, + "your tight_coupling_approximation is set to %d, out of range defined in perturbations.h",ppr->tight_coupling_approximation); + + class_test ((ppr->radiation_streaming_approximation < rsa_null) || + (ppr->radiation_streaming_approximation > rsa_none), + ppt->error_message, + "your radiation_streaming_approximation is set to %d, out of range defined in perturbations.h",ppr->radiation_streaming_approximation); + + if (pba->has_ur == _TRUE_) { + + class_test ((ppr->ur_fluid_approximation < ufa_mb) || + (ppr->ur_fluid_approximation > ufa_none), + ppt->error_message, + "your ur_fluid_approximation is set to %d, out of range defined in perturbations.h",ppr->ur_fluid_approximation); + } + + if (pba->has_ncdm == _TRUE_) { + + class_test ((ppr->ncdm_fluid_approximation < ncdmfa_mb) || + (ppr->ncdm_fluid_approximation > ncdmfa_none), + ppt->error_message, + "your ncdm_fluid_approximation is set to %d, out of range defined in perturbations.h",ppr->ncdm_fluid_approximation); + } + + if (pba->has_fld == _TRUE_) { + + class_test(pba->w0_fld+pba->wa_fld >= 0., + ppt->error_message, + "So far, the fluid is meant to be negligible at early time, and not to be important for defining the initial conditions of other species. You are using parameters for which this assumption may break down, so maybe it's the case to fully implement the fluid in the initial condition routine"); + + class_test((pba->w0_fld==-1.) && (pba->wa_fld==0.), + ppt->error_message, + "Your choice of a fluid with (w0,wa)=(-1,0) is not valid due to instabilities in the unphysical perturbations of such a fluid. Try instead with a plain cosmological constant"); + + class_test(((pba->w0_fld + pba->wa_fld +1.0)*(pba->w0_fld+1.0)) < 0.0, + ppt->error_message, + "w crosses -1 between the infinite past and today, and this would lead to divergent perturbation equations for the fluid."); + + } + + if (pba->has_dcdm == _TRUE_) { + + class_test((ppt->has_cdi == _TRUE_) || (ppt->has_bi == _TRUE_) || (ppt->has_nid == _TRUE_) || (ppt->has_niv == _TRUE_), + ppt->error_message, + "Non-adiabatic initial conditions not coded in presence of decaying dark matter"); + + } + + class_test(ppt->has_vectors == _TRUE_, + ppt->error_message, + "Vectors not coded yet"); + + if ((ppt->has_niv == _TRUE_) && (ppt->perturbations_verbose > 0)) { + printf("Warning: the niv initial conditions in CLASS (and also in CAMB) should still be double-checked: if you want to do it and send feedback, you are welcome!\n"); + } + + if (ppt->has_tensors == _TRUE_) { + + ppt->evolve_tensor_ur = _FALSE_; + ppt->evolve_tensor_ncdm = _FALSE_; + + switch (ppt->tensor_method) { + + case (tm_photons_only): + break; + + case (tm_massless_approximation): + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_)) + ppt->evolve_tensor_ur = _TRUE_; + break; + + case (tm_exact): + if (pba->has_ur == _TRUE_) + ppt->evolve_tensor_ur = _TRUE_; + if (pba->has_ncdm == _TRUE_) + ppt->evolve_tensor_ncdm = _TRUE_; + break; + } + } + + /** - initialize all indices and lists in perturbs structure using perturb_indices_of_perturbs() */ + + class_call(perturb_indices_of_perturbs(ppr, + pba, + pth, + ppt), + ppt->error_message, + ppt->error_message); + + + if (ppt->z_max_pk > pth->z_rec) { + + class_test(ppt->has_cmb == _TRUE_, + ppt->error_message, + "You requested a very high z_pk=%e, higher than z_rec=%e. This works very well when you don't ask for a calculation of the CMB source function(s). Remove any CMB from your output and try e.g. with 'output=mTk' or 'output=mTk,vTk'", + ppt->z_max_pk, + pth->z_rec); + + class_test(ppt->has_source_delta_m == _TRUE_, + ppt->error_message, + "You requested a very high z_pk=%e, higher than z_rec=%e. This works very well when you ask only transfer functions, e.g. with 'output=mTk' or 'output=mTk,vTk'. But if you need the total matter (e.g. with 'mPk', 'dCl', etc.) there is an issue with the calculation of delta_m at very early times. By default, delta_m is a gauge-invariant variable (the density fluctuation in comoving gauge) and this quantity is hard to get accurately at very early times. The solution is to define delta_m as the density fluctuation in the current gauge, synchronous or newtonian. For the moment this must be done manually by commenting the line 'ppw->delta_m += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_m/k2;' in perturb_sources(). In the future there will be an option for doing it in an easier way.", + ppt->z_max_pk, + pth->z_rec); + + } + + + + /** - define the common time sampling for all sources using + perturb_timesampling_for_sources() */ + + class_call(perturb_timesampling_for_sources(ppr, + pba, + pth, + ppt), + ppt->error_message, + ppt->error_message); + + /** - if we want to store perturbations, write titles and allocate storage */ + class_call(perturb_prepare_output(pba,ppt), + ppt->error_message, + ppt->error_message); + + + /** - create an array of workspaces in multi-thread case */ + +#ifdef _OPENMP + +#pragma omp parallel + { + number_of_threads = omp_get_num_threads(); + } +#endif + + class_alloc(pppw,number_of_threads * sizeof(struct perturb_workspace *),ppt->error_message); + + /** - loop over modes (scalar, tensors, etc). For each mode: */ + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + if (ppt->perturbations_verbose > 1) + printf("Evolving mode %d/%d\n",index_md+1,ppt->md_size); + + abort = _FALSE_; + + sz = sizeof(struct perturb_workspace); + +#pragma omp parallel \ + shared(pppw,ppr,pba,pth,ppt,index_md,abort,number_of_threads) \ + private(thread) \ + num_threads(number_of_threads) + + { + +#ifdef _OPENMP + thread=omp_get_thread_num(); +#endif + + /** - --> (a) create a workspace (one per thread in multi-thread case) */ + + class_alloc_parallel(pppw[thread],sz,ppt->error_message); + + /** - --> (b) initialize indices of vectors of perturbations with perturb_indices_of_current_vectors() */ + + class_call_parallel(perturb_workspace_init(ppr, + pba, + pth, + ppt, + index_md, + pppw[thread]), + ppt->error_message, + ppt->error_message); + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + /** - --> (c) loop over initial conditions and wavenumbers; for each of them, evolve perturbations and compute source functions with perturb_solve() */ + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + if (ppt->perturbations_verbose > 1) + printf("Evolving ic %d/%d\n",index_ic+1,ppt->ic_size[index_md]); + + if (ppt->perturbations_verbose > 1) + printf("evolving %d wavenumbers\n",ppt->k_size[index_md]); + + abort = _FALSE_; + +#pragma omp parallel \ + shared(pppw,ppr,pba,pth,ppt,index_md,index_ic,abort,number_of_threads) \ + private(index_k,thread,tstart,tstop,tspent) \ + num_threads(number_of_threads) + + { + +#ifdef _OPENMP + thread=omp_get_thread_num(); + tspent=0.; +#endif + +#pragma omp for schedule (dynamic) + + /* integrating backwards is slightly more optimal for parallel runs */ + //for (index_k = 0; index_k < ppt->k_size; index_k++) { + for (index_k = ppt->k_size[index_md]-1; index_k >=0; index_k--) { + + if ((ppt->perturbations_verbose > 2) && (abort == _FALSE_)) { + printf("evolving mode k=%e /Mpc (%d/%d)",ppt->k[index_md][index_k],index_k+1,ppt->k_size[index_md]); + if (pba->sgnK != 0) + printf(" (for scalar modes, corresponds to nu=%e)",sqrt(ppt->k[index_md][index_k]*ppt->k[index_md][index_k]+pba->K)/sqrt(pba->sgnK*pba->K)); + printf("\n"); + } + +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif + + class_call_parallel(perturb_solve(ppr, + pba, + pth, + ppt, + index_md, + index_ic, + index_k, + pppw[thread]), + ppt->error_message, + ppt->error_message); + +#ifdef _OPENMP + tstop = omp_get_wtime(); + + tspent += tstop-tstart; +#endif + +#pragma omp flush(abort) + + } /* end of loop over wavenumbers */ + +#ifdef _OPENMP + if (ppt->perturbations_verbose>1) + printf("In %s: time spent in parallel region (loop over k's) = %e s for thread %d\n", + __func__,tspent,omp_get_thread_num()); +#endif + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + } /* end of loop over initial conditions */ + + abort = _FALSE_; + +#pragma omp parallel \ + shared(pppw,ppt,index_md,abort,number_of_threads) \ + private(thread) \ + num_threads(number_of_threads) + + { + +#ifdef _OPENMP + thread=omp_get_thread_num(); +#endif + + class_call_parallel(perturb_workspace_free(ppt,index_md,pppw[thread]), + ppt->error_message, + ppt->error_message); + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + } /* end loop over modes */ + + free(pppw); + + return _SUCCESS_; +} + +/** + * Free all memory space allocated by perturb_init(). + * + * To be called at the end of each run, only when no further calls to + * perturb_sources_at_tau() are needed. + * + * @param ppt Input: perturbation structure to be freed + * @return the error status + */ + +int perturb_free( + struct perturbs * ppt + ) { + + int index_md,index_ic,index_type; + int filenum; + + if (ppt->has_perturbations == _TRUE_) { + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + + free(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type]); + + } + + } + + free(ppt->sources[index_md]); + + free(ppt->k[index_md]); + + } + + free(ppt->tau_sampling); + + free(ppt->tp_size); + + free(ppt->ic_size); + + free(ppt->k); + + free(ppt->k_size_cmb); + + free(ppt->k_size_cl); + + free(ppt->k_size); + + free(ppt->sources); + + /** Stuff related to perturbations output: */ + + /** - Free non-NULL pointers */ + if (ppt->index_k_output_values != NULL) + free(ppt->index_k_output_values); + + for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ + if (ppt->scalar_perturbations_data[filenum] != NULL) + free(ppt->scalar_perturbations_data[filenum]); + if (ppt->vector_perturbations_data[filenum] != NULL) + free(ppt->vector_perturbations_data[filenum]); + if (ppt->tensor_perturbations_data[filenum] != NULL) + free(ppt->tensor_perturbations_data[filenum]); + } + + } + + return _SUCCESS_; + +} + +/** + * Initialize all indices and allocate most arrays in perturbs structure. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input/Output: Initialized perturbation structure + * @return the error status + */ + +int perturb_indices_of_perturbs( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_type; + int index_md; + int index_ic; + int index_type_common; + + /** - count modes (scalar, vector, tensor) and assign corresponding indices */ + + index_md = 0; + class_define_index(ppt->index_md_scalars,ppt->has_scalars,index_md,1); + class_define_index(ppt->index_md_vectors,ppt->has_vectors,index_md,1); + class_define_index(ppt->index_md_tensors,ppt->has_tensors,index_md,1); + ppt->md_size = index_md; + + class_test(index_md == 0, + ppt->error_message, + "you should have at least one out of {scalars, vectors, tensors} !!!"); + + /** - allocate array of number of types for each mode, ppt->tp_size[index_md] */ + + class_alloc(ppt->tp_size,ppt->md_size*sizeof(int),ppt->error_message); + + /** - allocate array of number of initial conditions for each mode, ppt->ic_size[index_md] */ + + class_alloc(ppt->ic_size,ppt->md_size*sizeof(int),ppt->error_message); + + /** - allocate array of arrays of source functions for each mode, ppt->source[index_md] */ + + class_alloc(ppt->sources,ppt->md_size * sizeof(double *),ppt->error_message); + + /** - initialization of all flags to false (will eventually be set to true later) */ + + ppt->has_cmb = _FALSE_; + ppt->has_lss = _FALSE_; + + ppt->has_source_t = _FALSE_; + ppt->has_source_p = _FALSE_; + ppt->has_source_delta_m = _FALSE_; + ppt->has_source_delta_g = _FALSE_; + ppt->has_source_delta_b = _FALSE_; + ppt->has_source_delta_cdm = _FALSE_; + ppt->has_source_delta_dcdm = _FALSE_; + ppt->has_source_delta_fld = _FALSE_; + ppt->has_source_delta_scf = _FALSE_; + ppt->has_source_delta_dr = _FALSE_; + ppt->has_source_delta_ur = _FALSE_; + ppt->has_source_delta_ncdm = _FALSE_; + ppt->has_source_theta_m = _FALSE_; + ppt->has_source_theta_g = _FALSE_; + ppt->has_source_theta_b = _FALSE_; + ppt->has_source_theta_cdm = _FALSE_; + ppt->has_source_theta_dcdm = _FALSE_; + ppt->has_source_theta_fld = _FALSE_; + ppt->has_source_theta_scf = _FALSE_; + ppt->has_source_theta_dr = _FALSE_; + ppt->has_source_theta_ur = _FALSE_; + ppt->has_source_theta_ncdm = _FALSE_; + ppt->has_source_phi = _FALSE_; + ppt->has_source_phi_prime = _FALSE_; + ppt->has_source_phi_plus_psi = _FALSE_; + ppt->has_source_psi = _FALSE_; + + /** - source flags and indices, for sources that all modes have in + common (temperature, polarization, ...). For temperature, the + term t2 is always non-zero, while other terms are non-zero only + for scalars and vectors. For polarization, the term e is always + non-zero, while the term b is only for vectors and tensors. */ + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + ppt->has_source_t = _TRUE_; + ppt->has_cmb = _TRUE_; + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + ppt->has_source_p = _TRUE_; + ppt->has_cmb = _TRUE_; + } + + index_type = 0; + class_define_index(ppt->index_tp_t2,ppt->has_source_t,index_type,1); + class_define_index(ppt->index_tp_p,ppt->has_source_p,index_type,1); + index_type_common = index_type; + + /* indices for perturbed recombination */ + + class_define_index(ppt->index_tp_perturbed_recombination_delta_temp,ppt->has_perturbed_recombination,index_type,1); + class_define_index(ppt->index_tp_perturbed_recombination_delta_chi,ppt->has_perturbed_recombination,index_type,1); + + + + + /** - define k values with perturb_get_k_list() */ + + class_call(perturb_get_k_list(ppr, + pba, + pth, + ppt), + ppt->error_message, + ppt->error_message); + + /** - loop over modes. Initialize flags and indices which are specific to each mode. */ + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + /** - (a) scalars */ + + if (_scalars_) { + + /** - --> source flags and indices, for sources that are specific to scalars */ + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) || (ppt->has_cl_lensing_potential)) { + ppt->has_lss = _TRUE_; + ppt->has_source_phi_plus_psi = _TRUE_; + } + + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_nl_corrections_based_on_delta_m)) { + ppt->has_lss = _TRUE_; + ppt->has_source_delta_m = _TRUE_; + } + + if (ppt->has_density_transfers == _TRUE_) { + ppt->has_lss = _TRUE_; + ppt->has_source_delta_g = _TRUE_; + ppt->has_source_delta_b = _TRUE_; + if (pba->has_cdm == _TRUE_) + ppt->has_source_delta_cdm = _TRUE_; + if (pba->has_dcdm == _TRUE_) + ppt->has_source_delta_dcdm = _TRUE_; + if (pba->has_fld == _TRUE_) + ppt->has_source_delta_fld = _TRUE_; + if (pba->has_scf == _TRUE_) + ppt->has_source_delta_scf = _TRUE_; + if (pba->has_ur == _TRUE_) + ppt->has_source_delta_ur = _TRUE_; + if (pba->has_dr == _TRUE_) + ppt->has_source_delta_dr = _TRUE_; + if (pba->has_ncdm == _TRUE_) + ppt->has_source_delta_ncdm = _TRUE_; + // Thanks to the following lines, (phi,psi) are also stored as sources + // (Obtained directly in newtonian gauge, infereed from (h,eta) in synchronous gauge). + // If density transfer functions are requested in the (default) CLASS format, + // (phi, psi) will be appended to the delta_i's in the final output. + ppt->has_source_phi = _TRUE_; + ppt->has_source_psi = _TRUE_; + } + + if (ppt->has_velocity_transfers == _TRUE_) { + ppt->has_lss = _TRUE_; + ppt->has_source_theta_g = _TRUE_; + ppt->has_source_theta_b = _TRUE_; + if ((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous)) + ppt->has_source_theta_cdm = _TRUE_; + if (pba->has_dcdm == _TRUE_) + ppt->has_source_theta_dcdm = _TRUE_; + if (pba->has_fld == _TRUE_) + ppt->has_source_theta_fld = _TRUE_; + if (pba->has_scf == _TRUE_) + ppt->has_source_theta_scf = _TRUE_; + if (pba->has_ur == _TRUE_) + ppt->has_source_theta_ur = _TRUE_; + if (pba->has_dr == _TRUE_) + ppt->has_source_theta_dr = _TRUE_; + if (pba->has_ncdm == _TRUE_) + ppt->has_source_theta_ncdm = _TRUE_; + } + + if (ppt->has_cl_number_count == _TRUE_) { + ppt->has_lss = _TRUE_; + if (ppt->has_nc_density == _TRUE_) { + ppt->has_source_delta_m = _TRUE_; + } + if (ppt->has_nc_rsd == _TRUE_) { + ppt->has_source_theta_m = _TRUE_; + } + if (ppt->has_nc_lens == _TRUE_) { + ppt->has_source_phi_plus_psi = _TRUE_; + } + if (ppt->has_nc_gr == _TRUE_) { + ppt->has_source_phi = _TRUE_; + ppt->has_source_psi = _TRUE_; + ppt->has_source_phi_prime = _TRUE_; + ppt->has_source_phi_plus_psi = _TRUE_; + } + } + + index_type = index_type_common; + class_define_index(ppt->index_tp_t0, ppt->has_source_t, index_type,1); + class_define_index(ppt->index_tp_t1, ppt->has_source_t, index_type,1); + class_define_index(ppt->index_tp_delta_m, ppt->has_source_delta_m, index_type,1); + class_define_index(ppt->index_tp_delta_g, ppt->has_source_delta_g, index_type,1); + class_define_index(ppt->index_tp_delta_b, ppt->has_source_delta_b, index_type,1); + class_define_index(ppt->index_tp_delta_cdm, ppt->has_source_delta_cdm, index_type,1); + class_define_index(ppt->index_tp_delta_dcdm, ppt->has_source_delta_dcdm,index_type,1); + class_define_index(ppt->index_tp_delta_fld, ppt->has_source_delta_fld, index_type,1); + class_define_index(ppt->index_tp_delta_scf, ppt->has_source_delta_scf, index_type,1); + class_define_index(ppt->index_tp_delta_dr, ppt->has_source_delta_dr, index_type,1); + class_define_index(ppt->index_tp_delta_ur, ppt->has_source_delta_ur, index_type,1); + class_define_index(ppt->index_tp_delta_ncdm1,ppt->has_source_delta_ncdm,index_type,pba->N_ncdm); + class_define_index(ppt->index_tp_theta_m, ppt->has_source_theta_m, index_type,1); + class_define_index(ppt->index_tp_theta_g, ppt->has_source_theta_g, index_type,1); + class_define_index(ppt->index_tp_theta_b, ppt->has_source_theta_b, index_type,1); + class_define_index(ppt->index_tp_theta_cdm, ppt->has_source_theta_cdm, index_type,1); + class_define_index(ppt->index_tp_theta_dcdm, ppt->has_source_theta_dcdm,index_type,1); + class_define_index(ppt->index_tp_theta_fld, ppt->has_source_theta_fld, index_type,1); + class_define_index(ppt->index_tp_theta_scf, ppt->has_source_theta_scf, index_type,1); + class_define_index(ppt->index_tp_theta_dr, ppt->has_source_theta_dr, index_type,1); + class_define_index(ppt->index_tp_theta_ur, ppt->has_source_theta_ur, index_type,1); + class_define_index(ppt->index_tp_theta_ncdm1,ppt->has_source_theta_ncdm,index_type,pba->N_ncdm); + class_define_index(ppt->index_tp_phi, ppt->has_source_phi, index_type,1); + class_define_index(ppt->index_tp_phi_prime, ppt->has_source_phi_prime, index_type,1); + class_define_index(ppt->index_tp_phi_plus_psi,ppt->has_source_phi_plus_psi,index_type,1); + class_define_index(ppt->index_tp_psi, ppt->has_source_psi, index_type,1); + ppt->tp_size[index_md] = index_type; + + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for scalars, so you should have at least one non-zero scalar source type (temperature, polarization, lensing/gravitational potential, ...). Please adjust your input."); + + /** - --> count scalar initial conditions (for scalars: ad, cdi, nid, niv; for tensors: only one) and assign corresponding indices */ + + index_ic = 0; + class_define_index(ppt->index_ic_ad, ppt->has_ad, index_ic,1); + class_define_index(ppt->index_ic_bi, ppt->has_bi, index_ic,1); + class_define_index(ppt->index_ic_cdi,ppt->has_cdi,index_ic,1); + class_define_index(ppt->index_ic_nid,ppt->has_nid,index_ic,1); + class_define_index(ppt->index_ic_niv,ppt->has_niv,index_ic,1); + ppt->ic_size[index_md] = index_ic; + + class_test(index_ic == 0, + ppt->error_message, + "you should have at least one adiabatic or isocurvature initial condition...} !!!"); + + } + + /** - (b) vectors */ + + if (_vectors_) { + + /** - --> source flags and indices, for sources that are specific to vectors */ + + index_type = index_type_common; + class_define_index(ppt->index_tp_t1,ppt->has_source_t,index_type,1); + ppt->tp_size[index_md] = index_type; + + /* + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for vectors, so you should have at least one non-zero vector source type (temperature or polarization). Please adjust your input."); + */ + + /** - --> initial conditions for vectors*/ + + index_ic = 0; + /* not coded yet */ + ppt->ic_size[index_md] = index_ic; + + } + + /** - (c) tensors */ + if (_tensors_) { + + /** - --> source flags and indices, for sources that are specific to tensors */ + + index_type = index_type_common; + /* nothing specific, unlike for vectors and scalars! */ + ppt->tp_size[index_md] = index_type; + + /* + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); + */ + + /** - --> only one initial condition for tensors*/ + + index_ic = 0; + class_define_index(ppt->index_ic_ten,_TRUE_,index_ic,1); + ppt->ic_size[index_md] = index_ic; + + } + + /** - (d) for each mode, allocate array of arrays of source functions for each initial conditions and wavenumber, (ppt->source[index_md])[index_ic][index_type] */ + + class_alloc(ppt->sources[index_md], + ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), + ppt->error_message); + + } + + return _SUCCESS_; + +} + +/** + * Define time sampling for source functions. + * + * For each type, compute the list of values of tau at which sources + * will be sampled. Knowing the number of tau values, allocate all + * arrays of source functions. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input/Output: Initialized perturbation structure + * @return the error status + */ + +int perturb_timesampling_for_sources( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { + + /** Summary: */ + + /** - define local variables */ + + int counter; + int index_md; + int index_type; + int index_ic; + int last_index_back; + int last_index_thermo; + int first_index_back; + int first_index_thermo; + + double tau; + double tau_ini; + double tau_lower; + double tau_upper; + double tau_mid; + + double timescale_source; + double rate_thermo; + double rate_isw_squared; + double a_prime_over_a; + double a_primeprime_over_a; + double * pvecback; + double * pvecthermo; + + /** - allocate background/thermodynamics vectors */ + + class_alloc(pvecback,pba->bg_size_short*sizeof(double),ppt->error_message); + class_alloc(pvecthermo,pth->th_size*sizeof(double),ppt->error_message); + + /** - first, just count the number of sampling points in order to allocate the array containing all values */ + + /** - (a) if CMB requested, first sampling point = when the universe + stops being opaque; otherwise, start sampling gravitational + potential at recombination [however, if perturbed recombination + is requested, we also need to start the system before + recombination. Otherwise, the initial conditions for gas + temperature and ionization fraction perturbations (delta_T = 1/3 + delta_b, delta_x_e) are not valid]. */ + + if ((ppt->has_cmb == _TRUE_)||(ppt->has_perturbed_recombination == _TRUE_)) { + + /* using bisection, search time tau such that the ratio of thermo + to Hubble time scales tau_c/tau_h=aH/kappa' is equal to + start_sources_at_tau_c_over_tau_h */ + + tau_lower = pth->tau_ini; + + class_call(background_at_tau(pba, + tau_lower, + pba->short_info, + pba->inter_normal, + &first_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_normal, + &first_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + + class_test(pvecback[pba->index_bg_a]* + pvecback[pba->index_bg_H]/ + pvecthermo[pth->index_th_dkappa] > + ppr->start_sources_at_tau_c_over_tau_h, + ppt->error_message, + "your choice of initial time for computing sources is inappropriate: it corresponds to an earlier time than the one at which the integration of thermodynamical variables started (tau=%g). You should increase either 'start_sources_at_tau_c_over_tau_h' or 'recfast_z_initial'\n", + tau_lower); + + + tau_upper = pth->tau_rec; + + class_call(background_at_tau(pba, + tau_upper, + pba->short_info, + pba->inter_normal, + &first_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_normal, + &first_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + + class_test(pvecback[pba->index_bg_a]* + pvecback[pba->index_bg_H]/ + pvecthermo[pth->index_th_dkappa] < + ppr->start_sources_at_tau_c_over_tau_h, + ppt->error_message, + "your choice of initial time for computing sources is inappropriate: it corresponds to a time after recombination. You should decrease 'start_sources_at_tau_c_over_tau_h'\n"); + + tau_mid = 0.5*(tau_lower + tau_upper); + + while (tau_upper - tau_lower > ppr->tol_tau_approx) { + + class_call(background_at_tau(pba, + tau_mid, + pba->short_info, + pba->inter_normal, + &first_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_normal, + &first_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + + + if (pvecback[pba->index_bg_a]* + pvecback[pba->index_bg_H]/ + pvecthermo[pth->index_th_dkappa] > + ppr->start_sources_at_tau_c_over_tau_h) + + tau_upper = tau_mid; + else + tau_lower = tau_mid; + + tau_mid = 0.5*(tau_lower + tau_upper); + + } + + tau_ini = tau_mid; + + } + else { + + /* check the time corresponding to the highest redshift requested in output plus one */ + class_call(background_tau_of_z(pba, + ppt->z_max_pk+1, + &tau_ini), + pba->error_message, + ppt->error_message); + + /* obsolete: previous choice was to start always at recombination time */ + /* tau_ini = pth->tau_rec; */ + + /* set values of first_index_back/thermo */ + class_call(background_at_tau(pba, + tau_ini, + pba->short_info, + pba->inter_normal, + &first_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_normal, + &first_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + } + + /** - (b) next sampling point = previous + ppr->perturb_sampling_stepsize * timescale_source, where: + - --> if CMB requested: + timescale_source1 = \f$ |g/\dot{g}| = |\dot{\kappa}-\ddot{\kappa}/\dot{\kappa}|^{-1} \f$; + timescale_source2 = \f$ |2\ddot{a}/a-(\dot{a}/a)^2|^{-1/2} \f$ (to sample correctly the late ISW effect; and + timescale_source=1/(1/timescale_source1+1/timescale_source2); repeat till today. + - --> if CMB not requested: + timescale_source = 1/aH; repeat till today. + */ + + counter = 1; + last_index_back = first_index_back; + last_index_thermo = first_index_thermo; + tau = tau_ini; + + while (tau < pba->conformal_age) { + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_closeby, + &last_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_closeby, + &last_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + + if (ppt->has_cmb == _TRUE_) { + + /* variation rate of thermodynamics variables */ + rate_thermo = pvecthermo[pth->index_th_rate]; + + /* variation rate of metric due to late ISW effect (important at late times) */ + a_prime_over_a = pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a]; + a_primeprime_over_a = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + + 2. * a_prime_over_a * a_prime_over_a; + rate_isw_squared = fabs(2.*a_primeprime_over_a-a_prime_over_a*a_prime_over_a); + + /* compute rate */ + timescale_source = sqrt(rate_thermo*rate_thermo+rate_isw_squared); + } + else { + /* variation rate given by Hubble time */ + a_prime_over_a = pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a]; + + timescale_source = a_prime_over_a; + } + + /* check it is non-zero */ + class_test(timescale_source == 0., + ppt->error_message, + "null evolution rate, integration is diverging"); + + /* compute inverse rate */ + timescale_source = 1./timescale_source; + + class_test(fabs(ppr->perturb_sampling_stepsize*timescale_source/tau) < ppr->smallest_allowed_variation, + ppt->error_message, + "integration step =%e < machine precision : leads either to numerical error or infinite loop",ppr->perturb_sampling_stepsize*timescale_source); + + tau = tau + ppr->perturb_sampling_stepsize*timescale_source; + counter++; + + } + + /** - --> infer total number of time steps, ppt->tau_size */ + ppt->tau_size = counter; + + /** - --> allocate array of time steps, ppt->tau_sampling[index_tau] */ + class_alloc(ppt->tau_sampling,ppt->tau_size * sizeof(double),ppt->error_message); + + /** - --> repeat the same steps, now filling the array with each tau value: */ + + /** - --> (b.1.) first sampling point = when the universe stops being opaque */ + + counter = 0; + ppt->tau_sampling[counter]=tau_ini; + + /** - --> (b.2.) next sampling point = previous + ppr->perturb_sampling_stepsize * timescale_source, where + timescale_source1 = \f$ |g/\dot{g}| = |\dot{\kappa}-\ddot{\kappa}/\dot{\kappa}|^{-1} \f$; + timescale_source2 = \f$ |2\ddot{a}/a-(\dot{a}/a)^2|^{-1/2} \f$ (to sample correctly the late ISW effect; and + timescale_source=1/(1/timescale_source1+1/timescale_source2); repeat till today. + If CMB not requested: + timescale_source = 1/aH; repeat till today. */ + + last_index_back = first_index_back; + last_index_thermo = first_index_thermo; + tau = tau_ini; + + while (tau < pba->conformal_age) { + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_closeby, + &last_index_back, + pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_closeby, + &last_index_thermo, + pvecback, + pvecthermo), + pth->error_message, + ppt->error_message); + + if (ppt->has_cmb == _TRUE_) { + + /* variation rate of thermodynamics variables */ + rate_thermo = pvecthermo[pth->index_th_rate]; + + /* variation rate of metric due to late ISW effect (important at late times) */ + a_prime_over_a = pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a]; + a_primeprime_over_a = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + + 2. * a_prime_over_a * a_prime_over_a; + rate_isw_squared = fabs(2.*a_primeprime_over_a-a_prime_over_a*a_prime_over_a); + + /* compute rate */ + timescale_source = sqrt(rate_thermo*rate_thermo+rate_isw_squared); + } + else { + a_prime_over_a = pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a]; + timescale_source = a_prime_over_a; + } + + /* check it is non-zero */ + class_test(timescale_source == 0., + ppt->error_message, + "null evolution rate, integration is diverging"); + + /* compute inverse rate */ + timescale_source = 1./timescale_source; + + class_test(fabs(ppr->perturb_sampling_stepsize*timescale_source/tau) < ppr->smallest_allowed_variation, + ppt->error_message, + "integration step =%e < machine precision : leads either to numerical error or infinite loop",ppr->perturb_sampling_stepsize*timescale_source); + + tau = tau + ppr->perturb_sampling_stepsize*timescale_source; + counter++; + ppt->tau_sampling[counter]=tau; + + } + + /** - last sampling point = exactly today */ + ppt->tau_sampling[counter] = pba->conformal_age; + + free(pvecback); + free(pvecthermo); + + /** - loop over modes, initial conditions and types. For each of + them, allocate array of source functions. */ + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + + class_alloc(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], + ppt->k_size[index_md] * ppt->tau_size * sizeof(double), + ppt->error_message); + + } + } + } + + return _SUCCESS_; +} + +/** + * Define the number of comoving wavenumbers using the information + * passed in the precision structure. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @return the error status + */ + +int perturb_get_k_list( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { + int index_k, index_k_output, index_mode; + double k,k_min=0.,k_rec,step,tau1; + double * k_max_cmb; + double * k_max_cl; + double k_max=0.; + double scale2; + double *tmp_k_list; + int newk_size, index_newk, add_k_output_value; + + /** Summary: */ + + class_test(ppr->k_step_transition == 0., + ppt->error_message, + "stop to avoid division by zero"); + + class_test(pth->rs_rec == 0., + ppt->error_message, + "stop to avoid division by zero"); + + /** - allocate arrays related to k list for each mode */ + + class_alloc(ppt->k_size_cmb, + ppt->md_size*sizeof(int), + ppt->error_message); + class_alloc(ppt->k_size_cl, + ppt->md_size*sizeof(int), + ppt->error_message); + class_alloc(ppt->k_size, + ppt->md_size*sizeof(int), + ppt->error_message); + class_alloc(ppt->k, + ppt->md_size*sizeof(double*), + ppt->error_message); + + class_calloc(k_max_cmb, + ppt->md_size, + sizeof(double), + ppt->error_message); + class_calloc(k_max_cl, + ppt->md_size, + sizeof(double), + ppt->error_message); + + /** - scalar modes */ + + if (ppt->has_scalars == _TRUE_) { + + /* first value */ + if (pba->sgnK == 0) { + /* K<0 (flat) : start close to zero */ + k_min=ppr->k_min_tau0/pba->conformal_age; + } + else if (pba->sgnK == -1) { + /* K<0 (open) : start close to sqrt(-K) + (in transfer modules, for scalars, this will correspond to q close to zero; + for vectors and tensors, this value is even smaller than the minimum necessary value) */ + k_min=sqrt(-pba->K+pow(ppr->k_min_tau0/pba->conformal_age/pth->angular_rescaling,2)); + + } + else if (pba->sgnK == 1) { + /* K>0 (closed): start from q=sqrt(k2+(1+m)K) equal to 3sqrt(K), i.e. k=sqrt((8-m)K) */ + k_min = sqrt((8.-1.e-4)*pba->K); + } + + /** - --> find k_max (as well as k_max_cmb[ppt->index_md_scalars], k_max_cl[ppt->index_md_scalars]) */ + + k_rec = 2. * _PI_ / pth->rs_rec; /* comoving scale corresponding to sound horizon at recombination */ + + k_max_cmb[ppt->index_md_scalars] = k_min; + k_max_cl[ppt->index_md_scalars] = k_min; + k_max = k_min; + + if (ppt->has_cls == _TRUE_) { + + /* find k_max_cmb[ppt->index_md_scalars] : */ + + /* choose a k_max_cmb[ppt->index_md_scalars] corresponding to a wavelength on the last + scattering surface seen today under an angle smaller than + pi/lmax: this is equivalent to + k_max_cl[ppt->index_md_scalars]*[comvoving.ang.diameter.distance] > l_max */ + + k_max_cmb[ppt->index_md_scalars] = ppr->k_max_tau0_over_l_max*ppt->l_scalar_max + /pba->conformal_age/pth->angular_rescaling; + k_max_cl[ppt->index_md_scalars] = k_max_cmb[ppt->index_md_scalars]; + k_max = k_max_cmb[ppt->index_md_scalars]; + + /* find k_max_cl[ppt->index_md_scalars] : */ + + /* if we need density/lensing Cl's, we must impose a stronger condition, + such that the minimum wavelength on the shell corresponding + to the center of smallest redshift bin is seen under an + angle smaller than pi/lmax. So we must multiply our previous + k_max_cl[ppt->index_md_scalars] by the ratio tau0/(tau0-tau[center of smallest + redshift bin]). Note that we could do the same with the + lensing potential if we needed a very precise C_l^phi-phi at + large l. We don't do it by default, because the lensed ClT, + ClE would be marginally affected. */ + + if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { + + class_call(background_tau_of_z(pba, + ppt->selection_mean[0], + &tau1), + pba->error_message, + ppt->error_message); + + k_max_cl[ppt->index_md_scalars] = MAX(k_max_cl[ppt->index_md_scalars],ppr->k_max_tau0_over_l_max*ppt->l_lss_max/(pba->conformal_age-tau1)); // to be very accurate we should use angular diameter distance to given redshift instead of comoving radius: would implement corrections depending on curvature + k_max = k_max_cl[ppt->index_md_scalars]; + } + } + + /* find k_max: */ + + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) + k_max = MAX(k_max,ppt->k_max_for_pk); + + if (ppt->has_nl_corrections_based_on_delta_m == _TRUE_) + k_max = MAX(k_max,ppr->halofit_min_k_max); + + /** - --> test that result for k_min, k_max make sense */ + + class_test(k_min<0., + ppt->error_message, + "buggy definition of k_min"); + + class_test(k_max<0., + ppt->error_message, + "buggy definition of k_max"); + + class_test(k_maxerror_message, + "buggy definition of k_min and/or k_max"); + + /* if K>0, the transfer function will be calculated for discrete + integer values of nu=3,4,5,... where nu=sqrt(k2+(1+m)K) and + m=0,1,2 for scalars/vectors/tensors. However we are free to + define in the perturbation module some arbitrary values of k: + later on, the transfer module will interpolate at values of k + corresponding exactly to integer values of nu. Hence, apart + from the value of k_min and the step size in the vicinity of + k_min, we define exactly the same sampling in the three cases + K=0, K<0, K>0 */ + + /* allocate array with, for the moment, the largest possible size */ + class_alloc(ppt->k[ppt->index_md_scalars], + ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ + (int)(MAX(ppr->k_per_decade_for_pk,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) + *sizeof(double),ppt->error_message); + + /* first value */ + + index_k=0; + k = k_min; + ppt->k[ppt->index_md_scalars][index_k] = k; + index_k++; + + /* values until k_max_cmb[ppt->index_md_scalars] */ + + while (k < k_max_cmb[ppt->index_md_scalars]) { + + /* the linear step is not constant, it has a step-like shape, + centered around the characteristic scale set by the sound + horizon at recombination (associated to the comoving wavenumber + k_rec) */ + + step = (ppr->k_step_super + + 0.5 * (tanh((k-k_rec)/k_rec/ppr->k_step_transition)+1.) + * (ppr->k_step_sub-ppr->k_step_super)) * k_rec; + + /* there is one other thing to take into account in the step + size. There are two other characteristic scales that matter for + the sampling: the Hubble scale today, k0=a0H0, and eventually + curvature scale sqrt(|K|). We define "scale2" as the sum of the + squared Hubble radius and squared curvature radius. We need to + increase the sampling for k0 limit, by up to a factor 10. The actual + stepsize is still fixed by k_step_super, this is just a + reduction factor. */ + + scale2 = pow(pba->a_today*pba->H0,2)+fabs(pba->K); + + step *= (k*k/scale2+1.)/(k*k/scale2+1./ppr->k_step_super_reduction); + + class_test(step / k < ppr->smallest_allowed_variation, + ppt->error_message, + "k step =%e < machine precision : leads either to numerical error or infinite loop", + step * k_rec); + + k += step; + + class_test(k <= ppt->k[ppt->index_md_scalars][index_k-1], + ppt->error_message, + "consecutive values of k should differ and should be in growing order"); + + ppt->k[ppt->index_md_scalars][index_k] = k; + + index_k++; + } + + ppt->k_size_cmb[ppt->index_md_scalars] = index_k; + + /* values until k_max_cl[ppt->index_md_scalars] */ + + while (k < k_max_cl[ppt->index_md_scalars]) { + + k *= pow(10.,1./(ppr->k_per_decade_for_pk + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + + ppt->k[ppt->index_md_scalars][index_k] = k; + index_k++; + } + + ppt->k_size_cl[ppt->index_md_scalars] = index_k; + + /* values until k_max */ + + while (k < k_max) { + + k *= pow(10.,1./(ppr->k_per_decade_for_pk + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + + ppt->k[ppt->index_md_scalars][index_k] = k; + index_k++; + } + + ppt->k_size[ppt->index_md_scalars] = index_k; + + class_realloc(ppt->k[ppt->index_md_scalars], + ppt->k[ppt->index_md_scalars], + ppt->k_size[ppt->index_md_scalars]*sizeof(double), + ppt->error_message); + } + + /** - vector modes */ + + if (ppt->has_vectors == _TRUE_) { + + /* first value */ + if (pba->sgnK == 0) { + /* K<0 (flat) : start close to zero */ + k_min=ppr->k_min_tau0/pba->conformal_age; + } + else if (pba->sgnK == -1) { + /* K<0 (open) : start close to sqrt(-K) + (in transfer modules, for scalars, this will correspond to q close to zero; + for vectors and tensors, this value is even smaller than the minimum necessary value) */ + k_min=sqrt(-pba->K+pow(ppr->k_min_tau0/pba->conformal_age/pth->angular_rescaling,2)); + + } + else if (pba->sgnK == 1) { + /* K>0 (closed): start from q=sqrt(k2+(1+m)K) equal to 3sqrt(K), i.e. k=sqrt((8-m)K) */ + k_min = sqrt((7.-1.e-4)*pba->K); + } + + /** - --> find k_max (as well as k_max_cmb[ppt->index_md_vectors], k_max_cl[ppt->index_md_vectors]) */ + + k_rec = 2. * _PI_ / pth->rs_rec; /* comoving scale corresponding to sound horizon at recombination */ + + k_max_cmb[ppt->index_md_vectors] = k_min; + k_max_cl[ppt->index_md_vectors] = k_min; + k_max = k_min; + + if (ppt->has_cls == _TRUE_) { + + /* find k_max_cmb: */ + + /* choose a k_max_cmb corresponding to a wavelength on the last + scattering surface seen today under an angle smaller than + pi/lmax: this is equivalent to + k_max_cl*[comvoving.ang.diameter.distance] > l_max */ + + k_max_cmb[ppt->index_md_vectors] = ppr->k_max_tau0_over_l_max*ppt->l_vector_max + /pba->conformal_age/pth->angular_rescaling; + k_max_cl[ppt->index_md_vectors] = k_max_cmb[ppt->index_md_vectors]; + k_max = k_max_cmb[ppt->index_md_vectors]; + } + + /** - --> test that result for k_min, k_max make sense */ + + class_test(k_min<0., + ppt->error_message, + "buggy definition of k_min"); + + class_test(k_max<0., + ppt->error_message, + "buggy definition of k_max"); + + class_test(k_maxerror_message, + "buggy definition of k_min and/or k_max"); + + /* if K>0, the transfer function will be calculated for discrete + integer values of nu=3,4,5,... where nu=sqrt(k2+(1+m)K) and + m=0,1,2 for scalars/vectors/tensors. However we are free to + define in the perturbation module some arbitrary values of k: + later on, the transfer module will interpolate at values of k + corresponding exactly to integer values of nu. Hence, apart + from the value of k_min and the step size in the vicinity of + k_min, we define exactly the same sampling in the three cases + K=0, K<0, K>0 */ + + /* allocate array with, for the moment, the largest possible size */ + class_alloc(ppt->k[ppt->index_md_vectors], + ((int)((k_max_cmb[ppt->index_md_vectors]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+1) + *sizeof(double),ppt->error_message); + + /* first value */ + + index_k=0; + k = k_min; + ppt->k[ppt->index_md_vectors][index_k] = k; + index_k++; + + /* values until k_max_cmb[ppt->index_md_vectors] */ + + while (k < k_max_cmb[ppt->index_md_vectors]) { + + /* the linear step is not constant, it has a step-like shape, + centered around the characteristic scale set by the sound + horizon at recombination (associated to the comoving wavenumber + k_rec) */ + + step = (ppr->k_step_super + + 0.5 * (tanh((k-k_rec)/k_rec/ppr->k_step_transition)+1.) + * (ppr->k_step_sub-ppr->k_step_super)) * k_rec; + + /* there is one other thing to take into account in the step + size. There are two other characteristic scales that matter for + the sampling: the Hubble scale today, k0=a0H0, and eventually + curvature scale sqrt(|K|). We define "scale2" as the sum of the + squared Hubble radius and squared curvature radius. We need to + increase the sampling for k0 limit, by up to a factor 10. The actual + stepsize is still fixed by k_step_super, this is just a + reduction factor. */ + + scale2 = pow(pba->a_today*pba->H0,2)+fabs(pba->K); + + step *= (k*k/scale2+1.)/(k*k/scale2+1./ppr->k_step_super_reduction); + + class_test(step / k < ppr->smallest_allowed_variation, + ppt->error_message, + "k step =%e < machine precision : leads either to numerical error or infinite loop", + step * k_rec); + + k += step; + + class_test(k <= ppt->k[ppt->index_md_scalars][index_k-1], + ppt->error_message, + "consecutive values of k should differ and should be in growing order"); + + ppt->k[ppt->index_md_vectors][index_k] = k; + + index_k++; + } + + ppt->k_size_cmb[ppt->index_md_vectors] = index_k; + ppt->k_size_cl[ppt->index_md_vectors] = index_k; + ppt->k_size[ppt->index_md_vectors] = index_k; + + class_realloc(ppt->k[ppt->index_md_vectors], + ppt->k[ppt->index_md_vectors], + ppt->k_size[ppt->index_md_vectors]*sizeof(double), + ppt->error_message); + } + + /** - tensor modes */ + + if (ppt->has_tensors == _TRUE_) { + + /* first value */ + if (pba->sgnK == 0) { + /* K<0 (flat) : start close to zero */ + k_min=ppr->k_min_tau0/pba->conformal_age; + } + else if (pba->sgnK == -1) { + /* K<0 (open) : start close to sqrt(-K) + (in transfer modules, for scalars, this will correspond to q close to zero; + for vectors and tensors, this value is even smaller than the minimum necessary value) */ + k_min=sqrt(-pba->K+pow(ppr->k_min_tau0/pba->conformal_age/pth->angular_rescaling,2)); + + } + else if (pba->sgnK == 1) { + /* K>0 (closed): start from q=sqrt(k2+(1+m)K) equal to 3sqrt(K), i.e. k=sqrt((8-m)K) */ + k_min = sqrt((6.-1.e-4)*pba->K); + } + + /** - --> find k_max (as well as k_max_cmb[ppt->index_md_tensors], k_max_cl[ppt->index_md_tensors]) */ + + k_rec = 2. * _PI_ / pth->rs_rec; /* comoving scale corresponding to sound horizon at recombination */ + + k_max_cmb[ppt->index_md_tensors] = k_min; + k_max_cl[ppt->index_md_tensors] = k_min; + k_max = k_min; + + if (ppt->has_cls == _TRUE_) { + + /* find k_max_cmb[ppt->index_md_tensors]: */ + + /* choose a k_max_cmb[ppt->index_md_tensors] corresponding to a wavelength on the last + scattering surface seen today under an angle smaller than + pi/lmax: this is equivalent to + k_max_cl[ppt->index_md_tensors]*[comvoving.ang.diameter.distance] > l_max */ + + k_max_cmb[ppt->index_md_tensors] = ppr->k_max_tau0_over_l_max*ppt->l_tensor_max + /pba->conformal_age/pth->angular_rescaling; + k_max_cl[ppt->index_md_tensors] = k_max_cmb[ppt->index_md_tensors]; + k_max = k_max_cmb[ppt->index_md_tensors]; + } + + /** - --> test that result for k_min, k_max make sense */ + + class_test(k_min<0., + ppt->error_message, + "buggy definition of k_min"); + + class_test(k_max<0., + ppt->error_message, + "buggy definition of k_max"); + + class_test(k_maxerror_message, + "buggy definition of k_min and/or k_max"); + + /* if K>0, the transfer function will be calculated for discrete + integer values of nu=3,4,5,... where nu=sqrt(k2+(1+m)K) and + m=0,1,2 for scalars/vectors/tensors. However we are free to + define in the perturbation module some arbitrary values of k: + later on, the transfer module will interpolate at values of k + corresponding exactly to integer values of nu. Hence, apart + from the value of k_min and the step size in the vicinity of + k_min, we define exactly the same sampling in the three cases + K=0, K<0, K>0 */ + + /* allocate array with, for the moment, the largest possible size */ + class_alloc(ppt->k[ppt->index_md_tensors], + ((int)((k_max_cmb[ppt->index_md_tensors]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+1) + *sizeof(double),ppt->error_message); + + /* first value */ + + index_k=0; + k = k_min; + ppt->k[ppt->index_md_tensors][index_k] = k; + index_k++; + + /* values until k_max_cmb[ppt->index_md_tensors] */ + + while (k < k_max_cmb[ppt->index_md_tensors]) { + + /* the linear step is not constant, it has a step-like shape, + centered around the characteristic scale set by the sound + horizon at recombination (associated to the comoving wavenumber + k_rec) */ + + step = (ppr->k_step_super + + 0.5 * (tanh((k-k_rec)/k_rec/ppr->k_step_transition)+1.) + * (ppr->k_step_sub-ppr->k_step_super)) * k_rec; + + /* there is one other thing to take into account in the step + size. There are two other characteristic scales that matter for + the sampling: the Hubble scale today, k0=a0H0, and eventually + curvature scale sqrt(|K|). We define "scale2" as the sum of the + squared Hubble radius and squared curvature radius. We need to + increase the sampling for k0 limit, by up to a factor 10. The actual + stepsize is still fixed by k_step_super, this is just a + reduction factor. */ + + scale2 = pow(pba->a_today*pba->H0,2)+fabs(pba->K); + + step *= (k*k/scale2+1.)/(k*k/scale2+1./ppr->k_step_super_reduction); + + class_test(step / k < ppr->smallest_allowed_variation, + ppt->error_message, + "k step =%e < machine precision : leads either to numerical error or infinite loop", + step * k_rec); + + k += step; + + class_test(k <= ppt->k[ppt->index_md_tensors][index_k-1], + ppt->error_message, + "consecutive values of k should differ and should be in growing order"); + + ppt->k[ppt->index_md_tensors][index_k] = k; + + index_k++; + } + + ppt->k_size_cmb[ppt->index_md_tensors] = index_k; + ppt->k_size_cl[ppt->index_md_tensors] = index_k; + ppt->k_size[ppt->index_md_tensors] = index_k; + + class_realloc(ppt->k[ppt->index_md_tensors], + ppt->k[ppt->index_md_tensors], + ppt->k_size[ppt->index_md_tensors]*sizeof(double), + ppt->error_message); + } + + /** - If user asked for k_output_values, add those to all k lists: */ + if (ppt->k_output_values_num>0){ + /* Allocate storage */ + class_alloc(ppt->index_k_output_values,sizeof(double)*ppt->md_size*ppt->k_output_values_num,ppt->error_message); + + /** - --> Find indices in ppt->k[index_md] corresponding to 'k_output_values'. + We are assuming that ppt->k is sorted and growing, and we have made sure + that ppt->k_output_values is also sorted and growing.*/ + for (index_mode=0; index_modemd_size; index_mode++){ + + newk_size = ppt->k_size[index_mode]+ppt->k_output_values_num; + + class_alloc(tmp_k_list,sizeof(double)*newk_size,ppt->error_message); + + index_k=0; + index_k_output=0; + for (index_newk=0; index_newk Decide if we should add k_output_value now. This has to be this complicated, since we + can only compare the k-values when both indices are in range.*/ + if (index_k >= ppt->k_size[index_mode]) + add_k_output_value = _TRUE_; + else if (index_k_output >= ppt->k_output_values_num) + add_k_output_value = _FALSE_; + else if (ppt->k_output_values[index_k_output] < ppt->k[index_mode][index_k]) + add_k_output_value = _TRUE_; + else + add_k_output_value = _FALSE_; + + if (add_k_output_value == _TRUE_){ + tmp_k_list[index_newk] = ppt->k_output_values[index_k_output]; + ppt->index_k_output_values[index_mode*ppt->k_output_values_num+index_k_output]=index_newk; + index_k_output++; + } + else{ + tmp_k_list[index_newk] = ppt->k[index_mode][index_k]; + index_k++; + } + } + + free(ppt->k[index_mode]); + ppt->k[index_mode] = tmp_k_list; + ppt->k_size[index_mode] = newk_size; + + index_k = newk_size-1; + while (ppt->k[index_mode][index_k] > k_max_cl[index_mode]) + index_k--; + ppt->k_size_cl[index_mode] = MIN(index_k+2,ppt->k_size[index_mode]); + + index_k = newk_size-1; + while (ppt->k[index_mode][index_k] > k_max_cmb[index_mode]) + index_k--; + ppt->k_size_cmb[index_mode] = MIN(index_k+2,ppt->k_size[index_mode]); + + /** - --> The two MIN statements are here because in a normal run, the cl and cmb + arrays contain a single k value larger than their respective k_max. + We are mimicking this behavior. */ + } + } + + /* For testing, can be useful to print the k list in a file: + + FILE * out=fopen("output/k","w"); + + for (index_k=0; index_k < ppt->k_size[0]; index_k++) { + + fprintf(out,"%e\n",ppt->k[0][index_k],pba->K); + + } + fclose(out); + */ + + /** - finally, find the global k_min and k_max for the ensemble of all modes 9scalars, vectors, tensors) */ + + ppt->k_min = _HUGE_; + ppt->k_max = 0.; + if (ppt->has_scalars == _TRUE_) { + ppt->k_min = MIN(ppt->k_min,ppt->k[ppt->index_md_scalars][0]); /* first value, inferred from perturbations structure */ + ppt->k_max = MAX(ppt->k_max,ppt->k[ppt->index_md_scalars][ppt->k_size[ppt->index_md_scalars]-1]); /* last value, inferred from perturbations structure */ + } + if (ppt->has_vectors == _TRUE_) { + ppt->k_min = MIN(ppt->k_min,ppt->k[ppt->index_md_vectors][0]); /* first value, inferred from perturbations structure */ + ppt->k_max = MAX(ppt->k_max,ppt->k[ppt->index_md_vectors][ppt->k_size[ppt->index_md_vectors]-1]); /* last value, inferred from perturbations structure */ + } + if (ppt->has_tensors == _TRUE_) { + ppt->k_min = MIN(ppt->k_min,ppt->k[ppt->index_md_tensors][0]); /* first value, inferred from perturbations structure */ + ppt->k_max = MAX(ppt->k_max,ppt->k[ppt->index_md_tensors][ppt->k_size[ppt->index_md_tensors]-1]); /* last value, inferred from perturbations structure */ + } + + free(k_max_cmb); + free(k_max_cl); + + return _SUCCESS_; + +} + +/** + * Initialize a perturb_workspace structure. All fields are allocated + * here, with the exception of the perturb_vector '-->pv' field, which + * is allocated separately in perturb_vector_init. We allocate one + * such perturb_workspace structure per thread and per mode + * (scalar/../tensor). Then, for each thread, all initial conditions + * and wavenumbers will use the same workspace. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param ppw Input/Output: pointer to perturb_workspace structure which fields are allocated or filled here + * @return the error status + */ + +int perturb_workspace_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + struct perturb_workspace * ppw + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_mt=0; + int index_ap; + int l; + + /** - Compute maximum l_max for any multipole */; + if (_scalars_) { + ppw->max_l_max = MAX(ppr->l_max_g, ppr->l_max_pol_g); + if (pba->has_ur == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ur); + if (pba->has_ncdm == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ncdm); + if (pba->has_dr == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_dr); + } + if (_tensors_) { + ppw->max_l_max = MAX(ppr->l_max_g_ten, ppr->l_max_pol_g_ten); + if (pba->has_ur == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ur); + if (pba->has_ncdm == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ncdm); + } + + /** - Allocate \f$ s_l\f$[ ] array for freestreaming of multipoles (see arXiv:1305.3261) and initialize + to 1.0, which is the K=0 value. */ + class_alloc(ppw->s_l, sizeof(double)*(ppw->max_l_max+1),ppt->error_message); + for (l=0; l<=ppw->max_l_max; l++){ + ppw->s_l[l] = 1.0; + } + + /** - define indices of metric perturbations obeying constraint + equations (this can be done once and for all, because the + vector of metric perturbations is the same whatever the + approximation scheme, unlike the vector of quantities to + be integrated, which is allocated separately in + perturb_vector_init) */ + + if (_scalars_) { + + /* newtonian gauge */ + + if (ppt->gauge == newtonian) { + class_define_index(ppw->index_mt_psi,_TRUE_,index_mt,1); /* psi */ + class_define_index(ppw->index_mt_phi_prime,_TRUE_,index_mt,1); /* phi' */ + } + + /* synchronous gauge (note that eta is counted in the vector of + quantities to be integrated, while here we only consider + quantities obeying to constraint equations) */ + + if (ppt->gauge == synchronous) { + class_define_index(ppw->index_mt_h_prime,_TRUE_,index_mt,1); /* h' */ + class_define_index(ppw->index_mt_h_prime_prime,_TRUE_,index_mt,1); /* h'' */ + class_define_index(ppw->index_mt_eta_prime,_TRUE_,index_mt,1); /* eta' */ + class_define_index(ppw->index_mt_alpha,_TRUE_,index_mt,1); /* alpha = (h' + 6 tau') / (2 k**2) */ + class_define_index(ppw->index_mt_alpha_prime,_TRUE_,index_mt,1); /* alpha' */ + + } + + } + + if (_vectors_) { + + /* newtonian gauge */ + + if (ppt->gauge == newtonian) { + + class_define_index(ppw->index_mt_V_prime,_TRUE_,index_mt,1); + + } + + if (ppt->gauge == synchronous) { + + class_define_index(ppw->index_mt_hv_prime_prime,_TRUE_,index_mt,1); + + } + + } + + if (_tensors_) { + class_define_index(ppw->index_mt_gw_prime_prime,_TRUE_,index_mt,1); + } + + ppw->mt_size = index_mt; + + /** - allocate some workspace in which we will store temporarily the + values of background, thermodynamics, metric and source + quantities at a given time */ + + class_alloc(ppw->pvecback,pba->bg_size_normal*sizeof(double),ppt->error_message); + class_alloc(ppw->pvecthermo,pth->th_size*sizeof(double),ppt->error_message); + class_alloc(ppw->pvecmetric,ppw->mt_size*sizeof(double),ppt->error_message); + + /** - count number of approximations, initialize their indices, and allocate their flags */ + index_ap=0; + + class_define_index(ppw->index_ap_tca,_TRUE_,index_ap,1); + class_define_index(ppw->index_ap_rsa,_TRUE_,index_ap,1); + + if (_scalars_) { + + class_define_index(ppw->index_ap_ufa,pba->has_ur,index_ap,1); + class_define_index(ppw->index_ap_ncdmfa,pba->has_ncdm,index_ap,1); + + } + + ppw->ap_size=index_ap; + + if (ppw->ap_size > 0) + class_alloc(ppw->approx,ppw->ap_size*sizeof(int),ppt->error_message); + + /** - For definiteness, initialize approximation flags to arbitrary + values (correct values are overwritten in + pertub_find_approximation_switches) */ + + if (_scalars_) { + + ppw->approx[ppw->index_ap_tca]=(int)tca_on; + ppw->approx[ppw->index_ap_rsa]=(int)rsa_off; + if (pba->has_ur == _TRUE_) { + ppw->approx[ppw->index_ap_ufa]=(int)ufa_off; + } + if (pba->has_ncdm == _TRUE_) { + ppw->approx[ppw->index_ap_ncdmfa]=(int)ncdmfa_off; + } + } + + if (_tensors_) { + + ppw->approx[ppw->index_ap_tca]=(int)tca_on; + ppw->approx[ppw->index_ap_rsa]=(int)rsa_off; + } + + /** - allocate fields where some of the perturbations are stored */ + + if (_scalars_) { + + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_source_delta_m == _TRUE_)) { + + class_alloc(ppw->delta_ncdm,pba->N_ncdm*sizeof(double),ppt->error_message); + class_alloc(ppw->theta_ncdm,pba->N_ncdm*sizeof(double),ppt->error_message); + class_alloc(ppw->shear_ncdm,pba->N_ncdm*sizeof(double),ppt->error_message); + + } + + } + + return _SUCCESS_; +} + +/** + * Free the perturb_workspace structure (with the exception of the + * perturb_vector '-->pv' field, which is freed separately in + * perturb_vector_free). + * + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param ppw Input: pointer to perturb_workspace structure to be freed + * @return the error status + */ + +int perturb_workspace_free ( + struct perturbs * ppt, + int index_md, + struct perturb_workspace * ppw + ) { + + free(ppw->s_l); + free(ppw->pvecback); + free(ppw->pvecthermo); + free(ppw->pvecmetric); + if (ppw->ap_size > 0) + free(ppw->approx); + + if (_scalars_) { + + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_source_delta_m == _TRUE_)) { + free(ppw->delta_ncdm); + free(ppw->theta_ncdm); + free(ppw->shear_ncdm); + } + } + + free(ppw); + + return _SUCCESS_; +} + +/** + * Solve the perturbation evolution for a given mode, initial + * condition and wavenumber, and compute the corresponding source + * functions. + * + * For a given mode, initial condition and wavenumber, this function + * finds the time ranges over which the perturbations can be described + * within a given approximation. For each such range, it initializes + * (or redistributes) perturbations using perturb_vector_init(), and + * integrates over time. Whenever a "source sampling time" is passed, + * the source terms are computed and stored in the source table using + * perturb_sources(). + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure + * @param ppt Input/Output: pointer to the perturbation structure (output source functions S(k,tau) written here) + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param index_ic Input: index of initial condition under consideration (ad, iso...) + * @param index_k Input: index of wavenumber + * @param ppw Input: pointer to perturb_workspace structure containing index values and workspaces + * @return the error status + */ + +int perturb_solve( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + int index_ic, + int index_k, + struct perturb_workspace * ppw + ) { + + /** Summary: */ + + /** - define local variables */ + + /* contains all fixed parameters, indices and workspaces used by the perturb_derivs function */ + struct perturb_parameters_and_workspace ppaw; + + /* conformal time */ + double tau,tau_lower,tau_upper,tau_mid; + + /* multipole */ + int l; + + /* index running over time */ + int index_tau; + + /* number of values in the tau_sampling array that should be considered for a given mode */ + int tau_actual_size; + + /* running index over types (temperature, etc) */ + int index_type; + + /* Fourier mode */ + double k; + + /* number of time intervals where the approximation scheme is uniform */ + int interval_number; + + /* index running over such time intervals */ + int index_interval; + + /* number of time intervals where each particular approximation is uniform */ + int * interval_number_of; + + /* edge of intervals where approximation scheme is uniform: tau_ini, tau_switch_1, ..., tau_end */ + double * interval_limit; + + /* array of approximation scheme within each interval: interval_approx[index_interval][index_ap] */ + int ** interval_approx; + + /* index running over approximations */ + int index_ap; + + /* approximation scheme within previous interval: previous_approx[index_ap] */ + int * previous_approx; + + int n_ncdm,is_early_enough; + + /* function pointer to ODE evolver and names of possible evolvers */ + + extern int evolver_rk(); + extern int evolver_ndf15(); + int (*generic_evolver)(); + + + /* Related to the perturbation output */ + int (*perhaps_print_variables)(); + int index_ikout; + + /** - initialize indices relevant for back/thermo tables search */ + ppw->last_index_back=0; + ppw->last_index_thermo=0; + ppw->inter_mode = pba->inter_normal; + + /** - get wavenumber value */ + k = ppt->k[index_md][index_k]; + + class_test(k == 0., + ppt->error_message, + "stop to avoid division by zero"); + + /** - If non-zero curvature, update array of free-streaming coefficients ppw->s_l */ + if (pba->has_curvature == _TRUE_){ + for (l = 0; l<=ppw->max_l_max; l++){ + ppw->s_l[l] = sqrt(MAX(1.0-pba->K*(l*l-1.0)/k/k,0.)); + } + } + + /** - maximum value of tau for which sources are calculated for this wavenumber */ + + /* by default, today */ + tau_actual_size = ppt->tau_size; + + /** - using bisection, compute minimum value of tau for which this + wavenumber is integrated */ + + /* will be at least the first time in the background table */ + tau_lower = pba->tau_table[0]; + + class_call(background_at_tau(pba, + tau_lower, + pba->normal_info, + pba->inter_normal, + &(ppw->last_index_back), + ppw->pvecback), + pba->error_message, + ppt->error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./ppw->pvecback[pba->index_bg_a]-1., + pth->inter_normal, + &(ppw->last_index_thermo), + ppw->pvecback, + ppw->pvecthermo), + pth->error_message, + ppt->error_message); + + /* check that this initial time is indeed OK given imposed + conditions on kappa' and on k/aH */ + + class_test(ppw->pvecback[pba->index_bg_a]* + ppw->pvecback[pba->index_bg_H]/ + ppw->pvecthermo[pth->index_th_dkappa] > + ppr->start_small_k_at_tau_c_over_tau_h, ppt->error_message, "your choice of initial time for integrating wavenumbers is inappropriate: it corresponds to a time before that at which the background has been integrated. You should increase 'start_small_k_at_tau_c_over_tau_h' up to at least %g, or decrease 'a_ini_over_a_today_default'\n", + ppw->pvecback[pba->index_bg_a]* + ppw->pvecback[pba->index_bg_H]/ + ppw->pvecthermo[pth->index_th_dkappa]); + + class_test(k/ppw->pvecback[pba->index_bg_a]/ppw->pvecback[pba->index_bg_H] > + ppr->start_large_k_at_tau_h_over_tau_k, + ppt->error_message, + "your choice of initial time for integrating wavenumbers is inappropriate: it corresponds to a time before that at which the background has been integrated. You should increase 'start_large_k_at_tau_h_over_tau_k' up to at least %g, or decrease 'a_ini_over_a_today_default'\n", + ppt->k[index_md][ppt->k_size[index_md]-1]/ppw->pvecback[pba->index_bg_a]/ ppw->pvecback[pba->index_bg_H]); + + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + class_test(fabs(ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]-1./3.)>ppr->tol_ncdm_initial_w, + ppt->error_message, + "your choice of initial time for integrating wavenumbers is inappropriate: it corresponds to a time at which the ncdm species number %d is not ultra-relativistic anymore, with w=%g, p=%g and rho=%g\n", + n_ncdm, + ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm], + ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm], + ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]); + } + } + + /* is at most the time at which sources must be sampled */ + tau_upper = ppt->tau_sampling[0]; + + /* start bisection */ + tau_mid = 0.5*(tau_lower + tau_upper); + + while ((tau_upper - tau_lower)/tau_lower > ppr->tol_tau_approx) { + + is_early_enough = _TRUE_; + + class_call(background_at_tau(pba, + tau_mid, + pba->normal_info, + pba->inter_normal, + &(ppw->last_index_back), + ppw->pvecback), + pba->error_message, + ppt->error_message); + + /* if there are non-cold relics, check that they are relativistic enough */ + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + if (fabs(ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]-1./3.) > ppr->tol_ncdm_initial_w) + is_early_enough = _FALSE_; + } + } + + /* also check that the two conditions on (aH/kappa') and (aH/k) are fulfilled */ + if (is_early_enough == _TRUE_) { + + class_call(thermodynamics_at_z(pba, + pth, + 1./ppw->pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_normal, + &(ppw->last_index_thermo), + ppw->pvecback, + ppw->pvecthermo), + pth->error_message, + ppt->error_message); + + if ((ppw->pvecback[pba->index_bg_a]* + ppw->pvecback[pba->index_bg_H]/ + ppw->pvecthermo[pth->index_th_dkappa] > + ppr->start_small_k_at_tau_c_over_tau_h) || + (k/ppw->pvecback[pba->index_bg_a]/ppw->pvecback[pba->index_bg_H] > + ppr->start_large_k_at_tau_h_over_tau_k)) + + is_early_enough = _FALSE_; + } + + if (is_early_enough == _TRUE_) + tau_lower = tau_mid; + else + tau_upper = tau_mid; + + tau_mid = 0.5*(tau_lower + tau_upper); + + } + + tau = tau_mid; + + /** - find the number of intervals over which approximation scheme is constant */ + + class_alloc(interval_number_of,ppw->ap_size*sizeof(int),ppt->error_message); + + ppw->inter_mode = pba->inter_normal; + + class_call(perturb_find_approximation_number(ppr, + pba, + pth, + ppt, + index_md, + k, + ppw, + tau, + ppt->tau_sampling[tau_actual_size-1], + &interval_number, + interval_number_of), + ppt->error_message, + ppt->error_message); + + class_alloc(interval_limit,(interval_number+1)*sizeof(double),ppt->error_message); + + class_alloc(interval_approx,interval_number*sizeof(int*),ppt->error_message); + + for (index_interval=0; index_intervalap_size*sizeof(int),ppt->error_message); + + class_call(perturb_find_approximation_switches(ppr, + pba, + pth, + ppt, + index_md, + k, + ppw, + tau, + ppt->tau_sampling[tau_actual_size-1], + ppr->tol_tau_approx, + interval_number, + interval_number_of, + interval_limit, + interval_approx), + ppt->error_message, + ppt->error_message); + + free(interval_number_of); + + /** - fill the structure containing all fixed parameters, indices + and workspaces needed by perturb_derivs */ + + ppaw.ppr = ppr; + ppaw.pba = pba; + ppaw.pth = pth; + ppaw.ppt = ppt; + ppaw.index_md = index_md; + ppaw.index_ic = index_ic; + ppaw.index_k = index_k; + ppaw.k = k; + ppaw.ppw = ppw; + ppaw.ppw->inter_mode = pba->inter_closeby; + ppaw.ppw->last_index_back = 0; + ppaw.ppw->last_index_thermo = 0; + + /** - check whether we need to print perturbations to a file for this wavenumber */ + + perhaps_print_variables = NULL; + ppw->index_ikout = -1; + for (index_ikout=0; index_ikoutk_output_values_num; index_ikout++){ + if (ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout] == index_k){ + ppw->index_ikout = index_ikout; + perhaps_print_variables = perturb_print_variables; + /* class_call(perturb_prepare_output_file( + pba,ppt,ppw,index_ikout,index_md), + ppt->error_message, + ppt->error_message); + */ + } + } + + /** - loop over intervals over which approximation scheme is uniform. For each interval: */ + + for (index_interval=0; index_interval (a) fix the approximation scheme */ + + for (index_ap=0; index_apap_size; index_ap++) + ppw->approx[index_ap]=interval_approx[index_interval][index_ap]; + + /** - --> (b) get the previous approximation scheme. If the current + interval starts from the initial time tau_ini, the previous + approximation is set to be a NULL pointer, so that the + function perturb_vector_init() knows that perturbations must + be initialized */ + + if (index_interval==0) { + previous_approx=NULL; + } + else { + previous_approx=interval_approx[index_interval-1]; + } + + /** - --> (c) define the vector of perturbations to be integrated + over. If the current interval starts from the initial time + tau_ini, fill the vector with initial conditions for each + mode. If it starts from an approximation switching point, + redistribute correctly the perturbations from the previous to + the new vector of perturbations. */ + + class_call(perturb_vector_init(ppr, + pba, + pth, + ppt, + index_md, + index_ic, + k, + interval_limit[index_interval], + ppw, + previous_approx), + ppt->error_message, + ppt->error_message); + + /** - --> (d) integrate the perturbations over the current interval. */ + + if(ppr->evolver == rk){ + generic_evolver = evolver_rk; + } + else{ + generic_evolver = evolver_ndf15; + } + + class_call(generic_evolver(perturb_derivs, + interval_limit[index_interval], + interval_limit[index_interval+1], + ppw->pv->y, + ppw->pv->used_in_sources, + ppw->pv->pt_size, + &ppaw, + ppr->tol_perturb_integration, + ppr->smallest_allowed_variation, + perturb_timescale, + ppr->perturb_integration_stepsize, + ppt->tau_sampling, + tau_actual_size, + perturb_sources, + perhaps_print_variables, + ppt->error_message), + ppt->error_message, + ppt->error_message); + + } + + /** - if perturbations were printed in a file, close the file */ + + //if (perhaps_print_variables != NULL) + // fclose(ppw->perturb_output_file); + + /** - fill the source terms array with zeros for all times between + the last integrated time tau_max and tau_today. */ + + for (index_tau = tau_actual_size; index_tau < ppt->tau_size; index_tau++) { + for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_type] + [index_tau * ppt->k_size[index_md] + index_k] = 0.; + } + } + + /** - free quantities allocated at the beginning of the routine */ + + class_call(perturb_vector_free(ppw->pv), + ppt->error_message, + ppt->error_message); + + for (index_interval=0; index_intervalscalar_titles[0]='\0'; + ppt->vector_titles[0]='\0'; + ppt->tensor_titles[0]='\0'; + + + if (ppt->k_output_values_num > 0) { + + /** Write titles for all perturbations that we would like to print/store. */ + if (ppt->has_scalars == _TRUE_){ + + class_store_columntitle(ppt->scalar_titles,"tau [Mpc]",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"a",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"delta_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"theta_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"shear_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"pol0_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"pol1_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"pol2_g",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"delta_b",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"theta_b",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"psi",_TRUE_); + class_store_columntitle(ppt->scalar_titles,"phi",_TRUE_); + /* Perturbed recombination */ + class_store_columntitle(ppt->scalar_titles,"delta_Tb",ppt->has_perturbed_recombination); + class_store_columntitle(ppt->scalar_titles,"delta_chi",ppt->has_perturbed_recombination); + /* Ultrarelativistic species */ + class_store_columntitle(ppt->scalar_titles,"delta_ur",pba->has_ur); + class_store_columntitle(ppt->scalar_titles,"theta_ur",pba->has_ur); + class_store_columntitle(ppt->scalar_titles,"shear_ur",pba->has_ur); + /* Cold dark matter */ + class_store_columntitle(ppt->scalar_titles,"delta_cdm",pba->has_cdm); + class_store_columntitle(ppt->scalar_titles,"theta_cdm",pba->has_cdm); + /* Non-cold dark matter */ + if ((pba->has_ncdm == _TRUE_) && ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_source_delta_m == _TRUE_))) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + sprintf(tmp,"delta_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->scalar_titles,tmp,_TRUE_); + sprintf(tmp,"theta_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->scalar_titles,tmp,_TRUE_); + sprintf(tmp,"shear_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->scalar_titles,tmp,_TRUE_); + sprintf(tmp,"cs2_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->scalar_titles,tmp,_TRUE_); + } + } + /* Decaying cold dark matter */ + class_store_columntitle(ppt->scalar_titles, "delta_dcdm", pba->has_dcdm); + class_store_columntitle(ppt->scalar_titles, "theta_dcdm", pba->has_dcdm); + /* Decay radiation */ + class_store_columntitle(ppt->scalar_titles, "delta_dr", pba->has_dr); + class_store_columntitle(ppt->scalar_titles, "theta_dr", pba->has_dr); + class_store_columntitle(ppt->scalar_titles, "shear_dr", pba->has_dr); + /* Scalar field scf */ + class_store_columntitle(ppt->scalar_titles, "delta_scf", pba->has_scf); + class_store_columntitle(ppt->scalar_titles, "theta_scf", pba->has_scf); + + ppt->number_of_scalar_titles = + get_number_of_titles(ppt->scalar_titles); + } + + if (ppt->has_tensors == _TRUE_){ + + class_store_columntitle(ppt->tensor_titles,"tau [Mpc]",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"a",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"delta_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"shear_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"l4_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"pol0_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"pol2_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"pol4_g",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"H (gw)",_TRUE_); + class_store_columntitle(ppt->tensor_titles,"Hdot (gwdot)",_TRUE_); + + class_store_columntitle(ppt->tensor_titles,"delta_ur",ppt->evolve_tensor_ur); + class_store_columntitle(ppt->tensor_titles,"shear_ur",ppt->evolve_tensor_ur); + class_store_columntitle(ppt->tensor_titles,"l4_ur",ppt->evolve_tensor_ur); + + if (ppt->evolve_tensor_ncdm == _TRUE_) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + sprintf(tmp,"delta_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->tensor_titles,tmp,_TRUE_); + sprintf(tmp,"theta_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->tensor_titles,tmp,_TRUE_); + sprintf(tmp,"shear_ncdm[%d]",n_ncdm); + class_store_columntitle(ppt->tensor_titles,tmp,_TRUE_); + } + } + + ppt->number_of_tensor_titles = + get_number_of_titles(ppt->tensor_titles); + + } + + } + return _SUCCESS_; + +} + + +/** + * For a given mode and wavenumber, find the number of intervals of + * time between tau_ini and tau_end such that the approximation + * scheme (and the number of perturbation equations) is uniform. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param k Input: index of wavenumber + * @param ppw Input: pointer to perturb_workspace structure containing index values and workspaces + * @param tau_ini Input: initial time of the perturbation integration + * @param tau_end Input: final time of the perturbation integration + * @param interval_number Output: total number of intervals + * @param interval_number_of Output: number of intervals with respect to each particular approximation + * @return the error status + */ + +int perturb_find_approximation_number( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + struct perturb_workspace * ppw, + double tau_ini, + double tau_end, + int * interval_number, + int * interval_number_of /* interval_number_of[index_ap] (already allocated) */ + ){ + + /** Summary: */ + /* index running over approximations */ + int index_ap; + + /* value of a given approximation at tau_ini and tau_end */ + int flag_ini,flag_end; + + /** - fix default number of intervals to one (if no approximation switch) */ + + *interval_number=1; + + /** - loop over each approximation and add the number of approximation switching times */ + + for (index_ap=0; index_apap_size; index_ap++) { + + class_call(perturb_approximations(ppr, + pba, + pth, + ppt, + index_md, + k, + tau_ini, + ppw), + ppt->error_message, + ppt->error_message); + + flag_ini = ppw->approx[index_ap]; + + class_call(perturb_approximations(ppr, + pba, + pth, + ppt, + index_md, + k, + tau_end, + ppw), + ppt->error_message, + ppt->error_message); + + flag_end = ppw->approx[index_ap]; + + class_test(flag_enderror_message, + "For each approximation scheme, the declaration of approximation labels in the enumeration must follow chronological order, e.g: enum approx_flags {flag1, flag2, flag3} with flag1 being the initial one and flag3 the final one"); + + *interval_number += flag_end-flag_ini; + + interval_number_of[index_ap] = flag_end-flag_ini+1; + } + + return _SUCCESS_; + +} + +/** + * For a given mode and wavenumber, find the values of time at which + * the approximation changes. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param k Input: index of wavenumber + * @param ppw Input: pointer to perturb_workspace structure containing index values and workspaces + * @param tau_ini Input: initial time of the perturbation integration + * @param tau_end Input: final time of the perturbation integration + * @param precision Input: tolerance on output values + * @param interval_number Input: total number of intervals + * @param interval_number_of Input: number of intervals with respect to each particular approximation + * @param interval_limit Output: value of time at the boundary of the intervals: tau_ini, tau_switch1, ..., tau_end + * @param interval_approx Output: value of approximations in each interval + * @return the error status + */ + +int perturb_find_approximation_switches( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + struct perturb_workspace * ppw, + double tau_ini, + double tau_end, + double precision, + int interval_number, + int * interval_number_of, + double * interval_limit, /* interval_limit[index_interval] (already allocated) */ + int ** interval_approx /* interval_approx[index_interval][index_ap] (already allocated) */ + ){ + + /** Summary: */ + + int index_ap; + int index_switch; + int index_switch_tot; + int num_switch; + double tau_min,lower_bound,upper_bound; + double mid=0; + double * unsorted_tau_switch; + double next_tau_switch; + int flag_ini; + int num_switching_at_given_time; + + /** - write in output arrays the initial time and approximation */ + + interval_limit[0]=tau_ini; + + class_call(perturb_approximations(ppr, + pba, + pth, + ppt, + index_md, + k, + tau_ini, + ppw), + ppt->error_message, + ppt->error_message); + + for (index_ap=0; index_apap_size; index_ap++) + interval_approx[0][index_ap]=ppw->approx[index_ap]; + + /** - if there are no approximation switches, just write final time and return */ + + if (interval_number == 1) { + + interval_limit[1]=tau_end; + + } + + /** - if there are switches, consider approximations one after each + other. Find switching time by bisection. Store all switches in + arbitrary order in array unsorted_tau_switch[ ] */ + + else { + + class_alloc(unsorted_tau_switch,(interval_number-1)*sizeof(double),ppt->error_message); + + index_switch_tot=0; + + for (index_ap=0; index_apap_size; index_ap++) { + + if (interval_number_of[index_ap] > 1) { + + num_switch = interval_number_of[index_ap]-1; + + tau_min = tau_ini; + + flag_ini = interval_approx[0][index_ap]; + + for (index_switch=0; index_switch precision) { + + class_call(perturb_approximations(ppr, + pba, + pth, + ppt, + index_md, + k, + mid, + ppw), + ppt->error_message, + ppt->error_message); + + if (ppw->approx[index_ap] > flag_ini+index_switch) { + upper_bound=mid; + } + else { + lower_bound=mid; + } + + mid = 0.5*(lower_bound+upper_bound); + + } + + unsorted_tau_switch[index_switch_tot]=mid; + index_switch_tot++; + + tau_min=mid; + + } + } + } + + class_test(index_switch_tot != (interval_number-1), + ppt->error_message, + "bug in approximation switch search routine: should have %d = %d", + index_switch_tot,interval_number-1); + + /** - now sort interval limits in correct order */ + + index_switch_tot=1; + + while (index_switch_tot < interval_number) { + + next_tau_switch=tau_end; + for (index_switch=0; index_switch interval_limit[index_switch_tot-1]) && + (unsorted_tau_switch[index_switch] < next_tau_switch)) { + next_tau_switch=unsorted_tau_switch[index_switch]; + } + } + interval_limit[index_switch_tot]=next_tau_switch; + index_switch_tot++; + } + + interval_limit[index_switch_tot]=tau_end; + + class_test(index_switch_tot != interval_number, + ppt->error_message, + "most probably two approximation switching time were found to be equal, which cannot be handled\n"); + + /** - store each approximation in chronological order */ + + for (index_switch=1; index_switcherror_message, + ppt->error_message); + + for (index_ap=0; index_apap_size; index_ap++) { + interval_approx[index_switch][index_ap]=ppw->approx[index_ap]; + + /* check here that approximation does not go backward (remember + that by definition the value of an approximation can only + increase) */ + class_test(interval_approx[index_switch][index_ap] < interval_approx[index_switch-1][index_ap], + ppt->error_message, + "The approximation with label %d is not defined correctly: it goes backward (from %d to %d) for k=%e and between tau=%e and %e; this cannot be handled\n", + index_ap, + interval_approx[index_switch-1][index_ap], + interval_approx[index_switch][index_ap], + k, + 0.5*(interval_limit[index_switch-1]+interval_limit[index_switch]), + 0.5*(interval_limit[index_switch]+interval_limit[index_switch+1]) + ); + } + + /* check here that more than one approximation is not switched on at a given time */ + num_switching_at_given_time=0; + for (index_ap=0; index_apap_size; index_ap++) { + if (interval_approx[index_switch][index_ap] != interval_approx[index_switch-1][index_ap]) + num_switching_at_given_time++; + } + class_test(num_switching_at_given_time != 1, + ppt->error_message, + "for k=%e, at tau=%g, you switch %d approximations at the same time, this cannot be handled. Usually happens in two cases: triggers for different approximations coincide, or one approx is reversible\n", + k, + interval_limit[index_switch], + num_switching_at_given_time); + + if (ppt->perturbations_verbose>2) { + + if (_scalars_) { + + if ((interval_approx[index_switch-1][ppw->index_ap_tca]==(int)tca_on) && + (interval_approx[index_switch][ppw->index_ap_tca]==(int)tca_off)) + fprintf(stdout,"Mode k=%e: will switch off tight-coupling approximation at tau=%e\n",k,interval_limit[index_switch]); + //fprintf(stderr,"Mode k=%e: will switch off tight-coupling approximation at tau=%e\n",k,interval_limit[index_switch]); //TBC + + if ((interval_approx[index_switch-1][ppw->index_ap_rsa]==(int)rsa_off) && + (interval_approx[index_switch][ppw->index_ap_rsa]==(int)rsa_on)) + fprintf(stdout,"Mode k=%e: will switch on radiation streaming approximation at tau=%e\n",k,interval_limit[index_switch]); + + if (pba->has_ur == _TRUE_) { + if ((interval_approx[index_switch-1][ppw->index_ap_ufa]==(int)ufa_off) && + (interval_approx[index_switch][ppw->index_ap_ufa]==(int)ufa_on)) { + fprintf(stdout,"Mode k=%e: will switch on ur fluid approximation at tau=%e\n",k,interval_limit[index_switch]); + } + } + if (pba->has_ncdm == _TRUE_) { + if ((interval_approx[index_switch-1][ppw->index_ap_ncdmfa]==(int)ncdmfa_off) && + (interval_approx[index_switch][ppw->index_ap_ncdmfa]==(int)ncdmfa_on)) { + fprintf(stdout,"Mode k=%e: will switch on ncdm fluid approximation at tau=%e\n",k,interval_limit[index_switch]); + } + } + } + + if (_tensors_) { + + if ((interval_approx[index_switch-1][ppw->index_ap_tca]==(int)tca_on) && + (interval_approx[index_switch][ppw->index_ap_tca]==(int)tca_off)) + fprintf(stdout,"Mode k=%e: will switch off tight-coupling approximation for tensors at tau=%e\n",k,interval_limit[index_switch]); + + if ((interval_approx[index_switch-1][ppw->index_ap_rsa]==(int)rsa_off) && + (interval_approx[index_switch][ppw->index_ap_rsa]==(int)rsa_on)) + fprintf(stdout,"Mode k=%e: will switch on radiation streaming approximation for tensors at tau=%e\n",k,interval_limit[index_switch]); + + } + } + } + + free(unsorted_tau_switch); + + class_call(perturb_approximations(ppr, + pba, + pth, + ppt, + index_md, + k, + tau_end, + ppw), + + ppt->error_message, + ppt->error_message); + } + + return _SUCCESS_; +} + +/** + * Initialize the field '-->pv' of a perturb_workspace structure, which + * is a perturb_vector structure. This structure contains indices and + * values of all quantities which need to be integrated with respect + * to time (and only them: quantities fixed analytically or obeying + * constraint equations are NOT included in this vector). This routine + * distinguishes between two cases: + * + * --> the input pa_old is set to the NULL pointer: + * + * This happens when we start integrating over a new wavenumber and we + * want to set initial conditions for the perturbations. Then, it is + * assumed that ppw-->pv is not yet allocated. This routine allocates + * it, defines all indices, and then fills the vector ppw-->pv-->y with + * the initial conditions defined in perturb_initial_conditions. + * + * --> the input pa_old is not set to the NULL pointer and describes + * some set of approximations: + * + * This happens when we need to change approximation scheme while + * integrating over a given wavenumber. The new approximation + * described by ppw-->pa is then different from pa_old. Then, this + * routine allocates a new vector with a new size and new index + * values; it fills this vector with initial conditions taken from the + * previous vector passed as an input in ppw-->pv, and eventually with + * some analytic approximations for the new variables appearing at + * this time; then the new vector comes in replacement of the old one, + * which is freed. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param index_ic Input: index of initial condition under consideration (ad, iso...) + * @param k Input: wavenumber + * @param tau Input: conformal time + * @param ppw Input/Output: workspace containing in input the approximation scheme, the background/thermodynamics/metric quantities, and eventually the previous vector y; and in output the new vector y. + * @param pa_old Input: NULL is we need to set y to initial conditions for a new wavenumber; points towards a perturb_approximations if we want to switch of approximation. + * @return the error status + */ + +int perturb_vector_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + int index_ic, + double k, + double tau, + struct perturb_workspace * ppw, /* ppw->pv unallocated if pa_old = NULL, allocated and filled otherwise */ + int * pa_old + ) { + + /** Summary: */ + + /** - define local variables */ + + struct perturb_vector * ppv; + + int index_pt; + int l; + int n_ncdm,index_q,ncdm_l_size; + double rho_plus_p_ncdm,q,q2,epsilon,a,factor; + + /** - allocate a new perturb_vector structure to which ppw-->pv will point at the end of the routine */ + + class_alloc(ppv,sizeof(struct perturb_vector),ppt->error_message); + + /** - initialize pointers to NULL (they will be allocated later if + needed), relevant for perturb_vector_free() */ + ppv->l_max_ncdm = NULL; + ppv->q_size_ncdm = NULL; + + /** - define all indices in this new vector (depends on approximation scheme, described by the input structure ppw-->pa) */ + + index_pt = 0; + + if (_scalars_) { + + /* reject inconsistent values of the number of mutipoles in photon temperature hierarchy */ + class_test(ppr->l_max_g < 4, + ppt->error_message, + "ppr->l_max_g should be at least 4, i.e. we must integrate at least over photon density, velocity, shear, third and fourth momentum"); + + /* reject inconsistent values of the number of mutipoles in photon polarization hierarchy */ + class_test(ppr->l_max_pol_g < 4, + ppt->error_message, + "ppr->l_max_pol_g should be at least 4"); + + /* reject inconsistent values of the number of mutipoles in decay radiation hierarchy */ + if (pba->has_dr == _TRUE_) { + class_test(ppr->l_max_dr < 4, + ppt->error_message, + "ppr->l_max_dr should be at least 4, i.e. we must integrate at least over neutrino/relic density, velocity, shear, third and fourth momentum"); + } + + /* reject inconsistent values of the number of mutipoles in ultra relativistic neutrino hierarchy */ + if (pba->has_ur == _TRUE_) { + class_test(ppr->l_max_ur < 4, + ppt->error_message, + "ppr->l_max_ur should be at least 4, i.e. we must integrate at least over neutrino/relic density, velocity, shear, third and fourth momentum"); + } + + /* photons */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + + /* temperature */ + + ppv->l_max_g = ppr->l_max_g; + + class_define_index(ppv->index_pt_delta_g,_TRUE_,index_pt,1); /* photon density */ + class_define_index(ppv->index_pt_theta_g,_TRUE_,index_pt,1); /* photon velocity */ + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + class_define_index(ppv->index_pt_shear_g,_TRUE_,index_pt,1); /* photon shear */ + class_define_index(ppv->index_pt_l3_g,_TRUE_,index_pt,ppv->l_max_g-2); /* higher momenta */ + + /* polarization */ + + ppv->l_max_pol_g = ppr->l_max_pol_g; + + class_define_index(ppv->index_pt_pol0_g,_TRUE_,index_pt,1); + class_define_index(ppv->index_pt_pol1_g,_TRUE_,index_pt,1); + class_define_index(ppv->index_pt_pol2_g,_TRUE_,index_pt,1); + class_define_index(ppv->index_pt_pol3_g,_TRUE_,index_pt,ppv->l_max_pol_g-2); + } + } + + /* baryons */ + + class_define_index(ppv->index_pt_delta_b,_TRUE_,index_pt,1); /* baryon density */ + class_define_index(ppv->index_pt_theta_b,_TRUE_,index_pt,1); /* baryon velocity */ + + /* cdm */ + + class_define_index(ppv->index_pt_delta_cdm,pba->has_cdm,index_pt,1); /* cdm density */ + class_define_index(ppv->index_pt_theta_cdm,pba->has_cdm && (ppt->gauge == newtonian),index_pt,1); /* cdm velocity */ + + /* dcdm */ + + class_define_index(ppv->index_pt_delta_dcdm,pba->has_dcdm,index_pt,1); /* dcdm density */ + class_define_index(ppv->index_pt_theta_dcdm,pba->has_dcdm,index_pt,1); /* dcdm velocity */ + + /* ultra relativistic decay radiation */ + if (pba->has_dr==_TRUE_){ + ppv->l_max_dr = ppr->l_max_dr; + class_define_index(ppv->index_pt_F0_dr,_TRUE_,index_pt,ppv->l_max_dr+1); /* all momenta in Boltzmann hierarchy */ + } + + /* fluid */ + + class_define_index(ppv->index_pt_delta_fld,pba->has_fld,index_pt,1); /* fluid density */ + class_define_index(ppv->index_pt_theta_fld,pba->has_fld,index_pt,1); /* fluid velocity */ + + /* scalar field */ + + class_define_index(ppv->index_pt_phi_scf,pba->has_scf,index_pt,1); /* scalar field density */ + class_define_index(ppv->index_pt_phi_prime_scf,pba->has_scf,index_pt,1); /* scalar field velocity */ + + /* perturbed recombination: the indices are defined once tca is off. */ + if ( (ppt->has_perturbed_recombination == _TRUE_) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off) ){ + class_define_index(ppv->index_pt_perturbed_recombination_delta_temp,_TRUE_,index_pt,1); + class_define_index(ppv->index_pt_perturbed_recombination_delta_chi,_TRUE_,index_pt,1); + } + + /* ultra relativistic neutrinos */ + + if (pba->has_ur && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + class_define_index(ppv->index_pt_delta_ur,_TRUE_,index_pt,1); /* density of ultra-relativistic neutrinos/relics */ + class_define_index(ppv->index_pt_theta_ur,_TRUE_,index_pt,1); /* velocity of ultra-relativistic neutrinos/relics */ + class_define_index(ppv->index_pt_shear_ur,_TRUE_,index_pt,1); /* shear of ultra-relativistic neutrinos/relics */ + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + ppv->l_max_ur = ppr->l_max_ur; + class_define_index(ppv->index_pt_l3_ur,_TRUE_,index_pt,ppv->l_max_ur-2); /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3) */ + } + } + + /* non-cold dark matter */ + + if (pba->has_ncdm == _TRUE_) { + ppv->index_pt_psi0_ncdm1 = index_pt; /* density of ultra-relativistic neutrinos/relics */ + ppv->N_ncdm = pba->N_ncdm; + class_alloc(ppv->l_max_ncdm,ppv->N_ncdm*sizeof(double),ppt->error_message); + class_alloc(ppv->q_size_ncdm,ppv->N_ncdm*sizeof(double),ppt->error_message); + + for(n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + // Set value of ppv->l_max_ncdm: + if(ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_off){ + /* reject inconsistent values of the number of mutipoles in ultra relativistic neutrino hierarchy */ + class_test(ppr->l_max_ncdm < 4, + ppt->error_message, + "ppr->l_max_ncdm=%d should be at least 4, i.e. we must integrate at least over first four momenta of non-cold dark matter perturbed phase-space distribution",n_ncdm); + //Copy value from precision parameter: + ppv->l_max_ncdm[n_ncdm] = ppr->l_max_ncdm; + ppv->q_size_ncdm[n_ncdm] = pba->q_size_ncdm[n_ncdm]; + } + else{ + // In the fluid approximation, hierarchy is cut at lmax = 2 and q dependence is integrated out: + ppv->l_max_ncdm[n_ncdm] = 2; + ppv->q_size_ncdm[n_ncdm] = 1; + } + index_pt += (ppv->l_max_ncdm[n_ncdm]+1)*ppv->q_size_ncdm[n_ncdm]; + } + } + + /* metric (only quantities to be integrated, not those obeying constraint equations) */ + + /* metric perturbation eta of synchronous gauge */ + class_define_index(ppv->index_pt_eta,ppt->gauge == synchronous,index_pt,1); + + /* metric perturbation phi of newtonian gauge ( we could fix it + using Einstein equations as a constraint equation for phi, but + integration is numerically more stable if we actually evolve + phi) */ + class_define_index(ppv->index_pt_phi,ppt->gauge == newtonian,index_pt,1); + + } + + if (_vectors_) { + + /* Vector baryon velocity: v_b^{(1)}. */ + class_define_index(ppv->index_pt_theta_b,_TRUE_,index_pt,1); + + /* eventually reject inconsistent values of the number of mutipoles in photon temperature hierarchy and polarization*/ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { /* if tight-coupling approximation is off */ + + ppv->l_max_g = ppr->l_max_g_ten; + + class_define_index(ppv->index_pt_delta_g,_TRUE_,index_pt,1); /* photon density */ + class_define_index(ppv->index_pt_theta_g,_TRUE_,index_pt,1); /* photon velocity */ + class_define_index(ppv->index_pt_shear_g,_TRUE_,index_pt,1); /* photon shear */ + class_define_index(ppv->index_pt_l3_g,_TRUE_,index_pt,ppv->l_max_g-2); /* photon l=3 */ + + ppv->l_max_pol_g = ppr->l_max_pol_g_ten; + + class_define_index(ppv->index_pt_pol0_g,_TRUE_,index_pt,1); /* photon polarization, l=0 */ + class_define_index(ppv->index_pt_pol1_g,_TRUE_,index_pt,1); /* photon polarization, l=1 */ + class_define_index(ppv->index_pt_pol2_g,_TRUE_,index_pt,1); /* photon polarization, l=2 */ + class_define_index(ppv->index_pt_pol3_g,_TRUE_,index_pt,ppv->l_max_pol_g-2); /* photon polarization, l=3 */ + } + } + + /** - (a) metric perturbations V or \f$ h_v \f$ depending on gauge */ + if (ppt->gauge == synchronous){ + class_define_index(ppv->index_pt_hv_prime,_TRUE_,index_pt,1); + } + if (ppt->gauge == newtonian){ + class_define_index(ppv->index_pt_V,_TRUE_,index_pt,1); + } + + } + + if (_tensors_) { + + /* reject inconsistent values of the number of mutipoles in photon temperature hierarchy */ + class_test(ppr->l_max_g_ten < 4, + ppt->error_message, + "ppr->l_max_g_ten should be at least 4, i.e. we must integrate at least over photon density, velocity, shear, third momentum"); + + /* reject inconsistent values of the number of mutipoles in photon polarization hierarchy */ + class_test(ppr->l_max_pol_g_ten < 4, + ppt->error_message, + "ppr->l_max_pol_g_ten should be at least 4"); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { /* if tight-coupling approximation is off */ + + ppv->l_max_g = ppr->l_max_g_ten; + + class_define_index(ppv->index_pt_delta_g,_TRUE_,index_pt,1); /* photon density */ + class_define_index(ppv->index_pt_theta_g,_TRUE_,index_pt,1); /* photon velocity */ + class_define_index(ppv->index_pt_shear_g,_TRUE_,index_pt,1); /* photon shear */ + class_define_index(ppv->index_pt_l3_g,_TRUE_,index_pt,ppv->l_max_g-2); /* photon l=3 */ + + ppv->l_max_pol_g = ppr->l_max_pol_g_ten; + + class_define_index(ppv->index_pt_pol0_g,_TRUE_,index_pt,1); /* photon polarization, l=0 */ + class_define_index(ppv->index_pt_pol1_g,_TRUE_,index_pt,1); /* photon polarization, l=1 */ + class_define_index(ppv->index_pt_pol2_g,_TRUE_,index_pt,1); /* photon polarization, l=2 */ + class_define_index(ppv->index_pt_pol3_g,_TRUE_,index_pt,ppv->l_max_pol_g-2); /* photon polarization, l=3 */ + } + } + + /* ultra relativistic neutrinos */ + + class_define_index(ppv->index_pt_delta_ur,ppt->evolve_tensor_ur,index_pt,1); /* ur density */ + class_define_index(ppv->index_pt_theta_ur,ppt->evolve_tensor_ur,index_pt,1); /* ur velocity */ + class_define_index(ppv->index_pt_shear_ur,ppt->evolve_tensor_ur,index_pt,1); /* ur shear */ + ppv->l_max_ur = ppr->l_max_ur; + class_define_index(ppv->index_pt_l3_ur,ppt->evolve_tensor_ur,index_pt,ppv->l_max_ur-2); /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3) */ + + if (ppt->evolve_tensor_ncdm == _TRUE_) { + ppv->index_pt_psi0_ncdm1 = index_pt; + ppv->N_ncdm = pba->N_ncdm; + class_alloc(ppv->l_max_ncdm,ppv->N_ncdm*sizeof(double),ppt->error_message); + class_alloc(ppv->q_size_ncdm,ppv->N_ncdm*sizeof(double),ppt->error_message); + + for(n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + // Set value of ppv->l_max_ncdm: + class_test(ppr->l_max_ncdm < 4, + ppt->error_message, + "ppr->l_max_ncdm=%d should be at least 4, i.e. we must integrate at least over first four momenta of non-cold dark matter perturbed phase-space distribution",n_ncdm); + //Copy value from precision parameter: + ppv->l_max_ncdm[n_ncdm] = ppr->l_max_ncdm; + ppv->q_size_ncdm[n_ncdm] = pba->q_size_ncdm[n_ncdm]; + + index_pt += (ppv->l_max_ncdm[n_ncdm]+1)*ppv->q_size_ncdm[n_ncdm]; + } + } + + + /** - (b) metric perturbation h is a propagating degree of freedom, so h and hdot are included + in the vector of ordinary perturbations, no in that of metric perturbations */ + + class_define_index(ppv->index_pt_gw,_TRUE_,index_pt,1); /* tensor metric perturbation h (gravitational waves) */ + class_define_index(ppv->index_pt_gwdot,_TRUE_,index_pt,1); /* its time-derivative */ + + } + + ppv->pt_size = index_pt; + + /** - allocate vectors for storing the values of all these + quantities and their time-derivatives at a given time */ + + class_calloc(ppv->y,ppv->pt_size,sizeof(double),ppt->error_message); + class_alloc(ppv->dy,ppv->pt_size*sizeof(double),ppt->error_message); + class_alloc(ppv->used_in_sources,ppv->pt_size*sizeof(int),ppt->error_message); + + /** - specify which perturbations are needed in the evaluation of source terms */ + + /* take all of them by default */ + for (index_pt=0; index_ptpt_size; index_pt++) + ppv->used_in_sources[index_pt] = _TRUE_; + + /* indicate which ones are not needed (this is just for saving time, + omitting perturbations in this list will not change the + results!) */ + + if (_scalars_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + /* we don't need temperature multipoles above l=2 (but they are + defined only when rsa and tca are off) */ + + for (index_pt=ppv->index_pt_l3_g; index_pt <= ppv->index_pt_delta_g+ppv->l_max_g; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + + /* for polarization, we only need l=0,2 (but l =1,3, ... are + defined only when rsa and tca are off) */ + + ppv->used_in_sources[ppv->index_pt_pol1_g]=_FALSE_; + + for (index_pt=ppv->index_pt_pol3_g; index_pt <= ppv->index_pt_pol0_g+ppv->l_max_pol_g; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + + } + + } + + if (pba->has_ur == _TRUE_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + /* we don't need ur multipoles above l=2 (but they are + defined only when rsa and ufa are off) */ + + for (index_pt=ppv->index_pt_l3_ur; index_pt <= ppv->index_pt_delta_ur+ppv->l_max_ur; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + + } + } + } + + if (pba->has_ncdm == _TRUE_) { + + /* we don't need ncdm multipoles above l=2 (but they are + defined only when ncdmfa is off) */ + + index_pt = ppv->index_pt_psi0_ncdm1; + for(n_ncdm = 0; n_ncdm < ppv-> N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + if (l>2) ppv->used_in_sources[index_pt]=_FALSE_; + index_pt++; + } + } + } + } + } + + if (_tensors_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + /* we don't need temperature multipoles above except l=0,2,4 */ + + ppv->used_in_sources[ppv->index_pt_theta_g]=_FALSE_; + ppv->used_in_sources[ppv->index_pt_l3_g]=_FALSE_; + + for (index_pt=ppv->index_pt_delta_g+5; index_pt <= ppv->index_pt_delta_g+ppv->l_max_g; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + + /* same for polarization, we only need l=0,2,4 */ + + ppv->used_in_sources[ppv->index_pt_pol1_g]=_FALSE_; + ppv->used_in_sources[ppv->index_pt_pol3_g]=_FALSE_; + + for (index_pt=ppv->index_pt_pol0_g+5; index_pt <= ppv->index_pt_pol0_g+ppv->l_max_pol_g; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + } + } + + /* we need h' but not h */ + ppv->used_in_sources[ppv->index_pt_gw]=_FALSE_; + + } + + /** - case of setting initial conditions for a new wavenumber */ + + if (pa_old == NULL) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: initializing vector at tau=%e\n",k,tau); + + if (_scalars_) { + + /** - --> (a) check that current approximation scheme is consistent + with initial conditions */ + + class_test(ppw->approx[ppw->index_ap_rsa] == (int)rsa_on, + ppt->error_message, + "scalar initial conditions assume radiation streaming approximation turned off"); + + + if (pba->has_ur == _TRUE_) { + + class_test(ppw->approx[ppw->index_ap_ufa] == (int)ufa_on, + ppt->error_message, + "scalar initial conditions assume ur fluid approximation turned off"); + + } + + if (pba->has_ncdm == _TRUE_) { + + class_test(ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_on, + ppt->error_message, + "scalar initial conditions assume ncdm fluid approximation turned off"); + + } + + class_test(ppw->approx[ppw->index_ap_tca] == (int)tca_off, + ppt->error_message, + "scalar initial conditions assume tight-coupling approximation turned on"); + + } + + if (_tensors_) { + + class_test(ppw->approx[ppw->index_ap_tca] == (int)tca_off, + ppt->error_message, + "tensor initial conditions assume tight-coupling approximation turned on"); + + class_test(ppw->approx[ppw->index_ap_rsa] == (int)rsa_on, + ppt->error_message, + "tensor initial conditions assume radiation streaming approximation turned off"); + + } + + /** - --> (b) let ppw-->pv points towards the perturb_vector structure + that we just created */ + + ppw->pv = ppv; + + /** - --> (c) fill the vector ppw-->pv-->y with appropriate initial conditions */ + + class_call(perturb_initial_conditions(ppr, + pba, + ppt, + index_md, + index_ic, + k, + tau, + ppw), + ppt->error_message, + ppt->error_message); + + } + + /** - case of switching approximation while a wavenumber is being integrated */ + + else { + + /** - --> (a) for the scalar mode: */ + + if (_scalars_) { + + /** - ---> (a.1.) check that the change of approximation scheme makes + sense (note: before calling this routine there is already a + check that we wish to change only one approximation flag at + a time) */ + + class_test((pa_old[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_tca] == (int)tca_on), + ppt->error_message, + "at tau=%g: the tight-coupling approximation can be switched off, not on",tau); + + /** - ---> (a.2.) some variables (b, cdm, fld, ...) are not affected by + any approximation. They need to be reconducted whatever + the approximation switching is. We treat them here. Below + we will treat other variables case by case. */ + + ppv->y[ppv->index_pt_delta_b] = + ppw->pv->y[ppw->pv->index_pt_delta_b]; + + ppv->y[ppv->index_pt_theta_b] = + ppw->pv->y[ppw->pv->index_pt_theta_b]; + + if (pba->has_cdm == _TRUE_) { + + ppv->y[ppv->index_pt_delta_cdm] = + ppw->pv->y[ppw->pv->index_pt_delta_cdm]; + + if (ppt->gauge == newtonian) { + ppv->y[ppv->index_pt_theta_cdm] = + ppw->pv->y[ppw->pv->index_pt_theta_cdm]; + } + } + + if (pba->has_dcdm == _TRUE_) { + + ppv->y[ppv->index_pt_delta_dcdm] = + ppw->pv->y[ppw->pv->index_pt_delta_dcdm]; + + ppv->y[ppv->index_pt_theta_dcdm] = + ppw->pv->y[ppw->pv->index_pt_theta_dcdm]; + } + + if (pba->has_dr == _TRUE_){ + for (l=0; l <= ppv->l_max_dr; l++) + ppv->y[ppv->index_pt_F0_dr+l] = + ppw->pv->y[ppw->pv->index_pt_F0_dr+l]; + } + + if (pba->has_fld == _TRUE_) { + + ppv->y[ppv->index_pt_delta_fld] = + ppw->pv->y[ppw->pv->index_pt_delta_fld]; + + ppv->y[ppv->index_pt_theta_fld] = + ppw->pv->y[ppw->pv->index_pt_theta_fld]; + } + + if (pba->has_scf == _TRUE_) { + + ppv->y[ppv->index_pt_phi_scf] = + ppw->pv->y[ppw->pv->index_pt_phi_scf]; + + ppv->y[ppv->index_pt_phi_prime_scf] = + ppw->pv->y[ppw->pv->index_pt_phi_prime_scf]; + } + + if (ppt->gauge == synchronous) + ppv->y[ppv->index_pt_eta] = + ppw->pv->y[ppw->pv->index_pt_eta]; + + if (ppt->gauge == newtonian) + ppv->y[ppv->index_pt_phi] = + ppw->pv->y[ppw->pv->index_pt_phi]; + + /* -- case of switching off tight coupling + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_tca] == (int)tca_on) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch off tight-coupling approximation at tau=%e\n",k,tau); + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + + /* tight-coupling approximation for shear_g (previously + computed in perturb_derivs: perturb_derivs is always + called at the end of generic_evolver, in order to update + all quantities in ppw to the time at which the + approximation is switched off) */ + ppv->y[ppv->index_pt_shear_g] = ppw->tca_shear_g; + + ppv->y[ppv->index_pt_l3_g] = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->s_l[3]*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for l=3 */ + + ppv->y[ppv->index_pt_pol0_g] = 2.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=0 */ + ppv->y[ppv->index_pt_pol1_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*(5.-2.*ppw->s_l[2])/6.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=1 */ + ppv->y[ppv->index_pt_pol2_g] = 0.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=2 */ + ppv->y[ppv->index_pt_pol3_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*3.*ppw->s_l[3]/14.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=3 */ + + if (pba->has_ur == _TRUE_) { + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm];l++){ + // This is correct with or without ncdmfa, since ppv->lmax_ncdm is set accordingly. + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + + /* perturbed recombination */ + /* the initial conditions are set when tca is switched off (current block) */ + if (ppt->has_perturbed_recombination == _TRUE_){ + ppv->y[ppv->index_pt_perturbed_recombination_delta_temp] = 1./3.*ppv->y[ppw->pv->index_pt_delta_b]; + ppv->y[ppv->index_pt_perturbed_recombination_delta_chi] =0.; + } + + } // end of block tca ON -> tca OFF + + /* perturbed recombination */ + /* For any other transition in the approximation scheme, we should just copy the value of the perturbations, provided tca is already off (otherwise the indices are not yet allocated). For instance, we do not want to copy the values in the (k,tau) region where both UFA and TCA are engaged.*/ + + if ((ppt->has_perturbed_recombination == _TRUE_)&&(pa_old[ppw->index_ap_tca]==(int)tca_off)){ + ppv->y[ppv->index_pt_perturbed_recombination_delta_temp] = + ppw->pv->y[ppw->pv->index_pt_perturbed_recombination_delta_temp]; + ppv->y[ppv->index_pt_perturbed_recombination_delta_chi] = + ppw->pv->y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; + } + + + /* -- case of switching on radiation streaming + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_rsa] == (int)rsa_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on radiation streaming approximation at tau=%e with Omega_r=%g\n",k,tau,ppw->pvecback[pba->index_bg_Omega_r]); + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + } + + /* -- case of switching on ur fluid + approximation. Provide correct initial conditions to new set + of variables */ + + if (pba->has_ur == _TRUE_) { + + if ((pa_old[ppw->index_ap_ufa] == (int)ufa_off) && (ppw->approx[ppw->index_ap_ufa] == (int)ufa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on ur fluid approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and + ppv->q_size_ncdm is updated.*/ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + } + } + + /* -- case of switching on ncdm fluid + approximation. Provide correct initial conditions to new set + of variables */ + + if (pba->has_ncdm == _TRUE_) { + + if ((pa_old[ppw->index_ap_ncdmfa] == (int)ncdmfa_off) && (ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on ncdm fluid approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (pba->has_ur == _TRUE_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } + } + + a = ppw->pvecback[pba->index_bg_a]; + index_pt = ppw->pv->index_pt_psi0_ncdm1; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + // We are in the fluid approximation, so ncdm_l_size is always 3. + ncdm_l_size = ppv->l_max_ncdm[n_ncdm]+1; + rho_plus_p_ncdm = ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ + ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + for(l=0; l<=2; l++){ + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm+l] = 0.0; + } + factor = pba->factor_ncdm[n_ncdm]*pow(pba->a_today/a,4); + for(index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q++){ + // Integrate over distributions: + q = pba->q_ncdm[n_ncdm][index_q]; + q2 = q*q; + epsilon = sqrt(q2+a*a*pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]); + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm] += + pba->w_ncdm[n_ncdm][index_q]*q2*epsilon* + ppw->pv->y[index_pt]; + + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm+1] += + pba->w_ncdm[n_ncdm][index_q]*q2*q* + ppw->pv->y[index_pt+1]; + + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm+2] += + pba->w_ncdm[n_ncdm][index_q]*q2*q2/epsilon* + ppw->pv->y[index_pt+2]; + + //Jump to next momentum bin in ppw->pv->y: + index_pt += (ppw->pv->l_max_ncdm[n_ncdm]+1); + } + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm] *=factor/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm+1] *=k*factor/rho_plus_p_ncdm; + ppv->y[ppv->index_pt_psi0_ncdm1+ncdm_l_size*n_ncdm+2] *=2.0/3.0*factor/rho_plus_p_ncdm; + } + } + } + } + + /** - --> (b) for the vector mode */ + + if (_vectors_) { + + /** - ---> (b.1.) check that the change of approximation scheme makes + sense (note: before calling this routine there is already a + check that we wish to change only one approximation flag at + a time) */ + + class_test((pa_old[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_tca] == (int)tca_on), + ppt->error_message, + "at tau=%g: the tight-coupling approximation can be switched off, not on",tau); + + /** - ---> (b.2.) some variables (gw, gwdot, ...) are not affected by + any approximation. They need to be reconducted whatever + the approximation switching is. We treat them here. Below + we will treat other variables case by case. */ + + if (ppt->gauge == synchronous){ + + ppv->y[ppv->index_pt_hv_prime] = + ppw->pv->y[ppw->pv->index_pt_hv_prime]; + + } + if (ppt->gauge == newtonian){ + + ppv->y[ppv->index_pt_V] = + ppw->pv->y[ppw->pv->index_pt_V]; + + } + + ppv->y[ppv->index_pt_theta_b] = + ppw->pv->y[ppw->pv->index_pt_theta_b]; + + + /* -- case of switching off tight coupling + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_tca] == (int)tca_on) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch off tight-coupling approximation at tau=%e\n",k,tau); + + ppv->y[ppv->index_pt_delta_g] = 0.0; //TBC + //-4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; + + ppv->y[ppv->index_pt_pol0_g] = 0.0; //TBC + //1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; + } + + /* -- case of switching on radiation streaming + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_rsa] == (int)rsa_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on radiation streaming approximation at tau=%e with Omega_r=%g\n",k,tau,ppw->pvecback[pba->index_bg_Omega_r]); + + } + + } + + /** - --> (c) for the tensor mode */ + + if (_tensors_) { + + /** - ---> (c.1.) check that the change of approximation scheme makes + sense (note: before calling this routine there is already a + check that we wish to change only one approximation flag at + a time) */ + + class_test((pa_old[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_tca] == (int)tca_on), + ppt->error_message, + "at tau=%g: the tight-coupling approximation can be switched off, not on",tau); + + /** - ---> (c.2.) some variables (gw, gwdot, ...) are not affected by + any approximation. They need to be reconducted whatever + the approximation switching is. We treat them here. Below + we will treat other variables case by case. */ + + + ppv->y[ppv->index_pt_gw] = + ppw->pv->y[ppw->pv->index_pt_gw]; + + ppv->y[ppv->index_pt_gwdot] = + ppw->pv->y[ppw->pv->index_pt_gwdot]; + + if (ppt->evolve_tensor_ur == _TRUE_){ + + /* For now, neutrinos go here. */ + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + + if (ppt->evolve_tensor_ncdm == _TRUE_){ + + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm];l++){ + // This is correct with or without ncdmfa, since ppv->lmax_ncdm is set accordingly. + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + + /* -- case of switching off tight coupling + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_tca] == (int)tca_on) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch off tight-coupling approximation at tau=%e\n",k,tau); + + ppv->y[ppv->index_pt_delta_g] = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; + + ppv->y[ppv->index_pt_pol0_g] = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; + } + + /* -- case of switching on radiation streaming + approximation. Provide correct initial conditions to new set + of variables */ + + if ((pa_old[ppw->index_ap_rsa] == (int)rsa_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on radiation streaming approximation at tau=%e with Omega_r=%g\n",k,tau,ppw->pvecback[pba->index_bg_Omega_r]); + + } + } + + /** - --> (d) free the previous vector of perturbations */ + + class_call(perturb_vector_free(ppw->pv), + ppt->error_message, + ppt->error_message); + + /** - --> (e) let ppw-->pv points towards the perturb_vector structure + that we just created */ + + ppw->pv = ppv; + + } + + return _SUCCESS_; +} + +/** + * Free the perturb_vector structure. + * + * @param pv Input: pointer to perturb_vector structure to be freed + * @return the error status + */ + +int perturb_vector_free( + struct perturb_vector * pv + ) { + + if (pv->l_max_ncdm != NULL) free(pv->l_max_ncdm); + if (pv->q_size_ncdm != NULL) free(pv->q_size_ncdm); + free(pv->y); + free(pv->dy); + free(pv->used_in_sources); + free(pv); + + return _SUCCESS_; +} + +/** + * For each mode, wavenumber and initial condition, this function + * initializes in the vector all values of perturbed variables (in a + * given gauge). It is assumed here that all values have previously been + * set to zero, only non-zero values are set here. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param index_ic Input: index of initial condition under consideration (ad, iso...) + * @param k Input: wavenumber + * @param tau Input: conformal time + * @param ppw Input/Output: workspace containing in input the approximation scheme, the background/thermodynamics/metric quantities, and eventually the previous vector y; and in output the new vector y. + * @return the error status + */ + +int perturb_initial_conditions(struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + int index_md, + int index_ic, + double k, + double tau, + struct perturb_workspace * ppw + ) { + /** Summary: */ + + /** --> Declare local variables */ + + double a,a_prime_over_a; + double delta_ur=0.,theta_ur=0.,shear_ur=0.,l3_ur=0.,eta=0.,delta_cdm=0.,alpha, alpha_prime; + double delta_dr=0; + double q,epsilon,k2; + int index_q,n_ncdm,idx; + double rho_r,rho_m,rho_nu,rho_m_over_rho_r; + double fracnu,fracg,fracb,fraccdm,om; + double ktau_two,ktau_three; + double f_dr; + + double delta_tot; + double velocity_tot; + double s2_squared; + + /** --> For scalars */ + + if (_scalars_) { + + /** - (a) compute relevant background quantities: compute rho_r, + rho_m, rho_nu (= all relativistic except photons), and their + ratio. */ + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_normal, + &(ppw->last_index_back), + ppw->pvecback), + pba->error_message, + ppt->error_message); + + a = ppw->pvecback[pba->index_bg_a]; + + a_prime_over_a = ppw->pvecback[pba->index_bg_H]*a; + + /* 8piG/3 rho_r(t_i) */ + rho_r = ppw->pvecback[pba->index_bg_rho_g]; + + /* 8piG/3 rho_m(t_i) */ + rho_m = ppw->pvecback[pba->index_bg_rho_b]; + + /* 8piG/3 rho_nu(t_i) (all neutrinos and collisionless relics being relativistic at that time) */ + rho_nu = 0.; + + if (pba->has_cdm == _TRUE_) { + rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + + if (pba->has_dcdm == _TRUE_) { + rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } + + if (pba->has_dr == _TRUE_) { + rho_r += ppw->pvecback[pba->index_bg_rho_dr]; + rho_nu += ppw->pvecback[pba->index_bg_rho_dr]; + } + + if (pba->has_ur == _TRUE_) { + rho_r += ppw->pvecback[pba->index_bg_rho_ur]; + rho_nu += ppw->pvecback[pba->index_bg_rho_ur]; + } + + if (pba->has_ncdm == _TRUE_) { + for(n_ncdm=0; n_ncdmN_ncdm; n_ncdm++){ + rho_r += ppw->pvecback[pba->index_bg_rho_ncdm1 + n_ncdm]; + rho_nu += ppw->pvecback[pba->index_bg_rho_ncdm1 + n_ncdm]; + } + } + + class_test(rho_r == 0., + ppt->error_message, + "stop to avoid division by zero"); + + /* f_nu = Omega_nu(t_i) / Omega_r(t_i) */ + fracnu = rho_nu/rho_r; + + /* f_g = Omega_g(t_i) / Omega_r(t_i) */ + fracg = ppw->pvecback[pba->index_bg_rho_g]/rho_r; + + /* f_b = Omega_b(t_i) / Omega_m(t_i) */ + fracb = ppw->pvecback[pba->index_bg_rho_b]/rho_m; + + /* f_cdm = Omega_cdm(t_i) / Omega_m(t_i) */ + fraccdm = 1.-fracb; + + /* Omega_m(t_i) / Omega_r(t_i) */ + rho_m_over_rho_r = rho_m/rho_r; + + /* omega = Omega_m(t_i) a(t_i) H(t_i) / sqrt(Omega_r(t_i)) + = Omega_m(t_0) a(t_0) H(t_0) / sqrt(Omega_r(t_0)) assuming rho_m in a-3 and rho_r in a^-4 + = (8piG/3 rho_m(t_i)) a(t_i) / sqrt(8piG/3 rho_r(t_i)) in Mpc-1 + This (a priori strange) parameter is the relevant one for expressing a + as a function of tau during radiation and matter domination (but not DE domination). + Indeed the exact solution of Friedmann when there is only radiation and matter in + the universe is + a = [H(t_0)^2 Omega_m(t_0) a(t_0)^3 / 4] x [tau^2 + 4 tau / omega] + */ + om = a*rho_m/sqrt(rho_r); + + /* (k tau)^2, (k tau)^3 */ + ktau_two=k*k*tau*tau; + ktau_three=k*tau*ktau_two; + + + /* curvature-dependent factors */ + + s2_squared = 1.-3.*pba->K/k/k; + + /** - (b) starts by setting everything in synchronous gauge. If + another gauge is needed, we will perform a gauge + transformation below. */ + + /** - --> (b.1.) adiabatic */ + + if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { + + /* The following formulas are valid at leading order in + (k*tau) and (om*tau), and order zero in + tight-coupling. Identical to first order terms in CRS, + except for normalization (when ppr->curvature_ini=1, tau=1: + leads to factor 1/2 difference between CRS formulas with + beta1=0). Identical to CAMB when om set to zero in theta_g, + theta_ur, shear_ur, tau + + In the non-flat case the relation R=eta is still valid + outside the horizon for adiabatic IC. Hence eta is still + set to ppr->curvature_ini at leading order. Factors s2 + appear through the solution of Einstein equations and + equations of motion. */ + + /* photon density */ + ppw->pv->y[ppw->pv->index_pt_delta_g] = - ktau_two/3. * (1.-om*tau/5.) + * ppr->curvature_ini * s2_squared; + + /* photon velocity */ + ppw->pv->y[ppw->pv->index_pt_theta_g] = - k*ktau_three/36. * (1.-3.*(1.+5.*fracb-fracnu)/20./(1.-fracnu)*om*tau) + * ppr->curvature_ini * s2_squared; + + /* tighly-coupled baryons */ + ppw->pv->y[ppw->pv->index_pt_delta_b] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* baryon density */ + ppw->pv->y[ppw->pv->index_pt_theta_b] = ppw->pv->y[ppw->pv->index_pt_theta_g]; /* baryon velocity */ + + if (pba->has_cdm == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_cdm] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* cdm density */ + /* cdm velocity vanishes in the synchronous gauge */ + } + + if (pba->has_dcdm == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_dcdm] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* dcdm density */ + /* dcdm velocity velocity vanishes initially in the synchronous gauge */ + + } + + + /* fluid (assumes wa=0, if this is not the case the + fluid will catch anyway the attractor solution) */ + if (pba->has_fld == _TRUE_) { + + ppw->pv->y[ppw->pv->index_pt_delta_fld] = - ktau_two/4.*(1.+pba->w0_fld+pba->wa_fld)*(4.-3.*pba->cs2_fld)/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC: curvature + + ppw->pv->y[ppw->pv->index_pt_theta_fld] = - k*ktau_three/4.*pba->cs2_fld/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC:curvature + + } + + if (pba->has_scf == _TRUE_) { + /** - ---> Canonical field (solving for the perturbations): + * initial perturbations set to zero, they should reach the attractor soon enough. + * - ---> TODO: Incorporate the attractor IC from 1004.5509. + * delta_phi \f$ = -(a/k)^2/\phi'(\rho + p)\theta \f$, + * delta_phi_prime \f$ = a^2/\phi' \f$ (delta_rho_phi + V'delta_phi), + * and assume theta, delta_rho as for perfect fluid + * with \f$ c_s^2 = 1 \f$ and w = 1/3 (ASSUMES radiation TRACKING) + */ + + ppw->pv->y[ppw->pv->index_pt_phi_scf] = 0.; + /* a*a/k/k/ppw->pvecback[pba->index_bg_phi_prime_scf]*k*ktau_three/4.*1./(4.-6.*(1./3.)+3.*1.) * (ppw->pvecback[pba->index_bg_rho_scf] + ppw->pvecback[pba->index_bg_p_scf])* ppr->curvature_ini * s2_squared; */ + + ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] = 0.; + /* delta_fld expression * rho_scf with the w = 1/3, c_s = 1 + a*a/ppw->pvecback[pba->index_bg_phi_prime_scf]*( - ktau_two/4.*(1.+1./3.)*(4.-3.*1.)/(4.-6.*(1/3.)+3.*1.)*ppw->pvecback[pba->index_bg_rho_scf] - ppw->pvecback[pba->index_bg_dV_scf]*ppw->pv->y[ppw->pv->index_pt_phi_scf])* ppr->curvature_ini * s2_squared; */ + } + + /* all relativistic relics: ur, early ncdm, dr */ + + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + + delta_ur = ppw->pv->y[ppw->pv->index_pt_delta_g]; /* density of ultra-relativistic neutrinos/relics */ + + theta_ur = - k*ktau_three/36./(4.*fracnu+15.) * (4.*fracnu+11.+12.*s2_squared-3.*(8.*fracnu*fracnu+50.*fracnu+275.)/20./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini * s2_squared; /* velocity of ultra-relativistic neutrinos/relics */ //TBC + + shear_ur = ktau_two/(45.+12.*fracnu) * (3.*s2_squared-1.) * (1.+(4.*fracnu-5.)/4./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini;//TBC /s2_squared; /* shear of ultra-relativistic neutrinos/relics */ //TBC:0 + + l3_ur = ktau_three*2./7./(12.*fracnu+45.)* ppr->curvature_ini;//TBC + + if (pba->has_dr == _TRUE_) delta_dr = delta_ur; + + } + + /* synchronous metric perturbation eta */ + //eta = ppr->curvature_ini * (1.-ktau_two/12./(15.+4.*fracnu)*(5.+4.*fracnu - (16.*fracnu*fracnu+280.*fracnu+325)/10./(2.*fracnu+15.)*tau*om)) / s2_squared; + //eta = ppr->curvature_ini * s2_squared * (1.-ktau_two/12./(15.+4.*fracnu)*(15.*s2_squared-10.+4.*s2_squared*fracnu - (16.*fracnu*fracnu+280.*fracnu+325)/10./(2.*fracnu+15.)*tau*om)); + eta = ppr->curvature_ini * (1.-ktau_two/12./(15.+4.*fracnu)*(5.+4.*s2_squared*fracnu - (16.*fracnu*fracnu+280.*fracnu+325)/10./(2.*fracnu+15.)*tau*om)); + + } + + /* isocurvature initial conditions taken from Bucher, Moodely, + Turok 99, with just a different normalization convention for + tau and the scale factor. [k tau] from BMT99 is left invariant + because it is the ratio [k/aH]. But [Omega_i,0 tau] from BMT99 + must be replaced by [frac_i*om*tau/4]. Some doubts remain about + the niv formulas, that should be recheked at some point. We + also checked that for bi,cdi,nid, everything coincides exactly + with the CAMB formulas. */ + + /** - --> (b.2.) Cold dark matter Isocurvature */ + + if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + + class_test(pba->has_cdm == _FALSE_, + ppt->error_message, + "not consistent to ask for CDI in absence of CDM!"); + + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fraccdm*om*tau*(-2./3.+om*tau/4.); + ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fraccdm*om*ktau_two/12.; + + ppw->pv->y[ppw->pv->index_pt_delta_b] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; + ppw->pv->y[ppw->pv->index_pt_theta_b] = ppw->pv->y[ppw->pv->index_pt_theta_g]; + + ppw->pv->y[ppw->pv->index_pt_delta_cdm] = ppr->entropy_ini+3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; + + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_)) { + + delta_ur = ppw->pv->y[ppw->pv->index_pt_delta_g]; + theta_ur = ppw->pv->y[ppw->pv->index_pt_theta_g]; + shear_ur = -ppr->entropy_ini*fraccdm*ktau_two*tau*om/6./(2.*fracnu+15.); + + } + + eta = -ppr->entropy_ini*fraccdm*om*tau*(1./6.-om*tau/16.); + + } + + /** - --> (b.3.) Baryon Isocurvature */ + + if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracb*om*tau*(-2./3.+om*tau/4.); + ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracb*om*ktau_two/12.; + + ppw->pv->y[ppw->pv->index_pt_delta_b] = ppr->entropy_ini+3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; + ppw->pv->y[ppw->pv->index_pt_theta_b] = ppw->pv->y[ppw->pv->index_pt_theta_g]; + + if (pba->has_cdm == _TRUE_) { + + ppw->pv->y[ppw->pv->index_pt_delta_cdm] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; + + } + + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_)) { + + delta_ur = ppw->pv->y[ppw->pv->index_pt_delta_g]; + theta_ur = ppw->pv->y[ppw->pv->index_pt_theta_g]; + shear_ur = -ppr->entropy_ini*fracb*ktau_two*tau*om/6./(2.*fracnu+15.); + + } + + eta = -ppr->entropy_ini*fracb*om*tau*(1./6.-om*tau/16.); + + } + + /** - --> (b.4.) Neutrino density Isocurvature */ + + if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { + + class_test((pba->has_ur == _FALSE_) && (pba->has_ncdm == _FALSE_), + ppt->error_message, + "not consistent to ask for NID in absence of ur or ncdm species!"); + + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracnu/fracg*(-1.+ktau_two/6.); + ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracnu/fracg*k*k*tau*(1./4.-fracb/fracg*3./16.*om*tau); + + ppw->pv->y[ppw->pv->index_pt_delta_b] = ppr->entropy_ini*fracnu/fracg/8.*ktau_two; + ppw->pv->y[ppw->pv->index_pt_theta_b] = ppw->pv->y[ppw->pv->index_pt_theta_g]; + + if (pba->has_cdm == _TRUE_) { + + ppw->pv->y[ppw->pv->index_pt_delta_cdm] = -ppr->entropy_ini*fracnu*fracb/fracg/80.*ktau_two*om*tau; + + } + + delta_ur = ppr->entropy_ini*(1.-ktau_two/6.); + theta_ur = ppr->entropy_ini*k*k*tau/4.; + shear_ur = ppr->entropy_ini*ktau_two/(4.*fracnu+15.)/2.; + + eta = -ppr->entropy_ini*fracnu/(4.*fracnu+15.)/6.*ktau_two; + + } + + /** - --> (b.5.) Neutrino velocity Isocurvature */ + + if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { + + class_test((pba->has_ur == _FALSE_) && (pba->has_ncdm == _FALSE_), + ppt->error_message, + "not consistent to ask for NIV in absence of ur or ncdm species!"); + + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*k*tau*fracnu/fracg* + (1. - 3./16.*fracb*(2.+fracg)/fracg*om*tau); /* small diff wrt camb */ + + ppw->pv->y[ppw->pv->index_pt_theta_g] = ppr->entropy_ini*fracnu/fracg*3./4.*k* + (-1.+3./4.*fracb/fracg*om*tau+3./16.*om*om*tau*tau*fracb/fracg/fracg*(fracg-3.*fracb)+ktau_two/6.); + + ppw->pv->y[ppw->pv->index_pt_delta_b] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* small diff wrt camb */ + ppw->pv->y[ppw->pv->index_pt_theta_b] = ppw->pv->y[ppw->pv->index_pt_theta_g]; + + if (pba->has_cdm == _TRUE_) { + + ppw->pv->y[ppw->pv->index_pt_delta_cdm] = -ppr->entropy_ini*9./64.*fracnu*fracb/fracg*k*tau*om*tau; + + } + + delta_ur = -ppr->entropy_ini*k*tau*(1.+3./16.*fracb*fracnu/fracg*om*tau); /* small diff wrt camb */ + theta_ur = ppr->entropy_ini*3./4.*k*(1. - 1./6.*ktau_two*(4.*fracnu+9.)/(4.*fracnu+5.)); + shear_ur = ppr->entropy_ini/(4.*fracnu+15.)*k*tau*(1. + 3.*om*tau*fracnu/(4.*fracnu+15.)); /* small diff wrt camb */ + + eta = ppr->entropy_ini*fracnu*k*tau*(-1./(4.*fracnu+5.) + (-3./64.*fracb/fracg+15./4./(4.*fracnu+15.)/(4.*fracnu+5.)*om*tau)); /* small diff wrt camb */ + + } + + /** - (c) If the needed gauge is really the synchronous gauge, we need to affect the previously computed value of eta to the actual variable eta */ + + if (ppt->gauge == synchronous) { + + ppw->pv->y[ppw->pv->index_pt_eta] = eta; + } + + + /** - (d) If the needed gauge is the newtonian gauge, we must compute alpha and then perform a gauge transformation for each variable */ + + if (ppt->gauge == newtonian) { + + /* alpha is like in Ma & Bertschinger: (h'+6 eta')/(2k^2). We obtain it from the first two Einstein equations: + + alpha = [eta + 3/2 (a'/a)^2 (delta_rho/rho_c) / k^2 /s_2^2 + 3/2 (a'/a)^3 3 ((rho+p)theta/rho_c) / k^4 / s_2^2] / (a'/a) + = [eta + 3/2 (a'/a)^2 / k^2 /s_2^2 {delta_tot + 3 (a'/a) /k^2 velocity_tot}] / (a'/a) + + with + + delta_tot = (delta_rho/rho_c) + = [rho_r delta_r + rho_m delta_m] / (rho_r + rho_m) + = [delta_r + (rho_m/rho_r) delta_m] / (1 + rho_m/rho_r) + = [(f_g delta_g + f_nu delta_nu) + (rho_m/rho_r) (f_b delta_b + f_cdm delta_cdm)] / (1 + rho_m/rho_r) + + velocity_tot = ((rho+p)theta/rho_c) + = [(4/3) rho_r theta_r + rho_m theta_m] / (rho_r + rho_m) + = [(4/3) theta_r + (rho_m/rho_r) theta_m] / (1 + rho_m/rho_r) + = [(4/3) (f_g theta_g + f_nu theta_nu) + (rho_m/rho_r) (f_b delta_b + f_cdm 0)] / (1 + rho_m/rho_r) + */ + + if (pba->has_cdm == _TRUE_) + delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_cdm]; + else if (pba->has_dcdm == _TRUE_) + delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_dcdm]; + else + delta_cdm=0.; + + // note: if there are no neutrinos, fracnu, delta_ur and theta_ur below will consistently be zero. + + delta_tot = (fracg*ppw->pv->y[ppw->pv->index_pt_delta_g]+fracnu*delta_ur+rho_m_over_rho_r*(fracb*ppw->pv->y[ppw->pv->index_pt_delta_b]+fraccdm*delta_cdm))/(1.+rho_m_over_rho_r); + + velocity_tot = ((4./3.)*(fracg*ppw->pv->y[ppw->pv->index_pt_theta_g]+fracnu*theta_ur) + rho_m_over_rho_r*fracb*ppw->pv->y[ppw->pv->index_pt_theta_b])/(1.+rho_m_over_rho_r); + + alpha = (eta + 3./2.*a_prime_over_a*a_prime_over_a/k/k/s2_squared*(delta_tot + 3.*a_prime_over_a/k/k*velocity_tot))/a_prime_over_a; + + ppw->pv->y[ppw->pv->index_pt_phi] = eta - a_prime_over_a*alpha; + + ppw->pv->y[ppw->pv->index_pt_delta_g] -= 4.*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_g] += k*k*alpha; + + ppw->pv->y[ppw->pv->index_pt_delta_b] -= 3.*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_b] += k*k*alpha; + + if (pba->has_cdm == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_cdm] -= 3.*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_cdm] = k*k*alpha; + } + + if (pba->has_dcdm == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_dcdm] += (-3.*a_prime_over_a - a*pba->Gamma_dcdm)*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_dcdm] = k*k*alpha; + } + + /* fluid */ + if (pba->has_fld == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_fld] += 3*(1.+pba->w0_fld+pba->wa_fld)*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_fld] += k*k*alpha; + } + + /* scalar field: check */ + if (pba->has_scf == _TRUE_) { + alpha_prime = 0.0; + /* - 2. * a_prime_over_a * alpha + eta + - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; */ + + ppw->pv->y[ppw->pv->index_pt_phi_scf] += alpha*ppw->pvecback[pba->index_bg_phi_prime_scf]; + ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] += + (-2.*a_prime_over_a*alpha*ppw->pvecback[pba->index_bg_phi_prime_scf] + -a*a* dV_scf(pba,ppw->pvecback[pba->index_bg_phi_scf])*alpha + +ppw->pvecback[pba->index_bg_phi_prime_scf]*alpha_prime); + } + + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + + delta_ur -= 4.*a_prime_over_a*alpha; + theta_ur += k*k*alpha; + /* shear and l3 are gauge invariant */ + + if (pba->has_dr == _TRUE_) + delta_dr += (-4.*a_prime_over_a + a*pba->Gamma_dcdm*ppw->pvecback[pba->index_bg_rho_dcdm]/ppw->pvecback[pba->index_bg_rho_dr])*alpha; + + } + + } /* end of gauge transformation to newtonian gauge */ + + /** - (e) In any gauge, we should now implement the relativistic initial conditions in ur and ncdm variables */ + + if (pba->has_ur == _TRUE_) { + + ppw->pv->y[ppw->pv->index_pt_delta_ur] = delta_ur; + + ppw->pv->y[ppw->pv->index_pt_theta_ur] = theta_ur; + + ppw->pv->y[ppw->pv->index_pt_shear_ur] = shear_ur; + + ppw->pv->y[ppw->pv->index_pt_l3_ur] = l3_ur; + + } + + if (pba->has_ncdm == _TRUE_) { + idx = ppw->pv->index_pt_psi0_ncdm1; + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + + for (index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q++) { + + q = pba->q_ncdm[n_ncdm][index_q]; + + epsilon = sqrt(q*q+a*a*pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]); + + ppw->pv->y[idx] = -0.25 * delta_ur * pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + + ppw->pv->y[idx+1] = -epsilon/3./q/k*theta_ur* pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + + ppw->pv->y[idx+2] = -0.5 * shear_ur * pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + + ppw->pv->y[idx+3] = -0.25 * l3_ur * pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + + //Jump to next momentum bin: + idx += (ppw->pv->l_max_ncdm[n_ncdm]+1); + + } + } + } + + if (pba->has_dr == _TRUE_) { + + f_dr = pow(pow(a/pba->a_today,2)/pba->H0,2)*ppw->pvecback[pba->index_bg_rho_dr]; + + ppw->pv->y[ppw->pv->index_pt_F0_dr] = delta_dr*f_dr; + + ppw->pv->y[ppw->pv->index_pt_F0_dr+1] = 4./(3.*k)*theta_ur*f_dr; + + ppw->pv->y[ppw->pv->index_pt_F0_dr+2] = 2.*shear_ur*f_dr; + + ppw->pv->y[ppw->pv->index_pt_F0_dr+3] = l3_ur*f_dr; + + } + + } + /** --> For tensors */ + + if (_tensors_) { + + /** tensor initial conditions take into account the fact that + scalar (resp. tensor) \f$ C_l\f$'s are related to the real space + power spectrum of curvature (resp. of the tensor part of + metric perturbations) + + \f[ \ \ \sum_{ij} \f] + + In momentum space it is conventional to use the modes R(k) + and h(k) where the quantity h obeying to the equation of + propagation: + + \f[ h'' + \frac{2a'}{a} h + [k2+2K] h = 12\pi Ga2 (\rho+p) \sigma = 8\pi Ga2 p \pi \f] + + and the power spectra in real space and momentum space are related through: + + \f[ = \int \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} \right] = \int \frac{dk}{k} \mathcal{P}_R(k) \f] + \f[\sum_{ij} = \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} F\left(\frac{k^2}{K}\right) \right] = \int \frac{dk}{k} F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + + where \f$ \mathcal{P}_R\f$ and \f$ \mathcal{P}_h\f$ are the dimensionless spectrum of + curvature R, and F is a function of k2/K, where K is the curvature + parameter. F is equal to one in flat space (K=0), and coming + from the contraction of the laplacian eigentensor \f$ Q_{ij}\f$ with + itself. We will give F explicitly below. + + Similarly the scalar (S) and tensor (T) \f$ C_l\f$'s are given by + + \f[ C_l^S = 4\pi \int \frac{dk}{k} [\Delta_l^S(q)]^2 \mathcal{P}_R(k) \f] + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + + The usual convention for the tensor-to-scalar ratio + \f$ r = A_t / A_s \f$ at pivot scale + = 16 epsilon in single-field inflation + is such that for constant \f$ \mathcal{P}_R(k)\f$ and \f$ \mathcal{P}_h(k)\f$, + + \f[ r = 6 \frac{\mathcal{P}_h(k)}{\mathcal{P}_R(k)} \f] + + so + + \f[ \mathcal{P}_h(k) = \frac{\mathcal{P}_R(k) r}{6} = \frac{A_s r}{6} = \frac{A_t}{6} \f] + + A priori it would make sense to say that for a power-law + primordial spectrum there is an extra factor \f$ (k/k_{pivot})^{n_t} \f$ + (and eventually running and so on and so forth...) + + However it has been shown that the minimal models of + inflation in a negatively curved bubble lead to + \f$ \mathcal{P}_h(k)=\tanh(\pi*\nu/2)\f$. In open models it is customary to + define the tensor tilt in a non-flat universe as a deviation + from this behavior rather than from true scale-invariance in + the above sense. + + Hence we should have + + \f[ \mathcal{P}_h(k) = \frac{A_t}{6} [ \tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)}\f] + + where the brackets \f[ [...] \f] mean "if K<0" + + Then + + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \frac{A_t}{6} [\tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)} \f] + + In the code, it is then a matter of choice to write: + + - In the primordial module: \f$ \mathcal{P}_h(k) = \frac{A_t}{6} \tanh{(\pi*\frac{\nu}{2})} (k/k^*)^{n_T}\f$ + - In the perturbation initial conditions: \f$ h = 1\f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f$ + + or: + + - In the primordial module: \f$ \mathcal{P}_h(k) = A_t (k/k^*)^{n_T} \f$ + - In the perturbation initial conditions: \f$ h = \sqrt{[F\left(\frac{k^2}{K}\right) / 6] \tanh{(\pi*\frac{\nu}{2})}} \f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 \mathcal{P}_h(k) \f$ + + We choose this last option, such that the primordial and + spectra module differ minimally in flat and non-flat space. Then we must impose + + \f[ h = \sqrt{\left(\frac{F}{6}\right) \tanh{(\pi*\frac{\nu}{2})}} \f] + + The factor F is found to be given by: + + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{k2(k2-K)}{(k2+3K)(k2+2K)} \mathcal{P}_h(k) \f] + + Introducing as usual \f$ q2 = k2 - 3K \f$ and using qdq = kdk this gives + + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{(q2-3K)(q2-4K)}{q2(q2-K)} \mathcal{P}_h(k) \f] + + Using qdq = kdk this is equivalent to + + \f[ \sum_{ij} = \int \frac{dq}{q} \frac{q2-4K}{q2-K} \mathcal{P}_h(k(q)) \f] + + Finally, introducing \f$ \nu=q/\sqrt{|K|}\f$ and sgnK=SIGN(k)\f$=\pm 1\f$, this could also be written + + \f[ \sum_{ij} = \int \frac{d\nu}{\nu} \frac{(\nu2-4sgnK)}{(\nu2-sgnK)} \mathcal{P}_h(k(\nu)) \f] + + Equation (43,44) of Hu, Seljak, White, Zaldarriaga is + equivalent to absorbing the above factor + \f$ (\nu2-4sgnK)/(\nu2-sgnK)\f$ in the definition of the primordial + spectrum. Since the initial condition should be written in terms of k rather than nu, they should read + + \f[ h = \sqrt{ [k2(k2-K)]/[(k2+3K)(k2+2K)] / 6 * \tanh{(\pi*\frac{\nu}{2})} } \f] + + We leave the freedom to multiply by an arbitrary number + ppr->gw_ini. The standard convention corresponding to + standard definitions of r, \f$ A_T\f$, \f$ n_T\f$ is however ppr->gw_ini=1. + * + */ + + if (index_ic == ppt->index_ic_ten) { + ppw->pv->y[ppw->pv->index_pt_gw] = ppr->gw_ini/_SQRT6_; + } + + k2 = k*k; + + if (pba->sgnK != 0) { + ppw->pv->y[ppw->pv->index_pt_gw] *= sqrt(k2*(k2-pba->K)/(k2+3.*pba->K)/(k2+2.*pba->K)); + } + + if (pba->sgnK == -1) { + if (k*k+3*pba->K >= 0.) { + ppw->pv->y[ppw->pv->index_pt_gw] *= sqrt(tanh(_PI_/2.*sqrt(k2+3*pba->K)/sqrt(-pba->K))); + } + else { + ppw->pv->y[ppw->pv->index_pt_gw] = 0.; + } + } + + } + + return _SUCCESS_; +} + +/** + * Evaluate background/thermodynamics at \f$ \tau \f$, infer useful flags / time scales for integrating perturbations. + * + * Evaluate background quantities at \f$ \tau \f$, as well as thermodynamics for scalar mode; infer useful flags and time scales for integrating the perturbations: + * - check whether tight-coupling approximation is needed. + * - check whether radiation (photons, massless neutrinos...) perturbations are needed. + * - choose step of integration: step = ppr->perturb_integration_stepsize * min_time_scale, where min_time_scale = smallest time scale involved in the equations. There are three time scales to compare: + * -# that of recombination, \f$ \tau_c = 1/\kappa' \f$ + * -# Hubble time scale, \f$ \tau_h = a/a' \f$ + * -# Fourier mode, \f$ \tau_k = 1/k \f$ + * + * So, in general, min_time_scale = \f$ \min(\tau_c, \tau_b, \tau_h, \tau_k) \f$. + * + * However, if \f$ \tau_c \ll \tau_h \f$ and \f$ \tau_c + * \ll \tau_k \f$, we can use the tight-coupling regime for photons + * and write equations in such way that the time scale \f$ + * \tau_c \f$ becomes irrelevant (no effective mass term in \f$ + * 1/\tau_c \f$). Then, the smallest + * scale in the equations is only \f$ \min(\tau_h, \tau_k) \f$. + * In practise, it is sufficient to use only the condition \f$ \tau_c \ll \tau_h \f$. + * + * Also, if \f$ \rho_{matter} \gg \rho_{radiation} \f$ and \f$ k \gg + * aH \f$, we can switch off radiation perturbations (i.e. switch on + * the free-streaming approximation) and then the smallest scale is + * simply \f$ \tau_h \f$. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param k Input: wavenumber + * @param tau Input: conformal time + * @param ppw Input/Output: in output contains the approximation to be used at this time + * @return the error status + */ + +int perturb_approximations( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double tau, + struct perturb_workspace * ppw + ) { + /** Summary: */ + + /** - define local variables */ + + /* (a) time scale of Fourier mode, \f$ \tau_k = 1/k \f$ */ + double tau_k; + /* (b) time scale of expansion, \f$ \tau_h = a/a' \f$ */ + double tau_h; + /* (c) time scale of recombination, \f$ \tau_{\gamma} = 1/\kappa' \f$ */ + double tau_c; + + /** - compute Fourier mode time scale = \f$ \tau_k = 1/k \f$ */ + + class_test(k == 0., + ppt->error_message, + "stop to avoid division by zero"); + + tau_k = 1./k; + + /** - evaluate background quantities with background_at_tau() and + Hubble time scale \f$ \tau_h = a/a' \f$ */ + + class_call(background_at_tau(pba,tau, pba->normal_info, ppw->inter_mode, &(ppw->last_index_back), ppw->pvecback), + pba->error_message, + ppt->error_message); + + class_test(ppw->pvecback[pba->index_bg_H]*ppw->pvecback[pba->index_bg_a] == 0., + ppt->error_message, + "aH=0, stop to avoid division by zero"); + + tau_h = 1./(ppw->pvecback[pba->index_bg_H]*ppw->pvecback[pba->index_bg_a]); + + /** - for scalar modes: */ + + if (_scalars_) { + + /** - --> (a) evaluate thermodynamical quantities with thermodynamics_at_z() */ + + class_call(thermodynamics_at_z(pba, + pth, + 1./ppw->pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + ppw->inter_mode, + &(ppw->last_index_thermo), + ppw->pvecback, + ppw->pvecthermo), + pth->error_message, + ppt->error_message); + + /** - ---> (b.1.) if \f$ \kappa'=0 \f$, recombination is finished; tight-coupling approximation must be off */ + + if (ppw->pvecthermo[pth->index_th_dkappa] == 0.) { + + ppw->approx[ppw->index_ap_tca] = (int)tca_off; + + } + + /** - ---> (b.2.) if \f$ \kappa' \neq 0 \f$, recombination is not finished: check tight-coupling approximation */ + + else { + + /** - ----> (b.2.a) compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */ + tau_c = 1./ppw->pvecthermo[pth->index_th_dkappa]; + + class_test(tau_c < 0., + ppt->error_message, + "tau_c = 1/kappa' should always be positive unless there is something wrong in the thermodynamics module. However you have here tau_c=%e at z=%e, conformal time=%e x_e=%e. (This could come from the interpolation of a too poorly sampled reionisation history?).\n", + tau_c, + 1./ppw->pvecback[pba->index_bg_a]-1., + tau, + ppw->pvecthermo[pth->index_th_xe]); + + /** - ----> (b.2.b) check whether tight-coupling approximation should be on */ + + if ((tau_c/tau_h < ppr->tight_coupling_trigger_tau_c_over_tau_h) && + (tau_c/tau_k < ppr->tight_coupling_trigger_tau_c_over_tau_k)) { + ppw->approx[ppw->index_ap_tca] = (int)tca_on; + } + else { + ppw->approx[ppw->index_ap_tca] = (int)tca_off; + } + + } + + /** - --> (c) free-streaming approximations */ + + if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) && + (tau > pth->tau_free_streaming) && + (ppr->radiation_streaming_approximation != rsa_none)) { + + ppw->approx[ppw->index_ap_rsa] = (int)rsa_on; + } + else { + ppw->approx[ppw->index_ap_rsa] = (int)rsa_off; + } + + if (pba->has_ur == _TRUE_) { + + if ((tau/tau_k > ppr->ur_fluid_trigger_tau_over_tau_k) && + (ppr->ur_fluid_approximation != ufa_none)) { + + ppw->approx[ppw->index_ap_ufa] = (int)ufa_on; + } + else { + ppw->approx[ppw->index_ap_ufa] = (int)ufa_off; + } + } + + if (pba->has_ncdm == _TRUE_) { + + if ((tau/tau_k > ppr->ncdm_fluid_trigger_tau_over_tau_k) && + (ppr->ncdm_fluid_approximation != ncdmfa_none)) { + + ppw->approx[ppw->index_ap_ncdmfa] = (int)ncdmfa_on; + } + else { + ppw->approx[ppw->index_ap_ncdmfa] = (int)ncdmfa_off; + } + } + } + + /** - for tensor modes: */ + + if (_tensors_) { + + /** - --> (a) evaluate thermodynamical quantities with thermodynamics_at_z() */ + + class_call(thermodynamics_at_z(pba, + pth, + 1./ppw->pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + ppw->inter_mode, + &(ppw->last_index_thermo), + ppw->pvecback, + ppw->pvecthermo), + pth->error_message, + ppt->error_message); + + /** - ---> (b.1.) if \f$ \kappa'=0 \f$, recombination is finished; tight-coupling approximation must be off */ + + if (ppw->pvecthermo[pth->index_th_dkappa] == 0.) { + + ppw->approx[ppw->index_ap_tca] = (int)tca_off; + + } + + /** - ---> (b.2.) if \f$ \kappa' \neq 0 \f$, recombination is not finished: check tight-coupling approximation */ + + else { + + /** - ----> (b.2.a) compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */ + tau_c = 1./ppw->pvecthermo[pth->index_th_dkappa]; + + /** - ----> (b.2.b) check whether tight-coupling approximation should be on */ + if ((tau_c/tau_h < ppr->tight_coupling_trigger_tau_c_over_tau_h) && + (tau_c/tau_k < ppr->tight_coupling_trigger_tau_c_over_tau_k)) { + ppw->approx[ppw->index_ap_tca] = (int)tca_on; + } + else { + ppw->approx[ppw->index_ap_tca] = (int)tca_off; + } + } + + if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) && + (tau > pth->tau_free_streaming) && + (ppr->radiation_streaming_approximation != rsa_none)) { + + ppw->approx[ppw->index_ap_rsa] = (int)rsa_on; + } + else { + ppw->approx[ppw->index_ap_rsa] = (int)rsa_off; + } + } + + return _SUCCESS_; +} + +/** + * Compute typical timescale over which the perturbation equations + * vary. Some integrators (e.g. Runge-Kunta) benefit from calling this + * routine at each step in order to adapt the next step. + * + * This is one of the few functions in the code which is passed to the generic_integrator() routine. + * Since generic_integrator() should work with functions passed from various modules, the format of the arguments + * is a bit special: + * - fixed parameters and workspaces are passed through a generic pointer. + * generic_integrator() doesn't know the content of this pointer. + * - the error management is a bit special: errors are not written as usual to pth->error_message, but to a generic + * error_message passed in the list of arguments. + * + * @param tau Input: conformal time + * @param parameters_and_workspace Input: fixed parameters (e.g. indices), workspace, approximation used, etc. + * @param timescale Output: perturbation variation timescale (given the approximation used) + * @param error_message Output: error message + */ + +int perturb_timescale( + double tau, + void * parameters_and_workspace, + double * timescale, + ErrorMsg error_message + ) { + /** Summary: */ + + /** - define local variables */ + + /* (a) time scale of Fourier mode, \f$ \tau_k = 1/k \f$ */ + double tau_k; + /* (b) time scale of expansion, \f$ \tau_h = a/a' \f$ */ + double tau_h; + /* (c) time scale of recombination, \f$ \tau_{\gamma} = 1/\kappa' \f$ */ + double tau_c; + + /* various pointers allowing to extract the fields of the + parameter_and_workspace input structure */ + struct perturb_parameters_and_workspace * pppaw; + struct background * pba; + struct thermo * pth; + struct perturbs * ppt; + struct perturb_workspace * ppw; + double * pvecback; + double * pvecthermo; + + /** - extract the fields of the parameter_and_workspace input structure */ + pppaw = parameters_and_workspace; + pba = pppaw->pba; + pth = pppaw->pth; + ppt = pppaw->ppt; + ppw = pppaw->ppw; + pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; + + /** - compute Fourier mode time scale = \f$ \tau_k = 1/k \f$ */ + + class_test(pppaw->k == 0., + ppt->error_message, + "stop to avoid division by zero"); + + tau_k = 1./pppaw->k; + + /** - evaluate background quantities with background_at_tau() and + Hubble time scale \f$ \tau_h = a/a' \f$ */ + + class_call(background_at_tau(pba,tau, pba->normal_info, ppw->inter_mode, &(ppw->last_index_back), pvecback), + pba->error_message, + error_message); + + class_test(pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a] == 0., + error_message, + "aH=0, stop to avoid division by zero"); + + tau_h = 1./(pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]); + + /** - for scalars modes: */ + + if ((ppt->has_scalars == _TRUE_) && (pppaw->index_md == ppt->index_md_scalars)) { + + *timescale = tau_h; + + if ((ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) || (pba->has_ncdm == _TRUE_)) + *timescale = MIN(tau_k,*timescale); + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + ppw->inter_mode, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + if (pvecthermo[pth->index_th_dkappa] != 0.) { + + /** - --> compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */ + + tau_c = 1./pvecthermo[pth->index_th_dkappa]; + + *timescale = MIN(tau_c,*timescale); + + } + } + + } + + /** - for vector modes: */ + + if ((ppt->has_vectors == _TRUE_) && (pppaw->index_md == ppt->index_md_vectors)) { + + *timescale = MIN(tau_h,tau_k); + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + ppw->inter_mode, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + if (pvecthermo[pth->index_th_dkappa] != 0.) { + + /** - --> compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */ + + tau_c = 1./pvecthermo[pth->index_th_dkappa]; + + *timescale = MIN(tau_c,*timescale); + + } + } + } + + /** - for tensor modes: */ + + if ((ppt->has_tensors == _TRUE_) && (pppaw->index_md == ppt->index_md_tensors)) { + + *timescale = MIN(tau_h,tau_k); + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + ppw->inter_mode, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + if (pvecthermo[pth->index_th_dkappa] != 0.) { + + /** - --> compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */ + + tau_c = 1./pvecthermo[pth->index_th_dkappa]; + + *timescale = MIN(tau_c,*timescale); + + } + } + } + + return _SUCCESS_; +} + + +/** + * Compute metric perturbations (those not integrated over time) using Einstein equations + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to the perturbation structure + * @param index_md Input: index of mode under consideration (scalar/.../tensor) + * @param k Input: wavenumber + * @param tau Input: conformal time + * @param y Input: vector of perturbations (those integrated over time) (already allocated) + * @param ppw Input/Output: in output contains the updated metric perturbations + * @return the error status + */ + +int perturb_einstein( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double tau, + double * y, + struct perturb_workspace * ppw + ) { + /** Summary: */ + + /** - define local variables */ + + double k2,a,a2,a_prime_over_a; + double s2_squared; + double shear_g = 0.; + + /** - define wavenumber and scale factor related quantities */ + + k2 = k*k; + a = ppw->pvecback[pba->index_bg_a]; + a2 = a * a; + a_prime_over_a = ppw->pvecback[pba->index_bg_H]*a; + s2_squared = 1.-3.*pba->K/k2; + + /** - sum up perturbations from all species */ + class_call(perturb_total_stress_energy(ppr,pba,pth,ppt,index_md,k,y,ppw), + ppt->error_message, + ppt->error_message); + + /** - for scalar modes: */ + + if (_scalars_) { + + /** - --> infer metric perturbations from Einstein equations */ + + /* newtonian gauge */ + if (ppt->gauge == newtonian) { + + /* in principle we could get phi from the constrain equation: + + ppw->pvecmetric[ppw->index_mt_phi] = -1.5 * (a2/k2/k2/s2/s2) * (k2 * delta_rho + 3.*a_prime_over_a * rho_plus_p_theta); + + with s2_squared = sqrt(1-3K/k2) = ppw->s_l[2]*ppw->s_l[2] + + This was the case in class v1.3. However the integration is + more stable is we treat phi as a dynamical variable + y[ppw->pv->index_pt_phi], which derivative is given by the + second equation below (credits to Guido Walter Pettinari). */ + + /* equation for psi */ + ppw->pvecmetric[ppw->index_mt_psi] = y[ppw->pv->index_pt_phi] - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; + + /* equation for phi' */ + ppw->pvecmetric[ppw->index_mt_phi_prime] = -a_prime_over_a * ppw->pvecmetric[ppw->index_mt_psi] + 1.5 * (a2/k2) * ppw->rho_plus_p_theta; + + /* eventually, infer radiation streaming approximation for + gamma and ur (this is exactly the right place to do it + because the result depends on h_prime) */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + + class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); + + } + } + + /* synchronous gauge */ + if (ppt->gauge == synchronous) { + + /* first equation involving total density fluctuation */ + ppw->pvecmetric[ppw->index_mt_h_prime] = + ( k2 * s2_squared * y[ppw->pv->index_pt_eta] + 1.5 * a2 * ppw->delta_rho)/(0.5*a_prime_over_a); /* h' */ + + /* eventually, infer radiation streaming approximation for + gamma and ur (this is exactly the right place to do it + because the result depends on h_prime) */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + + class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); + + /* update total theta given rsa approximation results */ + + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_theta_g; + + if (pba->has_ur == _TRUE_) { + + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_theta_ur; + + } + } + + /* second equation involving total velocity */ + ppw->pvecmetric[ppw->index_mt_eta_prime] = (1.5 * a2 * ppw->rho_plus_p_theta + 0.5 * pba->K * ppw->pvecmetric[ppw->index_mt_h_prime])/k2/s2_squared; /* eta' */ + + /* third equation involving total pressure */ + ppw->pvecmetric[ppw->index_mt_h_prime_prime] = + - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_h_prime] + + 2. * k2 * s2_squared * y[ppw->pv->index_pt_eta] + - 9. * a2 * ppw->delta_p; + + /* alpha = (h'+6eta')/2k^2 */ + ppw->pvecmetric[ppw->index_mt_alpha] = (ppw->pvecmetric[ppw->index_mt_h_prime] + 6.*ppw->pvecmetric[ppw->index_mt_eta_prime])/2./k2; + + /* eventually, infer first-order tight-coupling approximation for photon + shear, then correct the total shear */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_on) { + + shear_g = 16./45./ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_g]+k2*ppw->pvecmetric[ppw->index_mt_alpha]); + + ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; + + } + + /* fourth equation involving total shear */ + ppw->pvecmetric[ppw->index_mt_alpha_prime] = //TBC + - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_alpha] + + y[ppw->pv->index_pt_eta] + - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; + + } + + /* transform (delta_m, theta_m) of the current gauge into + gauge-independent variables (you could comment this out if you + really want gauge-dependent results) */ + + if (ppt->has_source_delta_m == _TRUE_) { + ppw->delta_m += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_m/k2; + // note: until 2.4.3 there was a typo, the factor was (-2 H'/H) instead + // of (3 aH). There is the same typo in the CLASSgal paper + // 1307.1459v1,v2,v3. It came from a confusion between (1+w_total) + // and (1+w_matter)=1 [the latter is the relevant one here]. + // + // note2: at this point this gauge-invariant variable is only + // valid if all matter components are pressureless and + // stable. This relation will be generalized soon to the case + // of decaying dark matter. + } + + if (ppt->has_source_theta_m == _TRUE_) { + if (ppt->gauge == synchronous) { + ppw->theta_m += ppw->pvecmetric[ppw->index_mt_alpha]*k2; + + } + } + } + /** - for vector modes */ + + if (_vectors_) { + + if (ppt->gauge == newtonian) { + + ppw->pvecmetric[ppw->index_mt_V_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_V] - 3.*ppw->vector_source_pi/k; + + } + + if (ppt->gauge == synchronous) { + + // assuming vector_source_pi = p_class a^2 pi_T^{(1)} and vector_source_v = (rho_class+p_class)a^2 v^{(1)} + + // from Hu and White: + ppw->pvecmetric[ppw->index_mt_hv_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_hv_prime] - 3.*ppw->vector_source_pi/k2; + + // what we suspect: + //ppw->pvecmetric[ppw->index_mt_hv_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_hv_prime] - 3.*ppw->vector_source_pi; + + // if we use the other equation: + //ppw->pvecmetric[ppw->index_mt_hv_prime] = -2./k/ (1.-2.*pba->K/k2) * 3. * ppw->vector_source_v; + + } + + } + + /** - for tensor modes */ + + if (_tensors_) { + + /* single einstein equation for tensor perturbations */ + ppw->pvecmetric[ppw->index_mt_gw_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_gwdot]-(k2+2.*pba->K)*y[ppw->pv->index_pt_gw]+ppw->gw_source; + + } + + return _SUCCESS_; + +} + +int perturb_total_stress_energy( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + int index_md, + double k, + double * y, + struct perturb_workspace * ppw + ) { + /** Summary: */ + + /** - define local variables */ + + double a,a2; + double delta_g=0.; + double theta_g=0.; + double shear_g=0.; + double delta_ur=0.; + double theta_ur=0.; + double shear_ur=0.; + double rho_delta_ncdm=0.; + double rho_plus_p_theta_ncdm=0.; + double rho_plus_p_shear_ncdm=0.; + double delta_p_ncdm=0.; + double factor; + double rho_plus_p_ncdm; + int index_q,n_ncdm,idx; + double epsilon,q,q2,cg2_ncdm,w_ncdm,rho_ncdm_bg,p_ncdm_bg,pseudo_p_ncdm; + double rho_m,delta_rho_m,rho_plus_p_m,rho_plus_p_theta_m; + double w; + double gwncdm; + double rho_relativistic; + double rho_dr_over_f; + double delta_rho_scf, delta_p_scf, psi; + + /** - wavenumber and scale factor related quantities */ + + a = ppw->pvecback[pba->index_bg_a]; + a2 = a * a; + + /** - for scalar modes */ + + if (_scalars_) { + + /** - --> (a) deal with approximation schemes */ + + /** - ---> (a.1.) photons */ + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + /** - ----> (a.1.1.) no approximation */ + + delta_g = y[ppw->pv->index_pt_delta_g]; + theta_g = y[ppw->pv->index_pt_theta_g]; + shear_g = y[ppw->pv->index_pt_shear_g]; + + } + else { + + /** - ----> (a.1.2.) radiation streaming approximation */ + + delta_g = 0.; /* actual free streaming approximation imposed after evaluation of einstein equations */ + theta_g = 0.; /* actual free streaming approximation imposed after evaluation of einstein equations */ + shear_g = 0.; /* shear always neglected in radiation streaming approximation */ + } + } + else { + + /** - ----> (a.1.3.) tight coupling approximation */ + + delta_g = y[ppw->pv->index_pt_delta_g]; + theta_g = y[ppw->pv->index_pt_theta_g]; + + /* first-order tight-coupling approximation for photon shear */ + if (ppt->gauge == newtonian) { + shear_g = 16./45./ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_g]; + } + else { + shear_g = 0.; /* in the synchronous gauge, the expression of + shear_g (at first-order in a tight-coupling + expansion) is a function of h' and eta'; but h' + and eta' are calculated in perturb_einstein() + as a function of delta_g and theta_g. Hence, + we set shear_g temporarily to zero, and set it + to the right first-order value in + perturb_einstein(), just before using the + Einstein equation for the shear. */ + } + } + + /** - ---> (a.2.) ur */ + + if (pba->has_ur == _TRUE_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + delta_ur = y[ppw->pv->index_pt_delta_ur]; + theta_ur = y[ppw->pv->index_pt_theta_ur]; + shear_ur = y[ppw->pv->index_pt_shear_ur]; + + } + + else { + + delta_ur = 0.; /* actual free streaming approximation imposed after evaluation of 1st einstein equation */ + theta_ur = 0.; /* actual free streaming approximation imposed after evaluation of 1st einstein equation */ + shear_ur = 0.; /* shear always neglected in free streaming approximation */ + + } + + } + + /** - --> (b) compute the total density, velocity and shear perturbations */ + + /* photon and baryon contribution */ + ppw->delta_rho = ppw->pvecback[pba->index_bg_rho_g]*delta_g + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + ppw->rho_plus_p_theta = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*theta_g + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; + ppw->rho_plus_p_shear = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; + ppw->delta_p = 1./3.*ppw->pvecback[pba->index_bg_rho_g]*delta_g + + ppw->pvecthermo[pth->index_th_cb2]*ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + + /* cdm contribution */ + if (pba->has_cdm == _TRUE_) { + ppw->delta_rho = ppw->delta_rho + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; + if (ppt->gauge == newtonian) + ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; + } + + /* dcdm contribution */ + if (pba->has_dcdm == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; + ppw->rho_plus_p_theta += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; + } + + /* fluid contribution */ + if (pba->has_fld == _TRUE_) { + + w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + ppw->rho_plus_p_theta += (1.+w)*ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_theta_fld]; + ppw->delta_p = ppw->delta_p + pba->cs2_fld * ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + } + + /* ultra-relativistic decay radiation */ + + if (pba->has_dr == _TRUE_) { + /* We have delta_rho_dr = rho_dr * F0_dr / f, where F follows the + convention in astro-ph/9907388 and f is defined as + f = rho_dr*a^4/rho_crit_today. In CLASS density units + rho_crit_today = H0^2. + */ + rho_dr_over_f = pow(pba->H0/a2,2); + ppw->delta_rho += rho_dr_over_f*y[ppw->pv->index_pt_F0_dr]; + ppw->rho_plus_p_theta += 4./3.*3./4*k*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+1]; + ppw->rho_plus_p_shear += 2./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+2]; + ppw->delta_p += 1./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr]; + } + + /* ultra-relativistic neutrino/relics contribution */ + + if (pba->has_ur == _TRUE_) { + ppw->delta_rho = ppw->delta_rho + ppw->pvecback[pba->index_bg_rho_ur]*delta_ur; + ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*theta_ur; + ppw->rho_plus_p_shear = ppw->rho_plus_p_shear + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*shear_ur; + ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_ur]*delta_ur; + } + + /* non-cold dark matter contribution */ + if (pba->has_ncdm == _TRUE_) { + idx = ppw->pv->index_pt_psi0_ncdm1; + if(ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_on){ + // The perturbations are evolved integrated: + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_ncdm_bg = ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + p_ncdm_bg = ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + pseudo_p_ncdm = ppw->pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm]; + + rho_plus_p_ncdm = rho_ncdm_bg + p_ncdm_bg; + w_ncdm = p_ncdm_bg/rho_ncdm_bg; + cg2_ncdm = w_ncdm*(1.0-1.0/(3.0+3.0*w_ncdm)*(3.0*w_ncdm-2.0+pseudo_p_ncdm/p_ncdm_bg)); + if ((ppt->has_source_delta_ncdm == _TRUE_) || (ppt->has_source_theta_ncdm == _TRUE_) || (ppt->has_source_delta_m == _TRUE_)) { + ppw->delta_ncdm[n_ncdm] = y[idx]; + ppw->theta_ncdm[n_ncdm] = y[idx+1]; + ppw->shear_ncdm[n_ncdm] = y[idx+2]; + } + + ppw->delta_rho += rho_ncdm_bg*y[idx]; + ppw->rho_plus_p_theta += rho_plus_p_ncdm*y[idx+1]; + ppw->rho_plus_p_shear += rho_plus_p_ncdm*y[idx+2]; + ppw->delta_p += cg2_ncdm*rho_ncdm_bg*y[idx]; + idx += ppw->pv->l_max_ncdm[n_ncdm]+1; + } + } + else{ + // We must integrate to find perturbations: + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_delta_ncdm = 0.0; + rho_plus_p_theta_ncdm = 0.0; + rho_plus_p_shear_ncdm = 0.0; + delta_p_ncdm = 0.0; + factor = pba->factor_ncdm[n_ncdm]*pow(pba->a_today/a,4); + + for (index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q ++) { + + q = pba->q_ncdm[n_ncdm][index_q]; + q2 = q*q; + epsilon = sqrt(q2+pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]*a2); + + rho_delta_ncdm += q2*epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + rho_plus_p_theta_ncdm += q2*q*pba->w_ncdm[n_ncdm][index_q]*y[idx+1]; + rho_plus_p_shear_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx+2]; + delta_p_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + + //Jump to next momentum bin: + idx+=(ppw->pv->l_max_ncdm[n_ncdm]+1); + } + + rho_delta_ncdm *= factor; + rho_plus_p_theta_ncdm *= k*factor; + rho_plus_p_shear_ncdm *= 2.0/3.0*factor; + delta_p_ncdm *= factor/3.; + + if ((ppt->has_source_delta_ncdm == _TRUE_) || (ppt->has_source_theta_ncdm == _TRUE_) || (ppt->has_source_delta_m == _TRUE_)) { + ppw->delta_ncdm[n_ncdm] = rho_delta_ncdm/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + ppw->theta_ncdm[n_ncdm] = rho_plus_p_theta_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + ppw->shear_ncdm[n_ncdm] = rho_plus_p_shear_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + } + + ppw->delta_rho += rho_delta_ncdm; + ppw->rho_plus_p_theta += rho_plus_p_theta_ncdm; + ppw->rho_plus_p_shear += rho_plus_p_shear_ncdm; + ppw->delta_p += delta_p_ncdm; + } + } + } + + /* scalar field contribution. + In Newtonian gauge, delta_scf depends on the metric perturbation psi which is inferred + from rho_plus_p_shear. So the contribution from the scalar field must be below all + species with non-zero shear. + */ + if (pba->has_scf == _TRUE_) { + + if (ppt->gauge == synchronous){ + delta_rho_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + delta_p_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + - ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + } + else{ + /* equation for psi */ + psi = y[ppw->pv->index_pt_phi] - 4.5 * (a2/k/k) * ppw->rho_plus_p_shear; + + delta_rho_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] + - 1./a2*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*psi); + delta_p_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + - ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] + - 1./a2*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*psi); + } + + ppw->delta_rho += delta_rho_scf; + + ppw->rho_plus_p_theta += 1./3.* + k*k/a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_scf]; + + ppw->delta_p += delta_p_scf; + + } + + + /* store delta_m in the current gauge. In perturb_einstein, this + will be transformed later on into the gauge-independent variable D + = delta_m - 2H'/H \theta_m/k^2 . */ + + if (ppt->has_source_delta_m == _TRUE_) { + + /* include baryons and cold dark matter */ + + delta_rho_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + rho_m = ppw->pvecback[pba->index_bg_rho_b]; + + if (pba->has_cdm == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; + rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + + /* include decaying cold dark matter */ + + if (pba->has_dcdm == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; + rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } + + /* include any other species non-relativistic today (like ncdm species) */ + + if (pba->has_ncdm == _TRUE_) { + + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + + delta_rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]*ppw->delta_ncdm[n_ncdm]; + rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + } + } + + /* infer delta_m */ + + ppw->delta_m = delta_rho_m/rho_m; + + } + + /* store theta_m in the current gauge. In perturb_einstein, this + will be transformed later on into the gauge-independent variable + Theta . Note that computing theta_m is necessary also if we want + the delta_m source only, because the gauge-invariant delta_m + involves theta_m in the current gauge. */ + + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + + /* include baryons and cold dark matter */ + + rho_plus_p_theta_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; + rho_plus_p_m = ppw->pvecback[pba->index_bg_rho_b]; + + if (pba->has_cdm == _TRUE_) { + if (ppt->gauge == newtonian) + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + + if (pba->has_dcdm == _TRUE_) { + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } + + /* include any other species non-relativistic today (like ncdm species) */ + + if (pba->has_ncdm == _TRUE_) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_plus_p_theta_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm])*ppw->theta_ncdm[n_ncdm]; + rho_plus_p_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + } + } + + /* infer theta_m */ + + ppw->theta_m = rho_plus_p_theta_m/rho_plus_p_m; + } + } + + /** - for vector modes */ + + if (_vectors_) { + + ppw->vector_source_pi = 0.; + ppw->vector_source_v = 0.; + + /** - --> photon contribution to vector sources: */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { /* if tight-coupling approximation is off */ + + ppw->vector_source_v += 4./3.*a2*ppw->pvecback[pba->index_bg_rho_g] + * (-1./4.*_SQRT2_) + * (y[ppw->pv->index_pt_delta_g]+2.*y[ppw->pv->index_pt_delta_g]+y[ppw->pv->index_pt_shear_g]); + + ppw->vector_source_pi += 1./3.*a2*ppw->pvecback[pba->index_bg_rho_g] + * (6.*_SQRT2_/5./sqrt(1.-2.*pba->K/k/k)) + * (4./3./k*y[ppw->pv->index_pt_theta_g]+y[ppw->pv->index_pt_l3_g]); + + } + } + + /** - --> baryons */ + + + } + + /** - for tensor modes */ + + if (_tensors_) { + + ppw->gw_source = 0.0; + + /** - --> photon contribution to gravitational wave source: */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { /* if tight-coupling approximation is off */ + + ppw->gw_source += (-_SQRT6_*4*a2*ppw->pvecback[pba->index_bg_rho_g]* + (1./15.*y[ppw->pv->index_pt_delta_g]+ + 4./21.*y[ppw->pv->index_pt_shear_g]+ + 1./35.*y[ppw->pv->index_pt_l3_g+1])); + } + } + + /** - --> ur contribution to gravitational wave source: */ + if (ppt->evolve_tensor_ur == _TRUE_){ + + rho_relativistic = 0.; + + if (ppt->tensor_method == tm_exact) + rho_relativistic += ppw->pvecback[pba->index_bg_rho_ur]; + + if (ppt->tensor_method == tm_massless_approximation) { + + if (pba->has_ur == _TRUE_) + rho_relativistic += ppw->pvecback[pba->index_bg_rho_ur]; + + if (pba->has_ncdm == _TRUE_) { + for(n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++) { + /* (3 p_ncdm1) is the "relativistic" contribution to rho_ncdm1 */ + rho_relativistic += 3.*ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + } + } + } + + ppw->gw_source += (-_SQRT6_*4*a2*rho_relativistic* + (1./15.*y[ppw->pv->index_pt_delta_ur]+ + 4./21.*y[ppw->pv->index_pt_shear_ur]+ + 1./35.*y[ppw->pv->index_pt_l3_ur+1])); + } + + /** - --> ncdm contribution to gravitational wave source: */ + if (ppt->evolve_tensor_ncdm == _TRUE_){ + + idx = ppw->pv->index_pt_psi0_ncdm1; + + // We must integrate to find perturbations: + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + + gwncdm = 0.; + + factor = pba->factor_ncdm[n_ncdm]*pow(pba->a_today/a,4); + + for (index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q ++) { + + q = pba->q_ncdm[n_ncdm][index_q]; + q2 = q*q; + epsilon = sqrt(q2+pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]*a2); + + gwncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*(1./15.*y[idx]+2./21.*y[idx+2]+1./35.*y[idx+4]); + + //Jump to next momentum bin: + idx+=(ppw->pv->l_max_ncdm[n_ncdm]+1); + } + + gwncdm *= -_SQRT6_*4*a2*factor; + + ppw->gw_source += gwncdm; + + } + } + } + + return _SUCCESS_; +} + +/** + * Compute the source functions (three terms for temperature, one for + * E or B modes, etc.) + * + * This is one of the few functions in the code which is passed to + * the generic_integrator() routine. Since generic_integrator() + * should work with functions passed from various modules, the format + * of the arguments is a bit special: + * + * - fixed parameters and workspaces are passed through a generic + * pointer. generic_integrator() doesn't know the content of this + * pointer. + * + * - the error management is a bit special: errors are not written as + * usual to pth->error_message, but to a generic error_message passed + * in the list of arguments. + * + * @param tau Input: conformal time + * @param y Input: vector of perturbations + * @param dy Input: vector of time derivative of perturbations + * @param index_tau Input: index in the array tau_sampling + * @param parameters_and_workspace Input/Output: in input, all parameters needed by perturb_derivs, in output, source terms + * @param error_message Output: error message + * @return the error status + */ + +int perturb_sources( + double tau, + double * y, + double * dy, + int index_tau, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + /** Summary: */ + + /** - define local variables */ + + double P; + int index_type; + + struct perturb_parameters_and_workspace * pppaw; + struct precision * ppr; + struct background * pba; + struct thermo * pth; + struct perturbs * ppt; + int index_md; + int index_ic; + int index_k; + double k; + double z; + struct perturb_workspace * ppw; + double * pvecback; + double * pvecthermo; + double * pvecmetric; + + double delta_g, delta_rho_scf, rho_plus_p_theta_scf; + double a_prime_over_a=0.; /* (a'/a) */ + double a_prime_over_a_prime=0.; /* (a'/a)' */ + int switch_isw = 1; + + double a_rel, a2_rel, f_dr; + + /** - rename structure fields (just to avoid heavy notations) */ + + pppaw = parameters_and_workspace; + ppr = pppaw->ppr; + pba = pppaw->pba; + pth = pppaw->pth; + ppt = pppaw->ppt; + index_md = pppaw->index_md; + index_ic = pppaw->index_ic; + index_k = pppaw->index_k; + k = pppaw->k; + ppw = pppaw->ppw; + + pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; + pvecmetric = ppw->pvecmetric; + + /** - get background/thermo quantities in this point */ + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_closeby, + &(ppw->last_index_back), + pvecback), + pba->error_message, + error_message); + + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + class_call(thermodynamics_at_z(pba, + pth, + z, /* redshift z=1/a-1 */ + pth->inter_closeby, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + a_rel = ppw->pvecback[pba->index_bg_a]/pba->a_today; + a2_rel = a_rel * a_rel; + + /* derived background quantities, useful only in synchronous gauge */ + if (ppt->gauge == synchronous) { + a_prime_over_a = pvecback[pba->index_bg_a] * pvecback[pba->index_bg_H]; /* (a'/a)=aH */ + a_prime_over_a_prime = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + pow(pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a],2); /* (a'/a)' = aH'+(aH)^2 */ + } + + /** - for scalars */ + if (_scalars_) { + + /** - --> compute metric perturbations */ + + class_call(perturb_einstein(ppr, + pba, + pth, + ppt, + index_md, + k, + tau, + y, + ppw), + ppt->error_message, + error_message); + + /** - --> compute quantities depending on approximation schemes */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + + delta_g = ppw->rsa_delta_g; + P = 0.; + + } + else { + + delta_g = y[ppw->pv->index_pt_delta_g]; + if (ppw->approx[ppw->index_ap_tca] == (int)tca_on) + P = 5.* ppw->s_l[2] * ppw->tca_shear_g/8.; /* (2.5+0.5+2)shear_g/8 */ + else + P = (y[ppw->pv->index_pt_pol0_g] + y[ppw->pv->index_pt_pol2_g] + 2.* ppw->s_l[2] *y[ppw->pv->index_pt_shear_g])/8.; + + } + + /** - --> for each type, compute source terms */ + + /* scalar temperature */ + if (ppt->has_source_t == _TRUE_) { + + /* check whether integrated Sachs-Wolf term should be included */ + if ((ppt->switch_eisw == 0) && (z >= ppt->eisw_lisw_split_z)){ + switch_isw = 0; + } + if ((ppt->switch_lisw == 0) && (z < ppt->eisw_lisw_split_z)) { + switch_isw=0; + } + + /* newtonian gauge: simplest form, not efficient numerically */ + /* + if (ppt->gauge == newtonian) { + _set_source_(ppt->index_tp_t0) = pvecthermo[pth->index_th_exp_m_kappa] * pvecmetric[ppw->index_mt_phi_prime] + pvecthermo[pth->index_th_g] * delta_g / 4.; + _set_source_(ppt->index_tp_t1) = pvecthermo[pth->index_th_exp_m_kappa] * k* pvecmetric[ppw->index_mt_psi] + pvecthermo[pth->index_th_g] * y[ppw->pv->index_pt_theta_b]/k; + _set_source_(ppt->index_tp_t2) = pvecthermo[pth->index_th_g] * P; + } + */ + + /* newtonian gauge: slightly more complicated form, but more efficient numerically */ + + if (ppt->gauge == newtonian) { + _set_source_(ppt->index_tp_t0) = + ppt->switch_sw * pvecthermo[pth->index_th_g] * (delta_g / 4. + pvecmetric[ppw->index_mt_psi]) + + switch_isw * (pvecthermo[pth->index_th_g] * (y[ppw->pv->index_pt_phi]-pvecmetric[ppw->index_mt_psi]) + + pvecthermo[pth->index_th_exp_m_kappa] * 2. * pvecmetric[ppw->index_mt_phi_prime]) + + ppt->switch_dop /k/k * (pvecthermo[pth->index_th_g] * dy[ppw->pv->index_pt_theta_b] + + pvecthermo[pth->index_th_dg] * y[ppw->pv->index_pt_theta_b]); + + _set_source_(ppt->index_tp_t1) = switch_isw * pvecthermo[pth->index_th_exp_m_kappa] * k* (pvecmetric[ppw->index_mt_psi]-y[ppw->pv->index_pt_phi]); + + _set_source_(ppt->index_tp_t2) = ppt->switch_pol * pvecthermo[pth->index_th_g] * P; + } + + + /* synchronous gauge: simplest form, not efficient numerically */ + /* + if (ppt->gauge == synchronous) { + _set_source_(ppt->index_tp_t0) = - pvecthermo[pth->index_th_exp_m_kappa] * pvecmetric[ppw->index_mt_h_prime] / 6. + pvecthermo[pth->index_th_g] / 4. * delta_g; + _set_source_(ppt->index_tp_t1) = pvecthermo[pth->index_th_g] * y[ppw->pv->index_pt_theta_b] / k; + _set_source_(ppt->index_tp_t2) = pvecthermo[pth->index_th_exp_m_kappa] * k*k* 2./3. * ppw->s_l[2] * pvecmetric[ppw->index_mt_alpha] + pvecthermo[pth->index_th_g] * P; + } + */ + + /* synchronous gauge: slightly more complicated form, but more efficient numerically */ + + if (ppt->gauge == synchronous) { + + _set_source_(ppt->index_tp_t0) = + ppt->switch_sw * pvecthermo[pth->index_th_g] * (delta_g/4. + pvecmetric[ppw->index_mt_alpha_prime]) + + switch_isw * (pvecthermo[pth->index_th_g] * (y[ppw->pv->index_pt_eta] + - pvecmetric[ppw->index_mt_alpha_prime] + - 2 * a_prime_over_a * pvecmetric[ppw->index_mt_alpha]) + + pvecthermo[pth->index_th_exp_m_kappa] * 2. * (pvecmetric[ppw->index_mt_eta_prime] + - a_prime_over_a_prime * pvecmetric[ppw->index_mt_alpha] + - a_prime_over_a * pvecmetric[ppw->index_mt_alpha_prime])) + + ppt->switch_dop * (pvecthermo[pth->index_th_g] * (dy[ppw->pv->index_pt_theta_b]/k/k + pvecmetric[ppw->index_mt_alpha_prime]) + +pvecthermo[pth->index_th_dg] * (y[ppw->pv->index_pt_theta_b]/k/k + pvecmetric[ppw->index_mt_alpha])); + + _set_source_(ppt->index_tp_t1) = + switch_isw * pvecthermo[pth->index_th_exp_m_kappa] * k * (pvecmetric[ppw->index_mt_alpha_prime] + + 2. * a_prime_over_a * pvecmetric[ppw->index_mt_alpha] + - y[ppw->pv->index_pt_eta]); + + _set_source_(ppt->index_tp_t2) = + ppt->switch_pol * pvecthermo[pth->index_th_g] * P; + } + } + + /* scalar polarization */ + if (ppt->has_source_p == _TRUE_) { + + /* all gauges. Note that the correct formula for the E source + should have a minus sign, as shown in Hu & White. We put a + plus sign to comply with the 'historical convention' + established in CMBFAST and CAMB. */ + + _set_source_(ppt->index_tp_p) = sqrt(6.) * pvecthermo[pth->index_th_g] * P; + + } + + /* now, non-CMB sources */ + + /* Bardeen potential -PHI_H = phi in Newtonian gauge */ + if (ppt->has_source_phi == _TRUE_) { + + if (ppt->gauge == newtonian) + _set_source_(ppt->index_tp_phi) = y[ppw->pv->index_pt_phi]; + + if (ppt->gauge == synchronous) + _set_source_(ppt->index_tp_phi) = y[ppw->pv->index_pt_eta] - a_prime_over_a * pvecmetric[ppw->index_mt_alpha]; + + } + + /* its derivative phi' */ + if (ppt->has_source_phi_prime == _TRUE_) { + + if (ppt->gauge == newtonian) + _set_source_(ppt->index_tp_phi_prime) = dy[ppw->pv->index_pt_phi]; + + if (ppt->gauge == synchronous) + _set_source_(ppt->index_tp_phi_prime) = dy[ppw->pv->index_pt_eta] + - a_prime_over_a_prime * pvecmetric[ppw->index_mt_alpha] + - a_prime_over_a * pvecmetric[ppw->index_mt_alpha_prime]; + } + + /* diff of Bardeen potentials PHI_A-PHI_H = psi + phi in newtonian gauge */ + if (ppt->has_source_phi_plus_psi == _TRUE_) { + + if (ppt->gauge == newtonian) + _set_source_(ppt->index_tp_phi_plus_psi) = + y[ppw->pv->index_pt_phi] + pvecmetric[ppw->index_mt_psi]; + + if (ppt->gauge == synchronous) + _set_source_(ppt->index_tp_phi_plus_psi) = + y[ppw->pv->index_pt_eta] + pvecmetric[ppw->index_mt_alpha_prime]; + + } + + /* Bardeen potential PHI_A = psi in newtonian gauge */ + if (ppt->has_source_psi == _TRUE_) { + + if (ppt->gauge == newtonian) + _set_source_(ppt->index_tp_psi) = + pvecmetric[ppw->index_mt_psi]; + + if (ppt->gauge == synchronous) + _set_source_(ppt->index_tp_psi) = + a_prime_over_a * pvecmetric[ppw->index_mt_alpha] + pvecmetric[ppw->index_mt_alpha_prime]; + } + + /* total matter over density (gauge-invariant, defined as in arXiv:1307.1459) */ + if (ppt->has_source_delta_m == _TRUE_) { + _set_source_(ppt->index_tp_delta_m) = ppw->delta_m; + } + + /* delta_g */ + if (ppt->has_source_delta_g == _TRUE_) { + _set_source_(ppt->index_tp_delta_g) = delta_g; + } + + /* delta_baryon */ + if (ppt->has_source_delta_b == _TRUE_) { + _set_source_(ppt->index_tp_delta_b) = y[ppw->pv->index_pt_delta_b]; + } + + /* delta_cdm */ + if (ppt->has_source_delta_cdm == _TRUE_) { + _set_source_(ppt->index_tp_delta_cdm) = y[ppw->pv->index_pt_delta_cdm]; + } + + /* delta_dcdm */ + if (ppt->has_source_delta_dcdm == _TRUE_) { + _set_source_(ppt->index_tp_delta_dcdm) = y[ppw->pv->index_pt_delta_dcdm]; + } + + /* delta_fld */ + if (ppt->has_source_delta_fld == _TRUE_) { + _set_source_(ppt->index_tp_delta_fld) = y[ppw->pv->index_pt_delta_fld]; + } + + /* delta_scf */ + if (ppt->has_source_delta_scf == _TRUE_) { + if (ppt->gauge == synchronous){ + delta_rho_scf = 1./3.* + (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + } + else{ + delta_rho_scf = 1./3.* + (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] + - 1./a2_rel*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]); + } + _set_source_(ppt->index_tp_delta_scf) = delta_rho_scf/pvecback[pba->index_bg_rho_scf]; + } + + /* delta_dr */ + if (ppt->has_source_delta_dr == _TRUE_) { + f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; + _set_source_(ppt->index_tp_delta_dr) = y[ppw->pv->index_pt_F0_dr]/f_dr; + } + + /* delta_ur */ + if (ppt->has_source_delta_ur == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) + _set_source_(ppt->index_tp_delta_ur) = y[ppw->pv->index_pt_delta_ur]; + else + _set_source_(ppt->index_tp_delta_ur) = ppw->rsa_delta_ur; + } + + /* delta_ncdm1 */ + if (ppt->has_source_delta_ncdm == _TRUE_) { + for (index_type = ppt->index_tp_delta_ncdm1; index_type < ppt->index_tp_delta_ncdm1+pba->N_ncdm; index_type++) { + _set_source_(index_type) = ppw->delta_ncdm[index_type - ppt->index_tp_delta_ncdm1]; + } + } + + /* total velocity (gauge-invariant, defined as in arXiv:1307.1459) */ + if (ppt->has_source_theta_m == _TRUE_) { + _set_source_(ppt->index_tp_theta_m) = ppw->theta_m; + } + + /* theta_g */ + if (ppt->has_source_theta_g == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) + _set_source_(ppt->index_tp_theta_g) = y[ppw->pv->index_pt_theta_g]; + else + _set_source_(ppt->index_tp_theta_g) = ppw->rsa_theta_g; + } + + /* theta_baryon */ + if (ppt->has_source_theta_b == _TRUE_) { + _set_source_(ppt->index_tp_theta_b) = y[ppw->pv->index_pt_theta_b]; + } + + /* theta_cdm */ + if (ppt->has_source_theta_cdm == _TRUE_) { + _set_source_(ppt->index_tp_theta_cdm) = y[ppw->pv->index_pt_theta_cdm]; + } + + /* theta_dcdm */ + if (ppt->has_source_theta_dcdm == _TRUE_) { + _set_source_(ppt->index_tp_theta_dcdm) = y[ppw->pv->index_pt_theta_dcdm]; + } + + /* theta_fld */ + if (ppt->has_source_theta_fld == _TRUE_) { + _set_source_(ppt->index_tp_theta_fld) = y[ppw->pv->index_pt_theta_fld]; + } + + /* theta_scf */ + if (ppt->has_source_theta_scf == _TRUE_) { + rho_plus_p_theta_scf = 1./3.* + k*k/a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_scf]; + _set_source_(ppt->index_tp_theta_scf) = rho_plus_p_theta_scf/ + (pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]); + } + + /* theta_dr */ + if (ppt->has_source_theta_dr == _TRUE_) { + f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; + _set_source_(ppt->index_tp_theta_dr) = 3./4.*k*y[ppw->pv->index_pt_F0_dr+1]/f_dr; + } + + /* theta_ur */ + if (ppt->has_source_theta_ur == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) + _set_source_(ppt->index_tp_theta_ur) = y[ppw->pv->index_pt_theta_ur]; + else + _set_source_(ppt->index_tp_theta_ur) = ppw->rsa_theta_ur; + } + + /* theta_ncdm1 */ + if (ppt->has_source_theta_ncdm == _TRUE_) { + for (index_type = ppt->index_tp_theta_ncdm1; index_type < ppt->index_tp_theta_ncdm1+pba->N_ncdm; index_type++) { + _set_source_(index_type) = ppw->theta_ncdm[index_type - ppt->index_tp_theta_ncdm1]; + } + } + } + + /** - for tensors */ + if (_tensors_) { + + /** - --> compute quantities depending on approximation schemes */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + P = -(1./10.*y[ppw->pv->index_pt_delta_g] + +2./7.*y[ppw->pv->index_pt_shear_g] + +3./70.*y[ppw->pv->index_pt_delta_g+4] + -3./5.*y[ppw->pv->index_pt_pol0_g] + +6./7.*y[ppw->pv->index_pt_pol2_g] + -3./70.*y[ppw->pv->index_pt_pol0_g+4]) + /sqrt(6.); + + } + else { + P = 2./5.*_SQRT6_*y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + } + } + else { + P = 0.; + } + + /* tensor temperature */ + if (ppt->has_source_t == _TRUE_) { + _set_source_(ppt->index_tp_t2) = - y[ppw->pv->index_pt_gwdot] * pvecthermo[pth->index_th_exp_m_kappa] + pvecthermo[pth->index_th_g] * P; + } + + /* tensor polarization */ + if (ppt->has_source_p == _TRUE_) { + + /* Note that the correct formula for the polarization source + should have a minus sign, as shown in Hu & White. We put a + plus sign to comply with the 'historical convention' + established in CMBFAST and CAMB. */ + + _set_source_(ppt->index_tp_p) = sqrt(6.) * pvecthermo[pth->index_th_g] * P; + } + } + + return _SUCCESS_; + +} + + +/** + * When testing the code or a cosmological model, it can be useful to + * output perturbations at each step of integration (and not just the + * delta's at each source sampling point, which is achieved simply by + * asking for matter transfer functions). Then this function can be + * passed to the generic_evolver routine. + * + * By default, instead of passing this function to generic_evolver, + * one passes a null pointer. Then this function is just not used. + * + * @param tau Input: conformal time + * @param y Input: vector of perturbations + * @param dy Input: vector of its derivatives (already allocated) + * @param parameters_and_workspace Input: fixed parameters (e.g. indices) + * @param error_message Output: error message + * + */ + +int perturb_print_variables(double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + + struct perturb_parameters_and_workspace * pppaw; + /** Summary: */ + + /** - define local variables */ + double k; + int index_md; + //struct precision * ppr; + struct background * pba; + struct thermo * pth; + struct perturbs * ppt; + struct perturb_workspace * ppw; + double * pvecback; + double * pvecmetric; + + double delta_g,theta_g,shear_g,l4_g,pol0_g,pol1_g,pol2_g,pol4_g; + double delta_b,theta_b; + double delta_cdm=0.,theta_cdm=0.; + double delta_dcdm=0.,theta_dcdm=0.; + double delta_dr=0.,theta_dr=0.,shear_dr=0., f_dr=1.0; + double delta_ur=0.,theta_ur=0.,shear_ur=0.,l4_ur=0.; + double delta_rho_scf=0., rho_plus_p_theta_scf=0.; + double delta_scf=0., theta_scf=0.; + /** - ncdm sector begins */ + int n_ncdm; + double *delta_ncdm=NULL, *theta_ncdm=NULL, *shear_ncdm=NULL, *delta_p_over_delta_rho_ncdm=NULL; + double rho_ncdm_bg, p_ncdm_bg, pseudo_p_ncdm, w_ncdm; + double rho_delta_ncdm = 0.0; + double rho_plus_p_theta_ncdm = 0.0; + double rho_plus_p_shear_ncdm = 0.0; + double delta_p_ncdm = 0.0; + double factor = 0.0; + double q,q2,epsilon; + /** - ncdm sector ends */ + double phi=0.,psi=0.,alpha=0.; + double delta_temp=0., delta_chi=0.; + + double a,a2,H; + int idx,index_q, storeidx; + double *dataptr; + + + /** - rename structure fields (just to avoid heavy notations) */ + + pppaw = parameters_and_workspace; + k = pppaw->k; + index_md = pppaw->index_md; + //ppr = pppaw->ppr; + pba = pppaw->pba; + pth = pppaw->pth; + ppt = pppaw->ppt; + ppw = pppaw->ppw; + pvecback = ppw->pvecback; + pvecmetric = ppw->pvecmetric; + + a = pvecback[pba->index_bg_a]; + a2 = a*a; + H = pvecback[pba->index_bg_H]; + + if (pba->has_ncdm == _TRUE_){ + class_alloc(delta_ncdm, sizeof(double)*pba->N_ncdm,error_message); + class_alloc(theta_ncdm, sizeof(double)*pba->N_ncdm,error_message); + class_alloc(shear_ncdm, sizeof(double)*pba->N_ncdm,error_message); + class_alloc(delta_p_over_delta_rho_ncdm, sizeof(double)*pba->N_ncdm,error_message); + } + + /** - calculate perturbed recombination */ + + if ((ppt->has_perturbed_recombination == _TRUE_) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off) ){ + delta_temp = y[ppw->pv->index_pt_perturbed_recombination_delta_temp]; + delta_chi =y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; + } + /** - for scalar modes */ + if (_scalars_) { + + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { + delta_g = y[ppw->pv->index_pt_delta_g]; + theta_g = y[ppw->pv->index_pt_theta_g]; + } + else { + delta_g = ppw->rsa_delta_g; + theta_g = ppw->rsa_theta_g; + } + + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { + if (ppw->approx[ppw->index_ap_tca]==(int)tca_on) { + shear_g = ppw->tca_shear_g; + //l3_g = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + pol0_g = 2.5*ppw->tca_shear_g; + pol1_g = 7./12.*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + pol2_g = 0.5*ppw->tca_shear_g; + //pol3_g = 0.25*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + } + else { + shear_g = y[ppw->pv->index_pt_shear_g]; + //l3_g = y[ppw->pv->index_pt_l3_g]; + pol0_g = y[ppw->pv->index_pt_pol0_g]; + pol1_g = y[ppw->pv->index_pt_pol1_g]; + pol2_g = y[ppw->pv->index_pt_pol2_g]; + //pol3_g = y[ppw->pv->index_pt_pol3_g]; + } + } + else { + shear_g = 0; + //l3_g = 0; + pol0_g = 0; + pol1_g = 0; + pol2_g = 0; + //pol3_g = 0.; + } + + if (pba->has_ur == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { + delta_ur = y[ppw->pv->index_pt_delta_ur]; + theta_ur = y[ppw->pv->index_pt_theta_ur]; + shear_ur = y[ppw->pv->index_pt_shear_ur]; + } + else { + delta_ur = ppw->rsa_delta_ur; + theta_ur = ppw->rsa_theta_ur; + shear_ur = 0.; + } + } + + delta_b = y[ppw->pv->index_pt_delta_b]; + theta_b = y[ppw->pv->index_pt_theta_b]; + + if (pba->has_cdm == _TRUE_) { + + delta_cdm = y[ppw->pv->index_pt_delta_cdm]; + if (ppt->gauge == synchronous) { + theta_cdm = 0.; + } + else { + theta_cdm = y[ppw->pv->index_pt_theta_cdm]; + } + } + + /* gravitational potentials */ + if (ppt->gauge == synchronous) { + + alpha = pvecmetric[ppw->index_mt_alpha]; + + psi = pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a] * alpha + pvecmetric[ppw->index_mt_alpha_prime]; + phi = y[ppw->pv->index_pt_eta] - pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + } + else if (ppt->gauge == newtonian){ + psi = pvecmetric[ppw->index_mt_psi]; + phi = y[ppw->pv->index_pt_phi]; + } + else{ + psi = 0.0; + phi = 0.0; + } + + if (pba->has_ncdm == _TRUE_) { + /** - --> Get delta, deltaP/rho, theta, shear and store in array */ + idx = ppw->pv->index_pt_psi0_ncdm1; + if(ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_on){ + // The perturbations are evolved integrated: + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_ncdm_bg = pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + p_ncdm_bg = pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + pseudo_p_ncdm = pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm]; + w_ncdm = p_ncdm_bg/rho_ncdm_bg; + + delta_ncdm[n_ncdm] = y[idx]; + theta_ncdm[n_ncdm] = y[idx+1]; + shear_ncdm[n_ncdm] = y[idx+2]; + //This is the adiabatic sound speed: + delta_p_over_delta_rho_ncdm[n_ncdm] = w_ncdm*(1.0-1.0/(3.0+3.0*w_ncdm)*(3.0*w_ncdm-2.0+pseudo_p_ncdm/p_ncdm_bg)); + idx += ppw->pv->l_max_ncdm[n_ncdm]+1; + } + } + else{ + // We must integrate to find perturbations: + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_delta_ncdm = 0.0; + rho_plus_p_theta_ncdm = 0.0; + rho_plus_p_shear_ncdm = 0.0; + delta_p_ncdm = 0.0; + factor = pba->factor_ncdm[n_ncdm]*pow(pba->a_today/a,4); + + for (index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q ++) { + + q = pba->q_ncdm[n_ncdm][index_q]; + q2 = q*q; + epsilon = sqrt(q2+pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]*a2); + + rho_delta_ncdm += q2*epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + rho_plus_p_theta_ncdm += q2*q*pba->w_ncdm[n_ncdm][index_q]*y[idx+1]; + rho_plus_p_shear_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx+2]; + delta_p_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + + //Jump to next momentum bin: + idx+=(ppw->pv->l_max_ncdm[n_ncdm]+1); + } + + rho_delta_ncdm *= factor; + rho_plus_p_theta_ncdm *= k*factor; + rho_plus_p_shear_ncdm *= 2.0/3.0*factor; + delta_p_ncdm *= factor/3.; + + delta_ncdm[n_ncdm] = rho_delta_ncdm/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + theta_ncdm[n_ncdm] = rho_plus_p_theta_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + shear_ncdm[n_ncdm] = rho_plus_p_shear_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + delta_p_over_delta_rho_ncdm[n_ncdm] = delta_p_ncdm/rho_delta_ncdm; + + if (delta_p_over_delta_rho_ncdm[n_ncdm] < -0.5){ + FILE * fid = fopen("integrand.dat","w"); + + fclose(fid); + } + } + } + } + + if (pba->has_dcdm == _TRUE_) { + + delta_dcdm = y[ppw->pv->index_pt_delta_dcdm]; + theta_dcdm = y[ppw->pv->index_pt_theta_dcdm]; + + } + + if (pba->has_dr == _TRUE_) { + f_dr = pow(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; + delta_dr = y[ppw->pv->index_pt_F0_dr]/f_dr; + theta_dr = y[ppw->pv->index_pt_F0_dr+1]*3./4.*k/f_dr; + shear_dr = y[ppw->pv->index_pt_F0_dr+2]*0.5/f_dr; + } + + if (pba->has_scf == _TRUE_){ + if (ppt->gauge == synchronous){ + delta_rho_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + } + else{ + delta_rho_scf = 1./3.* + (1./a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] + - 1./a2*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]); + } + + rho_plus_p_theta_scf = 1./3.* + k*k/a2*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_scf]; + + delta_scf = delta_rho_scf/pvecback[pba->index_bg_rho_scf]; + theta_scf = rho_plus_p_theta_scf/(pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]); + + } + + /* converting synchronous variables to newtonian ones */ + if (ppt->gauge == synchronous) { + + /* density and velocity perturbations (comment out if you wish to keep synchronous variables) */ + + delta_g -= 4. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_g += k*k*alpha; + + delta_b -= 3. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_b += k*k*alpha; + + if (pba->has_ur == _TRUE_) { + delta_ur -= 4. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_ur += k*k*alpha; + } + + if (pba->has_dr == _TRUE_) { + delta_dr += (-4.*a*H+a*pba->Gamma_dcdm*pvecback[pba->index_bg_rho_dcdm]/pvecback[pba->index_bg_rho_dr])*alpha; + + theta_dr += k*k*alpha; + } + + if (pba->has_cdm == _TRUE_) { + delta_cdm -= 3. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_cdm += k*k*alpha; + } + + if (pba->has_ncdm == _TRUE_) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + /** - --> Do gauge transformation of delta, deltaP/rho (?) and theta using -= 3aH(1+w_ncdm) alpha for delta. */ + } + } + + if (pba->has_dcdm == _TRUE_) { + delta_dcdm += alpha*(-a*pba->Gamma_dcdm-3.*a*H); + theta_dcdm += k*k*alpha; + } + + if (pba->has_scf == _TRUE_) { + delta_scf += alpha*(-3.0*H*(1.0+pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf])); + theta_scf += k*k*alpha; + } + + } + + // fprintf(ppw->perturb_output_file," "); + /** - --> Handle (re-)allocation */ + if (ppt->scalar_perturbations_data[ppw->index_ikout] == NULL){ + class_alloc(ppt->scalar_perturbations_data[ppw->index_ikout], + sizeof(double)*ppt->number_of_scalar_titles, + error_message); + ppt->size_scalar_perturbation_data[ppw->index_ikout] = 0; + } + else{ + ppt->scalar_perturbations_data[ppw->index_ikout] = + realloc(ppt->scalar_perturbations_data[ppw->index_ikout], + sizeof(double)*(ppt->size_scalar_perturbation_data[ppw->index_ikout]+ppt->number_of_scalar_titles)); + } + storeidx = 0; + dataptr = ppt->scalar_perturbations_data[ppw->index_ikout]+ + ppt->size_scalar_perturbation_data[ppw->index_ikout]; + ppt->size_scalar_perturbation_data[ppw->index_ikout] += ppt->number_of_scalar_titles; + + class_store_double(dataptr, tau, _TRUE_, storeidx); + class_store_double(dataptr, pvecback[pba->index_bg_a], _TRUE_, storeidx); + class_store_double(dataptr, delta_g, _TRUE_, storeidx); + class_store_double(dataptr, theta_g, _TRUE_, storeidx); + class_store_double(dataptr, shear_g, _TRUE_, storeidx); + class_store_double(dataptr, pol0_g, _TRUE_, storeidx); + class_store_double(dataptr, pol1_g, _TRUE_, storeidx); + class_store_double(dataptr, pol2_g, _TRUE_, storeidx); + class_store_double(dataptr, delta_b, _TRUE_, storeidx); + class_store_double(dataptr, theta_b, _TRUE_, storeidx); + class_store_double(dataptr, psi, _TRUE_, storeidx); + class_store_double(dataptr, phi, _TRUE_, storeidx); + /* perturbed recombination */ + class_store_double(dataptr, delta_temp, ppt->has_perturbed_recombination, storeidx); + class_store_double(dataptr, delta_chi, ppt->has_perturbed_recombination, storeidx); + /* Ultra relativistic species */ + class_store_double(dataptr, delta_ur, pba->has_ur, storeidx); + class_store_double(dataptr, theta_ur, pba->has_ur, storeidx); + class_store_double(dataptr, shear_ur, pba->has_ur, storeidx); + /* Cold dark matter */ + class_store_double(dataptr, delta_cdm, pba->has_cdm, storeidx); + class_store_double(dataptr, theta_cdm, pba->has_cdm, storeidx); + /* Non-cold Dark Matter */ + if ((pba->has_ncdm == _TRUE_) && ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_source_delta_m == _TRUE_))) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr, delta_ncdm[n_ncdm], _TRUE_, storeidx); + class_store_double(dataptr, theta_ncdm[n_ncdm], _TRUE_, storeidx); + class_store_double(dataptr, shear_ncdm[n_ncdm], _TRUE_, storeidx); + class_store_double(dataptr, delta_p_over_delta_rho_ncdm[n_ncdm], _TRUE_, storeidx); + } + } + /* Decaying cold dark matter */ + class_store_double(dataptr, delta_dcdm, pba->has_dcdm, storeidx); + class_store_double(dataptr, theta_dcdm, pba->has_dcdm, storeidx); + /* Decay radiation */ + class_store_double(dataptr, delta_dr, pba->has_dr, storeidx); + class_store_double(dataptr, theta_dr, pba->has_dr, storeidx); + class_store_double(dataptr, shear_dr, pba->has_dr, storeidx); + /* Scalar field scf*/ + class_store_double(dataptr, delta_scf, pba->has_scf, storeidx); + class_store_double(dataptr, theta_scf, pba->has_scf, storeidx); + + //fprintf(ppw->perturb_output_file,"\n"); + + } + /** - for tensor modes: */ + + if (_tensors_) { + + if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { + if (ppw->approx[ppw->index_ap_tca]==(int)tca_off) { + delta_g = y[ppw->pv->index_pt_delta_g]; + shear_g = y[ppw->pv->index_pt_shear_g]; + l4_g = y[ppw->pv->index_pt_delta_g+4]; + pol0_g = y[ppw->pv->index_pt_pol0_g]; + pol2_g = y[ppw->pv->index_pt_pol2_g]; + pol4_g = y[ppw->pv->index_pt_pol0_g+4]; + } + else { + delta_g = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + shear_g = 0.; + l4_g = 0.; + pol0_g = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + pol2_g = 0.; + pol4_g = 0.; + } + } + else { + delta_g = 0.; + shear_g = 0.; + l4_g = 0.; + pol0_g = 0.; + pol2_g = 0.; + pol4_g = 0.; + } + + if (ppt->evolve_tensor_ur == _TRUE_){ + delta_ur = y[ppw->pv->index_pt_delta_ur]; + shear_ur = y[ppw->pv->index_pt_shear_ur]; + l4_ur = y[ppw->pv->index_pt_delta_ur+4]; + } + + /** - --> Handle (re-)allocation */ + if (ppt->tensor_perturbations_data[ppw->index_ikout] == NULL){ + class_alloc(ppt->tensor_perturbations_data[ppw->index_ikout], + sizeof(double)*ppt->number_of_tensor_titles, + error_message); + ppt->size_tensor_perturbation_data[ppw->index_ikout] = 0; + } + else{ + ppt->tensor_perturbations_data[ppw->index_ikout] = + realloc(ppt->tensor_perturbations_data[ppw->index_ikout], + sizeof(double)*(ppt->size_tensor_perturbation_data[ppw->index_ikout]+ppt->number_of_tensor_titles)); + } + storeidx = 0; + dataptr = ppt->tensor_perturbations_data[ppw->index_ikout]+ + ppt->size_tensor_perturbation_data[ppw->index_ikout]; + ppt->size_tensor_perturbation_data[ppw->index_ikout] += ppt->number_of_tensor_titles; + + //fprintf(ppw->perturb_output_file," "); + class_store_double(dataptr, tau, _TRUE_, storeidx); + class_store_double(dataptr, pvecback[pba->index_bg_a], _TRUE_, storeidx); + class_store_double(dataptr, delta_g, _TRUE_, storeidx); + class_store_double(dataptr, shear_g, _TRUE_, storeidx); + class_store_double(dataptr, l4_g, _TRUE_, storeidx); + class_store_double(dataptr, pol0_g, _TRUE_, storeidx); + class_store_double(dataptr, pol2_g, _TRUE_, storeidx); + class_store_double(dataptr, pol4_g, _TRUE_, storeidx); + class_store_double(dataptr, y[ppw->pv->index_pt_gw], _TRUE_, storeidx); + class_store_double(dataptr, y[ppw->pv->index_pt_gwdot], _TRUE_, storeidx); + + class_store_double(dataptr, delta_ur, ppt->evolve_tensor_ur, storeidx); + class_store_double(dataptr, shear_ur, ppt->evolve_tensor_ur, storeidx); + class_store_double(dataptr, l4_ur, ppt->evolve_tensor_ur, storeidx); + //printf("index_pt_delta+ur = %d\n",ppw->pv->index_pt_delta_ur); + + /* Non-cold Dark Matter */ + if (ppt->evolve_tensor_ncdm == _TRUE_) { + + idx = ppw->pv->index_pt_psi0_ncdm1; + + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + + rho_delta_ncdm = 0.0; + rho_plus_p_theta_ncdm = 0.0; + rho_plus_p_shear_ncdm = 0.0; + delta_p_ncdm = 0.0; + factor = pba->factor_ncdm[n_ncdm]*pow(pba->a_today/a,4); + + for (index_q=0; index_q < ppw->pv->q_size_ncdm[n_ncdm]; index_q ++) { + + q = pba->q_ncdm[n_ncdm][index_q]; + q2 = q*q; + epsilon = sqrt(q2+pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]*a2); + + rho_delta_ncdm += q2*epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + rho_plus_p_theta_ncdm += q2*q*pba->w_ncdm[n_ncdm][index_q]*y[idx+1]; + rho_plus_p_shear_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx+2]; + delta_p_ncdm += q2*q2/epsilon*pba->w_ncdm[n_ncdm][index_q]*y[idx]; + + //Jump to next momentum bin: + idx+=(ppw->pv->l_max_ncdm[n_ncdm]+1); + } + + rho_delta_ncdm *= factor; + rho_plus_p_theta_ncdm *= k*factor; + rho_plus_p_shear_ncdm *= 2.0/3.0*factor; + delta_p_ncdm *= factor/3.; + + delta_ncdm[n_ncdm] = rho_delta_ncdm/ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + theta_ncdm[n_ncdm] = rho_plus_p_theta_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + shear_ncdm[n_ncdm] = rho_plus_p_shear_ncdm/ + (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); + + class_store_double(dataptr, delta_ncdm[n_ncdm], _TRUE_, storeidx); + class_store_double(dataptr, theta_ncdm[n_ncdm], _TRUE_, storeidx); + class_store_double(dataptr, shear_ncdm[n_ncdm], _TRUE_, storeidx); + } + } + + // fprintf(ppw->perturb_output_file,"\n"); + + } + + if (pba->has_ncdm == _TRUE_){ + free(delta_ncdm); + free(theta_ncdm); + free(shear_ncdm); + free(delta_p_over_delta_rho_ncdm); + } + + return _SUCCESS_; + + } + +/** + * Compute derivative of all perturbations to be integrated + * + * For each mode (scalar/vector/tensor) and each wavenumber k, this + * function computes the derivative of all values in the vector of + * perturbed variables to be integrated. + * + * This is one of the few functions in the code which is passed to the generic_integrator() routine. + * Since generic_integrator() should work with functions passed from various modules, the format of the arguments + * is a bit special: + * - fixed parameters and workspaces are passed through a generic pointer. + * generic_integrator() doesn't know what the content of this pointer is. + * - errors are not written as usual in pth->error_message, but in a generic + * error_message passed in the list of arguments. + * + * @param tau Input: conformal time + * @param y Input: vector of perturbations + * @param dy Output: vector of its derivatives (already allocated) + * @param parameters_and_workspace Input/Output: in input, fixed parameters (e.g. indices); in output, background and thermo quantities evaluated at tau. + * @param error_message Output: error message + */ + +int perturb_derivs(double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + /** Summary: */ + + /** - define local variables */ + + /* multipole */ + int l; + + /* scale factor and other background quantities */ + double a,a2,a_prime_over_a,R; + + /* short-cut names for the fields of the input structure */ + struct perturb_parameters_and_workspace * pppaw; + double k,k2; + int index_md; + struct precision * ppr; + struct background * pba; + struct thermo * pth; + struct perturbs * ppt; + struct perturb_workspace * ppw; + double * pvecback; + double * pvecthermo; + double * pvecmetric; + double * s_l; + struct perturb_vector * pv; + + /* short-cut notations for the perturbations */ + double delta_g=0.,theta_g=0.,shear_g=0.; + double delta_b,theta_b; + double cb2,cs2,ca2; + double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_ufa_class=0.; + + /* perturbed recombination (just to simplify the notation) */ + + double H0=0.,Nnow=0.,n_H=0.,fHe=0.; + double delta_temp=0.,delta_chi=0., chi=0.; + double alpha_rec=0.,delta_alpha_rec=0.; + double a_rad=0., Compton_CR =0.; + double Tb_in_K=0.; + + + /* Non-metric source terms for photons, i.e. \mathcal{P}^{(m)} from arXiv:1305.3261 */ + double P0,P1,P2; + + /* for use with fluid (fld): */ + double w,w_prime; + + /* for use with non-cold dark matter (ncdm): */ + int index_q,n_ncdm,idx; + double q,epsilon,dlnf0_dlnq,qk_div_epsilon; + double rho_ncdm_bg,p_ncdm_bg,pseudo_p_ncdm,w_ncdm,ca2_ncdm,ceff2_ncdm=0.,cvis2_ncdm=0.; + + /* for use with curvature */ + double cotKgen, sqrt_absK; + double s2_squared, ssqrt3; + + /* for use with dcdm and dr */ + double f_dr, fprime_dr; + + /** - rename the fields of the input structure (just to avoid heavy notations) */ + + pppaw = parameters_and_workspace; + + k = pppaw->k; + k2=k*k; + index_md = pppaw->index_md; + ppr = pppaw->ppr; + pba = pppaw->pba; + pth = pppaw->pth; + ppt = pppaw->ppt; + ppw = pppaw->ppw; + + s_l = ppw->s_l; + pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; + pvecmetric = ppw->pvecmetric; + pv = ppw->pv; + + /** - get background/thermo quantities in this point */ + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_closeby, + &(ppw->last_index_back), + pvecback), + pba->error_message, + error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., /* redshift z=1/a-1 */ + pth->inter_closeby, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + /** - get metric perturbations with perturb_einstein() */ + class_call(perturb_einstein(ppr, + pba, + pth, + ppt, + index_md, + k, + tau, + y, + ppw), + ppt->error_message, + error_message); + + /** - compute related background quantities */ + + a = pvecback[pba->index_bg_a]; + a2 = a*a; + a_prime_over_a = pvecback[pba->index_bg_H] * a; + R = 4./3. * pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b]; + + /** - Compute 'generalised cotK function of argument \f$ \sqrt{|K|}*\tau \f$, for closing hierarchy. + (see equation 2.34 in arXiv:1305.3261): */ + if (pba->has_curvature == _FALSE_){ + cotKgen = 1.0/(k*tau); + } + else{ + sqrt_absK = sqrt(fabs(pba->K)); + if (pba->K < 0) + cotKgen = sqrt_absK/k/tanh(sqrt_absK*tau); + else + cotKgen = sqrt_absK/k/tan(sqrt_absK*tau); + } + + s2_squared = 1.-3.*pba->K/k2; + + /** - for scalar modes: */ + if (_scalars_) { + + /** - --> (a) define short-cut notations for the scalar perturbations */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + delta_g = y[pv->index_pt_delta_g]; + theta_g = y[pv->index_pt_theta_g]; + } + delta_b = y[pv->index_pt_delta_b]; + theta_b = y[pv->index_pt_theta_b]; + cb2 = pvecthermo[pth->index_th_cb2]; + + /** - --> (b) perturbed recombination **/ + + if ((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca]==(int)tca_off)){ + + delta_temp= y[ppw->pv->index_pt_perturbed_recombination_delta_temp]; + delta_chi= y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; + chi=pvecthermo[pth->index_th_xe]; + + // Conversion of H0 in inverse seconds (pba->H0 is [H0/c] in inverse Mpcs) + H0 = pba->H0 * _c_ / _Mpc_over_m_; + + //Computation of Nnow in SI units + Nnow = 3.*H0*H0*pba->Omega0_b*(1.-pth->YHe)/(8.*_PI_*_G_*_m_H_); + + // total amount of hydrogen today + n_H = (pba->a_today/a)*(pba->a_today/a)*(pba->a_today/a)* Nnow; + + // Helium-to-hydrogen ratio + fHe = pth->YHe / (_not4_*(1-pth->YHe)); + + // The constant such that rho_gamma = a_rad * T^4 + a_rad = 8./15.*pow(_PI_,5)*pow(_k_B_,4)/pow(_c_*_h_P_,3); + + // Compton cooling rate in Mpc^(-1) + Compton_CR = 8./3. *_sigma_ * a_rad /(_m_e_ * _c_ *_c_) *_Mpc_over_m_ ; + + // Temperature is already in Kelvin + Tb_in_K = pvecthermo[pth->index_th_Tb]; + + // Alpha in m^3/s, cf. Recfast paper + alpha_rec = 1.14 * 4.309e-19*pow((Tb_in_K * 1e-4),-0.6166)/(1+0.6703*pow((Tb_in_K * 1e-4),0.53)) ; + + // delta alpha, dimensionless + delta_alpha_rec= (-0.6166 + 0.6703 * pow((Tb_in_K * 1e-4),0.53)*(-0.6166-0.53))/(1+0.6703*pow((Tb_in_K * 1e-4),0.53)) * delta_temp; + + } // end of perturbed recombination related quantities + + /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) + + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + + - metric_shear_prime is the derivative of metric_shear + + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + + if (ppt->gauge == synchronous) { + + metric_continuity = pvecmetric[ppw->index_mt_h_prime]/2.; + metric_euler = 0.; + metric_shear = k2 * pvecmetric[ppw->index_mt_alpha]; + //metric_shear_prime = k2 * pvecmetric[ppw->index_mt_alpha_prime]; + metric_ufa_class = pvecmetric[ppw->index_mt_h_prime]/2.; + } + + if (ppt->gauge == newtonian) { + + metric_continuity = -3.*pvecmetric[ppw->index_mt_phi_prime]; + metric_euler = k2*pvecmetric[ppw->index_mt_psi]; + metric_shear = 0.; + //metric_shear_prime = 0.; + metric_ufa_class = -6.*pvecmetric[ppw->index_mt_phi_prime]; + } + + /** - --> (d) if some approximation schemes are turned on, enforce a few y[] values computed in perturb_einstein */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + delta_g = ppw->rsa_delta_g; + theta_g = ppw->rsa_theta_g; + } + + /** - --> (e) BEGINNING OF ACTUAL SYSTEM OF EQUATIONS OF EVOLUTION */ + + /* Note concerning perturbed recombination: $cb2*delta_b$ must be replaced everywhere by $cb2*(delta_b+delta_temp)$. If perturbed recombination is not required, delta_temp is equal to zero. */ + + /** - ---> photon temperature density */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + dy[pv->index_pt_delta_g] = -4./3.*(theta_g+metric_continuity); + + } + + /** - ---> baryon density */ + + dy[pv->index_pt_delta_b] = -(theta_b+metric_continuity); + + /** - ---> baryon velocity (depends on tight-coupling approximation=tca) */ + + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + /* without tca */ + + /** - ----> perturbed recombination has an impact **/ + dy[pv->index_pt_theta_b] = + - a_prime_over_a*theta_b + + metric_euler + + k2*cb2*(delta_b+delta_temp) + + R*pvecthermo[pth->index_th_dkappa]*(theta_g-theta_b); + + } + + else { + + /* with tca */ + class_call(perturb_tca_slip_and_shear(y,pppaw,error_message), + error_message, + error_message); + + /* perturbed recombination has an impact **/ + dy[pv->index_pt_theta_b] = + (-a_prime_over_a*theta_b + +k2*(cb2*(delta_b+delta_temp)+R*(delta_g/4.-s2_squared*ppw->tca_shear_g)) + +R*ppw->tca_slip)/(1.+R) + +metric_euler; + + } + + /** - ---> photon temperature higher momenta and photon polarization (depend on tight-coupling approximation) */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + /** - ----> if photon tight-coupling is off */ + if (ppw->approx[ppw->index_ap_tca] == (int)tca_off) { + + /** - -----> define \f$ \Pi = G_{\gamma 0} + G_{\gamma 2} + F_{\gamma 2} \f$ */ + P0 = (y[pv->index_pt_pol0_g] + y[pv->index_pt_pol2_g] + 2.*s_l[2]*y[pv->index_pt_shear_g])/8.; + + /** - -----> photon temperature velocity */ + + dy[pv->index_pt_theta_g] = + k2*(delta_g/4.-s2_squared*y[pv->index_pt_shear_g]) + + metric_euler + + pvecthermo[pth->index_th_dkappa]*(theta_b-theta_g); + + /** - -----> photon temperature shear */ + dy[pv->index_pt_shear_g] = + 0.5*(8./15.*(theta_g+metric_shear) + -3./5.*k*s_l[3]/s_l[2]*y[pv->index_pt_l3_g] + -pvecthermo[pth->index_th_dkappa]*(2.*y[pv->index_pt_shear_g]-4./5./s_l[2]*P0)); + + /** - -----> photon temperature l=3 */ + + l = 3; + dy[pv->index_pt_l3_g] = k/(2.0*l+1.0)* + (l*s_l[l]*2.*s_l[2]*y[pv->index_pt_shear_g]-(l+1.)*s_l[l+1]*y[pv->index_pt_l3_g+1]) + - pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_l3_g]; + + /** - -----> photon temperature l>3 */ + for (l = 4; l < pv->l_max_g; l++) { + + dy[pv->index_pt_delta_g+l] = k/(2.0*l+1.0)* + (l*s_l[l]*y[pv->index_pt_delta_g+l-1]-(l+1)*s_l[l+1]*y[pv->index_pt_delta_g+l+1]) + - pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + } + + /** - -----> photon temperature lmax */ + l = pv->l_max_g; /* l=lmax */ + dy[pv->index_pt_delta_g+l] = + k*(s_l[l]*y[pv->index_pt_delta_g+l-1]-(1.+l)*cotKgen*y[pv->index_pt_delta_g+l]) + - pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + + /** - -----> photon polarization l=0 */ + + dy[pv->index_pt_pol0_g] = + -k*y[pv->index_pt_pol0_g+1] + -pvecthermo[pth->index_th_dkappa]*(y[pv->index_pt_pol0_g]-4.*P0); + + /** - -----> photon polarization l=1 */ + + dy[pv->index_pt_pol1_g] = + k/3.*(y[pv->index_pt_pol1_g-1]-2.*s_l[2]*y[pv->index_pt_pol1_g+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol1_g]; + + /** - -----> photon polarization l=2 */ + + dy[pv->index_pt_pol2_g] = + k/5.*(2.*s_l[2]*y[pv->index_pt_pol2_g-1]-3.*s_l[3]*y[pv->index_pt_pol2_g+1]) + -pvecthermo[pth->index_th_dkappa]*(y[pv->index_pt_pol2_g]-4./5.*P0); + + /** - -----> photon polarization l>2 */ + + for (l=3; l < pv->l_max_pol_g; l++) + dy[pv->index_pt_pol0_g+l] = k/(2.*l+1)* + (l*s_l[l]*y[pv->index_pt_pol0_g+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_pol0_g+l+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + /** - -----> photon polarization lmax_pol */ + + l = pv->l_max_pol_g; + dy[pv->index_pt_pol0_g+l] = + k*(s_l[l]*y[pv->index_pt_pol0_g+l-1]-(l+1)*cotKgen*y[pv->index_pt_pol0_g+l]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + } + + /** - ----> if photon tight-coupling is on: */ + + else { + + /** - -----> in that case, only need photon velocity */ + + + /* perturbed recombination has an impact **/ + dy[pv->index_pt_theta_g] = + -(dy[pv->index_pt_theta_b]+a_prime_over_a*theta_b-cb2*k2*(delta_b+delta_temp))/R + +k2*(0.25*delta_g-s2_squared*ppw->tca_shear_g)+(1.+R)/R*metric_euler; + } + } + + /** - ---> cdm */ + + if (pba->has_cdm == _TRUE_) { + + /** - ----> newtonian gauge: cdm density and velocity */ + + if (ppt->gauge == newtonian) { + dy[pv->index_pt_delta_cdm] = -(y[pv->index_pt_theta_cdm]+metric_continuity); /* cdm density */ + + dy[pv->index_pt_theta_cdm] = - a_prime_over_a*y[pv->index_pt_theta_cdm] + metric_euler; /* cdm velocity */ + } + + /** - ----> synchronous gauge: cdm density only (velocity set to zero by definition of the gauge) */ + + if (ppt->gauge == synchronous) { + dy[pv->index_pt_delta_cdm] = -metric_continuity; /* cdm density */ + } + + } + + /* perturbed recombination */ + /* computes the derivatives of delta x_e and delta T_b */ + + if((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca] == (int)tca_off)){ + + // alpha * n_H is in inverse seconds, so we have to multiply it by Mpc_in_sec + dy[ppw->pv->index_pt_perturbed_recombination_delta_chi] = - alpha_rec* a * chi*n_H *(delta_alpha_rec + delta_chi + delta_b) * _Mpc_over_m_ / _c_ ; + + // see the documentation for this formula + dy[ppw->pv->index_pt_perturbed_recombination_delta_temp] = 2./3. * dy[ppw->pv->index_pt_delta_b] - a * Compton_CR * pow(pba->T_cmb/a, 4) * chi / (1.+chi+fHe) * ( (1.-pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb])*(delta_g + delta_chi*(1.+fHe)/(1.+chi+fHe)) + pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb] *(delta_temp - 1./4. * delta_g) ); + + } + + /** - ---> dcdm and dr */ + + if (pba->has_dcdm == _TRUE_) { + + /** - ----> dcdm */ + + dy[pv->index_pt_delta_dcdm] = -(y[pv->index_pt_theta_dcdm]+metric_continuity) + - a * pba->Gamma_dcdm / k2 * metric_euler; /* dcdm density */ + + dy[pv->index_pt_theta_dcdm] = - a_prime_over_a*y[pv->index_pt_theta_dcdm] + metric_euler; /* dcdm velocity */ + } + + /** - ---> dr */ + + if ((pba->has_dcdm == _TRUE_)&&(pba->has_dr == _TRUE_)) { + + + /* f = rho_dr*a^4/rho_crit_today. In CLASS density units + rho_crit_today = H0^2. + */ + + f_dr = pow(pow(a/pba->a_today,2)/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; + fprime_dr = pba->Gamma_dcdm*pvecback[pba->index_bg_rho_dcdm]*pow(a,5)/pow(pba->H0,2); + + /** - ----> dr F0 */ + dy[pv->index_pt_F0_dr] = -k*y[pv->index_pt_F0_dr+1]-4./3.*metric_continuity*f_dr+ + fprime_dr*(y[pv->index_pt_delta_dcdm]+metric_euler/k2); + + /** - ----> dr F1 */ + dy[pv->index_pt_F0_dr+1] = k/3.*y[pv->index_pt_F0_dr]-2./3.*k*y[pv->index_pt_F0_dr+2]*s2_squared + + 4*metric_euler/(3.*k)*f_dr + fprime_dr/k*y[pv->index_pt_theta_dcdm]; + + /** - ----> exact dr F2 */ + dy[pv->index_pt_F0_dr+2] = 8./15.*(3./4.*k*y[pv->index_pt_F0_dr+1]+metric_shear*f_dr) -3./5.*k*s_l[3]/s_l[2]*y[pv->index_pt_F0_dr+3]; + + /** - ----> exact dr l=3 */ + l = 3; + dy[pv->index_pt_F0_dr+3] = k/(2.*l+1.)* + (l*s_l[l]*s_l[2]*y[pv->index_pt_F0_dr+2]-(l+1.)*s_l[l+1]*y[pv->index_pt_F0_dr+4]); + + /** - ----> exact dr l>3 */ + for (l = 4; l < pv->l_max_dr; l++) { + dy[pv->index_pt_F0_dr+l] = k/(2.*l+1)* + (l*s_l[l]*y[pv->index_pt_F0_dr+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_F0_dr+l+1]); + } + + /** - ----> exact dr lmax_dr */ + l = pv->l_max_dr; + dy[pv->index_pt_F0_dr+l] = + k*(s_l[l]*y[pv->index_pt_F0_dr+l-1]-(1.+l)*cotKgen*y[pv->index_pt_F0_dr+l]); + + } + + /** - ---> fluid (fld) */ + + if (pba->has_fld == _TRUE_) { + + /** - ----> factors w, w_prime, adiabatic sound speed ca2 (all three background-related), + plus actual sound speed in the fluid rest frame cs2 */ + + w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + w_prime = - pba->wa_fld * a / pba->a_today * a_prime_over_a; + ca2 = w - w_prime / 3. / (1.+w) / a_prime_over_a; + cs2 = pba->cs2_fld; + + /** - ----> fluid density */ + + dy[pv->index_pt_delta_fld] = + -(1+w)*(y[pv->index_pt_theta_fld]+metric_continuity) + -3.*(cs2-w)*a_prime_over_a*y[pv->index_pt_delta_fld] + -9.*(1+w)*(cs2-ca2)*a_prime_over_a*a_prime_over_a*y[pv->index_pt_theta_fld]/k2; + + /** - ----> fluid velocity */ + + dy[pv->index_pt_theta_fld] = /* fluid velocity */ + -(1.-3.*cs2)*a_prime_over_a*y[pv->index_pt_theta_fld] + +cs2*k2/(1.+w)*y[pv->index_pt_delta_fld] + +metric_euler; + + } + + /** - ---> scalar field (scf) */ + + if (pba->has_scf == _TRUE_) { + + /** - ----> field value */ + + dy[pv->index_pt_phi_scf] = y[pv->index_pt_phi_prime_scf]; + + /** - ----> Klein Gordon equation */ + + dy[pv->index_pt_phi_prime_scf] = - 2.*a_prime_over_a*y[pv->index_pt_phi_prime_scf] + - metric_continuity*pvecback[pba->index_bg_phi_prime_scf] // metric_continuity = h'/2 + - (k2 + a2*pvecback[pba->index_bg_ddV_scf])*y[pv->index_pt_phi_scf]; //checked + + } + + /** - ---> ultra-relativistic neutrino/relics (ur) */ + + if (pba->has_ur == _TRUE_) { + + /** - ----> if radiation streaming approximation is off */ + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + /** - -----> ur density */ + dy[pv->index_pt_delta_ur] = + // standard term + -4./3.*(y[pv->index_pt_theta_ur] + metric_continuity) + // non-standard term, non-zero if if ceff2_ur not 1/3 + +(1.-ppt->three_ceff2_ur)*a_prime_over_a*(y[pv->index_pt_delta_ur] + 4.*a_prime_over_a*y[pv->index_pt_theta_ur]/k/k); + + /** - -----> ur velocity */ + dy[pv->index_pt_theta_ur] = + // standard term with extra coefficient (3 ceff2_ur), normally equal to one + k2*(ppt->three_ceff2_ur*y[pv->index_pt_delta_ur]/4.-s2_squared*y[pv->index_pt_shear_ur]) + metric_euler + // non-standard term, non-zero if ceff2_ur not 1/3 + -(1.-ppt->three_ceff2_ur)*a_prime_over_a*y[pv->index_pt_theta_ur]; + + if(ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + /** - -----> exact ur shear */ + dy[pv->index_pt_shear_ur] = + 0.5*( + // standard term + 8./15.*(y[pv->index_pt_theta_ur]+metric_shear)-3./5.*k*s_l[3]/s_l[2]*y[pv->index_pt_shear_ur+1] + // non-standard term, non-zero if cvis2_ur not 1/3 + -(1.-ppt->three_cvis2_ur)*(8./15.*(y[pv->index_pt_theta_ur]+metric_shear))); + + /** - -----> exact ur l=3 */ + l = 3; + dy[pv->index_pt_l3_ur] = k/(2.*l+1.)* + (l*2.*s_l[l]*s_l[2]*y[pv->index_pt_shear_ur]-(l+1.)*s_l[l+1]*y[pv->index_pt_l3_ur+1]); + + /** - -----> exact ur l>3 */ + for (l = 4; l < pv->l_max_ur; l++) { + dy[pv->index_pt_delta_ur+l] = k/(2.*l+1)* + (l*s_l[l]*y[pv->index_pt_delta_ur+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_delta_ur+l+1]); + } + + /** - -----> exact ur lmax_ur */ + l = pv->l_max_ur; + dy[pv->index_pt_delta_ur+l] = + k*(s_l[l]*y[pv->index_pt_delta_ur+l-1]-(1.+l)*cotKgen*y[pv->index_pt_delta_ur+l]); + + } + + else { + + /** - -----> in fluid approximation (ufa): only ur shear needed */ + //TBC: curvature? + /* a la Ma & Bertschinger */ + if (ppr->ur_fluid_approximation == ufa_mb) { + + dy[pv->index_pt_shear_ur] = + -3./tau*y[pv->index_pt_shear_ur] + +2./3.*(y[pv->index_pt_theta_ur]+metric_shear); + + } + + /* a la Hu */ + if (ppr->ur_fluid_approximation == ufa_hu) { + + dy[pv->index_pt_shear_ur] = + -3.*a_prime_over_a*y[pv->index_pt_shear_ur] + +2./3.*(y[pv->index_pt_theta_ur]+metric_shear); + + } + + /* a la CLASS */ + if (ppr->ur_fluid_approximation == ufa_CLASS) { + + dy[pv->index_pt_shear_ur] = + -3./tau*y[pv->index_pt_shear_ur] + +2./3.*(y[pv->index_pt_theta_ur]+metric_ufa_class); + + } + } + } + } + + /** - ---> non-cold dark matter (ncdm): massive neutrinos, WDM, etc. */ + //TBC: curvature in all ncdm + if (pba->has_ncdm == _TRUE_) { + + idx = pv->index_pt_psi0_ncdm1; + + /** - ----> first case: use a fluid approximation (ncdmfa) */ + //TBC: curvature + if(ppw->approx[ppw->index_ap_ncdmfa] == (int)ncdmfa_on) { + + /** - -----> loop over species */ + + for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { + + /** - -----> define intermediate quantitites */ + + rho_ncdm_bg = pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; /* background density */ + p_ncdm_bg = pvecback[pba->index_bg_p_ncdm1+n_ncdm]; /* background pressure */ + pseudo_p_ncdm = pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm]; /* pseudo-pressure (see CLASS IV paper) */ + w_ncdm = p_ncdm_bg/rho_ncdm_bg; /* equation of state parameter */ + ca2_ncdm = w_ncdm/3.0/(1.0+w_ncdm)*(5.0-pseudo_p_ncdm/p_ncdm_bg); /* adiabatic sound speed */ + + /* c_eff is (delta p / delta rho) in the gauge under + consideration (not in the gauge comoving with the + fluid) */ + + /* c_vis is introduced in order to close the system */ + + /* different ansatz for sound speed c_eff and viscosity speed c_vis */ + if (ppr->ncdm_fluid_approximation == ncdmfa_mb) { + ceff2_ncdm = ca2_ncdm; + cvis2_ncdm = 3.*w_ncdm*ca2_ncdm; + } + if (ppr->ncdm_fluid_approximation == ncdmfa_hu) { + ceff2_ncdm = ca2_ncdm; + cvis2_ncdm = w_ncdm; + } + if (ppr->ncdm_fluid_approximation == ncdmfa_CLASS) { + ceff2_ncdm = ca2_ncdm; + cvis2_ncdm = 3.*w_ncdm*ca2_ncdm; + } + + /** - -----> exact continuity equation */ + + dy[idx] = -(1.0+w_ncdm)*(y[idx+1]+metric_continuity)- + 3.0*a_prime_over_a*(ceff2_ncdm-w_ncdm)*y[idx]; + + /** - -----> exact euler equation */ + + dy[idx+1] = -a_prime_over_a*(1.0-3.0*ca2_ncdm)*y[idx+1]+ + ceff2_ncdm/(1.0+w_ncdm)*k2*y[idx]-k2*y[idx+2] + + metric_euler; + + /** - -----> different ansatz for approximate shear derivative */ + + if (ppr->ncdm_fluid_approximation == ncdmfa_mb) { + + dy[idx+2] = -3.0*(a_prime_over_a*(2./3.-ca2_ncdm-pseudo_p_ncdm/p_ncdm_bg/3.)+1./tau)*y[idx+2] + +8.0/3.0*cvis2_ncdm/(1.0+w_ncdm)*s_l[2]*(y[idx+1]+metric_shear); + + } + + if (ppr->ncdm_fluid_approximation == ncdmfa_hu) { + + dy[idx+2] = -3.0*a_prime_over_a*ca2_ncdm/w_ncdm*y[idx+2] + +8.0/3.0*cvis2_ncdm/(1.0+w_ncdm)*s_l[2]*(y[idx+1]+metric_shear); + + } + + if (ppr->ncdm_fluid_approximation == ncdmfa_CLASS) { + + dy[idx+2] = -3.0*(a_prime_over_a*(2./3.-ca2_ncdm-pseudo_p_ncdm/p_ncdm_bg/3.)+1./tau)*y[idx+2] + +8.0/3.0*cvis2_ncdm/(1.0+w_ncdm)*s_l[2]*(y[idx+1]+metric_ufa_class); + + } + + /** - -----> jump to next species */ + + idx += pv->l_max_ncdm[n_ncdm]+1; + } + } + + /** - ----> second case: use exact equation (Boltzmann hierarchy on momentum grid) */ + + else { + + /** - -----> loop over species */ + + for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { + + /** - -----> loop over momentum */ + + for (index_q=0; index_q < pv->q_size_ncdm[n_ncdm]; index_q++) { + + /** - -----> define intermediate quantities */ + + dlnf0_dlnq = pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + q = pba->q_ncdm[n_ncdm][index_q]; + epsilon = sqrt(q*q+a2*pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]); + qk_div_epsilon = k*q/epsilon; + + /** - -----> ncdm density for given momentum bin */ + + dy[idx] = -qk_div_epsilon*y[idx+1]+metric_continuity*dlnf0_dlnq/3.; + + /** - -----> ncdm velocity for given momentum bin */ + + dy[idx+1] = qk_div_epsilon/3.0*(y[idx] - 2*s_l[2]*y[idx+2]) + -epsilon*metric_euler/(3*q*k)*dlnf0_dlnq; + + /** - -----> ncdm shear for given momentum bin */ + + dy[idx+2] = qk_div_epsilon/5.0*(2*s_l[2]*y[idx+1]-3.*s_l[3]*y[idx+3]) + -s_l[2]*metric_shear*2./15.*dlnf0_dlnq; + + /** - -----> ncdm l>3 for given momentum bin */ + + for(l=3; ll_max_ncdm[n_ncdm]; l++){ + dy[idx+l] = qk_div_epsilon/(2.*l+1.0)*(l*s_l[l]*y[idx+(l-1)]-(l+1.)*s_l[l+1]*y[idx+(l+1)]); + } + + /** - -----> ncdm lmax for given momentum bin (truncation as in Ma and Bertschinger) + but with curvature taken into account a la arXiv:1305.3261 */ + + dy[idx+l] = qk_div_epsilon*y[idx+l-1]-(1.+l)*k*cotKgen*y[idx+l]; + + /** - -----> jump to next momentum bin or species */ + + idx += (pv->l_max_ncdm[n_ncdm]+1); + } + } + } + } + + /** - ---> metric */ + + /** - ---> eta of synchronous gauge */ + + if (ppt->gauge == synchronous) { + + dy[pv->index_pt_eta] = pvecmetric[ppw->index_mt_eta_prime]; + + } + + if (ppt->gauge == newtonian) { + + dy[pv->index_pt_phi] = pvecmetric[ppw->index_mt_phi_prime]; + + } + + } + + /** - vector mode */ + if (_vectors_) { + + fprintf(stderr,"we are in vectors\n"); + + ssqrt3 = sqrt(1.-2.*pba->K/k2); + cb2 = pvecthermo[pth->index_th_cb2]; + + /** - --> baryon velocity */ + + if (ppt->gauge == synchronous) { + + dy[pv->index_pt_theta_b] = -(1-3.*cb2)*a_prime_over_a*y[pv->index_pt_theta_b] + - pvecthermo[pth->index_th_dkappa]*(_SQRT2_/4.*delta_g + y[pv->index_pt_theta_b]); + + } + + else if (ppt->gauge == newtonian) { + + dy[pv->index_pt_theta_b] = -(1-3.*cb2)*a_prime_over_a*y[pv->index_pt_theta_b] + - _SQRT2_/4.*pvecthermo[pth->index_th_dkappa]*(delta_g+2.*_SQRT2_*y[pv->index_pt_theta_b]) + + pvecmetric[ppw->index_mt_V_prime]+(1.-3.*cb2)*a_prime_over_a*y[pv->index_pt_V]; + + } + + /* + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + if (ppw->approx[ppw->index_ap_tca]==(int)tca_off) { + */ + + /* short-cut notations for the tensor perturbations */ + delta_g = y[pv->index_pt_delta_g]; + theta_g = y[pv->index_pt_theta_g]; + shear_g = y[pv->index_pt_shear_g]; + + + /* (P^{(1)}) (see Eq. B.23 in 1305.3261)*/ + P1 = -_SQRT6_/40.*( + 4./(3.*k)*theta_g //F1 + +y[pv->index_pt_delta_g+3] + +2.*y[pv->index_pt_pol0_g] + +10./7.*y[pv->index_pt_pol2_g] + -4./7.*y[pv->index_pt_pol0_g+4]); + + if (ppt->gauge == synchronous) { + + /* photon density (delta_g = F_0) */ + dy[pv->index_pt_delta_g] = + -4./3.*theta_g + -pvecthermo[pth->index_th_dkappa]*(delta_g+2.*_SQRT2_*y[pv->index_pt_theta_b]); + + /* photon velocity (theta_g = (3k/4)*F_1) */ + dy[pv->index_pt_theta_g] = + k2*(delta_g/4.-s_l[2]*shear_g) + -pvecthermo[pth->index_th_dkappa]*(theta_g+4.0/_SQRT6_*P1) + +4.0/(3.0*_SQRT2_)*ssqrt3*y[pv->index_pt_hv_prime]; + + } + + else if (ppt->gauge == newtonian) { + + /* photon density (delta_g = F_0) */ + dy[pv->index_pt_delta_g] = + -4./3.*theta_g + -pvecthermo[pth->index_th_dkappa]*(delta_g+2.*_SQRT2_*y[pv->index_pt_theta_b]) + -2.*_SQRT2_*pvecmetric[ppw->index_mt_V_prime]; + + /* photon velocity (theta_g = (3k/4)*F_1) */ + dy[pv->index_pt_theta_g] = + k2*(delta_g/4.-s_l[2]*shear_g) + -pvecthermo[pth->index_th_dkappa]*(theta_g+4.0/_SQRT6_*P1); + + } + + /* photon shear (shear_g = F_2/2) */ + dy[pv->index_pt_shear_g] = + 4./15.*s_l[2]*theta_g-3./10.*k*s_l[3]*y[pv->index_pt_shear_g+1] + -pvecthermo[pth->index_th_dkappa]*shear_g; + + /* photon l=3 */ + dy[pv->index_pt_l3_g] = + k/7.*(6.*s_l[3]*shear_g-4.*s_l[4]*y[pv->index_pt_l3_g+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_l3_g]; + + /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3,4) */ + for (l=4; l < pv->l_max_g; l++) + dy[pv->index_pt_delta_g+l] = + k/(2.*l+1.)*(l*s_l[l]*y[pv->index_pt_delta_g+l-1] + -(l+1.)*s_l[l+1]*y[pv->index_pt_delta_g+l+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + + /* l=lmax */ + l = pv->l_max_g; + dy[pv->index_pt_delta_g+l] = + k*(s_l[l]*y[pv->index_pt_delta_g+l-1] + -(1.+l)*cotKgen*y[pv->index_pt_delta_g+l]) + - pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + + /* photon polarization, l=0 (pol0_g = G_0)*/ + dy[pv->index_pt_pol0_g] = + -k*y[pv->index_pt_pol0_g+1] + -pvecthermo[pth->index_th_dkappa]*(y[pv->index_pt_pol0_g]-_SQRT6_*P1); + + /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3,4) */ + for (l=1; l < pv->l_max_pol_g; l++) + dy[pv->index_pt_pol0_g+l] = + k/(2.*l+1.)*(l*s_l[l]*y[pv->index_pt_pol0_g+l-1] + -(l+1.)*s_l[l+1]*y[pv->index_pt_pol0_g+l+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + /* l=lmax */ + l = pv->l_max_pol_g; + dy[pv->index_pt_pol0_g+l] = + k*(s_l[l]*y[pv->index_pt_pol0_g+l-1] + -(l+1.)*cotKgen*y[pv->index_pt_pol0_g+l]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + /* + } + } + */ + + if (ppt->gauge == synchronous) { + + /* Vector metric perturbation in synchronous gauge: */ + dy[pv->index_pt_hv_prime] = pvecmetric[ppw->index_mt_hv_prime_prime]; + + } + else if (ppt->gauge == newtonian){ + + /* Vector metric perturbation in Newtonian gauge: */ + dy[pv->index_pt_V] = pvecmetric[ppw->index_mt_V_prime]; + + } + + } + + + /** - tensor modes: */ + if (_tensors_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + if (ppw->approx[ppw->index_ap_tca]==(int)tca_off) { + + /* short-cut notations for the tensor perturbations */ + delta_g = y[pv->index_pt_delta_g]; + theta_g = y[pv->index_pt_theta_g]; + shear_g = y[pv->index_pt_shear_g]; + + + /* (P^{(2)}) */ + P2 =-1.0/_SQRT6_*( + 1./10.*delta_g + +2./7.*shear_g + +3./70.*y[pv->index_pt_delta_g+4] + -3./5.*y[pv->index_pt_pol0_g] + +6./7.*y[pv->index_pt_pol2_g] + -3./70.*y[pv->index_pt_pol0_g+4]); + + /* above expression from paper, expression below matches old class but is not correct + P2 = -1.0/_SQRT6_*( + 1./10.*delta_g + +2./35.*shear_g + +1./210.*y[pv->index_pt_delta_g+4] + -3./5.*y[pv->index_pt_pol0_g] + +6./35.*y[pv->index_pt_pol2_g] + -1./210.*y[pv->index_pt_pol0_g+4] + ); + */ + + /* photon density (delta_g = F_0) */ + dy[pv->index_pt_delta_g] = + -4./3.*theta_g + -pvecthermo[pth->index_th_dkappa]*(delta_g+_SQRT6_*P2) + //+y[pv->index_pt_gwdot]; + +_SQRT6_*y[pv->index_pt_gwdot]; //TBC + + /* photon velocity (theta_g = (3k/4)*F_1) */ + dy[pv->index_pt_theta_g] = + k2*(delta_g/4.-s_l[2]*shear_g) + -pvecthermo[pth->index_th_dkappa]*theta_g; + + /* photon shear (shear_g = F_2/2) */ + dy[pv->index_pt_shear_g] = + 4./15.*s_l[2]*theta_g-3./10.*k*s_l[3]*y[pv->index_pt_shear_g+1] + -pvecthermo[pth->index_th_dkappa]*shear_g; + + /* photon l=3 */ + dy[pv->index_pt_l3_g] = + k/7.*(6.*s_l[3]*shear_g-4.*s_l[4]*y[pv->index_pt_l3_g+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_l3_g]; + + /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3,4) */ + for (l=4; l < pv->l_max_g; l++) + dy[pv->index_pt_delta_g+l] = + k/(2.*l+1.)*(l*s_l[l]*y[pv->index_pt_delta_g+l-1] + -(l+1.)*s_l[l+1]*y[pv->index_pt_delta_g+l+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + + /* l=lmax */ + l = pv->l_max_g; + dy[pv->index_pt_delta_g+l] = + k*(s_l[l]*y[pv->index_pt_delta_g+l-1] + -(1.+l)*cotKgen*y[pv->index_pt_delta_g+l]) + - pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_delta_g+l]; + + /* photon polarization, l=0 (pol0_g = G_0)*/ + dy[pv->index_pt_pol0_g] = + -k*y[pv->index_pt_pol0_g+1] + -pvecthermo[pth->index_th_dkappa]*(y[pv->index_pt_pol0_g]-_SQRT6_*P2); + + /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3,4) */ + for (l=1; l < pv->l_max_pol_g; l++) + dy[pv->index_pt_pol0_g+l] = + k/(2.*l+1.)*(l*s_l[l]*y[pv->index_pt_pol0_g+l-1] + -(l+1.)*s_l[l+1]*y[pv->index_pt_pol0_g+l+1]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + /* l=lmax */ + l = pv->l_max_pol_g; + dy[pv->index_pt_pol0_g+l] = + k*(s_l[l]*y[pv->index_pt_pol0_g+l-1] + -(l+1.)*cotKgen*y[pv->index_pt_pol0_g+l]) + -pvecthermo[pth->index_th_dkappa]*y[pv->index_pt_pol0_g+l]; + + } + } + + if (ppt->evolve_tensor_ur == _TRUE_) { + + dy[pv->index_pt_delta_ur] = -4./3.*y[pv->index_pt_theta_ur]+_SQRT6_*y[pv->index_pt_gwdot]; + + dy[pv->index_pt_theta_ur] = k2*(y[pv->index_pt_delta_ur]/4.-s2_squared*y[pv->index_pt_shear_ur]); + + dy[pv->index_pt_shear_ur] = (4./15.*y[pv->index_pt_theta_ur] + -3./10.*k*s_l[3]/s_l[2]*y[pv->index_pt_shear_ur+1]); + + l = 3; + dy[pv->index_pt_l3_ur] = k/(2.*l+1.)* + (l*2.*s_l[l]*s_l[2]*y[pv->index_pt_shear_ur]-(l+1.)*s_l[l+1]*y[pv->index_pt_l3_ur+1]); + + for (l = 4; l < pv->l_max_ur; l++) { + dy[pv->index_pt_delta_ur+l] = k/(2.*l+1)* + (l*s_l[l]*y[pv->index_pt_delta_ur+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_delta_ur+l+1]); + } + + l = pv->l_max_ur; + dy[pv->index_pt_delta_ur+l] = + k*(s_l[l]*y[pv->index_pt_delta_ur+l-1]-(1.+l)*cotKgen*y[pv->index_pt_delta_ur+l]); + + } + + /** - --> non-cold dark matter (ncdm): massive neutrinos, WDM, etc. */ + //TBC: curvature in all ncdm + if (ppt->evolve_tensor_ncdm == _TRUE_) { + + idx = pv->index_pt_psi0_ncdm1; + + /** - ---> loop over species */ + + for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { + + /** - ----> loop over momentum */ + + for (index_q=0; index_q < pv->q_size_ncdm[n_ncdm]; index_q++) { + + /** - ----> define intermediate quantities */ + + dlnf0_dlnq = pba->dlnf0_dlnq_ncdm[n_ncdm][index_q]; + q = pba->q_ncdm[n_ncdm][index_q]; + epsilon = sqrt(q*q+a2*pba->M_ncdm[n_ncdm]*pba->M_ncdm[n_ncdm]); + qk_div_epsilon = k*q/epsilon; + + /** - ----> ncdm density for given momentum bin */ + + dy[idx] = -qk_div_epsilon*y[idx+1]-0.25*_SQRT6_*y[pv->index_pt_gwdot]*dlnf0_dlnq; + + /** - ----> ncdm l>0 for given momentum bin */ + + for(l=1; ll_max_ncdm[n_ncdm]; l++){ + dy[idx+l] = qk_div_epsilon/(2.*l+1.0)*(l*s_l[l]*y[idx+(l-1)]-(l+1.)*s_l[l+1]*y[idx+(l+1)]); + } + + /** - ----> ncdm lmax for given momentum bin (truncation as in Ma and Bertschinger) + but with curvature taken into account a la arXiv:1305.3261 */ + + dy[idx+l] = qk_div_epsilon*y[idx+l-1]-(1.+l)*k*cotKgen*y[idx+l]; + + /** - ----> jump to next momentum bin or species */ + + idx += (pv->l_max_ncdm[n_ncdm]+1); + } + } + } + + /** - --> tensor metric perturbation h (gravitational waves) */ + dy[pv->index_pt_gw] = y[pv->index_pt_gwdot]; + + /** - --> its time-derivative */ + dy[pv->index_pt_gwdot] = pvecmetric[ppw->index_mt_gw_prime_prime]; + + } + + return _SUCCESS_; +} + +int perturb_tca_slip_and_shear(double * y, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + /** Summary: */ + + /** - define local variables */ + + /* scale factor and other background quantities */ + double a,a_prime_over_a,a_primeprime_over_a,R; + + /* useful terms for tight-coupling approximation */ + double slip=0.; + double tau_c=0.,dtau_c=0.; + double theta_prime,shear_g_prime=0.,theta_prime_prime; + double g0,g0_prime,g0_prime_prime; + double F=0.,F_prime=0.,F_prime_prime=0.; + + /* short-cut names for the fields of the input structure */ + struct perturb_parameters_and_workspace * pppaw; + double k,k2; + struct precision * ppr; + struct background * pba; + struct thermo * pth; + struct perturbs * ppt; + struct perturb_workspace * ppw; + double * pvecback; + double * pvecthermo; + double * pvecmetric; + struct perturb_vector * pv; + + /* short-cut notations for the perturbations */ + double delta_g=0.,theta_g=0.,shear_g=0.; + double delta_b,theta_b; + double Delta; + double cb2; + double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_shear_prime=0.; + + /* perturbed recombination */ + double delta_temp=0.; + + /* for use with curvature */ + double s2_squared; + + /** - rename the fields of the input structure (just to avoid heavy notations) */ + + pppaw = parameters_and_workspace; + + k = pppaw->k; + k2=k*k; + + ppr = pppaw->ppr; + pba = pppaw->pba; + pth = pppaw->pth; + ppt = pppaw->ppt; + ppw = pppaw->ppw; + + pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; + pvecmetric = ppw->pvecmetric; + pv = ppw->pv; + + /** - compute related background quantities */ + + a = pvecback[pba->index_bg_a]; + a_prime_over_a = pvecback[pba->index_bg_H] * a; + a_primeprime_over_a = pvecback[pba->index_bg_H_prime] * a + 2. * a_prime_over_a * a_prime_over_a; + //z = pba->a_today-1.; + R = 4./3. * pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b]; + s2_squared = 1.-3.*pba->K/k2; + + /** - --> (a) define short-cut notations for the scalar perturbations */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + delta_g = y[pv->index_pt_delta_g]; + theta_g = y[pv->index_pt_theta_g]; + } + delta_b = y[pv->index_pt_delta_b]; + theta_b = y[pv->index_pt_theta_b]; + cb2 = pvecthermo[pth->index_th_cb2]; + + /* perturbed recombination */ + if ((ppt->has_perturbed_recombination == _TRUE_) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off) ){ + delta_temp = y[pv->index_pt_perturbed_recombination_delta_temp]; + } + + /** - --> (b) define short-cut notations used only in tight-coupling approximation */ + tau_c = 1./pvecthermo[pth->index_th_dkappa]; /* inverse of opacity */ + dtau_c = -pvecthermo[pth->index_th_ddkappa]*tau_c*tau_c; /* its first derivative wrt conformal time */ + F = tau_c/(1+R); /* F = tau_c/(1+R) */ + if (ppr->tight_coupling_approximation >= (int)second_order_CLASS) { + F_prime = dtau_c/(1+R)+tau_c*a_prime_over_a*R/(1+R)/(1+R); /*F' needed by second_order_CLASS and compromise_CLASS */ + if (ppr->tight_coupling_approximation == (int)second_order_CLASS) { + F_prime_prime =(- pvecthermo[pth->index_th_dddkappa]*tau_c*tau_c /* F'' needed by second_order_CLASS only */ + + 2.*pvecthermo[pth->index_th_ddkappa]*pvecthermo[pth->index_th_ddkappa]*tau_c*tau_c*tau_c)/(1+R) + +2.*dtau_c*a_prime_over_a*R/(1+R)/(1+R) + +tau_c*((a_primeprime_over_a-2.*a_prime_over_a*a_prime_over_a)+2.*a_prime_over_a*a_prime_over_a*R/(1+R))*R/(1+R)/(1+R); + } + } + + /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) + + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + + - metric_shear_prime is the derivative of metric_shear + + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + + if (ppt->gauge == synchronous) { + + metric_continuity = pvecmetric[ppw->index_mt_h_prime]/2.; + metric_euler = 0.; + metric_shear = k2 * pvecmetric[ppw->index_mt_alpha]; + metric_shear_prime = k2 * pvecmetric[ppw->index_mt_alpha_prime]; + } + + if (ppt->gauge == newtonian) { + + metric_continuity = -3.*pvecmetric[ppw->index_mt_phi_prime]; + metric_euler = k2*pvecmetric[ppw->index_mt_psi]; + metric_shear = 0.; + metric_shear_prime = 0.; + } + + /** - --> (d) if some approximation schemes are turned on, enforce a few y[ ] values computed in perturb_einstein */ + + /* free-streaming photon velocity */ + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) + theta_g = ppw->rsa_theta_g; + + + /** - ---> like Ma & Bertschinger */ + if (ppr->tight_coupling_approximation == (int)first_order_MB) { + + slip=2.*R/(1.+R)*a_prime_over_a*(theta_b-theta_g) + +F*(-a_primeprime_over_a*theta_b + +k2*(-a_prime_over_a*delta_g/2. + +cb2*(-theta_b-metric_continuity) + -4./3.*(-theta_g-metric_continuity)/4.) + -a_prime_over_a*metric_euler); + + } + + /** - ---> relax assumption dkappa~a\f$^{-2}\f$ (like in CAMB) */ + if ((ppr->tight_coupling_approximation == (int)first_order_CAMB) || (ppr->tight_coupling_approximation == (int)compromise_CLASS)) { + + slip=(dtau_c/tau_c-2.*a_prime_over_a/(1.+R))*(theta_b-theta_g) + +F*(-a_primeprime_over_a*theta_b + +k2*(-a_prime_over_a*delta_g/2. + +cb2*(-theta_b-metric_continuity) + -4./3.*(-theta_g-metric_continuity)/4.) + -a_prime_over_a*metric_euler); + } + + /** - ---> also relax assumption cb2~a\f$^{-1}\f$ */ + if ((ppr->tight_coupling_approximation == (int)first_order_CLASS) || (ppr->tight_coupling_approximation == (int)second_order_CLASS)){ + + slip=(dtau_c/tau_c-2.*a_prime_over_a/(1.+R))*(theta_b-theta_g) + +F*(-a_primeprime_over_a*theta_b + +k2*(-a_prime_over_a*delta_g/2. + +pvecthermo[pth->index_th_dcb2]*delta_b + +cb2*(-theta_b-metric_continuity) + -4./3.*(-theta_g-metric_continuity)/4.) + -a_prime_over_a*metric_euler); + } + + /** - ---> intermediate quantities for 2nd order tca: shear_g at first order in tight-coupling */ + shear_g=16./45.*tau_c*(theta_g+metric_shear); + /* (Ma & Bertschinger give (1/9)*(4/3) instead of (2/15)*(4/3) + because they didn't include the contribution of G_gamma0 + and G_gamma2, which are of the same order as sigma_g. This + was already consistently included in CAMB) */ + + /** - ---> intermediate quantities for 2nd order tca: zero order for theta_b' = theta_g' */ + /** - ----> perturbed recombination has an impact **/ + theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*(delta_b+delta_temp)+R/4.*delta_g))/(1.+R) + metric_euler; + + /** - ---> intermediate quantities for 2nd order tca: shear_g_prime at first order in tight-coupling */ + shear_g_prime=16./45.*(tau_c*(theta_prime+metric_shear_prime)+dtau_c*(theta_g+metric_shear)); + + /** - ---> 2nd order as in CRS*/ + if (ppr->tight_coupling_approximation == (int)second_order_CRS) { + + if (ppt->gauge == newtonian) { + + class_stop(error_message, + "the second_order_CRS approach to tight-coupling is coded in synchronous gauge, not newtonian: change gauge or try another tight-coupling scheme"); + + } + + if (ppt->gauge == synchronous) { + + class_test(pba->sgnK != 0, + ppt->error_message, + "the second_order_CRS approach to tight-coupling is coded in the flat case only: for non-flat try another tight-coupling scheme"); + + /* infer Delta from h'' using Einstein equation */ + + Delta = 2*k2*y[pv->index_pt_eta] + -2*a_prime_over_a*pvecmetric[ppw->index_mt_h_prime] + -pvecmetric[ppw->index_mt_h_prime_prime]; + + /* monster expression for slip at second-order in tight-coupling */ + slip=(-2./(1.+R)*a_prime_over_a-pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa])*(theta_b-theta_g) + +(-a_primeprime_over_a*theta_b + -k2*a_prime_over_a*(delta_g/2.-2.*shear_g) + +k2*(cb2*(-theta_b-metric_continuity) + -4./3.*(-theta_g-metric_continuity)/4. + +shear_g_prime) + )/pvecthermo[pth->index_th_dkappa]/(1.+R) + -2.*R*(3.*a_prime_over_a*a_prime_over_a*cb2+(1.+R)*(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)-3.*a_prime_over_a*a_prime_over_a) + /(1.+R)/(1.+R)/(1.+R)*(theta_b-theta_g)/pvecthermo[pth->index_th_dkappa] + +( + a_primeprime_over_a*a_prime_over_a*((2.-3.*cb2)*R-2.)*theta_b/(1.+R) + +a_prime_over_a*k2*(1.-3.*cb2)*theta_b/3./(1.+R) + /* perturbed recombination has an impact (next two lines) */ + +a_primeprime_over_a*k2*cb2*(delta_b+delta_temp)/(1.+R) + +k2*k2*(3.*cb2-1.)*cb2*(delta_b+delta_temp)/3./(1.+R) + +k2*k2*R*(3.*cb2-1.)*delta_g/12./(1.+R) + +a_primeprime_over_a*k2*(2.+3.*R)*delta_g/4./(1.+R) + +a_prime_over_a*a_prime_over_a*k2*((2.-3.*cb2)*R-1.)*delta_g/2./(1.+R) + +a_prime_over_a*k2*cb2*(1.+(3.*cb2-2.)*R)*(-theta_b-metric_continuity)/(1.+R) + +a_prime_over_a*k2*(2.+(5.-3.*cb2)*R)*4./3.*(-theta_g-metric_continuity)/4./(1.+R) + +a_prime_over_a*(1.-3.*cb2)*k2*2.*metric_shear/3. + +k2*k2*(3.*cb2-1.)*y[pv->index_pt_eta]/3. + +2.*a_prime_over_a*k2*(3.*cb2-1.)*pvecmetric[ppw->index_mt_eta_prime] + +k2*(1.-3.*cb2)*Delta/6. + )/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]/(1.+R)/(1.+R) + -(4.*a_primeprime_over_a*theta_b-4.*k2*cb2*(-theta_b-metric_continuity)+2.*a_prime_over_a*k2*delta_g+k2*4./3.*(-theta_g-metric_continuity))/2./(1.+R)/(1.+R)*pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa] + +4.*a_prime_over_a*R/(1.+R)/(1.+R)*pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]*(theta_b-theta_g); + + /* second-order correction to shear */ + shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+k2*pvecmetric[ppw->index_mt_alpha_prime]); + + } + } + + /** - ---> 2nd order like in CLASS paper */ + if (ppr->tight_coupling_approximation == (int)second_order_CLASS) { + + if (ppt->gauge == newtonian) { + + class_stop(error_message, + "the second_order_CLASS approach to tight-coupling is coded in synchronous gauge, not newtonian: change gauge or try another tight-coupling scheme"); + + } + + if (ppt->gauge == synchronous) { + + /* zero order for theta_b'' = theta_g'' */ + theta_prime_prime = ((R-1.)*a_prime_over_a*theta_prime-(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_b + +k2*(pvecthermo[pth->index_th_dcb2]*delta_b+cb2*(-theta_b-metric_continuity)-a_prime_over_a*R/4.*delta_g+R/4.*4./3.*(-theta_g-metric_continuity)))/(1.+R); + + /* zero-order quantities g0, g0', go'' */ + g0 = -a_prime_over_a*theta_b + k2*(cb2*delta_b-delta_g/4.); + g0_prime = -a_prime_over_a*theta_prime-(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_b+k2*(pvecthermo[pth->index_th_dcb2]*delta_b+(1./3.-cb2)*(theta_b+0.5*pvecmetric[ppw->index_mt_h_prime])); + g0_prime_prime = -a_prime_over_a*theta_prime_prime-2.*(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_prime + -(2.*a_prime_over_a*a_prime_over_a*a_prime_over_a-3.*a_primeprime_over_a*a_prime_over_a)*theta_b + +k2*(pvecthermo[pth->index_th_ddcb2]*delta_b-2.*pvecthermo[pth->index_th_dcb2]*(theta_b+0.5*pvecmetric[ppw->index_mt_h_prime])+(1./3.-cb2)*(theta_prime+0.5*pvecmetric[ppw->index_mt_h_prime_prime])); + + /* slip at second order */ + slip = (1.-2*a_prime_over_a*F)*slip + F*k2*s2_squared*(2.*a_prime_over_a*shear_g+shear_g_prime) + -F*(F_prime_prime*g0+2.*F_prime*g0_prime+F*g0_prime_prime); + + /* second-order correction to shear */ + shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+metric_shear_prime); + + } + } + + /** - ---> add only the most important 2nd order terms */ + if (ppr->tight_coupling_approximation == (int)compromise_CLASS) { + + /* slip at second order (only leading second-order terms) */ + slip = (1.-2.*a_prime_over_a*F)*slip + F*k2*(2.*a_prime_over_a*s2_squared*shear_g+s2_squared*shear_g_prime-(1./3.-cb2)*(F*theta_prime+2.*F_prime*theta_b)); + + /* second-order correction to shear */ + shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+metric_shear_prime); + + } + + /** - ---> store tight-coupling values of photon shear and its derivative */ + + ppw->tca_shear_g = shear_g; + ppw->tca_slip = slip; + + + return _SUCCESS_; + +} + +int perturb_rsa_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ) { + /* - define local variables */ + + double k2; + + k2 = k*k; + + // formulas below TBC for curvaturema + + /* newtonian gauge */ + if (ppt->gauge == newtonian) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + + ppw->rsa_delta_g = -4.*y[ppw->pv->index_pt_phi]; + + ppw->rsa_theta_g = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + } + + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_b]; + + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + +k2*y[ppw->pv->index_pt_phi])); + } + + if (pba->has_ur == _TRUE_) { + + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; + } + else { + ppw->rsa_delta_ur = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_ur = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + } + } + } + } + + /* synchronous gauge */ + if (ppt->gauge == synchronous) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + + ppw->rsa_delta_g = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_g = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + } + + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_b]+0.5*ppw->pvecmetric[ppw->index_mt_h_prime]); + + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]* + (y[ppw->pv->index_pt_theta_b] + +0.5*ppw->pvecmetric[ppw->index_mt_h_prime]) + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + + ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + -a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + +k2*y[ppw->pv->index_pt_eta])); + } + + if (pba->has_ur == _TRUE_) { + + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; + } + else { + ppw->rsa_delta_ur = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_ur = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + } + } + } + } + + return _SUCCESS_; + +} diff --git a/class_old/source/primordial.c b/class_old/source/primordial.c new file mode 100644 index 00000000..41613131 --- /dev/null +++ b/class_old/source/primordial.c @@ -0,0 +1,3458 @@ +/** @file primordial.c Documented primordial module. + * + * Julien Lesgourgues, 24.08.2010 + * + * This module computes the primordial spectra. It can be used in different modes: + * simple parametric form, evolving inflaton perturbations, etc. So far only + * the mode corresponding to a simple analytic form in terms of amplitudes, tilts + * and runnings has been developed. + * + * The following functions can be called from other modules: + * + * -# primordial_init() at the beginning (anytime after perturb_init() and before spectra_init()) + * -# primordial_spectrum_at_k() at any time for computing P(k) at any k + * -# primordial_free() at the end + */ + +#include "primordial.h" + +/** + * Primordial spectra for arbitrary argument and for all initial conditions. + * + * This routine evaluates the primordial spectrum at a given value of k by + * interpolating in the pre-computed table. + * + * When k is not in the pre-computed range but the spectrum can be found + * analytically, it finds it. Otherwise returns an error. + * + * Can be called in two modes; linear or logarithmic: + * + * - linear: takes k, returns P(k) + * + * - logarithmic: takes ln(k), return ln(P(k)) + * + * One little subtlety: in case of several correlated initial conditions, + * the cross-correlation spectrum can be negative. Then, in logarithmic mode, + * the non-diagonal elements contain the cross-correlation angle \f$ P_{12}/\sqrt{P_{11} P_{22}}\f$ + * (from -1 to 1) instead of \f$\ln{P_{12}}\f$ + * + * This function can be + * called from whatever module at whatever time, provided that + * primordial_init() has been called before, and primordial_free() has not + * been called yet. + * + * @param ppm Input: pointer to primordial structure containing tabulated primordial spectrum + * @param index_md Input: index of mode (scalar, tensor, ...) + * @param mode Input: linear or logarithmic + * @param input Input: wavenumber in 1/Mpc (linear mode) or its logarithm (logarithmic mode) + * @param output Output: for each pair of initial conditions, primordial spectra P(k) in \f$Mpc^3\f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @return the error status + */ + +int primordial_spectrum_at_k( + struct primordial * ppm, + int index_md, + enum linear_or_logarithmic mode, + double input, + double * output /* array with argument output[index_ic1_ic2] (must be already allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_ic1,index_ic2,index_ic1_ic2; + double lnk; + int last_index; + + /** - infer ln(k) from input. In linear mode, reject negative value of input k value. */ + + if (mode == linear) { + class_test(input<=0., + ppm->error_message, + "k = %e",input); + lnk=log(input); + } + else { + lnk = input; + } + + /** - if ln(k) is not in the interpolation range, return an error, unless + we are in the case of a analytic spectrum, for which a direct computation is possible */ + + if ((lnk > ppm->lnk[ppm->lnk_size-1]) || (lnk < ppm->lnk[0])) { + + class_test(ppm->primordial_spec_type != analytic_Pk, + ppm->error_message, + "k=%e out of range [%e : %e]",exp(lnk),exp(ppm->lnk[0]),exp(ppm->lnk[ppm->lnk_size-1])); + + /* direct computation */ + + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(primordial_analytic_spectrum(ppm, + index_md, + index_ic1_ic2, + exp(lnk), + &(output[index_ic1_ic2])), + ppm->error_message, + ppm->error_message); + } + else { + output[index_ic1_ic2] = 0.; + } + } + } + + /* if mode==linear, output is already in the correct format. Otherwise, apply necessary transformation. */ + + if (mode == logarithmic) { + + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + output[index_ic1_ic2] = log(output[index_ic1_ic2]); + } + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + output[index_ic1_ic2] /= sqrt(output[index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md])]* + output[index_symmetric_matrix(index_ic2,index_ic2,ppm->ic_size[index_md])]); + } + } + } + } + } + + /** - otherwise, interpolate in the pre-computed table */ + + else { + + class_call(array_interpolate_spline( + ppm->lnk, + ppm->lnk_size, + ppm->lnpk[index_md], + ppm->ddlnpk[index_md], + ppm->ic_ic_size[index_md], + lnk, + &last_index, + output, + ppm->ic_ic_size[index_md], + ppm->error_message), + ppm->error_message, + ppm->error_message); + + /* if mode==logarithmic, output is already in the correct format. Otherwise, apply necessary transformation. */ + + if (mode == linear) { + + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + output[index_ic1_ic2]=exp(output[index_ic1_ic2]); + } + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + output[index_ic1_ic2] *= sqrt(output[index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md])]* + output[index_symmetric_matrix(index_ic2,index_ic2,ppm->ic_size[index_md])]); + } + else { + output[index_ic1_ic2] = 0.; + } + } + } + } + } + + return _SUCCESS_; + +} + +/** + * This routine initializes the primordial structure (in particular, it computes table of primordial spectrum values) + * + * @param ppr Input: pointer to precision structure (defines method and precision for all computations) + * @param ppt Input: pointer to perturbation structure (useful for knowing k_min, k_max, etc.) + * @param ppm Output: pointer to initialized primordial structure + * @return the error status + */ + +int primordial_init( + struct precision * ppr, + struct perturbs * ppt, + struct primordial * ppm + ) { + + /** Summary: */ + + /** - define local variables */ + + double k,k_min,k_max; + int index_md,index_ic1,index_ic2,index_ic1_ic2,index_k; + double pk,pk1,pk2; + double dlnk,lnpk_pivot,lnpk_minus,lnpk_plus,lnpk_minusminus,lnpk_plusplus; + /* uncomment if you use optional test below + (for correlated isocurvature modes) */ + //double cos_delta_k; + + /** - check that we really need to compute the primordial spectra */ + + if (ppt->has_perturbations == _FALSE_) { + ppm->lnk_size=0; + if (ppm->primordial_verbose > 0) + printf("No perturbations requested. Primordial module skipped.\n"); + return _SUCCESS_; + } + else { + if (ppm->primordial_verbose > 0) + printf("Computing primordial spectra"); + } + + /** - get kmin and kmax from perturbation structure. Test that they make sense. */ + + k_min = ppt->k_min; /* first value, inferred from perturbations structure */ + k_max = ppt->k_max; /* last value, inferred from perturbations structure */ + + class_test(k_min <= 0., + ppm->error_message, + "k_min negative or null: stop to avoid segmentation fault"); + + class_test(k_max <= 0., + ppm->error_message, + "k_max negative or null: stop to avoid segmentation fault"); + + class_test(ppm->k_pivot <= 0., + ppm->error_message, + "k_pivot negative or null: stop to avoid segmentation fault"); + + class_test(ppr->k_per_decade_primordial <= 0., + ppm->error_message, + "k_per_decade_primordial negative or null: stop to avoid segmentation fault"); + + class_test(ppr->k_per_decade_primordial <= _K_PER_DECADE_PRIMORDIAL_MIN_, + ppm->error_message, + "k_per_decade_primordial = %e: you ask for such a sparse sampling of the primordial spectrum that this is probably a mistake", + ppr->k_per_decade_primordial); + + /** - allocate and fill values of \f$ \ln{k}\f$'s */ + + class_call(primordial_get_lnk_list(ppm, + k_min, + k_max, + ppr->k_per_decade_primordial + ), + ppm->error_message, + ppm->error_message); + + /** - define indices and allocate tables in primordial structure */ + + class_call(primordial_indices(ppt, + ppm), + ppm->error_message, + ppm->error_message); + + /** - deal with case of analytic primordial spectra (with amplitudes, tilts, runnings, etc.) */ + + if (ppm->primordial_spec_type == analytic_Pk) { + + if (ppm->primordial_verbose > 0) + printf(" (analytic spectrum)\n"); + + class_call_except(primordial_analytic_spectrum_init(ppt, + ppm), + ppm->error_message, + ppm->error_message, + primordial_free(ppm)); + + for (index_k = 0; index_k < ppm->lnk_size; index_k++) { + + k=exp(ppm->lnk[index_k]); + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + class_call(primordial_analytic_spectrum(ppm, + index_md, + index_ic1_ic2, + k, + &pk), + ppm->error_message, + ppm->error_message); + + if (index_ic1 == index_ic2) { + + /* diagonal coefficients: ln[P(k)] */ + + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = log(pk); + } + else { + + /* non-diagonal coefficients: cosDelta(k) = P(k)_12/sqrt[P(k)_1 P(k)_2] */ + + class_call(primordial_analytic_spectrum(ppm, + index_md, + index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]), + k, + &pk1), + ppm->error_message, + ppm->error_message); + + class_call(primordial_analytic_spectrum(ppm, + index_md, + index_symmetric_matrix(index_ic2,index_ic2,ppm->ic_size[index_md]), + k, + &pk2), + ppm->error_message, + ppm->error_message); + + /* either return an error if correlation is too large... */ + /* + cos_delta_k = pk/sqrt(pk1*pk2); + class_test_except((cos_delta_k < -1.) || (cos_delta_k > 1.), + ppm->error_message, + primordial_free(ppm), + "correlation angle between IC's takes unphysical values"); + + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = cos_delta_k; + */ + + /* ... or enforce definite positive correlation matrix */ + + if (pk > sqrt(pk1*pk2)) + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = 1.; + else if (pk < -sqrt(pk1*pk2)) + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = -1.; + else + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = pk/sqrt(pk1*pk2); + + + } + } + else { + + /* non-diagonal coefficients when ic's are uncorrelated */ + + ppm->lnpk[index_md][index_k*ppm->ic_ic_size[index_md]+index_ic1_ic2] = 0.; + } + } + } + } + } + } + + /** - deal with case of inflation with given \f$V(\phi)\f$ or \f$H(\phi)\f$ */ + + else if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_H) || (ppm->primordial_spec_type == inflation_V_end)) { + + class_call(primordial_inflation_indices(ppm), + ppm->error_message, + ppm->error_message); + + if (ppm->primordial_verbose > 0) + printf(" (simulating inflation)\n"); + + class_call_except(primordial_inflation_solve_inflation(ppt,ppm,ppr), + ppm->error_message, + ppm->error_message, + primordial_free(ppm)); + + } + + /** - deal with the case of external calculation of \f$ P_k \f$*/ + + else if (ppm->primordial_spec_type == external_Pk) { + + class_test(ppt->has_scalars == _FALSE_, + ppm->error_message, + "external Pk module cannot work if you do not ask for scalar modes"); + + class_test(ppt->has_vectors == _TRUE_, + ppm->error_message, + "external Pk module cannot work if you ask for vector modes"); + + class_test(ppt->has_bi == _TRUE_ || ppt->has_cdi == _TRUE_ || ppt->has_nid == _TRUE_ || ppt->has_niv == _TRUE_, + ppm->error_message, + "external Pk module cannot work if you ask for isocurvature modes (but that could be implemented easily in the future!)"); + + if (ppm->primordial_verbose > 0) + printf(" (Pk calculated externally)\n"); + + class_call_except(primordial_external_spectrum_init(ppt,ppm), + ppm->error_message, + ppm->error_message, + primordial_free(ppm)); + } + + else { + + class_test(0==0, + ppm->error_message, + "primordial spectrum type not recognized"); + + } + + /** - compute second derivative of each \f$ \ln{P_k} \f$ versus lnk with spline, in view of interpolation */ + + for (index_md = 0; index_md < ppm->md_size; index_md++) { + + class_call(array_spline_table_lines(ppm->lnk, + ppm->lnk_size, + ppm->lnpk[index_md], + ppm->ic_ic_size[index_md], + ppm->ddlnpk[index_md], + _SPLINE_EST_DERIV_, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + } + + /** - derive spectral parameters from numerically computed spectra + (not used by the rest of the code, but useful to keep in memory for several types of investigation) */ + + if (ppm->primordial_spec_type != analytic_Pk) { + + dlnk = log(10.)/ppr->k_per_decade_primordial; + + if (ppt->has_scalars == _TRUE_) { + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_scalars, + logarithmic, + log(ppm->k_pivot), + &lnpk_pivot), + ppm->error_message, + ppm->error_message); + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_scalars, + logarithmic, + log(ppm->k_pivot)+dlnk, + + &lnpk_plus), + ppm->error_message, + ppm->error_message); + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_scalars, + logarithmic, + log(ppm->k_pivot)-dlnk, + &lnpk_minus), + ppm->error_message, + ppm->error_message); + + ppm->A_s = exp(lnpk_pivot); + ppm->n_s = (lnpk_plus-lnpk_minus)/(2.*dlnk)+1.; + ppm->alpha_s = (lnpk_plus-2.*lnpk_pivot+lnpk_minus)/pow(dlnk,2); + + /** - expression for alpha_s comes from: + + `ns_2 = (lnpk_plus-lnpk_pivot)/(dlnk)+1` + + `ns_1 = (lnpk_pivot-lnpk_minus)/(dlnk)+1` + + `alpha_s = dns/dlnk = (ns_2-ns_1)/dlnk = (lnpk_plus-lnpk_pivot-lnpk_pivot+lnpk_minus)/(dlnk)/(dlnk)` + + **/ + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_scalars, + logarithmic, + log(ppm->k_pivot)+2.*dlnk, + + &lnpk_plusplus), + ppm->error_message, + ppm->error_message); + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_scalars, + logarithmic, + log(ppm->k_pivot)-2.*dlnk, + &lnpk_minusminus), + ppm->error_message, + ppm->error_message); + + /** - expression for beta_s: + + `ppm->beta_s = (alpha_plus-alpha_minus)/dlnk = (lnpk_plusplus-2.*lnpk_plus+lnpk_pivot - + (lnpk_pivot-2.*lnpk_minus+lnpk_minusminus)/pow(dlnk,3)` + **/ + + /* Simplification of the beta_s expression: */ + + ppm->beta_s = (lnpk_plusplus-2.*lnpk_plus+2.*lnpk_minus-lnpk_minusminus)/pow(dlnk,3); + + if (ppm->primordial_verbose > 0) + printf(" -> A_s=%g n_s=%g alpha_s=%g\n",ppm->A_s,ppm->n_s,ppm->alpha_s); + + } + + if (ppt->has_tensors == _TRUE_) { + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_tensors, + logarithmic, + log(ppm->k_pivot), + &lnpk_pivot), + ppm->error_message, + ppm->error_message); + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_tensors, + logarithmic, + log(ppm->k_pivot)+dlnk, + &lnpk_plus), + ppm->error_message, + ppm->error_message); + + class_call(primordial_spectrum_at_k(ppm, + ppt->index_md_tensors, + logarithmic, + log(ppm->k_pivot)-dlnk, + &lnpk_minus), + ppm->error_message, + ppm->error_message); + + ppm->r = exp(lnpk_pivot)/ppm->A_s; + ppm->n_t = (lnpk_plus-lnpk_minus)/(2.*dlnk); + ppm->alpha_t = (lnpk_plus-2.*lnpk_pivot+lnpk_minus)/pow(dlnk,2); + + if (ppm->primordial_verbose > 0) + printf(" -> r=%g n_t=%g alpha_t=%g\n",ppm->r,ppm->n_t,ppm->alpha_t); + + } + + } + + return _SUCCESS_; + +} + +/** + * This routine frees all the memory space allocated by primordial_init(). + * + * To be called at the end of each run. + * + * @param ppm Input: pointer to primordial structure (which fields must be freed) + * @return the error status + */ + +int primordial_free( + struct primordial * ppm + ) { + + int index_md; + + if (ppm->lnk_size > 0) { + + if (ppm->primordial_spec_type == analytic_Pk) { + for (index_md = 0; index_md < ppm->md_size; index_md++) { + free(ppm->amplitude[index_md]); + free(ppm->tilt[index_md]); + free(ppm->running[index_md]); + } + free(ppm->amplitude); + free(ppm->tilt); + free(ppm->running); + } + else if (ppm->primordial_spec_type == external_Pk) { + free(ppm->command); + } + + for (index_md = 0; index_md < ppm->md_size; index_md++) { + free(ppm->lnpk[index_md]); + free(ppm->ddlnpk[index_md]); + free(ppm->is_non_zero[index_md]); + } + + free(ppm->lnpk); + free(ppm->ddlnpk); + free(ppm->is_non_zero); + free(ppm->ic_size); + free(ppm->ic_ic_size); + + free(ppm->lnk); + + } + + return _SUCCESS_; +} + +/** + * This routine defines indices and allocates tables in the primordial structure + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @return the error status + */ + +int primordial_indices( + struct perturbs * ppt, + struct primordial * ppm + ) { + + int index_md; + + ppm->md_size = ppt->md_size; + + class_alloc(ppm->lnpk,ppt->md_size*sizeof(double*),ppm->error_message); + + class_alloc(ppm->ddlnpk,ppt->md_size*sizeof(double*),ppm->error_message); + + class_alloc(ppm->ic_size,ppt->md_size*sizeof(int*),ppm->error_message); + + class_alloc(ppm->ic_ic_size,ppt->md_size*sizeof(int*),ppm->error_message); + + class_alloc(ppm->is_non_zero,ppm->md_size*sizeof(short *),ppm->error_message); + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + ppm->ic_size[index_md] = ppt->ic_size[index_md]; + + ppm->ic_ic_size[index_md] = (ppm->ic_size[index_md]*(ppm->ic_size[index_md]+1))/2; + + class_alloc(ppm->lnpk[index_md], + ppm->lnk_size*ppm->ic_ic_size[index_md]*sizeof(double), + ppm->error_message); + + class_alloc(ppm->ddlnpk[index_md], + ppm->lnk_size*ppm->ic_ic_size[index_md]*sizeof(double), + ppm->error_message); + + class_alloc(ppm->is_non_zero[index_md], + ppm->ic_ic_size[index_md]*sizeof(short), + ppm->error_message); + + + } + + return _SUCCESS_; + +} + +/** + * This routine allocates and fills the list of wavenumbers k + * + * + * @param ppm Input/output: pointer to primordial structure + * @param kmin Input: first value + * @param kmax Input: last value that we should encompass + * @param k_per_decade Input: number of k per decade + * @return the error status + */ + +int primordial_get_lnk_list( + struct primordial * ppm, + double kmin, + double kmax, + double k_per_decade + ) { + + int i; + + class_test((kmin <= 0.) || (kmax <= kmin), + ppm->error_message, + "inconsistent values of kmin=%e, kmax=%e",kmin,kmax); + + ppm->lnk_size = (int)(log(kmax/kmin)/log(10.)*k_per_decade) + 2; + + class_alloc(ppm->lnk,ppm->lnk_size*sizeof(double),ppm->error_message); + + for (i=0; ilnk_size; i++) + ppm->lnk[i]=log(kmin)+i*log(10.)/k_per_decade; + + return _SUCCESS_; + +} + +/** + * This routine interprets and stores in a condensed form the input parameters + * in the case of a simple analytic spectra with amplitudes, tilts, runnings, + * in such way that later on, the spectrum can be obtained by a quick call to + * the routine primordial_analytic_spectrum(() + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @return the error status + */ + +int primordial_analytic_spectrum_init( + struct perturbs * ppt, + struct primordial * ppm + ) { + + int index_md,index_ic1,index_ic2; + int index_ic1_ic2,index_ic1_ic1,index_ic2_ic2; + double one_amplitude=0.; + double one_tilt=0.; + double one_running=0.; + double one_correlation=0.; + + class_alloc(ppm->amplitude, + ppm->md_size*sizeof(double *), + ppm->error_message); + + class_alloc(ppm->tilt, + ppm->md_size*sizeof(double *), + ppm->error_message); + + class_alloc(ppm->running, + ppm->md_size*sizeof(double *), + ppm->error_message); + + for (index_md = 0; index_md < ppm->md_size; index_md++) { + + class_alloc(ppm->amplitude[index_md], + ppm->ic_ic_size[index_md]*sizeof(double), + ppm->error_message); + + class_alloc(ppm->tilt[index_md], + ppm->ic_ic_size[index_md]*sizeof(double), + ppm->error_message); + + class_alloc(ppm->running[index_md], + ppm->ic_ic_size[index_md]*sizeof(double), + ppm->error_message); + + } + + for (index_md = 0; index_md < ppm->md_size; index_md++) { + + /* diagonal coefficients */ + + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + + if (_scalars_) { + + if ((ppt->has_ad == _TRUE_) && (index_ic1 == ppt->index_ic_ad)) { + one_amplitude = ppm->A_s; + one_tilt = ppm->n_s; + one_running = ppm->alpha_s; + } + + if ((ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_bi)) { + one_amplitude = ppm->A_s*ppm->f_bi*ppm->f_bi; + one_tilt = ppm->n_bi; + one_running = ppm->alpha_bi; + } + + if ((ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_cdi)) { + one_amplitude = ppm->A_s*ppm->f_cdi*ppm->f_cdi; + one_tilt = ppm->n_cdi; + one_running = ppm->alpha_cdi; + } + + if ((ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_nid)) { + one_amplitude = ppm->A_s*ppm->f_nid*ppm->f_nid; + one_tilt = ppm->n_nid; + one_running = ppm->alpha_nid; + } + + if ((ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_niv)) { + one_amplitude = ppm->A_s*ppm->f_niv*ppm->f_niv; + one_tilt = ppm->n_niv; + one_running = ppm->alpha_niv; + } + } + + if (_tensors_) { + + if (index_ic1 == ppt->index_ic_ten) { + one_amplitude = ppm->A_s*ppm->r; + one_tilt = ppm->n_t+1.; /* +1 to match usual definition of n_t (equivalent to n_s-1) */ + one_running = ppm->alpha_t; + } + } + + class_test(one_amplitude <= 0., + ppm->error_message, + "inconsistent input for primordial amplitude: %g for index_md=%d, index_ic=%d\n", + one_amplitude,index_md,index_ic1); + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + + ppm->is_non_zero[index_md][index_ic1_ic2] = _TRUE_; + ppm->amplitude[index_md][index_ic1_ic2] = one_amplitude; + ppm->tilt[index_md][index_ic1_ic2] = one_tilt; + ppm->running[index_md][index_ic1_ic2] = one_running; + } + + /* non-diagonal coefficients */ + + for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + + if (_scalars_) { + + if ((ppt->has_ad == _TRUE_) && (ppt->has_bi == _TRUE_) && + (((index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) || + ((index_ic1 == ppt->index_ic_ad) && (index_ic1 == ppt->index_ic_bi)))) { + one_correlation = ppm->c_ad_bi; + one_tilt = ppm->n_ad_bi; + one_running = ppm->alpha_ad_bi; + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (((index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) || + ((index_ic2 == ppt->index_ic_ad) && (index_ic1 == ppt->index_ic_cdi)))) { + one_correlation = ppm->c_ad_cdi; + one_tilt = ppm->n_ad_cdi; + one_running = ppm->alpha_ad_cdi; + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && + (((index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) || + ((index_ic2 == ppt->index_ic_ad) && (index_ic1 == ppt->index_ic_nid)))) { + one_correlation = ppm->c_ad_nid; + one_tilt = ppm->n_ad_nid; + one_running = ppm->alpha_ad_nid; + } + + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && + (((index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) || + ((index_ic2 == ppt->index_ic_ad) && (index_ic1 == ppt->index_ic_niv)))) { + one_correlation = ppm->c_ad_niv; + one_tilt = ppm->n_ad_niv; + one_running = ppm->alpha_ad_niv; + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && + (((index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) || + ((index_ic2 == ppt->index_ic_bi) && (index_ic1 == ppt->index_ic_cdi)))) { + one_correlation = ppm->c_bi_cdi; + one_tilt = ppm->n_bi_cdi; + one_running = ppm->alpha_bi_cdi; + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (((index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) || + ((index_ic2 == ppt->index_ic_bi) && (index_ic1 == ppt->index_ic_nid)))) { + one_correlation = ppm->c_bi_nid; + one_tilt = ppm->n_bi_nid; + one_running = ppm->alpha_bi_nid; + } + + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (((index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) || + ((index_ic2 == ppt->index_ic_bi) && (index_ic1 == ppt->index_ic_niv)))) { + one_correlation = ppm->c_bi_niv; + one_tilt = ppm->n_bi_niv; + one_running = ppm->alpha_bi_niv; + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && + (((index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) || + ((index_ic2 == ppt->index_ic_cdi) && (index_ic1 == ppt->index_ic_nid)))) { + one_correlation = ppm->c_cdi_nid; + one_tilt = ppm->n_cdi_nid; + one_running = ppm->alpha_cdi_nid; + } + + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && + (((index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) || + ((index_ic2 == ppt->index_ic_cdi) && (index_ic1 == ppt->index_ic_niv)))) { + one_correlation = ppm->c_cdi_niv; + one_tilt = ppm->n_cdi_niv; + one_running = ppm->alpha_cdi_niv; + } + + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && + (((index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) || + ((index_ic2 == ppt->index_ic_nid) && (index_ic1 == ppt->index_ic_niv)))) { + one_correlation = ppm->c_nid_niv; + one_tilt = ppm->n_nid_niv; + one_running = ppm->alpha_nid_niv; + } + + } + + class_test((one_correlation < -1) || (one_correlation > 1), + ppm->error_message, + "inconsistent input for isocurvature cross-correlation\n"); + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,ppm->ic_size[index_md]); + + if (one_correlation == 0.) { + ppm->is_non_zero[index_md][index_ic1_ic2] = _FALSE_; + ppm->amplitude[index_md][index_ic1_ic2] = 0.; + ppm->tilt[index_md][index_ic1_ic2] = 0.; + ppm->running[index_md][index_ic1_ic2] = 0.; + } + else { + ppm->is_non_zero[index_md][index_ic1_ic2] = _TRUE_; + ppm->amplitude[index_md][index_ic1_ic2] = + sqrt(ppm->amplitude[index_md][index_ic1_ic1]* + ppm->amplitude[index_md][index_ic2_ic2])* + one_correlation; + ppm->tilt[index_md][index_ic1_ic2] = + 0.5*(ppm->tilt[index_md][index_ic1_ic1] + +ppm->tilt[index_md][index_ic2_ic2]) + + one_tilt; + ppm->running[index_md][index_ic1_ic2] = + 0.5*(ppm->running[index_md][index_ic1_ic1] + +ppm->running[index_md][index_ic2_ic2]) + + one_running; + } + } + } + } + + return _SUCCESS_; + +} + +/** + * This routine returns the primordial spectrum in the simple analytic case with + * amplitudes, tilts, runnings, for each mode (scalar/tensor...), + * pair of initial conditions, and wavenumber. + * + * @param ppm Input/output: pointer to primordial structure + * @param index_md Input: index of mode (scalar, tensor, ...) + * @param index_ic1_ic2 Input: pair of initial conditions (ic1, ic2) + * @param k Input: wavenumber in same units as pivot scale, i.e. in 1/Mpc + * @param pk Output: primordial power spectrum A (k/k_pivot)^(n+...) + * @return the error status + */ + +int primordial_analytic_spectrum( + struct primordial * ppm, + int index_md, + int index_ic1_ic2, + double k, + double * pk + ) { + + if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + *pk = ppm->amplitude[index_md][index_ic1_ic2] + *exp((ppm->tilt[index_md][index_ic1_ic2]-1.)*log(k/ppm->k_pivot) + + 0.5 * ppm->running[index_md][index_ic1_ic2] * pow(log(k/ppm->k_pivot), 2.)); + + } + else { + *pk = 0.; + } + + return _SUCCESS_; + +} + +/** + * This routine encodes the inflaton scalar potential + * + * @param ppm Input: pointer to primordial structure + * @param phi Input: background inflaton field value in units of Mp + * @param V Output: inflaton potential in units of \f$ Mp^4\f$ + * @param dV Output: first derivative of inflaton potential wrt the field + * @param ddV Output: second derivative of inflaton potential wrt the field + * @return the error status + */ + +int primordial_inflation_potential( + struct primordial * ppm, + double phi, + double * V, + double * dV, + double * ddV + ) { + + double e,de,dde,mu,dmu,ddmu,l,dl,ddl,p,dp,ddp; + + switch (ppm->potential) { + + /* V(phi)=polynomial in phi */ + case polynomial: + + *V = ppm->V0+phi*ppm->V1+pow(phi,2)/2.*ppm->V2+pow(phi,3)/6.*ppm->V3+pow(phi,4)/24.*ppm->V4; + *dV = ppm->V1+phi*ppm->V2+pow(phi,2)/2.*ppm->V3+pow(phi,3)/6.*ppm->V4; + *ddV = ppm->V2+phi*ppm->V3+pow(phi,2)/2.*ppm->V4; + break; + + /* V(phi) = Lambda^4(1+cos(phi/f)) = V0 (1+cos(phi/V1)) */ + case natural: + + *V = ppm->V0*(1.+cos(phi/ppm->V1)); + *dV = -ppm->V0/ppm->V1*sin(phi/ppm->V1); + *ddV = -ppm->V0/ppm->V1/ppm->V1*cos(phi/ppm->V1); + break; + + /* Higgs inflation from arXiv:1403.6078 */ + case higgs_inflation: + + // correspondence with 1403.6078: + // V0 = b + // V1 = ksi + // V2 = kappa + // V3 = delta_lambda + // mu = bar(mu)/M_P + // phi = -chi/M_P + + e = exp(2./sqrt(6.)*sqrt(8.*_PI_)*phi); + de = 2./sqrt(6.)*sqrt(8.*_PI_)*e; + dde = 2./3. * 8.*_PI_ * e; + + mu = pow(1.-e,0.5); + dmu = -0.5*de*pow(1.-e,-0.5); + ddmu = -0.5*dde*pow(1.-e,-0.5)-0.25*de*de*pow(1.-e,-1.5); + + l = log(mu/ppm->V2); + dl = dmu/mu; + ddl = ddmu/mu - dl*dl; + + p = 1./16. + ppm->V3/ppm->V0 + l*l; + dp = 2.*dl*l; + ddp = 2.*ddl*l+2.*dl*dl; + + *V = ppm->V0/4./pow(8.*_PI_,2)/ppm->V1/ppm->V1*p*pow(mu,4); + *dV = ppm->V0/4./pow(8.*_PI_,2)/ppm->V1/ppm->V1*(dp*pow(mu,4)+4.*p*dmu*pow(mu,3)); + *ddV = ppm->V0/4./pow(8.*_PI_,2)/ppm->V1/ppm->V1*(ddp*pow(mu,4)+8.*dp*dmu*pow(mu,3)+4.*p*ddmu*pow(mu,3)+12.*p*pow(dmu*mu,2)); + + //fprintf(stderr,"%e %e %e\n",*V,p,mu); + + break; + + /* code here other shapes */ + + default: + class_stop(ppm->error_message,"ppm->potential=%d different from all known cases",ppm->potential); + break; + } + + return _SUCCESS_; +} + +/** + * This routine encodes the function \f$ H(\phi)\f$ + * + * @param ppm Input: pointer to primordial structure + * @param phi Input: background inflaton field value in units of Mp + * @param H Output: Hubble parameters in units of Mp + * @param dH Output: \f$ dH / d\phi \f$ + * @param ddH Output: \f$ d^2H / d\phi^2 \f$ + * @param dddH Output: \f$ d^3H / d\phi^3 \f$ + * @return the error status + */ + +int primordial_inflation_hubble( + struct primordial * ppm, + double phi, + double * H, + double * dH, + double * ddH, + double * dddH + ) { + + *H = ppm->H0 + phi*ppm->H1 + pow(phi,2)/2.*ppm->H2 + pow(phi,3)/6.*ppm->H3 + pow(phi,4)/24.*ppm->H4; + *dH = ppm->H1 + phi*ppm->H2 + pow(phi,2)/2.*ppm->H3 + pow(phi,3)/6.*ppm->H4; + *ddH = ppm->H2 + phi*ppm->H3 + pow(phi,2)/2.*ppm->H4; + *dddH = ppm->H3 + phi*ppm->H4; + + return _SUCCESS_; + +} + +/** + * This routine defines indices used by the inflation simulator + * + * @param ppm Input/output: pointer to primordial structure + * @return the error status + */ +int primordial_inflation_indices( + struct primordial * ppm + ) { + + int index_in; + + index_in = 0; + + /* indices for background quantities */ + ppm->index_in_a = index_in; + index_in ++; + ppm->index_in_phi = index_in; + index_in ++; + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) { + ppm->index_in_dphi = index_in; + index_in ++; + } + + /* size of background vector */ + ppm->in_bg_size = index_in; + + /* indices for perturbations */ + ppm->index_in_ksi_re = index_in; + index_in ++; + ppm->index_in_ksi_im = index_in; + index_in ++; + ppm->index_in_dksi_re = index_in; + index_in ++; + ppm->index_in_dksi_im = index_in; + index_in ++; + ppm->index_in_ah_re = index_in; + index_in ++; + ppm->index_in_ah_im = index_in; + index_in ++; + ppm->index_in_dah_re = index_in; + index_in ++; + ppm->index_in_dah_im = index_in; + index_in ++; + + /* size of perturbation vector */ + ppm->in_size = index_in; + + return _SUCCESS_; +} + +/** + * Main routine of inflation simulator. Its goal is to check the + * background evolution before and after the pivot value + * phi=phi_pivot, and then, if this evolution is suitable, to call the + * routine primordial_inflation_spectra(). + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @return the error status + */ + +int primordial_inflation_solve_inflation( + struct perturbs * ppt, + struct primordial * ppm, + struct precision *ppr + ) { + /** Summary: */ + /** - define local variables */ + double * y; + double * y_ini; + double * dy; + double a_pivot; + double a_try; + double H_pivot; + double H_try; + double phi_try; + double dphidt_pivot; + double dphidt_try; + double aH_ini,aH_end; + double k_max,k_min; + int counter; + double dH,ddH,dddH; + + /** - allocate vectors for background/perturbed quantities */ + class_alloc(y,ppm->in_size*sizeof(double),ppm->error_message); + class_alloc(y_ini,ppm->in_size*sizeof(double),ppm->error_message); + class_alloc(dy,ppm->in_size*sizeof(double),ppm->error_message); + + /** - eventually, needs first to find phi_pivot */ + if (ppm->primordial_spec_type == inflation_V_end) { + + class_call(primordial_inflation_find_phi_pivot(ppm,ppr,y,dy), + ppm->error_message, + ppm->error_message); + + } + else { + ppm->phi_pivot = 0.; + } + + // uncomment these lines if for checking, you want first-order slow-roll predictions + /* + if (ppm->primordial_verbose>0) { + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) { + double V,dV,ddV; + class_call(primordial_inflation_check_potential(ppm,ppm->phi_pivot,&V,&dV,&ddV), + ppm->error_message, + ppm->error_message); + fprintf(stdout," -> 1st-order slow-roll prediction for A_s: %g\n",128.*_PI_/3.*pow(V,3)/pow(dV,2)); + fprintf(stdout," -> 1st-order slow-roll prediction for T/S: %g\n",pow(dV/V,2)/_PI_); + fprintf(stdout," -> 1st-order slow-roll prediction for A_T: %g\n",pow(dV/V,2)/_PI_*128.*_PI_/3.*pow(V,3)/pow(dV,2)); + fprintf(stdout," -> 1st-order slow-roll prediction for n_s: %g\n",1.-6./16./_PI_*pow(dV/V,2)+2./8./_PI_*(ddV/V)); + fprintf(stdout," -> 1st-order slow-roll prediction for n_t: %g\n",-2./16./_PI_*pow(dV/V,2)); + } + } + */ + + /** - compute H_pivot at phi_pivot */ + switch (ppm->primordial_spec_type) { + + case inflation_V: + case inflation_V_end: + + /** - check positivity and negative slope of potential in field pivot + value, and find value of phi_dot and H for field's pivot value, + assuming slow-roll attractor solution has been reached. If no + solution, code will stop there. */ + + if (ppm->primordial_verbose > 1) + printf(" (search attractor at pivot)\n"); + + class_call_except(primordial_inflation_find_attractor(ppm, + ppr, + ppm->phi_pivot, + ppr->primordial_inflation_attractor_precision_pivot, + y, + dy, + &H_pivot, + &dphidt_pivot), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + break; + + case inflation_H: + + /** - check positivity and negative slope of \f$ H(\phi)\f$ in field pivot + value, and get H_pivot */ + + class_call_except(primordial_inflation_check_hubble(ppm, + ppm->phi_pivot, + &H_pivot, + &dH, + &ddH, + &dddH), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + break; + + default: + free(y);free(y_ini);free(dy); + class_stop(ppm->error_message,"ppm->primordial_spec_type=%d different from possible relevant cases",ppm->primordial_spec_type); + break; + } + + /** - find a_pivot, value of scale factor when k_pivot crosses horizon while phi=phi_pivot */ + + a_pivot = ppm->k_pivot/H_pivot; + + /** - integrate background solution starting from phi_pivot and until + k_max>>aH. This ensures that the inflationary model considered + here is valid and that the primordial spectrum can be + computed. Otherwise, if slow-roll brakes too early, model is not + suitable and run stops. */ + + if (ppm->primordial_verbose > 1) + printf(" (check inflation duration after phi_pivot=%e)\n",ppm->phi_pivot); + + k_max = exp(ppm->lnk[ppm->lnk_size-1]); + aH_end = k_max/ppr->primordial_inflation_ratio_max; + + y[ppm->index_in_a] = a_pivot; + y[ppm->index_in_phi] = ppm->phi_pivot; + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) + y[ppm->index_in_dphi] = a_pivot*dphidt_pivot; + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + aH_end, + _TRUE_, + forward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + /* we need to do the opposite: to check that there is an initial + time such that k_min << (aH)_ini. A guess is made by integrating + backward in time. This can be done exactly for inflation_H, or + only approximately for inflation_V (using the first-order + approximation to the attractor inflationary solution). However + this approximation is irrelevant because nevertheless, later on, + we compute the attractor solution at the initial time with high + accuracy, and then we integrate the background equations forward + in time. Hence the approximation made here introduces zero + mistake on the final result. It is just a way to find quickly a + reasonable initial phi value. In the inflation_V case, if the + exact forward integration reveals that the guess was not good + (i.e. does not correspond to "early enough"), we iterate over + sequences of backward/forward integration, until a correct time is + found. For potential such that no solution exists (no long-enough + slow-roll period before the pivot scale), the run stops. */ + + if (ppm->primordial_verbose > 1) + printf(" (check inflation duration before pivot)\n"); + + k_min = exp(ppm->lnk[0]); + aH_ini = k_min/ppr->primordial_inflation_ratio_min; + + switch (ppm->primordial_spec_type) { + + case inflation_V: + case inflation_V_end: + + counter = 0; + + y[ppm->index_in_a] = a_pivot; + y[ppm->index_in_phi] = ppm->phi_pivot; + + do { + + /* counter to avoid infinite loop */ + counter ++; + + class_test_except(counter >= ppr->primordial_inflation_phi_ini_maxit, + ppm->error_message, + free(y);free(y_ini);free(dy), + "when searching for an initial value of phi just before observable inflation takes place, could not converge after %d iterations. The potential does not allow eough inflationary e-folds before reaching the pivot scale", + counter); + + /* try to find a value phi_try such that + aH=aH_ini*(ppr->primordial_inflation_aH_ini_target) (default: + aH_ini*0.9). But this is using the approximate backward + solution. So, anyway, we will check using the exact forward + solution that at this phi_try, we really have aH < aH_ini; if + this is not the case, we will iterate until a correct phi_try + is found. */ + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + aH_ini*ppr->primordial_inflation_aH_ini_target, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + phi_try = y[ppm->index_in_phi]; + + /* in inflation_V case, find the accurate attractor solution for + phi_ini', and then the correct value of a_ini, and finally of + dphi/dtau_ini */ + + /* find dphi/dt_ini (unlike dphi/dtau_ini, this does not depend on normalization of a) */ + class_call_except(primordial_inflation_find_attractor(ppm, + ppr, + phi_try, + ppr->primordial_inflation_attractor_precision_initial, + y, + dy, + &H_try, + &dphidt_try), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + /* we need to normalize a properly so that a=a_pivot when + phi=phi_pivot. To do so, we evolve starting arbitrarily from + a_ini=1, and then we rescale a_ini appropriately. */ + + y[ppm->index_in_a] = 1.; + y[ppm->index_in_phi] = phi_try; + y[ppm->index_in_dphi] = y[ppm->index_in_a]*dphidt_try; // dphi/dtau = a dphi/dt + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _phi_, + ppm->phi_pivot, + _TRUE_, + forward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + /* now impose the correct a_ini */ + a_try = a_pivot/y[ppm->index_in_a]; + + /* in case another iteration will be needed, set a new starting point for the routine primordial_inflation_evolve_background(...,backward) */ + y[ppm->index_in_a] = a_try; + y[ppm->index_in_phi] = phi_try; + + } while (a_try*H_try > aH_ini); + + y_ini[ppm->index_in_a] = a_try; + y_ini[ppm->index_in_phi] = phi_try; + y_ini[ppm->index_in_dphi] = y_ini[ppm->index_in_a]*dphidt_try; // dphi/dtau = a dphi/dt + + break; + + case inflation_H: + + y[ppm->index_in_a] = a_pivot; + y[ppm->index_in_phi] = ppm->phi_pivot; + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + aH_ini, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + y_ini[ppm->index_in_a] = y[ppm->index_in_a]; + y_ini[ppm->index_in_phi] = y[ppm->index_in_phi]; + + break; + + default: + free(y);free(y_ini);free(dy); + class_stop(ppm->error_message,"ppm->primordial_spec_type=%d different from possible relevant cases",ppm->primordial_spec_type); + break; + } + + /** - starting from this time, i.e. from y_ini[ ], we run the routine + which takes care of computing the primordial spectrum. */ + + if (ppm->primordial_verbose > 1) + printf(" (compute spectrum)\n"); + + if (ppm->behavior == numerical) { + + class_call_except(primordial_inflation_spectra(ppt, + ppm, + ppr, + y_ini), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + } + else if (ppm->behavior == analytical) { + + class_call_except(primordial_inflation_analytic_spectra(ppt, + ppm, + ppr, + y_ini), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + } + else { + class_stop(ppm->error_message,"Uncomprehensible value of the flag ppm->behavior=%d",ppm->behavior); + } + + /** - before ending, we want to compute and store the values of \f$ \phi \f$ + corresponding to k=aH for k_min and k_max */ + + y[ppm->index_in_a] = y_ini[ppm->index_in_a]; + y[ppm->index_in_phi] = y_ini[ppm->index_in_phi]; + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) + y[ppm->index_in_dphi] = y_ini[ppm->index_in_dphi]; + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + k_min, + _FALSE_, + forward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + ppm->phi_min=y[ppm->index_in_phi]; + + class_call_except(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + k_max, + _FALSE_, + forward, + conformal), + ppm->error_message, + ppm->error_message, + free(y);free(y_ini);free(dy)); + + ppm->phi_max=y[ppm->index_in_phi]; + + if (ppm->primordial_verbose > 1) + printf(" (observable power spectrum goes from %e to %e)\n", + ppm->phi_min, + ppm->phi_max); + + /** - finally, we can de-allocate */ + + free(y); + free(y_ini); + free(dy); + + return _SUCCESS_; +} + +/** + * Routine for the computation of an analytic apporoximation to the + * the primordial spectrum. In general, should be used only for + * comparing with exact numerical computation performed by + * primordial_inflation_spectra(). + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param y_ini Input: initial conditions for the vector of background/perturbations, already allocated and filled + * @return the error status + */ + +int primordial_inflation_analytic_spectra( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini + ) { + double * y; + double * dy; + int index_k; + double k,phi_k; + double curvature,tensors; + double V,dV,ddV; + + /** Summary */ + /** - allocate vectors for background/perturbed quantities */ + class_alloc(y,ppm->in_size*sizeof(double),ppm->error_message); + class_alloc(dy,ppm->in_size*sizeof(double),ppm->error_message); + + /** - initialize the background part of the running vector */ + y[ppm->index_in_a] = y_ini[ppm->index_in_a]; + y[ppm->index_in_phi] = y_ini[ppm->index_in_phi]; + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) + y[ppm->index_in_dphi] = y_ini[ppm->index_in_dphi]; + + /** - loop over Fourier wavenumbers */ + for (index_k=0; index_k < ppm->lnk_size; index_k++) { + + k = exp(ppm->lnk[index_k]); + + /* evolve background until k=aH is reached */ + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + k, + _FALSE_, + forward, + conformal), + ppm->error_message, + ppm->error_message); + + /** - read value of phi at time when k=aH */ + phi_k = y[ppm->index_in_phi]; + + /** - get potential (and its derivatives) at this value */ + class_call(primordial_inflation_check_potential(ppm,phi_k,&V,&dV,&ddV), + ppm->error_message, + ppm->error_message); + + /** - calculate the analytic slow-roll formula for the spectra */ + curvature = 128.*_PI_/3.*pow(V,3)/pow(dV,2); + tensors = pow(dV/V,2)/_PI_*128.*_PI_/3.*pow(V,3)/pow(dV,2); + + /** - store the obtained result for curvature and tensor perturbations */ + ppm->lnpk[ppt->index_md_scalars][index_k] = log(curvature); + ppm->lnpk[ppt->index_md_tensors][index_k] = log(tensors); + } + + ppm->is_non_zero[ppt->index_md_scalars][ppt->index_ic_ad] = _TRUE_; + ppm->is_non_zero[ppt->index_md_tensors][ppt->index_ic_ten] = _TRUE_; + + return _SUCCESS_; +} + +/** + * Routine with a loop over wavenumbers for the computation of the primordial + * spectrum. For each wavenumber it calls primordial_inflation_one_wavenumber() + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param y_ini Input: initial conditions for the vector of background/perturbations, already allocated and filled + * @return the error status + */ + +int primordial_inflation_spectra( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini + ) { + int index_k; + + /* number of threads (always one if no openmp) */ + int number_of_threads=1; + /* index of the thread (always 0 if no openmp) */ + int thread=0; + + + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" just after leaving the + parallel region. */ + int abort; + +#ifdef _OPENMP + /* instrumentation times */ + double tstart, tstop, tspent; +#endif + +#ifdef _OPENMP + +#pragma omp parallel + { + number_of_threads = omp_get_num_threads(); + } +#endif + + abort = _FALSE_; + +#pragma omp parallel shared(ppt,ppm,ppr,abort,y_ini) private(index_k,thread,tspent,tstart,tstop) num_threads(number_of_threads) + + { + +#ifdef _OPENMP + thread = omp_get_thread_num(); + tspent=0.; +#endif + +#pragma omp for schedule (dynamic) + + /* loop over Fourier wavenumbers */ + for (index_k=0; index_k < ppm->lnk_size; index_k++) { + +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif + + class_call_parallel(primordial_inflation_one_wavenumber(ppt,ppm,ppr,y_ini,index_k), + ppm->error_message, + ppm->error_message); + +#ifdef _OPENMP + tstop = omp_get_wtime(); + + tspent += tstop-tstart; +#endif + + } + +#ifdef _OPENMP + if (ppm->primordial_verbose>1) + printf("In %s: time spent in parallel region (loop over k's) = %e s for thread %d\n", + __func__,tspent,thread); +#endif + + } /* end of parallel zone */ + + if (abort == _TRUE_) return _FAILURE_; + + ppm->is_non_zero[ppt->index_md_scalars][ppt->index_ic_ad] = _TRUE_; + ppm->is_non_zero[ppt->index_md_tensors][ppt->index_ic_ten] = _TRUE_; + + return _SUCCESS_; + +} + +/** + * Routine coordinating the computation of the primordial + * spectrum for one wavenumber. It calls primordial_inflation_one_k() to + * integrate the perturbation equations, and then it stores the result + * for the scalar/tensor spectra. + * + * @param ppt Input: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param y_ini Input: initial conditions for the vector of background/perturbations, already allocated and filled + * @param index_k Input: index of wavenumber to be considered + * @return the error status + */ + +int primordial_inflation_one_wavenumber( + struct perturbs * ppt, + struct primordial * ppm, + struct precision * ppr, + double * y_ini, + int index_k + ) { + double k; + double curvature,tensors; + double * y; + double * dy; + + k = exp(ppm->lnk[index_k]); + + /** Summary */ + /** - allocate vectors for background/perturbed quantities */ + class_alloc(y,ppm->in_size*sizeof(double),ppm->error_message); + class_alloc(dy,ppm->in_size*sizeof(double),ppm->error_message); + + /** - initialize the background part of the running vector */ + y[ppm->index_in_a] = y_ini[ppm->index_in_a]; + y[ppm->index_in_phi] = y_ini[ppm->index_in_phi]; + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) + y[ppm->index_in_dphi] = y_ini[ppm->index_in_dphi]; + + /** - evolve the background until the relevant initial time for + integrating perturbations */ + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + k/ppr->primordial_inflation_ratio_min, + _FALSE_, + forward, + conformal), + ppm->error_message, + ppm->error_message); + + /** - evolve the background/perturbation equations from this time and + until some time after Horizon crossing */ + class_call(primordial_inflation_one_k(ppm, + ppr, + k, + y, + dy, + &curvature, + &tensors), + ppm->error_message, + ppm->error_message); + + free(y); + free(dy); + + class_test(curvature<=0., + ppm->error_message, + "negative curvature spectrum"); + + class_test(tensors<=0., + ppm->error_message, + "negative tensor spectrum"); + + /** - store the obtained result for curvature and tensor perturbations */ + ppm->lnpk[ppt->index_md_scalars][index_k] = log(curvature); + ppm->lnpk[ppt->index_md_tensors][index_k] = log(tensors); + + /* uncomment if you want to print here the spectra for testing */ + /* fprintf(stderr,"%e %e %e\n", */ + /* ppm->lnk[index_k], */ + /* ppm->lnpk[ppt->index_md_scalars][index_k], */ + /* ppm->lnpk[ppt->index_md_tensors][index_k]); */ + + return _SUCCESS_; +} + +/** + * Routine integrating the background plus perturbation equations for + * each wavenumber, and returning the scalar and tensor spectrum. + * + * @param ppm Input: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param k Input: Fourier wavenumber + * @param y Input: running vector of background/perturbations, already allocated and initialized + * @param dy Input: running vector of background/perturbation derivatives, already allocated + * @param curvature Output: curvature perturbation + * @param tensor Output: tensor perturbation + * @return the error status + */ + +int primordial_inflation_one_k( + struct primordial * ppm, + struct precision * ppr, + double k, + double * y, + double * dy, + double * curvature, + double * tensor + ) { + + /** Summary: */ + + /** - define local variables */ + double tau_start,tau_end,dtau; + double z,ksi2,ah2; + double aH; + double curvature_old; + double curvature_new; + double dlnPdN; + + struct primordial_inflation_parameters_and_workspace pipaw; + struct generic_integrator_workspace gi; + + /** - initialize the generic integrator (same integrator already used + in background, thermodynamics and perturbation modules) */ + + pipaw.ppm = ppm; + pipaw.N = ppm->in_size; + pipaw.integrate = forward; + pipaw.time = conformal; + pipaw.k = k; + + class_call(initialize_generic_integrator(pipaw.N,&gi), + gi.error_message, + ppm->error_message); + + /* initial conditions for the perturbations, Bunch-Davies vacuum */ + y[ppm->index_in_ksi_re]=1./sqrt(2.*k); + y[ppm->index_in_ksi_im]=0.; + y[ppm->index_in_dksi_re]=0.; + y[ppm->index_in_dksi_im]=-k*y[ppm->index_in_ksi_re]; + + y[ppm->index_in_ah_re]=1./sqrt(2.*k); + y[ppm->index_in_ah_im]=0.; + y[ppm->index_in_dah_re]=0.; + y[ppm->index_in_dah_im]=-k*y[ppm->index_in_ah_re]; + + /** - initialize variable used for deciding when to stop the calculation (= when the curvature remains stable) */ + curvature_new = _HUGE_; + + /** - initialize conformal time to arbitrary value (here, only variations + of tau matter: the equations that we integrate do not depend + explicitly on time) */ + tau_end = 0; + + /** - compute derivative of initial vector and infer first value of adaptive time-step */ + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + dtau = ppr->primordial_inflation_pt_stepsize*2.*_PI_ + /MAX(sqrt(fabs(dy[ppm->index_in_dksi_re]/y[ppm->index_in_ksi_re])),k); + + /** - loop over time */ + do { + + /* new time interval [tau_start, tau_end] over which equations will be integrated */ + tau_start = tau_end; + + tau_end = tau_start + dtau; + + class_test(dtau/tau_start < ppr->smallest_allowed_variation, + ppm->error_message, + "integration step: relative change in time =%e < machine precision : leads either to numerical error or infinite loop",dtau/tau_start); + + /* evolve the system */ + class_call(generic_integrator(primordial_inflation_derivs, + tau_start, + tau_end, + y, + &pipaw, + ppr->primordial_inflation_tol_integration, + ppr->smallest_allowed_variation, + &gi), + gi.error_message, + ppm->error_message); + + /* compute derivatives at tau_end, useful to infer new time step and spectra */ + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + /* new time step */ + dtau = ppr->primordial_inflation_pt_stepsize*2.*_PI_ + /MAX(sqrt(fabs(dy[ppm->index_in_dksi_re]/y[ppm->index_in_ksi_re])),k); + + /* new aH */ + aH = dy[ppm->index_in_a]/y[ppm->index_in_a]; + + /* store previous value of curvature (at tau_start) */ + curvature_old = curvature_new; + + /* new curvature */ + z = y[ppm->index_in_a]*dy[ppm->index_in_phi]/aH; + ksi2 = y[ppm->index_in_ksi_re]*y[ppm->index_in_ksi_re]+y[ppm->index_in_ksi_im]*y[ppm->index_in_ksi_im]; + curvature_new = k*k*k/2./_PI_/_PI_*ksi2/z/z; + + /* variation of curvature with time (dimensionless) */ + dlnPdN = (curvature_new-curvature_old)/dtau*y[ppm->index_in_a]/dy[ppm->index_in_a]/curvature_new; + + /* stop when (k >> aH) AND curvature is stable */ + } while ((k/aH >= ppr->primordial_inflation_ratio_max) || (fabs(dlnPdN) > ppr->primordial_inflation_tol_curvature)); + + /** - clean the generic integrator */ + class_call(cleanup_generic_integrator(&gi), + gi.error_message, + ppm->error_message); + + /** - store final value of curvature for this wavenumber */ + *curvature = curvature_new; + + /** - store final value of tensor perturbation for this wavenumber */ + ah2 = y[ppm->index_in_ah_re]*y[ppm->index_in_ah_re]+y[ppm->index_in_ah_im]*y[ppm->index_in_ah_im]; + *tensor = 32.*k*k*k/_PI_*ah2/y[ppm->index_in_a]/y[ppm->index_in_a]; + + //fprintf(stdout,"%g %g %g %g %g\n",k,*curvature,*tensor,*tensor/(*curvature),dlnPdN); + + return _SUCCESS_; +} + +/** + * Routine searching for the inflationary attractor solution at a + * given phi_0, by iterations, with a given tolerance. If no solution + * found within tolerance, returns error message. The principle is the + * following. The code starts integrating the background equations + * from various values of phi, corresponding to earlier and earlier + * value before phi_0, and separated by a small arbitrary step size, + * corresponding roughly to 1 e-fold of inflation. Each time, the + * integration starts with the initial condition \f$ \phi=-V'/3H\f$ (slow-roll + * prediction). If the found value of \f$\phi'\f$ in phi_0 is stable (up to + * the parameter "precision"), the code considers that there is an + * attractor, and stops iterating. If this process does not converge, + * it returns an error message. + * + * @param ppm Input: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param phi_0 Input: field value at which we wish to find the solution + * @param precision Input: tolerance on output values (if too large, an attractor will always considered to be found) + * @param y Input: running vector of background variables, already allocated and initialized + * @param dy Input: running vector of background derivatives, already allocated + * @param H_0 Output: Hubble value at phi_0 for attractor solution + * @param dphidt_0 Output: field derivative value at phi_0 for attractor solution + * @return the error status + */ + +int primordial_inflation_find_attractor( + struct primordial * ppm, + struct precision * ppr, + double phi_0, + double precision, + double * y, + double * dy, + double * H_0, + double * dphidt_0 + ) { + + double V_0,dV_0,ddV_0; + double V=0.,dV=0.,ddV=0.; + double a; + double dphidt,dphidt_0new,dphidt_0old,phi; + int counter; + + /* we want a series of value of phi' in phi_0, obtained by + integrating the system from earlier and earlier time. The first + value iof the series is the slow-roll prediction phi' = + -V'/3H. The following lines compute this value and initialize relevant quantities. */ + + class_call(primordial_inflation_check_potential(ppm,phi_0,&V_0,&dV_0,&ddV_0), + ppm->error_message, + ppm->error_message); + + dphidt_0new = -dV_0/3./sqrt((8.*_PI_/3.)*V_0); + phi = phi_0; + counter = 0; + + dphidt_0old = dphidt_0new/(precision+2.); // this silly value just + // ensures that the loop + // below will be executed + // at least once. + + /* loop over different values of phi, from which the background + equations are integrated until phi_0 */ + + while (fabs(dphidt_0new/dphidt_0old-1.) >= precision) { + + counter ++; + class_test(counter >= ppr->primordial_inflation_attractor_maxit, + ppm->error_message, + "could not converge after %d iterations: there exists no attractor solution near phi=%g. Potential probably too steep in this region, or precision parameter primordial_inflation_attractor_precision=%g too small", + counter, + phi_0, + precision); + + dphidt_0old = dphidt_0new; + + /* take one step in phi, corresponding roughly to adding one more + e-fold of inflation */ + + phi=phi+dV_0/V_0/16./_PI_; + + /* fix the initial phi' to the slow-roll prediction in that point, + and initialize other relevant quantities */ + + class_call(primordial_inflation_check_potential(ppm,phi,&V,&dV,&ddV), + ppm->error_message, + ppm->error_message); + + a = 1.; + dphidt = -dV/3./sqrt((8.*_PI_/3.)*V); + y[ppm->index_in_a]=a; + y[ppm->index_in_phi]=phi; + y[ppm->index_in_dphi]=a*dphidt; + + /* evolve the background equations until phi_0 is reached */ + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _phi_, + phi_0, + _TRUE_, + forward, + conformal), + ppm->error_message, + ppm->error_message); + + /* compute phi' in phi_0, this is the new point in the series + which convergence we want to check */ + + dphidt_0new = y[ppm->index_in_dphi]/y[ppm->index_in_a]; + + } + + /* if we have converged and found the attractor, we take the last + value of phi' in phi_0 to be the correct one for the attractor + solution */ + + *dphidt_0 = dphidt_0new; + *H_0 = sqrt((8.*_PI_/3.)*(0.5*dphidt_0new*dphidt_0new+V_0)); + + if (ppm->primordial_verbose > 1) { + printf(" (attractor found in phi=%g with phi'=%g, H=%g)\n",phi_0,*dphidt_0,*H_0); + } + + return _SUCCESS_; +} + +/** + * Routine integrating background equations only, from initial values + * stored in y, to a final value (if target = _aH_, until aH = + * aH_stop; if target = _phi_, till phi = phi_stop; if target = + * _end_inflation_, until \f$ d^2a/dt^2 = 0\f$ (here t = proper time)). In + * output, y contains the final background values. In addition, if + * check_epsilon is true, the routine controls at each step that the + * expansion is accelerated and that inflation holds (wepsilon>1), + * otherwise it returns an error. Thanks to the last argument, it is + * also possible to specify whether the integration should be carried + * forward or backward in time. For the inflation_H case, only a 1st + * order differential equation is involved, so the forward and + * backward case can be done exactly without problems. For the + * inflation_V case, the equation of motion is 2nd order. What the + * module will do in the backward case is to search for an approximate + * solution, corresponding to the (first-order) attractor inflationary + * solution. This approximate backward solution is used in order to + * estimate some initial times, but the approximation made here will + * never impact the final result: the module is written in such a way + * that after using this approximation, the code always computes (and + * relies on) the exact forward solution. + * + * @param ppm Input: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param y Input/output: running vector of background variables, already allocated and initialized + * @param dy Input: running vector of background derivatives, already allocated + * @param target Input: whether the goal is to reach a given aH or \f$ \phi \f$ + * @param stop Input: the target value of either aH or \f$ \phi \f$ + * @param check_epsilon Input: whether we should impose inflation (epsilon>1) at each step + * @param direction Input: whether we should integrate forward or backward in time + * @param time Input: definition of time (proper or conformal) + * @return the error status + */ + +int primordial_inflation_evolve_background( + struct primordial * ppm, + struct precision * ppr, + double * y, + double * dy, + enum target_quantity target, + double stop, + short check_epsilon, + enum integration_direction direction, + enum time_definition time + ) { + + struct primordial_inflation_parameters_and_workspace pipaw; + struct generic_integrator_workspace gi; + double tau_start,tau_end,dtau=0.; + double H,dH,ddH,dddH; + double epsilon,epsilon_old; + double quantity=0.; + double V,dV,ddV; + double sign_dtau=0.; + + pipaw.ppm = ppm; + + pipaw.N = ppm->in_bg_size; + + if ((direction == backward) && ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end))) { + // -1 to remove the differential equation for phi', since we stick to the attractor + pipaw.N -= 1; + } + + pipaw.integrate = direction; + pipaw.time = time; + + switch (direction) { + case forward: + sign_dtau = 1.; + break; + case backward: + sign_dtau = -1.; + break; + } + + class_call(initialize_generic_integrator(pipaw.N,&gi), + gi.error_message, + ppm->error_message); + + /* at starting point, compute eventually epsilon */ + + if (check_epsilon == _TRUE_) { + + class_call(primordial_inflation_get_epsilon(ppm, + y[ppm->index_in_phi], + &epsilon), + ppm->error_message, + ppm->error_message); + } + + /* at starting point, compute the stepsize dtau */ + + tau_end = 0; + + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + // compute timestep (if time = conformal, dtau is the conformal time step, + // if time = proper, dtau is in fact dt, the proper time step) + if ((direction == forward) && ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end))) { + dtau = ppr->primordial_inflation_bg_stepsize + *MIN(y[ppm->index_in_a]/dy[ppm->index_in_a],fabs(y[ppm->index_in_dphi]/dy[ppm->index_in_dphi])); + } + else { + // minus sign for backward in time + dtau = sign_dtau * ppr->primordial_inflation_bg_stepsize*y[ppm->index_in_a]/dy[ppm->index_in_a]; + } + + /* expected value of target quantity after the next step */ + switch (target) { + case _aH_: + // next (approximate) value of aH after next step + // (a+[da/dx]*dx) H = aH (1 + [da/dx] / a dx) + // where dtau can be conformal or proper time + quantity = dy[ppm->index_in_a] * (1.+ dy[ppm->index_in_a]/y[ppm->index_in_a] * dtau); + if (time == conformal) quantity /= y[ppm->index_in_a]; + break; + case _phi_: + // next (approximate) value of phi after next step + quantity = y[ppm->index_in_phi]+dy[ppm->index_in_phi]*dtau; + break; + case _end_inflation_: + // in this case, the goal is to reach d2a/dt2 = 0 (end of accelerated expansion) + stop = 0.; + // current value of quantity = - d2a/dt2 /a = [- (a'/a)^2 + 3/2 8pi/3 phi'^2]/a^2 + quantity = -pow(dy[ppm->index_in_a]/y[ppm->index_in_a],2) + 4*_PI_ * y[ppm->index_in_dphi] * y[ppm->index_in_dphi]; + if (time == conformal) quantity /= pow(y[ppm->index_in_a],2); + + // check that we are in the right case + class_test(ppm->primordial_spec_type != inflation_V_end, + ppm->error_message, + "the target _end_inflation_ is only coded to work with inflation_V_end (but could be generalized if needed)"); + break; + case _a_: + // next (approximate) value of a after next step + quantity = y[ppm->index_in_a]+dy[ppm->index_in_a]*dtau; + break; + } + + /* loop over time steps, checking that there will be no overshooting */ + + while (sign_dtau*(quantity - stop) < 0.) { + + /* check that V(phi) or H(phi) do not take forbidden values + (negative or positive derivative) */ + + if ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end)) { + class_call(primordial_inflation_check_potential(ppm, + y[ppm->index_in_phi], + &V, + &dV, + &ddV), + ppm->error_message, + ppm->error_message); + } + else { + class_call(primordial_inflation_check_hubble(ppm, + y[ppm->index_in_phi], + &H, + &dH, + &ddH, + &dddH), + ppm->error_message, + ppm->error_message); + } + + /* take one time step */ + + tau_start = tau_end; + + tau_end = tau_start + dtau; + + // mind the fabs(...) below (works for both forward and backward integration) + class_test(fabs(dtau/tau_start) < ppr->smallest_allowed_variation, + ppm->error_message, + "integration step: relative change in time =%e < machine precision : leads either to numerical error or infinite loop",dtau/tau_start); + + class_call(generic_integrator(primordial_inflation_derivs, + tau_start, + tau_end, + y, + &pipaw, + ppr->primordial_inflation_tol_integration, + ppr->smallest_allowed_variation, + &gi), + gi.error_message, + ppm->error_message); + + /* eventually, check that epsilon is not becoming greater than one */ + + if (check_epsilon == _TRUE_) { + + epsilon_old = epsilon; + + class_call_except(primordial_inflation_get_epsilon(ppm, + y[ppm->index_in_phi], + &epsilon), + ppm->error_message, + ppm->error_message, + cleanup_generic_integrator(&gi)); + + class_test_except((epsilon > 1) && (epsilon_old <= 1), + ppm->error_message, + cleanup_generic_integrator(&gi), + "Inflaton evolution crosses the border from epsilon<1 to epsilon>1 at phi=%g. Inflation disrupted during the observable e-folds", + y[ppm->index_in_phi]); + } + + /* recompute new value of next conformal time step */ + + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + // compute timestep (if time = conformal, dtau is the conformal time step, + // if time = proper, dtau is in fact dt, the proper time step) + if ((direction == forward) && ((ppm->primordial_spec_type == inflation_V) || (ppm->primordial_spec_type == inflation_V_end))) { + dtau = ppr->primordial_inflation_bg_stepsize + *MIN(y[ppm->index_in_a]/dy[ppm->index_in_a],fabs(y[ppm->index_in_dphi]/dy[ppm->index_in_dphi])); + } + else { + // minus sign for backward in time + dtau = sign_dtau * ppr->primordial_inflation_bg_stepsize*y[ppm->index_in_a]/dy[ppm->index_in_a]; + } + + /* expected value of target quantity after the next step */ + + switch (target) { + case _aH_: + // next (approximate) value of aH after next step + // (a+[da/dx]*dx) H = aH (1 + [da/dx] / a dx) + // where dtau can be conformal or proper time + quantity = dy[ppm->index_in_a] * (1.+ dy[ppm->index_in_a]/y[ppm->index_in_a] * dtau); + if (time == conformal) quantity /= y[ppm->index_in_a]; + break; + case _phi_: + // next (approximate) value of phi after next step + quantity = y[ppm->index_in_phi]+dy[ppm->index_in_phi]*dtau; + break; + case _end_inflation_: + // current value of quantity = - d2a/dt2 /a = [- (a'/a)^2 + 3/2 8pi/3 phi'^2]/a^2 + quantity = -pow(dy[ppm->index_in_a]/y[ppm->index_in_a],2) + 4*_PI_ * y[ppm->index_in_dphi] * y[ppm->index_in_dphi]; + if (time == conformal) quantity /= pow(y[ppm->index_in_a],2); + break; + case _a_: + // next (approximate) value of a after next step + quantity = y[ppm->index_in_a]+dy[ppm->index_in_a]*dtau; + break; + } + + } + + /* won't use the integrator anymore */ + + class_call(cleanup_generic_integrator(&gi), + gi.error_message, + ppm->error_message); + + /* Perform one last step with a simple trapezoidal integral. This + will bring exactly phi or a forward to phi_stop or a_stop, or + approximately aH forward to aH_stop, or approximately [-d2a/dt2 + /a] backward to zero. */ + + switch (target) { + case _aH_: + switch (time){ + case proper: + dtau = (stop/dy[ppm->index_in_a]-1.)/dy[ppm->index_in_a]; + break; + case conformal: + dtau = (stop/(dy[ppm->index_in_a]/y[ppm->index_in_a])-1.)/(dy[ppm->index_in_a]/y[ppm->index_in_a]); + break; + } + break; + case _phi_: + dtau = (stop-y[ppm->index_in_phi])/dy[ppm->index_in_phi]; + break; + case _end_inflation_: + class_call(primordial_inflation_check_potential(ppm,y[ppm->index_in_phi],&V,&dV,&ddV), + ppm->error_message, + ppm->error_message); + // We can easily pull back quantity=-d2a/dt2 /a by noticing that + // d(quantity)/dtau = 8piG phi' phi'' / a^2 (exact relation!) + // or + // d(quantity)/dtau = 8piG phi^dot (a phi^dot)^dot = 8piG phi^dot (a^dot phi^dot+ a phi^dotdot) + // By taking the step dtau = - quantity / [d(quantity)/dtau] we nearly reach quantity=0 (end of inflation), up to very good approximation + switch (time){ + case proper: + dtau = -quantity/(8.*_PI_*dy[ppm->index_in_phi]*(dy[ppm->index_in_a]*dy[ppm->index_in_phi]+y[ppm->index_in_a]*dy[ppm->index_in_dphi])); + + break; + case conformal: + dtau = -quantity/(8.*_PI_/y[ppm->index_in_a]/y[ppm->index_in_a]*dy[ppm->index_in_phi]*dy[ppm->index_in_dphi]); + break; + } + break; + case _a_: + dtau = (stop-y[ppm->index_in_a])/dy[ppm->index_in_a]; + break; + } + + y[ppm->index_in_a] += dy[ppm->index_in_a]*dtau; + y[ppm->index_in_phi] += dy[ppm->index_in_phi]*dtau; + if ((direction == forward) && ((ppm->primordial_spec_type == inflation_V)||(ppm->primordial_spec_type == inflation_V_end))) + y[ppm->index_in_dphi] += dy[ppm->index_in_dphi]*dtau; + + // this last step updates also the dy[] + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + // uncomment if you want to test that the routine really reached the point at which d2a/dt2=0 + /* + if (target == _end_inflation_) { + class_call(primordial_inflation_derivs(tau_end, + y, + dy, + &pipaw, + ppm->error_message), + ppm->error_message, + ppm->error_message); + + aH = dy[ppm->index_in_a]/y[ppm->index_in_a]; + quantity = (-aH*aH + 4*_PI_ * y[ppm->index_in_dphi] * y[ppm->index_in_dphi])/y[ppm->index_in_a]/y[ppm->index_in_a]; + if (ppm->primordial_verbose>1) + printf(" (-d2a/dt2 /a = %e)\n",quantity); + } + */ + + return _SUCCESS_; +} + +/** + * Routine checking positivity and negative slope of potential. The + * negative slope is an arbitrary choice. Currently the code can only + * deal with monotonic variations of the inflaton during inflation. So + * the slope had to be always negative or always positive... we took + * the first option. + * + * @param ppm Input: pointer to primordial structure + * @param phi Input: field value where to perform the check + * @param V Output: inflaton potential in units of \f$ Mp^4\f$ + * @param dV Output: first derivative of inflaton potential wrt the field + * @param ddV Output: second derivative of inflaton potential wrt the field + * @return the error status + */ + +int primordial_inflation_check_potential( + struct primordial * ppm, + double phi, + double * V, + double * dV, + double * ddV + ) { + + class_call(primordial_inflation_potential(ppm,phi,V,dV,ddV), + ppm->error_message, + ppm->error_message); + + class_test(*V <= 0., + ppm->error_message, + "This potential becomes negative at phi=%g, before the end of observable inflation. It cannot be treated by this code", + phi); + + class_test(*dV >= 0., + ppm->error_message, + "All the code is written for the case dV/dphi<0. Here, in phi=%g, we have dV/dphi=%g. This potential cannot be treated by this code", + phi,*dV); + + return _SUCCESS_; +} + +/** + * Routine checking positivity and negative slope of \f$ H(\phi)\f$. The + * negative slope is an arbitrary choice. Currently the code can only + * deal with monotonic variations of the inflaton during + * inflation. And H can only decrease with time. So the slope \f$ dH/d\phi\f$ + * has to be always negative or always positive... we took the first + * option: phi increases, H decreases. + * + * @param ppm Input: pointer to primordial structure + * @param phi Input: field value where to perform the check + * @param H Output: Hubble parameters in units of Mp + * @param dH Output: \f$ dH / d\phi \f$ + * @param ddH Output: \f$ d^2H / d\phi^2 \f$ + * @param dddH Output: \f$ d^3H / d\phi^3 \f$ + * @return the error status + */ + +int primordial_inflation_check_hubble( + struct primordial * ppm, + double phi, + double * H, + double * dH, + double * ddH, + double * dddH + ) { + + class_call(primordial_inflation_hubble(ppm, + phi, + H,dH,ddH,dddH), + ppm->error_message, + ppm->error_message); + + class_test(*H < 0., + ppm->error_message, + "this H(phi) is not physical. H = %e", + *H); + + class_test(*dH > 0., + ppm->error_message, + "this H(phi) is not decreasing with growing phi. dH/dphi = %e", + *dH); + + return _SUCCESS_; + +} + +/** + * Routine computing the first slow-roll parameter epsilon + * + * @param ppm Input: pointer to primordial structure + * @param phi Input: field value where to compute epsilon + * @param epsilon Output: result + * @return the error status + */ + +int primordial_inflation_get_epsilon( + struct primordial * ppm, + double phi, + double * epsilon + ) { + + double V,dV,ddV; + double H,dH,ddH,dddH; + + switch (ppm->primordial_spec_type) { + + case inflation_V: + case inflation_V_end: + + class_call(primordial_inflation_potential(ppm, + phi, + &V,&dV,&ddV), + ppm->error_message, + ppm->error_message); + + *epsilon = 1./16./_PI_*pow(dV/V,2); + //*eta = 1./8./pi*(ddV/V) + break; + + case inflation_H: + + class_call(primordial_inflation_hubble(ppm, + phi, + &H,&dH,&ddH,&dddH), + ppm->error_message, + ppm->error_message); + + *epsilon = 1./4./_PI_*pow(dH/H,2); + break; + + default: + class_stop(ppm->error_message,"ppm->primordial_spec_type=%d different from possible relevant cases",ppm->primordial_spec_type); + break; + } + + return _SUCCESS_; +} + +/** + * Routine searching phi_pivot when a given amount of inflation is requested. + * + * @param ppm Input/output: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param y Input: running vector of background variables, already allocated and initialized + * @param dy Input: running vector of background derivatives, already allocated + * @return the error status + */ + +int primordial_inflation_find_phi_pivot( + struct primordial * ppm, + struct precision * ppr, + double * y, + double * dy + ) { + /** Summary: */ + + /** - define local variables */ + double epsilon,dphi; + double phi_try,H_try,dphidt_try,ratio_try=0.; + double phi_left,phi_right,phi_mid; + double phi_small_epsilon,phi_stop; + double dphidt_small_epsilon; + double H_small_epsilon; + double aH_ratio_after_small_epsilon=0.; + double a_ratio_after_small_epsilon=0.; + double target=0.; + double a_pivot,aH_pivot; + + double rho_end; + double h; + double H0; + double rho_c0; + double sigma_B; + double Omega_g0; + double Omega_r0; + + /** - check whether in vicinity of phi_end, inflation is still ongoing */ + + class_call(primordial_inflation_get_epsilon(ppm,ppm->phi_end-ppr->primordial_inflation_end_dphi,&epsilon), + ppm->error_message, + ppm->error_message); + + /** - case in which epsilon>1: hence we must find the value phi_stop < + phi_end where inflation ends up naturally */ + + if (epsilon > 1.) { + + // assume that inflation ends up naturally + + /** - --> find latest value of the field such that epsilon = primordial_inflation_small_epsilon (default: 0.1) */ + + /** - --> bracketing right-hand value is phi_end (but the potential will not be evaluated exactly there, only closeby */ + phi_right = ppm->phi_end; + + /** - --> bracketing left-hand value is found by iterating with logarithmic step until epsilon < primordial_inflation_small_epsilon */ + dphi = ppr->primordial_inflation_end_dphi; + do { + dphi *= ppr->primordial_inflation_end_logstep; + class_call(primordial_inflation_get_epsilon(ppm,ppm->phi_end-dphi,&epsilon), + ppm->error_message, + ppm->error_message); + } while (epsilon > ppr->primordial_inflation_small_epsilon); + phi_left = ppm->phi_end-dphi; + + /** - --> find value such that epsilon = primordial_inflation_small_epsilon by bisection */ + do { + phi_mid = 0.5*(phi_left+phi_right); + class_call(primordial_inflation_get_epsilon(ppm,phi_mid,&epsilon), + ppm->error_message, + ppm->error_message); + if (epsilon < ppr->primordial_inflation_small_epsilon) phi_left=phi_mid; + else phi_right=phi_mid; + } while (fabs(epsilon-ppr->primordial_inflation_small_epsilon) > ppr->primordial_inflation_small_epsilon_tol); + + /** - --> value found and stored as phi_small_epsilon */ + phi_small_epsilon = phi_mid; + + /** - --> find inflationary attractor in phi_small_epsilon (should exist since epsilon<<1 there) */ + class_call(primordial_inflation_find_attractor(ppm, + ppr, + phi_small_epsilon, + ppr->primordial_inflation_attractor_precision_initial, + y, + dy, + &H_small_epsilon, + &dphidt_small_epsilon), + ppm->error_message, + ppm->error_message); + + /** - --> compute amount of inflation between this phi_small_epsilon and the end of inflation */ + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_small_epsilon; + y[ppm->index_in_dphi]=y[ppm->index_in_a]*dphidt_small_epsilon; + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _end_inflation_, + 0., + _FALSE_, + forward, + conformal), + ppm->error_message, + ppm->error_message); + + // we have used here conformal time, so aH = dy[a]/y[a] + aH_ratio_after_small_epsilon = dy[ppm->index_in_a]/y[ppm->index_in_a]/H_small_epsilon; + a_ratio_after_small_epsilon = y[ppm->index_in_a]; + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + + /* get the target value of ln_aH_ratio */ + + rho_end = 2./8./_PI_*pow(dy[ppm->index_in_a]/y[ppm->index_in_a],2); + rho_end = 8*_PI_/3.*rho_end/(_G_*_h_P_/pow(_c_,3))*pow(_Mpc_over_m_,2); + h = 0.7; + H0 = h * 1.e5 / _c_; + rho_c0 = pow(H0,2); + + sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); + Omega_g0 = (4.*sigma_B/_c_*pow(2.726,4.)) / (3.*_c_*_c_*1.e10*h*h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); + Omega_r0 = 3.046*7./8.*pow(4./11.,4./3.)*Omega_g0; + + target = log(H0/0.05*pow(Omega_r0,0.5)*pow(2./100.,1./12.)*pow(rho_end/rho_c0,0.25)); + + //fprintf(stderr,"auto: log(aH_end/aH_*)=%e\n",target); + break; + + case ln_aH_ratio: + + target = ppm->phi_pivot_target; + //fprintf(stderr,"fixed: log(aH_end/aH_*)=%e\n",target); + break; + + case N_star: + + target = ppm->phi_pivot_target; + //fprintf(stderr,"fixed: log(a_end/a_*)=%e\n",target); + break; + } + + /** - --> by starting from phi_small_epsilon and integrating an approximate + solution backward in time, try to estimate roughly a value close + to phi_pivot but a bit smaller. This is done by trying to reach + an amount of inflation equal to the requested one, minus the + amount after phi_small_epsilon, and plus + primordial_inflation_extra_efolds efolds (default: two). Note + that it is not aggressive to require two extra e-folds of + inflation before the pivot, since the calculation of the spectrum + in the observable range will require even more. */ + + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_small_epsilon; + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + H_small_epsilon/exp(target+ppr->primordial_inflation_extra_efolds)*aH_ratio_after_small_epsilon, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message); + break; + + case N_star: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _a_, + 1./exp(target+ppr->primordial_inflation_extra_efolds)*a_ratio_after_small_epsilon, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message); + break; + } + + /* we now have a value phi_try believed to be close to and slightly smaller than phi_pivot */ + + phi_try = y[ppm->index_in_phi]; + + /** - --> find attractor in phi_try */ + + class_call(primordial_inflation_find_attractor(ppm, + ppr, + phi_try, + ppr->primordial_inflation_attractor_precision_initial, + y, + dy, + &H_try, + &dphidt_try), + ppm->error_message, + ppm->error_message); + + /** - --> check the total amount of inflation between phi_try and the end of inflation */ + + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_try; + y[ppm->index_in_dphi]= dphidt_try; + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _end_inflation_, + 0., + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + // aH_ratio (we have used here proper time, so aH = dy[a]) + ratio_try = dy[ppm->index_in_a]/H_try; + break; + + case N_star: + + // a_ratio + ratio_try = y[ppm->index_in_a]; + break; + } + + class_test(log(ratio_try) < target, + ppm->error_message, + "phi_try not small enough, log(aH_stop/aH_try) or log(a_stop/a_try) (depending on what you asked) is equal to %e instead of requested %e; must write here a loop to deal automatically with this situation (by decreasing phi_try iteratively), or must increase precision parameter primordial_inflation_extra_efolds", + log(ratio_try), + target); + + phi_stop = y[1]; + + if (ppm->primordial_verbose > 1) + printf(" (inflation stops in phi_stop = %e)\n",phi_stop); + + /** - --> go back to phi_try, and now find phi_pivot such that the amount + of inflation between phi_pivot and the end of inflation is + exactly the one requested. */ + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_try; + y[ppm->index_in_dphi]= dphidt_try; + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + H_try*ratio_try/exp(target), + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + break; + + case N_star: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _a_, + ratio_try/exp(target), + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + break; + } + + ppm->phi_pivot = y[1]; + + if (ppm->primordial_verbose > 1) { + + printf(" (reached phi_pivot=%e)\n",ppm->phi_pivot); + + /* - --> In verbose mode, check that phi_pivot is correct. Done by + restarting from phi_pivot and going again till the end of + inflation. */ + + aH_pivot = dy[0]; + a_pivot = y[0]; + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _end_inflation_, + 0., + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + printf(" (from phi_pivot till the end, ln(aH_2/aH_1) = %e, ln(a_2/a_1) = %e)\n",log(dy[0]/aH_pivot),log(y[0]/a_pivot)); + } + + + } + /** - case in which epsilon<1: */ + else { + + /** - --> find inflationary attractor in phi_small_epsilon (should exist since epsilon<1 there) */ + class_call(primordial_inflation_find_attractor(ppm, + ppr, + ppm->phi_end, + ppr->primordial_inflation_attractor_precision_initial, + y, + dy, + &H_small_epsilon, + &dphidt_small_epsilon), + ppm->error_message, + ppm->error_message); + + /** - --> by starting from phi_end and integrating an approximate + solution backward in time, try to estimate roughly a value close + to phi_pivot but a bit smaller. This is done by trying to reach + an amount of inflation equal to the requested one, minus the + amount after phi_small_epsilon, and plus + primordial_inflation_extra_efolds efolds (default: two). Note + that it is not aggressive to require two extra e-folds of + inflation before the pivot, since the calculation of the spectrum + in the observable range will require even more. */ + + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= ppm->phi_end; + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + H_small_epsilon/exp(target+ppr->primordial_inflation_extra_efolds)*aH_ratio_after_small_epsilon, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message); + break; + + case N_star: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _a_, + 1./exp(target+ppr->primordial_inflation_extra_efolds)*a_ratio_after_small_epsilon, + _TRUE_, + backward, + conformal), + ppm->error_message, + ppm->error_message); + break; + } + + /** - --> we now have a value phi_try believed to be close to and slightly smaller than phi_pivot */ + + phi_try = y[ppm->index_in_phi]; + + /** - --> find attractor in phi_try */ + + class_call(primordial_inflation_find_attractor(ppm, + ppr, + phi_try, + ppr->primordial_inflation_attractor_precision_initial, + y, + dy, + &H_try, + &dphidt_try), + ppm->error_message, + ppm->error_message); + + /** - --> check the total amount of inflation between phi_try and the end of inflation */ + + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_try; + y[ppm->index_in_dphi]= dphidt_try; + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _phi_, + ppm->phi_end, + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + // aH_ratio (we have used here proper time, so aH = dy[a]) + ratio_try = dy[ppm->index_in_a]/H_try; + break; + + case N_star: + + // a_ratio + ratio_try = y[ppm->index_in_a]; + break; + } + + class_test(log(ratio_try) < target, + ppm->error_message, + "phi_try not small enough, log(aH_stop/aH_try) or log(a_stop/a_try) (depending on what you asked) is equal to %e instead of requested %e; must write here a loop to deal automatically with this situation (by decreasing phi_try iteratively), or must increase precision parameter primordial_inflation_extra_efolds", + log(ratio_try), + target); + + phi_stop = y[1]; + + if (ppm->primordial_verbose > 1) + printf(" (inflation stops in phi_stop = %e)\n",phi_stop); + + /** - --> go back to phi_try, and now find phi_pivot such that the amount + of inflation between phi_pivot and the end of inflation is + exactly the one requested. */ + y[ppm->index_in_a]=1.; + y[ppm->index_in_phi]= phi_try; + y[ppm->index_in_dphi]= dphidt_try; + + switch (ppm->phi_pivot_method) { + + case ln_aH_ratio_auto: + case ln_aH_ratio: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _aH_, + H_try*ratio_try/exp(target), + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + break; + + case N_star: + + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _a_, + ratio_try/exp(target), + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + break; + } + + ppm->phi_pivot = y[1]; + + if (ppm->primordial_verbose > 1) { + + printf(" (reached phi_pivot=%e)\n",ppm->phi_pivot); + + /** - --> In verbose mode, check that phi_pivot is correct. Done by + restarting from phi_pivot and going again till the end of + inflation. */ + + aH_pivot = dy[0]; + a_pivot = y[0]; + class_call(primordial_inflation_evolve_background(ppm, + ppr, + y, + dy, + _phi_, + ppm->phi_end, + _FALSE_, + forward, + proper), + ppm->error_message, + ppm->error_message); + printf(" (from phi_pivot till the end, ln(aH_2/aH_1) = %e, ln(a_2/a_1) = %e)\n",log(dy[0]/aH_pivot),log(y[0]/a_pivot)); + } + + } + + return _SUCCESS_; +} + +/** + * Routine returning derivative of system of background/perturbation + * variables. Like other routines used by the generic integrator + * (background_derivs, thermodynamics_derivs, perturb_derivs), this + * routine has a generic list of arguments, and a slightly different + * error management, with the error message returned directly in an + * ErrMsg field. + * + * @param tau Input: time (not used explicitly inside the routine, but requested by the generic integrator) + * @param y Input/output: running vector of background variables, already allocated and initialized + * @param dy Input: running vector of background derivatives, already allocated + * @param parameters_and_workspace Input: all necessary input variables apart from y + * @param error_message Output: error message + * @return the error status + */ + +int primordial_inflation_derivs( + double tau, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + + struct primordial_inflation_parameters_and_workspace * ppipaw; + struct primordial * ppm; + + ppipaw = parameters_and_workspace; + ppm = ppipaw->ppm; + + // a2 + ppipaw->a2=y[ppm->index_in_a]*y[ppm->index_in_a]; + + // BACKGROUND + + switch (ppm->primordial_spec_type) { + + case inflation_V: + case inflation_V_end: + + class_call(primordial_inflation_potential(ppm, + y[ppm->index_in_phi], + &(ppipaw->V), + &(ppipaw->dV), + &(ppipaw->ddV)), + ppm->error_message, + ppm->error_message); + + switch (ppipaw->integrate) { + + case forward: + + switch (ppipaw->time) { + + case conformal: + + // a H = a'/a + ppipaw->aH = sqrt((8*_PI_/3.)*(0.5*y[ppm->index_in_dphi]*y[ppm->index_in_dphi]+ppipaw->a2*ppipaw->V)); + // 1: a + dy[ppm->index_in_a]=y[ppm->index_in_a]*ppipaw->aH; + // 2: phi + dy[ppm->index_in_phi]=y[ppm->index_in_dphi]; + // 3: dphi/dtau + dy[ppm->index_in_dphi]=-2.*ppipaw->aH*y[ppm->index_in_dphi]-ppipaw->a2*ppipaw->dV; + break; + + case proper: + + // a H = adot + ppipaw->aH = y[ppm->index_in_a]*sqrt((8*_PI_/3.)*(0.5*y[ppm->index_in_dphi]*y[ppm->index_in_dphi]+ppipaw->V)); + // 1: a + dy[ppm->index_in_a]=ppipaw->aH; + // 2: phi + dy[ppm->index_in_phi]=y[ppm->index_in_dphi]; + // 3: dphi/dt + dy[ppm->index_in_dphi]=-3.*ppipaw->aH/y[ppm->index_in_a]*y[ppm->index_in_dphi]-ppipaw->dV; + break; + } + + // z''/z (assumes that conformal time is requested) + ppipaw->zpp_over_z= + 2*ppipaw->aH*ppipaw->aH + - ppipaw->a2*ppipaw->ddV + - 4.*_PI_*(7.*y[ppm->index_in_dphi]*y[ppm->index_in_dphi] + +4.*y[ppm->index_in_dphi]/ppipaw->aH*ppipaw->a2*ppipaw->dV) + +32.*_PI_*_PI_*pow(y[ppm->index_in_dphi],4)/pow(ppipaw->aH,2); + + // a''/a (assumes that conformal time is requested) + ppipaw->app_over_a=2.*ppipaw->aH*ppipaw->aH - 4.*_PI_*y[ppm->index_in_dphi]*y[ppm->index_in_dphi]; + + break; + + // For backward integration of approximate slow-roll solution: + // Neglect kinetic energy of the field phi'^2/(2a^2) w.r.t. potential energy V + // Neglect phi'' w.r.t 2aHphi', reducing 2nd order Klein-Gordon to approximate 1st-order + case backward: + + switch (ppipaw->time) { + + case conformal: + + // a H = a'/a + ppipaw->aH = sqrt((8*_PI_/3.)*ppipaw->a2*ppipaw->V); + // 1: a + dy[ppm->index_in_a]=y[ppm->index_in_a]*ppipaw->aH; + // 2: phi + dy[ppm->index_in_phi]= -ppipaw->a2*ppipaw->dV/3./ppipaw->aH; + break; + + case proper: + + // a H = da/dt + ppipaw->aH = y[ppm->index_in_a]*sqrt((8*_PI_/3.)*ppipaw->V); + // 1: a + dy[ppm->index_in_a]=ppipaw->aH; + // 2: phi + dy[ppm->index_in_phi]= -ppipaw->dV/3./ppipaw->aH*y[ppm->index_in_a]; + break; + } + + break; + } + + break; + + case inflation_H: + + class_call(primordial_inflation_hubble(ppm, + y[ppm->index_in_phi], + &(ppipaw->H), + &(ppipaw->dH), + &(ppipaw->ddH), + &(ppipaw->dddH)), + ppm->error_message, + ppm->error_message); + + switch (ppipaw->time) { + + case conformal: + + // 1: a + dy[ppm->index_in_a]=ppipaw->a2*ppipaw->H; + // 2: phi + dy[ppm->index_in_phi]=-1./4./_PI_*y[ppm->index_in_a]*ppipaw->dH; + break; + + case proper: + + // 1: a + dy[ppm->index_in_a]=y[ppm->index_in_a]*ppipaw->H; + // 2: phi + dy[ppm->index_in_phi]=-1./4./_PI_*ppipaw->dH; + break; + } + + // z''/z (assumes that conformal time is requested) + ppipaw->zpp_over_z = + 2. *ppipaw->a2*ppipaw->H*ppipaw->H + -3./4./_PI_ *ppipaw->a2*ppipaw->H*ppipaw->ddH + +1./16./_PI_/_PI_*ppipaw->a2*ppipaw->ddH*ppipaw->ddH + +1./16./_PI_/_PI_*ppipaw->a2*ppipaw->dH*ppipaw->dddH + -1./4./_PI_/_PI_ *ppipaw->a2*ppipaw->dH*ppipaw->dH*ppipaw->ddH/ppipaw->H + +1./2./_PI_ *ppipaw->a2*ppipaw->dH*ppipaw->dH + +1./8./_PI_/_PI_ *ppipaw->a2*ppipaw->dH*ppipaw->dH*ppipaw->dH*ppipaw->dH/ppipaw->H/ppipaw->H; + + // a''/a (assumes that conformal time is requested) + ppipaw->app_over_a = 2.*ppipaw->a2*ppipaw->H*ppipaw->H + -4.*_PI_*dy[ppm->index_in_phi]*dy[ppm->index_in_phi]; + + break; + + default: + class_stop(ppm->error_message,"ppm->primordial_spec_type=%d different from possible relevant cases",ppm->primordial_spec_type); + break; + + } + + if (ppipaw->N <= ppm->in_bg_size) // mind the <= instead of ==, necessary because for backward integration 1 equation is removed + return _SUCCESS_; + + // PERTURBATIONS + + class_test(ppipaw->time == proper, + ppm->error_message, + "For inflaton perturbations, only conformal time is coded."); + + // SCALARS + // 4: ksi_re + dy[ppm->index_in_ksi_re]=y[ppm->index_in_dksi_re]; + // 5: ksi_im + dy[ppm->index_in_ksi_im]=y[ppm->index_in_dksi_im]; + // 6: d ksi_re / dtau + dy[ppm->index_in_dksi_re]=-(ppipaw->k*ppipaw->k-ppipaw->zpp_over_z)*y[ppm->index_in_ksi_re]; + // 7: d ksi_im / dtau + dy[ppm->index_in_dksi_im]=-(ppipaw->k*ppipaw->k-ppipaw->zpp_over_z)*y[ppm->index_in_ksi_im]; + + // TENSORS + // 8: ah_re + dy[ppm->index_in_ah_re]=y[ppm->index_in_dah_re]; + // 9: ah_im + dy[ppm->index_in_ah_im]=y[ppm->index_in_dah_im]; + // 10: d ah_re / dtau + dy[ppm->index_in_dah_re]=-(ppipaw->k*ppipaw->k-ppipaw->app_over_a)*y[ppm->index_in_ah_re]; + // 11: d ah_im / dtau + dy[ppm->index_in_dah_im]=-(ppipaw->k*ppipaw->k-ppipaw->app_over_a)*y[ppm->index_in_ah_im]; + + return _SUCCESS_; +} + +/** + * This routine reads the primordial spectrum from an external command, + * and stores the tabulated values. + * The sampling of the k's given by the external command is preserved. + * + * Author: Jesus Torrado (torradocacho@lorentz.leidenuniv.nl) + * Date: 2013-12-20 + * + * @param ppt Input/output: pointer to perturbation structure + * @param ppm Input/output: pointer to primordial structure + * @return the error status + */ + +int primordial_external_spectrum_init( + struct perturbs * ppt, + struct primordial * ppm + ) { + /** Summary: */ + + char arguments[_ARGUMENT_LENGTH_MAX_]; + char line[_LINE_LENGTH_MAX_]; + char command_with_arguments[2*_ARGUMENT_LENGTH_MAX_]; + FILE *process; + int n_data_guess, n_data = 0; + double *k = NULL, *pks = NULL, *pkt = NULL, *tmp = NULL; + double this_k, this_pks, this_pkt; + int status; + int index_k; + + /** - Initialization */ + /* Prepare the data (with some initial size) */ + n_data_guess = 100; + k = (double *)malloc(n_data_guess*sizeof(double)); + pks = (double *)malloc(n_data_guess*sizeof(double)); + if (ppt->has_tensors == _TRUE_) + pkt = (double *)malloc(n_data_guess*sizeof(double)); + /* Prepare the command */ + /* If the command is just a "cat", no arguments need to be passed */ + if(strncmp("cat ", ppm->command, 4) == 0) { + sprintf(arguments, " "); + } + /* otherwise pass the list of arguments */ + else { + sprintf(arguments, " %g %g %g %g %g %g %g %g %g %g", + ppm->custom1, ppm->custom2, ppm->custom3, ppm->custom4, ppm->custom5, + ppm->custom6, ppm->custom7, ppm->custom8, ppm->custom9, ppm->custom10); + } + /* write the actual command in a string */ + sprintf(command_with_arguments, "%s %s", ppm->command, arguments); + if (ppm->primordial_verbose > 0) + printf(" -> running: %s\n",command_with_arguments); + + /** - Launch the command and retrieve the output */ + /* Launch the process */ + process = popen(command_with_arguments, "r"); + class_test(process == NULL, + ppm->error_message, + "The program failed to set the environment for the external command. Maybe you ran out of memory."); + /* Read output and store it */ + while (fgets(line, sizeof(line)-1, process) != NULL) { + if (ppt->has_tensors == _TRUE_) { + sscanf(line, "%lf %lf %lf", &this_k, &this_pks, &this_pkt); + } + else { + sscanf(line, "%lf %lf", &this_k, &this_pks); + } + /* Standard technique in C: if too many data, double the size of the vectors */ + /* (it is faster and safer that reallocating every new line) */ + if((n_data+1) > n_data_guess) { + n_data_guess *= 2; + tmp = (double *)realloc(k, n_data_guess*sizeof(double)); + class_test(tmp == NULL, + ppm->error_message, + "Error allocating memory to read the external spectrum.\n"); + k = tmp; + tmp = (double *)realloc(pks, n_data_guess*sizeof(double)); + class_test(tmp == NULL, + ppm->error_message, + "Error allocating memory to read the external spectrum.\n"); + pks = tmp; + if (ppt->has_tensors == _TRUE_) { + tmp = (double *)realloc(pkt, n_data_guess*sizeof(double)); + class_test(tmp == NULL, + ppm->error_message, + "Error allocating memory to read the external spectrum.\n"); + pkt = tmp; + }; + }; + /* Store */ + k [n_data] = this_k; + pks[n_data] = this_pks; + if (ppt->has_tensors == _TRUE_) { + pkt[n_data] = this_pkt; + } + n_data++; + /* Check ascending order of the k's */ + if(n_data>1) { + class_test(k[n_data-1] <= k[n_data-2], + ppm->error_message, + "The k's are not strictly sorted in ascending order, " + "as it is required for the calculation of the splines.\n"); + } + } + /* Close the process */ + status = pclose(process); + class_test(status != 0., + ppm->error_message, + "The attempt to launch the external command was unsuccessful. " + "Try doing it by hand to check for errors."); + /* Test limits of the k's */ + class_test(k[1] > ppt->k_min, + ppm->error_message, + "Your table for the primordial spectrum does not have " + "at least 2 points before the minimum value of k: %e . " + "The splines interpolation would not be safe.",ppt->k_min); + class_test(k[n_data-2] < ppt->k_max, + ppm->error_message, + "Your table for the primordial spectrum does not have " + "at least 2 points after the maximum value of k: %e . " + "The splines interpolation would not be safe.",ppt->k_max); + + /** - Store the read results into CLASS structures */ + ppm->lnk_size = n_data; + /** - Make room */ + class_realloc(ppm->lnk, + ppm->lnk, + ppm->lnk_size*sizeof(double), + ppm->error_message); + class_realloc(ppm->lnpk[ppt->index_md_scalars], + ppm->lnpk[ppt->index_md_scalars], + ppm->lnk_size*sizeof(double), + ppm->error_message); + class_realloc(ppm->ddlnpk[ppt->index_md_scalars], + ppm->ddlnpk[ppt->index_md_scalars], + ppm->lnk_size*sizeof(double), + ppm->error_message); + if (ppt->has_tensors == _TRUE_) { + class_realloc(ppm->lnpk[ppt->index_md_tensors], + ppm->lnpk[ppt->index_md_tensors], + ppm->lnk_size*sizeof(double), + ppm->error_message); + class_realloc(ppm->ddlnpk[ppt->index_md_tensors], + ppm->ddlnpk[ppt->index_md_tensors], + ppm->lnk_size*sizeof(double), + ppm->error_message); + }; + /** - Store values */ + for (index_k=0; index_klnk_size; index_k++) { + ppm->lnk[index_k] = log(k[index_k]); + ppm->lnpk[ppt->index_md_scalars][index_k] = log(pks[index_k]); + if (ppt->has_tensors == _TRUE_) + ppm->lnpk[ppt->index_md_tensors][index_k] = log(pkt[index_k]); + /* DEBUG (with tensors) + fprintf(stderr,"Storing[%d(+1) of %d]: \n k = %g == %g\n pks = %g == %g\n pkt = %g == %g\n", + index_k, n_data, + ppm->lnk[index_k], log(k[index_k]), + ppm->lnpk[ppt->index_md_scalars][index_k], log(pks[index_k]), + ppm->lnpk[ppt->index_md_tensors][index_k], log(pkt[index_k])); + */ + }; + /** - Release the memory used locally */ + free(k); + free(pks); + if (ppt->has_tensors == _TRUE_) + free(pkt); + /** - Tell CLASS that there are scalar (and tensor) modes */ + ppm->is_non_zero[ppt->index_md_scalars][ppt->index_ic_ad] = _TRUE_; + if (ppt->has_tensors == _TRUE_) + ppm->is_non_zero[ppt->index_md_tensors][ppt->index_ic_ten] = _TRUE_; + + return _SUCCESS_; +} + +int primordial_output_titles(struct perturbs * ppt, + struct primordial * ppm, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + class_store_columntitle(titles,"k [1/Mpc]",_TRUE_); + class_store_columntitle(titles,"P_scalar(k)",_TRUE_); + class_store_columntitle(titles,"P_tensor(k)",ppt->has_tensors); + + return _SUCCESS_; + +} + +int primordial_output_data(struct perturbs * ppt, + struct primordial * ppm, + int number_of_titles, + double *data){ + + int index_k, storeidx; + double *dataptr; + + for (index_k=0; index_klnk_size; index_k++) { + dataptr = data + index_k*number_of_titles; + storeidx = 0; + + class_store_double(dataptr, exp(ppm->lnk[index_k]), _TRUE_,storeidx); + class_store_double(dataptr, exp(ppm->lnpk[ppt->index_md_scalars][index_k]), _TRUE_,storeidx); + class_store_double(dataptr, exp(ppm->lnpk[ppt->index_md_tensors][index_k]), ppt->has_tensors,storeidx); + } + + + return _SUCCESS_; + +} diff --git a/class_old/source/spectra.c b/class_old/source/spectra.c new file mode 100644 index 00000000..fdc6344f --- /dev/null +++ b/class_old/source/spectra.c @@ -0,0 +1,3502 @@ +/** @file spectra.c Documented spectra module + * + * Julien Lesgourgues, 25.08.2010 + * + * This module computes the anisotropy and Fourier power spectra + * \f$ C_l^{X}, P(k), ... \f$'s given the transfer and Bessel functions + * (for anisotropy spectra), the source functions (for Fourier spectra) + * and the primordial spectra. + * + * The following functions can be called from other modules: + * + * -# spectra_init() at the beginning (but after transfer_init()) + * -# spectra_cl_at_l() at any time for computing \f$ C_l \f$ at any l + * -# spectra_spectrum_at_z() at any time for computing P(k) at any z + * -# spectra_spectrum_at_k_and z() at any time for computing P at any k and z + * -# spectra_free() at the end + */ + +#include "spectra.h" + + + +int spectra_bandpower(struct spectra * psp, + int l1, + int l2, + double * TT_II, + double * TT_RI, + double * TT_RR + ) { + + int l; + int index_md; + double * cl_tot; + double ** cl_md; + double ** cl_md_ic; + + class_alloc(cl_tot,psp->ct_size*sizeof(double),psp->error_message); + class_alloc(cl_md,psp->md_size*sizeof(double*),psp->error_message); + class_alloc(cl_md_ic,psp->md_size*sizeof(double*),psp->error_message); + for (index_md=0;index_mdmd_size; index_md++) { + class_alloc(cl_md[index_md],psp->ct_size*sizeof(double),psp->error_message); + class_alloc(cl_md_ic[index_md],psp->ct_size*psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); + } + + *TT_RR=0.; + *TT_RI=0.; + *TT_II=0.; + + for (l=l1; l<=l2; l++) { + + class_call(spectra_cl_at_l(psp, + (double)l, + cl_tot, + cl_md, + cl_md_ic), + psp->error_message, + psp->error_message); + + *TT_RR += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,0,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; + *TT_RI += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]*2.; + *TT_II += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(1,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; + + } + + for (index_md=0;index_mdmd_size; index_md++) { + free(cl_md[index_md]); + free(cl_md_ic[index_md]); + } + free(cl_tot); + free(cl_md); + free(cl_md_ic); + + return _SUCCESS_; + +} + +/** + * Anisotropy power spectra \f$ C_l\f$'s for all types, modes and initial conditions. + * + * This routine evaluates all the \f$C_l\f$'s at a given value of l by + * interpolating in the pre-computed table. When relevant, it also + * sums over all initial conditions for each mode, and over all modes. + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param l Input: multipole number + * @param cl_tot Output: total \f$C_l\f$'s for all types (TT, TE, EE, etc..) + * @param cl_md Output: \f$C_l\f$'s for all types (TT, TE, EE, etc..) decomposed mode by mode (scalar, tensor, ...) when relevant + * @param cl_md_ic Output: \f$C_l\f$'s for all types (TT, TE, EE, etc..) decomposed by pairs of initial conditions (adiabatic, isocurvatures) for each mode (usually, only for the scalar mode) when relevant + * @return the error status + */ + +int spectra_cl_at_l( + struct spectra * psp, + double l, + double * cl_tot, /* array with argument cl_tot[index_ct] (must be already allocated) */ + double * * cl_md, /* array with argument cl_md[index_md][index_ct] (must be already allocated only if several modes) */ + double * * cl_md_ic /* array with argument cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct] (must be already allocated for a given mode only if several ic's) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int last_index; + int index_md; + int index_ic1,index_ic2,index_ic1_ic2; + int index_ct; + + /** - (a) treat case in which there is only one mode and one initial condition. + Then, only cl_tot needs to be filled. */ + + if ((psp->md_size == 1) && (psp->ic_size[0] == 1)) { + index_md = 0; + if ((int)l <= psp->l[psp->l_size[index_md]-1]) { + + /* interpolate at l */ + class_call(array_interpolate_spline(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ddcl[index_md], + psp->ct_size, + l, + &last_index, + cl_tot, + psp->ct_size, + psp->error_message), + psp->error_message, + psp->error_message); + + /* set to zero for the types such that lct_size; index_ct++) + if ((int)l > psp->l_max_ct[index_md][index_ct]) + cl_tot[index_ct]=0.; + } + else { + for (index_ct=0; index_ctct_size; index_ct++) + cl_tot[index_ct]=0.; + } + } + + /** - (b) treat case in which there is only one mode + with several initial condition. + Fill cl_md_ic[index_md=0] and sum it to get cl_tot. */ + + if ((psp->md_size == 1) && (psp->ic_size[0] > 1)) { + index_md = 0; + for (index_ct=0; index_ctct_size; index_ct++) + cl_tot[index_ct]=0.; + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + if (((int)l <= psp->l[psp->l_size[index_md]-1]) && + (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_)) { + + class_call(array_interpolate_spline(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ddcl[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + l, + &last_index, + cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + psp->error_message), + psp->error_message, + psp->error_message); + + for (index_ct=0; index_ctct_size; index_ct++) + if ((int)l > psp->l_max_ct[index_md][index_ct]) + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]=0.; + } + else { + for (index_ct=0; index_ctct_size; index_ct++) + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]=0.; + } + + /* compute cl_tot by summing over cl_md_ic */ + for (index_ct=0; index_ctct_size; index_ct++) { + if (index_ic1 == index_ic2) + cl_tot[index_ct]+=cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]; + else + cl_tot[index_ct]+=2.*cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]; + } + } + } + } + + /** - (c) loop over modes */ + + if (psp->md_size > 1) { + + for (index_ct=0; index_ctct_size; index_ct++) + cl_tot[index_ct]=0.; + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + /** - --> (c.1.) treat case in which the mode under consideration + has only one initial condition. + Fill cl_md[index_md]. */ + + if (psp->ic_size[index_md] == 1) { + if ((int)l <= psp->l[psp->l_size[index_md]-1]) { + + class_call(array_interpolate_spline(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ddcl[index_md], + psp->ct_size, + l, + &last_index, + cl_md[index_md], + psp->ct_size, + psp->error_message), + psp->error_message, + psp->error_message); + + for (index_ct=0; index_ctct_size; index_ct++) + if ((int)l > psp->l_max_ct[index_md][index_ct]) + cl_md[index_md][index_ct]=0.; + } + else { + for (index_ct=0; index_ctct_size; index_ct++) + cl_md[index_md][index_ct]=0.; + } + } + + /** - --> (c.2.) treat case in which the mode under consideration + has several initial conditions. + Fill cl_md_ic[index_md] and sum it to get cl_md[index_md] */ + + if (psp->ic_size[index_md] > 1) { + + if ((int)l <= psp->l[psp->l_size[index_md]-1]) { + + /* interpolate all ic and ct */ + class_call(array_interpolate_spline(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ddcl[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + l, + &last_index, + cl_md_ic[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + psp->error_message), + psp->error_message, + psp->error_message); + + /* set to zero some of the components */ + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + for (index_ct=0; index_ctct_size; index_ct++) { + + if (((int)l > psp->l_max_ct[index_md][index_ct]) || (psp->is_non_zero[index_md][index_ic1_ic2] == _FALSE_)) + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]=0.; + } + } + } + } + /* if l was too big, set anyway all components to zero */ + else { + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + for (index_ct=0; index_ctct_size; index_ct++) { + cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]=0.; + } + } + } + } + + /* sum up all ic for each mode */ + + for (index_ct=0; index_ctct_size; index_ct++) { + + cl_md[index_md][index_ct]=0.; + + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (index_ic1 == index_ic2) + cl_md[index_md][index_ct]+=cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]; + else + cl_md[index_md][index_ct]+=2.*cl_md_ic[index_md][index_ic1_ic2*psp->ct_size+index_ct]; + } + } + } + } + + /** - --> (c.3.) add contribution of cl_md[index_md] to cl_tot */ + + for (index_ct=0; index_ctct_size; index_ct++) + cl_tot[index_ct]+=cl_md[index_md][index_ct]; + } + } + + return _SUCCESS_; + +} + +/** + * Matter power spectrum for arbitrary redshift and for all initial conditions. + * + * This routine evaluates the matter power spectrum at a given value of z by + * interpolating in the pre-computed table (if several values of z have been stored) + * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) + * + * + * Can be called in two modes: linear or logarithmic. + * + * - linear: returns P(k) (units: \f$ Mpc^3\f$) + * + * - logarithmic: returns \f$\ln{P(k)}\f$ + * + * One little subtlety: in case of several correlated initial conditions, + * the cross-correlation spectrum can be negative. Then, in logarithmic mode, + * the non-diagonal elements contain the cross-correlation angle \f$ P_{12}/\sqrt{P_{11} P_{22}}\f$ + * (from -1 to 1) instead of \f$\ln{P_{12}}\f$ + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @return the error status + */ + +int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ + double * output_ic /* array with argument output_tot[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] (must be already allocated only if more than one initial condition) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int last_index; + int index_k; + double tau,ln_tau; + int index_ic1,index_ic2,index_ic1_ic2; + + index_md = psp->index_md_scalars; + + /** - first step: convert z into \f$\ln{\tau}\f$ */ + + class_call(background_tau_of_z(pba,z,&tau), + pba->error_message, + psp->error_message); + + class_test(tau <= 0., + psp->error_message, + "negative or null value of conformal time: cannot interpolate"); + + ln_tau = log(tau); + + /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + + /** - --> (a) if only values at tau=tau_today are stored and we want \f$ P(k,z=0)\f$, no need to interpolate */ + + if (psp->ln_tau_size == 1) { + + class_test(z != 0., + psp->error_message, + "asked z=%e but only P(k,z=0) has been tabulated",z); + + for (index_k=0; index_kln_k_size; index_k++) + if (psp->ic_size[index_md] == 1) { + output_tot[index_k] = psp->ln_pk[index_k]; + } + else { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = + psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; + } + } + } + + /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ + + else { + + if (psp->ic_ic_size[index_md] == 1) { + + class_call(array_interpolate_spline(psp->ln_tau, + psp->ln_tau_size, + psp->ln_pk, + psp->ddln_pk, + psp->ln_k_size, + ln_tau, + &last_index, + output_tot, + psp->ln_k_size, + psp->error_message), + psp->error_message, + psp->error_message); + + } + else { + + class_call(array_interpolate_spline(psp->ln_tau, + psp->ln_tau_size, + psp->ln_pk, + psp->ddln_pk, + psp->ic_ic_size[index_md]*psp->ln_k_size, + ln_tau, + &last_index, + output_ic, + psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->error_message), + psp->error_message, + psp->error_message); + } + } + + /** - third step: if there are several initial conditions, compute the total P(k) and set back all uncorrelated coefficients to exactly zero. Check positivity of total P(k). */ + + if (psp->ic_size[index_md] > 1) { + for (index_k=0; index_kln_k_size; index_k++) { + output_tot[index_k] = 0.; + for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + if (index_ic1 == index_ic2) { + output_tot[index_k] += exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); + } + else { + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + output_tot[index_k] += + 2. * output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] * + sqrt(exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]) * + exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])])); + } + else + output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; + } + } + } + + class_test(output_tot[index_k] <= 0., + psp->error_message, + "for k=%e, z=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total=%e results negative", + exp(psp->ln_k[index_k]),z,output_tot[index_k]); + + } + } + + /** - fourth step: depending on requested mode (linear or logarithmic), apply necessary transformation to the output arrays */ + + /** - --> (a) linear mode: if only one initial condition, convert output_pk to linear format; if several initial conditions, convert output_ic to linear format, output_tot is already in this format */ + + if (mode == linear) { + + if (psp->ic_size[index_md] == 1) { + for (index_k=0; index_kln_k_size; index_k++) { + output_tot[index_k] = exp(output_tot[index_k]); + } + } + + else { + for (index_k=0; index_kln_k_size; index_k++) { + for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); + output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); + } + for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + + output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = + output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] + *sqrt(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * + output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); + } + } + } + } + } + + /** - --> (b) logarithmic mode: if only one initial condition, nothing to be done; if several initial conditions, convert output_tot to logarithmic format, output_ic is already in this format */ + + else { + + if (psp->ic_size[index_md] > 1) { + for (index_k=0; index_kln_k_size; index_k++) { + /* we have already checked above that output_tot was positive */ + output_tot[index_k] = log(output_tot[index_k]); + } + } + } + + return _SUCCESS_; + +} + +/** + * Matter power spectrum for arbitrary wavenumber, redshift and initial condition. + * + * This routine evaluates the matter power spectrum at a given value of k and z by + * interpolating in a table of all P(k)'s computed at this z by spectra_pk_at_z() (when kmin <= k <= kmax), + * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): + * the latter case is an approximation, valid when kmin << comoving Hubble scale today. + * Returns zero when k=0. Returns an error when k<0 or k > kmax. + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ + * @param pk_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3\f$ + * @return the error status + */ + +int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, /* pointer to a single number (must be already allocated) */ + double * pk_ic /* array of argument pk_ic[index_ic1_ic2] (must be already allocated only if several initial conditions) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int index_k; + int last_index; + int index_ic1,index_ic2,index_ic1_ic2; + + double * spectrum_at_z = NULL; + double * spectrum_at_z_ic = NULL; + double * spline; + double * pk_primordial_k = NULL; + double kmin; + double * pk_primordial_kmin = NULL; + + index_md = psp->index_md_scalars; + + /** - first step: check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ + + class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), + psp->error_message, + "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); + + /** - deal with case 0 <= k < kmin */ + + if (k < exp(psp->ln_k[0])) { + + /** - --> (a) subcase k=0: then P(k)=0 */ + + if (k == 0.) { + if (psp->ic_size[index_md] == 1) { + *pk_tot=0.; + } + else { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + pk_ic[index_ic1_ic2] = 0.; + } + } + } + + /** - --> (b) subcase 0ln_k_size*sizeof(double), + psp->error_message); + if (psp->ic_size[index_md] > 1) { + class_alloc(spectrum_at_z_ic, + sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->error_message); + } + class_call(spectra_pk_at_z(pba, + psp, + linear, + z, + spectrum_at_z, + spectrum_at_z_ic), + psp->error_message, + psp->error_message); + + /* compute P_primordial(k) */ + class_alloc(pk_primordial_k, + sizeof(double)*psp->ic_ic_size[index_md], + psp->error_message); + class_call(primordial_spectrum_at_k(ppm, + index_md, + linear, + k, + pk_primordial_k), + ppm->error_message,psp->error_message); + + /* compute P_primordial(kmin) */ + kmin = exp(psp->ln_k[0]); + class_alloc(pk_primordial_kmin, + sizeof(double)*psp->ic_ic_size[index_md], + psp->error_message); + class_call(primordial_spectrum_at_k(ppm, + index_md, + linear, + kmin, + pk_primordial_kmin), + ppm->error_message, + psp->error_message); + + /* apply above analytic approximation for P(k) */ + index_k=0; + if (psp->ic_size[index_md] == 1) { + index_ic1_ic2 = 0; + *pk_tot = spectrum_at_z[index_k] + *k*pk_primordial_k[index_ic1_ic2] + /kmin/pk_primordial_kmin[index_ic1_ic2]; + } + else { + for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + pk_ic[index_ic1_ic2] = spectrum_at_z_ic[index_ic1_ic2] + *k*pk_primordial_k[index_ic1_ic2] + /kmin/pk_primordial_kmin[index_ic1_ic2]; + } + } + + free(spectrum_at_z); + if (psp->ic_size[index_md] > 1) + free(spectrum_at_z_ic); + free(pk_primordial_k); + free(pk_primordial_kmin); + + } + } + + /** - deal with case kmin <= k <= kmax */ + + else { + + /* compute P(k,z) (in logarithmic format for more accurate interpolation) */ + class_alloc(spectrum_at_z, + psp->ln_k_size*sizeof(double), + psp->error_message); + if (psp->ic_size[index_md] > 1) { + class_alloc(spectrum_at_z_ic, + sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->error_message); + } + class_call(spectra_pk_at_z(pba, + psp, + logarithmic, + z, + spectrum_at_z, + spectrum_at_z_ic), + psp->error_message, + psp->error_message); + + /* get its second derivatives with spline, then interpolate, then convert to linear format */ + + class_alloc(spline, + sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->error_message); + + if (psp->ic_size[index_md] == 1) { + + class_call(array_spline_table_lines(psp->ln_k, + psp->ln_k_size, + spectrum_at_z, + 1, + spline, + _SPLINE_NATURAL_, + psp->error_message), + psp->error_message, + psp->error_message); + + class_call(array_interpolate_spline(psp->ln_k, + psp->ln_k_size, + spectrum_at_z, + spline, + 1, + log(k), + &last_index, + pk_tot, + 1, + psp->error_message), + psp->error_message, + psp->error_message); + + *pk_tot = exp(*pk_tot); + + } + else { + + class_call(array_spline_table_lines(psp->ln_k, + psp->ln_k_size, + spectrum_at_z_ic, + psp->ic_ic_size[index_md], + spline, + _SPLINE_NATURAL_, + psp->error_message), + psp->error_message, + psp->error_message); + + class_call(array_interpolate_spline(psp->ln_k, + psp->ln_k_size, + spectrum_at_z_ic, + spline, + psp->ic_ic_size[index_md], + log(k), + &last_index, + pk_ic, + psp->ic_ic_size[index_md], + psp->error_message), + psp->error_message, + psp->error_message); + + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); + pk_ic[index_ic1_ic2] = exp(pk_ic[index_ic1_ic2]); + } + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + pk_ic[index_ic1_ic2] = pk_ic[index_ic1_ic2]* + sqrt(pk_ic[index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]* + pk_ic[index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); + } + else { + pk_ic[index_ic1_ic2] = 0.; + } + } + } + free(spectrum_at_z_ic); + } + + free(spectrum_at_z); + free(spline); + } + + /** - last step: if more than one condition, sum over pk_ic to get pk_tot, and set back coefficients of non-correlated pairs to exactly zero. */ + + if (psp->ic_size[index_md] > 1) { + + *pk_tot = 0.; + + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + if (index_ic1 == index_ic2) + *pk_tot += pk_ic[index_ic1_ic2]; + else + *pk_tot += 2.*pk_ic[index_ic1_ic2]; + } + else { + pk_ic[index_ic1_ic2] = 0.; + } + } + } + + class_test(*pk_tot <= 0., + psp->error_message, + "for k=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total results negative",k); + + } + + return _SUCCESS_; + +} + +/** + * Non-linear total matter power spectrum for arbitrary redshift. + * + * This routine evaluates the non-linear matter power spectrum at a given value of z by + * interpolating in the pre-computed table (if several values of z have been stored) + * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) + * + * + * Can be called in two modes: linear or logarithmic. + * + * - linear: returns P(k) (units: Mpc^3) + * + * - logarithmic: returns ln(P(k)) + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) + * @return the error status + */ + +int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot /* array with argument output_tot[index_k] (must be already allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int last_index; + int index_k; + double tau,ln_tau; + + /** - first step: convert z into ln(tau) */ + + class_call(background_tau_of_z(pba,z,&tau), + pba->error_message, + psp->error_message); + + class_test(tau <= 0., + psp->error_message, + "negative or null value of conformal time: cannot interpolate"); + + ln_tau = log(tau); + + /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + + /** - --> (a) if only values at tau=tau_today are stored and we want P(k,z=0), no need to interpolate */ + + if (psp->ln_tau_size == 1) { + + class_test(z != 0., + psp->error_message, + "asked z=%e but only P(k,z=0) has been tabulated",z); + + for (index_k=0; index_kln_k_size; index_k++) { + output_tot[index_k] = psp->ln_pk_nl[index_k]; + } + } + + /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ + + else { + + class_call(array_interpolate_spline(psp->ln_tau, + psp->ln_tau_size, + psp->ln_pk_nl, + psp->ddln_pk_nl, + psp->ln_k_size, + ln_tau, + &last_index, + output_tot, + psp->ln_k_size, + psp->error_message), + psp->error_message, + psp->error_message); + } + + /** - fourth step: eventually convert to linear format */ + + if (mode == linear) { + for (index_k=0; index_kln_k_size; index_k++) { + output_tot[index_k] = exp(output_tot[index_k]); + } + } + + return _SUCCESS_; + +} + +/** + * Non-linear total matter power spectrum for arbitrary wavenumber and redshift. + * + * This routine evaluates the matter power spectrum at a given value of k and z by + * interpolating in a table of all P(k)'s computed at this z by spectra_pk_nl_at_z() (when kmin <= k <= kmax), + * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): + * the latter case is an approximation, valid when kmin << comoving Hubble scale today. + * Returns zero when k=0. Returns an error when k<0 or k > kmax. + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ + * @return the error status + */ + +int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot /* pointer to a single number (must be already allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int last_index; + + double * spectrum_at_z = NULL; + double * spline; + + index_md = psp->index_md_scalars; + + /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ + + class_test((k < exp(psp->ln_k[0])) || (k > exp(psp->ln_k[psp->ln_k_size-1])), + psp->error_message, + "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); + + /** - compute P(k,z) (in logarithmic format for more accurate interpolation) */ + class_alloc(spectrum_at_z, + psp->ln_k_size*sizeof(double), + psp->error_message); + + class_call(spectra_pk_nl_at_z(pba, + psp, + logarithmic, + z, + spectrum_at_z), + psp->error_message, + psp->error_message); + + /** - get its second derivatives with spline, then interpolate, then convert to linear format */ + + class_alloc(spline, + sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->error_message); + + class_call(array_spline_table_lines(psp->ln_k, + psp->ln_k_size, + spectrum_at_z, + 1, + spline, + _SPLINE_NATURAL_, + psp->error_message), + psp->error_message, + psp->error_message); + + class_call(array_interpolate_spline(psp->ln_k, + psp->ln_k_size, + spectrum_at_z, + spline, + 1, + log(k), + &last_index, + pk_tot, + 1, + psp->error_message), + psp->error_message, + psp->error_message); + + *pk_tot = exp(*pk_tot); + + free(spectrum_at_z); + free(spline); + + return _SUCCESS_; + +} + + +/** + * Matter transfer functions \f$ T_i(k) \f$ for arbitrary redshift and for all + * initial conditions. + * + * This routine evaluates the matter transfer functions at a given value of z by + * interpolating in the pre-computed table (if several values of z have been stored) + * or by directly reading it (if it only contains values at z=0 and we want \f$ T_i(k,z=0)\f$) + * + * + * This function can be + * called from whatever module at whatever time, provided that + * spectra_init() has been called before, and spectra_free() has not + * been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ + +int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output /* array with argument output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] (must be already allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int last_index; + int index_k; + int index_tr; + double tau,ln_tau; + int index_ic; + + index_md = psp->index_md_scalars; + + /** - first step: convert z into ln(tau) */ + + class_call(background_tau_of_z(pba,z,&tau), + pba->error_message, + psp->error_message); + + class_test(tau <= 0., + psp->error_message, + "negative or null value of conformal time: cannot interpolate"); + + ln_tau = log(tau); + + /** - second step: store the matter transfer functions in the output array */ + + /** - --> (a) if only values at tau=tau_today are stored and we want \f$ T_i(k,z=0)\f$, no need to interpolate */ + + if (psp->ln_tau_size == 1) { + + class_test(z != 0., + psp->error_message, + "asked z=%e but only T_i(k,z=0) has been tabulated",z); + + for (index_k=0; index_kln_k_size; index_k++) + for (index_tr=0; index_trtr_size; index_tr++) + for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) + output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] + = psp->matter_transfer[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr]; + + } + + /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ + + else { + + class_call(array_interpolate_spline(psp->ln_tau, + psp->ln_tau_size, + psp->matter_transfer, + psp->ddmatter_transfer, + psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, + ln_tau, + &last_index, + output, + psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, + psp->error_message), + psp->error_message, + psp->error_message); + + } + + return _SUCCESS_; + +} + +/** + * Matter transfer functions \f$ T_i(k)\f$ for arbitrary wavenumber, redshift + * and initial condition. + * + * This routine evaluates the matter transfer functions at a given + * value of k and z by interpolating in a table of all \f$ T_i(k,z)\f$'s + * computed at this z by spectra_tk_at_z() (when kmin <= k <= kmax). + * Returns an error when k kmax. + * + * This function can be called from whatever module at whatever time, + * provided that spectra_init() has been called before, and + * spectra_free() has not been called yet. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ + +int spectra_tk_at_k_and_z( + struct background * pba, + struct spectra * psp, + double k, + double z, + double * output /* array with argument output[index_ic*psp->tr_size+index_tr] (must be already allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int last_index; + double * tks_at_z; + double * ddtks_at_z; + + index_md = psp->index_md_scalars; + + /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_tk_at_z()) */ + + class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), + psp->error_message, + "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); + + /** - compute T_i(k,z) */ + + class_alloc(tks_at_z, + psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), + psp->error_message); + + class_call(spectra_tk_at_z(pba, + psp, + z, + tks_at_z), + psp->error_message, + psp->error_message); + + /** - get its second derivatives w.r.t. k with spline, then interpolate */ + + class_alloc(ddtks_at_z, + psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), + psp->error_message); + + class_call(array_spline_table_lines(psp->ln_k, + psp->ln_k_size, + tks_at_z, + psp->tr_size*psp->ic_size[index_md], + ddtks_at_z, + _SPLINE_NATURAL_, + psp->error_message), + psp->error_message, + psp->error_message); + + class_call(array_interpolate_spline(psp->ln_k, + psp->ln_k_size, + tks_at_z, + ddtks_at_z, + psp->tr_size*psp->ic_size[index_md], + log(k), + &last_index, + output, + psp->tr_size*psp->ic_size[index_md], + psp->error_message), + psp->error_message, + psp->error_message); + + free(tks_at_z); + free(ddtks_at_z); + + return _SUCCESS_; + +} + +/** + * This routine initializes the spectra structure (in particular, + * computes table of anisotropy and Fourier spectra \f$ C_l^{X}, P(k), ... \f$) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfer structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param psp Output: pointer to initialized spectra structure + * @return the error status + */ + +int spectra_init( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear *pnl, + struct transfers * ptr, + struct spectra * psp + ) { + + /** Summary: */ + + double TT_II,TT_RI,TT_RR; + int l1,l2; + + /** - check that we really want to compute at least one spectrum */ + + if ((ppt->has_cls == _FALSE_) && + (ppt->has_pk_matter == _FALSE_) && + (ppt->has_density_transfers == _FALSE_) && + (ppt->has_velocity_transfers == _FALSE_)) { + psp->md_size = 0; + if (psp->spectra_verbose > 0) + printf("No spectra requested. Spectra module skipped.\n"); + return _SUCCESS_; + } + else { + if (psp->spectra_verbose > 0) + printf("Computing unlensed linear spectra\n"); + } + + /** - initialize indices and allocate some of the arrays in the + spectra structure */ + + class_call(spectra_indices(pba,ppt,ptr,ppm,psp), + psp->error_message, + psp->error_message); + + /** - deal with \f$ C_l\f$'s, if any */ + + if (ppt->has_cls == _TRUE_) { + + class_call(spectra_cls(pba,ppt,ptr,ppm,psp), + psp->error_message, + psp->error_message); + + } + else { + psp->ct_size=0; + } + + /** - deal with \f$ P(k,\tau)\f$ and \f$ T_i(k,\tau)\f$ */ + + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { + + class_call(spectra_k_and_tau(pba,ppt,psp), + psp->error_message, + psp->error_message); + + if (ppt->has_pk_matter == _TRUE_) { + + class_call(spectra_pk(pba,ppt,ppm,pnl,psp), + psp->error_message, + psp->error_message); + + } + else { + psp->ln_pk=NULL; + } + + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { + + class_call(spectra_matter_transfers(pba,ppt,psp), + psp->error_message, + psp->error_message); + } + else { + psp->matter_transfer=NULL; + } + + } + else { + psp->ln_k_size=0; + } + + /* if there is one isocurvature mode, compute and store in the psp + structure the isocurvature contribution to some bandpowers in + different ranges of l, and the contribution to the primordial + spectrum at different wavenumbers (used in the Planck + analysis) */ + + if ((ppt->has_scalars == _TRUE_) && (ppt->has_cls == _TRUE_) && (ppt->ic_size[ppt->index_md_scalars] == 2)) { + + l1=2; + l2=20; + + class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), + psp->error_message, + psp->error_message); + + class_test(TT_II+TT_RI+TT_RR==0., + psp->error_message, + "should never happen"); + + psp->alpha_II_2_20=TT_II/(TT_II+TT_RI+TT_RR); + psp->alpha_RI_2_20=TT_RI/(TT_II+TT_RI+TT_RR); + psp->alpha_RR_2_20=TT_RR/(TT_II+TT_RI+TT_RR); + + l1=21; + l2=200; + + class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), + psp->error_message, + psp->error_message); + + class_test(TT_II+TT_RI+TT_RR==0., + psp->error_message, + "should never happen"); + + psp->alpha_II_21_200=TT_II/(TT_II+TT_RI+TT_RR); + psp->alpha_RI_21_200=TT_RI/(TT_II+TT_RI+TT_RR); + psp->alpha_RR_21_200=TT_RR/(TT_II+TT_RI+TT_RR); + + l1=201; + l2=2500; + + class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), + psp->error_message, + psp->error_message); + + class_test(TT_II+TT_RI+TT_RR==0., + psp->error_message, + "should never happen"); + + psp->alpha_II_201_2500=TT_II/(TT_II+TT_RI+TT_RR); + psp->alpha_RI_201_2500=TT_RI/(TT_II+TT_RI+TT_RR); + psp->alpha_RR_201_2500=TT_RR/(TT_II+TT_RI+TT_RR); + + l1=2; + l2=2500; + + class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), + psp->error_message, + psp->error_message); + + class_test(TT_II+TT_RI+TT_RR==0., + psp->error_message, + "should never happen"); + + psp->alpha_II_2_2500=TT_II/(TT_II+TT_RI+TT_RR); + psp->alpha_RI_2_2500=TT_RI/(TT_II+TT_RI+TT_RR); + psp->alpha_RR_2_2500=TT_RR/(TT_II+TT_RI+TT_RR); + + if (ppt->has_cdi==_TRUE_) { + + psp->alpha_kp=ppm->f_cdi*ppm->f_cdi + /(1.+ppm->f_cdi*ppm->f_cdi); + + psp->alpha_k1=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot)) + /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot))); + + psp->alpha_k2=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot)) + /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot))); + } + + if (ppt->has_nid==_TRUE_) { + + psp->alpha_kp=ppm->f_nid*ppm->f_nid + /(1.+ppm->f_nid*ppm->f_nid); + + psp->alpha_k1=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot)) + /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot))); + + psp->alpha_k2=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot)) + /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot))); + } + + if (ppt->has_niv==_TRUE_) { + + psp->alpha_kp=ppm->f_niv*ppm->f_niv + /(1.+ppm->f_niv*ppm->f_niv); + + psp->alpha_k1=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot)) + /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot))); + + psp->alpha_k2=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot)) + /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot))); + } + } + + return _SUCCESS_; +} + +/** + * This routine frees all the memory space allocated by spectra_init(). + * + * To be called at the end of each run, only when no further calls to + * spectra_cls_at_l(), spectra_pk_at_z(), spectra_pk_at_k_and_z() are needed. + * + * @param psp Input: pointer to spectra structure (which fields must be freed) + * @return the error status + */ + +int spectra_free( + struct spectra * psp + ) { + + int index_md; + + if (psp->md_size > 0) { + + if (psp->ct_size > 0) { + + for (index_md = 0; index_md < psp->md_size; index_md++) { + free(psp->l_max_ct[index_md]); + free(psp->cl[index_md]); + free(psp->ddcl[index_md]); + } + free(psp->l); + free(psp->l_size); + free(psp->l_max_ct); + free(psp->l_max); + free(psp->cl); + free(psp->ddcl); + } + + if (psp->ln_k_size > 0) { + + free(psp->ln_tau); + free(psp->ln_k); + + if (psp->ln_pk != NULL) { + + free(psp->ln_pk); + + if (psp->ln_tau_size > 1) { + free(psp->ddln_pk); + } + + if (psp->ln_pk_nl != NULL) { + + free(psp->ln_pk_nl); + + if (psp->ln_tau_size > 1) { + free(psp->ddln_pk_nl); + } + } + } + + if (psp->matter_transfer != NULL) { + + free(psp->matter_transfer); + if (psp->ln_tau_size > 1) { + free(psp->ddmatter_transfer); + } + } + } + } + + for (index_md=0; index_md < psp->md_size; index_md++) + free(psp->is_non_zero[index_md]); + free(psp->is_non_zero); + free(psp->ic_size); + free(psp->ic_ic_size); + + return _SUCCESS_; + +} + +/** + * This routine defines indices and allocates tables in the spectra structure + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/output: pointer to spectra structure + * @return the error status + */ + +int spectra_indices( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ){ + + int index_ct; + int index_md; + int index_ic1_ic2; + int index_tr; + + psp->md_size = ppt->md_size; + if (ppt->has_scalars == _TRUE_) + psp->index_md_scalars = ppt->index_md_scalars; + + class_alloc(psp->ic_size, + sizeof(int)*psp->md_size, + psp->error_message); + + class_alloc(psp->ic_ic_size, + sizeof(int)*psp->md_size, + psp->error_message); + + class_alloc(psp->is_non_zero, + sizeof(short *)*psp->md_size, + psp->error_message); + + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->ic_size[index_md] = ppm->ic_size[index_md]; + psp->ic_ic_size[index_md] = ppm->ic_ic_size[index_md]; + class_alloc(psp->is_non_zero[index_md], + sizeof(short)*psp->ic_ic_size[index_md], + psp->error_message); + for (index_ic1_ic2=0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) + psp->is_non_zero[index_md][index_ic1_ic2] = ppm->is_non_zero[index_md][index_ic1_ic2]; + } + + if (ppt->has_cls == _TRUE_) { + + /* types of C_l's relevant for both scalars and tensors: TT, EE, TE */ + + index_ct=0; + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + psp->has_tt = _TRUE_; + psp->index_ct_tt=index_ct; + index_ct++; + } + else { + psp->has_tt = _FALSE_; + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_ee = _TRUE_; + psp->index_ct_ee=index_ct; + index_ct++; + } + else { + psp->has_ee = _FALSE_; + } + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && + (ppt->has_cl_cmb_polarization == _TRUE_)) { + psp->has_te = _TRUE_; + psp->index_ct_te=index_ct; + index_ct++; + } + else { + psp->has_te = _FALSE_; + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_bb = _TRUE_; + psp->index_ct_bb=index_ct; + index_ct++; + } + else { + psp->has_bb = _FALSE_; + } + + /* types of C_l's relevant only for scalars: phi-phi, T-phi, E-phi, d-d, T-d */ + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pp = _TRUE_; + psp->index_ct_pp=index_ct; + index_ct++; + } + else { + psp->has_pp = _FALSE_; + } + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tp = _TRUE_; + psp->index_ct_tp=index_ct; + index_ct++; + } + else { + psp->has_tp = _FALSE_; + } + + psp->ct_size = index_ct; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ep = _TRUE_; + psp->index_ct_ep=index_ct; + index_ct++; + } + else { + psp->has_ep = _FALSE_; + } + + if ((ppt->has_scalars == _TRUE_) && + ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_))) + psp->d_size=ppt->selection_num; + else + psp->d_size=0; + + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dd = _TRUE_; + psp->index_ct_dd=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_dd = _FALSE_; + } + + /* the computation of C_l^Td would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_td = _TRUE_; + psp->index_ct_td=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_td = _FALSE_; + } + */ + psp->has_td = _FALSE_; + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pd = _TRUE_; + psp->index_ct_pd=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_pd = _FALSE_; + } + + psp->has_td = _FALSE_; + + if ((ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ll = _TRUE_; + psp->index_ct_ll=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_ll = _FALSE_; + } + + /* the computation of C_l^Tl would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tl = _TRUE_; + psp->index_ct_tl=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_tl = _FALSE_; + } + */ + psp->has_tl = _FALSE_; + + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dl = _TRUE_; + psp->index_ct_dl=index_ct; + index_ct += psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag); + } + else { + psp->has_dl = _FALSE_; + } + + psp->ct_size = index_ct; + + /* infer from input quantities the l_max for each mode and type, + l_max_ct[index_md][index_type]. Maximize it over index_ct, and + then over index_md. */ + + class_alloc(psp->l_max,sizeof(int*)*psp->md_size,psp->error_message); + class_alloc(psp->l_max_ct,sizeof(int*)*psp->md_size,psp->error_message); + for (index_md=0; index_mdmd_size; index_md++) { + class_calloc(psp->l_max_ct[index_md],psp->ct_size,sizeof(int),psp->error_message); + } + + if (ppt->has_scalars == _TRUE_) { + + /* spectra computed up to l_scalar_max */ + + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tt] = ppt->l_scalar_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ee] = ppt->l_scalar_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_te] = ppt->l_scalar_max; + if (psp->has_pp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_pp] = ppt->l_scalar_max; + if (psp->has_tp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tp] = ppt->l_scalar_max; + if (psp->has_ep == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ep] = ppt->l_scalar_max; + + /* spectra computed up to l_lss_max */ + + if (psp->has_dd == _TRUE_) + for (index_ct=psp->index_ct_dd; + index_ctindex_ct_dd+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; + + if (psp->has_td == _TRUE_) + for (index_ct=psp->index_ct_td; + index_ctindex_ct_td+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); + + if (psp->has_pd == _TRUE_) + for (index_ct=psp->index_ct_pd; + index_ctindex_ct_pd+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); + + if (psp->has_ll == _TRUE_) + for (index_ct=psp->index_ct_ll; + index_ctindex_ct_ll+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; + + if (psp->has_tl == _TRUE_) + for (index_ct=psp->index_ct_tl; + index_ctindex_ct_tl+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); + + if (psp->has_dl == _TRUE_) + for (index_ct=psp->index_ct_dl; + index_ct < psp->index_ct_dl+(psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag)); + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; + + } + if (ppt->has_tensors == _TRUE_) { + + /* spectra computed up to l_tensor_max */ + + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_tt] = ppt->l_tensor_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_ee] = ppt->l_tensor_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_te] = ppt->l_tensor_max; + if (psp->has_bb == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_bb] = ppt->l_tensor_max; + } + + /* maximizations */ + psp->l_max_tot = 0.; + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->l_max[index_md] = 0.; + for (index_ct=0.; index_ctct_size; index_ct++) + psp->l_max[index_md] = MAX(psp->l_max[index_md],psp->l_max_ct[index_md][index_ct]); + psp->l_max_tot = MAX(psp->l_max_tot,psp->l_max[index_md]); + } + } + + /* indices for species associated with a matter transfer function in Fourier space */ + + index_tr=0; + class_define_index(psp->index_tr_delta_g,ppt->has_source_delta_g,index_tr,1); + class_define_index(psp->index_tr_delta_b,ppt->has_source_delta_b,index_tr,1); + class_define_index(psp->index_tr_delta_cdm,ppt->has_source_delta_cdm,index_tr,1); + class_define_index(psp->index_tr_delta_dcdm,ppt->has_source_delta_dcdm,index_tr,1); + class_define_index(psp->index_tr_delta_scf,ppt->has_source_delta_scf,index_tr,1); + class_define_index(psp->index_tr_delta_fld,ppt->has_source_delta_fld,index_tr,1); + class_define_index(psp->index_tr_delta_ur,ppt->has_source_delta_ur,index_tr,1); + class_define_index(psp->index_tr_delta_dr,ppt->has_source_delta_dr,index_tr,1); + class_define_index(psp->index_tr_delta_ncdm1,ppt->has_source_delta_ncdm,index_tr,pba->N_ncdm); + class_define_index(psp->index_tr_delta_tot,ppt->has_density_transfers,index_tr,1); + class_define_index(psp->index_tr_phi,ppt->has_source_phi,index_tr,1); + class_define_index(psp->index_tr_psi,ppt->has_source_psi,index_tr,1); + + /* indices for species associated with a velocity transfer function in Fourier space */ + + class_define_index(psp->index_tr_theta_g,ppt->has_source_theta_g,index_tr,1); + class_define_index(psp->index_tr_theta_b,ppt->has_source_theta_b,index_tr,1); + class_define_index(psp->index_tr_theta_cdm,ppt->has_source_theta_cdm,index_tr,1); + class_define_index(psp->index_tr_theta_dcdm,ppt->has_source_theta_dcdm,index_tr,1); + class_define_index(psp->index_tr_theta_scf,ppt->has_source_theta_scf,index_tr,1); + class_define_index(psp->index_tr_theta_fld,ppt->has_source_theta_fld,index_tr,1); + class_define_index(psp->index_tr_theta_ur,ppt->has_source_theta_ur,index_tr,1); + class_define_index(psp->index_tr_theta_dr,ppt->has_source_theta_dr,index_tr,1); + class_define_index(psp->index_tr_theta_ncdm1,ppt->has_source_theta_ncdm,index_tr,pba->N_ncdm); + class_define_index(psp->index_tr_theta_tot,ppt->has_velocity_transfers,index_tr,1); + + psp->tr_size = index_tr; + + return _SUCCESS_; + +} + +/** + * This routine computes a table of values for all harmonic spectra \f$ C_l \f$'s, + * given the transfer functions and primordial spectra. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/Output: pointer to spectra structure + * @return the error status + */ + +int spectra_cls( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int index_ic1,index_ic2,index_ic1_ic2; + int index_l; + int index_ct; + int cl_integrand_num_columns; + + double * cl_integrand; /* array with argument cl_integrand[index_k*cl_integrand_num_columns+1+psp->index_ct] */ + double * transfer_ic1; /* array with argument transfer_ic1[index_tt] */ + double * transfer_ic2; /* idem */ + double * primordial_pk; /* array with argument primordial_pk[index_ic_ic]*/ + + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" jus after leaving the + parallel region. */ + int abort; + +#ifdef _OPENMP + /* instrumentation times */ + double tstart, tstop; +#endif + + /** - allocate pointers to arrays where results will be stored */ + + class_alloc(psp->l_size,sizeof(int)*psp->md_size,psp->error_message); + class_alloc(psp->cl,sizeof(double *)*psp->md_size,psp->error_message); + class_alloc(psp->ddcl,sizeof(double *)*psp->md_size,psp->error_message); + + psp->l_size_max = ptr->l_size_max; + class_alloc(psp->l,sizeof(double)*psp->l_size_max,psp->error_message); + + /** - store values of l */ + for (index_l=0; index_l < psp->l_size_max; index_l++) { + psp->l[index_l] = (double)ptr->l[index_l]; + } + + /** - loop over modes (scalar, tensors, etc). For each mode: */ + + for (index_md = 0; index_md < psp->md_size; index_md++) { + + /** - --> (a) store number of l values for this mode */ + + psp->l_size[index_md] = ptr->l_size[index_md]; + + /** - --> (b) allocate arrays where results will be stored */ + + class_alloc(psp->cl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + class_alloc(psp->ddcl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + cl_integrand_num_columns = 1+psp->ct_size*2; /* one for k, ct_size for each type, ct_size for each second derivative of each type */ + + /** - --> (c) loop over initial conditions */ + + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + /* non-diagonal coefficients should be computed only if non-zero correlation */ + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + /* initialize error management flag */ + abort = _FALSE_; + + /* beginning of parallel region */ + +#pragma omp parallel \ + shared(ptr,ppm,index_md,psp,ppt,cl_integrand_num_columns,index_ic1,index_ic2,abort) \ + private(tstart,cl_integrand,primordial_pk,transfer_ic1,transfer_ic2,index_l,tstop) + + { + +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif + + class_alloc_parallel(cl_integrand, + ptr->q_size*cl_integrand_num_columns*sizeof(double), + psp->error_message); + + class_alloc_parallel(primordial_pk, + psp->ic_ic_size[index_md]*sizeof(double), + psp->error_message); + + class_alloc_parallel(transfer_ic1, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); + + class_alloc_parallel(transfer_ic2, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); + +#pragma omp for schedule (dynamic) + + /** - ---> loop over l values defined in the transfer module. + For each l, compute the \f$ C_l\f$'s for all types (TT, TE, ...) + by convolving primordial spectra with transfer functions. + This elementary task is assigned to spectra_compute_cl() */ + + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { + +#pragma omp flush(abort) + + class_call_parallel(spectra_compute_cl(pba, + ppt, + ptr, + ppm, + psp, + index_md, + index_ic1, + index_ic2, + index_l, + cl_integrand_num_columns, + cl_integrand, + primordial_pk, + transfer_ic1, + transfer_ic2), + psp->error_message, + psp->error_message); + + } /* end of loop over l */ + +#ifdef _OPENMP + tstop = omp_get_wtime(); + if (psp->spectra_verbose > 1) + printf("In %s: time spent in parallel region (loop over l's) = %e s for thread %d\n", + __func__,tstop-tstart,omp_get_thread_num()); +#endif + free(cl_integrand); + + free(primordial_pk); + + free(transfer_ic1); + + free(transfer_ic2); + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + } + else { + + /* set non-diagonal coefficients to zero if pair of ic's uncorrelated */ + + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { + for (index_ct=0; index_ctct_size; index_ct++) { + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = 0.; + } + } + } + } + } + + /** - --> (d) now that for a given mode, all possible \f$ C_l\f$'s have been computed, + compute second derivative of the array in which they are stored, + in view of spline interpolation. */ + + class_call(array_spline_table_lines(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + psp->ddcl[index_md], + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + } + + return _SUCCESS_; + +} + +/** + * This routine computes the \f$ C_l\f$'s for a given mode, pair of initial conditions + * and multipole, but for all types (TT, TE...), by convolving the + * transfer functions with the primordial spectra. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/Output: pointer to spectra structure (result stored here) + * @param index_md Input: index of mode under consideration + * @param index_ic1 Input: index of first initial condition in the correlator + * @param index_ic2 Input: index of second initial condition in the correlator + * @param index_l Input: index of multipole under consideration + * @param cl_integrand_num_columns Input: number of columns in cl_integrand + * @param cl_integrand Input: an allocated workspace + * @param primordial_pk Input: table of primordial spectrum values + * @param transfer_ic1 Input: table of transfer function values for first initial condition + * @param transfer_ic2 Input: table of transfer function values for second initial condition + * @return the error status + */ + +int spectra_compute_cl( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + int index_md, + int index_ic1, + int index_ic2, + int index_l, + int cl_integrand_num_columns, + double * cl_integrand, + double * primordial_pk, + double * transfer_ic1, + double * transfer_ic2 + ) { + + int index_q; + int index_tt; + int index_ct; + int index_d1,index_d2; + double k; + double clvalue; + int index_ic1_ic2; + double transfer_ic1_temp=0.; + double transfer_ic2_temp=0.; + double * transfer_ic1_nc=NULL; + double * transfer_ic2_nc=NULL; + double factor; + int index_q_spline=0; + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (ppt->has_cl_number_count == _TRUE_) { + class_alloc(transfer_ic1_nc,psp->d_size*sizeof(double),psp->error_message); + class_alloc(transfer_ic2_nc,psp->d_size*sizeof(double),psp->error_message); + } + + for (index_q=0; index_q < ptr->q_size; index_q++) { + + //q = ptr->q[index_q]; + k = ptr->k[index_md][index_q]; + + cl_integrand[index_q*cl_integrand_num_columns+0] = k; + + class_call(primordial_spectrum_at_k(ppm,index_md,linear,k,primordial_pk), + ppm->error_message, + psp->error_message); + + /* above routine checks that k>0: no possible division by zero below */ + + for (index_tt=0; index_tt < ptr->tt_size[index_md]; index_tt++) { + + transfer_ic1[index_tt] = + ptr->transfer[index_md] + [((index_ic1 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; + + if (index_ic1 == index_ic2) { + transfer_ic2[index_tt] = transfer_ic1[index_tt]; + } + else { + transfer_ic2[index_tt] = ptr->transfer[index_md] + [((index_ic2 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; + } + } + + /* define combinations of transfer functions */ + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + + if (_scalars_) { + + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t0] + transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t0] + transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; + + } + + if (_vectors_) { + + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; + + } + + if (_tensors_) { + + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t2]; + + } + } + + if (ppt->has_cl_number_count == _TRUE_) { + + for (index_d1=0; index_d1d_size; index_d1++) { + + transfer_ic1_nc[index_d1] = 0.; + transfer_ic2_nc[index_d1] = 0.; + + if (ppt->has_nc_density == _TRUE_) { + transfer_ic1_nc[index_d1] += transfer_ic1[ptr->index_tt_density+index_d1]; + transfer_ic2_nc[index_d1] += transfer_ic2[ptr->index_tt_density+index_d1]; + } + + if (ppt->has_nc_rsd == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_rsd+index_d1] + + transfer_ic1[ptr->index_tt_d0+index_d1] + + transfer_ic1[ptr->index_tt_d1+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_rsd+index_d1] + + transfer_ic2[ptr->index_tt_d0+index_d1] + + transfer_ic2[ptr->index_tt_d1+index_d1]; + } + + if (ppt->has_nc_lens == _TRUE_) { + transfer_ic1_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic1[ptr->index_tt_nc_lens+index_d1]; + transfer_ic2_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic2[ptr->index_tt_nc_lens+index_d1]; + } + + if (ppt->has_nc_gr == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_nc_g1+index_d1] + + transfer_ic1[ptr->index_tt_nc_g2+index_d1] + + transfer_ic1[ptr->index_tt_nc_g3+index_d1] + + transfer_ic1[ptr->index_tt_nc_g4+index_d1] + + transfer_ic1[ptr->index_tt_nc_g5+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_nc_g1+index_d1] + + transfer_ic2[ptr->index_tt_nc_g2+index_d1] + + transfer_ic2[ptr->index_tt_nc_g3+index_d1] + + transfer_ic2[ptr->index_tt_nc_g4+index_d1] + + transfer_ic2[ptr->index_tt_nc_g5+index_d1]; + } + + } + } + + /* integrand of Cl's */ + + /* note: we must integrate + + C_l = int [4 pi dk/k calP(k) Delta1_l(q) Delta2_l(q)] + + where calP(k) is the dimensionless + power spectrum equal to a constant in the scale-invariant case, + and to P(k) = A_s k^(ns-1) otherwise and q=sqrt(k2+K) (scalars) + or sqrt(k2+2K) (vectors) or sqrt(k2+3K) (tensors) + + In the literature, people often rewrite the integral in terms + of q and absorb the Jacobian of the change of variables in a redefinition of the primodial + spectrum. Let us illustrate this for scalars: + + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-K)] = q2dq * 1/[q(q2-K)] + + This factor 1/[q(q2-K)] is commonly absorbed in the definition of calP. Then one would have + + C_l = int [4 pi q2 dq {A_s k^(ns-1)/[q(q2-K)]} Delta1_l(q) Delta2_l(q)] + + Sometimes in the literature, the factor (k2-3K)=(q2-4K) present + in the initial conditions of scalar transfer functions (if + normalized to curvature R=1) is also absorbed in the definition + of the power spectrum. Then the curvature power spectrum reads + + calP = (q2-4K)/[q(q2-K)] * (k/k)^ns + + In CLASS we prefer to define calP = (k/k)^ns like in the flat + case, to have the factor (q2-4K) in the initialk conditions, + and the factor 1/[q(q2-K)] doesn't need to be there since we + integrate over dk/k. + + For tensors, the change of variable described above gives a slightly different result: + + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-3K)] = q2dq * 1/[q(q2-3K)] + + But for tensors there are extra curvature-related correction factors to + take into account. See the comments in the perturbation module, + related to initial conditions for tensors. + + */ + + factor = 4. * _PI_ / k; + + if (psp->has_tt == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tt]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_temp + * transfer_ic2_temp + * factor; + + if (psp->has_ee == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ee]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_e] + * transfer_ic2[ptr->index_tt_e] + * factor; + + if (psp->has_te == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_te]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_e] + + transfer_ic1[ptr->index_tt_e] * transfer_ic2_temp) + * factor; + + if (_tensors_ && (psp->has_bb == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_bb]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_b] + * transfer_ic2[ptr->index_tt_b] + * factor; + + if (_scalars_ && (psp->has_pp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pp]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lcmb] + * transfer_ic2[ptr->index_tt_lcmb] + * factor; + + if (_scalars_ && (psp->has_tp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tp]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_temp) + * factor; + + if (_scalars_ && (psp->has_ep == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ep]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_e] * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2[ptr->index_tt_e]) + * factor; + + if (_scalars_ && (psp->has_dd == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dd+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] + * transfer_ic2_nc[index_d2] + * factor; + index_ct++; + } + } + } + + if (_scalars_ && (psp->has_td == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_td+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2_temp) + * factor; + } + } + + if (_scalars_ && (psp->has_pd == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pd+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lcmb]) + * factor; + } + } + + if (_scalars_ && (psp->has_ll == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ll+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lensing+index_d1] + * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; + } + } + } + + if (_scalars_ && (psp->has_tl == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tl+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lensing+index_d1] + + transfer_ic1[ptr->index_tt_lensing+index_d1] * transfer_ic2_temp) + * factor; + } + } + + if (_scalars_ && (psp->has_dl == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dl+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; + } + } + } + } + + for (index_ct=0; index_ctct_size; index_ct++) { + + /* treat null spectra (C_l^BB of scalars, C_l^pp of tensors, etc. */ + + if ((_scalars_ && (psp->has_bb == _TRUE_) && (index_ct == psp->index_ct_bb)) || + (_tensors_ && (psp->has_pp == _TRUE_) && (index_ct == psp->index_ct_pp)) || + (_tensors_ && (psp->has_tp == _TRUE_) && (index_ct == psp->index_ct_tp)) || + (_tensors_ && (psp->has_ep == _TRUE_) && (index_ct == psp->index_ct_ep)) || + (_tensors_ && (psp->has_dd == _TRUE_) && (index_ct == psp->index_ct_dd)) || + (_tensors_ && (psp->has_td == _TRUE_) && (index_ct == psp->index_ct_td)) || + (_tensors_ && (psp->has_pd == _TRUE_) && (index_ct == psp->index_ct_pd)) || + (_tensors_ && (psp->has_ll == _TRUE_) && (index_ct == psp->index_ct_ll)) || + (_tensors_ && (psp->has_tl == _TRUE_) && (index_ct == psp->index_ct_tl)) || + (_tensors_ && (psp->has_dl == _TRUE_) && (index_ct == psp->index_ct_dl)) + ) { + + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] = 0.; + + } + /* for non-zero spectra, integrate over q */ + else { + + /* spline the integrand over the whole range of k's */ + + class_call(array_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + + /* Technical point: we will now do a spline integral over the + whole range of k's, excepted in the closed (K>0) case. In + that case, it is a bad idea to spline over the values of k + corresponding to nuindex_q_flat_approximation, to tell the integration + routine that below this index, it should treat the integral + as a trapezoidal one. For testing, one is free to set + index_q_spline to 0, to enforce spline integration + everywhere, or to (ptr->q_size-1), to enforce trapezoidal + integration everywhere. */ + + if (pba->sgnK == 1) { + index_q_spline = ptr->index_q_flat_approximation; + } + + class_call(array_integrate_all_trapzd_or_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + index_q_spline, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + &clvalue, + psp->error_message), + psp->error_message, + psp->error_message); + + /* in the closed case, instead of an integral, we have a + discrete sum. In practice, this does not matter: the previous + routine does give a correct approximation of the discrete + sum, both in the trapezoidal and spline regions. The only + error comes from the first point: the previous routine + assumes a weight for the first point which is too small + compared to what it would be in the an actual discrete + sum. The line below correct this problem in an exact way. + */ + + if (pba->sgnK == 1) { + clvalue += cl_integrand[1+index_ct] * ptr->q[0]/ptr->k[0][0]*sqrt(pba->K)/2.; + } + + /* we have the correct C_l now. We can store it in the transfer structure. */ + + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = clvalue; + + } + } + + if (ppt->has_cl_number_count == _TRUE_) { + free(transfer_ic1_nc); + free(transfer_ic2_nc); + } + + return _SUCCESS_; + +} + +/** + * This routine computes the values of k and tau at which the matter + * power spectra \f$ P(k,\tau)\f$ and the matter transfer functions \f$ T_i(k,\tau)\f$ + * will be stored. + * + * @param pba Input: pointer to background structure (for z to tau conversion) + * @param ppt Input: pointer to perturbation structure (contain source functions) + * @param psp Input/Output: pointer to spectra structure + * @return the error status + */ + +int spectra_k_and_tau( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_k; + int index_tau; + double tau_min; + + /** - check the presence of scalar modes */ + + class_test((ppt->has_scalars == _FALSE_), + psp->error_message, + "you cannot ask for matter power spectrum since you turned off scalar modes"); + + /** - check the maximum redshift z_max_pk at which \f$P(k,z)\f$ and \f$ T_i(k,z)\f$ should be + computable by interpolation. If it is equal to zero, only \f$ P(k,z=0)\f$ + needs to be computed. If it is higher, we will store in a table + various P(k,tau) at several values of tau generously encompassing + the range 0z_max_pk < 0), + psp->error_message, + "asked for negative redshift z=%e",psp->z_max_pk); + + /* if z_max_pk=0, there is just one value to store */ + if (psp->z_max_pk == 0.) { + psp->ln_tau_size=1; + } + + /* if z_max_pk>0, store several values (with a comfortable margin above z_max_pk) in view of interpolation */ + else{ + + /* find the first relevant value of tau (last value in the table tau_ampling before tau(z_max)) and infer the number of values of tau at which P(k) must be stored */ + + class_call(background_tau_of_z(pba,psp->z_max_pk,&tau_min), + pba->error_message, + psp->error_message); + + index_tau=0; + class_test((tau_min <= ppt->tau_sampling[index_tau]), + psp->error_message, + "you asked for zmax=%e, i.e. taumin=%e, smaller than or equal to the first possible value =%e; it should be strictly bigger for a successfull interpolation",psp->z_max_pk,tau_min,ppt->tau_sampling[0]); + + while (ppt->tau_sampling[index_tau] < tau_min){ + index_tau++; + } + index_tau --; + class_test(index_tau<0, + psp->error_message, + "by construction, this should never happen, a bug must have been introduced somewhere"); + + /* whenever possible, take a few more values in to avoid boundary effects in the interpolation */ + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + psp->ln_tau_size=ppt->tau_size-index_tau; + + } + + /** - allocate and fill table of tau values at which \f$P(k,\tau)\f$ and \f$T_i(k,\tau)\f$ are stored */ + + class_alloc(psp->ln_tau,sizeof(double)*psp->ln_tau_size,psp->error_message); + + for (index_tau=0; index_tauln_tau_size; index_tau++) { + psp->ln_tau[index_tau]=log(ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size]); + } + + /** - allocate and fill table of k values at which \f$ P(k,\tau)\f$ is stored */ + + psp->ln_k_size = ppt->k_size[ppt->index_md_scalars]; + class_alloc(psp->ln_k,sizeof(double)*psp->ln_k_size,psp->error_message); + + for (index_k=0; index_kln_k_size; index_k++) { + class_test(ppt->k[ppt->index_md_scalars][index_k] <= 0., + psp->error_message, + "stop to avoid segmentation fault"); + psp->ln_k[index_k]=log(ppt->k[ppt->index_md_scalars][index_k]); + } + + return _SUCCESS_; +} + +/** + * This routine computes a table of values for all matter power spectra P(k), + * given the source functions and primordial spectra. + * + * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) + * @param ppt Input: pointer to perturbation structure (contain source functions) + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param psp Input/Output: pointer to spectra structure + * @return the error status + */ + +int spectra_pk( + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear *pnl, + struct spectra * psp + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int index_ic1,index_ic2,index_ic1_ic2; + int index_k; + int index_tau; + double * primordial_pk; /* array with argument primordial_pk[index_ic_ic] */ + double source_ic1; + double source_ic2; + double ln_pk_tot; + + /** - check the presence of scalar modes */ + + class_test((ppt->has_scalars == _FALSE_), + psp->error_message, + "you cannot ask for matter power spectrum since you turned off scalar modes"); + + index_md = psp->index_md_scalars; + + /** - allocate temporary vectors where the primordial spectrum and the background quantities will be stored */ + + class_alloc(primordial_pk,psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); + + /** - allocate and fill array of \f$P(k,\tau)\f$ values */ + + class_alloc(psp->ln_pk, + sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md], + psp->error_message); + + if (pnl->method != nl_none) { + class_alloc(psp->ln_pk_nl, + sizeof(double)*psp->ln_tau_size*psp->ln_k_size, + psp->error_message); + } + else { + psp->ln_pk_nl = NULL; + } + + for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { + for (index_k=0; index_kln_k_size; index_k++) { + + class_call(primordial_spectrum_at_k(ppm,index_md,logarithmic,psp->ln_k[index_k],primordial_pk), + ppm->error_message, + psp->error_message); + + ln_pk_tot =0; + + /* curvature primordial spectrum: + P_R(k) = 1/(2pi^2) k^3 + so, primordial curvature correlator: + = (2pi^2) k^-3 P_R(k) + so, delta_m correlator: + P(k) = = (2pi^2) k^-3 (source_m)^2 P_R(k) + + For isocurvature or cross adiabatic-isocurvature parts, + replace one or two 'R' by 'S_i's */ + + /* part diagonal in initial conditions */ + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); + + source_ic1 = ppt->sources[index_md] + [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = + log(2.*_PI_*_PI_/exp(3.*psp->ln_k[index_k]) + *source_ic1*source_ic1 + *exp(primordial_pk[index_ic1_ic2])); + + ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; + + } + + /* part non-diagonal in initial conditions */ + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + + source_ic1 = ppt->sources[index_md] + [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + source_ic2 = ppt->sources[index_md] + [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = + primordial_pk[index_ic1_ic2]*SIGN(source_ic1)*SIGN(source_ic2); + + ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; + + } + else { + psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; + } + } + } + + /* if non-linear corrections required, compute the total non-linear matter power spectrum */ + + if (pnl->method != nl_none) { + + psp->ln_pk_nl[index_tau * psp->ln_k_size + index_k] = + ln_pk_tot + + 2.*log(pnl->nl_corr_density[(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]); + + } + } + } + + /**- if interpolation of \f$P(k,\tau)\f$ will be needed (as a function of tau), + compute array of second derivatives in view of spline interpolation */ + + if (psp->ln_tau_size > 1) { + + class_alloc(psp->ddln_pk,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); + + class_call(array_spline_table_lines(psp->ln_tau, + psp->ln_tau_size, + psp->ln_pk, + psp->ic_ic_size[index_md]*psp->ln_k_size, + psp->ddln_pk, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + + } + + /* compute sigma8 (mean variance today in sphere of radius 8/h Mpc */ + + class_call(spectra_sigma(pba,ppm,psp,8./pba->h,0.,&(psp->sigma8)), + psp->error_message, + psp->error_message); + + if (psp->spectra_verbose>0) + fprintf(stdout," -> sigma8=%g (computed till k = %g h/Mpc)\n", + psp->sigma8, + exp(psp->ln_k[psp->ln_k_size-1])/pba->h); + + /**- if interpolation of \f$ P_{NL}(k,\tau)\f$ will be needed (as a function of tau), + compute array of second derivatives in view of spline interpolation */ + + if (pnl->method != nl_none) { + if (psp->ln_tau_size > 1) { + + class_alloc(psp->ddln_pk_nl,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); + + class_call(array_spline_table_lines(psp->ln_tau, + psp->ln_tau_size, + psp->ln_pk_nl, + psp->ln_k_size, + psp->ddln_pk_nl, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + + } + } + + free (primordial_pk); + + return _SUCCESS_; +} + +/** + * This routine computes sigma(R) given P(k) (does not check that k_max is large + * enough) + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param z Input: redshift + * @param R Input: radius in Mpc + * @param sigma Output: variance in a sphere of radius R (dimensionless) + */ + +int spectra_sigma( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double * sigma + ) { + + double pk; + double * pk_ic = NULL; + + double * array_for_sigma; + int index_num; + int index_k; + int index_y; + int index_ddy; + int i; + + double k,W,x; + + if (psp->ic_ic_size[psp->index_md_scalars]>1) + class_alloc(pk_ic, + psp->ic_ic_size[psp->index_md_scalars]*sizeof(double), + psp->error_message); + + i=0; + index_k=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_num=i; + + class_alloc(array_for_sigma, + psp->ln_k_size*index_num*sizeof(double), + psp->error_message); + + for (i=0;iln_k_size;i++) { + k=exp(psp->ln_k[i]); + if (i == (psp->ln_k_size-1)) k *= 0.9999999; // to prevent rounding error leading to k being bigger than maximum value + x=k*R; + W=3./x/x/x*(sin(x)-x*cos(x)); + class_call(spectra_pk_at_k_and_z(pba,ppm,psp,k,z,&pk,pk_ic), + psp->error_message, + psp->error_message); + array_for_sigma[i*index_num+index_k]=k; + array_for_sigma[i*index_num+index_y]=k*k*pk*W*W; + } + + class_call(array_spline(array_for_sigma, + index_num, + psp->ln_k_size, + index_k, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + + class_call(array_integrate_all_spline(array_for_sigma, + index_num, + psp->ln_k_size, + index_k, + index_y, + index_ddy, + sigma, + psp->error_message), + psp->error_message, + psp->error_message); + + free(array_for_sigma); + + if (psp->ic_ic_size[psp->index_md_scalars]>1) + free(pk_ic); + + *sigma = sqrt(*sigma/(2.*_PI_*_PI_)); + + return _SUCCESS_; + +} + +/** + * This routine computes a table of values for all matter power spectra P(k), + * given the source functions and primordial spectra. + * + * @param pba Input: pointer to background structure (will provide density of each species) + * @param ppt Input: pointer to perturbation structure (contain source functions) + * @param psp Input/Output: pointer to spectra structure + * @return the error status + */ + +int spectra_matter_transfers( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md; + int index_ic; + int index_k; + int index_tau; + int last_index_back; + double * pvecback_sp_long; /* array with argument pvecback_sp_long[pba->index_bg] */ + double delta_i,theta_i,rho_i; + double delta_rho_tot,rho_tot; + double rho_plus_p_theta_tot,rho_plus_p_tot; + int n_ncdm; + + /** - check the presence of scalar modes */ + + class_test((ppt->has_scalars == _FALSE_), + psp->error_message, + "you cannot ask for matter power spectrum since you turned off scalar modes"); + + index_md = psp->index_md_scalars; + + /** - allocate and fill array of \f$ T_i(k,\tau)\f$ values */ + + class_alloc(psp->matter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); + + /** - allocate temporary vectors where the background quantities will be stored */ + + class_alloc(pvecback_sp_long,pba->bg_size*sizeof(double),psp->error_message); + + for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { + + class_call(background_at_tau(pba, + ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size], + /* for this last argument we could have passed + exp(psp->ln_tau[index_tau]) but we would then loose + precision in the exp(log(x)) operation) */ + pba->long_info, + pba->inter_normal, + &last_index_back, + pvecback_sp_long), + pba->error_message, + psp->error_message); + + for (index_k=0; index_kln_k_size; index_k++) { + + for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { + + delta_rho_tot=0.; + rho_tot=0.; + rho_plus_p_theta_tot=0.; + rho_plus_p_tot=0.; + + /* T_g(k,tau) */ + + rho_i = pvecback_sp_long[pba->index_bg_rho_g]; + + if (ppt->has_source_delta_g == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_g] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_g] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + rho_tot += rho_i; + + } + + if (ppt->has_source_theta_g == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_g] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_g] = theta_i; + + rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + + rho_plus_p_tot += 4./3. * rho_i; + + } + + /* T_b(k,tau) */ + + rho_i = pvecback_sp_long[pba->index_bg_rho_b]; + + if (ppt->has_source_delta_b == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_b] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_b] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_b == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_b] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_b] = theta_i; + + rho_plus_p_theta_tot += rho_i * theta_i; + + } + + rho_plus_p_tot += rho_i; + + /* T_cdm(k,tau) */ + + if (pba->has_cdm == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_cdm]; + + if (ppt->has_source_delta_cdm == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_cdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_cdm] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_cdm == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_cdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_cdm] = theta_i; + + rho_plus_p_theta_tot += rho_i * theta_i; + + } + + rho_plus_p_tot += rho_i; + + } + + /* T_dcdm(k,tau) */ + + if (pba->has_dcdm == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_dcdm]; + + if (ppt->has_source_delta_dcdm == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dcdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dcdm] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_dcdm == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dcdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dcdm] = theta_i; + + rho_plus_p_theta_tot += rho_i * theta_i; + + } + + rho_plus_p_tot += rho_i; + + } + + /* T_scf(k,tau) */ + + if (pba->has_scf == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_scf]; + + if (ppt->has_source_delta_scf == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_scf] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_scf] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_scf == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_scf] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_scf] = theta_i; + + rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]) * theta_i; + + } + + rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]); + + } + + + /* T_fld(k,tau) */ + + if (pba->has_fld == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_fld]; + + if (ppt->has_source_delta_fld == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_fld] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_fld] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_fld == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_fld] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_fld] = theta_i; + + rho_plus_p_theta_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i * theta_i; + + } + + rho_plus_p_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i; + + } + + /* T_ur(k,tau) */ + + if (pba->has_ur == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_ur]; + + if (ppt->has_source_delta_ur == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ur] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ur] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_ur == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ur] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ur] = theta_i; + + rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + + } + + rho_plus_p_tot += 4./3. * rho_i; + + } + + /* T_dr(k,tau) */ + + if (pba->has_dr == _TRUE_) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_dr]; + + if (ppt->has_source_delta_dr == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dr] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dr] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_dr == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dr] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dr] = theta_i; + + rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + + } + + rho_plus_p_tot += 4./3. * rho_i; + + } + + /* T_ncdm_i(k,tau) */ + + if (pba->has_ncdm == _TRUE_) { + + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + + rho_i = pvecback_sp_long[pba->index_bg_rho_ncdm1+n_ncdm]; + + if (ppt->has_source_delta_ncdm == _TRUE_) { + + delta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ncdm1+n_ncdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ncdm1+n_ncdm] = delta_i; + + delta_rho_tot += rho_i * delta_i; + + } + + rho_tot += rho_i; + + if (ppt->has_source_theta_ncdm == _TRUE_) { + + theta_i = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ncdm1+n_ncdm] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ncdm1+n_ncdm] = theta_i; + + rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]) * theta_i; + + } + + rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]); + + } + + } + + if (ppt->has_source_phi == _TRUE_) { + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_phi] = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_phi] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + } + + if (ppt->has_source_psi == _TRUE_) { + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_psi] = ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + ppt->index_tp_psi] + [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + + } + + /* could include homogeneous component in rho_tot if uncommented (leave commented to match CMBFAST/CAMB definition) */ + + /* if (pba->has_lambda == _TRUE_) { */ + + /* rho_i = pvecback_sp_long[pba->index_bg_rho_lambda]; */ + + /* rho_tot += rho_i; */ + /* } */ + + /* T_tot(k,tau) */ + + if (ppt->has_density_transfers == _TRUE_) { + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_tot] = delta_rho_tot/rho_tot; + + } + + if (ppt->has_velocity_transfers == _TRUE_) { + + psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_tot] = rho_plus_p_theta_tot/rho_plus_p_tot; + + } + + } + } + } + + /**- if interpolation of \f$ P(k,\tau)\f$ will be needed (as a function of tau), + compute array of second derivatives in view of spline interpolation */ + + if (psp->ln_tau_size > 1) { + + class_alloc(psp->ddmatter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); + + class_call(array_spline_table_lines(psp->ln_tau, + psp->ln_tau_size, + psp->matter_transfer, + psp->ic_size[index_md]*psp->ln_k_size*psp->tr_size, + psp->ddmatter_transfer, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + + } + + free (pvecback_sp_long); + + return _SUCCESS_; +} + +int spectra_output_tk_titles(struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + int n_ncdm; + char tmp[40]; + + if (output_format == class_format) { + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + if (ppt->has_density_transfers == _TRUE_) { + class_store_columntitle(titles,"d_g",_TRUE_); + class_store_columntitle(titles,"d_b",_TRUE_); + class_store_columntitle(titles,"d_cdm",pba->has_cdm); + class_store_columntitle(titles,"d_fld",pba->has_fld); + class_store_columntitle(titles,"d_ur",pba->has_ur); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"d_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"d_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"d_dr",pba->has_dr); + class_store_columntitle(titles,"d_scf",pba->has_scf); + class_store_columntitle(titles,"d_tot",_TRUE_); + class_store_columntitle(titles,"phi",ppt->has_source_phi); + class_store_columntitle(titles,"psi",ppt->has_source_psi); + } + if (ppt->has_velocity_transfers == _TRUE_) { + class_store_columntitle(titles,"t_g",_TRUE_); + class_store_columntitle(titles,"t_b",_TRUE_); + class_store_columntitle(titles,"t_cdm",((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous))); + class_store_columntitle(titles,"t_fld",pba->has_fld); + class_store_columntitle(titles,"t_ur",pba->has_ur); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"t_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"t_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"t_dr",pba->has_dr); + class_store_columntitle(titles,"t__scf",pba->has_scf); + class_store_columntitle(titles,"t_tot",_TRUE_); + } + } + + else if (output_format == camb_format) { + + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + class_store_columntitle(titles,"-T_cdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_b/k2",_TRUE_); + class_store_columntitle(titles,"-T_g/k2",_TRUE_); + class_store_columntitle(titles,"-T_ur/k2",_TRUE_); + class_store_columntitle(titles,"-T_ncdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_tot/k2",_TRUE_); + + } + + return _SUCCESS_; + +} + +int spectra_output_tk_data( + struct background * pba, + struct perturbs * ppt, + struct spectra * psp, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ) { + + int n_ncdm; + double k, k_over_h, k2; + double * tkfull=NULL; /* array with argument + pk_ic[(index_k * psp->ic_size[index_md] + index_ic)*psp->tr_size+index_tr] */ + double *tk; + double *dataptr; + + int index_md=0; + int index_ic; + int index_k; + int index_tr; + int storeidx; + + if (psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size > 0){ + class_alloc(tkfull, + psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size*sizeof(double), + psp->error_message); + } + + /** - compute \f$T_i(k)\f$ for each k (if several ic's, compute it for each ic; if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + + /* if z_pk = 0, no interpolation needed */ + + if (z == 0.) { + + for (index_k=0; index_kln_k_size; index_k++) { + for (index_tr=0; index_trtr_size; index_tr++) { + for (index_ic=0; index_icic_size[index_md]; index_ic++) { + tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] = psp->matter_transfer[(((psp->ln_tau_size-1)*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr]; + } + } + } + } + + /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ + else { + + class_call(spectra_tk_at_z(pba, + psp, + z, + tkfull), + psp->error_message, + psp->error_message); + } + + /** - store data */ + + for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { + + for (index_k=0; index_kln_k_size; index_k++) { + + storeidx = 0; + dataptr = data+index_ic*(psp->ln_k_size*number_of_titles)+index_k*number_of_titles; + tk = &(tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size]); + k = exp(psp->ln_k[index_k]); + k2 = k*k; + k_over_h = k/pba->h; + + class_store_double(dataptr, k_over_h, _TRUE_,storeidx); + + /* indices for species associated with a velocity transfer function in Fourier space */ + + if (output_format == class_format) { + + if (ppt->has_density_transfers == _TRUE_) { + + class_store_double(dataptr,tk[psp->index_tr_delta_g],ppt->has_source_delta_g,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_b],ppt->has_source_delta_b,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_cdm],ppt->has_source_delta_cdm,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_fld],ppt->has_source_delta_fld,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_ur],ppt->has_source_delta_ur,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[psp->index_tr_delta_ncdm1+n_ncdm],ppt->has_source_delta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[psp->index_tr_delta_dcdm],ppt->has_source_delta_dcdm,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_dr],ppt->has_source_delta_dr,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_scf],ppt->has_source_delta_scf,storeidx); + class_store_double(dataptr,tk[psp->index_tr_delta_tot],_TRUE_,storeidx); + class_store_double(dataptr,tk[psp->index_tr_phi],ppt->has_source_phi,storeidx); + class_store_double(dataptr,tk[psp->index_tr_psi],ppt->has_source_psi,storeidx); + } + if (ppt->has_velocity_transfers == _TRUE_) { + + class_store_double(dataptr,tk[psp->index_tr_theta_g],ppt->has_source_theta_g,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_b],ppt->has_source_theta_b,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_cdm],ppt->has_source_theta_cdm,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_fld],ppt->has_source_theta_fld,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_ur],ppt->has_source_theta_ur,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[psp->index_tr_theta_ncdm1+n_ncdm],ppt->has_source_theta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[psp->index_tr_theta_dcdm],ppt->has_source_theta_dcdm,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_dr],ppt->has_source_theta_dr,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_scf],ppt->has_source_theta_scf,storeidx); + class_store_double(dataptr,tk[psp->index_tr_theta_tot],_TRUE_,storeidx); + + } + + } + else if (output_format == camb_format) { + + /* rescale and reorder the matter transfer functions following the CMBFAST/CAMB convention */ + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_cdm]/k2,ppt->has_source_delta_cdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_b]/k2,ppt->has_source_delta_b,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_g]/k2,ppt->has_source_delta_g,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ur]/k2,ppt->has_source_delta_ur,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ncdm1]/k2,ppt->has_source_delta_ncdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_tot]/k2,_TRUE_,storeidx,0.0); + } + } + } + + //Necessary because the size could be zero (if psp->tr_size is zero) + if (tkfull != NULL) + free(tkfull); + + return _SUCCESS_; +} + + int spectra_firstline_and_ic_suffix(struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix){ + + first_line[0]='\0'; + ic_suffix[0]='\0'; + + + if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { + strcpy(ic_suffix,"ad"); + strcpy(first_line,"for adiabatic (AD) mode (normalized to initial curvature=1) "); + } + + if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + strcpy(ic_suffix,"bi"); + strcpy(first_line,"for baryon isocurvature (BI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + strcpy(ic_suffix,"cdi"); + strcpy(first_line,"for CDM isocurvature (CDI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { + strcpy(ic_suffix,"nid"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { + strcpy(ic_suffix,"niv"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode (normalized to initial entropy=1)"); + } + return _SUCCESS_; +} diff --git a/class_old/source/thermodynamics.c b/class_old/source/thermodynamics.c new file mode 100644 index 00000000..25d69e37 --- /dev/null +++ b/class_old/source/thermodynamics.c @@ -0,0 +1,3587 @@ +/** @file thermodynamics.c Documented thermodynamics module + * + * Julien Lesgourgues, 6.09.2010 + * + * Deals with the thermodynamical evolution. + * This module has two purposes: + * + * - at the beginning, to initialize the thermodynamics, i.e. to + * integrate the thermodynamical equations, and store all + * thermodynamical quantities as a function of redshift inside an + * interpolation table. The current version of recombination is + * based on RECFAST v1.5. The current version of reionization is + * based on exactly the same reionization function as in CAMB, in + * order to make allow for comparison. It should be easy to + * generalize the module to more complicated reionization histories. + * + * - to provide a routine which allow other modules to evaluate any + * thermodynamical quantities at a given redshift value (by + * interpolating within the interpolation table). + * + * + * The logic is the following: + * + * - in a first step, the code assumes that there is no reionization, + * and computes the ionization fraction, Thomson scattering rate, + * baryon temperature, etc., using RECFAST. The result is stored in + * a temporary table 'recombination_table' (within a temporary + * structure of type 'recombination') for each redshift in a range 0 + * < z < z_initial. The sampling in z space is done with a simple + * linear step size. + * - in a second step, the code adds the reionization history, + * starting from a redshift z_reio_start. The ionization fraction at + * this redshift is read in the previous recombination table in + * order to ensure a perfect matching. The code computes the + * ionization fraction, Thomson scattering rate, baryon temperature, + * etc., using a given parametrization of the reionization + * history. The result is stored in a temporary table + * 'reionization_table' (within a temporary structure of type + * 'reionization') for each redshift in the range 0 < z < + * z_reio_start. The sampling in z space is found automatically, + * given the precision parameter 'reionization_sampling'. + * + * - in a third step, the code merges the two tables + * 'recombination_table' and 'reionization_table' inside the table + * 'thermodynamics_table', and the temporary structures + * 'recombination' and 'reionization' are freed. In + * 'thermodynamics_table', the sampling in z space is the one + * defined in the recombination algorithm for z_reio_start < z < + * z_initial, and the one defined in the reionization algorithm for + * 0 < z < z_reio_start. + * + * - at this stage, only a few columns in the table + * 'thermodynamics_table' have been filled. In a fourth step, the + * remaining columns are filled, using some numerical + * integration/derivation routines from the 'array.c' tools module. + * + * - small detail: one of the columns contains the maximum variation + * rate of a few relevant thermodynamical quantities. This rate + * will be used for defining automatically the sampling step size in + * the perturbation module. Hence, the exact value of this rate is + * unimportant, but its order of magnitude at a given z defines the + * sampling precision of the perturbation module. Hence, it is + * harmless to use a smoothing routine in order to make this rate + * look nicer, although this will not affect the final result + * significantly. The last step in the thermodynamics_init module is + * to perform this smoothing. + * + * In summary, the following functions can be called from other modules: + * + * -# thermodynamics_init() at the beginning (but after background_init()) + * -# thermodynamics_at_z() at any later time + * -# thermodynamics_free() at the end, when no more calls to thermodynamics_at_z() are needed + */ + +#include "thermodynamics.h" + +#ifdef HYREC +#include "hyrec.h" +#endif + +/** + * Thermodynamics quantities at given redshift z. + * + * Evaluates all thermodynamics quantities at a given value of + * the redshift by reading the pre-computed table and interpolating. + * + * @param pba Input: pointer to background structure + * @param pth Input: pointer to the thermodynamics structure (containing pre-computed table) + * @param z Input: redshift + * @param inter_mode Input: interpolation mode (normal or growing_closeby) + * @param last_index Input/Output: index of the previous/current point in the interpolation array (input only for closeby mode, output for both) + * @param pvecback Input: vector of background quantities (used only in case z>z_initial for getting ddkappa and dddkappa; in that case, should be already allocated and filled, with format short_info or larger; in other cases, will be ignored) + * @param pvecthermo Output: vector of thermodynamics quantities (assumed to be already allocated) + * @return the error status + */ + +int thermodynamics_at_z( + struct background * pba, + struct thermo * pth, + double z, + short inter_mode, + int * last_index, + double * pvecback, + double * pvecthermo + ) { + + /** Summary: */ + + /** - define local variables */ + + double x0; + + /* - the fact that z is in the pre-computed range 0 <= z <= z_initial + will be checked in the interpolation routines below. Before + trying to interpolate, allow the routine to deal with the case z + > z_intial: then, all relevant quantities can be extrapolated + using simple analytic approximations */ + + if (z >= pth->z_table[pth->tt_size-1]) { + + /* ionization fraction assumed to remain constant at large z */ + x0= pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_xe]; + pvecthermo[pth->index_th_xe] = x0; + + /* Calculate dkappa/dtau (dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T in units of 1/Mpc) */ + pvecthermo[pth->index_th_dkappa] = (1.+z) * (1.+z) * pth->n_e * x0 * _sigma_ * _Mpc_over_m_; + + /* tau_d scales like (1+z)**2 */ + pvecthermo[pth->index_th_tau_d] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_d]*pow((1+z)/(1.+pth->z_table[pth->tt_size-1]),2); + + if (pth->compute_damping_scale == _TRUE_) { + + /* r_d scales like (1+z)**-3/2 */ + pvecthermo[pth->index_th_r_d] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_r_d]*pow((1+z)/(1.+pth->z_table[pth->tt_size-1]),-1.5); + + } + + /* Calculate d2kappa/dtau2 = dz/dtau d/dz[dkappa/dtau] given that [dkappa/dtau] proportional to (1+z)^2 and dz/dtau = -H */ + pvecthermo[pth->index_th_ddkappa] = -pvecback[pba->index_bg_H] * 2. / (1.+z) * pvecthermo[pth->index_th_dkappa]; + + /* Calculate d3kappa/dtau3 given that [dkappa/dtau] proportional to (1+z)^2 */ + pvecthermo[pth->index_th_dddkappa] = (pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]/ (1.+z) - pvecback[pba->index_bg_H_prime]) * 2. / (1.+z) * pvecthermo[pth->index_th_dkappa]; + + /* \f$ exp^{-\kappa}, g, g', g'' \f$ can be set to zero: they are + used only for computing the source functions in the + perturbation module; but source functions only need to be + sampled below z_initial (the condition that + z_start_sourcesindex_th_exp_m_kappa] = 0.; + pvecthermo[pth->index_th_g]=0.; + pvecthermo[pth->index_th_dg]=0.; + pvecthermo[pth->index_th_ddg]=0.; + + /* Calculate Tb */ + pvecthermo[pth->index_th_Tb] = pba->T_cmb*(1.+z); + + /* Calculate cb2 (cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz)) */ + /* note that m_H / mu = 1 + (m_H/m_He-1) Y_p + x_e (1-Y_p) */ + pvecthermo[pth->index_th_cb2] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+z) * 4. / 3.; + + /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ + if (pth->compute_cb2_derivatives == _TRUE_) { + + /* since cb2 proportional to (1+z) or 1/a, its derivative wrt conformal time is given by dcb2 = - a H cb2 */ + pvecthermo[pth->index_th_dcb2] = - pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a] * pvecthermo[pth->index_th_cb2]; + + /* then its second derivative is given by ddcb2 = - a H' cb2 */ + pvecthermo[pth->index_th_ddcb2] = - pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] * pvecthermo[pth->index_th_cb2]; + } + + /* in this regime, variation rate = dkappa/dtau */ + pvecthermo[pth->index_th_rate] = pvecthermo[pth->index_th_dkappa]; + + } + + /** - interpolate in table with array_interpolate_spline() (normal + mode) or array_interpolate_spline_growing_closeby() (closeby + mode) */ + + else { + + /* some very specific cases require linear interpolation because of a break in the derivative of the functions */ + if ((pth->reio_parametrization == reio_half_tanh) && (z < 2*pth->z_reio)) { + + class_call(array_interpolate_linear( + pth->z_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + z, + last_index, + pvecthermo, + pth->th_size, + pth->error_message), + pth->error_message, + pth->error_message); + } + + /* in the "normal" case, use spline interpolation */ + else { + + if (inter_mode == pth->inter_normal) { + + class_call(array_interpolate_spline( + pth->z_table, + pth->tt_size, + pth->thermodynamics_table, + pth->d2thermodynamics_dz2_table, + pth->th_size, + z, + last_index, + pvecthermo, + pth->th_size, + pth->error_message), + pth->error_message, + pth->error_message); + } + + if (inter_mode == pth->inter_closeby) { + + class_call(array_interpolate_spline_growing_closeby( + pth->z_table, + pth->tt_size, + pth->thermodynamics_table, + pth->d2thermodynamics_dz2_table, + pth->th_size, + z, + last_index, + pvecthermo, + pth->th_size, + pth->error_message), + pth->error_message, + pth->error_message); + + } + } + } + return _SUCCESS_; +} + +/** + * Initialize the thermo structure, and in particular the + * thermodynamics interpolation table. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input/Output: pointer to initialized thermo structure + * @return the error status + */ +int thermodynamics_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth + ) { + + /** Summary: */ + + /** - define local variables */ + + /* index running over time*/ + int index_tau; + /* temporary variables related to visibility function */ + double g; + /* vector of background values for calling background_at_tau() */ + double * pvecback; + /* index for calling background_at_tau() */ + int last_index_back; + /* temporary table of values of tau associated with z values in pth->z_table */ + double * tau_table; + /* same ordered in growing time rather than growing redshift */ + double * tau_table_growing; + /* conformal time of reionization */ + double tau_reio; + /* structures for storing temporarily information on recombination + and reionization */ + struct recombination reco; + struct reionization reio; + struct recombination * preco; + struct reionization * preio; + + double tau; + double g_max; + int index_tau_max; + + /** - initialize pointers, allocate background vector */ + + preco=&reco; + preio=&reio; + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + + if (pth->thermodynamics_verbose > 0) + printf("Computing thermodynamics"); + + /** - compute and check primordial Helium fraction */ + + /* Y_He */ + if (pth->YHe == _BBN_) { + class_call(thermodynamics_helium_from_bbn(ppr,pba,pth), + pth->error_message, + pth->error_message); + if (pth->thermodynamics_verbose > 0) + printf(" with Y_He=%.4f\n",pth->YHe); + } + else { + if (pth->thermodynamics_verbose > 0) + printf("\n"); + } + + class_test((pth->YHe < _YHE_SMALL_)||(pth->YHe > _YHE_BIG_), + pth->error_message, + "Y_He=%g out of bounds (%gYHe,_YHE_SMALL_,_YHE_BIG_); + + /** - check energy injection parameters */ + + class_test((pth->annihilation<0), + pth->error_message, + "annihilation parameter cannot be negative"); + + class_test((pth->annihilation>1.e-4), + pth->error_message, + "annihilation parameter suspiciously large (%e, while typical bounds are in the range of 1e-7 to 1e-6)", + pth->annihilation); + + class_test((pth->annihilation_variation>0), + pth->error_message, + "annihilation variation parameter must be negative (decreasing annihilation rate)"); + + class_test((pth->annihilation_z<0), + pth->error_message, + "characteristic annihilation redshift cannot be negative"); + + class_test((pth->annihilation_zmin<0), + pth->error_message, + "characteristic annihilation redshift cannot be negative"); + + class_test((pth->annihilation_zmax<0), + pth->error_message, + "characteristic annihilation redshift cannot be negative"); + + class_test((pth->annihilation>0)&&(pba->has_cdm==_FALSE_), + pth->error_message, + "CDM annihilation effects require the presence of CDM!"); + + class_test((pth->annihilation_f_halo>0) && (pth->recombination==recfast), + pth->error_message, + "Switching on DM annihilation in halos requires using HyRec instead of RECFAST. Otherwise some values go beyond their range of validity in the RECFAST fits, and the thermodynamics module fails. Two solutions: add 'recombination = HyRec' to your input, or set 'annihilation_f_halo = 0.' (default)."); + + class_test((pth->annihilation_f_halo<0), + pth->error_message, + "Parameter for DM annihilation in halos cannot be negative"); + + class_test((pth->annihilation_z_halo<0), + pth->error_message, + "Parameter for DM annihilation in halos cannot be negative"); + + if (pth->thermodynamics_verbose > 0) + if ((pth->annihilation >0) && (pth->reio_parametrization == reio_none) && (ppr->recfast_Heswitch >= 3) && (pth->recombination==recfast)) + printf("Warning: if you have DM annihilation and you use recfast with option recfast_Heswitch >= 3, then the expression for CfHe_t and dy[1] becomes undefined at late times, producing nan's. This is however masked by reionization if you are not in reio_none mode."); + + class_test((pth->decay<0), + pth->error_message, + "decay parameter cannot be negative"); + + class_test((pth->decay>0)&&(pba->has_cdm==_FALSE_), + pth->error_message, + "CDM decay effects require the presence of CDM!"); + + /* tests in order to prevent segmentation fault in the following */ + class_test(_not4_ == 0., + pth->error_message, + "stop to avoid division by zero"); + class_test(pth->YHe == 1., + pth->error_message, + "stop to avoid division by zero"); + + /** - assign values to all indices in the structures with thermodynamics_indices()*/ + + class_call(thermodynamics_indices(pth,preco,preio), + pth->error_message, + pth->error_message); + + /** - solve recombination and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_recombination() */ + + class_call(thermodynamics_recombination(ppr,pba,pth,preco,pvecback), + pth->error_message, + pth->error_message); + + /** - if there is reionization, solve reionization and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_reionization()*/ + + if (pth->reio_parametrization != reio_none) { + class_call(thermodynamics_reionization(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + } + else { + preio->rt_size=0; + preio->index_reco_when_reio_start=-1; + } + + /** - merge tables in recombination and reionization structures into + a single table in thermo structure */ + + class_call(thermodynamics_merge_reco_and_reio(ppr,pth,preco,preio), + pth->error_message, + pth->error_message); + + /** - compute table of corresponding conformal times */ + + class_alloc(tau_table,pth->tt_size*sizeof(double),pth->error_message); + + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + class_call(background_tau_of_z(pba, + pth->z_table[index_tau], + tau_table+index_tau), + pba->error_message, + pth->error_message); + } + + /** - store initial value of conformal time in the structure */ + + pth->tau_ini = tau_table[pth->tt_size-1]; + + /** - fill missing columns (quantities not computed previously but related) */ + + /** - --> baryon drag interaction rate time minus one, -[R * kappa'], stored temporarily in column ddkappa */ + + last_index_back = pba->bg_size-1; + + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + + class_call(background_at_tau(pba, + tau_table[index_tau], + pba->normal_info, + pba->inter_closeby, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = + -4./3.*pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b] + *pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]; + + } + + /** - --> second derivative of this rate, -[R * kappa']'', stored temporarily in column dddkappa */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute tau_d = [int_{tau_today}^{tau} dtau -dkappa_d/dtau] */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + pth->index_th_tau_d, + pth->error_message), + pth->error_message, + pth->error_message); + + /* the temporary quantities stored in columns ddkappa and dddkappa + will not be used anymore, they will be overwritten */ + + /** - --> compute r_d = [int_{tau_ini}^{tau} dtau [1/kappa'] */ + if (pth->compute_damping_scale == _TRUE_) { + + class_alloc(tau_table_growing,pth->tt_size*sizeof(double),pth->error_message); + + /* compute integrand 1/kappa' and store temporarily in column "ddkappa" */ + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + + tau_table_growing[index_tau]=tau_table[pth->tt_size-1-index_tau]; + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = + 1./pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_dkappa]; + + } + + /* compute second derivative of integrand 1/kappa' and store temporarily in column "dddkappa" */ + class_call(array_spline_table_line_to_line(tau_table_growing, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /* compute integrated quantity r_d^2 and store temporarily in column "g" */ + class_call(array_integrate_spline_table_line_to_line(tau_table_growing, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + pth->index_th_g, + pth->error_message), + pth->error_message, + pth->error_message); + + free(tau_table_growing); + + /* an analytic calculation shows that in the early + radiation-dominated and ionized universe, when kappa' is + proportional to (1+z)^2 and tau is proportional to the scale + factor, r_d^2 is equal to eta/(3 kappa'). So [r_d,ini^2] = + [tau_ini/3/kappa'_ini] should be added to the integral in + order to account for the integration between 0 and tau_ini */ + + /* compute r_d */ + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_r_d] = + sqrt(tau_table[pth->tt_size-1]/3./pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_dkappa] + +pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_g]); + + } + + } + + /** - --> second derivative with respect to tau of dkappa (in view of spline interpolation) */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dkappa, + pth->index_th_dddkappa, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> first derivative with respect to tau of dkappa (using spline interpolation) */ + class_call(array_derive_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dkappa, + pth->index_th_dddkappa, + pth->index_th_ddkappa, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute -kappa = [int_{tau_today}^{tau} dtau dkappa/dtau], store temporarily in column "g" */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dkappa, + pth->index_th_dddkappa, + pth->index_th_g, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ + if (pth->compute_cb2_derivatives == _TRUE_) { + + /** - ---> second derivative with respect to tau of cb2 */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_cb2, + pth->index_th_ddcb2, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + + /** - ---> first derivative with respect to tau of cb2 (using spline interpolation) */ + class_call(array_derive_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_cb2, + pth->index_th_ddcb2, + pth->index_th_dcb2, + pth->error_message), + pth->error_message, + pth->error_message); + } + + free(tau_table); + + /** - --> compute visibility: \f$ g= (d \kappa/d \tau) e^{- \kappa} \f$ */ + + /* loop on z (decreasing z, increasing time) */ + for (index_tau=pth->tt_size-1; index_tau>=0; index_tau--) { + + /** - ---> compute g */ + g = pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] * + exp(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]); + + /** - ---> compute exp(-kappa) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_exp_m_kappa] = + exp(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]); + + /** - ---> compute g' (the plus sign of the second term is correct, see def of -kappa in thermodynamics module!) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dg] = + (pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] * + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]) * + exp(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]); + + /** - ---> compute g'' */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddg] = + (pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dddkappa] + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] * + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] * 3. + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] * + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] * + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]) * + exp(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]); + + /** - ---> store g */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g] = g; + + /** - ---> compute variation rate */ + class_test(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa] == 0., + pth->error_message, + "variation rate diverges"); + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_rate] = + sqrt(pow(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa],2) + +pow(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa]/ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa],2) + +fabs(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dddkappa]/ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa])); + + } + + /** - smooth the rate (details of smoothing unimportant: only the + order of magnitude of the rate matters) */ + class_call(array_smooth(pth->thermodynamics_table, + pth->th_size, + pth->tt_size, + pth->index_th_rate, + ppr->thermo_rate_smoothing_radius, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - fill tables of second derivatives with respect to z (in view of spline interpolation) */ + + class_call(array_spline_table_lines(pth->z_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->d2thermodynamics_dz2_table, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - find maximum of g */ + + index_tau=pth->tt_size-1; + while (pth->z_table[index_tau]>_Z_REC_MAX_) { + index_tau--; + } + + class_test(pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g] > + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g], + pth->error_message, + "found a recombination redshift greater or equal to the maximum value imposed in thermodynamics.h, z_rec_max=%g",_Z_REC_MAX_); + + while (pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g] < + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]) { + index_tau--; + } + + g_max = pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]; + index_tau_max = index_tau; + + /* approximation for maximum of g, using cubic interpolation, assuming equally spaced z's */ + pth->z_rec=pth->z_table[index_tau+1]+0.5*(pth->z_table[index_tau+1]-pth->z_table[index_tau])*(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g]-pth->thermodynamics_table[(index_tau+2)*pth->th_size+pth->index_th_g])/(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g]-2.*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g]+pth->thermodynamics_table[(index_tau+2)*pth->th_size+pth->index_th_g]); + + class_test(pth->z_rec+ppr->smallest_allowed_variation >= _Z_REC_MAX_, + pth->error_message, + "found a recombination redshift greater or equal to the maximum value imposed in thermodynamics.h, z_rec_max=%g",_Z_REC_MAX_); + + class_test(pth->z_rec-ppr->smallest_allowed_variation <= _Z_REC_MIN_, + pth->error_message, + "found a recombination redshift smaller or equal to the maximum value imposed in thermodynamics.h, z_rec_min=%g",_Z_REC_MIN_); + + /** - find conformal recombination time using background_tau_of_z() **/ + + class_call(background_tau_of_z(pba,pth->z_rec,&(pth->tau_rec)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,pth->tau_rec, pba->long_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + pth->rs_rec=pvecback[pba->index_bg_rs]; + pth->ds_rec=pth->rs_rec*pba->a_today/(1.+pth->z_rec); + pth->da_rec=pvecback[pba->index_bg_ang_distance]; + pth->ra_rec=pth->da_rec*(1.+pth->z_rec)/pba->a_today; + pth->angular_rescaling=pth->ra_rec/(pba->conformal_age-pth->tau_rec); + + /** - find damping scale at recombination (using linear interpolation) */ + + if (pth->compute_damping_scale == _TRUE_) { + + pth->rd_rec = (pth->z_table[index_tau+1]-pth->z_rec)/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_r_d] + +(pth->z_rec-pth->z_table[index_tau])/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_r_d]; + + } + + /** - find time (always after recombination) at which tau_c/tau + falls below some threshold, defining tau_free_streaming */ + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + while (1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/tau + < ppr->radiation_streaming_trigger_tau_c_over_tau) { + + index_tau--; + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + } + + pth->tau_free_streaming = tau; + + /** - find baryon drag time (when tau_d crosses one, using linear + interpolation) and sound horizon at that time */ + + index_tau=0; + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_d] < 1.) && (index_tau < pth->tt_size)) + index_tau++; + + pth->z_d = pth->z_table[index_tau-1]+ + (1.-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_d]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_d]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_d]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,pth->z_d,&(pth->tau_d)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,pth->tau_d, pba->long_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + pth->rs_d=pvecback[pba->index_bg_rs]; + pth->ds_d=pth->rs_d*pba->a_today/(1.+pth->z_d); + + /** - find time above which visibility falls below a given fraction of its maximum */ + + index_tau=index_tau_max; + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g] > + g_max * ppr->neglect_CMB_sources_below_visibility) + && (index_tau > 0)) + index_tau--; + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&(pth->tau_cut)), + pba->error_message, + pth->error_message); + + /** - if verbose flag set to next-to-minimum value, print the main results */ + + if (pth->thermodynamics_verbose > 0) { + printf(" -> recombination at z = %f\n",pth->z_rec); + printf(" corresponding to conformal time = %f Mpc\n",pth->tau_rec); + printf(" with comoving sound horizon = %f Mpc\n",pth->rs_rec); + printf(" angular diameter distance = %f Mpc\n",pth->da_rec); + printf(" and sound horizon angle 100*theta_s = %f\n",100.*pth->rs_rec/pth->ra_rec); + if (pth->compute_damping_scale == _TRUE_) { + printf(" and with comoving photon damping scale = %f Mpc\n",pth->rd_rec); + printf(" or comoving damping wavenumber k_d = %f 1/Mpc\n",2.*_PI_/pth->rd_rec); + } + printf(" -> baryon drag stops at z = %f\n",pth->z_d); + printf(" corresponding to conformal time = %f Mpc\n",pth->tau_d); + printf(" with comoving sound horizon rs = %f Mpc\n",pth->rs_d); + if ((pth->reio_parametrization == reio_camb) || (pth->reio_parametrization == reio_half_tanh)) { + if (pth->reio_z_or_tau==reio_tau) + printf(" -> reionization at z = %f\n",pth->z_reio); + if (pth->reio_z_or_tau==reio_z) + printf(" -> reionization with optical depth = %f\n",pth->tau_reio); + class_call(background_tau_of_z(pba,pth->z_reio,&tau_reio), + pba->error_message, + pth->error_message); + printf(" corresponding to conformal time = %f Mpc\n",tau_reio); + } + if (pth->reio_parametrization == reio_bins_tanh) { + printf(" -> binned reionization gives optical depth = %f\n",pth->tau_reio); + } + if (pth->reio_parametrization == reio_many_tanh) { + printf(" -> many-step reionization gives optical depth = %f\n",pth->tau_reio); + } + if (pth->thermodynamics_verbose > 1) { + printf(" -> free-streaming approximation can be turned on as soon as tau=%g Mpc\n", + pth->tau_free_streaming); + } + } + + free(pvecback); + + return _SUCCESS_; +} + +/** + * Free all memory space allocated by thermodynamics_init(). + * + * + * @param pth Input/Output: pointer to thermo structure (to be freed) + * @return the error status + */ + +int thermodynamics_free( + struct thermo * pth + ) { + + free(pth->z_table); + free(pth->thermodynamics_table); + free(pth->d2thermodynamics_dz2_table); + + return _SUCCESS_; +} + +/** + * Assign value to each relevant index in vectors of thermodynamical quantities, + * as well as in vector containing reionization parameters. + * + * + * @param pth Input/Output: pointer to thermo structure + * @param preco Input/Output: pointer to recombination structure + * @param preio Input/Output: pointer to reionization structure + * @return the error status + */ + +int thermodynamics_indices( + struct thermo * pth, + struct recombination * preco, + struct reionization * preio + ) { + + /** Summary: */ + + /** - define local variables */ + + /* a running index for the vector of thermodynamics quantities */ + int index; + + /** - initialization of all indices and flags in thermo structure */ + index = 0; + + pth->index_th_xe = index; + index++; + pth->index_th_dkappa = index; + index++; + pth->index_th_tau_d = index; + index++; + pth->index_th_ddkappa = index; + index++; + pth->index_th_dddkappa = index; + index++; + pth->index_th_exp_m_kappa = index; + index++; + pth->index_th_g = index; + index++; + pth->index_th_dg = index; + index++; + pth->index_th_ddg = index; + index++; + pth->index_th_Tb = index; + index++; + pth->index_th_cb2 = index; + index++; + + /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ + if (pth->compute_cb2_derivatives == _TRUE_) { + pth->index_th_dcb2 = index; + index++; + pth->index_th_ddcb2 = index; + index++; + } + + pth->index_th_rate = index; + index++; + + if (pth->compute_damping_scale == _TRUE_) { + pth->index_th_r_d = index; + index++; + } + + /* end of indices */ + pth->th_size = index; + + /** - initialization of all indices and flags in recombination structure */ + index = 0; + + preco->index_re_z = index; + index++; + preco->index_re_xe = index; + index++; + preco->index_re_dkappadtau = index; + index++; + preco->index_re_Tb = index; + index++; + preco->index_re_cb2 = index; + index++; + + /* end of indices */ + preco->re_size = index; + + /** - initialization of all indices and flags in reionization structure */ + index = 0; + + preio->index_re_z = index; + index++; + preio->index_re_xe = index; + index++; + preio->index_re_Tb = index; + index++; + preio->index_re_cb2 = index; + index++; + preio->index_re_dkappadtau = index; + index++; + preio->index_re_dkappadz = index; + index++; + preio->index_re_d3kappadz3 = index; + index++; + + /* end of indices */ + preio->re_size = index; + + /** - same with parameters of the function \f$ X_e(z)\f$ */ + + index=0; + + preio->index_reio_start = index; + index++; + + /* case where x_e(z) taken like in CAMB (other cases can be added) */ + if ((pth->reio_parametrization == reio_camb) || (pth->reio_parametrization == reio_half_tanh)) { + + preio->index_reio_redshift = index; + index++; + preio->index_reio_exponent = index; + index++; + preio->index_reio_width = index; + index++; + preio->index_reio_xe_before = index; + index++; + preio->index_reio_xe_after = index; + index++; + preio->index_helium_fullreio_fraction = index; + index++; + preio->index_helium_fullreio_redshift = index; + index++; + preio->index_helium_fullreio_width = index; + index++; + + } + + /* case where x_e(z) is binned */ + if (pth->reio_parametrization == reio_bins_tanh) { + + /* the code will not only copy here the "bin centers" passed in + input. It will add an initial and final value for (z,xe). So + this array has a dimension bigger than the bin center array */ + + preio->reio_num_z=pth->binned_reio_num+2; /* add two values: beginning and end of reio */ + + preio->index_reio_first_z = index; + index+= preio->reio_num_z; + preio->index_reio_first_xe = index; + index+= preio->reio_num_z; + preio->index_reio_step_sharpness = index; + index++; + + preio->reio_num_params = index; + } + + /* case where x_e(z) has many tanh jumps */ + if (pth->reio_parametrization == reio_many_tanh) { + + /* the code will not only copy here the "jump centers" passed in + input. It will add an initial and final value for (z,xe). So + this array has a dimension bigger than the jump center array */ + + preio->reio_num_z=pth->many_tanh_num+2; /* add two values: beginning and end of reio */ + + preio->index_reio_first_z = index; + index+= preio->reio_num_z; + preio->index_reio_first_xe = index; + index+= preio->reio_num_z; + preio->index_reio_step_sharpness = index; + index++; + + preio->reio_num_params = index; + } + + preio->reio_num_params = index; + + /* flags for calling the interpolation routine */ + + pth->inter_normal=0; + pth->inter_closeby=1; + + return _SUCCESS_; +} + +/** + * Infer the primordial helium fraction from standard BBN, as a + * function of the baryon density and expansion rate during BBN. + * + * This module is simpler then the one used in arXiv:0712.2826 because + * it neglects the impact of a possible significant chemical + * potentials for electron neutrinos. The full code with xi_nu_e could + * be introduced here later. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input/Output: pointer to initialized thermo structure + * @return the error status + */ +int thermodynamics_helium_from_bbn( + struct precision * ppr, + struct background * pba, + struct thermo * pth + ) { + + FILE * fA; + char line[_LINE_LENGTH_MAX_]; + char * left; + + int num_omegab=0; + int num_deltaN=0; + + double * omegab=NULL; + double * deltaN=NULL; + double * YHe=NULL; + double * ddYHe=NULL; + double * YHe_at_deltaN=NULL; + double * ddYHe_at_deltaN=NULL; + + int array_line=0; + double DeltaNeff; + double omega_b; + int last_index; + double Neff_bbn, z_bbn, tau_bbn, *pvecback; + + /**Summary: */ + /** - Infer effective number of neutrinos at the time of BBN */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + + /** - 8.6173e-11 converts from Kelvin to MeV. We randomly choose 0.1 MeV to be the temperature of BBN */ + z_bbn = 0.1/(8.6173e-11*pba->T_cmb)-1.0; + + class_call(background_tau_of_z(pba, + z_bbn, + &tau_bbn), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba, + tau_bbn, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + pth->error_message); + + Neff_bbn = (pvecback[pba->index_bg_Omega_r] + *pvecback[pba->index_bg_rho_crit] + -pvecback[pba->index_bg_rho_g]) + /(7./8.*pow(4./11.,4./3.)*pvecback[pba->index_bg_rho_g]); + + free(pvecback); + + // printf("Neff early = %g, Neff at bbn: %g\n",pba->Neff,Neff_bbn); + + /** - compute Delta N_eff as defined in bbn file, i.e. \f$ \Delta N_{eff}=0\f$ means \f$ N_{eff}=3.046\f$ */ + DeltaNeff = Neff_bbn - 3.046; + + /* the following file is assumed to contain (apart from comments and blank lines): + - the two numbers (num_omegab, num_deltaN) = number of values of BBN free parameters + - three columns (omegab, deltaN, YHe) where omegab = Omega0_b h^2 and deltaN = Neff-3.046 by definition + - omegab and deltaN are assumed to be arranged as: + omegab1 deltaN1 YHe + omegab2 deltaN1 YHe + ..... + omegab1 delatN2 YHe + omegab2 deltaN2 YHe + ..... + */ + + class_open(fA,ppr->sBBN_file, "r",pth->error_message); + + /* go through each line */ + while (fgets(line,_LINE_LENGTH_MAX_-1,fA) != NULL) { + + /* eliminate blank spaces at beginning of line */ + left=line; + while (left[0]==' ') { + left++; + } + + /* check that the line is neither blank neither a comment. In + ASCII, left[0]>39 means that first non-blank character might + be the beginning of some data (it is not a newline, a #, a %, + etc.) */ + if (left[0] > 39) { + + /* if the line contains data, we must interpret it. If + (num_omegab, num_deltaN)=(0,0), the current line must contain + their values. Otherwise, it must contain (omegab, delatN, + YHe). */ + if ((num_omegab==0) && (num_deltaN==0)) { + + /* read (num_omegab, num_deltaN), infer size of arrays and allocate them */ + class_test(sscanf(line,"%d %d",&num_omegab,&num_deltaN) != 2, + pth->error_message, + "could not read value of parameters (num_omegab,num_deltaN) in file %s\n",ppr->sBBN_file); + + class_alloc(omegab,num_omegab*sizeof(double),pth->error_message); + class_alloc(deltaN,num_deltaN*sizeof(double),pth->error_message); + class_alloc(YHe,num_omegab*num_deltaN*sizeof(double),pth->error_message); + class_alloc(ddYHe,num_omegab*num_deltaN*sizeof(double),pth->error_message); + class_alloc(YHe_at_deltaN,num_omegab*sizeof(double),pth->error_message); + class_alloc(ddYHe_at_deltaN,num_omegab*sizeof(double),pth->error_message); + array_line=0; + + } + else { + + /* read (omegab, deltaN, YHe) */ + class_test(sscanf(line,"%lg %lg %lg", + &(omegab[array_line%num_omegab]), + &(deltaN[array_line/num_omegab]), + &(YHe[array_line]) + ) != 3, + pth->error_message, + "could not read value of parameters (omegab,deltaN,YHe) in file %s\n",ppr->sBBN_file); + array_line ++; + } + } + } + + fclose(fA); + + /** - spline in one dimension (along deltaN) */ + class_call(array_spline_table_lines(deltaN, + num_deltaN, + YHe, + num_omegab, + ddYHe, + _SPLINE_NATURAL_, + pth->error_message), + pth->error_message, + pth->error_message); + + omega_b=pba->Omega0_b*pba->h*pba->h; + + class_test(omega_b < omegab[0], + pth->error_message, + "You have asked for an unrealistic small value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test(omega_b > omegab[num_omegab-1], + pth->error_message, + "You have asked for an unrealistic high value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test(DeltaNeff < deltaN[0], + pth->error_message, + "You have asked for an unrealistic small value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); + + class_test(DeltaNeff > deltaN[num_deltaN-1], + pth->error_message, + "You have asked for an unrealistic high value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); + + /** - interpolate in one dimension (along deltaN) */ + class_call(array_interpolate_spline(deltaN, + num_deltaN, + YHe, + ddYHe, + num_omegab, + DeltaNeff, + &last_index, + YHe_at_deltaN, + num_omegab, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - spline in remaining dimension (along omegab) */ + class_call(array_spline_table_lines(omegab, + num_omegab, + YHe_at_deltaN, + 1, + ddYHe_at_deltaN, + _SPLINE_NATURAL_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - interpolate in remaining dimension (along omegab) */ + class_call(array_interpolate_spline(omegab, + num_omegab, + YHe_at_deltaN, + ddYHe_at_deltaN, + 1, + omega_b, + &last_index, + &(pth->YHe), + 1, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - deallocate arrays */ + free(omegab); + free(deltaN); + free(YHe); + free(ddYHe); + free(YHe_at_deltaN); + free(ddYHe_at_deltaN); + + return _SUCCESS_; + +} + +/** + * In case of non-minimal cosmology, this function determines the + * energy rate injected in the IGM at a given redshift z (= on-the-spot + * annihilation). This energy injection may come e.g. from dark matter + * annihilation or decay. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param preco Input: pointer to recombination structure + * @param z Input: redshift + * @param energy_rate Output: energy density injection rate + * @param error_message Output: error message + * @return the error status + */ + +int thermodynamics_onthespot_energy_injection( + struct precision * ppr, + struct background * pba, + struct recombination * preco, + double z, + double * energy_rate, + ErrorMsg error_message + ) { + + double annihilation_at_z; + double rho_cdm_today; + double u_min; + double erfc; + + /*redshift-dependent annihilation parameter*/ + + if (z>preco->annihilation_zmax) { + + annihilation_at_z = preco->annihilation* + exp(-preco->annihilation_variation*pow(log((preco->annihilation_z+1.)/(preco->annihilation_zmax+1.)),2)); + } + else if (z>preco->annihilation_zmin) { + + annihilation_at_z = preco->annihilation* + exp(preco->annihilation_variation*(-pow(log((preco->annihilation_z+1.)/(preco->annihilation_zmax+1.)),2) + +pow(log((z+1.)/(preco->annihilation_zmax+1.)),2))); + } + else { + + annihilation_at_z = preco->annihilation* + exp(preco->annihilation_variation*(-pow(log((preco->annihilation_z+1.)/(preco->annihilation_zmax+1.)),2) + +pow(log((preco->annihilation_zmin+1.)/(preco->annihilation_zmax+1.)),2))); + } + + rho_cdm_today = pow(pba->H0*_c_/_Mpc_over_m_,2)*3/8./_PI_/_G_*pba->Omega0_cdm*_c_*_c_; /* energy density in J/m^3 */ + + u_min = (1+z)/(1+preco->annihilation_z_halo); + + erfc = pow(1.+0.278393*u_min+0.230389*u_min*u_min+0.000972*u_min*u_min*u_min+0.078108*u_min*u_min*u_min*u_min,-4); + + *energy_rate = pow(rho_cdm_today,2)/_c_/_c_*pow((1+z),3)* + (pow((1.+z),3)*annihilation_at_z+preco->annihilation_f_halo*erfc) + +rho_cdm_today*pow((1+z),3)*preco->decay; + /* energy density rate in J/m^3/s (remember that annihilation_at_z is in m^3/s/Kg and decay in s^-1) */ + + return _SUCCESS_; + +} + +/** + * In case of non-minimal cosmology, this function determines the + * effective energy rate absorbed by the IGM at a given redshift + * (beyond the on-the-spot annihilation). This energy injection may + * come e.g. from dark matter annihilation or decay. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param preco Input: pointer to recombination structure + * @param z Input: redshift + * @param energy_rate Output: energy density injection rate + * @param error_message Output: error message + * @return the error status + */ + +int thermodynamics_energy_injection( + struct precision * ppr, + struct background * pba, + struct recombination * preco, + double z, + double * energy_rate, + ErrorMsg error_message + ) { + + double zp,dz; + double integrand,first_integrand; + double factor,result; + double nH0; + double onthespot; + + if (preco->annihilation > 0) { + + if (preco->has_on_the_spot == _FALSE_) { + + /* number of hydrogen nuclei today in m**-3 */ + nH0 = 3.*preco->H0*preco->H0*pba->Omega0_b/(8.*_PI_*_G_*_m_H_)*(1.-preco->YHe); + + /* factor = c sigma_T n_H(0) / (H(0) \sqrt(Omega_m)) (dimensionless) */ + factor = _sigma_ * nH0 / pba->H0 * _Mpc_over_m_ / sqrt(pba->Omega0_b+pba->Omega0_cdm); + + /* integral over z'(=zp) with step dz */ + dz=1.; + + /* first point in trapezoidal integral */ + zp = z; + class_call(thermodynamics_onthespot_energy_injection(ppr,pba,preco,zp,&onthespot,error_message), + error_message, + error_message); + first_integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot; // beware: versions before 2.4.3, there were wrong exponents: 6 and 5.5 instead of 8 and 7.5 + result = 0.5*dz*first_integrand; + + /* other points in trapezoidal integral */ + do { + + zp += dz; + class_call(thermodynamics_onthespot_energy_injection(ppr,pba,preco,zp,&onthespot,error_message), + error_message, + error_message); + integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot; // beware: versions before 2.4.3, there were wrong exponents: 6 and 5.5 instead of 8 and 7.5 + result += dz*integrand; + + } while (integrand/first_integrand > 0.02); + + /* uncomment these lines if you also want to compute the on-the-spot for comparison */ + class_call(thermodynamics_onthespot_energy_injection(ppr,pba,preco,z,&onthespot,error_message), + error_message, + error_message); + + } + else { + class_call(thermodynamics_onthespot_energy_injection(ppr,pba,preco,z,&result,error_message), + error_message, + error_message); + } + + /* these test lines print the energy rate rescaled by (1+z)^6 in J/m^3/s, with or without the on-the-spot approximation */ + /* + fprintf(stdout,"%e %e %e \n", + 1.+z, + result/pow(1.+z,6), + onthespot/pow(1.+z,6)); + */ + + /* effective energy density rate in J/m^3/s */ + *energy_rate = result; + + } + else { + *energy_rate = 0.; + } + + return _SUCCESS_; + +} + +/** + * This subroutine contains the reionization function \f$ X_e(z) \f$ + * (one for each scheme; so far, only the function corresponding to + * the reio_camb scheme is coded) + * + * @param z Input: redshift + * @param pth Input: pointer to thermo structure, to know which scheme is used + * @param preio Input: pointer to reionization structure, containing the parameters of the function \f$ X_e(z) \f$ + * @param xe Output: \f$ X_e(z) \f$ + */ + +int thermodynamics_reionization_function( + double z, + struct thermo * pth, + struct reionization * preio, + double * xe + ) { + + /** Summary: */ + + /** - define local variables */ + double argument; + int i; + double z_jump; + + int jump; + double center,before, after,width,one_jump; + + /** - implementation of ionization function similar to the one in CAMB */ + + if ((pth->reio_parametrization == reio_camb) || (pth->reio_parametrization == reio_half_tanh)) { + + /** - --> case z > z_reio_start */ + + if (z > preio->reionization_parameters[preio->index_reio_start]) { + + *xe = preio->reionization_parameters[preio->index_reio_xe_before]; + + } + + else { + + /** - --> case z < z_reio_start: hydrogen contribution (tanh of complicated argument) */ + + argument = (pow((1.+preio->reionization_parameters[preio->index_reio_redshift]), + preio->reionization_parameters[preio->index_reio_exponent]) + - pow((1.+z),preio->reionization_parameters[preio->index_reio_exponent])) + /(preio->reionization_parameters[preio->index_reio_exponent] + /* no possible segmentation fault: checked to be non-zero in thermodynamics_reionization() */ + *pow((1.+preio->reionization_parameters[preio->index_reio_redshift]), + (preio->reionization_parameters[preio->index_reio_exponent]-1.))) + /preio->reionization_parameters[preio->index_reio_width]; + /* no possible segmentation fault: checked to be non-zero in thermodynamics_reionization() */ + + if (pth->reio_parametrization == reio_camb) { + *xe = (preio->reionization_parameters[preio->index_reio_xe_after] + -preio->reionization_parameters[preio->index_reio_xe_before]) + *(tanh(argument)+1.)/2. + +preio->reionization_parameters[preio->index_reio_xe_before]; + } + else { + *xe = (preio->reionization_parameters[preio->index_reio_xe_after] + -preio->reionization_parameters[preio->index_reio_xe_before]) + *tanh(argument) + +preio->reionization_parameters[preio->index_reio_xe_before]; + } + + /** - --> case z < z_reio_start: helium contribution (tanh of simpler argument) */ + + if (pth->reio_parametrization == reio_camb) { + argument = (preio->reionization_parameters[preio->index_helium_fullreio_redshift] - z) + /preio->reionization_parameters[preio->index_helium_fullreio_width]; + /* no possible segmentation fault: checked to be non-zero in thermodynamics_reionization() */ + *xe += preio->reionization_parameters[preio->index_helium_fullreio_fraction] + * (tanh(argument)+1.)/2.; + } + } + + return _SUCCESS_; + + } + + /** - implementation of binned ionization function similar to astro-ph/0606552 */ + + if (pth->reio_parametrization == reio_bins_tanh) { + + /** - --> case z > z_reio_start */ + + if (z > preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]) { + *xe = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1]; + } + + else if (z < preio->reionization_parameters[preio->index_reio_first_z]) { + *xe = preio->reionization_parameters[preio->index_reio_first_xe]; + } + + else { + + i = 0; + while (preio->reionization_parameters[preio->index_reio_first_z+i+1]reionization_parameters[preio->index_reio_first_xe+i] + +0.5*(tanh((2.*(z-preio->reionization_parameters[preio->index_reio_first_z+i]) + /(preio->reionization_parameters[preio->index_reio_first_z+i+1] + -preio->reionization_parameters[preio->index_reio_first_z+i])-1.) + /preio->reionization_parameters[preio->index_reio_step_sharpness]) + /tanh(1./preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) + *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); + */ + + /* compute the central redshift value of the tanh jump */ + + if (i == preio->reio_num_z-2) { + z_jump = preio->reionization_parameters[preio->index_reio_first_z+i] + + 0.5*(preio->reionization_parameters[preio->index_reio_first_z+i] + -preio->reionization_parameters[preio->index_reio_first_z+i-1]); + } + else { + z_jump = 0.5*(preio->reionization_parameters[preio->index_reio_first_z+i+1] + + preio->reionization_parameters[preio->index_reio_first_z+i]); + } + + /* implementation of the tanh jump */ + + *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] + +0.5*(tanh((z-z_jump) + /preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) + *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); + + } + + return _SUCCESS_; + + } + + /** - implementation of many tanh jumps */ + + if (pth->reio_parametrization == reio_many_tanh) { + + /** - --> case z > z_reio_start */ + + if (z > preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]) { + *xe = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1]; + } + + else if (z > preio->reionization_parameters[preio->index_reio_first_z]) { + + *xe = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1]; + + for (jump=1; jumpreio_num_z-1; jump++){ + + center = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1-jump]; + // before and after are meant with respect to growing z, not growing time + before = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1-jump] + -preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-jump]; + after = 0.; + width = preio->reionization_parameters[preio->index_reio_step_sharpness]; + + class_call(thermodynamics_tanh(z,center,before,after,width,&one_jump), + pth->error_message, + pth->error_message); + + *xe += one_jump; + + } + + } + + else { + *xe = preio->reionization_parameters[preio->index_reio_first_xe]; + } + + return _SUCCESS_; + + } + + class_test(0 == 0, + pth->error_message, + "value of reio_parametrization=%d unclear",pth->reio_parametrization); +} + +/** + * This subroutine reads \f$ X_e(z) \f$ in the recombination table at + * the time at which reionization starts. Hence it provides correct + * initial conditions for the reionization function. + * + * @param ppr Input: pointer to precision structure + * @param pth Input: pointer to thermo structure + * @param preco Input: pointer to recombination structure + * @param z Input: redshift z_reio_start + * @param xe Output: \f$ X_e(z) \f$ at z + */ + +int thermodynamics_get_xe_before_reionization( + struct precision * ppr, + struct thermo * pth, + struct recombination * preco, + double z, + double * xe + ) { + + int last_index=0; + + class_call(array_interpolate_one_growing_closeby(preco->recombination_table, + preco->re_size, + preco->rt_size, + preco->index_re_z, + z, + &last_index, + preco->index_re_xe, + xe, + pth->error_message), + pth->error_message, + pth->error_message); + + return _SUCCESS_; + +} + + +/** + * This routine computes the reionization history. In the reio_camb + * scheme, this is straightforward if the input parameter is the + * reionization redshift. If the input is the optical depth, need to + * find z_reio by dichotomy (trying several z_reio until the correct + * tau_reio is approached). + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermo structure + * @param preco Input: pointer to filled recombination structure + * @param preio Input/Output: pointer to reionization structure (to be filled) + * @param pvecback Input: vector of background quantities (used as workspace: must be already allocated, with format short_info or larger, but does not need to be filled) + * @return the error status + */ + +int thermodynamics_reionization( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio, + double * pvecback + ) { + + /** Summary: */ + + /** - define local variables */ + + int counter; + double z_sup,z_mid,z_inf; + double tau_sup,tau_mid,tau_inf; + int bin; + double xe_input,xe_actual; + + /** - allocate the vector of parameters defining the function \f$ X_e(z) \f$ */ + + class_alloc(preio->reionization_parameters,preio->reio_num_params*sizeof(double),pth->error_message); + + /** - (a) if reionization implemented like in CAMB */ + + if ((pth->reio_parametrization == reio_camb) || (pth->reio_parametrization == reio_half_tanh)) { + + /** - --> set values of these parameters, excepted those depending on the reionization redshift */ + + if (pth->reio_parametrization == reio_camb) { + preio->reionization_parameters[preio->index_reio_xe_after] = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); /* xe_after_reio: H + singly ionized He (note: segmentation fault impossible, checked before that denominator is non-zero) */ + } + if (pth->reio_parametrization == reio_half_tanh) { + preio->reionization_parameters[preio->index_reio_xe_after] = 1.; /* xe_after_reio: neglect He ionization */ + //+ 2*pth->YHe/(_not4_*(1.-pth->YHe)); /* xe_after_reio: H + fully ionized He */ + } + preio->reionization_parameters[preio->index_reio_exponent] = pth->reionization_exponent; /* reio_exponent */ + preio->reionization_parameters[preio->index_reio_width] = pth->reionization_width; /* reio_width */ + preio->reionization_parameters[preio->index_helium_fullreio_fraction] = pth->YHe/(_not4_*(1.-pth->YHe)); /* helium_fullreio_fraction (note: segmentation fault impossible, checked before that denominator is non-zero) */ + preio->reionization_parameters[preio->index_helium_fullreio_redshift] = pth->helium_fullreio_redshift; /* helium_fullreio_redshift */ + preio->reionization_parameters[preio->index_helium_fullreio_width] = pth->helium_fullreio_width; /* helium_fullreio_width */ + + class_test(preio->reionization_parameters[preio->index_reio_exponent]==0, + pth->error_message, + "stop to avoid division by zero"); + + class_test(preio->reionization_parameters[preio->index_reio_width]==0, + pth->error_message, + "stop to avoid division by zero"); + + class_test(preio->reionization_parameters[preio->index_helium_fullreio_width]==0, + pth->error_message, + "stop to avoid division by zero"); + + /** - --> if reionization redshift given as an input, initialize the remaining values and fill reionization table*/ + + if (pth->reio_z_or_tau == reio_z) { + + /* reionization redshift */ + preio->reionization_parameters[preio->index_reio_redshift] = pth->z_reio; + + /* infer starting redshift for hydrogen */ + + if (pth->reio_parametrization == reio_camb) { + + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_redshift]+ppr->reionization_start_factor*pth->reionization_width; + + /* if starting redshift for helium is larger, take that one + (does not happen in realistic models) */ + if (preio->reionization_parameters[preio->index_reio_start] < + pth->helium_fullreio_redshift+ppr->reionization_start_factor*pth->helium_fullreio_width) + + preio->reionization_parameters[preio->index_reio_start] = + pth->helium_fullreio_redshift+ppr->reionization_start_factor*pth->helium_fullreio_width; + + } + else { + + preio->reionization_parameters[preio->index_reio_start] = pth->z_reio; + } + + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization > reionization_z_start_max = %e\n",ppr->reionization_z_start_max); + + /* infer xe_before_reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_start], + &(preio->reionization_parameters[preio->index_reio_xe_before])), + pth->error_message, + pth->error_message); + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + pth->tau_reio=preio->reionization_optical_depth; + + } + + /** - --> if reionization optical depth given as an input, find reionization redshift by dichotomy and initialize the remaining values */ + + if (pth->reio_z_or_tau == reio_tau) { + + /* upper value */ + + z_sup = ppr->reionization_z_start_max-ppr->reionization_start_factor*pth->reionization_width; + class_test(z_sup < 0., + pth->error_message, + "parameters are such that reionization cannot take place before today while starting after z_start_max; need to increase z_start_max"); + + /* maximum possible reionization redshift */ + preio->reionization_parameters[preio->index_reio_redshift] = z_sup; + /* maximum possible starting redshift */ + preio->reionization_parameters[preio->index_reio_start] = ppr->reionization_z_start_max; + /* infer xe_before_reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_start], + &(preio->reionization_parameters[preio->index_reio_xe_before])), + pth->error_message, + pth->error_message); + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + tau_sup=preio->reionization_optical_depth; + + class_test(tau_sup < pth->tau_reio, + pth->error_message, + "parameters are such that reionization cannot start after z_start_max"); + + /* lower value */ + + z_inf = 0.; + tau_inf = 0.; + + /* try intermediate values */ + + counter=0; + while ((tau_sup-tau_inf) > pth->tau_reio * ppr->reionization_optical_depth_tol) { + z_mid=0.5*(z_sup+z_inf); + + /* reionization redshift */ + preio->reionization_parameters[preio->index_reio_redshift] = z_mid; + /* infer starting redshift for hygrogen */ + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_redshift]+ppr->reionization_start_factor*pth->reionization_width; + /* if starting redshift for helium is larger, take that one + (does not happen in realistic models) */ + if (preio->reionization_parameters[preio->index_reio_start] < + pth->helium_fullreio_redshift+ppr->reionization_start_factor*pth->helium_fullreio_width) + + preio->reionization_parameters[preio->index_reio_start] = + pth->helium_fullreio_redshift+ppr->reionization_start_factor*pth->helium_fullreio_width; + + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization > reionization_z_start_max = %e",ppr->reionization_z_start_max); + + /* infer xe_before_reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_start], + &(preio->reionization_parameters[preio->index_reio_xe_before])), + pth->error_message, + pth->error_message); + + /* clean and fill reionization table */ + free(preio->reionization_table); + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + tau_mid=preio->reionization_optical_depth; + + /* trial */ + + if (tau_mid > pth->tau_reio) { + z_sup=z_mid; + tau_sup=tau_mid; + } + else { + z_inf=z_mid; + tau_inf=tau_mid; + } + + counter++; + class_test(counter > _MAX_IT_, + pth->error_message, + "while searching for reionization_optical_depth, maximum number of iterations exceeded"); + } + + /* store z_reionization in thermodynamics structure */ + pth->z_reio=preio->reionization_parameters[preio->index_reio_redshift]; + + } + + free(preio->reionization_parameters); + + return _SUCCESS_; + + } + + if (pth->reio_parametrization == reio_bins_tanh) { + + /* this algorithm requires at least two bin centers (i.e. at least + 4 values in the (z,xe) array, counting the edges). */ + class_test(pth->binned_reio_num<2, + pth->error_message, + "current implementation of binned reio requires at least two bin centers"); + + /* check that this input can be interpreted by the code */ + for (bin=1; binbinned_reio_num; bin++) { + class_test(pth->binned_reio_z[bin-1]>=pth->binned_reio_z[bin], + pth->error_message, + "value of reionization bin centers z_i expected to be passed in growing order: %e, %e", + pth->binned_reio_z[bin-1], + pth->binned_reio_z[bin]); + } + + /* the code will not only copy here the "bin centers" passed in + input. It will add an initial and final value for (z,xe). + First, fill all entries except the first and the last */ + + for (bin=1; binreio_num_z-1; bin++) { + preio->reionization_parameters[preio->index_reio_first_z+bin] = pth->binned_reio_z[bin-1]; + preio->reionization_parameters[preio->index_reio_first_xe+bin] = pth->binned_reio_xe[bin-1]; + } + + + /* find largest value of z in the array. We choose to define it as + z_(i_max) + 2*(the distance between z_(i_max) and z_(i_max-1)). E.g. if + the bins are in 10,12,14, the largest z will be 18. */ + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1] = + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] + +2.*(preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] + -preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-3]); + + /* copy this value in reio_start */ + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; + + /* check it's not too big */ + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization = %e, reionization_z_start_max = %e, you must change the binning or increase reionization_z_start_max", + preio->reionization_parameters[preio->index_reio_start], + ppr->reionization_z_start_max); + + /* find smallest value of z in the array. We choose + to define it as z_0 - (the distance between z_1 and z_0). E.g. if + the bins are in 10,12,14, the stop redshift will be 8. */ + + preio->reionization_parameters[preio->index_reio_first_z] = + 2.*preio->reionization_parameters[preio->index_reio_first_z+1] + -preio->reionization_parameters[preio->index_reio_first_z+2]; + + /* check it's not too small */ + /* 6.06.2015: changed this test to simply imposing that the first z is at least zero */ + /* + class_test(preio->reionization_parameters[preio->index_reio_first_z] < 0, + pth->error_message, + "final redshift for reionization = %e, you must change the binning or redefine the way in which the code extrapolates below the first value of z_i",preio->reionization_parameters[preio->index_reio_first_z]); + */ + if (preio->reionization_parameters[preio->index_reio_first_z] < 0) { + preio->reionization_parameters[preio->index_reio_first_z] = 0.; + } + + /* infer xe before reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1], + &(preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1])), + pth->error_message, + pth->error_message); + + /* infer xe after reio */ + preio->reionization_parameters[preio->index_reio_first_xe] = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); /* xe_after_reio: H + singly ionized He (note: segmentation fault impossible, checked before that denominator is non-zero) */ + + /* pass step sharpness parameter */ + preio->reionization_parameters[preio->index_reio_step_sharpness] = pth->binned_reio_step_sharpness; + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + pth->tau_reio=preio->reionization_optical_depth; + + return _SUCCESS_; + + } + + if (pth->reio_parametrization == reio_many_tanh) { + + /* this algorithm requires at least one jump centers */ + class_test(pth->many_tanh_num<1, + pth->error_message, + "current implementation of reio_many_tanh requires at least one jump center"); + + /* check that z input can be interpreted by the code */ + for (bin=1; binmany_tanh_num; bin++) { + class_test(pth->many_tanh_z[bin-1]>=pth->many_tanh_z[bin], + pth->error_message, + "value of reionization bin centers z_i expected to be passed in growing order: %e, %e", + pth->many_tanh_z[bin-1], + pth->many_tanh_z[bin]); + } + + /* the code will not only copy here the "jump centers" passed in + input. It will add an initial and final value for (z,xe). + First, fill all entries except the first and the last */ + + for (bin=1; binreio_num_z-1; bin++) { + + preio->reionization_parameters[preio->index_reio_first_z+bin] = pth->many_tanh_z[bin-1]; + + /* check that xe input can be interpreted by the code */ + xe_input = pth->many_tanh_xe[bin-1]; + if (xe_input >= 0.) { + xe_actual = xe_input; + } + //-1 means "after hydrogen + first helium recombination" + else if ((xe_input<-0.9) && (xe_input>-1.1)) { + xe_actual = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); + } + //-2 means "after hydrogen + second helium recombination" + else if ((xe_input<-1.9) && (xe_input>-2.1)) { + xe_actual = 1. + 2.*pth->YHe/(_not4_*(1.-pth->YHe)); + } + //other negative number is nonsense + else { + class_stop(pth->error_message, + "Your entry for many_tanh_xe[%d] is %e, this makes no sense (either positive or 0,-1,-2)", + bin-1,pth->many_tanh_xe[bin-1]); + } + + preio->reionization_parameters[preio->index_reio_first_xe+bin] = xe_actual; + } + + /* find largest value of z in the array. We choose to define it as + z_(i_max) + ppr->reionization_start_factor*step_sharpness. */ + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1] = + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] + +ppr->reionization_start_factor*pth->many_tanh_width; + + /* copy this value in reio_start */ + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; + + /* check it's not too big */ + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization = %e, reionization_z_start_max = %e, you must change the binning or increase reionization_z_start_max", + preio->reionization_parameters[preio->index_reio_start], + ppr->reionization_z_start_max); + + /* find smallest value of z in the array. We choose + to define it as z_0 - ppr->reionization_start_factor*step_sharpness, but at least zero. */ + + preio->reionization_parameters[preio->index_reio_first_z] = + preio->reionization_parameters[preio->index_reio_first_z+1] + -ppr->reionization_start_factor*pth->many_tanh_width; + + if (preio->reionization_parameters[preio->index_reio_first_z] < 0) { + preio->reionization_parameters[preio->index_reio_first_z] = 0.; + } + + /* infer xe before reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1], + &(preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1])), + pth->error_message, + pth->error_message); + + /* infer xe after reio */ + + preio->reionization_parameters[preio->index_reio_first_xe] = preio->reionization_parameters[preio->index_reio_first_xe+1]; + + /* if we want to model only hydrogen reionization and neglect both helium reionization */ + //preio->reionization_parameters[preio->index_reio_first_xe] = 1.; + + /* if we want to model only hydrogen + first helium reionization and neglect second helium reionization */ + //preio->reionization_parameters[preio->index_reio_first_xe] = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); + + /* if we want to model hydrogen + two helium reionization */ + //preio->reionization_parameters[preio->index_reio_first_xe] = 1. + 2.*pth->YHe/(_not4_*(1.-pth->YHe)); + + /* pass step sharpness parameter */ + class_test(pth->many_tanh_width<=0, + pth->error_message, + "many_tanh_width must be strictly positive, you passed %e", + pth->many_tanh_width); + + preio->reionization_parameters[preio->index_reio_step_sharpness] = pth->many_tanh_width; + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + pth->tau_reio=preio->reionization_optical_depth; + + return _SUCCESS_; + + } + + class_test(0 == 0, + pth->error_message, + "value of reio_z_or_tau=%d unclear",pth->reio_z_or_tau); + +} + +/** + * For fixed input reionization parameters, this routine computes the + * reionization history and fills the reionization table. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermo structure + * @param preco Input: pointer to filled recombination structure + * @param preio Input/Output: pointer to reionization structure (to be filled) + * @param pvecback Input: vector of background quantities (used as workspace: must be already allocated, with format short_info or larger, but does not need to be filled) + * @return the error status + */ + +int thermodynamics_reionization_sample( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio, + double * pvecback + ) { + + /** Summary: */ + + /** - define local variables */ + + /* a growing table (since the number of redshift steps is not known a priori) */ + growTable gTable; + /* needed for growing table */ + double * pData; + /* needed for growing table */ + void * memcopy_result; + /* current vector of values related to reionization */ + double * reio_vector; + /* running index inside thermodynamics table */ + int i; + int number_of_redshifts; + /* values of z, dz, X_e */ + double dz,dz_max; + double z,z_next; + double xe,xe_next; + double dkappadz,dkappadz_next; + double Tb,Yp,dTdz,opacity,mu; + double dkappadtau,dkappadtau_next; + double energy_rate; + double tau; + double chi_heat; + int last_index_back; + double relative_variation; + + Yp = pth->YHe; + + /** - (a) allocate vector of values related to reionization */ + class_alloc(reio_vector,preio->re_size*sizeof(double),pth->error_message); + + /** - (b) create a growTable with gt_init() */ + class_call(gt_init(&gTable), + gTable.error_message, + pth->error_message); + + /** - (c) first line is taken from thermodynamics table, just before reionization starts */ + + /** - --> look where to start in current thermodynamics table */ + i=0; + while (preco->recombination_table[i*preco->re_size+preco->index_re_z] < preio->reionization_parameters[preio->index_reio_start]) { + i++; + class_test(i == ppr->recfast_Nz0, + pth->error_message, + "reionization_z_start_max = %e > largest redshift in thermodynamics table",ppr->reionization_z_start_max); + } + + /** - --> get redshift */ + z=preco->recombination_table[i*preco->re_size+preco->index_re_z]; + reio_vector[preio->index_re_z]=z; + preio->index_reco_when_reio_start=i; + + /** - --> get \f$ X_e \f$ */ + class_call(thermodynamics_reionization_function(z,pth,preio,&xe), + pth->error_message, + pth->error_message); + + reio_vector[preio->index_re_xe] = xe; + + /** - --> get \f$ d \kappa / d z = (d \kappa / d \tau) * (d \tau / d z) = - (d \kappa / d \tau) / H \f$ */ + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_normal, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + reio_vector[preio->index_re_dkappadtau] = (1.+z) * (1.+z) * pth->n_e * xe * _sigma_ * _Mpc_over_m_; + + class_test(pvecback[pba->index_bg_H] == 0., + pth->error_message, + "stop to avoid division by zero"); + + reio_vector[preio->index_re_dkappadz] = reio_vector[preio->index_re_dkappadtau] / pvecback[pba->index_bg_H]; + + dkappadz = reio_vector[preio->index_re_dkappadz]; + dkappadtau = reio_vector[preio->index_re_dkappadtau]; + + /** - --> get baryon temperature **/ + Tb = preco->recombination_table[i*preco->re_size+preco->index_re_Tb]; + reio_vector[preio->index_re_Tb] = Tb; + + /** - --> after recombination, Tb scales like (1+z)**2. Compute constant factor Tb/(1+z)**2. */ + //Tba2 = Tb/(1+z)/(1+z); + + /** - --> get baryon sound speed */ + reio_vector[preio->index_re_cb2] = 5./3. * _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * Yp + xe * (1.-Yp)) * Tb; + + /** - --> store these values in growing table */ + class_call(gt_add(&gTable,_GT_END_,(void *) reio_vector,sizeof(double)*(preio->re_size)), + gTable.error_message, + pth->error_message); + + number_of_redshifts=1; + + /** - (d) set the maximum step value (equal to the step in thermodynamics table) */ + dz_max=preco->recombination_table[i*preco->re_size+preco->index_re_z] + -preco->recombination_table[(i-1)*preco->re_size+preco->index_re_z]; + + /** - (e) loop over redshift values in order to find values of z, x_e, kappa' (Tb and cb2 found later by integration). The sampling in z space is found here. */ + + /* initial step */ + dz = dz_max; + + while (z > 0.) { + + class_test(dz < ppr->smallest_allowed_variation, + pth->error_message, + "stuck in the loop for reionization sampling, as if you were trying to impose a discontinuous evolution for xe(z)"); + + /* - try next step */ + z_next=z-dz; + if (z_next < 0.) z_next=0.; + + class_call(thermodynamics_reionization_function(z_next,pth,preio,&xe_next), + pth->error_message, + pth->error_message); + + class_call(background_tau_of_z(pba, + z_next, + &tau), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_normal, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + class_test(pvecback[pba->index_bg_H] == 0., + pth->error_message, + "stop to avoid division by zero"); + + dkappadz_next= (1.+z_next) * (1.+z_next) * pth->n_e * xe_next * _sigma_ * _Mpc_over_m_ / pvecback[pba->index_bg_H]; + + dkappadtau_next= (1.+z_next) * (1.+z_next) * pth->n_e * xe_next * _sigma_ * _Mpc_over_m_; + + class_test((dkappadz == 0.) || (dkappadtau == 0.), + pth->error_message, + "stop to avoid division by zero"); + + relative_variation = fabs((dkappadz_next-dkappadz)/dkappadz) + + fabs((dkappadtau_next-dkappadtau)/dkappadtau); + + if (relative_variation < ppr->reionization_sampling) { + /* accept the step: get \f$ z, X_e, d kappa / d z \f$ and store in growing table */ + + z=z_next; + xe=xe_next; + dkappadz=dkappadz_next; + dkappadtau= dkappadtau_next; + + class_test((dkappadz == 0.) || (dkappadtau == 0.), + pth->error_message, + "dkappadz=%e, dkappadtau=%e, stop to avoid division by zero",dkappadz,dkappadtau); + + reio_vector[preio->index_re_z] = z; + reio_vector[preio->index_re_xe] = xe; + reio_vector[preio->index_re_dkappadz] = dkappadz; + reio_vector[preio->index_re_dkappadtau] = dkappadz * pvecback[pba->index_bg_H]; + + class_call(gt_add(&gTable,_GT_END_,(void *) reio_vector,sizeof(double)*(preio->re_size)), + gTable.error_message, + pth->error_message); + + number_of_redshifts++; + + dz = MIN(0.9*(ppr->reionization_sampling/relative_variation),5.)*dz; + dz = MIN(dz,dz_max); + } + else { + /* do not accept the step and update dz */ + dz = 0.9*(ppr->reionization_sampling/relative_variation)*dz; + } + } + + /** - (f) allocate reionization_table with correct size */ + class_alloc(preio->reionization_table,preio->re_size*number_of_redshifts*sizeof(double),pth->error_message); + + preio->rt_size=number_of_redshifts; + + /** - (g) retrieve data stored in the growTable with gt_getPtr() */ + class_call(gt_getPtr(&gTable,(void**)&pData), + gTable.error_message, + pth->error_message); + + /** - (h) copy growTable to reionization_temporary_table (invert order of lines, so that redshift is growing, like in recombination table) */ + for (i=0; i < preio->rt_size; i++) { + memcopy_result = memcpy(preio->reionization_table+i*preio->re_size,pData+(preio->rt_size-i-1)*preio->re_size,preio->re_size*sizeof(double)); + class_test(memcopy_result != preio->reionization_table+i*preio->re_size, + pth->error_message, + "cannot copy data back to reionization_temporary_table"); + + } + + /** - (i) free the growTable with gt_free() , free vector of reionization variables */ + class_call(gt_free(&gTable), + gTable.error_message, + pth->error_message); + + free(reio_vector); + + /** - (j) another loop on z, to integrate equation for Tb and to compute cb2 */ + for (i=preio->rt_size-1; i >0 ; i--) { + + z = preio->reionization_table[i*preio->re_size+preio->index_re_z]; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_normal, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + dz = (preio->reionization_table[i*preio->re_size+preio->index_re_z]-preio->reionization_table[(i-1)*preio->re_size+preio->index_re_z]); + + opacity = (1.+z) * (1.+z) * pth->n_e + * preio->reionization_table[i*preio->re_size+preio->index_re_xe] * _sigma_ * _Mpc_over_m_; + + mu = _m_H_/(1. + (1./_not4_ - 1.) * pth->YHe + preio->reionization_table[i*preio->re_size+preio->index_re_xe] * (1.-pth->YHe)); + + /** - --> derivative of baryon temperature */ + + dTdz=2./(1+z)*preio->reionization_table[i*preio->re_size+preio->index_re_Tb] + -2.*mu/_m_e_*4.*pvecback[pba->index_bg_rho_g]/3./pvecback[pba->index_bg_rho_b]*opacity* + (pba->T_cmb * (1.+z)-preio->reionization_table[i*preio->re_size+preio->index_re_Tb])/pvecback[pba->index_bg_H]; + + if (preco->annihilation > 0) { + + class_call(thermodynamics_energy_injection(ppr,pba,preco,z,&energy_rate,pth->error_message), + pth->error_message, + pth->error_message); + + // old approximation from Chen and Kamionkowski: + // chi_heat = (1.+2.*preio->reionization_table[i*preio->re_size+preio->index_re_xe])/3.; + + // coefficient as revised by Slatyer et al. 2013 + // (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V + // of Slatyer et al. 2013): + xe = preio->reionization_table[i*preio->re_size+preio->index_re_xe]; + if (xe < 1.) + chi_heat = MIN(0.996857*(1.-pow(1.-pow(xe,0.300134),1.51035)),1); + else + chi_heat = 1.; + + dTdz+= -2./(3.*_k_B_)*energy_rate*chi_heat + /(preco->Nnow*pow(1.+z,3))/(1.+preco->fHe+preio->reionization_table[i*preio->re_size+preio->index_re_xe]) + /(pvecback[pba->index_bg_H]*_c_/_Mpc_over_m_*(1.+z)); /* energy injection */ + + } + + /** - --> increment baryon temperature */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] = + preio->reionization_table[i*preio->re_size+preio->index_re_Tb]-dTdz*dz; + + /** - --> get baryon sound speed */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_cb2] = _k_B_/ ( _c_ * _c_ * mu) + * preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] + *(1.+(1+z)/3.*dTdz/preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb]); + } + + /** - --> spline \f$ d \tau / dz \f$ with respect to z in view of integrating for optical depth */ + class_call(array_spline(preio->reionization_table, + preio->re_size, + preio->rt_size, + preio->index_re_z, + preio->index_re_dkappadz, + preio->index_re_d3kappadz3, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> integrate for optical depth */ + class_call(array_integrate_all_spline(preio->reionization_table, + preio->re_size, + preio->rt_size, + preio->index_re_z, + preio->index_re_dkappadz, + preio->index_re_d3kappadz3, + &(preio->reionization_optical_depth), + pth->error_message), + pth->error_message, + pth->error_message); + + return _SUCCESS_; + +} + +/** + * Integrate thermodynamics with your favorite recombination code. + * + */ + +int thermodynamics_recombination( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + double * pvecback + ) { + + if (pth->recombination==hyrec) { + + class_call(thermodynamics_recombination_with_hyrec(ppr,pba,pth,preco,pvecback), + pth->error_message, + pth->error_message); + + } + + if (pth->recombination==recfast) { + + class_call(thermodynamics_recombination_with_recfast(ppr,pba,pth,preco,pvecback), + pth->error_message, + pth->error_message); + + } + + return _SUCCESS_; + +} + +/** + * Integrate thermodynamics with HyRec. + * + * Integrate thermodynamics with HyRec, allocate and fill the part + * of the thermodynamics interpolation table (the rest is filled in + * thermodynamics_init()). Called once by + * thermodynamics_recombination(), from thermodynamics_init(). + * + ************************************************************************************************* + * HYREC: Hydrogen and Helium Recombination Code + * Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) + ************************************************************************************************* + * + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param preco Output: pointer to recombination structure + * @param pvecback Input: pointer to an allocated (but empty) vector of background variables + */ + +int thermodynamics_recombination_with_hyrec( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + double * pvecback + ) { + /** Summary: */ +#ifdef HYREC + + REC_COSMOPARAMS param; + HRATEEFF rate_table; + TWO_PHOTON_PARAMS twog_params; + double *xe_output, *Tm_output; + int i,j,l,Nz,b; + double z, xe, Tm, Hz; + FILE *fA; + FILE *fR; + double L2s1s_current; + void * buffer; + int buf_size; + double tau; + int last_index_back; + + /** - Fill hyrec parameter structure */ + + param.T0 = pba->T_cmb; + param.obh2 = pba->Omega0_b*pba->h*pba->h; + param.omh2 = (pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_ncdm_tot)*pba->h*pba->h; + param.okh2 = pba->Omega0_k*pba->h*pba->h; + param.odeh2 = (pba->Omega0_lambda+pba->Omega0_fld)*pba->h*pba->h; + param.w0 = pba->w0_fld; + param.wa = pba->wa_fld; + param.Y = pth->YHe; + param.Nnueff = pba->Neff; + param.nH0 = 11.223846333047*param.obh2*(1.-param.Y); /* number density of hydrogen today in m-3 */ + param.fHe = param.Y/(1-param.Y)/3.97153; /* abundance of helium by number */ + param.zstart = ppr->recfast_z_initial; /* Redshift range */ + param.zend = 0.; + param.dlna = 8.49e-5; + param.nz = (long) floor(2+log((1.+param.zstart)/(1.+param.zend))/param.dlna); + param.annihilation = pth->annihilation; + param.has_on_the_spot = pth->has_on_the_spot; + param.decay = pth->decay; + param.annihilation_variation = pth->annihilation_variation; + param.annihilation_z = pth->annihilation_z; + param.annihilation_zmax = pth->annihilation_zmax; + param.annihilation_zmin = pth->annihilation_zmin; + param.annihilation_f_halo = pth->annihilation_f_halo; + param.annihilation_z_halo = pth->annihilation_z_halo; + + /** - Build effective rate tables */ + + /* allocate contiguous memory zone */ + + buf_size = (2*NTR+NTM+2*NTR*NTM+2*param.nz)*sizeof(double) + 2*NTM*sizeof(double*); + + class_alloc(buffer, + buf_size, + pth->error_message); + + /** - distribute addresses for each table */ + + rate_table.logTR_tab = (double*)buffer; + rate_table.TM_TR_tab = (double*)(rate_table.logTR_tab + NTR); + rate_table.logAlpha_tab[0] = (double**)(rate_table.TM_TR_tab+NTM); + rate_table.logAlpha_tab[1] = (double**)(rate_table.logAlpha_tab[0]+NTM); + rate_table.logAlpha_tab[0][0] = (double*)(rate_table.logAlpha_tab[1]+NTM); + for (j=1;jhyrec_Alpha_inf_file, "r",pth->error_message); + class_open(fR,ppr->hyrec_R_inf_file, "r",pth->error_message); + + for (i = 0; i < NTR; i++) { + for (j = 0; j < NTM; j++) { + for (l = 0; l <= 1; l++) { + if (fscanf(fA, "%le", &(rate_table.logAlpha_tab[l][j][i])) != 1) + class_stop(pth->error_message,"Error reading hyrec data file %s",ppr->hyrec_Alpha_inf_file); + rate_table.logAlpha_tab[l][j][i] = log(rate_table.logAlpha_tab[l][j][i]); + } + } + + if (fscanf(fR, "%le", &(rate_table.logR2p2s_tab[i])) !=1) + class_stop(pth->error_message,"Error reading hyrec data file %s",ppr->hyrec_R_inf_file); + rate_table.logR2p2s_tab[i] = log(rate_table.logR2p2s_tab[i]); + + } + fclose(fA); + fclose(fR); + + /* Read two-photon rate tables */ + + class_open(fA,ppr->hyrec_two_photon_tables_file, "r",pth->error_message); + + for (b = 0; b < NVIRT; b++) { + if ((fscanf(fA, "%le", &(twog_params.Eb_tab[b])) != 1) || + (fscanf(fA, "%le", &(twog_params.A1s_tab[b])) != 1) || + (fscanf(fA, "%le", &(twog_params.A2s_tab[b])) != 1) || + (fscanf(fA, "%le", &(twog_params.A3s3d_tab[b])) != 1) || + (fscanf(fA, "%le", &(twog_params.A4s4d_tab[b])) != 1)) + class_stop(pth->error_message,"Error reading hyrec data file %s",ppr->hyrec_two_photon_tables_file); + } + + fclose(fA); + + /** - Normalize 2s--1s differential decay rate to L2s1s (can be set by user in hydrogen.h) */ + L2s1s_current = 0.; + for (b = 0; b < NSUBLYA; b++) L2s1s_current += twog_params.A2s_tab[b]; + for (b = 0; b < NSUBLYA; b++) twog_params.A2s_tab[b] *= L2s1s/L2s1s_current; + + /* In CLASS, we have neutralized the switches for the various + effects considered in Hirata (2008), keeping the full + calculation as a default; but you could restore their + functionality by copying a few lines from hyrec/hyrec.c to + here */ + + /** - Compute the recombination history by calling a function in hyrec (no CLASS-like error management here) */ + + if (pth->thermodynamics_verbose > 0) + printf(" -> calling HyRec version %s,\n",HYREC_VERSION); + + rec_build_history(¶m, &rate_table, &twog_params, xe_output, Tm_output); + + if (pth->thermodynamics_verbose > 0) + printf(" by Y. Ali-Haïmoud & C. Hirata\n"); + + /** - fill a few parameters in preco and pth */ + + Nz=ppr->recfast_Nz0; + + preco->rt_size = Nz; + preco->H0 = pba->H0 * _c_ / _Mpc_over_m_; + /* preco->H0 in inverse seconds (while pba->H0 is [H0/c] in inverse Mpcs) */ + preco->YHe = pth->YHe; + preco->Nnow = 3.*preco->H0*preco->H0*pba->Omega0_b*(1.-preco->YHe)/(8.*_PI_*_G_*_m_H_); + /* energy injection parameters */ + preco->annihilation = pth->annihilation; + preco->has_on_the_spot = pth->has_on_the_spot; + preco->annihilation_variation = pth->annihilation_variation; + preco->annihilation_z = pth->annihilation_z; + preco->annihilation_zmax = pth->annihilation_zmax; + preco->annihilation_zmin = pth->annihilation_zmin; + preco->decay = pth->decay; + preco->annihilation_f_halo = pth->annihilation_f_halo; + preco->annihilation_z_halo = pth->annihilation_z_halo; + pth->n_e=preco->Nnow; + + /** - allocate memory for thermodynamics interpolation tables (size known in advance) and fill it */ + + class_alloc(preco->recombination_table,preco->re_size*preco->rt_size*sizeof(double),pth->error_message); + + for(i=0; i get redshift, corresponding results from hyrec, and background quantities */ + + z = param.zstart * (1. - (double)(i+1) / (double)Nz); + + /* get (xe,Tm) by interpolating in pre-computed tables */ + + class_call(array_interpolate_cubic_equal(-log(1.+param.zstart), + param.dlna, + xe_output, + param.nz, + -log(1.+z), + &xe, + pth->error_message), + pth->error_message, + pth->error_message); + + class_call(array_interpolate_cubic_equal(-log(1.+param.zstart), + param.dlna, + Tm_output, + param.nz, + -log(1.+z), + &Tm, + pth->error_message), + pth->error_message, + pth->error_message); + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_normal, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + /* class_call(thermodynamics_energy_injection(ppr,pba,preco,z,&energy_rate,pth->error_message), + pth->error_message, + pth->error_message); + */ + + /* Hz is H in inverse seconds (while pvecback returns [H0/c] in inverse Mpcs) */ + Hz=pvecback[pba->index_bg_H] * _c_ / _Mpc_over_m_; + + /** - --> store the results in the table */ + + /* results are obtained in order of decreasing z, and stored in order of growing z */ + + /* redshift */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_z)=z; + + /* ionization fraction */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_xe)=xe; + + /* Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_Tb)=Tm; + + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) + with (1+z)dlnTb/dz= - [dlnTb/dlna] */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + xe * (1.-pth->YHe)) * Tm * (1. - rec_dTmdlna(xe, Tm, pba->T_cmb*(1.+z), Hz, param.fHe, param.nH0*pow((1+z),3)*1e-6, energy_injection_rate(¶m,z)) / Tm / 3.); + + /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) + = (1.+z) * (1.+z) * preco->Nnow * xe * _sigma_ * _Mpc_over_m_; + + } + + /* Cleanup */ + + free(buffer); + +#else + + class_stop(pth->error_message, + "you compiled without including the HyRec code, and now wish to use it. Either set the input parameter 'recombination' to something else than 'HyRec', or recompile after setting in the Makefile the appropriate path HYREC=... "); + +#endif + + return _SUCCESS_; +} + +/** + * Integrate thermodynamics with RECFAST. + * + * Integrate thermodynamics with RECFAST, allocate and fill the part + * of the thermodynamics interpolation table (the rest is filled in + * thermodynamics_init()). Called once by + * thermodynamics_recombination, from thermodynamics_init(). + * + * + ******************************************************************************* + * RECFAST is an integrator for Cosmic Recombination of Hydrogen and Helium, + * developed by Douglas Scott (dscott@astro.ubc.ca) + * based on calculations in the paper Seager, Sasselov & Scott + * (ApJ, 523, L1, 1999). + * and "fudge" updates in Wong, Moss & Scott (2008). + * + * Permission to use, copy, modify and distribute without fee or royalty at + * any tier, this software and its documentation, for any purpose and without + * fee or royalty is hereby granted, provided that you agree to comply with + * the following copyright notice and statements, including the disclaimer, + * and that the same appear on ALL copies of the software and documentation, + * including modifications that you make for internal use or for distribution: + * + * Copyright 1999-2010 by University of British Columbia. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS", AND U.B.C. MAKES NO + * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. + * BY WAY OF EXAMPLE, BUT NOT LIMITATION, + * U.B.C. MAKES NO REPRESENTATIONS OR WARRANTIES OF + * MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT + * THE USE OF THE LICENSED SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE + * ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + ******************************************************************************* + * + * Version 1.5: includes extra fitting function from + * Rubino-Martin et al. arXiv:0910.4383v1 [astro-ph.CO] + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param preco Output: pointer to recombination structure + * @param pvecback Input: pointer to an allocated (but empty) vector of background variables + * @return the error status + */ + +int thermodynamics_recombination_with_recfast( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct recombination * preco, + double * pvecback + ) { + + /** Summary: */ + + /** - define local variables */ + + /* vector of variables to be integrated: x_H, x_He, Tmat */ + double y[3],dy[3]; + + /* other recfast variables */ + double OmegaB,zinitial,x_He0,x0; + double x_H0=0.; + double z,mu_H,Lalpha,Lalpha_He,DeltaB,DeltaB_He; + double zstart,zend,rhs; + int i,Nz; + + /* introduced by JL for smoothing the various steps */ + double x0_previous,x0_new,s,weight; + + /* contains all quantities relevant for the integration algorithm */ + struct generic_integrator_workspace gi; + + /* contains all fixed parameters which should be passed to thermodynamics_derivs_with_recfast */ + struct thermodynamics_parameters_and_workspace tpaw; + + /** - allocate memory for thermodynamics interpolation tables (size known in advance) */ + preco->rt_size = ppr->recfast_Nz0; + class_alloc(preco->recombination_table,preco->re_size*preco->rt_size*sizeof(double),pth->error_message); + + /** - initialize generic integrator with initialize_generic_integrator() */ + class_call(initialize_generic_integrator(_RECFAST_INTEG_SIZE_, &gi), + gi.error_message, + pth->error_message); + + /** - read a few precision/cosmological parameters */ + + /* Nz */ + Nz=ppr->recfast_Nz0; + + /* preco->H0 is H0 in inverse seconds (while pba->H0 is [H0/c] in inverse Mpcs) */ + preco->H0 = pba->H0 * _c_ / _Mpc_over_m_; + + /* Omega_b */ + OmegaB = pba->Omega0_b; + + /* Yp */ + preco->YHe = pth->YHe; + + /* Tnow */ + preco->Tnow = pba->T_cmb; + + /* z_initial */ + zinitial=ppr->recfast_z_initial; + + /* H_frac */ + preco->H_frac = ppr->recfast_H_frac; + + /* H fudging */ + class_test((ppr->recfast_Hswitch != _TRUE_) && (ppr->recfast_Hswitch != _FALSE_), + pth->error_message, + "RECFAST error: unknown H fudging scheme"); + preco->fu = ppr->recfast_fudge_H; + if (ppr->recfast_Hswitch == _TRUE_) + preco->fu += ppr->recfast_delta_fudge_H; + + /* He fudging */ + class_test((ppr->recfast_Heswitch < 0) || (ppr->recfast_Heswitch > 6), + pth->error_message, + "RECFAST error: unknown He fudging scheme"); + + /* related quantities */ + z=zinitial; + mu_H = 1./(1.-preco->YHe); + //mu_T = _not4_ /(_not4_ - (_not4_-1.)*preco->YHe); /* recfast 1.4*/ + preco->fHe = preco->YHe/(_not4_ *(1.-preco->YHe)); /* recfast 1.4 */ + preco->Nnow = 3.*preco->H0*preco->H0*OmegaB/(8.*_PI_*_G_*mu_H*_m_H_); + pth->n_e = preco->Nnow; + + /* energy injection parameters */ + preco->annihilation = pth->annihilation; + preco->has_on_the_spot = pth->has_on_the_spot; + preco->annihilation_variation = pth->annihilation_variation; + preco->annihilation_z = pth->annihilation_z; + preco->annihilation_zmax = pth->annihilation_zmax; + preco->annihilation_zmin = pth->annihilation_zmin; + preco->decay = pth->decay; + preco->annihilation_f_halo = pth->annihilation_f_halo; + preco->annihilation_z_halo = pth->annihilation_z_halo; + + /* quantities related to constants defined in thermodynamics.h */ + //n = preco->Nnow * pow((1.+z),3); + Lalpha = 1./_L_H_alpha_; + Lalpha_He = 1./_L_He_2p_; + DeltaB = _h_P_*_c_*(_L_H_ion_-_L_H_alpha_); + preco->CDB = DeltaB/_k_B_; + DeltaB_He = _h_P_*_c_*(_L_He1_ion_-_L_He_2s_); + preco->CDB_He = DeltaB_He/_k_B_; + preco->CB1 = _h_P_*_c_*_L_H_ion_/_k_B_; + preco->CB1_He1 = _h_P_*_c_*_L_He1_ion_/_k_B_; + preco->CB1_He2 = _h_P_*_c_*_L_He2_ion_/_k_B_; + preco->CR = 2.*_PI_*(_m_e_/_h_P_)*(_k_B_/_h_P_); + preco->CK = pow(Lalpha,3)/(8.*_PI_); + preco->CK_He = pow(Lalpha_He,3)/(8.*_PI_); + preco->CL = _c_*_h_P_/(_k_B_*Lalpha); + preco->CL_He = _c_*_h_P_/(_k_B_/_L_He_2s_); + preco->CT = (8./3.) * (_sigma_/(_m_e_*_c_)) * + (8.*pow(_PI_,5)*pow(_k_B_,4)/ 15./ pow(_h_P_,3)/pow(_c_,3)); + + preco->Bfact = _h_P_*_c_*(_L_He_2p_-_L_He_2s_)/_k_B_; + + /** - define the fields of the 'thermodynamics parameter and workspace' structure */ + tpaw.pba = pba; + tpaw.ppr = ppr; + tpaw.preco = preco; + tpaw.pvecback = pvecback; + + /** - impose initial conditions at early times */ + + class_test(zinitial < ppr->recfast_z_He_3, + pth->error_message, + "increase zinitial, otherwise should get initial conditions from recfast's get_init routine (less precise anyway)"); + + y[0] = 1.; + y[1] = 1.; + x0 = 1.+2.*preco->fHe; + y[2] = preco->Tnow*(1.+z); + + /** - loop over redshift steps Nz; integrate over each step with + generic_integrator(), store the results in the table using + thermodynamics_derivs_with_recfast()*/ + + for(i=0; i first approximation: H and Helium fully ionized */ + + if (z > ppr->recfast_z_He_1+ppr->recfast_delta_z_He_1) { + x_H0 = 1.; + x_He0 = 1.; + x0 = 1.+2.*preco->fHe; + y[0] = x_H0; + y[1] = x_He0; + y[2] = preco->Tnow*(1.+z); + } + + /** - --> second approximation: first Helium recombination (analytic approximation) */ + + else if (z > ppr->recfast_z_He_2+ppr->recfast_delta_z_He_2) { + x_H0 = 1.; + x_He0 = 1.; + + rhs = exp( 1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1_He2/(preco->Tnow*(1.+z)) ) / preco->Nnow; + + /* smoothed transition */ + if (z > ppr->recfast_z_He_1-ppr->recfast_delta_z_He_1) { + x0_previous = 1.+2.*preco->fHe; + x0_new = 0.5*(sqrt(pow((rhs-1.-preco->fHe),2) + 4.*(1.+2.*preco->fHe)*rhs) - (rhs-1.-preco->fHe)); + + /* get s from -1 to 1 */ + s = (ppr->recfast_z_He_1-z)/ppr->recfast_delta_z_He_1; + /* infer f1(s) = smooth function interpolating from 0 to 1 */ + weight = f1(s); + + x0 = weight*x0_new+(1.-weight)*x0_previous; + } + /* transition finished */ + else { + x0 = 0.5*(sqrt(pow((rhs-1.-preco->fHe),2) + 4.*(1.+2.*preco->fHe)*rhs) - (rhs-1.-preco->fHe)); + } + + y[0] = x_H0; + y[1] = x_He0; + y[2] = preco->Tnow*(1.+z); + } + + /** - --> third approximation: first Helium recombination completed */ + + else if (z > ppr->recfast_z_He_3+ppr->recfast_delta_z_He_3) { + x_H0 = 1.; + x_He0 = 1.; + + /* smoothed transition */ + if (z > ppr->recfast_z_He_2-ppr->recfast_delta_z_He_2) { + rhs = exp( 1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1_He2/(preco->Tnow*(1.+z)) ) / preco->Nnow; + x0_previous = 0.5*(sqrt(pow((rhs-1.-preco->fHe),2) + 4.*(1.+2.*preco->fHe)*rhs) - (rhs-1.-preco->fHe)); + x0_new = 1. + preco->fHe; + /* get s from -1 to 1 */ + s = (ppr->recfast_z_He_2-z)/ppr->recfast_delta_z_He_2; + /* infer f1(s) = smooth function interpolating from 0 to 1 */ + weight = f1(s); + + x0 = weight*x0_new+(1.-weight)*x0_previous; + + } + /* transition finished */ + else { + x0 = 1.+preco->fHe; + } + + y[0] = x_H0; + y[1] = x_He0; + y[2] = preco->Tnow*(1.+z); + } + + /** - --> fourth approximation: second Helium recombination starts (analytic approximation) */ + + else if (y[1] > ppr->recfast_x_He0_trigger) { + x_H0 = 1.; + + rhs = 4.*exp(1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1_He1/(preco->Tnow*(1.+z)))/preco->Nnow; + x_He0 = 0.5*(sqrt(pow((rhs-1.),2) + 4.*(1.+preco->fHe)*rhs )- (rhs-1.)); + + /* smoothed transition */ + if (z > ppr->recfast_z_He_3-ppr->recfast_delta_z_He_3) { + x0_previous = 1. + preco->fHe; + x0_new = x_He0; + /* get s from -1 to 1 */ + s = (ppr->recfast_z_He_3-z)/ppr->recfast_delta_z_He_3; + /* infer f1(x) = smooth function interpolating from 0 to 1 */ + weight = f1(s); + + x0 = weight*x0_new+(1.-weight)*x0_previous; + } + /* transition finished */ + else { + x0 = x_He0; + } + + x_He0 = (x0-1.)/preco->fHe; + y[0] = x_H0; + y[1] = x_He0; + y[2] = preco->Tnow*(1.+z); + } + + /** - --> fifth approximation: second Helium recombination (full + evolution for Helium), H recombination starts (analytic + approximation) */ + + else if (y[0] > ppr->recfast_x_H0_trigger) { + + rhs = exp(1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1/(preco->Tnow*(1.+z)))/preco->Nnow; + x_H0 = 0.5*(sqrt(pow(rhs,2)+4.*rhs) - rhs); + + class_call(generic_integrator(thermodynamics_derivs_with_recfast, + zstart, + zend, + y, + &tpaw, + ppr->tol_thermo_integration, + ppr->smallest_allowed_variation, + &gi), + gi.error_message, + pth->error_message); + + y[0] = x_H0; + + /* smoothed transition */ + if (ppr->recfast_x_He0_trigger - y[1] < ppr->recfast_x_He0_trigger_delta) { + rhs = 4.*exp(1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1_He1/(preco->Tnow*(1.+z)))/preco->Nnow; + x0_previous = 0.5*(sqrt(pow((rhs-1.),2) + 4.*(1.+preco->fHe)*rhs )- (rhs-1.)); + x0_new = y[0] + preco->fHe*y[1]; + /* get s from 0 to 1 */ + s = (ppr->recfast_x_He0_trigger - y[1])/ppr->recfast_x_He0_trigger_delta; + /* infer f2(x) = smooth function interpolating from 0 to 1 */ + weight = f2(s); + + x0 = weight*x0_new+(1.-weight)*x0_previous; + } + /* transition finished */ + else { + x0 = y[0] + preco->fHe*y[1]; + } + + } + + /** - --> last case: full evolution for H and Helium */ + + else { + + /* quantities used for smoothed transition */ + if (ppr->recfast_x_H0_trigger - y[0] < ppr->recfast_x_H0_trigger_delta) { + rhs = exp(1.5*log(preco->CR*preco->Tnow/(1.+z)) - preco->CB1/(preco->Tnow*(1.+z)))/preco->Nnow; + x_H0 = 0.5*(sqrt(pow(rhs,2)+4.*rhs) - rhs); + } + + class_call(generic_integrator(thermodynamics_derivs_with_recfast, + zstart, + zend, + y, + &tpaw, + ppr->tol_thermo_integration, + ppr->smallest_allowed_variation, + &gi), + gi.error_message, + pth->error_message); + + /* smoothed transition */ + if (ppr->recfast_x_H0_trigger - y[0] < ppr->recfast_x_H0_trigger_delta) { + /* get s from 0 to 1 */ + s = (ppr->recfast_x_H0_trigger - y[0])/ppr->recfast_x_H0_trigger_delta; + /* infer f2(s) = smooth function interpolating from 0 to 1 */ + weight = f2(s); + + x0 = weight*y[0]+(1.-weight)*x_H0 + preco->fHe*y[1]; + + } + /* transition finished */ + else { + x0 = y[0] + preco->fHe*y[1]; + } + } + + /** - --> store the results in the table */ + /* results are obtained in order of decreasing z, and stored in order of growing z */ + + /* redshift */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_z)=zend; + + /* ionization fraction */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_xe)=x0; + + /* Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_Tb)=y[2]; + + /* get dTb/dz=dy[2] */ + class_call(thermodynamics_derivs_with_recfast(zend, y, dy, &tpaw,pth->error_message), + pth->error_message, + pth->error_message); + + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * preco->YHe + x0 * (1.-preco->YHe)) * y[2] * (1. + (1.+zend) * dy[2] / y[2] / 3.); + + /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) + = (1.+zend) * (1.+zend) * preco->Nnow * x0 * _sigma_ * _Mpc_over_m_; + + /* fprintf(stdout,"%e %e %e %e %e %e\n", */ + /* *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_z), */ + /* *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_xe), */ + /* *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_Tb), */ + /* (1.+zend) * dy[2], */ + /* *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2), */ + /* *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) */ + /* ); */ + + } + + /** - cleanup generic integrator with cleanup_generic_integrator() */ + + class_call(cleanup_generic_integrator(&gi), + gi.error_message, + pth->error_message); + + return _SUCCESS_; +} + +/** + * Subroutine evaluating the derivative with respect to redshift of + * thermodynamical quantities (from RECFAST version 1.4). + * + * Computes derivatives of the three variables to integrate: \f$ d x_H + * / dz, d x_{He} / dz, d T_{mat} / dz \f$. + * + * This is one of the few functions in the code which are passed to + * the generic_integrator() routine. Since generic_integrator() + * should work with functions passed from various modules, the format + * of the arguments is a bit special: + * + * - fixed parameters and workspaces are passed through a generic + * pointer. Here, this pointer contains the precision, background + * and recombination structures, plus a background vector, but + * generic_integrator() doesn't know its fine structure. + * + * - the error management is a bit special: errors are not written as + * usual to pth->error_message, but to a generic error_message + * passed in the list of arguments. + * + * @param z Input: redshift + * @param y Input: vector of variable to integrate + * @param dy Output: its derivative (already allocated) + * @param parameters_and_workspace Input: pointer to fixed parameters (e.g. indices) and workspace (already allocated) + * @param error_message Output: error message + */ + +int thermodynamics_derivs_with_recfast( + double z, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message + ) { + + + /* define local variables */ + + double x,n,n_He,Trad,Tmat,x_H,x_He,Hz,dHdz,epsilon; + double Rup,Rdown,K,K_He,Rup_He,Rdown_He,He_Boltz; + double timeTh,timeH; + double sq_0,sq_1; + + /* new in recfast 1.4: */ + double Rdown_trip,Rup_trip,tauHe_s,pHe_s,Doppler,gamma_2Ps,pb,qb,AHcon; + double tauHe_t,pHe_t,CL_PSt,gamma_2Pt; + double CfHe_t=0.; + int Heflag; + + struct thermodynamics_parameters_and_workspace * ptpaw; + struct precision * ppr; + struct background * pba; + struct recombination * preco; + double * pvecback; + + /* used for energy injection from dark matter */ + double C; + //double C_He; + double energy_rate; + + double tau; + double chi_heat; + double chi_ion_H; + int last_index_back; + + ptpaw = parameters_and_workspace; + ppr = ptpaw->ppr; + pba = ptpaw->pba; + preco = ptpaw->preco; + pvecback = ptpaw->pvecback; + + x_H = y[0]; + x_He = y[1]; + x = x_H + preco->fHe * x_He; + Tmat = y[2]; + + n = preco->Nnow * (1.+z) * (1.+z) * (1.+z); + n_He = preco->fHe * n; + Trad = preco->Tnow * (1.+z); + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + error_message); + + class_call(background_at_tau(pba, + tau, + pba->short_info, + pba->inter_normal, + &last_index_back, + pvecback), + pba->error_message, + error_message); + + class_call(thermodynamics_energy_injection(ppr,pba,preco,z,&energy_rate,error_message), + error_message, + error_message); + + /* Hz is H in inverse seconds (while pvecback returns [H0/c] in inverse Mpcs) */ + Hz=pvecback[pba->index_bg_H]* _c_ / _Mpc_over_m_; + + Rdown=1.e-19*_a_PPB_*pow((Tmat/1.e4),_b_PPB_)/(1.+_c_PPB_*pow((Tmat/1.e4),_d_PPB_)); + Rup = Rdown * pow((preco->CR*Tmat),1.5)*exp(-preco->CDB/Tmat); + + sq_0 = sqrt(Tmat/_T_0_); + sq_1 = sqrt(Tmat/_T_1_); + Rdown_He = _a_VF_/(sq_0 * pow((1.+sq_0),(1.-_b_VF_)) * pow((1. + sq_1),(1. + _b_VF_))); + Rup_He = 4.*Rdown_He*pow((preco->CR*Tmat),1.5)*exp(-preco->CDB_He/Tmat); + K = preco->CK/Hz; + + /* following is from recfast 1.5 */ + + if (ppr->recfast_Hswitch == _TRUE_ ) + K *= 1. + + ppr->recfast_AGauss1*exp(-pow((log(1.+z)-ppr->recfast_zGauss1)/ppr->recfast_wGauss1,2)) + + ppr->recfast_AGauss2*exp(-pow((log(1.+z)-ppr->recfast_zGauss2)/ppr->recfast_wGauss2,2)); + + /* end of new recfast 1.5 piece */ + + /* following is from recfast 1.4 */ + + Rdown_trip = _a_trip_/(sq_0*pow((1.+sq_0),(1.-_b_trip_)) * pow((1.+sq_1),(1.+_b_trip_))); + Rup_trip = Rdown_trip*exp(-_h_P_*_c_*_L_He2St_ion_/(_k_B_*Tmat))*pow(preco->CR*Tmat,1.5)*4./3.; + + if ((x_He < 5.e-9) || (x_He > ppr->recfast_x_He0_trigger2)) + Heflag = 0; + else + Heflag = ppr->recfast_Heswitch; + + if (Heflag == 0) + K_He = preco->CK_He/Hz; + else { + tauHe_s = _A2P_s_*preco->CK_He*3.*n_He*(1.-x_He)/Hz; + pHe_s = (1.-exp(-tauHe_s))/tauHe_s; + K_He = 1./(_A2P_s_*pHe_s*3.*n_He*(1.-x_He)); + + /* if (((Heflag == 2) || (Heflag >= 5)) && (x_H < 0.99999)) { */ + if (((Heflag == 2) || (Heflag >= 5)) && (x_H < 0.9999999)) { /* threshold changed by Antony Lewis in 2008 to get smoother Helium */ + + Doppler = 2.*_k_B_*Tmat/(_m_H_*_not4_*_c_*_c_); + Doppler = _c_*_L_He_2p_*sqrt(Doppler); + gamma_2Ps = 3.*_A2P_s_*preco->fHe*(1.-x_He)*_c_*_c_ + /(sqrt(_PI_)*_sigma_He_2Ps_*8.*_PI_*Doppler*(1.-x_H)) + /pow(_c_*_L_He_2p_,2); + pb = 0.36; + qb = ppr->recfast_fudge_He; + AHcon = _A2P_s_/(1.+pb*pow(gamma_2Ps,qb)); + K_He=1./((_A2P_s_*pHe_s+AHcon)*3.*n_He*(1.-x_He)); + } + + if (Heflag >= 3) { + tauHe_t = _A2P_t_*n_He*(1.-x_He)*3./(8.*_PI_*Hz*pow(_L_He_2Pt_,3)); + pHe_t = (1. - exp(-tauHe_t))/tauHe_t; + CL_PSt = _h_P_*_c_*(_L_He_2Pt_ - _L_He_2St_)/_k_B_; + if ((Heflag == 3) || (Heflag == 5) || (x_H >= 0.99999)) { + CfHe_t = _A2P_t_*pHe_t*exp(-CL_PSt/Tmat); + CfHe_t = CfHe_t/(Rup_trip+CfHe_t); + } + else { + Doppler = 2.*_k_B_*Tmat/(_m_H_*_not4_*_c_*_c_); + Doppler = _c_*_L_He_2Pt_*sqrt(Doppler); + gamma_2Pt = 3.*_A2P_t_*preco->fHe*(1.-x_He)*_c_*_c_ + /(sqrt(_PI_)*_sigma_He_2Pt_*8.*_PI_*Doppler*(1.-x_H)) + /pow(_c_*_L_He_2Pt_,2); + pb = 0.66; + qb = 0.9; + AHcon = _A2P_t_/(1.+pb*pow(gamma_2Pt,qb))/3.; + CfHe_t = (_A2P_t_*pHe_t+AHcon)*exp(-CL_PSt/Tmat); + CfHe_t = CfHe_t/(Rup_trip+CfHe_t); + } + } + } + + /* end of new recfast 1.4 piece */ + + timeTh=(1./(preco->CT*pow(Trad,4)))*(1.+x+preco->fHe)/x; + timeH=2./(3.*preco->H0*pow(1.+z,1.5)); + + /************/ + /* hydrogen */ + /************/ + + if (x_H > ppr->recfast_x_H0_trigger) + dy[0] = 0.; + else { + + /* Peebles' coefficient (approximated as one when the Hydrogen + ionization fraction is very close to one) */ + if (x_H < ppr->recfast_x_H0_trigger2) { + C = (1. + K*_Lambda_*n*(1.-x_H))/(1./preco->fu+K*_Lambda_*n*(1.-x_H)/preco->fu +K*Rup*n*(1.-x_H)); + } + else { + C = 1.; + } + + /* For DM annihilation: fraction of injected energy going into + ionization and Lya excitation */ + + /* - old approximation from Chen and Kamionkowski: */ + + //chi_ion_H = (1.-x)/3.; + + /* coefficient as revised by Slatyer et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Slatyer et al. 2013): */ + + if (x < 1.) + chi_ion_H = 0.369202*pow(1.-pow(x,0.463929),1.70237); + else + chi_ion_H = 0.; + + /* evolution of hydrogen ionisation fraction: */ + + dy[0] = (x*x_H*n*Rdown - Rup*(1.-x_H)*exp(-preco->CL/Tmat)) * C / (Hz*(1.+z)) /* Peeble's equation with fudged factors */ + -energy_rate*chi_ion_H/n*(1./_L_H_ion_+(1.-C)/_L_H_alpha_)/(_h_P_*_c_*Hz*(1.+z)); /* energy injection (neglect fraction going to helium) */ + + } + + /************/ + /* helium */ + /************/ + + if (x_He < 1.e-15) + dy[1]=0.; + else { + + if (preco->Bfact/Tmat < 680.) + He_Boltz=exp(preco->Bfact/Tmat); + else + He_Boltz=exp(680.); + + /* equations modified to take into account energy injection from dark matter */ + //C_He=(1. + K_He*_Lambda_He_*n_He*(1.-x_He)*He_Boltz)/(1. + K_He*(_Lambda_He_+Rup_He)*n_He*(1.-x_He)*He_Boltz); + + dy[1] = ((x*x_He*n*Rdown_He - Rup_He*(1.-x_He)*exp(-preco->CL_He/Tmat)) + *(1. + K_He*_Lambda_He_*n_He*(1.-x_He)*He_Boltz)) + /(Hz*(1+z)* (1. + K_He*(_Lambda_He_+Rup_He)*n_He*(1.-x_He)*He_Boltz)); /* in case of energy injection due to DM, we neglect the contribution to helium ionization */ + + /* following is from recfast 1.4 */ + /* this correction is not self-consistent when there is energy injection from dark matter, and leads to nan's at small redshift (unimportant when reionization takes over before that redshift) */ + + if (Heflag >= 3) + dy[1] = dy[1] + + (x*x_He*n*Rdown_trip + - (1.-x_He)*3.*Rup_trip*exp(-_h_P_*_c_*_L_He_2St_/(_k_B_*Tmat))) + *CfHe_t/(Hz*(1.+z)); + + /* end of new recfast 1.4 piece */ + + } + + if (timeTh < preco->H_frac*timeH) { + /* dy[2]=Tmat/(1.+z); */ + /* v 1.5: like in camb, add here a smoothing term as suggested by Adam Moss */ + dHdz=-pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pba->a_today* _c_ / _Mpc_over_m_; + epsilon = Hz * (1.+x+preco->fHe) / (preco->CT*pow(Trad,3)*x); + dy[2] = preco->Tnow + epsilon*((1.+preco->fHe)/(1.+preco->fHe+x))*((dy[0]+preco->fHe*dy[1])/x) + - epsilon* dHdz/Hz + 3.*epsilon/(1.+z); + } + else { + /* equations modified to take into account energy injection from dark matter */ + + //chi_heat = (1.+2.*preio->reionization_table[i*preio->re_size+preio->index_re_xe])/3.; // old approximation from Chen and Kamionkowski + + // coefficient as revised by Slatyer et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Slatyer et al. 2013) + if (x < 1.) + chi_heat = MIN(0.996857*(1.-pow(1.-pow(x,0.300134),1.51035)),1); + else + chi_heat = 1.; + + dy[2]= preco->CT * pow(Trad,4) * x / (1.+x+preco->fHe) * (Tmat-Trad) / (Hz*(1.+z)) + 2.*Tmat/(1.+z) + -2./(3.*_k_B_)*energy_rate*chi_heat/n/(1.+preco->fHe+x)/(Hz*(1.+z)); /* energy injection */ + } + + return _SUCCESS_; +} + +/** + * This routine merges the two tables 'recombination_table' and + * 'reionization_table' inside the table 'thermodynamics_table', and + * frees the temporary structures 'recombination' and 'reionization'. + * + * @param ppr Input: pointer to precision structure + * @param pth Input/Output: pointer to thermo structure + * @param preco Input: pointer to filled recombination structure + * @param preio Input: pointer to reionization structure + * @return the error status + */ + +int thermodynamics_merge_reco_and_reio( + struct precision * ppr, + struct thermo * pth, + struct recombination * preco, + struct reionization * preio + ) { + /** Summary: */ + + /** - define local variables */ + + int i,index_th,index_re; + + /** - first, a little check that the two tables match each other and can be merged */ + + if (pth->reio_parametrization != reio_none) { + class_test(preco->recombination_table[preio->index_reco_when_reio_start*preco->re_size+preco->index_re_z] != + preio->reionization_table[(preio->rt_size -1)*preio->re_size+preio->index_re_z], + pth->error_message, + "mismatch which should never happen"); + } + + /** - find number of redshift in full table = number in reco + number in reio - overlap */ + + pth->tt_size = ppr->recfast_Nz0 + preio->rt_size - preio->index_reco_when_reio_start - 1; + + + /** - allocate arrays in thermo structure */ + + class_alloc(pth->z_table,pth->tt_size*sizeof(double),pth->error_message); + class_alloc(pth->thermodynamics_table,pth->th_size*pth->tt_size*sizeof(double),pth->error_message); + class_alloc(pth->d2thermodynamics_dz2_table,pth->th_size*pth->tt_size*sizeof(double),pth->error_message); + + /** - fill these arrays */ + + for (i=0; i < preio->rt_size; i++) { + pth->z_table[i]= + preio->reionization_table[i*preio->re_size+preio->index_re_z]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_xe]= + preio->reionization_table[i*preio->re_size+preio->index_re_xe]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_dkappa]= + preio->reionization_table[i*preio->re_size+preio->index_re_dkappadtau]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_Tb]= + preio->reionization_table[i*preio->re_size+preio->index_re_Tb]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_cb2]= + preio->reionization_table[i*preio->re_size+preio->index_re_cb2]; + } + for (i=0; i < ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 1; i++) { + index_th=i+preio->rt_size; + index_re=i+preio->index_reco_when_reio_start+1; + pth->z_table[index_th]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_z]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_xe]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_xe]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_dkappa]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_dkappadtau]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_Tb]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_Tb]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_cb2]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_cb2]; + } + + /** - free the temporary structures */ + + free(preco->recombination_table); + + if (pth->reio_parametrization != reio_none) + free(preio->reionization_table); + + return _SUCCESS_; +} + +/** + * Subroutine for formatting thermodynamics output + */ + +int thermodynamics_output_titles(struct background * pba, + struct thermo *pth, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + + class_store_columntitle(titles,"z",_TRUE_); + class_store_columntitle(titles,"conf. time [Mpc]",_TRUE_); + class_store_columntitle(titles,"x_e",_TRUE_); + class_store_columntitle(titles,"kappa' [Mpc^-1]",_TRUE_); + //class_store_columntitle(titles,"kappa''",_TRUE_); + //class_store_columntitle(titles,"kappa'''",_TRUE_); + class_store_columntitle(titles,"exp(-kappa)",_TRUE_); + class_store_columntitle(titles,"g [Mpc^-1]",_TRUE_); + //class_store_columntitle(titles,"g'",_TRUE_); + //class_store_columntitle(titles,"g''",_TRUE_); + class_store_columntitle(titles,"Tb [K]",_TRUE_); + class_store_columntitle(titles,"c_b^2",_TRUE_); + class_store_columntitle(titles,"tau_d",_TRUE_); + //class_store_columntitle(titles,"max. rate",_TRUE_,colnum); + class_store_columntitle(titles,"r_d",pth->compute_damping_scale); + + return _SUCCESS_; +} + +int thermodynamics_output_data(struct background * pba, + struct thermo *pth, + int number_of_titles, + double *data + ){ + + int index_z, storeidx; + double *dataptr, *pvecthermo; + double z,tau; + + // pth->number_of_thermodynamics_titles = get_number_of_titles(pth->thermodynamics_titles); + //pth->size_thermodynamics_data = pth->number_of_thermodynamics_titles*pth->tt_size; + + + /* Store quantities: */ + for (index_z=0; index_ztt_size; index_z++){ + dataptr = data + index_z*number_of_titles; + pvecthermo = pth->thermodynamics_table+index_z*pth->th_size; + z = pth->z_table[index_z]; + storeidx=0; + + class_call(background_tau_of_z( + pba, + z, + &tau + ), + pba->error_message, + pth->error_message); + + class_store_double(dataptr,z,_TRUE_,storeidx); + class_store_double(dataptr,tau,_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_xe],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_dkappa],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_ddkappa],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_dddkappa],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_exp_m_kappa],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_g],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_dg],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_ddg],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_Tb],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_cb2],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_tau_d],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_rate],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_r_d],pth->compute_damping_scale,storeidx); + + } + + return _SUCCESS_; +} + +int thermodynamics_tanh(double x, + double center, + double before, + double after, + double width, + double * result) { + + *result = before + (after-before)*(tanh((x-center)/width)+1.)/2.; + + return _SUCCESS_; +} diff --git a/class_old/source/transfer.c b/class_old/source/transfer.c new file mode 100644 index 00000000..01cf0ce2 --- /dev/null +++ b/class_old/source/transfer.c @@ -0,0 +1,5015 @@ +/** @file transfer.c Documented transfer module. + * + * Julien Lesgourgues, 28.07.2013 + * + * This module has two purposes: + * + * - at the beginning, to compute the transfer functions \f$ + * \Delta_l^{X} (q) \f$, and store them in tables used for + * interpolation in other modules. + * + * - at any time in the code, to evaluate the transfer functions (for + * a given mode, initial condition, type and multipole l) at any + * wavenumber q (by interpolating within the interpolation table). + * + * Hence the following functions can be called from other modules: + * + * -# transfer_init() at the beginning (but after perturb_init() + * and bessel_init()) + * + * -# transfer_functions_at_q() at any later time + * + * -# transfer_free() at the end, when no more calls to + * transfer_functions_at_q() are needed + * + * Note that in the standard implementation of CLASS, only the pre-computed + * values of the transfer functions are used, no interpolation is necessary; + * hence the routine transfer_functions_at_q() is actually never called. + */ + +#include "transfer.h" + +/** + * Transfer function \f$ \Delta_l^{X} (q) \f$ at a given wavenumber q. + * + * For a given mode (scalar, vector, tensor), initial condition, type + * (temperature, polarization, lensing, etc) and multipole, computes + * the transfer function for an arbitrary value of q by interpolating + * between pre-computed values of q. This + * function can be called from whatever module at whatever time, + * provided that transfer_init() has been called before, and + * transfer_free() has not been called yet. + * + * Wavenumbers are called q in this module and k in the perturbation + * module. In flat universes k=q. In non-flat universes q and k differ + * through \f$ q2 = k2 + K(1+m)\f$, where m=0,1,2 for scalar, vector, + * tensor. q should be used throughout the transfer module, excepted + * when interpolating or manipulating the source functions S(k,tau) + * calculated in the perturbation module: for a given value of q, this + * should be done at the corresponding k(q). + * + * @param ptr Input: pointer to transfer structure + * @param index_md Input: index of requested mode + * @param index_ic Input: index of requested initial condition + * @param index_tt Input: index of requested type + * @param index_l Input: index of requested multipole + * @param q Input: any wavenumber + * @param transfer_function Output: transfer function + * @return the error status + */ + +int transfer_functions_at_q( + struct transfers * ptr, + int index_md, + int index_ic, + int index_tt, + int index_l, + double q, + double * transfer_function + ) { + /** Summary: */ + + /** - interpolate in pre-computed table using array_interpolate_two() */ + class_call(array_interpolate_two( + ptr->q, + 1, + 0, + ptr->transfer[index_md] + +((index_ic * ptr->tt_size[index_md] + index_tt) * ptr->l_size[index_md] + index_l) + * ptr->q_size, + 1, + ptr->q_size, + q, + transfer_function, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + return _SUCCESS_; +} + +/** + * This routine initializes the transfers structure, (in particular, + * computes table of transfer functions \f$ \Delta_l^{X} (q) \f$) + * + * Main steps: + * + * - initialize all indices in the transfers structure + * and allocate all its arrays using transfer_indices_of_transfers(). + * + * - for each thread (in case of parallel run), initialize the fields of a memory zone called the transfer_workspace with transfer_workspace_init() + * + * - loop over q values. For each q, compute the Bessel functions if needed with transfer_update_HIS(), and defer the calculation of all transfer functions to transfer_compute_for_each_q() + * - for each thread, free the the workspace with transfer_workspace_free() + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param pnl Input: pointer to nonlinear structure + * @param ptr Output: pointer to initialized transfers structure + * @return the error status + */ + +int transfer_init( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr + ) { + + /** Summary: */ + + /** - define local variables */ + + /* running index for wavenumbers */ + int index_q; + + /* conformal time today */ + double tau0; + /* conformal time at recombination */ + double tau_rec; + /* order of magnitude of the oscillation period of transfer functions */ + double q_period; + + /* maximum number of sampling times for transfer sources */ + int tau_size_max; + + /* array of sources S(k,tau), just taken from perturbation module, + or transformed if non-linear corrections are needed + sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp][index_tau * ppt->k_size[index_md] + index_k] + */ + double *** sources; + + /* array of source derivatives S''(k,tau) + (second derivative with respect to k, not tau!), + used to interpolate sources at the right values of k, + sources_spline[index_md][index_ic * ppt->tp_size[index_md] + index_tp][index_tau * ppt->k_size[index_md] + index_k] + */ + double *** sources_spline; + + /* pointer on workspace (one per thread if openmp) */ + struct transfer_workspace * ptw; + + /** - array with the correspondence between the index of sources in + the perturbation module and in the transfer module, + tp_of_tt[index_md][index_tt] + */ + int ** tp_of_tt; + + /* structure containing the flat spherical bessel functions */ + + HyperInterpStruct BIS; + double xmax; + + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" just after leaving the + parallel region. */ + int abort; + +#ifdef _OPENMP + + /* instrumentation times */ + double tstart, tstop, tspent; + +#endif + + /** - check whether any spectrum in harmonic space (i.e., any \f$C_l\f$'s) is actually requested */ + + if (ppt->has_cls == _FALSE_) { + ptr->has_cls = _FALSE_; + if (ptr->transfer_verbose > 0) + printf("No harmonic space transfer functions to compute. Transfer module skipped.\n"); + return _SUCCESS_; + } + else + ptr->has_cls = _TRUE_; + + if (ptr->transfer_verbose > 0) + fprintf(stdout,"Computing transfers\n"); + + /** - get number of modes (scalars, tensors...) */ + + ptr->md_size = ppt->md_size; + + /** - get conformal age / recombination time + from background / thermodynamics structures + (only place where these structures are used in this module) */ + + tau0 = pba->conformal_age; + tau_rec = pth->tau_rec; + + /** - correspondence between k and l depend on angular diameter + distance, i.e. on curvature. */ + + ptr->angular_rescaling = pth->angular_rescaling; + + /** - order of magnitude of the oscillation period of transfer functions */ + + q_period = 2.*_PI_/(tau0-tau_rec)*ptr->angular_rescaling; + + /** - initialize all indices in the transfers structure and + allocate all its arrays using transfer_indices_of_transfers() */ + + class_call(transfer_indices_of_transfers(ppr,ppt,ptr,q_period,pba->K,pba->sgnK), + ptr->error_message, + ptr->error_message); + + /** - copy sources to a local array sources (in fact, only the pointers are copied, not the data), and eventually apply non-linear corrections to the sources */ + + class_alloc(sources, + ptr->md_size*sizeof(double**), + ptr->error_message); + + class_call(transfer_perturbation_copy_sources_and_nl_corrections(ppt,pnl,ptr,sources), + ptr->error_message, + ptr->error_message); + + /** - spline all the sources passed by the perturbation module with respect to k (in order to interpolate later at a given value of k) */ + + class_alloc(sources_spline, + ptr->md_size*sizeof(double**), + ptr->error_message); + + class_call(transfer_perturbation_source_spline(ppt,ptr,sources,sources_spline), + ptr->error_message, + ptr->error_message); + + /** - allocate and fill array describing the correspondence between perturbation types and transfer types */ + + class_alloc(tp_of_tt, + ptr->md_size*sizeof(int*), + ptr->error_message); + + class_call(transfer_get_source_correspondence(ppt,ptr,tp_of_tt), + ptr->error_message, + ptr->error_message); + + /** - evaluate maximum number of sampled times in the transfer + sources: needs to be known here, in order to allocate a large + enough workspace */ + + class_call(transfer_source_tau_size_max(ppr,pba,ppt,ptr,tau_rec,tau0,&tau_size_max), + ptr->error_message, + ptr->error_message); + + /** - compute flat spherical bessel functions */ + + xmax = ptr->q[ptr->q_size-1]*tau0; + if (pba->sgnK == -1) + xmax *= (ptr->l[ptr->l_size_max-1]/ppr->hyper_flat_approximation_nu)/asinh(ptr->l[ptr->l_size_max-1]/ppr->hyper_flat_approximation_nu)*1.01; + + class_call(hyperspherical_HIS_create(0, + 1., + ptr->l_size_max, + ptr->l, + ppr->hyper_x_min, + xmax, + ppr->hyper_sampling_flat, + ptr->l[ptr->l_size_max-1]+1, + ppr->hyper_phi_min_abs, + &BIS, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* + fprintf(stderr,"tau:%d l:%d q:%d\n", + ppt->tau_size, + ptr->l_size_max, + ptr->q_size + ); + */ + + /** - eventually read the selection and evolution functions */ + + class_call(transfer_global_selection_read(ptr), + ptr->error_message, + ptr->error_message); + + /* (a.3.) workspace, allocated in a parallel zone since in openmp + version there is one workspace per thread */ + + /* initialize error management flag */ + abort = _FALSE_; + + /* beginning of parallel region */ + +#pragma omp parallel \ + shared(tau_size_max,ptr,ppr,pba,ppt,tp_of_tt,tau_rec,sources_spline,abort,BIS,tau0) \ + private(ptw,index_q,tstart,tstop,tspent) + { + +#ifdef _OPENMP + tspent = 0.; +#endif + + /* allocate workspace */ + + class_call_parallel(transfer_workspace_init(ptr, + ppr, + &ptw, + ppt->tau_size, + tau_size_max, + pba->K, + pba->sgnK, + tau0-pth->tau_cut, + &BIS), + ptr->error_message, + ptr->error_message); + + /** - loop over all wavenumbers (parallelized).*/ + /* For each wavenumber: */ + +#pragma omp for schedule (dynamic) + + for (index_q = 0; index_q < ptr->q_size; index_q++) { + +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif + + if (ptr->transfer_verbose > 2) + printf("Compute transfer for wavenumber [%d/%zu]\n",index_q,ptr->q_size-1); + + /* Update interpolation structure: */ + class_call_parallel(transfer_update_HIS(ppr, + ptr, + ptw, + index_q, + tau0), + ptr->error_message, + ptr->error_message); + + class_call_parallel(transfer_compute_for_each_q(ppr, + pba, + ppt, + ptr, + tp_of_tt, + index_q, + tau_size_max, + tau_rec, + sources, + sources_spline, + ptw), + ptr->error_message, + ptr->error_message); + +#ifdef _OPENMP + tstop = omp_get_wtime(); + + tspent += tstop-tstart; +#endif + +#pragma omp flush(abort) + + } /* end of loop over wavenumber */ + + /* free workspace allocated inside parallel zone */ + class_call_parallel(transfer_workspace_free(ptr,ptw), + ptr->error_message, + ptr->error_message); + +#ifdef _OPENMP + if (ptr->transfer_verbose>1) + printf("In %s: time spent in parallel region (loop over k's) = %e s for thread %d\n", + __func__,tspent,omp_get_thread_num()); +#endif + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + /** - finally, free arrays allocated outside parallel zone */ + + class_call(transfer_perturbation_sources_spline_free(ppt,ptr,sources_spline), + ptr->error_message, + ptr->error_message); + + class_call(transfer_perturbation_sources_free(ppt,pnl,ptr,sources), + ptr->error_message, + ptr->error_message); + + class_call(transfer_free_source_correspondence(ptr,tp_of_tt), + ptr->error_message, + ptr->error_message); + + class_call(hyperspherical_HIS_free(&BIS,ptr->error_message), + ptr->error_message, + ptr->error_message); + return _SUCCESS_; +} + +/** + * This routine frees all the memory space allocated by transfer_init(). + * + * To be called at the end of each run, only when no further calls to + * transfer_functions_at_k() are needed. + * + * @param ptr Input: pointer to transfers structure (which fields must be freed) + * @return the error status + */ + +int transfer_free( + struct transfers * ptr + ) { + + int index_md; + + if (ptr->has_cls == _TRUE_) { + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + free(ptr->l_size_tt[index_md]); + free(ptr->transfer[index_md]); + free(ptr->k[index_md]); + } + + free(ptr->tt_size); + free(ptr->l_size_tt); + free(ptr->l_size); + free(ptr->l); + free(ptr->q); + free(ptr->k); + free(ptr->transfer); + + if (ptr->nz_size > 0) { + free(ptr->nz_z); + free(ptr->nz_nz); + free(ptr->nz_ddnz); + } + + if (ptr->nz_evo_size > 0) { + free(ptr->nz_evo_z); + free(ptr->nz_evo_nz); + free(ptr->nz_evo_dlog_nz); + free(ptr->nz_evo_dd_dlog_nz); + } + } + + return _SUCCESS_; + +} + +/** + * This routine defines all indices and allocates all tables + * in the transfers structure + * + * Compute list of (k, l) values, allocate and fill corresponding + * arrays in the transfers structure. Allocate the array of transfer + * function tables. + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input/Output: pointer to transfer structure + * @param q_period Input: order of magnitude of the oscillation period of transfer functions + * @param K Input: spatial curvature (in absolute value) + * @param sgnK Input: spatial curvature sign (open/closed/flat) + * @return the error status + */ + +int transfer_indices_of_transfers( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_period, + double K, + int sgnK + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_md,index_tt,index_tt_common; + + /** - define indices for transfer types */ + + class_alloc(ptr->tt_size,ptr->md_size * sizeof(int),ptr->error_message); + + /** - type indices common to scalars and tensors */ + + index_tt = 0; + + class_define_index(ptr->index_tt_t2,ppt->has_cl_cmb_temperature, index_tt,1); + class_define_index(ptr->index_tt_e, ppt->has_cl_cmb_polarization,index_tt,1); + + index_tt_common=index_tt; + + /** - type indices for scalars */ + + if (ppt->has_scalars == _TRUE_) { + + index_tt = index_tt_common; + + class_define_index(ptr->index_tt_t0, ppt->has_cl_cmb_temperature, index_tt,1); + class_define_index(ptr->index_tt_t1, ppt->has_cl_cmb_temperature, index_tt,1); + class_define_index(ptr->index_tt_lcmb, ppt->has_cl_cmb_lensing_potential,index_tt,1); + class_define_index(ptr->index_tt_density,ppt->has_nc_density, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_rsd, ppt->has_nc_rsd, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_d0, ppt->has_nc_rsd, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_d1, ppt->has_nc_rsd, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_lens,ppt->has_nc_lens, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_g1, ppt->has_nc_gr, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_g2, ppt->has_nc_gr, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_g3, ppt->has_nc_gr, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_g4, ppt->has_nc_gr, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_nc_g5, ppt->has_nc_gr, index_tt,ppt->selection_num); + class_define_index(ptr->index_tt_lensing,ppt->has_cl_lensing_potential, index_tt,ppt->selection_num); + + ptr->tt_size[ppt->index_md_scalars]=index_tt; + + } + + /** - type indices for vectors */ + + if (ppt->has_vectors == _TRUE_) { + + index_tt = index_tt_common; + + class_define_index(ptr->index_tt_t1,ppt->has_cl_cmb_temperature, index_tt,1); + class_define_index(ptr->index_tt_b, ppt->has_cl_cmb_polarization,index_tt,1); + + ptr->tt_size[ppt->index_md_vectors]=index_tt; + + } + + /** - type indices for tensors */ + + if (ppt->has_tensors == _TRUE_) { + + index_tt = index_tt_common; + + class_define_index(ptr->index_tt_b, ppt->has_cl_cmb_polarization,index_tt,1); + + ptr->tt_size[ppt->index_md_tensors]=index_tt; + + } + + /** - allocate arrays of (k, l) values and transfer functions */ + + /* number of l values for each mode and type, + l_size_tt[index_md][index_tt], and maximized for each mode, + l_size[index_md] */ + + class_alloc(ptr->l_size,ptr->md_size * sizeof(int),ptr->error_message); + + class_alloc(ptr->l_size_tt,ptr->md_size * sizeof(int *),ptr->error_message); + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + class_alloc(ptr->l_size_tt[index_md],ptr->tt_size[index_md] * sizeof(int),ptr->error_message); + } + + /* array (of array) of transfer functions for each mode, transfer[index_md] */ + + class_alloc(ptr->transfer,ptr->md_size * sizeof(double *),ptr->error_message); + + /** - get q values using transfer_get_q_list() */ + + class_call(transfer_get_q_list(ppr,ppt,ptr,q_period,K,sgnK), + ptr->error_message, + ptr->error_message); + + /** - get k values using transfer_get_k_list() */ + class_call(transfer_get_k_list(ppt,ptr,K), + ptr->error_message, + ptr->error_message); + + /* for testing, it can be useful to print the q list in a file: */ + + /* + FILE * out=fopen("output/q","w"); + int index_q; + + for (index_q=0; index_q < ptr->q_size; index_q++) { + + fprintf(out,"%d %e %e %e %e\n", + index_q, + ptr->q[index_q], + ptr->k[0][index_q], + ptr->q[index_q]/sqrt(sgnK*K), + ptr->q[index_q+1]-ptr->q[index_q]); + + } + + fclose(out); + */ + + /** - get l values using transfer_get_l_list() */ + class_call(transfer_get_l_list(ppr,ppt,ptr), + ptr->error_message, + ptr->error_message); + + /** - loop over modes (scalar, etc). For each mode: */ + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + /** - allocate arrays of transfer functions, (ptr->transfer[index_md])[index_ic][index_tt][index_l][index_k] */ + class_alloc(ptr->transfer[index_md], + ppt->ic_size[index_md] * ptr->tt_size[index_md] * ptr->l_size[index_md] * ptr->q_size * sizeof(double), + ptr->error_message); + + } + + return _SUCCESS_; + +} + +int transfer_perturbation_copy_sources_and_nl_corrections( + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr, + double *** sources + ) { + int index_md; + int index_ic; + int index_tp; + int index_k; + int index_tau; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + class_alloc(sources[index_md], + ppt->ic_size[index_md]*ppt->tp_size[index_md]*sizeof(double*), + ptr->error_message); + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + + if ((pnl->method != nl_none) && (_scalars_) && + (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || + ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || + ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || + ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || + ((ppt->has_source_psi == _TRUE_) && (index_tp == ppt->index_tp_psi)))) { + + class_alloc(sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md]*ppt->tau_size*sizeof(double), + ptr->error_message); + + for (index_tau=0; index_tautau_size; index_tau++) { + for (index_k=0; index_kk_size[index_md]; index_k++) { + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] = + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] + * pnl->nl_corr_density[index_tau * ppt->k_size[index_md] + index_k]; + } + } + } + else { + sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp] = + ppt->sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp]; + } + } + } + } + + return _SUCCESS_; + +} + + +int transfer_perturbation_source_spline( + struct perturbs * ppt, + struct transfers * ptr, + double *** sources, + double *** sources_spline + ) { + int index_md; + int index_ic; + int index_tp; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + class_alloc(sources_spline[index_md], + ppt->ic_size[index_md]*ppt->tp_size[index_md]*sizeof(double*), + ptr->error_message); + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + + class_alloc(sources_spline[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md]*ppt->tau_size*sizeof(double), + ptr->error_message); + + class_call(array_spline_table_columns2(ppt->k[index_md], + ppt->k_size[index_md], + sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->tau_size, + sources_spline[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + _SPLINE_EST_DERIV_, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + } + } + } + + return _SUCCESS_; + +} + +int transfer_perturbation_sources_free( + struct perturbs * ppt, + struct nonlinear * pnl, + struct transfers * ptr, + double *** sources + ) { + int index_md; + int index_ic; + int index_tp; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + if ((pnl->method != nl_none) && (_scalars_) && + (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || + ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || + ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || + ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || + ((ppt->has_source_psi == _TRUE_) && (index_tp == ppt->index_tp_psi)))) { + + free(sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp]); + } + } + } + free(sources[index_md]); + } + free(sources); + + return _SUCCESS_; +} + +int transfer_perturbation_sources_spline_free( + struct perturbs * ppt, + struct transfers * ptr, + double *** sources_spline + ) { + int index_md; + int index_ic; + int index_tp; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + free(sources_spline[index_md][index_ic * ppt->tp_size[index_md] + index_tp]); + } + } + free(sources_spline[index_md]); + } + free(sources_spline); + + return _SUCCESS_; +} + +/** + * This routine defines the number and values of multipoles l for all modes. + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input/Output: pointer to transfers structure containing l's + * @return the error status + */ + +int transfer_get_l_list( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr + ) { + + int index_l; + int l_max=0; + int index_md; + int index_tt; + int increment,current_l; + /** Summary: */ + /* + fprintf(stderr,"rescaling %e logstep %e linstep %e\n", + ptr->angular_rescaling, + pow(ppr->l_logstep,ptr->angular_rescaling), + ppr->l_linstep*ptr->angular_rescaling); + */ + + /* check that largests need value of l_max */ + + if (ppt->has_cls == _TRUE_) { + + if (ppt->has_scalars == _TRUE_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) || + (ppt->has_cl_cmb_polarization == _TRUE_) || + (ppt->has_cl_cmb_lensing_potential == _TRUE_)) + l_max=MAX(ppt->l_scalar_max,l_max); + + if ((ppt->has_cl_lensing_potential == _TRUE_) || + (ppt->has_cl_number_count == _TRUE_)) + l_max=MAX(ppt->l_lss_max,l_max); + } + + if (ppt->has_tensors == _TRUE_) + l_max=MAX(ppt->l_tensor_max,l_max); + + } + + /** - allocate and fill l array */ + + /** - start from l = 2 and increase with logarithmic step */ + + index_l = 0; + current_l = 2; + increment = MAX((int)(current_l * (pow(ppr->l_logstep,ptr->angular_rescaling)-1.)),1); + + while (((current_l+increment) < l_max) && + (increment < ppr->l_linstep*ptr->angular_rescaling)) { + + index_l ++; + current_l += increment; + increment = MAX((int)(current_l * (pow(ppr->l_logstep,ptr->angular_rescaling)-1.)),1); + + } + + /** - when the logarithmic step becomes larger than some linear step, + stick to this linear step till l_max */ + + increment = ppr->l_linstep*ptr->angular_rescaling; + + while ((current_l+increment) <= l_max) { + + index_l ++; + current_l += increment; + + } + + /** - last value set to exactly l_max */ + + if (current_l != l_max) { + + index_l ++; + current_l = l_max; + + } + + ptr->l_size_max = index_l+1; + + /** - so far we just counted the number of values. Now repeat the + whole thing but fill array with values. */ + + class_alloc(ptr->l,ptr->l_size_max*sizeof(int),ptr->error_message); + + index_l = 0; + ptr->l[0] = 2; + increment = MAX((int)(ptr->l[0] * (pow(ppr->l_logstep,ptr->angular_rescaling)-1.)),1); + + while (((ptr->l[index_l]+increment) < l_max) && + (increment < ppr->l_linstep*ptr->angular_rescaling)) { + + index_l ++; + ptr->l[index_l]=ptr->l[index_l-1]+increment; + increment = MAX((int)(ptr->l[index_l] * (pow(ppr->l_logstep,ptr->angular_rescaling)-1.)),1); + + } + + increment = ppr->l_linstep*ptr->angular_rescaling; + + while ((ptr->l[index_l]+increment) <= l_max) { + + index_l ++; + ptr->l[index_l]=ptr->l[index_l-1]+increment; + + } + + if (ptr->l[index_l] != l_max) { + + index_l ++; + ptr->l[index_l]= l_max; + + } + + /* for each mode and type, find relevant size of l array, + l_size_tt[index_md][index_tt] (since for some modes and types + l_max can be smaller). Also, maximize this size for each mode to + find l_size[index_md]. */ + + for (index_md=0; index_md < ppt->md_size; index_md++) { + + ptr->l_size[index_md] = 0; + + for (index_tt=0;index_tttt_size[index_md];index_tt++) { + + if (_scalars_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && + ((index_tt == ptr->index_tt_t0) || (index_tt == ptr->index_tt_t1) || (index_tt == ptr->index_tt_t2))) + l_max=ppt->l_scalar_max; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e)) + l_max=ppt->l_scalar_max; + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb)) + l_max=ppt->l_scalar_max; + + if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens))|| + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + ) + l_max=ppt->l_lss_max; + + if ((ppt->has_cl_lensing_potential == _TRUE_) && (index_tt >= ptr->index_tt_lensing) && (index_tt < ptr->index_tt_lensing+ppt->selection_num)) + l_max=ppt->l_lss_max; + + } + + if (_tensors_) { + l_max = ppt->l_tensor_max; + } + + class_test(l_max > ptr->l[ptr->l_size_max-1], + ptr->error_message, + "For mode %d, type %d, asked for l_max=%d greater than in Bessel table where l_max=%d", + index_md, + index_tt, + l_max, + ptr->l[ptr->l_size_max-1]); + + index_l=0; + while (ptr->l[index_l] < l_max) index_l++; + ptr->l_size_tt[index_md][index_tt]=index_l+1; + + if (ptr->l_size_tt[index_md][index_tt] < ptr->l_size_max) + ptr->l_size_tt[index_md][index_tt]++; + if (ptr->l_size_tt[index_md][index_tt] < ptr->l_size_max) + ptr->l_size_tt[index_md][index_tt]++; + + ptr->l_size[index_md] = MAX(ptr->l_size[index_md],ptr->l_size_tt[index_md][index_tt]); + + } + } + + return _SUCCESS_; + +} + +/** + * This routine defines the number and values of wavenumbers q for + * each mode (goes smoothly from logarithmic step for small q's to + * linear step for large q's). + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input/Output: pointer to transfers structure containing q's + * @param q_period Input: order of magnitude of the oscillation period of transfer functions + * @param K Input: spatial curvature (in absolute value) + * @param sgnK Input: spatial curvature sign (open/closed/flat) + * @return the error status + */ + +int transfer_get_q_list( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_period, + double K, + int sgnK + ) { + + int index_q; + double q,q_min=0.,q_max=0.,q_step,k_max; + int nu, nu_min, nu_proposed; + int q_size_max; + double q_approximation; + double last_step=0.; + int last_index=0; + double q_logstep_spline; + double q_logstep_trapzd; + int index_md; + + /* first and last value in flat case*/ + + if (sgnK == 0) { + q_min = ppt->k_min; + + q_max = 0.; + for (index_md=0; index_mdmd_size; index_md++) { + q_max = MAX(q_max,ppt->k[index_md][ppt->k_size_cl[index_md]-1]); + } + + K=0; + } + + /* first and last value in open case*/ + + else if (sgnK == -1) { + q_min = sqrt(ppt->k_min*ppt->k_min+K); + + k_max = 0.; + for (index_md=0; index_mdmd_size; index_md++) { + k_max = MAX(k_max,ppt->k[index_md][ppt->k_size_cl[index_md]-1]); + } + + q_max = sqrt(k_max*k_max+K); + if (ppt->has_vectors == _TRUE_) + q_max = MIN(q_max,sqrt(k_max*k_max+2.*K)); + if (ppt->has_tensors == _TRUE_) + q_max = MIN(q_max,sqrt(k_max*k_max+3.*K)); + } + + /* first and last value in closed case*/ + + else if (sgnK == 1) { + nu_min = 3; + q_min = nu_min * sqrt(K); + + q_max = 0.; + for (index_md=0; index_mdmd_size; index_md++) { + q_max = MAX(q_max,ppt->k[index_md][ppt->k_size_cl[index_md]-1]); + } + } + + /* adjust the parameter governing the log step size to curvature */ + + q_logstep_spline = ppr->q_logstep_spline/pow(ptr->angular_rescaling,ppr->q_logstep_open); + q_logstep_trapzd = ppr->q_logstep_trapzd; + + /* very conservative estimate of number of values */ + + if (sgnK == 1) { + + q_approximation = MIN(ppr->hyper_flat_approximation_nu,(q_max/sqrt(K))); + + /* max contribution from integer nu values */ + q_step = 1.+q_period*ppr->q_logstep_trapzd; + q_size_max = 2*(int)(log(q_approximation/q_min)/log(q_step)); + + q_step = q_period*ppr->q_linstep; + q_size_max += 2*(int)((q_approximation-q_min)/q_step); + + /* max contribution from non-integer nu values */ + q_step = 1.+q_period*ppr->q_logstep_spline; + q_size_max += 2*(int)(log(q_max/q_approximation)/log(q_step)); + + q_step = q_period*ppr->q_linstep; + q_size_max += 2*(int)((q_max-q_approximation)/q_step); + + } + else { + + /* max contribution from non-integer nu values */ + q_step = 1.+q_period*ppr->q_logstep_spline; + q_size_max = 5*(int)(log(q_max/q_min)/log(q_step)); + + q_step = q_period*ppr->q_linstep; + q_size_max += 5*(int)((q_max-q_min)/q_step); + + } + + /* create array with this conservative size estimate. The exact size + will be readjusted below, after filling the array. */ + + class_alloc(ptr->q, + q_size_max*sizeof(double), + ptr->error_message); + + /* assign the first value before starting the loop */ + + index_q = 0; + ptr->q[index_q] = q_min; + nu = 3; + index_q++; + + /* loop over the values */ + + while (ptr->q[index_q-1] < q_max) { + + class_test(index_q >= q_size_max,ptr->error_message,"buggy q-list definition"); + + /* step size formula in flat/open case. Step goes gradually from + logarithmic to linear: + + - in the small q limit, it is logarithmic with: (delta q / q) = + q_period * q_logstep_spline + + - in the large q limit, it is linear with: (delta q) = q_period + * ppr->q_linstep + */ + + if (sgnK<=0) { + + q = ptr->q[index_q-1] + + q_period * ppr->q_linstep * ptr->q[index_q-1] + / (ptr->q[index_q-1] + ppr->q_linstep/q_logstep_spline); + + } + + /* step size formula in closed case. Same thing excepted that: + + - in the small q limit, the logarithmic step is reduced, being + given by q_logstep_trapzd, and values are rounded to integer + values of nu=q/sqrt(K). This happens as long as + nunu_flat_approximation, the step gradually catches up + the same expression as in the flat/open case, and there is no + need to round up to integer nu's. + */ + + else { + + if (nu < (int)ppr->hyper_flat_approximation_nu) { + + q = ptr->q[index_q-1] + + q_period * ppr->q_linstep * ptr->q[index_q-1] + / (ptr->q[index_q-1] + ppr->q_linstep/q_logstep_trapzd); + + nu_proposed = (int)(q/sqrt(K)); + if (nu_proposed <= nu+1) + nu = nu+1; + else + nu = nu_proposed; + + q = nu*sqrt(K); + last_step = q - ptr->q[index_q-1]; + last_index = index_q+1; + } + else { + + q_step = q_period * ppr->q_linstep * ptr->q[index_q-1] / (ptr->q[index_q-1] + ppr->q_linstep/q_logstep_spline); + + if (index_q-last_index < (int)ppr->q_numstep_transition) + q = ptr->q[index_q-1] + (1-(double)(index_q-last_index)/ppr->q_numstep_transition) * last_step + (double)(index_q-last_index)/ppr->q_numstep_transition * q_step; + else + q = ptr->q[index_q-1] + q_step; + } + } + + ptr->q[index_q] = q; + index_q++; + } + + /* infer total number of values (also checking if we overshot the last point) */ + + if (ptr->q[index_q-1] > q_max) + ptr->q_size=index_q-1; + else + ptr->q_size=index_q; + + class_test(ptr->q_size<2,ptr->error_message,"buggy q-list definition"); + + //fprintf(stderr,"q_size_max=%d q_size = %d\n",q_size_max,ptr->q_size); + //fprintf(stderr,"q_size = %d\n",ptr->q_size); + + /* now, readjust array size */ + + class_realloc(ptr->q, + ptr->q, + ptr->q_size*sizeof(double), + ptr->error_message); + + /* in curved universe, check at which index the flat rescaling + approximation will start being used */ + + if (sgnK != 0) { + + q_approximation = ppr->hyper_flat_approximation_nu * sqrt(sgnK*K); + for (ptr->index_q_flat_approximation=0; + ptr->index_q_flat_approximation < ptr->q_size-1; + ptr->index_q_flat_approximation++) { + if (ptr->q[ptr->index_q_flat_approximation] > q_approximation) break; + } + if (ptr->transfer_verbose > 1) + printf("Flat bessel approximation spares hyperspherical bessel computations for %zu wavenumebrs over a total of %zu\n", + ptr->q_size-ptr->index_q_flat_approximation,ptr->q_size); + } + + return _SUCCESS_; + +} + +/** + * This routine infers from the q values a list of corresponding k + * values for each mode. + * + * @param ppt Input: pointer to perturbation structure + * @param ptr Input/Output: pointer to transfers structure containing q's + * @param K Input: spatial curvature + * @return the error status + */ + +int transfer_get_k_list( + struct perturbs * ppt, + struct transfers * ptr, + double K + ) { + + int index_md; + int index_q; + double m=0.; + + class_alloc(ptr->k,ptr->md_size*sizeof(double*),ptr->error_message); + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + class_alloc(ptr->k[index_md],ptr->q_size*sizeof(double),ptr->error_message); + + if (_scalars_) { + m=0.; + } + if (_vectors_) { + m=1.; + } + if (_tensors_) { + m=2.; + } + + for (index_q=0; index_q < ptr->q_size; index_q++) { + ptr->k[index_md][index_q] = sqrt(ptr->q[index_q]*ptr->q[index_q]-K*(m+1.)); + } + + if (ptr->k[index_md][0] < ppt->k[index_md][0]){ + /* If ptr->k[index_md][0] < ppt->k[index_md][0] at the level of rounding, + adjust first value of k_list to avoid interpolation errors: */ + if ((ppt->k[index_md][0]-ptr->k[index_md][0]) < 10.*DBL_EPSILON){ + ptr->k[index_md][0] = ppt->k[index_md][0]; + } + else{ + class_stop(ptr->error_message, + "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", + ppt->k[0][0], + index_md, + ptr->k[index_md][0]); + } + } + + /* + class_test(ptr->k[index_md][0] < ppt->k[index_md][0], + ptr->error_message, + "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", + ppt->k[0][0], + index_md, + ptr->k[index_md][0]); + */ + class_test(ptr->k[index_md][ptr->q_size-1] > ppt->k[0][ppt->k_size_cl[0]-1], + ptr->error_message, + "bug in k_list calculation: in perturbation module k_max=%e, in transfer module k_max[mode=%d]=%e, interpolation impossible", + ppt->k[0][ppt->k_size_cl[0]], + index_md, + ptr->k[index_md][ptr->q_size-1]); + + + } + + return _SUCCESS_; + +} + +/** + * This routine defines the correspondence between the sources in the + * perturbation and transfer module. + * + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure containing l's + * @param tp_of_tt Input/Output: array with the correspondence (allocated before, filled here) + * @return the error status + */ + +int transfer_get_source_correspondence( + struct perturbs * ppt, + struct transfers * ptr, + int ** tp_of_tt + ) { +/** Summary: */ + /** - running index on modes */ + int index_md; + + /** - running index on transfer types */ + int index_tt; + + /** - which source are we considering? Define correspondence + between transfer types and source types */ + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + class_alloc(tp_of_tt[index_md],ptr->tt_size[index_md]*sizeof(int),ptr->error_message); + + for (index_tt=0; index_tttt_size[index_md]; index_tt++) { + + if (_scalars_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t0)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t0; + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t1)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t1; + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t2; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_p; + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; + + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_delta_m; + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_theta_m; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_theta_m; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_theta_m; + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_psi; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi; + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_prime; + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; + + if ((ppt->has_cl_lensing_potential == _TRUE_) && (index_tt >= ptr->index_tt_lensing) && (index_tt < ptr->index_tt_lensing+ppt->selection_num)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; + + } + + if (_vectors_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t1)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t1; + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t2; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_p; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_b)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_p; + } + + if (_tensors_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_t2; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_p; + + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_b)) + tp_of_tt[index_md][index_tt]=ppt->index_tp_p; + } + } + } + + return _SUCCESS_; + +} + +int transfer_free_source_correspondence( + struct transfers * ptr, + int ** tp_of_tt + ) { + + int index_md; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + free(tp_of_tt[index_md]); + } + free(tp_of_tt); + + return _SUCCESS_; + +} + +int transfer_source_tau_size_max( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + double tau0, + int * tau_size_max + ) { + + int index_md; + int index_tt; + int tau_size_tt=0; + + *tau_size_max = 0; + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + for (index_tt = 0; index_tt < ptr->tt_size[index_md]; index_tt++) { + + class_call(transfer_source_tau_size(ppr, + pba, + ppt, + ptr, + tau_rec, + tau0, + index_md, + index_tt, + &tau_size_tt), + ptr->error_message, + ptr->error_message); + + *tau_size_max = MAX(*tau_size_max,tau_size_tt); + } + } + + return _SUCCESS_; +} + +/** + * the code makes a distinction between "perturbation sources" + * (e.g. gravitational potential) and "transfer sources" (e.g. total + * density fluctuations, obtained through the Poisson equation, and + * observed with a given selection function). + * + * This routine computes the number of sampled time values for each type + * of transfer sources. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param tau_rec Input: recombination time + * @param tau0 Input: time today + * @param index_md Input: index of the mode (scalar, tensor) + * @param index_tt Input: index of transfer type + * @param tau_size Output: pointer to number of sampled times + * @return the error status + */ + +int transfer_source_tau_size( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + double tau0, + int index_md, + int index_tt, + int * tau_size) { + + /* values of conformal time */ + double tau_min,tau_mean,tau_max; + + /* minimum value of index_tt */ + int index_tau_min; + + /* value of l at which limber approximation is switched on */ + int l_limber; + + /* current redshift bin number */ + int bin=0; + + /* scalar mode */ + if (_scalars_) { + + /* scalar temperature */ + if ((ppt->has_cl_cmb_temperature == _TRUE_) && + ((index_tt == ptr->index_tt_t0) || (index_tt == ptr->index_tt_t1) || (index_tt == ptr->index_tt_t2))) + *tau_size = ppt->tau_size; + + /* scalar polarization */ + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e)) + *tau_size = ppt->tau_size; + + /* cmb lensing potential */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb)) { + + /* find times before recombination, that will be thrown away */ + index_tau_min=0; + while (ppt->tau_sampling[index_tau_min]<=tau_rec) index_tau_min++; + + /* infer number of time steps after removing early times */ + *tau_size = ppt->tau_size-index_tau_min; + } + + /* density Cl's */ + if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + ) { + + /* bin number associated to particular redshift bin and selection function */ + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + bin = index_tt - ptr->index_tt_density; + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_rsd; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_d0; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_d1; + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g1; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g2; + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g3; + + /* time interval for this bin */ + class_call(transfer_selection_times(ppr, + pba, + ppt, + ptr, + bin, + &tau_min, + &tau_mean, + &tau_max), + ptr->error_message, + ptr->error_message); + + /* case selection=dirac */ + if (tau_min == tau_max) { + *tau_size = 1; + } + /* other cases (gaussian, top-hat...) */ + else { + + /* check that selection function well sampled */ + *tau_size = (int)ppr->selection_sampling; + + /* value of l at which the code switches to Limber approximation + (necessary for next step) */ + l_limber=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[bin]; + /* check that bessel well sampled, if not define finer sampling + overwriting the previous one. + One Bessel oscillations corresponds to [Delta tau]=2pi/k. + This is minimal for largest relevant k_max, + namely k_max=l_limber/(tau0-tau_mean). + We need to cut the interval (tau_max-tau_min) in pieces of size + [Delta tau]=2pi/k_max. This gives the number below. + */ + *tau_size=MAX(*tau_size,(int)((tau_max-tau_min)/((tau0-tau_mean)/l_limber))*ppr->selection_sampling_bessel); + } + } + + /* galaxy lensing Cl's, differs from density Cl's since the source + function will spread from the selection function region up to + tau0 */ + if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + ) { + + /* bin number associated to particular redshift bin and selection function */ + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) + bin = index_tt - ptr->index_tt_lensing; + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) + bin = index_tt - ptr->index_tt_nc_lens; + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g4; + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g5; + + /* time interval for this bin */ + class_call(transfer_selection_times(ppr, + pba, + ppt, + ptr, + bin, + &tau_min, + &tau_mean, + &tau_max), + ptr->error_message, + ptr->error_message); + + /* check that selection function well sampled */ + *tau_size = (int)ppr->selection_sampling; + + /* value of l at which the code switches to Limber approximation + (necessary for next step) */ + if(_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { + /* Even if G5 is integrated along the line-of-sight, we do not apply the same Limber criteria as for the other integrated terms, because here we have the derivative of the Bessel. */ + l_limber=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[bin]; + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel); + } + else { + l_limber=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[bin]; + /* check that bessel well sampled, if not define finer sampling + overwriting the previous one. + One Bessel oscillations corresponds to [Delta tau]=2pi/k. + This is minimal for largest relevant k_max, + namely k_max=l_limber/((tau0-tau_mean)/2). + We need to cut the interval (tau_0-tau_min) in pieces of size + [Delta tau]=2pi/k_max. This gives the number below. + */ + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel_los); + } + } + } + + /* tensor mode */ + if (_tensors_) { + + /* for all tensor types */ + *tau_size = ppt->tau_size; + } + + return _SUCCESS_; +} + +int transfer_compute_for_each_q( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int ** tp_of_tt, + int index_q, + int tau_size_max, + double tau_rec, + double *** pert_sources, + double *** pert_sources_spline, + struct transfer_workspace * ptw + ) { + + /** Summary: */ + + /** - define local variables */ + + /* running index for modes */ + int index_md; + /* running index for initial conditions */ + int index_ic; + /* running index for transfer types */ + int index_tt; + /* running index for multipoles */ + int index_l; + + /** - we deal with workspaces, i.e. with contiguous memory zones (one + per thread) containing various fields used by the integration + routine */ + + /* - first workspace field: perturbation source interpolated from perturbation structure */ + double * interpolated_sources; + + /* - second workspace field: list of tau0-tau values, tau0_minus_tau[index_tau] */ + double * tau0_minus_tau; + + /* - third workspace field: list of trapezoidal weights for integration over tau */ + double * w_trapz; + + /* - fourth workspace field, containing just a double: number of time values */ + int * tau_size; + + /* - fifth workspace field, identical to above interpolated sources: + sources[index_tau] */ + double * sources; + + /** - for a given l, maximum value of k such that we can convolve + the source with Bessel functions j_l(x) without reaching x_max */ + double q_max_bessel; + + /* a value of index_type */ + int previous_type; + + double l; + + short neglect; + + radial_function_type radial_type; + + /** - store the sources in the workspace and define all + fields in this workspace */ + interpolated_sources = ptw->interpolated_sources; + tau0_minus_tau = ptw->tau0_minus_tau; + w_trapz = ptw->w_trapz; + tau_size = &(ptw->tau_size); + sources = ptw->sources; + + /** - loop over all modes. For each mode */ + + for (index_md = 0; index_md < ptr->md_size; index_md++) { + + /* if we reached q_max for this mode, there is nothing to be done */ + + if (ptr->k[index_md][index_q] <= ppt->k[index_md][ppt->k_size_cl[index_md]-1]) { + + /** - loop over initial conditions. */ + /* For each of them: */ + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + /* initialize the previous type index */ + previous_type=-1; + + /* - loop over types. For each of them: */ + + for (index_tt = 0; index_tt < ptr->tt_size[index_md]; index_tt++) { + + /** - check if we must now deal with a new source with a + new index ppt->index_type. If yes, interpolate it at the + right values of k. */ + + if (tp_of_tt[index_md][index_tt] != previous_type) { + + class_call(transfer_interpolate_sources(ppt, + ptr, + index_q, + index_md, + index_ic, + tp_of_tt[index_md][index_tt], + pert_sources[index_md][index_ic * ppt->tp_size[index_md] + tp_of_tt[index_md][index_tt]], + pert_sources_spline[index_md][index_ic * ppt->tp_size[index_md] + tp_of_tt[index_md][index_tt]], + interpolated_sources), + ptr->error_message, + ptr->error_message); + } + + previous_type = tp_of_tt[index_md][index_tt]; + + /* the code makes a distinction between "perturbation + sources" (e.g. gravitational potential) and "transfer + sources" (e.g. total density fluctuations, obtained + through the Poisson equation, and observed with a given + selection function). + + The next routine computes the transfer source given the + interpolated perturbation source, and copies it in the + workspace. */ + + class_call(transfer_sources(ppr, + pba, + ppt, + ptr, + interpolated_sources, + tau_rec, + index_q, + index_md, + index_tt, + sources, + tau0_minus_tau, + w_trapz, + tau_size), + ptr->error_message, + ptr->error_message); + + /* now that the array of times tau0_minus_tau is known, we can + infer the array of radial coordinates r(tau0_minus_tau) as well as a + few other quantities related by trigonometric functions */ + + class_call(transfer_radial_coordinates(ptr,ptw,index_md,index_q), + ptr->error_message, + ptr->error_message); + + /** - Select radial function type */ + class_call(transfer_select_radial_function( + ppt, + ptr, + index_md, + index_tt, + &radial_type), + ptr->error_message, + ptr->error_message); + + for (index_l = 0; index_l < ptr->l_size[index_md]; index_l++) { + + l = (double)ptr->l[index_l]; + + /* neglect transfer function when l is much smaller than k*tau0 */ + class_call(transfer_can_be_neglected(ppr, + ppt, + ptr, + index_md, + index_ic, + index_tt, + (pba->conformal_age-tau_rec)*ptr->angular_rescaling, + ptr->q[index_q], + l, + &neglect), + ptr->error_message, + ptr->error_message); + + /* for K>0 (closed), transfer functions only defined for lsgnK == 1) && (ptr->l[index_l] >= (int)(ptr->q[index_q]/sqrt(ptw->K)+0.2))) { + neglect = _TRUE_; + } + /* This would maybe go into transfer_can_be_neglected later: */ + if ((ptw->sgnK != 0) && (index_l>=ptw->HIS.l_size) && (index_q < ptr->index_q_flat_approximation)) { + neglect = _TRUE_; + } + if (neglect == _TRUE_) { + + ptr->transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q] = 0.; + } + else { + + /* for a given l, maximum value of k such that we can + convolve the source with Bessel functions j_l(x) + without reaching x_max (this is relevant in the flat + case when the bessels are computed with the old bessel + module. otherwise this condition is guaranteed by the + choice of proper xmax when computing bessels) */ + if (ptw->sgnK == 0) { + q_max_bessel = ptw->pBIS->x[ptw->pBIS->x_size-1]/tau0_minus_tau[0]; + } + else { + q_max_bessel = ptr->q[ptr->q_size-1]; + } + + /* neglect late time CMB sources when l is above threshold */ + class_call(transfer_late_source_can_be_neglected(ppr, + ppt, + ptr, + index_md, + index_tt, + l, + &(ptw->neglect_late_source)), + ptr->error_message, + ptr->error_message); + + /* compute the transfer function for this l */ + class_call(transfer_compute_for_each_l( + ptw, + ppr, + ppt, + ptr, + index_q, + index_md, + index_ic, + index_tt, + index_l, + l, + q_max_bessel, + radial_type + ), + ptr->error_message, + ptr->error_message); + } + + } /* end of loop over l */ + + } /* end of loop over type */ + + } /* end of loop over initial condition */ + + } + + else { + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + for (index_tt = 0; index_tt < ptr->tt_size[index_md]; index_tt++) { + for (index_l = 0; index_l < ptr->l_size[index_md]; index_l++) { + + ptr->transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q] = 0.; + } + } + } + } + + } /* end of loop over mode */ + + return _SUCCESS_; + +} + +int transfer_radial_coordinates( + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_md, + int index_q + ) { + + int index_tau; + double sqrt_absK=0.; + + switch (ptw->sgnK){ + case 1: + sqrt_absK = sqrt(ptw->K); + for (index_tau=0; index_tau < ptw->tau_size; index_tau++) { + ptw->chi[index_tau] = sqrt_absK*ptw->tau0_minus_tau[index_tau]; + ptw->cscKgen[index_tau] = sqrt_absK/ptr->k[index_md][index_q]/sin(ptw->chi[index_tau]); + ptw->cotKgen[index_tau] = ptw->cscKgen[index_tau]*cos(ptw->chi[index_tau]); + } + break; + case 0: + for (index_tau=0; index_tau < ptw->tau_size; index_tau++) { + ptw->chi[index_tau] = ptr->k[index_md][index_q] * ptw->tau0_minus_tau[index_tau]; + ptw->cscKgen[index_tau] = 1.0/ptw->chi[index_tau]; + ptw->cotKgen[index_tau] = 1.0/ptw->chi[index_tau]; + } + break; + case -1: + sqrt_absK = sqrt(-ptw->K); + for (index_tau=0; index_tau < ptw->tau_size; index_tau++) { + ptw->chi[index_tau] = sqrt_absK*ptw->tau0_minus_tau[index_tau]; + ptw->cscKgen[index_tau] = sqrt_absK/ptr->k[index_md][index_q]/sinh(ptw->chi[index_tau]); + ptw->cotKgen[index_tau] = ptw->cscKgen[index_tau]*cosh(ptw->chi[index_tau]); + } + break; + } + + return _SUCCESS_; +} + + +/** + * This routine interpolates sources \f$ S(k, \tau) \f$ for each mode, + * initial condition and type (of perturbation module), to get them at + * the right values of k, using the spline interpolation method. + * + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param index_q Input: index of wavenumber + * @param index_md Input: index of mode + * @param index_ic Input: index of initial condition + * @param index_type Input: index of type of source (in perturbation module) + * @param pert_source Input: array of sources + * @param pert_source_spline Input: array of second derivative of sources + * @param interpolated_sources Output: array of interpolated sources (filled here but allocated in transfer_init() to avoid numerous reallocation) + * @return the error status + */ + +int transfer_interpolate_sources( + struct perturbs * ppt, + struct transfers * ptr, + int index_q, + int index_md, + int index_ic, + int index_type, + double * pert_source, /* array with argument pert_source[index_tau*ppt->k_size[index_md]+index_k] (must be allocated) */ + double * pert_source_spline, /* array with argument pert_source_spline[index_tau*ppt->k_size[index_md]+index_k] (must be allocated) */ + double * interpolated_sources /* array with argument interpolated_sources[index_q*ppt->tau_size+index_tau] (must be allocated) */ + ) { + + /** Summary: */ + + /** - define local variables */ + + /* index running on k values in the original source array */ + int index_k; + + /* index running on time */ + int index_tau; + + /* variables used for spline interpolation algorithm */ + double h, a, b; + + /** - interpolate at each k value using the usual + spline interpolation algorithm. */ + + index_k = 0; + h = ppt->k[index_md][index_k+1] - ppt->k[index_md][index_k]; + + while (((index_k+1) < ppt->k_size[index_md]) && + (ppt->k[index_md][index_k+1] < + ptr->k[index_md][index_q])) { + index_k++; + h = ppt->k[index_md][index_k+1] - ppt->k[index_md][index_k]; + } + + class_test(h==0., + ptr->error_message, + "stop to avoid division by zero"); + + b = (ptr->k[index_md][index_q] - ppt->k[index_md][index_k])/h; + a = 1.-b; + + for (index_tau = 0; index_tau < ppt->tau_size; index_tau++) { + + interpolated_sources[index_tau] = + a * pert_source[index_tau*ppt->k_size[index_md]+index_k] + + b * pert_source[index_tau*ppt->k_size[index_md]+index_k+1] + + ((a*a*a-a) * pert_source_spline[index_tau*ppt->k_size[index_md]+index_k] + +(b*b*b-b) * pert_source_spline[index_tau*ppt->k_size[index_md]+index_k+1])*h*h/6.0; + + } + + return _SUCCESS_; + +} + +/** + * The code makes a distinction between "perturbation sources" + * (e.g. gravitational potential) and "transfer sources" (e.g. total + * density fluctuations, obtained through the Poisson equation, and + * observed with a given selection function). + * + * This routine computes the transfer source given the interpolated + * perturbation source, and copies it in the workspace. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param interpolated_sources Input: interpolated perturbation source + * @param tau_rec Input: recombination time + * @param index_q Input: index of wavenumber + * @param index_md Input: index of mode + * @param index_tt Input: index of type of (transfer) source + * @param sources Output: transfer source + * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample + * @param w_trapz Output: trapezoidal weights for integration over tau + * @param tau_size_out Output: pointer to size of previous two arrays, converted to double + * @return the error status + */ + +int transfer_sources( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double * interpolated_sources, + double tau_rec, + int index_q, + int index_md, + int index_tt, + double * sources, + double * tau0_minus_tau, + double * w_trapz, + int * tau_size_out + ) { + + /** Summary: */ + + /** - define local variables */ + + /* index running on time */ + int index_tau; + + /* bin for computation of cl_density */ + int bin=0; + + /* number of tau values */ + int tau_size; + + /* minimum tau index kept in transfer sources */ + int index_tau_min; + + /* for calling background_at_eta */ + int last_index; + double * pvecback = NULL; + + /* conformal time */ + double tau, tau0; + + /* geometrical quantities */ + double sinKgen_source=0.; + double sinKgen_source_to_lens=0.; + double cotKgen_source=0.; + double cscKgen_lens=0.; + + /* rescaling factor depending on the background at a given time */ + double rescaling=0.; + + /* flag: is there any difference between the perturbation and transfer source? */ + short redefine_source; + + /* array of selection function values at different times */ + double * selection; + + /* array of time sampling for lensing source selection function */ + double * tau0_minus_tau_lensing_sources; + + /* trapezoidal weights for lensing source selection function */ + double * w_trapz_lensing_sources; + + /* index running on time in previous two arrays */ + int index_tau_sources; + + /* number of time values in previous two arrays */ + int tau_sources_size; + + /* source evolution factor */ + double f_evo = 0.; + + /* when the selection function is multiplied by a function dNdz */ + double z; + double dNdz; + double dln_dNdz_dz; + + /** - in which cases are perturbation and transfer sources are different? + I.e., in which case do we need to multiply the sources by some + background and/or window function, and eventually to resample it, + or redefine its time limits? */ + + redefine_source = _FALSE_; + + if (_scalars_) { + + /* cmb lensing potential */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb)) + redefine_source = _TRUE_; + + /* number count Cl's */ + if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens))|| + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + ) + redefine_source = _TRUE_; + + /* galaxy lensing potential */ + if ((ppt->has_cl_lensing_potential == _TRUE_) && (index_tt >= ptr->index_tt_lensing) && (index_tt < ptr->index_tt_lensing+ppt->selection_num)) + redefine_source = _TRUE_; + + } + + /* conformal time today */ + tau0 = pba->conformal_age; + + /** - case where we need to redefine by a window function (or any + function of the background and of k) */ + if (redefine_source == _TRUE_) { + + class_call(transfer_source_tau_size(ppr, + pba, + ppt, + ptr, + tau_rec, + tau0, + index_md, + index_tt, + &tau_size), + ptr->error_message, + ptr->error_message); + + if (_scalars_) { + + /* lensing source: throw away times before recombination, and multiply psi by window function */ + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb)) { + + /* first time step after removing early times */ + index_tau_min = ppt->tau_size - tau_size; + + /* loop over time and rescale */ + for (index_tau = index_tau_min; index_tau < ppt->tau_size; index_tau++) { + + /* conformal time */ + tau = ppt->tau_sampling[index_tau]; + + /* lensing source = - W(tau) (phi(k,tau) + psi(k,tau)) Heaviside(tau-tau_rec) + with + psi,phi = metric perturbation in newtonian gauge (phi+psi = Phi_A-Phi_H of Bardeen) + W = (tau-tau_rec)/(tau_0-tau)/(tau_0-tau_rec) + H(x) = Heaviside + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (index_tau == ppt->tau_size-1) { + rescaling=0.; + } + else { + switch (pba->sgnK){ + case 1: + rescaling = sqrt(pba->K) + *sin((tau_rec-tau)*sqrt(pba->K)) + /sin((tau0-tau)*sqrt(pba->K)) + /sin((tau0-tau_rec)*sqrt(pba->K)); + break; + case 0: + rescaling = (tau_rec-tau)/(tau0-tau)/(tau0-tau_rec); + break; + case -1: + rescaling = sqrt(-pba->K) + *sinh((tau_rec-tau)*sqrt(-pba->K)) + /sinh((tau0-tau)*sqrt(-pba->K)) + /sinh((tau0-tau_rec)*sqrt(-pba->K)); + break; + } + // Note: until 2.4.3 there was a bug here: the curvature effects had been omitted. + } + + /* copy from input array to output array */ + sources[index_tau-index_tau_min] = + interpolated_sources[index_tau] + * rescaling + * ptr->lcmb_rescale + * pow(ptr->k[index_md][index_q]/ptr->lcmb_pivot,ptr->lcmb_tilt); + + /* store value of (tau0-tau) */ + tau0_minus_tau[index_tau-index_tau_min] = tau0 - tau; + + } + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + + /* density source: redefine the time sampling, multiply by + coefficient of Poisson equation, and multiply by selection + function */ + + if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + ) { + + /* bin number associated to particular redshift bin and selection function */ + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + bin = index_tt - ptr->index_tt_density; + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_rsd; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_d0; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + bin = index_tt - ptr->index_tt_d1; + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g1; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g2; + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g3; + + /* allocate temporary arrays for storing sources and for calling background */ + class_alloc(selection,tau_size*sizeof(double),ptr->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),ptr->error_message); + + /* redefine the time sampling */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + class_test(tau0 - tau0_minus_tau[0] > ppt->tau_sampling[ppt->tau_size-1], + ptr->error_message, + "this should not happen, there was probably a rounding error, if this error occurred, then this must be coded more carefully"); + + /* resample the source at those times */ + class_call(transfer_source_resample(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau, + tau_size, + index_md, + tau0, + interpolated_sources, + sources), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau, + w_trapz, + tau_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* conformal time */ + tau = tau0 - tau0_minus_tau[index_tau]; + + /* geometrical quantity */ + switch (pba->sgnK){ + case 1: + cotKgen_source = sqrt(pba->K)/ptr->k[index_md][index_q] + *cos(tau0_minus_tau[index_tau]*sqrt(pba->K)) + /sin(tau0_minus_tau[index_tau]*sqrt(pba->K)); + break; + case 0: + cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); + break; + case -1: + cotKgen_source = sqrt(-pba->K)/ptr->k[index_md][index_q] + *cosh(tau0_minus_tau[index_tau]*sqrt(-pba->K)) + /sinh(tau0_minus_tau[index_tau]*sqrt(-pba->K)); + break; + } + + /* corresponding background quantities */ + class_call(background_at_tau(pba, + tau, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution, used by number counf rsd and number count gravity terms */ + + if ((_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr))) { + + if((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)){ + + f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]/tau0_minus_tau[index_tau] + + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + if (ptr->has_nz_evo_file ==_TRUE_) { + + class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), + ptr->error_message, + "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", + ptr->nz_evo_z[0], + ptr->nz_evo_z[ptr->nz_evo_size-1], + z); + + + class_call(array_interpolate_spline( + ptr->nz_evo_z, + ptr->nz_evo_size, + ptr->nz_evo_dlog_nz, + ptr->nz_evo_dd_dlog_nz, + 1, + z, + &last_index, + &dln_dNdz_dz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; + } + else { + f_evo = 0.; + } + + } + + /* matter density source = [- (dz/dtau) W(z)] * delta_m(k,tau) + = W(tau) delta_m(k,tau) + with + delta_m = total matter perturbation (defined in gauge-independent way, see arXiv 1307.1459) + W(z) = redshift space selection function = dN/dz + W(tau) = same wrt conformal time = dN/dtau + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + rescaling = ptr->selection_bias[bin]*selection[index_tau]; + + /* redshift space distortion source = - [- (dz/dtau) W(z)] * (k/H) * theta(k,tau) */ + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = (f_evo-3.)*selection[index_tau]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a] + /ptr->k[index_md][index_q]/ptr->k[index_md][index_q]; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + + rescaling = selection[index_tau]*(1. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source*ptr->k[index_md][index_q] // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + +5.*ptr->selection_magnification_bias[bin] + -f_evo + )/ptr->k[index_md][index_q]; + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = selection[index_tau]; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = -selection[index_tau]*(3. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source*ptr->k[index_md][index_q] // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + -f_evo + ); + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]; + + sources[index_tau] *= rescaling; + + } + + /* deallocate temporary arrays */ + free(pvecback); + free(selection); + } + + /* lensing potential: eliminate early times, and multiply by selection + function */ + + if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + ) { + + /* bin number associated to particular redshift bin and selection function */ + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) + bin = index_tt - ptr->index_tt_lensing; + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) + bin = index_tt - ptr->index_tt_nc_lens; + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g4; + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + bin = index_tt - ptr->index_tt_nc_g5; + + /* allocate temporary arrays for storing sources and for calling background */ + class_alloc(pvecback, + pba->bg_size*sizeof(double), + ptr->error_message); + + /* dirac case */ + if (ppt->selection == dirac) { + tau_sources_size=1; + } + /* other cases (gaussian, tophat...) */ + else { + tau_sources_size=ppr->selection_sampling; + } + + class_alloc(selection, + tau_sources_size*sizeof(double), + ptr->error_message); + + class_alloc(tau0_minus_tau_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + class_alloc(w_trapz_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + /* time sampling for source selection function */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau_lensing_sources, + tau_sources_size), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau_lensing_sources, + tau_sources_size, + w_trapz_lensing_sources, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau_lensing_sources, + w_trapz_lensing_sources, + tau_sources_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* redefine the time sampling */ + class_call(transfer_lensing_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + /* resample the source at those times */ + class_call(transfer_source_resample(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau, + tau_size, + index_md, + tau0, + interpolated_sources, + sources), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* lensing source = - W(tau) (phi(k,tau) + psi(k,tau)) Heaviside(tau-tau_rec) + with + psi,phi = metric perturbation in newtonian gauge (phi+psi = Phi_A-Phi_H of Bardeen) + W = (tau-tau_rec)/(tau_0-tau)/(tau_0-tau_rec) + H(x) = Heaviside + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (index_tau == tau_size-1) { + rescaling=0.; + } + else { + + rescaling = 0.; + + + for (index_tau_sources=0; + index_tau_sources < tau_sources_size; + index_tau_sources++) { + + switch (pba->sgnK){ + case 1: + sinKgen_source = ptr->k[index_md][index_q]*sin(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sqrt(pba->K); + sinKgen_source_to_lens = ptr->k[index_md][index_q]*sin((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(pba->K))/sqrt(pba->K); + cotKgen_source = cos(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sinKgen_source; + cscKgen_lens = sqrt(pba->K)/ptr->k[index_md][index_q]/sin(sqrt(pba->K)*tau0_minus_tau[index_tau]); + break; + case 0: + sinKgen_source = ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]; + sinKgen_source_to_lens = ptr->k[index_md][index_q]*(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]); + cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]); + cscKgen_lens = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); + break; + case -1: + sinKgen_source = ptr->k[index_md][index_q]*sinh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sqrt(-pba->K); + sinKgen_source_to_lens = ptr->k[index_md][index_q]*sinh((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(-pba->K))/sqrt(-pba->K); + cotKgen_source = cosh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sinKgen_source; + cscKgen_lens = sqrt(-pba->K)/ptr->k[index_md][index_q]/sinh(sqrt(-pba->K)*tau0_minus_tau[index_tau]); + break; + } + + + /* condition for excluding from the sum the sources located in z=zero */ + if ((tau0_minus_tau_lensing_sources[index_tau_sources] > 0.) && (tau0_minus_tau_lensing_sources[index_tau_sources]-tau0_minus_tau[index_tau] > 0.)) { + + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) { + + rescaling += + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + ptr->k[index_md][index_q] + *sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) { + + rescaling -= + (2.-5.*ptr->selection_magnification_bias[bin])/2. + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + *ptr->k[index_md][index_q] + *sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) { + + rescaling += + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source*ptr->k[index_md][index_q] + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { + + /* background quantities at time tau_lensing_source */ + + class_call(background_at_tau(pba, + tau0-tau0_minus_tau_lensing_sources[index_tau_sources], + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution at time tau_lensing_source */ + + if ((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)) { + + f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]*cotKgen_source*ptr->k[index_md][index_q] + + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + if (ptr->has_nz_evo_file == _TRUE_) { + + class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), + ptr->error_message, + "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", + ptr->nz_evo_z[0], + ptr->nz_evo_z[ptr->nz_evo_size-1], + z); + + class_call(array_interpolate_spline( + ptr->nz_evo_z, + ptr->nz_evo_size, + ptr->nz_evo_dlog_nz, + ptr->nz_evo_dd_dlog_nz, + 1, + z, + &last_index, + &dln_dNdz_dz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; + } + else { + f_evo = 0.; + } + + rescaling += + (1. + + pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source*ptr->k[index_md][index_q] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + + 5.*ptr->selection_magnification_bias[bin] + - f_evo) + * ptr->k[index_md][index_q] + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + } + } + } + + /* copy from input array to output array */ + sources[index_tau] *= rescaling; + + } + + /* deallocate temporary arrays */ + free(pvecback); + free(selection); + free(tau0_minus_tau_lensing_sources); + free(w_trapz_lensing_sources); + + } + } + } + + /** - case where we do not need to redefine */ + + else { + + /* number of sampled time values */ + tau_size = ppt->tau_size; + + /* plain copy from input array to output array */ + memcpy(sources, + interpolated_sources, + ppt->tau_size*sizeof(double)); + + /* store values of (tau0-tau) */ + for (index_tau=0; index_tau < ppt->tau_size; index_tau++) { + tau0_minus_tau[index_tau] = tau0 - ppt->tau_sampling[index_tau]; + } + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + + /** - return tau_size value that will be stored in the workspace (the + workspace wants a double) */ + + *tau_size_out = tau_size; + + return _SUCCESS_; + +} + +/** + * Arbitrarily normalized selection function dN/dz(z,bin) + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param bin Input: redshift bin number + * @param z Input: one value of redshift + * @param selection Output: pointer to selection function + * @return the error status + */ + +int transfer_selection_function( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double z, + double * selection) { + + double x; + double dNdz; + double dln_dNdz_dz; + int last_index; + + /* trivial dirac case */ + if (ppt->selection==dirac) { + + *selection=1.; + + return _SUCCESS_; + } + + /* difference between z and the bin center (we can take the absolute + value as long as all selection functions are symmetric around + x=0) */ + x=fabs(z-ppt->selection_mean[bin]); + + /* gaussian case (the function is anyway normalized later + automatically, but could not resist to normalize it already + here) */ + if (ppt->selection==gaussian) { + + *selection = exp(-0.5*pow(x/ppt->selection_width[bin],2)) + /ppt->selection_width[bin]/sqrt(2.*_PI_); + + if ((ptr->has_nz_file == _TRUE_) || (ptr->has_nz_analytic == _TRUE_)) { + + if (ptr->has_nz_file == _TRUE_) { + + class_test((znz_z[0]) || (z>ptr->nz_z[ptr->nz_size-1]), + ptr->error_message, + "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", + ptr->nz_z[0], + ptr->nz_z[ptr->nz_size-1], + z); + + class_call(array_interpolate_spline( + ptr->nz_z, + ptr->nz_size, + ptr->nz_nz, + ptr->nz_ddnz, + 1, + z, + &last_index, + &dNdz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + *selection *= dNdz; + } + + return _SUCCESS_; + } + + /* top-hat case, with smoothed edges. The problem with sharp edges + is that the final result will be affected by random + noise. Indeed, the values of k at which the transfer functions + Delta_l(k) are sampled will never coincide with the actual edges + of the true transfer function (computed with or even without the + Limber approximation). Hence the integral Cl=\int dk + Delta_l(k)**2 (...) will be imprecise and will fluctuate randomly + with the resolution along k. With smooth edges, the problem is + solved, and the final Cls become mildly dependent on the + resolution along k. */ + + if (ppt->selection==tophat) { + + /* selection function, centered on z=mean (i.e. on x=0), equal to + one around x=0, with tanh step centered on x=width, of width + delta x = 0.1*width + */ + *selection=(1.-tanh((x-ppt->selection_width[bin])/(ppr->selection_tophat_edge*ppt->selection_width[bin])))/2.; + + if ((ptr->has_nz_file == _TRUE_) || (ptr->has_nz_analytic == _TRUE_)) { + + if (ptr->has_nz_file == _TRUE_) { + + class_call(array_interpolate_spline( + ptr->nz_z, + ptr->nz_size, + ptr->nz_nz, + ptr->nz_ddnz, + 1, + z, + &last_index, + &dNdz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + *selection *= dNdz; + } + + return _SUCCESS_; + } + + /* get here only if selection type was recognized */ + class_stop(ptr->error_message, + "invalid choice of selection function"); + + return _SUCCESS_; +} + +/** + * Analytic form for dNdz distribution, from arXiv:1004.4640 + * + * @param ptr Input: pointer to transfer structure + * @param z Input: redshift + * @param dNdz Output: density per redshift, dN/dZ + * @param dln_dNdz_dz Output: dln(dN/dz)/dz, used optionally for the source evolution + * @return the error status + */ + +int transfer_dNdz_analytic( + struct transfers * ptr, + double z, + double * dNdz, + double * dln_dNdz_dz) { + + /* Implement here your favorite analytic ansatz for the selection + function. Typical function for photometric sample: dN/dz = + (z/z0)^alpha exp[-(z/z0)^beta]. Then: dln(dN/dz)/dz = (alpha - + beta*(z/z0)^beta)/z. In principle, one is free to use different + ansatz for the selection function and the evolution + function. Since the selection function uses only dN/dz, while the + evolution uses only dln(dN/dz)/dz, it is possible to use + different functions for dN/dz and dln(dN/dz)/dz */ + + double z0,alpha,beta; + + z0 = 0.55; + alpha = 2.0; + beta = 1.5; + + *dNdz = pow(z/z0,alpha) * exp(-pow(z/z0,beta)); + + *dln_dNdz_dz = (alpha - pow(z/z0,beta)*beta)/z; + + return _SUCCESS_; + +} + +/** + * For sources that need to be multiplied by a selection function, + * redefine a finer time sampling in a small range + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param bin Input: redshift bin number + * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample + * @param tau_size Output: pointer to size of previous array + * @return the error status + */ + +int transfer_selection_sampling( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau0_minus_tau, + int tau_size) { + + /* running index on time */ + int index_tau; + + /* minimum and maximal value of time in new sampled interval */ + double tau_min,tau_mean,tau_max; + + /* time interval for this bin */ + class_call(transfer_selection_times(ppr, + pba, + ppt, + ptr, + bin, + &tau_min, + &tau_mean, + &tau_max), + ptr->error_message, + ptr->error_message); + + class_test(tau_size <= 0, + ptr->error_message, + "should be at least one"); + + /* case selection == dirac */ + if (tau_min == tau_max) { + class_test(tau_size !=1, + ptr->error_message, + "for Dirac selection function tau_size should be 1, not %d",tau_size); + tau0_minus_tau[0] = pba->conformal_age - tau_mean; + } + /* for other cases (gaussian, tophat...) define new sampled values + of (tau0-tau) with even spacing */ + else { + for (index_tau=0; index_tauconformal_age-tau_min-((double)index_tau)/((double)tau_size-1.)*(tau_max-tau_min); + } + tau0_minus_tau[tau_size-1]=pba->conformal_age-tau_max; + } + + return _SUCCESS_; + +} + +/** + * For lensing sources that need to be convolved with a selection + * function, redefine the sampling within the range extending from the + * tau_min of the selection function up to tau0 + * + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param bin Input: redshift bin number + * @param tau0 Input: time today + * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample + * @param tau_size Output: pointer to size of previous array + * @return the error status + */ + +int transfer_lensing_sampling( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double tau0, + double * tau0_minus_tau, + int tau_size) { + + /* running index on time */ + int index_tau; + + /* minimum and maximal value of time in new sampled interval */ + double tau_min,tau_mean,tau_max; + + /* time interval for this bin */ + class_call(transfer_selection_times(ppr, + pba, + ppt, + ptr, + bin, + &tau_min, + &tau_mean, + &tau_max), + ptr->error_message, + ptr->error_message); + + for (index_tau=0; index_tauconformal_age-tau_min-((double)index_tau)/((double)tau_size-1.)*(tau0-tau_min); + tau0_minus_tau[index_tau]=((double)(tau_size-1-index_tau))/((double)(tau_size-1))*(tau0-tau_min); + } + + return _SUCCESS_; + +} + + +/** + * For sources that need to be multiplied by a selection function, + * redefine a finer time sampling in a small range, and resample the + * perturbation sources at the new value by linear interpolation + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param bin Input: redshift bin number + * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample + * @param tau_size Output: pointer to size of previous array + * @param index_md Input: index of mode + * @param tau0 Input: time today + * @param interpolated_sources Input: interpolated perturbation source + * @param sources Output: resampled transfer source + * @return the error status + */ + +int transfer_source_resample( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau0_minus_tau, + int tau_size, + int index_md, + double tau0, + double * interpolated_sources, + double * sources) { + + /* running index on time */ + int index_tau; + + /* array of values of source */ + double * source_at_tau; + + /* array of source values for a given time and for all k's */ + class_alloc(source_at_tau, + sizeof(double), + ptr->error_message); + + /* interpolate the sources linearly at the new time values */ + for (index_tau=0; index_tautau_sampling, + 1, + 0, + interpolated_sources, + 1, + ppt->tau_size, + tau0-tau0_minus_tau[index_tau], + source_at_tau, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* copy the new values in the output sources array */ + sources[index_tau] = source_at_tau[0]; + } + + /* deallocate the temporary array */ + free(source_at_tau); + + return _SUCCESS_; + +} + +/** + * For each selection function, compute the min, mean and max values + * of conformal time (associated to the min, mean and max values of + * redshift specified by the user) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param bin Input: redshift bin number + * @param tau_min Output: smallest time in the selection interval + * @param tau_mean Output: time corresponding to z_mean + * @param tau_max Output: largest time in the selection interval + * @return the error status + */ + +int transfer_selection_times( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + int bin, + double * tau_min, + double * tau_mean, + double * tau_max) { + + /* a value of redshift */ + double z=0.; + + /* lower edge of time interval for this bin */ + /* the few lines below should be consistent with their counterpart in input.c */ + if (ppt->selection==gaussian) { + z = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma; + } + if (ppt->selection==tophat) { + z = ppt->selection_mean[bin]+(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin]; + } + if (ppt->selection==dirac) { + z = ppt->selection_mean[bin]; + } + + class_call(background_tau_of_z(pba, + z, + tau_min), + pba->error_message, + ppt->error_message); + + /* higher edge of time interval for this bin */ + + if (ppt->selection==gaussian) { + z = MAX(ppt->selection_mean[bin]-ppt->selection_width[bin]*ppr->selection_cut_at_sigma,0.); + } + if (ppt->selection==tophat) { + z = MAX(ppt->selection_mean[bin]-(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin],0.); + } + if (ppt->selection==dirac) { + z = ppt->selection_mean[bin]; + } + + class_call(background_tau_of_z(pba, + z, + tau_max), + pba->error_message, + ppt->error_message); + + /* central value of time interval for this bin */ + + z = MAX(ppt->selection_mean[bin],0.); + + class_call(background_tau_of_z(pba, + z, + tau_mean), + pba->error_message, + ppt->error_message); + + return _SUCCESS_; + +} + +/** + * Compute and normalize selection function for a set of time values + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param selection Output: normalized selection function + * @param tau0_minus_tau Input: values of (tau0-tau) at which source are sample + * @param w_trapz Input: trapezoidal weights for integration over tau + * @param tau_size Input: size of previous two arrays + * @param pvecback Input: allocated array of background values + * @param tau0 Input: time today + * @param bin Input: redshift bin number + * @return the error status + */ + +int transfer_selection_compute( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double * selection, + double * tau0_minus_tau, + double * w_trapz, + int tau_size, + double * pvecback, + double tau0, + int bin) { + + /* running index over time */ + int index_tau; + + /* running value of time */ + double tau; + + /* used for normalizing the selection to one */ + double norm; + + /* used for calling background_at_tau() */ + int last_index; + + /* running value of redshift */ + double z; + + if (tau_size > 1) { + + /* loop over time */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* running value of time */ + tau = tau0 - tau0_minus_tau[index_tau]; + + /* get background quantities at this time */ + class_call(background_at_tau(pba, + tau, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* infer redshift */ + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + /* get corresponding dN/dz(z,bin) */ + class_call(transfer_selection_function(ppr, + ppt, + ptr, + bin, + z, + &(selection[index_tau])), + ptr->error_message, + ptr->error_message); + + /* get corresponding dN/dtau = dN/dz * dz/dtau = dN/dz * H */ + selection[index_tau] *= pvecback[pba->index_bg_H]; + + } + + /* compute norm = \int W(tau) dtau */ + class_call(array_trapezoidal_integral(selection, + tau_size, + w_trapz, + &norm, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + + /* divide W by norm so that \int W(tau) dtau = 1 */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + selection[index_tau]/=norm; + } + + } + + /* trivial case: dirac distribution */ + else { + selection[0] = 1.; + } + + return _SUCCESS_; +} + +/** + * This routine computes the transfer functions \f$ \Delta_l^{X} (k) \f$) + * as a function of wavenumber k for a given mode, initial condition, + * type and multipole l passed in input. + * + * For a given value of k, the transfer function is inferred from + * the source function (passed in input in the array interpolated_sources) + * and from Bessel functions (passed in input in the bessels structure), + * either by convolving them along tau, or by a Limber approximation. + * This elementary task is distributed either to transfer_integrate() + * or to transfer_limber(). The task of this routine is mainly to + * loop over k values, and to decide at which k_max the calculation can + * be stopped, according to some approximation scheme designed to find a + * compromise between execution time and precision. The approximation scheme + * is defined by parameters in the precision structure. + * + * @param ptw Input: pointer to transfer_workspace structure (allocated in transfer_init() to avoid numerous reallocation) + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input/output: pointer to transfers structure (result stored there) + * @param index_q Input: index of wavenumber + * @param index_md Input: index of mode + * @param index_ic Input: index of initial condition + * @param index_tt Input: index of type of transfer + * @param index_l Input: index of multipole + * @param l Input: multipole + * @param q_max_bessel Input: maximum value of argument q at which Bessel functions are computed + * @param radial_type Input: type of radial (Bessel) functions to convolve with + * @return the error status + */ + +int transfer_compute_for_each_l( + struct transfer_workspace * ptw, + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_q, + int index_md, + int index_ic, + int index_tt, + int index_l, + double l, + double q_max_bessel, + radial_function_type radial_type + ){ + + /** Summary: */ + + /** - define local variables */ + + /* current wavenumber value */ + double q,k; + + /* value of transfer function */ + double transfer_function; + + /* whether to use the Limber approximation */ + short use_limber; + + /** - return zero transfer function if l is above l_max */ + if (index_l >= ptr->l_size_tt[index_md][index_tt]) { + + ptr->transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q] = 0.; + return _SUCCESS_; + } + + q = ptr->q[index_q]; + k = ptr->k[index_md][index_q]; + + if (ptr->transfer_verbose > 3) + printf("Compute transfer for l=%d type=%d\n",(int)l,index_tt); + + class_call(transfer_use_limber(ppr, + ppt, + ptr, + q_max_bessel, + index_md, + index_tt, + q, + l, + &use_limber), + ptr->error_message, + ptr->error_message); + + if (use_limber == _TRUE_) { + + class_call(transfer_limber(ptr, + ptw, + index_md, + index_q, + l, + q, + radial_type, + &transfer_function), + ptr->error_message, + ptr->error_message); + + } + else { + class_call(transfer_integrate( + ppt, + ptr, + ptw, + index_q, + index_md, + index_tt, + l, + index_l, + k, + radial_type, + &transfer_function + ), + ptr->error_message, + ptr->error_message); + } + + /** - store transfer function in transfer structure */ + ptr->transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q] + = transfer_function; + + return _SUCCESS_; + +} + +int transfer_use_limber( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + double q_max_bessel, + int index_md, + int index_tt, + double q, + double l, + short * use_limber) { + + + /* criteria for choosing between integration and Limber + must be implemented here */ + + *use_limber = _FALSE_; + + if (q>q_max_bessel) { + *use_limber = _TRUE_; + } + else { + + if (_scalars_) { + + //TBC: in principle the Limber condition should be adapted to account for curvature effects + + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (index_tt == ptr->index_tt_lcmb) && (l>ppr->l_switch_limber)) { + *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_density])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_rsd])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_d0])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_d1])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens) && (l>=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_lens])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_g1])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_g2])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_g3])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr) && (l>=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_g4])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr) && (l>=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[index_tt-ptr->index_tt_nc_g5])) { + if (ppt->selection != dirac) *use_limber = _TRUE_; + } + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential) && (l>=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[index_tt-ptr->index_tt_lensing])) { + *use_limber = _TRUE_; + } + } + } + + return _SUCCESS_; +} + +/** + * This routine computes the transfer functions \f$ \Delta_l^{X} (k) \f$) + * for each mode, initial condition, type, multipole l and wavenumber k, + * by convolving the source function (passed in input in the array + * interpolated_sources) with Bessel functions (passed in input in the + * bessels structure). + * + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ptw Input: pointer to transfer_workspace structure (allocated in transfer_init() to avoid numerous reallocation) + * @param index_q Input: index of wavenumber + * @param index_md Input: index of mode + * @param index_tt Input: index of type + * @param l Input: multipole + * @param index_l Input: index of multipole + * @param k Input: wavenumber + * @param radial_type Input: type of radial (Bessel) functions to convolve with + * @param trsf Output: transfer function \f$ \Delta_l(k) \f$ + * @return the error status + */ + +int transfer_integrate( + struct perturbs * ppt, + struct transfers * ptr, + struct transfer_workspace *ptw, + int index_q, + int index_md, + int index_tt, + double l, + int index_l, + double k, + radial_function_type radial_type, + double * trsf + ) { + + /** Summary: */ + + /** - define local variables */ + + double * tau0_minus_tau = ptw->tau0_minus_tau; + double * w_trapz = ptw->w_trapz; + double * sources = ptw->sources; + + /* minimum value of \f$ (\tau0-\tau) \f$ at which \f$ j_l(k[\tau_0-\tau]) \f$ is known, given that \f$ j_l(x) \f$ is sampled above some finite value \f$ x_{\min} \f$ (below which it can be approximated by zero) */ + double tau0_minus_tau_min_bessel; + + /* index in the source's tau list corresponding to the last point in the overlapping region between sources and bessels. Also the index of possible Bessel truncation. */ + int index_tau_max, index_tau_max_Bessel; + + double bessel, *radial_function; + + double x_turning_point; + + /** - find minimum value of (tau0-tau) at which \f$ j_l(k[\tau_0-\tau]) \f$ is known, given that \f$ j_l(x) \f$ is sampled above some finite value \f$ x_{\min} \f$ (below which it can be approximated by zero) */ + //tau0_minus_tau_min_bessel = x_min_l/k; /* segmentation fault impossible, checked before that k != 0 */ + //printf("index_l=%d\n",index_l); + if (ptw->sgnK==0){ + tau0_minus_tau_min_bessel = ptw->pBIS->chi_at_phimin[index_l]/k; /* segmentation fault impossible, checked before that k != 0 */ + } + else{ + + if (index_q < ptr->index_q_flat_approximation) { + + tau0_minus_tau_min_bessel = ptw->HIS.chi_at_phimin[index_l]/sqrt(ptw->sgnK*ptw->K); + + } + else { + + tau0_minus_tau_min_bessel = ptw->pBIS->chi_at_phimin[index_l]/sqrt(ptw->sgnK*ptw->K); + + if (ptw->sgnK == 1) { + x_turning_point = asin(sqrt(l*(l+1.))/ptr->q[index_q]*sqrt(ptw->sgnK*ptw->K)); + tau0_minus_tau_min_bessel *= x_turning_point/sqrt(l*(l+1.)); + } + else { + x_turning_point = asinh(sqrt(l*(l+1.))/ptr->q[index_q]*sqrt(ptw->sgnK*ptw->K)); + tau0_minus_tau_min_bessel *= x_turning_point/sqrt(l*(l+1.)); + } + } + } + /** - if there is no overlap between the region in which bessels and sources are non-zero, return zero */ + if (tau0_minus_tau_min_bessel >= tau0_minus_tau[0]) { + *trsf = 0.; + return _SUCCESS_; + } + + /** - if there is an overlap: */ + + /** - --> trivial case: the source is a Dirac function and is sampled in only one point */ + if (ptw->tau_size == 1) { + + class_call(transfer_radial_function( + ptw, + ppt, + ptr, + k, + index_q, + index_l, + 1, + &bessel, + radial_type + ), + ptr->error_message, + ptr->error_message); + + *trsf = sources[0] * bessel; + return _SUCCESS_; + } + + /** - --> other cases */ + + /** - ---> (a) find index in the source's tau list corresponding to the last point in the overlapping region. After this step, index_tau_max can be as small as zero, but not negative. */ + index_tau_max = ptw->tau_size-1; + while (tau0_minus_tau[index_tau_max] < tau0_minus_tau_min_bessel) + index_tau_max--; + /* Set index so we know if the truncation of the convolution integral is due to Bessel and not + due to the source. */ + index_tau_max_Bessel = index_tau_max; + + /** - ---> (b) the source function can vanish at large \f$ \tau \f$. Check if further points can be eliminated. After this step and if we did not return a null transfer function, index_tau_max can be as small as zero, but not negative. */ + while (sources[index_tau_max] == 0.) { + index_tau_max--; + if (index_tau_max < 0) { + *trsf = 0.; + return _SUCCESS_; + } + } + + if (ptw->neglect_late_source == _TRUE_) { + + while (tau0_minus_tau[index_tau_max] < ptw->tau0_minus_tau_cut) { + index_tau_max--; + if (index_tau_max < 0) { + *trsf = 0.; + return _SUCCESS_; + } + } + } + + /** - Compute the radial function: */ + class_alloc(radial_function,sizeof(double)*(index_tau_max+1),ptr->error_message); + + class_call(transfer_radial_function( + ptw, + ppt, + ptr, + k, + index_q, + index_l, + index_tau_max+1, + radial_function, + radial_type + ), + ptr->error_message, + ptr->error_message); + + /** - Now we do most of the convolution integral: */ + class_call(array_trapezoidal_convolution(sources, + radial_function, + index_tau_max+1, + w_trapz, + trsf, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /** - This integral is correct for the case where no truncation has + occurred. If it has been truncated at some index_tau_max because + f[index_tau_max+1]==0, it is still correct. The 'mistake' in using + the wrong weight w_trapz[index_tau_max] is exactly compensated by the + triangle we miss. However, for the Bessel cut off, we must subtract the + wrong triangle and add the correct triangle. */ + if ((index_tau_max!=(ptw->tau_size-1))&&(index_tau_max==index_tau_max_Bessel)){ + //Bessel truncation + *trsf -= 0.5*(tau0_minus_tau[index_tau_max+1]-tau0_minus_tau_min_bessel)* + radial_function[index_tau_max]*sources[index_tau_max]; + } + + + free(radial_function); + return _SUCCESS_; +} + +/** + * This routine computes the transfer functions \f$ \Delta_l^{X} (k) \f$) + * for each mode, initial condition, type, multipole l and wavenumber k, + * by using the Limber approximation, i.e by evaluating the source function + * (passed in input in the array interpolated_sources) at a single value of + * tau (the Bessel function being approximated as a Dirac distribution). + * + * + * @param ptr Input: pointer to transfers structure + * @param ptw Input: pointer to transfer workspace structure + * @param index_md Input: index of mode + * @param index_q Input: index of wavenumber + * @param l Input: multipole + * @param q Input: wavenumber + * @param radial_type Input: type of radial (Bessel) functions to convolve with + * @param trsf Output: transfer function \f$ \Delta_l(k) \f$ + * @return the error status + */ + +int transfer_limber( + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_md, + int index_q, + double l, + double q, + radial_function_type radial_type, + double * trsf + ){ + + /** Summary: */ + + /** - define local variables */ + + /* interpolated source and its derivatives at this value */ + double S, Sp, Sm; + + double x_limber=0.; + double tau0_minus_tau_limber=0.; + double IPhiFlat = 0.; + + if (radial_type == SCALAR_TEMPERATURE_0) { + + /** - get k, l and infer tau such that k(tau0-tau)=l+1/2; + check that tau is in appropriate range */ + + if (ptw->sgnK == 0) { + tau0_minus_tau_limber = (l+0.5)/q; + } + else if (ptw->sgnK == 1) { + x_limber = asin(sqrt(l*(l+1.))/q*sqrt(ptw->K)); + tau0_minus_tau_limber = x_limber/sqrt(ptw->K); + } + else if (ptw->sgnK == -1) { + x_limber = asinh((l+0.5)/q*sqrt(-ptw->K)); + tau0_minus_tau_limber = x_limber/sqrt(-ptw->K); + } + + if ((tau0_minus_tau_limber > ptw->tau0_minus_tau[0]) || + (tau0_minus_tau_limber < ptw->tau0_minus_tau[ptw->tau_size-1])) { + *trsf = 0.; + return _SUCCESS_; + } + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + tau0_minus_tau_limber, + &S), + ptr->error_message, + ptr->error_message); + + /** - get transfer = source * \f$ \sqrt{\pi/(2l+1)}/q \f$ + = source*[tau0-tau] * \f$ \sqrt{\pi/(2l+1)}/(l+1/2)\f$ + */ + + IPhiFlat = sqrt(_PI_/(2.*l))*(1.-0.25/l+1./32./(l*l)); + + *trsf = IPhiFlat*S; + + if (ptw->sgnK == 0) { + *trsf /= (l+0.5); + } + else { + *trsf *= pow(1.-ptw->K*l*l/q/q,-1./4.)/(tau0_minus_tau_limber*q); + } + + } + + else if (radial_type == SCALAR_TEMPERATURE_1) { + + if (((l+1.5)/q > ptw->tau0_minus_tau[0]) || + ((l-0.5)/q < ptw->tau0_minus_tau[ptw->tau_size-1])) { + *trsf = 0.; + return _SUCCESS_; + } + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + (l+1.5)/q, + &Sp), + ptr->error_message, + ptr->error_message); + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + (l-0.5)/q, + &Sm), + ptr->error_message, + ptr->error_message); + + *trsf = + -sqrt(_PI_/(2.*l+3.))*Sp/(l+1.5) * (l+1.)/(2.*l+1) + +sqrt(_PI_/(2.*l-1.))*Sm/(l-0.5) * l/(2.*l+1.); + + } + + else if (radial_type == NC_RSD) { + + if (((l+2.5)/q > ptw->tau0_minus_tau[0]) || + ((l-1.5)/q < ptw->tau0_minus_tau[ptw->tau_size-1])) { + *trsf = 0.; + return _SUCCESS_; + } + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + (l+2.5)/q, + &Sp), + ptr->error_message, + ptr->error_message); + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + (l-1.5)/q, + &Sm), + ptr->error_message, + ptr->error_message); + + class_call(transfer_limber_interpolate(ptr, + ptw->tau0_minus_tau, + ptw->sources, + ptw->tau_size, + (l+0.5)/q, + &S), + ptr->error_message, + ptr->error_message); + + *trsf = + sqrt(_PI_/(2.*l+5.))*Sp/(l+2.5) * l*(l+2.)/(2.*l+1.)/(2.*l+3.) + -sqrt(_PI_/(2.*l+1.))*S/(l+0.5) * l/(2.*l+1.)*(l/(2.*l-1.)+(l+1.)/(2.*l+3.)) + +sqrt(_PI_/(2.*l-3.))*Sm/(l-1.5) * l*(l-1.)/(2.*l+1.)/(2.*l-1.); + + } + + else { + + class_stop(ptr->error_message, + "Limber approximation has not been coded for the radial_type of index %d\n", + radial_type); + + } + + return _SUCCESS_; + +} + +int transfer_limber_interpolate( + struct transfers * ptr, + double * tau0_minus_tau, + double * sources, + int tau_size, + double tau0_minus_tau_limber, + double * S + ){ + + int index_tau; + double dS,ddS; + + /** - find bracketing indices. + index_tau must be at least 1 (so that index_tau-1 is at least 0) + and at most tau_size-2 (so that index_tau+1 is at most tau_size-1). + */ + index_tau=1; + while ((tau0_minus_tau[index_tau] > tau0_minus_tau_limber) && (index_tauerror_message), + ptr->error_message, + ptr->error_message); + + } + + /* in this case, we have stored a zero for sources[index_k*tau_size+index_tau+1]. But we can use in very good approximation the fact that S*(tau0-tau) is constant near tau=tau0 and replace sources[index_k*tau_size+index_tau+1]*tau0_minus_tau[index_tau+1] by sources[index_k*tau_size+index_tau]*tau0_minus_tau[index_tau] */ + else { + + class_call(array_interpolate_parabola(tau0_minus_tau[index_tau-1], + tau0_minus_tau[index_tau], + tau0_minus_tau[index_tau+1], + tau0_minus_tau_limber, + sources[index_tau-1]*tau0_minus_tau[index_tau-1], + sources[index_tau]*tau0_minus_tau[index_tau], + sources[index_tau]*tau0_minus_tau[index_tau], + S, + &dS, + &ddS, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + + return _SUCCESS_; + +} + +/** + * This routine computes the transfer functions \f$ \Delta_l^{X} (k) + * \f$) for each mode, initial condition, type, multipole l and + * wavenumber k, by using the Limber approximation at order two, i.e + * as a function of the source function and its first two derivatives + * at a single value of tau + * + * @param tau_size Input: size of conformal time array + * @param ptr Input: pointer to transfers structure + * @param index_md Input: index of mode + * @param index_k Input: index of wavenumber + * @param l Input: multipole + * @param k Input: wavenumber + * @param tau0_minus_tau Input: array of values of (tau_today - tau) + * @param sources Input: source functions + * @param radial_type Input: type of radial (Bessel) functions to convolve with + * @param trsf Output: transfer function \f$ \Delta_l(k) \f$ + * @return the error status + */ + +int transfer_limber2( + int tau_size, + struct transfers * ptr, + int index_md, + int index_k, + double l, + double k, + double * tau0_minus_tau, + double * sources, + radial_function_type radial_type, + double * trsf + ){ + + /** Summary: */ + + /** - define local variables */ + + /* conformal time at which source must be computed */ + double tau0_minus_tau_limber; + int index_tau; + + /* interpolated source and its derivatives */ + double S, dS, ddS; + + /** - get k, l and infer tau such that k(tau0-tau)=l+1/2; + check that tau is in appropriate range */ + + tau0_minus_tau_limber = (l+0.5)/k; //TBC: to be updated to include curvature effects + + if ((tau0_minus_tau_limber > tau0_minus_tau[0]) || + (tau0_minus_tau_limber < tau0_minus_tau[tau_size-1])) { + *trsf = 0.; + return _SUCCESS_; + } + + /** - find bracketing indices */ + index_tau=0; + while ((tau0_minus_tau[index_tau] > tau0_minus_tau_limber) && (index_tauerror_message), + ptr->error_message, + ptr->error_message); + + + /** - get transfer from 2nd order Limber approx (inferred from 0809.5112 [astro-ph]) */ + + *trsf = sqrt(_PI_/(2.*l+1.))/k*((1.-3./2./(2.*l+1.)/(2.*l+1.))*S+dS/k/(2.*l+1.)-0.5*ddS/k/k); + + return _SUCCESS_; + +} + +int transfer_can_be_neglected( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_md, + int index_ic, + int index_tt, + double ra_rec, + double k, + double l, + short * neglect) { + + *neglect = _FALSE_; + + if (_scalars_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t0) && (l < (k-ppr->transfer_neglect_delta_k_S_t0)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t1) && (l < (k-ppr->transfer_neglect_delta_k_S_t1)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2) && (l < (k-ppr->transfer_neglect_delta_k_S_t2)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e) && (l < (k-ppr->transfer_neglect_delta_k_S_e)*ra_rec)) *neglect = _TRUE_; + + } + + else if (_vectors_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t1) && (l < (k-ppr->transfer_neglect_delta_k_V_t1)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2) && (l < (k-ppr->transfer_neglect_delta_k_V_t2)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e) && (l < (k-ppr->transfer_neglect_delta_k_V_e)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_b) && (l < (k-ppr->transfer_neglect_delta_k_V_b)*ra_rec)) *neglect = _TRUE_; + + } + + else if (_tensors_) { + + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (index_tt == ptr->index_tt_t2) && (l < (k-ppr->transfer_neglect_delta_k_T_t2)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_e) && (l < (k-ppr->transfer_neglect_delta_k_T_e)*ra_rec)) *neglect = _TRUE_; + + else if ((ppt->has_cl_cmb_polarization == _TRUE_) && (index_tt == ptr->index_tt_b) && (l < (k-ppr->transfer_neglect_delta_k_T_b)*ra_rec)) *neglect = _TRUE_; + + } + + return _SUCCESS_; + +} + +int transfer_late_source_can_be_neglected( + struct precision * ppr, + struct perturbs * ppt, + struct transfers * ptr, + int index_md, + int index_tt, + double l, + short * neglect) { + + *neglect = _FALSE_; + + if (l > ppr->transfer_neglect_late_source*ptr->angular_rescaling) { + + /* sources at late times can be neglected for CMB, excepted when + there is a LISW: this means for tt_t1, t2, e */ + + if (_scalars_) { + if (ppt->has_cl_cmb_temperature == _TRUE_) { + if ((index_tt == ptr->index_tt_t1) || + (index_tt == ptr->index_tt_t2)) + *neglect = _TRUE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + if (index_tt == ptr->index_tt_e) + *neglect = _TRUE_; + } + } + else if (_vectors_) { + if (ppt->has_cl_cmb_temperature == _TRUE_) { + if ((index_tt == ptr->index_tt_t1) || + (index_tt == ptr->index_tt_t2)) + *neglect = _TRUE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + if ((index_tt == ptr->index_tt_e) || + (index_tt == ptr->index_tt_b)) + *neglect = _TRUE_; + } + } + else if (_tensors_) { + if (ppt->has_cl_cmb_polarization == _TRUE_) { + if ((index_tt == ptr->index_tt_e) || + (index_tt == ptr->index_tt_b)) + *neglect = _TRUE_; + } + } + } + + return _SUCCESS_; + +} + +int transfer_radial_function( + struct transfer_workspace * ptw, + struct perturbs * ppt, + struct transfers * ptr, + double k, + int index_q, + int index_l, + int x_size, + double * radial_function, + radial_function_type radial_type + ){ + + HyperInterpStruct * pHIS; + double *chi = ptw->chi; + double *cscKgen = ptw->cscKgen; + double *cotKgen = ptw->cotKgen; + int j; + double *Phi, *dPhi, *d2Phi, *chireverse; + double K=0.,k2=1.0; + double sqrt_absK_over_k; + double absK_over_k2; + double nu=0., chi_tp=0.; + double factor, s0, s2, ssqrt3, si, ssqrt2, ssqrt2i; + double l = (double)ptr->l[index_l]; + double rescale_argument; + double rescale_amplitude; + double * rescale_function; + int (*interpolate_Phi)(); + int (*interpolate_dPhi)(); + int (*interpolate_Phid2Phi)(); + int (*interpolate_PhidPhi)(); + int (*interpolate_PhidPhid2Phi)(); + enum Hermite_Interpolation_Order HIorder; + + K = ptw->K; + k2 = k*k; + + if (ptw->sgnK==0){ + /* This is the choice consistent with chi=k*(tau0-tau) and nu=1 */ + sqrt_absK_over_k = 1.0; + } + else { + K=ptw->K; + sqrt_absK_over_k = sqrt(ptw->sgnK*K)/k; + } + absK_over_k2 =sqrt_absK_over_k*sqrt_absK_over_k; + + class_alloc(Phi,sizeof(double)*x_size,ptr->error_message); + class_alloc(dPhi,sizeof(double)*x_size,ptr->error_message); + class_alloc(d2Phi,sizeof(double)*x_size,ptr->error_message); + class_alloc(chireverse,sizeof(double)*x_size,ptr->error_message); + class_alloc(rescale_function,sizeof(double)*x_size,ptr->error_message); + + if (ptw->sgnK == 0) { + pHIS = ptw->pBIS; + rescale_argument = 1.; + rescale_amplitude = 1.; + HIorder = HERMITE4; + } + else if (index_q < ptr->index_q_flat_approximation) { + pHIS = &(ptw->HIS); + rescale_argument = 1.; + rescale_amplitude = 1.; + HIorder = HERMITE6; + } + else { + pHIS = ptw->pBIS; + if (ptw->sgnK == 1){ + nu = ptr->q[index_q]/sqrt(K); + chi_tp = asin(sqrt(ptr->l[index_l]*(ptr->l[index_l]+1.))/nu); + } + else{ + nu = ptr->q[index_q]/sqrt(-K); + chi_tp = asinh(sqrt(ptr->l[index_l]*(ptr->l[index_l]+1.))/nu); + } + rescale_argument = sqrt(ptr->l[index_l]*(ptr->l[index_l]+1.))/chi_tp; + rescale_amplitude = pow(1.-K*ptr->l[index_l]*(ptr->l[index_l]+1.)/ptr->q[index_q]/ptr->q[index_q],-1./12.); + HIorder = HERMITE4; + } + + switch (HIorder){ + case HERMITE3: + interpolate_Phi = hyperspherical_Hermite3_interpolation_vector_Phi; + interpolate_dPhi = hyperspherical_Hermite3_interpolation_vector_dPhi; + interpolate_PhidPhi = hyperspherical_Hermite3_interpolation_vector_PhidPhi; + interpolate_Phid2Phi = hyperspherical_Hermite3_interpolation_vector_Phid2Phi; + interpolate_PhidPhid2Phi = hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi; + break; + case HERMITE4: + interpolate_Phi = hyperspherical_Hermite4_interpolation_vector_Phi; + interpolate_dPhi = hyperspherical_Hermite4_interpolation_vector_dPhi; + interpolate_PhidPhi = hyperspherical_Hermite4_interpolation_vector_PhidPhi; + interpolate_Phid2Phi = hyperspherical_Hermite4_interpolation_vector_Phid2Phi; + interpolate_PhidPhid2Phi = hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi; + break; + case HERMITE6: + interpolate_Phi = hyperspherical_Hermite6_interpolation_vector_Phi; + interpolate_dPhi = hyperspherical_Hermite6_interpolation_vector_dPhi; + interpolate_PhidPhi = hyperspherical_Hermite6_interpolation_vector_PhidPhi; + interpolate_Phid2Phi = hyperspherical_Hermite6_interpolation_vector_Phid2Phi; + interpolate_PhidPhid2Phi = hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi; + break; + } + + //Reverse chi + for (j=0; jsgnK == 1) { + rescale_function[j] = + MIN( + rescale_amplitude + * (1 + + 0.34 * atan(ptr->l[index_l]/nu) * (chireverse[j]/rescale_argument-chi_tp) + + 2.00 * pow(atan(ptr->l[index_l]/nu) * (chireverse[j]/rescale_argument-chi_tp),2)), + chireverse[j]/rescale_argument/sin(chireverse[j]/rescale_argument) + ); + } + else { + rescale_function[j] = + MAX( + rescale_amplitude + * (1 + - 0.38 * atan(ptr->l[index_l]/nu) * (chireverse[j]/rescale_argument-chi_tp) + + 0.40 * pow(atan(ptr->l[index_l]/nu) * (chireverse[j]/rescale_argument-chi_tp),2)), + chireverse[j]/rescale_argument/sinh(chireverse[j]/rescale_argument) + ); + } + } + } + + /* + class_test(pHIS->x[0] > chireverse[0], + ptr->error_message, + "Bessels need to be interpolated at %e, outside the range in which they have been computed (>%e). Decrease their x_min.", + chireverse[0], + pHIS->x[0]); + */ + + class_test((pHIS->x[pHIS->x_size-1] < chireverse[x_size-1]) && (ptw->sgnK != 1), + ptr->error_message, + "Bessels need to be interpolated at %e, outside the range in which they have been computed (<%e). Increase their x_max.", + chireverse[x_size-1], + pHIS->x[pHIS->x_size-1] + ); + + switch (radial_type){ + case SCALAR_TEMPERATURE_0: + class_call(interpolate_Phi(pHIS, x_size, index_l, chireverse, Phi, ptr->error_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, NULL, dPhi, NULL); + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, d2Phi); + s2 = sqrt(1.0-3.0*K/k2); + factor = 1.0/(2.0*s2); + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + s2 = sqrt(1.0-3.0*K/k2); + factor = sqrt(3.0/8.0*(l+2.0)*(l+1.0)*l*(l-1.0))/s2; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + s0 = sqrt(1.0+K/k2); + factor = sqrt(0.5*l*(l+1))/s0; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, dPhi, NULL); + s0 = sqrt(1.0+K/k2); + ssqrt3 = sqrt(1.0-2.0*K/k2); + factor = sqrt(1.5*l*(l+1))/s0/ssqrt3; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + // hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, dPhi, NULL); + s0 = sqrt(1.0+K/k2); + ssqrt3 = sqrt(1.0-2.0*K/k2); + factor = 0.5*sqrt((l-1.0)*(l+2.0))/s0/ssqrt3; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + s0 = sqrt(1.0+K/k2); + ssqrt3 = sqrt(1.0-2.0*K/k2); + si = sqrt(1.0+2.0*K/k2); + factor = 0.5*sqrt((l-1.0)*(l+2.0))*si/s0/ssqrt3; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + ssqrt2 = sqrt(1.0-1.0*K/k2); + si = sqrt(1.0+2.0*K/k2); + factor = sqrt(3.0/8.0*(l+2.0)*(l+1.0)*l*(l-1.0))/si/ssqrt2; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, NULL); + ssqrt2 = sqrt(1.0-1.0*K/k2); + si = sqrt(1.0+2.0*K/k2); + factor = 0.25/si/ssqrt2; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, dPhi, NULL); + ssqrt2i = sqrt(1.0+3.0*K/k2); + ssqrt2 = sqrt(1.0-1.0*K/k2); + si = sqrt(1.0+2.0*K/k2); + factor = 0.5*ssqrt2i/ssqrt2/si; + for (j=0; jerror_message), + ptr->error_message, ptr->error_message); + //hyperspherical_Hermite_interpolation_vector(pHIS, x_size, index_l, chireverse, Phi, NULL, d2Phi); + //s2 = sqrt(1.0-3.0*K/k2); + factor = 1.0; + for (j=0; jhas_cl_cmb_temperature == _TRUE_) { + + if (index_tt == ptr->index_tt_t0) { + *radial_type = SCALAR_TEMPERATURE_0; + } + if (index_tt == ptr->index_tt_t1) { + *radial_type = SCALAR_TEMPERATURE_1; + } + if (index_tt == ptr->index_tt_t2) { + *radial_type = SCALAR_TEMPERATURE_2; + } + + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + + if (index_tt == ptr->index_tt_e) { + *radial_type = SCALAR_POLARISATION_E; + } + + } + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + *radial_type = SCALAR_TEMPERATURE_1; + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + *radial_type = NC_RSD; + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + *radial_type = SCALAR_TEMPERATURE_1; + + } + + if (_vectors_) { + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + + if (index_tt == ptr->index_tt_t1) { + *radial_type = VECTOR_TEMPERATURE_1; + } + if (index_tt == ptr->index_tt_t2) { + *radial_type = VECTOR_TEMPERATURE_2; + } + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + + if (index_tt == ptr->index_tt_e) { + *radial_type = VECTOR_POLARISATION_E; + } + if (index_tt == ptr->index_tt_b) { + *radial_type = VECTOR_POLARISATION_B; + } + + } + } + + if (_tensors_) { + + if (ppt->has_cl_cmb_temperature == _TRUE_) { + + if (index_tt == ptr->index_tt_t2) { + *radial_type = TENSOR_TEMPERATURE_2; + } + } + + if (ppt->has_cl_cmb_polarization == _TRUE_) { + + if (index_tt == ptr->index_tt_e) { + *radial_type = TENSOR_POLARISATION_E; + } + if (index_tt == ptr->index_tt_b) { + *radial_type = TENSOR_POLARISATION_B; + } + + } + } + + return _SUCCESS_; + +} + +/* for reading global selection function (ie the one multiplying the selection function of each bin) */ + +int transfer_global_selection_read( + struct transfers * ptr + ) { + + /* for reading selection function */ + FILE * input_file; + int row,status; + double tmp1,tmp2; + + ptr->nz_size = 0; + + if (ptr->has_nz_file == _TRUE_) { + + input_file = fopen(ptr->nz_file_name,"r"); + class_test(input_file == NULL, + ptr->error_message, + "Could not open file %s!",ptr->nz_file_name); + + /* Find size of table */ + for (row=0,status=2; status==2; row++){ + status = fscanf(input_file,"%lf %lf",&tmp1,&tmp2); + } + rewind(input_file); + ptr->nz_size = row-1; + + /* Allocate room for interpolation table */ + class_alloc(ptr->nz_z,sizeof(double)*ptr->nz_size,ptr->error_message); + class_alloc(ptr->nz_nz,sizeof(double)*ptr->nz_size,ptr->error_message); + class_alloc(ptr->nz_ddnz,sizeof(double)*ptr->nz_size,ptr->error_message); + + for (row=0; rownz_size; row++){ + status = fscanf(input_file,"%lf %lf", + &ptr->nz_z[row],&ptr->nz_nz[row]); + //printf("%d: (z,dNdz) = (%g,%g)\n",row,ptr->nz_z[row],ptr->nz_nz[row]); + } + fclose(input_file); + + /* Call spline interpolation: */ + class_call(array_spline_table_lines(ptr->nz_z, + ptr->nz_size, + ptr->nz_nz, + 1, + ptr->nz_ddnz, + _SPLINE_EST_DERIV_, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + + ptr->nz_evo_size = 0; + + if (ptr->has_nz_evo_file == _TRUE_) { + + input_file = fopen(ptr->nz_evo_file_name,"r"); + class_test(input_file == NULL, + ptr->error_message, + "Could not open file %s!",ptr->nz_evo_file_name); + + /* Find size of table */ + for (row=0,status=2; status==2; row++){ + status = fscanf(input_file,"%lf %lf",&tmp1,&tmp2); + } + rewind(input_file); + ptr->nz_evo_size = row-1; + + /* Allocate room for interpolation table */ + class_alloc(ptr->nz_evo_z,sizeof(double)*ptr->nz_evo_size,ptr->error_message); + class_alloc(ptr->nz_evo_nz,sizeof(double)*ptr->nz_evo_size,ptr->error_message); + class_alloc(ptr->nz_evo_dlog_nz,sizeof(double)*ptr->nz_evo_size,ptr->error_message); + class_alloc(ptr->nz_evo_dd_dlog_nz,sizeof(double)*ptr->nz_evo_size,ptr->error_message); + + for (row=0; rownz_evo_size; row++){ + status = fscanf(input_file,"%lf %lf", + &ptr->nz_evo_z[row],&ptr->nz_evo_nz[row]); + } + fclose(input_file); + + /* infer dlog(dN/dz)/dz from dN/dz */ + ptr->nz_evo_dlog_nz[0] = + (log(ptr->nz_evo_nz[1])-log(ptr->nz_evo_nz[0])) + /(ptr->nz_evo_z[1]-ptr->nz_evo_z[0]); + for (row=1; rownz_evo_size-1; row++){ + ptr->nz_evo_dlog_nz[row] = + (log(ptr->nz_evo_nz[row+1])-log(ptr->nz_evo_nz[row-1])) + /(ptr->nz_evo_z[row+1]-ptr->nz_evo_z[row-1]); + } + ptr->nz_evo_dlog_nz[ptr->nz_evo_size-1] = + (log(ptr->nz_evo_nz[ptr->nz_evo_size-1])-log(ptr->nz_evo_nz[ptr->nz_evo_size-2])) + /(ptr->nz_evo_z[ptr->nz_evo_size-1]-ptr->nz_evo_z[ptr->nz_evo_size-2]); + + /* to test that the file is read: + for (row=0; rownz_evo_size; row++){ + fprintf(stdout,"%d: (z,dNdz,dlndNdzdz) = (%g,%g,%g)\n",row,ptr->nz_evo_z[row],ptr->nz_evo_nz[row],ptr->nz_evo_dlog_nz[row]); + } + */ + + /* Call spline interpolation: */ + class_call(array_spline_table_lines(ptr->nz_evo_z, + ptr->nz_evo_size, + ptr->nz_evo_dlog_nz, + 1, + ptr->nz_evo_dd_dlog_nz, + _SPLINE_EST_DERIV_, + ptr->error_message), + ptr->error_message, + ptr->error_message); + } + + return _SUCCESS_; + +}; + +int transfer_workspace_init( + struct transfers * ptr, + struct precision * ppr, + struct transfer_workspace **ptw, + int perturb_tau_size, + int tau_size_max, + double K, + int sgnK, + double tau0_minus_tau_cut, + HyperInterpStruct * pBIS){ + + class_calloc(*ptw,1,sizeof(struct transfer_workspace),ptr->error_message); + + (*ptw)->tau_size_max = tau_size_max; + (*ptw)->l_size = ptr->l_size_max; + (*ptw)->HIS_allocated=_FALSE_; + (*ptw)->pBIS = pBIS; + (*ptw)->K = K; + (*ptw)->sgnK = sgnK; + (*ptw)->tau0_minus_tau_cut = tau0_minus_tau_cut; + (*ptw)->neglect_late_source = _FALSE_; + + class_alloc((*ptw)->interpolated_sources,perturb_tau_size*sizeof(double),ptr->error_message); + class_alloc((*ptw)->sources,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*ptw)->tau0_minus_tau,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*ptw)->w_trapz,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*ptw)->chi,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*ptw)->cscKgen,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*ptw)->cotKgen,tau_size_max*sizeof(double),ptr->error_message); + + return _SUCCESS_; +} + +int transfer_workspace_free( + struct transfers * ptr, + struct transfer_workspace *ptw + ) { + + if (ptw->HIS_allocated==_TRUE_){ + //Free HIS structure: + class_call(hyperspherical_HIS_free(&(ptw->HIS),ptr->error_message), + ptr->error_message, + ptr->error_message); + } + free(ptw->interpolated_sources); + free(ptw->sources); + free(ptw->tau0_minus_tau); + free(ptw->w_trapz); + free(ptw->chi); + free(ptw->cscKgen); + free(ptw->cotKgen); + + free(ptw); + return _SUCCESS_; +} + +int transfer_update_HIS( + struct precision * ppr, + struct transfers * ptr, + struct transfer_workspace * ptw, + int index_q, + double tau0 + ) { + + double nu,new_nu; + int int_nu; + double xmin, xmax, sampling, phiminabs, xtol; + double sqrt_absK; + int l_size_max; + int index_l_left,index_l_right; + + if (ptw->HIS_allocated == _TRUE_) { + class_call(hyperspherical_HIS_free(&(ptw->HIS),ptr->error_message), + ptr->error_message, + ptr->error_message); + ptw->HIS_allocated = _FALSE_; + } + + if ((ptw->sgnK!=0) && (index_q < ptr->index_q_flat_approximation)) { + + xmin = ppr->hyper_x_min; + + sqrt_absK = sqrt(ptw->sgnK*ptw->K); + + xmax = sqrt_absK*tau0; + nu = ptr->q[index_q]/sqrt_absK; + + if (ptw->sgnK == 1) { + xmax = MIN(xmax,_PI_/2.0-ppr->hyper_x_min); //We only need solution on [0;pi/2] + + int_nu = (int)(nu+0.2); + new_nu = (double)int_nu; + class_test(nu-new_nu > 1.e-6, + ptr->error_message, + "problem in q list definition in closed case for index_q=%d, nu=%e, nu-int(nu)=%e",index_q,nu,nu-new_nu); + nu = new_nu; + + } + + if (nu > ppr->hyper_nu_sampling_step) + sampling = ppr->hyper_sampling_curved_high_nu; + else + sampling = ppr->hyper_sampling_curved_low_nu; + + /* find the highest value of l such that x_nonzero < xmax = sqrt(|K|) tau0. That will be l_max. */ + l_size_max = ptr->l_size_max; + if (ptw->sgnK == 1) + while ((double)ptr->l[l_size_max-1] >= nu) + l_size_max--; + + if (ptw->sgnK == -1){ + xtol = ppr->hyper_x_tol; + phiminabs = ppr->hyper_phi_min_abs; + + /* First try to find lmax using fast approximation: */ + index_l_left=0; + index_l_right=l_size_max-1; + class_call(transfer_get_lmax(hyperspherical_get_xmin_from_approx, + ptw->sgnK, + nu, + ptr->l, + l_size_max, + phiminabs, + xmax, + xtol, + &index_l_left, + &index_l_right, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* Now use WKB approximation to eventually modify borders: */ + class_call(transfer_get_lmax(hyperspherical_get_xmin_from_Airy, + ptw->sgnK, + nu, + ptr->l, + l_size_max, + phiminabs, + xmax, + xtol, + &index_l_left, + &index_l_right, + ptr->error_message), + ptr->error_message, + ptr->error_message); + l_size_max = index_l_right+1; + } + + class_test(nu <= 0., + ptr->error_message, + "nu=%e when index_q=%d, q=%e, K=%e, sqrt(|K|)=%e; instead nu should always be strictly positive", + nu,index_q,ptr->q[index_q],ptw->K,sqrt_absK); + + class_call(hyperspherical_HIS_create(ptw->sgnK, + nu, + l_size_max, + ptr->l, + xmin, + xmax, + sampling, + ptr->l[l_size_max-1]+1, + ppr->hyper_phi_min_abs, + &(ptw->HIS), + ptr->error_message), + ptr->error_message, + ptr->error_message); + + ptw->HIS_allocated = _TRUE_; + + } + + return _SUCCESS_; +} + +int transfer_get_lmax(int (*get_xmin_generic)(int sgnK, + int l, + double nu, + double xtol, + double phiminabs, + double *x_nonzero, + int *fevals), + int sgnK, + double nu, + int *lvec, + int lsize, + double phiminabs, + double xmax, + double xtol, + int *index_l_left, + int *index_l_right, + ErrorMsg error_message){ + double x_nonzero; + int fevals=0, index_l_mid; + int multiplier; + int right_boundary_checked = _FALSE_; + int hil=0,hir=0,bini=0; + class_call(get_xmin_generic(sgnK, + lvec[0], + nu, + xtol, + phiminabs, + &x_nonzero, + &fevals), + error_message, + error_message); + if (x_nonzero >= xmax){ + //printf("None relevant\n"); + //x at left boundary is already larger than xmax. + *index_l_right = MAX(lsize-1,1); + return _SUCCESS_; + } + class_call(get_xmin_generic(sgnK, + lvec[lsize-1], + nu, + xtol, + phiminabs, + &x_nonzero, + &fevals), + error_message, + error_message); + + if (x_nonzero < xmax){ + //All Bessels are relevant + //printf("All relevant\n"); + *index_l_left = MAX(0,(lsize-2)); + return _SUCCESS_; + } + /* Hunt for left boundary: */ + for (multiplier=1; ;multiplier *= 5){ + hil++; + class_call(get_xmin_generic(sgnK, + lvec[*index_l_left], + nu, + xtol, + phiminabs, + &x_nonzero, + &fevals), + error_message, + error_message); + //printf("Hunt left, iter = %d, x_nonzero=%g\n",hil,x_nonzero); + if (x_nonzero <= xmax){ + //Boundary found + break; + } + else{ + //We can use current index_l_left as index_l_right: + *index_l_right = *index_l_left; + right_boundary_checked = _TRUE_; + } + //Update index_l_left: + *index_l_left = (*index_l_left)-multiplier; + if (*index_l_left<=0){ + *index_l_left = 0; + break; + } + } + /* If not found, hunt for right boundary: */ + if (right_boundary_checked == _FALSE_){ + for (multiplier=1; ;multiplier *= 5){ + hir++; + //printf("right iteration %d,index_l_right:%d\n",hir,*index_l_right); + class_call(get_xmin_generic(sgnK, + lvec[*index_l_right], + nu, + xtol, + phiminabs, + &x_nonzero, + &fevals), + error_message, + error_message); + if (x_nonzero >= xmax){ + //Boundary found + break; + } + else{ + //We can use current index_l_right as index_l_left: + *index_l_left = *index_l_right; + } + //Update index_l_right: + *index_l_right = (*index_l_right)+multiplier; + if (*index_l_right>=(lsize-1)){ + *index_l_right = lsize-1; + break; + } + } + } + // int fevalshunt=fevals; + fevals=0; + //Do binary search + // printf("Do binary search in get_lmax. \n"); + //printf("Region: [%d, %d]\n",*index_l_left,*index_l_right); + while (((*index_l_right) - (*index_l_left)) > 1) { + bini++; + index_l_mid= (int)(0.5*((*index_l_right)+(*index_l_left))); + //printf("left:%d, mid=%d, right=%d\n",*index_l_left,index_l_mid,*index_l_right); + class_call(get_xmin_generic(sgnK, + lvec[index_l_mid], + nu, + xtol, + phiminabs, + &x_nonzero, + &fevals), + error_message, + error_message); + if (x_nonzero < xmax) + *index_l_left=index_l_mid; + else + *index_l_right=index_l_mid; + } + //printf("Done\n"); + /* printf("Hunt left iter=%d, hunt right iter=%d (fevals: %d). For binary search: %d (fevals: %d)\n", + hil,hir,fevalshunt,bini,fevals); + */ + return _SUCCESS_; +} diff --git a/class_old/tools/arrays.c b/class_old/tools/arrays.c new file mode 100644 index 00000000..c27cdc1e --- /dev/null +++ b/class_old/tools/arrays.c @@ -0,0 +1,3132 @@ +/** + * module with tools for manipulating arrays + * Julien Lesgourgues, 18.04.2010 + */ + +#include "arrays.h" + +/** + * Called by thermodynamics_init(); perturb_sources(). + */ +int array_derive( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_dydx, + ErrorMsg errmsg) { + + int i; + + double dx1,dx2,dy1,dy2,weight1,weight2; + + class_test((index_dydx == index_x) || (index_dydx == index_y), + errmsg, + "output column %d must differ from input columns %d and %d",index_dydx,index_x,index_y); + + dx2=array[1*n_columns+index_x]-array[0*n_columns+index_x]; + dy2=array[1*n_columns+index_y]-array[0*n_columns+index_y]; + + for (i=1; i= 3",__func__,__LINE__,n_lines); + return _FAILURE_; + } + + u = malloc((n_lines-1) * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + + if (spline_mode == _SPLINE_NATURAL_) { + *(array+0*n_columns+index_ddydx2) = u[0] = 0.0; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + dy_first = + ((*(array+2*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+2*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+1*n_columns+index_y)-*(array+0*n_columns+index_y))- + (*(array+1*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+1*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+2*n_columns+index_y)-*(array+0*n_columns+index_y)))/ + ((*(array+2*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+1*n_columns+index_x)-*(array+0*n_columns+index_x))* + (*(array+2*n_columns+index_x)-*(array+1*n_columns+index_x))); + + *(array+0*n_columns+index_ddydx2) = -0.5; + + u[0] = + (3./(*(array+1*n_columns+index_x) - *(array+0*n_columns+index_x)))* + ((*(array+1*n_columns+index_y) - *(array+0*n_columns+index_y))/ + (*(array+1*n_columns+index_x) - *(array+0*n_columns+index_x)) + -dy_first); + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + for (i=1; i < n_lines-1; i++) { + + sig = (*(array+i*n_columns+index_x) - *(array+(i-1)*n_columns+index_x)) + / (*(array+(i+1)*n_columns+index_x) - *(array+(i-1)*n_columns+index_x)); + + p = sig * *(array+(i-1)*n_columns+index_ddydx2) + 2.0; + *(array+i*n_columns+index_ddydx2) = (sig-1.0)/p; + u[i] = (*(array+(i+1)*n_columns+index_y) - *(array+i*n_columns+index_y)) + / (*(array+(i+1)*n_columns+index_x) - *(array+i*n_columns+index_x)) + - (*(array+i*n_columns+index_y) - *(array+(i-1)*n_columns+index_y)) + / (*(array+i*n_columns+index_x) - *(array+(i-1)*n_columns+index_x)); + u[i]= (6.0 * u[i] / + (*(array+(i+1)*n_columns+index_x) - *(array+(i-1)*n_columns+index_x)) + - sig * u[i-1]) / p; + + } + + if (spline_mode == _SPLINE_NATURAL_) { + qn=0.; + un=0.; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + dy_last = + ((*(array+(n_lines-3)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-3)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-2)*n_columns+index_y)-*(array+(n_lines-1)*n_columns+index_y))- + (*(array+(n_lines-2)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-2)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-3)*n_columns+index_y)-*(array+(n_lines-1)*n_columns+index_y)))/ + ((*(array+(n_lines-3)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-2)*n_columns+index_x)-*(array+(n_lines-1)*n_columns+index_x))* + (*(array+(n_lines-3)*n_columns+index_x)-*(array+(n_lines-2)*n_columns+index_x))); + + qn=0.5; + un = + (3./(*(array+(n_lines-1)*n_columns+index_x) - *(array+(n_lines-2)*n_columns+index_x)))* + (dy_last-(*(array+(n_lines-1)*n_columns+index_y) - *(array+(n_lines-2)*n_columns+index_y))/ + (*(array+(n_lines-1)*n_columns+index_x) - *(array+(n_lines-2)*n_columns+index_x))); + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + *(array+(n_lines-1)*n_columns+index_ddydx2) = + (un-qn*u[n_lines-2])/(qn* *(array+(n_lines-2)*n_columns+index_ddydx2)+1.0); + + for (k=n_lines-2; k>=0; k--) + *(array+k*n_columns+index_ddydx2) = *(array+k*n_columns+index_ddydx2) * + *(array+(k+1)*n_columns+index_ddydx2) + u[k]; + + free(u); + + return _SUCCESS_; +} + +int array_spline_table_line_to_line( + double * x, /* vector of size x_size */ + int n_lines, + double * array, + int n_columns, + int index_y, + int index_ddydx2, + short spline_mode, + ErrorMsg errmsg) { + + int i,k; + double p,qn,sig,un; + double * u; + double dy_first; + double dy_last; + + u = malloc((n_lines-1) * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + + if (spline_mode == _SPLINE_NATURAL_) { + *(array+0*n_columns+index_ddydx2) = u[0] = 0.0; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + dy_first = + ((x[2]-x[0])*(x[2]-x[0])* + (*(array+1*n_columns+index_y)-*(array+0*n_columns+index_y))- + (x[1]-x[0])*(x[1]-x[0])* + (*(array+2*n_columns+index_y)-*(array+0*n_columns+index_y)))/ + ((x[2]-x[0])*(x[1]-x[0])*(x[2]-x[1])); + *(array+0*n_columns+index_ddydx2) = -0.5; + u[0] = + (3./(x[1] - x[0]))* + ((*(array+1*n_columns+index_y) - *(array+0*n_columns+index_y))/ + (x[1] - x[0])-dy_first); + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + for (i=1; i < n_lines-1; i++) { + + sig = (x[i] - x[i-1]) / (x[i+1] - x[i-1]); + + p = sig * *(array+(i-1)*n_columns+index_ddydx2) + 2.0; + *(array+i*n_columns+index_ddydx2) = (sig-1.0)/p; + u[i] = (*(array+(i+1)*n_columns+index_y) - *(array+i*n_columns+index_y)) + / (x[i+1] - x[i]) + - (*(array+i*n_columns+index_y) - *(array+(i-1)*n_columns+index_y)) + / (x[i] - x[i-1]); + u[i]= (6.0 * u[i] / + (x[i+1] - x[i-1]) + - sig * u[i-1]) / p; + + } + + if (spline_mode == _SPLINE_NATURAL_) { + qn=0.; + un=0.; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + dy_last = + ((x[n_lines-3]-x[n_lines-1])*(x[n_lines-3]-x[n_lines-1])* + (*(array+(n_lines-2)*n_columns+index_y)-*(array+(n_lines-1)*n_columns+index_y))- + (x[n_lines-2]-x[n_lines-1])*(x[n_lines-2]-x[n_lines-1])* + (*(array+(n_lines-3)*n_columns+index_y)-*(array+(n_lines-1)*n_columns+index_y)))/ + ((x[n_lines-3]-x[n_lines-1])*(x[n_lines-2]-x[n_lines-1])*(x[n_lines-3]-x[n_lines-2])); + qn=0.5; + un = + (3./(x[n_lines-1] - x[n_lines-2]))* + (dy_last-(*(array+(n_lines-1)*n_columns+index_y) - *(array+(n_lines-2)*n_columns+index_y))/ + (x[n_lines-1] - x[n_lines-2])); + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + *(array+(n_lines-1)*n_columns+index_ddydx2) = + (un-qn*u[n_lines-2])/(qn* *(array+(n_lines-2)*n_columns+index_ddydx2)+1.0); + + for (k=n_lines-2; k>=0; k--) + *(array+k*n_columns+index_ddydx2) = *(array+k*n_columns+index_ddydx2) * + *(array+(k+1)*n_columns+index_ddydx2) + u[k]; + + free(u); + + return _SUCCESS_; + } + +int array_spline_table_lines( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_x*y_size+index_y] */ + int y_size, + double * ddy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double * p; + double * qn; + double * un; + double * u; + double sig; + int index_x; + int index_y; + double dy_first; + double dy_last; + + u = malloc((x_size-1) * y_size * sizeof(double)); + p = malloc(y_size * sizeof(double)); + qn = malloc(y_size * sizeof(double)); + un = malloc(y_size * sizeof(double)); + + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + if (p == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate p",__func__,__LINE__); + return _FAILURE_; + } + if (qn == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate qn",__func__,__LINE__); + return _FAILURE_; + } + if (un == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate un",__func__,__LINE__); + return _FAILURE_; + } + + + index_x=0; + + if (spline_mode == _SPLINE_NATURAL_) { + for (index_y=0; index_y < y_size; index_y++) { + ddy_array[index_x*y_size+index_y] = u[index_x*y_size+index_y] = 0.0; + } + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + for (index_y=0; index_y < y_size; index_y++) { + + dy_first = + ((x[2]-x[0])*(x[2]-x[0])* + (y_array[1*y_size+index_y]-y_array[0*y_size+index_y])- + (x[1]-x[0])*(x[1]-x[0])* + (y_array[2*y_size+index_y]-y_array[0*y_size+index_y]))/ + ((x[2]-x[0])*(x[1]-x[0])*(x[2]-x[1])); + + ddy_array[index_x*y_size+index_y] = -0.5; + + u[index_x*y_size+index_y] = + (3./(x[1] - x[0]))* + ((y_array[1*y_size+index_y]-y_array[0*y_size+index_y])/ + (x[1] - x[0])-dy_first); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + + for (index_x=1; index_x < x_size-1; index_x++) { + + sig = (x[index_x] - x[index_x-1])/(x[index_x+1] - x[index_x-1]); + + for (index_y=0; index_y < y_size; index_y++) { + + p[index_y] = sig * ddy_array[(index_x-1)*y_size+index_y] + 2.0; + + ddy_array[index_x*y_size+index_y] = (sig-1.0)/p[index_y]; + + u[index_x*y_size+index_y] = + (y_array[(index_x+1)*y_size+index_y] - y_array[index_x*y_size+index_y]) + / (x[index_x+1] - x[index_x]) + - (y_array[index_x*y_size+index_y] - y_array[(index_x-1)*y_size+index_y]) + / (x[index_x] - x[index_x-1]); + + u[index_x*y_size+index_y] = (6.0 * u[index_x*y_size+index_y] / + (x[index_x+1] - x[index_x-1]) + - sig * u[(index_x-1)*y_size+index_y]) / p[index_y]; + } + + } + + if (spline_mode == _SPLINE_NATURAL_) { + + for (index_y=0; index_y < y_size; index_y++) { + qn[index_y]=un[index_y]=0.0; + } + + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + for (index_y=0; index_y < y_size; index_y++) { + + dy_last = + ((x[x_size-3]-x[x_size-1])*(x[x_size-3]-x[x_size-1])* + (y_array[(x_size-2)*y_size+index_y]-y_array[(x_size-1)*y_size+index_y])- + (x[x_size-2]-x[x_size-1])*(x[x_size-2]-x[x_size-1])* + (y_array[(x_size-3)*y_size+index_y]-y_array[(x_size-1)*y_size+index_y]))/ + ((x[x_size-3]-x[x_size-1])*(x[x_size-2]-x[x_size-1])*(x[x_size-3]-x[x_size-2])); + + qn[index_y]=0.5; + + un[index_y]= + (3./(x[x_size-1] - x[x_size-2]))* + (dy_last-(y_array[(x_size-1)*y_size+index_y] - y_array[(x_size-2)*y_size+index_y])/ + (x[x_size-1] - x[x_size-2])); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + index_x=x_size-1; + + for (index_y=0; index_y < y_size; index_y++) { + ddy_array[index_x*y_size+index_y] = + (un[index_y] - qn[index_y] * u[(index_x-1)*y_size+index_y]) / + (qn[index_y] * ddy_array[(index_x-1)*y_size+index_y] + 1.0); + } + + for (index_x=x_size-2; index_x >= 0; index_x--) { + for (index_y=0; index_y < y_size; index_y++) { + + ddy_array[index_x*y_size+index_y] = ddy_array[index_x*y_size+index_y] * + ddy_array[(index_x+1)*y_size+index_y] + u[index_x*y_size+index_y]; + + } + } + + free(qn); + free(un); + free(p); + free(u); + + return _SUCCESS_; + } + +int array_logspline_table_lines( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_x*y_size+index_y] */ + int y_size, + double * ddlny_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double * p; + double * qn; + double * un; + double * u; + double sig; + int index_x; + int index_y; + double dy_first; + double dy_last; + + u = malloc((x_size-1) * y_size * sizeof(double)); + p = malloc(y_size * sizeof(double)); + qn = malloc(y_size * sizeof(double)); + un = malloc(y_size * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + if (p == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate p",__func__,__LINE__); + return _FAILURE_; + } + if (qn == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate qn",__func__,__LINE__); + return _FAILURE_; + } + if (un == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate un",__func__,__LINE__); + return _FAILURE_; + } + + + index_x=0; + + if (spline_mode == _SPLINE_NATURAL_) { + for (index_y=0; index_y < y_size; index_y++) { + ddlny_array[index_x*y_size+index_y] = u[index_x*y_size+index_y] = 0.0; + } + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + for (index_y=0; index_y < y_size; index_y++) { + + dy_first = + ((log(x[2])-log(x[0]))*(log(x[2])-log(x[0]))* + (log(y_array[1*y_size+index_y])-log(y_array[0*y_size+index_y]))- + (log(x[1])-log(x[0]))*(log(x[1])-log(x[0]))* + (log(y_array[2*y_size+index_y])-log(y_array[0*y_size+index_y])))/ + ((log(x[2])-log(x[0]))*(log(x[1])-log(x[0]))*(log(x[2])-log(x[1]))); + + ddlny_array[index_x*y_size+index_y] = -0.5; + + u[index_x*y_size+index_y] = + (3./(log(x[1]) - log(x[0])))* + ((log(y_array[1*y_size+index_y])-log(y_array[0*y_size+index_y]))/ + (log(x[1]) - log(x[0]))-dy_first); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + + for (index_x=1; index_x < x_size-1; index_x++) { + + sig = (log(x[index_x]) - log(x[index_x-1]))/(log(x[index_x+1]) - log(x[index_x-1])); + + for (index_y=0; index_y < y_size; index_y++) { + + p[index_y] = sig * ddlny_array[(index_x-1)*y_size+index_y] + 2.0; + + ddlny_array[index_x*y_size+index_y] = (sig-1.0)/p[index_y]; + + u[index_x*y_size+index_y] = + (log(y_array[(index_x+1)*y_size+index_y]) - log(y_array[index_x*y_size+index_y])) + / (log(x[index_x+1]) - log(x[index_x])) + - (log(y_array[index_x*y_size+index_y]) - log(y_array[(index_x-1)*y_size+index_y])) + / (log(x[index_x]) - log(x[index_x-1])); + + u[index_x*y_size+index_y] = (6.0 * u[index_x*y_size+index_y] / + (log(x[index_x+1]) - log(x[index_x-1])) + - sig * u[(index_x-1)*y_size+index_y]) / p[index_y]; + } + + } + + if (spline_mode == _SPLINE_NATURAL_) { + + for (index_y=0; index_y < y_size; index_y++) { + qn[index_y]=un[index_y]=0.0; + } + + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + for (index_y=0; index_y < y_size; index_y++) { + + dy_last = + ((log(x[x_size-3])-log(x[x_size-1]))*(log(x[x_size-3])-log(x[x_size-1]))* + (log(y_array[(x_size-2)*y_size+index_y])-log(y_array[(x_size-1)*y_size+index_y]))- + (log(x[x_size-2])-log(x[x_size-1]))*(log(x[x_size-2])-log(x[x_size-1]))* + (log(y_array[(x_size-3)*y_size+index_y])-log(y_array[(x_size-1)*y_size+index_y])))/ + ((log(x[x_size-3])-log(x[x_size-1]))*(log(x[x_size-2])-log(x[x_size-1]))*(log(x[x_size-3])-log(x[x_size-2]))); + + qn[index_y]=0.5; + + un[index_y]= + (3./(log(x[x_size-1]) - log(x[x_size-2])))* + (dy_last-(log(y_array[(x_size-1)*y_size+index_y]) - log(y_array[(x_size-2)*y_size+index_y]))/ + (log(x[x_size-1]) - log(x[x_size-2]))); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + index_x=x_size-1; + + + for (index_y=0; index_y < y_size; index_y++) { + ddlny_array[index_x*y_size+index_y] = + (un[index_y] - qn[index_y] * u[(index_x-1)*y_size+index_y]) / + (qn[index_y] * ddlny_array[(index_x-1)*y_size+index_y] + 1.0); + } + + for (index_x=x_size-2; index_x >= 0; index_x--) { + for (index_y=0; index_y < y_size; index_y++) { + + ddlny_array[index_x*y_size+index_y] = ddlny_array[index_x*y_size+index_y] * + ddlny_array[(index_x+1)*y_size+index_y] + u[index_x*y_size+index_y]; + + } + } + + free(qn); + free(un); + free(p); + free(u); + + return _SUCCESS_; + } + +int array_spline_table_columns( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + double * ddy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double * p; + double * qn; + double * un; + double * u; + double sig; + int index_x; + int index_y; + double dy_first; + double dy_last; + + u = malloc((x_size-1) * y_size * sizeof(double)); + p = malloc(y_size * sizeof(double)); + qn = malloc(y_size * sizeof(double)); + un = malloc(y_size * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + if (p == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate p",__func__,__LINE__); + return _FAILURE_; + } + if (qn == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate qn",__func__,__LINE__); + return _FAILURE_; + } + if (un == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate un",__func__,__LINE__); + return _FAILURE_; + } + + index_x=0; + + if (spline_mode == _SPLINE_NATURAL_) { + for (index_y=0; index_y < y_size; index_y++) { + ddy_array[index_y*x_size+index_x] = 0.0; + u[index_x*y_size+index_y] = 0.0; + } + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + class_test(x[2]-x[0]==0., + errmsg, + "x[2]=%g, x[0]=%g, stop to avoid seg fault",x[2],x[0]); + class_test(x[1]-x[0]==0., + errmsg, + "x[1]=%g, x[0]=%g, stop to avoid seg fault",x[1],x[0]); + class_test(x[2]-x[1]==0., + errmsg, + "x[2]=%g, x[1]=%g, stop to avoid seg fault",x[2],x[1]); + + for (index_y=0; index_y < y_size; index_y++) { + + dy_first = + ((x[2]-x[0])*(x[2]-x[0])* + (y_array[index_y*x_size+1]-y_array[index_y*x_size+0])- + (x[1]-x[0])*(x[1]-x[0])* + (y_array[index_y*x_size+2]-y_array[index_y*x_size+0]))/ + ((x[2]-x[0])*(x[1]-x[0])*(x[2]-x[1])); + + ddy_array[index_y*x_size+index_x] = -0.5; + + u[index_x*y_size+index_y] = + (3./(x[1] - x[0]))* + ((y_array[index_y*x_size+1]-y_array[index_y*x_size+0])/ + (x[1] - x[0])-dy_first); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + for (index_x=1; index_x < x_size-1; index_x++) { + + sig = (x[index_x] - x[index_x-1])/(x[index_x+1] - x[index_x-1]); + + for (index_y=0; index_y < y_size; index_y++) { + + p[index_y] = sig * ddy_array[index_y*x_size+(index_x-1)] + 2.0; + + ddy_array[index_y*x_size+index_x] = (sig-1.0)/p[index_y]; + + u[index_x*y_size+index_y] = + (y_array[index_y*x_size+(index_x+1)] - y_array[index_y*x_size+index_x]) + / (x[index_x+1] - x[index_x]) + - (y_array[index_y*x_size+index_x] - y_array[index_y*x_size+(index_x-1)]) + / (x[index_x] - x[index_x-1]); + + u[index_x*y_size+index_y] = (6.0 * u[index_x*y_size+index_y] / + (x[index_x+1] - x[index_x-1]) + - sig * u[(index_x-1)*y_size+index_y]) / p[index_y]; + } + + } + + if (spline_mode == _SPLINE_NATURAL_) { + + for (index_y=0; index_y < y_size; index_y++) { + qn[index_y]=un[index_y]=0.0; + } + + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + for (index_y=0; index_y < y_size; index_y++) { + + dy_last = + ((x[x_size-3]-x[x_size-1])*(x[x_size-3]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-2)]-y_array[index_y*x_size+(x_size-1)])- + (x[x_size-2]-x[x_size-1])*(x[x_size-2]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-3)]-y_array[index_y*x_size+(x_size-1)]))/ + ((x[x_size-3]-x[x_size-1])*(x[x_size-2]-x[x_size-1])*(x[x_size-3]-x[x_size-2])); + + qn[index_y]=0.5; + + un[index_y]= + (3./(x[x_size-1] - x[x_size-2]))* + (dy_last-(y_array[index_y*x_size+(x_size-1)] - y_array[index_y*x_size+(x_size-2)])/ + (x[x_size-1] - x[x_size-2])); + + } + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + index_x=x_size-1; + + for (index_y=0; index_y < y_size; index_y++) { + ddy_array[index_y*x_size+index_x] = + (un[index_y] - qn[index_y] * u[(index_x-1)*y_size+index_y]) / + (qn[index_y] * ddy_array[index_y*x_size+(index_x-1)] + 1.0); + } + + for (index_x=x_size-2; index_x >= 0; index_x--) { + for (index_y=0; index_y < y_size; index_y++) { + + ddy_array[index_y*x_size+index_x] = ddy_array[index_y*x_size+index_x] * + ddy_array[index_y*x_size+(index_x+1)] + u[index_x*y_size+index_y]; + + } + } + + free(qn); + free(p); + free(u); + free(un); + + return _SUCCESS_; + } + +int array_spline_table_columns2( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + double * ddy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double * p; + double * qn; + double * un; + double * u; + double sig; + int index_x; + int index_y; + double dy_first; + double dy_last; + + u = malloc((x_size-1) * y_size * sizeof(double)); + p = malloc(y_size * sizeof(double)); + qn = malloc(y_size * sizeof(double)); + un = malloc(y_size * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + if (p == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate p",__func__,__LINE__); + return _FAILURE_; + } + if (qn == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate qn",__func__,__LINE__); + return _FAILURE_; + } + if (un == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate un",__func__,__LINE__); + return _FAILURE_; + } + +#pragma omp parallel \ + shared(x,x_size,y_array,y_size,ddy_array,spline_mode,p,qn,un,u) \ + private(index_y,index_x,sig,dy_first,dy_last) + { + +#pragma omp for schedule (dynamic) + + for (index_y=0; index_y < y_size; index_y++) { + + if (spline_mode == _SPLINE_NATURAL_) { + ddy_array[index_y*x_size+0] = 0.0; + u[0*y_size+index_y] = 0.0; + } + else { + dy_first = + ((x[2]-x[0])*(x[2]-x[0])* + (y_array[index_y*x_size+1]-y_array[index_y*x_size+0])- + (x[1]-x[0])*(x[1]-x[0])* + (y_array[index_y*x_size+2]-y_array[index_y*x_size+0]))/ + ((x[2]-x[0])*(x[1]-x[0])*(x[2]-x[1])); + + ddy_array[index_y*x_size+0] = -0.5; + + u[0*y_size+index_y] = + (3./(x[1] - x[0]))* + ((y_array[index_y*x_size+1]-y_array[index_y*x_size+0])/ + (x[1] - x[0])-dy_first); + + } + + for (index_x=1; index_x < x_size-1; index_x++) { + + sig = (x[index_x] - x[index_x-1])/(x[index_x+1] - x[index_x-1]); + + p[index_y] = sig * ddy_array[index_y*x_size+(index_x-1)] + 2.0; + + ddy_array[index_y*x_size+index_x] = (sig-1.0)/p[index_y]; + + u[index_x*y_size+index_y] = + (y_array[index_y*x_size+(index_x+1)] - y_array[index_y*x_size+index_x]) + / (x[index_x+1] - x[index_x]) + - (y_array[index_y*x_size+index_x] - y_array[index_y*x_size+(index_x-1)]) + / (x[index_x] - x[index_x-1]); + + u[index_x*y_size+index_y] = (6.0 * u[index_x*y_size+index_y] / + (x[index_x+1] - x[index_x-1]) + - sig * u[(index_x-1)*y_size+index_y]) / p[index_y]; + + } + + if (spline_mode == _SPLINE_NATURAL_) { + + qn[index_y]=un[index_y]=0.0; + + } + else { + + dy_last = + ((x[x_size-3]-x[x_size-1])*(x[x_size-3]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-2)]-y_array[index_y*x_size+(x_size-1)])- + (x[x_size-2]-x[x_size-1])*(x[x_size-2]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-3)]-y_array[index_y*x_size+(x_size-1)]))/ + ((x[x_size-3]-x[x_size-1])*(x[x_size-2]-x[x_size-1])*(x[x_size-3]-x[x_size-2])); + + qn[index_y]=0.5; + + un[index_y]= + (3./(x[x_size-1] - x[x_size-2]))* + (dy_last-(y_array[index_y*x_size+(x_size-1)] - y_array[index_y*x_size+(x_size-2)])/ + (x[x_size-1] - x[x_size-2])); + + } + + index_x=x_size-1; + + ddy_array[index_y*x_size+index_x] = + (un[index_y] - qn[index_y] * u[(index_x-1)*y_size+index_y]) / + (qn[index_y] * ddy_array[index_y*x_size+(index_x-1)] + 1.0); + + for (index_x=x_size-2; index_x >= 0; index_x--) { + + ddy_array[index_y*x_size+index_x] = ddy_array[index_y*x_size+index_x] * + ddy_array[index_y*x_size+(index_x+1)] + u[index_x*y_size+index_y]; + + } + } + } + free(qn); + free(p); + free(u); + free(un); + + return _SUCCESS_; + } + +int array_spline_table_one_column( + double * x, /* vector of size x_size */ + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double p; + double qn; + double un; + double * u; + double sig; + int index_x; + double dy_first; + double dy_last; + + u = malloc((x_size-1) * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + + /************************************************/ + + index_x=0; + + if (spline_mode == _SPLINE_NATURAL_) { + ddy_array[index_y*x_size+index_x] = 0.0; + u[index_x] = 0.0; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + dy_first = + ((x[2]-x[0])*(x[2]-x[0])* + (y_array[index_y*x_size+1]-y_array[index_y*x_size+0])- + (x[1]-x[0])*(x[1]-x[0])* + (y_array[index_y*x_size+2]-y_array[index_y*x_size+0]))/ + ((x[2]-x[0])*(x[1]-x[0])*(x[2]-x[1])); + + ddy_array[index_y*x_size+index_x] = -0.5; + + u[index_x] = + (3./(x[1] - x[0]))* + ((y_array[index_y*x_size+1]-y_array[index_y*x_size+0])/ + (x[1] - x[0])-dy_first); + + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + /************************************************/ + + for (index_x=1; index_x < x_size-1; index_x++) { + + sig = (x[index_x] - x[index_x-1])/(x[index_x+1] - x[index_x-1]); + + p = sig * ddy_array[index_y*x_size+(index_x-1)] + 2.0; + + ddy_array[index_y*x_size+index_x] = (sig-1.0)/p; + + u[index_x] = + (y_array[index_y*x_size+(index_x+1)] - y_array[index_y*x_size+index_x]) + / (x[index_x+1] - x[index_x]) + - (y_array[index_y*x_size+index_x] - y_array[index_y*x_size+(index_x-1)]) + / (x[index_x] - x[index_x-1]); + + u[index_x] = (6.0 * u[index_x] / + (x[index_x+1] - x[index_x-1]) + - sig * u[index_x-1]) / p; + + } + + /************************************************/ + + if (spline_mode == _SPLINE_NATURAL_) { + + qn=un=0.0; + + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + dy_last = + ((x[x_size-3]-x[x_size-1])*(x[x_size-3]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-2)]-y_array[index_y*x_size+(x_size-1)])- + (x[x_size-2]-x[x_size-1])*(x[x_size-2]-x[x_size-1])* + (y_array[index_y*x_size+(x_size-3)]-y_array[index_y*x_size+(x_size-1)]))/ + ((x[x_size-3]-x[x_size-1])*(x[x_size-2]-x[x_size-1])*(x[x_size-3]-x[x_size-2])); + + qn=0.5; + + un= + (3./(x[x_size-1] - x[x_size-2]))* + (dy_last-(y_array[index_y*x_size+(x_size-1)] - y_array[index_y*x_size+(x_size-2)])/ + (x[x_size-1] - x[x_size-2])); + + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + /************************************************/ + + index_x=x_size-1; + + ddy_array[index_y*x_size+index_x] = + (un - qn * u[index_x-1]) / + (qn * ddy_array[index_y*x_size+(index_x-1)] + 1.0); + + for (index_x=x_size-2; index_x >= 0; index_x--) { + + ddy_array[index_y*x_size+index_x] = ddy_array[index_y*x_size+index_x] * + ddy_array[index_y*x_size+(index_x+1)] + u[index_x]; + + } + + free(u); + + return _SUCCESS_; +} + +int array_logspline_table_one_column( + double * x, /* vector of size x_size */ + int x_size, + int x_stop, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddlogy_array, /* array of size x_size*y_size */ + short spline_mode, + ErrorMsg errmsg + ) { + + double p; + double qn; + double un; + double * u; + double sig; + int index_x; + double dy_first; + double dy_last; + + u = malloc((x_stop-1) * sizeof(double)); + if (u == NULL) { + sprintf(errmsg,"%s(L:%d) Cannot allocate u",__func__,__LINE__); + return _FAILURE_; + } + + /************************************************/ + + index_x=0; + + if (spline_mode == _SPLINE_NATURAL_) { + ddlogy_array[index_y*x_size+index_x] = 0.0; + u[index_x] = 0.0; + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + dy_first = + ((log(x[2])-log(x[0]))*(log(x[2])-log(x[0]))* + (log(y_array[index_y*x_size+1])-log(y_array[index_y*x_size+0]))- + (log(x[1])-log(x[0]))*(log(x[1])-log(x[0]))* + (log(y_array[index_y*x_size+2])-log(y_array[index_y*x_size+0])))/ + ((log(x[2])-log(x[0]))*(log(x[1])-log(x[0]))*(log(x[2])-log(x[1]))); + + ddlogy_array[index_y*x_size+index_x] = -0.5; + + u[index_x] = + (3./(log(x[1]) - log(x[0])))* + ((log(y_array[index_y*x_size+1])-log(y_array[index_y*x_size+0]))/ + (log(x[1]) - log(x[0]))-dy_first); + + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + /************************************************/ + + for (index_x=1; index_x < x_stop-1; index_x++) { + + sig = (log(x[index_x]) - log(x[index_x-1]))/(log(x[index_x+1]) - log(x[index_x-1])); + + p = sig * ddlogy_array[index_y*x_size+(index_x-1)] + 2.0; + + ddlogy_array[index_y*x_size+index_x] = (sig-1.0)/p; + + u[index_x] = + (log(y_array[index_y*x_size+(index_x+1)]) - log(y_array[index_y*x_size+index_x])) + / (log(x[index_x+1]) - log(x[index_x])) + - (log(y_array[index_y*x_size+index_x]) - log(y_array[index_y*x_size+(index_x-1)])) + / (log(x[index_x]) - log(x[index_x-1])); + + u[index_x] = (6.0 * u[index_x] / + (log(x[index_x+1]) - log(x[index_x-1])) + - sig * u[index_x-1]) / p; + + } + + /************************************************/ + + if (spline_mode == _SPLINE_NATURAL_) { + + qn=un=0.0; + + } + else { + if (spline_mode == _SPLINE_EST_DERIV_) { + + dy_last = + ((log(x[x_stop-3])-log(x[x_stop-1]))*(log(x[x_stop-3])-log(x[x_stop-1]))* + (log(y_array[index_y*x_size+(x_stop-2)])-log(y_array[index_y*x_size+(x_stop-1)]))- + (log(x[x_stop-2])-log(x[x_stop-1]))*(log(x[x_stop-2])-log(x[x_stop-1]))* + (log(y_array[index_y*x_size+(x_stop-3)])-log(y_array[index_y*x_size+(x_stop-1)])))/ + ((log(x[x_stop-3])-log(x[x_stop-1]))*(log(x[x_stop-2])-log(x[x_stop-1]))* + (log(x[x_stop-3])-log(x[x_stop-2]))); + + qn=0.5; + + un= + (3./(log(x[x_stop-1]) - log(x[x_stop-2])))* + (dy_last-(log(y_array[index_y*x_size+(x_stop-1)]) - log(y_array[index_y*x_size+(x_stop-2)]))/ + (log(x[x_stop-1]) - log(x[x_stop-2]))); + + } + else { + sprintf(errmsg,"%s(L:%d) Spline mode not identified: %d",__func__,__LINE__,spline_mode); + return _FAILURE_; + } + } + + /************************************************/ + + index_x=x_stop-1; + + ddlogy_array[index_y*x_size+index_x] = + (un - qn * u[index_x-1]) / + (qn * ddlogy_array[index_y*x_size+(index_x-1)] + 1.0); + + for (index_x=x_stop-2; index_x >= 0; index_x--) { + + ddlogy_array[index_y*x_size+index_x] = ddlogy_array[index_y*x_size+index_x] * + ddlogy_array[index_y*x_size+(index_x+1)] + u[index_x]; + + } + + free(u); + + return _SUCCESS_; +} + +int array_integrate_all_spline( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_ddy, + double * result, + ErrorMsg errmsg) { + + int i; + double h; + + *result = 0; + + for (i=0; i < n_lines-1; i++) { + + h = (array[(i+1)*n_columns+index_x]-array[i*n_columns+index_x]); + + *result += + (array[i*n_columns+index_y]+array[(i+1)*n_columns+index_y])*h/2.+ + (array[i*n_columns+index_ddy]+array[(i+1)*n_columns+index_ddy])*h*h*h/24.; + + } + + return _SUCCESS_; +} + +int array_integrate_all_trapzd_or_spline( + double * array, + int n_columns, + int n_lines, + int index_start_spline, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_ddy, + double * result, + ErrorMsg errmsg) { + + int i; + double h; + + if ((index_start_spline<0) || (index_start_spline>=n_lines)) { + sprintf(errmsg,"%s(L:%d) index_start_spline outside of range",__func__,__LINE__); + return _FAILURE_; + } + + *result = 0; + + /* trapezoidal integration till given index */ + + for (i=0; i < index_start_spline; i++) { + + h = (array[(i+1)*n_columns+index_x]-array[i*n_columns+index_x]); + + *result += + (array[i*n_columns+index_y]+array[(i+1)*n_columns+index_y])*h/2.; + + } + + /* then, spline integration */ + + for (i=index_start_spline; i < n_lines-1; i++) { + + h = (array[(i+1)*n_columns+index_x]-array[i*n_columns+index_x]); + + *result += + (array[i*n_columns+index_y]+array[(i+1)*n_columns+index_y])*h/2.+ + (array[i*n_columns+index_ddy]+array[(i+1)*n_columns+index_ddy])*h*h*h/24.; + + } + + return _SUCCESS_; +} + + /** + * Not called. + */ +int array_integrate( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + int index_int_y_dx, + ErrorMsg errmsg) { + + int i; + double sum; + + if ((index_int_y_dx == index_x) || (index_int_y_dx == index_y)) { + sprintf(errmsg,"%s(L:%d) : Output column %d must differ from input columns %d and %d",__func__,__LINE__,index_int_y_dx,index_x,index_y); + return _FAILURE_; + } + + sum=0.; + *(array+0*n_columns+index_int_y_dx)=sum; + + for (i=1; i *(array+sup*n_columns+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,*(array+sup*n_columns+index_x)); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < *(array+mid*n_columns+index_x)) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < *(array+sup*n_columns+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,*(array+sup*n_columns+index_x)); + return _FAILURE_; + } + + if (x > *(array+inf*n_columns+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,*(array+inf*n_columns+index_x)); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > *(array+mid*n_columns+index_x)) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + weight=(x-*(array+inf*n_columns+index_x))/(*(array+sup*n_columns+index_x)-*(array+inf*n_columns+index_x)); + + for (i=0; i x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + for (i=0; i x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + for (i=0; i x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + h = log(x_array[sup]) - log(x_array[inf]); + b = (log(x)-log(x_array[inf]))/h; + a = 1-b; + + for (i=0; i x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + *y = + a * y_array[index_y * x_size + inf] + + b * y_array[index_y * x_size + sup] + + ((a*a*a-a)* ddy_array[index_y * x_size + inf] + + (b*b*b-b)* ddy_array[index_y * x_size + sup])*h*h/6.; + + return _SUCCESS_; +} + + /** + * interpolate to get y_i(x), when x and y_i are in different arrays + * + * + */ +int array_interpolate_extrapolate_spline_one_column( + double * x_array, + int x_size, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddy_array, /* array of size x_size*y_size */ + double x, /* input */ + double * y, /* output */ + ErrorMsg errmsg + ) { + + + int inf,sup,mid; + double h,a,b; + + if (x > x_array[x_size-2] || x < x_array[0]) { + + /*interpolate/extrapolate linearly y as a function of x*/ + + h = x_array[x_size-1] - x_array[x_size-2]; + b = (x-x_array[x_size-2])/h; + a = 1-b; + + *y = a * y_array[index_y * x_size + (x_size-2)] + + b * y_array[index_y * x_size + (x_size-1)]; + + + } + + else { + + /*interpolate y as a function of x with a spline*/ + + inf=0; + sup=x_size-1; + + if (x_array[inf] < x_array[sup]){ + + if (x < x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + if (x > x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + *y = + a * y_array[index_y * x_size + inf] + + b * y_array[index_y * x_size + sup] + + ((a*a*a-a)* ddy_array[index_y * x_size + inf] + + (b*b*b-b)* ddy_array[index_y * x_size + sup])*h*h/6.; + + } + + return _SUCCESS_; +} + + /** + * interpolate to get y_i(x), when x and y_i are in different arrays + * + * + */ +int array_interpolate_extrapolate_logspline_loglinear_one_column( + double * x_array, + int x_size, + int x_stop, + double * y_array, /* array of size x_size*y_size with elements + y_array[index_y*x_size+index_x] */ + int y_size, + int index_y, + double * ddlogy_array, /* array of size x_size*y_size */ + double x, /* input */ + double * y, /* output */ + ErrorMsg errmsg + ) { + + + int inf,sup,mid; + double h,a,b; + + if (x > x_array[x_stop-1]) { + + /*interpolate/extrapolate linearly ln(y) as a function of ln(x)*/ + + h = log(x_array[x_stop-1]) - log(x_array[x_stop-2]); + b = (log(x)-log(x_array[x_stop-2]))/h; + a = 1-b; + +/* *y = exp(a * log(y_array[index_y * x_size + (x_stop-2)]) + */ +/* b * log(y_array[index_y * x_size + (x_stop-1)])); */ + + *y = exp(log(y_array[index_y * x_size + (x_stop-1)]) + +(log(x)-log(x_array[x_stop-1])) + *((log(y_array[index_y * x_size + (x_stop-1)])-log(y_array[index_y * x_size + (x_stop-2)]))/h + +h/6.*(ddlogy_array[index_y * x_size + (x_stop-2)]+2.*ddlogy_array[index_y * x_size + (x_stop-1)]))); + + + } + + else { + + /*interpolate ln(y) as a function of ln(x) with a spline*/ + + inf=0; + sup=x_stop-1; + + if (x_array[inf] < x_array[sup]){ + + if (x < x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + if (x > x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < x_array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,x_array[sup]); + return _FAILURE_; + } + + if (x > x_array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,x_array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > x_array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + h = log(x_array[sup]) - log(x_array[inf]); + b = (log(x)-log(x_array[inf]))/h; + a = 1-b; + + *y = exp(a * log(y_array[index_y * x_size + inf]) + + b * log(y_array[index_y * x_size + sup]) + + ((a*a*a-a)* ddlogy_array[index_y * x_size + inf] + + (b*b*b-b)* ddlogy_array[index_y * x_size + sup])*h*h/6.); + + } + + return _SUCCESS_; +} + + /** + * interpolate to get y_i(x), when x and y_i are all columns of the same array, x is arranged in growing order, and the point x is presumably close to the previous point x from the last call of this function. + * + * Called by background_at_eta(); background_eta_of_z(); background_solve(); thermodynamics_at_z(). + */ +int array_interpolate_growing_closeby( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + double x, + int * last_index, + double * result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg) { + + int inf,sup,i; + double weight; + + inf = *last_index; + sup = *last_index+1; + + while (x < *(array+inf*n_columns+index_x)) { + inf--; + if (inf < 0) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__, + x,array[index_x]); + return _FAILURE_; + } + } + sup = inf+1; + while (x > *(array+sup*n_columns+index_x)) { + sup++; + if (sup > (n_lines-1)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__, + x,array[(n_lines-1)*n_columns+index_x]); + return _FAILURE_; + } + } + inf = sup-1; + + *last_index = inf; + + weight=(x-*(array+inf*n_columns+index_x))/(*(array+sup*n_columns+index_x)-*(array+inf*n_columns+index_x)); + + for (i=0; i *(array+sup*n_columns+index_x)) { + sup++; + if (sup > (n_lines-1)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__, + x,array[(n_lines-1)*n_columns+index_x]); + return _FAILURE_; + } + } + inf = sup-1; + + *last_index = inf; + + weight=(x-*(array+inf*n_columns+index_x))/(*(array+sup*n_columns+index_x)-*(array+inf*n_columns+index_x)); + + *result = *(array+inf*n_columns+index_y) * (1.-weight) + *(array+sup*n_columns+index_y) * weight; + + return _SUCCESS_; +} + + /** + * interpolate to get y_i(x), when x and y_i are all columns of the same array, x is arranged in growing order, and the point x is presumably very close to the previous point x from the last call of this function. + * + * Called by background_at_eta(); background_eta_of_z(); background_solve(); thermodynamics_at_z(). + */ +int array_interpolate_spline_growing_closeby( + double * x_array, + int n_lines, + double * array, + double * array_splined, + int n_columns, + double x, + int * last_index, + double * result, + int result_size, /** from 1 to n_columns */ + ErrorMsg errmsg) { + + int inf,sup,i; + double h,a,b; + + /* + if (*last_index < 0) { + sprintf(errmsg,"%s(L:%d) problem with last_index =%d < 0",__func__,__LINE__,*last_index); + return _FAILURE_; + } + if (*last_index > (n_lines-1)) { + sprintf(errmsg,"%s(L:%d) problem with last_index =%d > %d",__func__,__LINE__,*last_index,n_lines-1); + return _FAILURE_; + } + */ + + inf = *last_index; + class_test(inf<0 || inf>(n_lines-1), + errmsg, + "*lastindex=%d out of range [0:%d]\n",inf,n_lines-1); + while (x < x_array[inf]) { + inf--; + if (inf < 0) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__, + x,x_array[0]); + return _FAILURE_; + } + } + sup = inf+1; + while (x > x_array[sup]) { + sup++; + if (sup > (n_lines-1)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__, + x,x_array[n_lines-1]); + return _FAILURE_; + } + } + inf = sup-1; + + *last_index = inf; + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + for (i=0; i= x_array[*last_index]) { + if (x > x_array[n_lines-1]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__, + x,x_array[n_lines-1]); + return _FAILURE_; + } + /* try closest neighboor upward */ + inf = *last_index; + sup = inf + inc; + if (x > x_array[sup]) { + /* hunt upward */ + while (x > x_array[sup]) { + inf = sup; + inc += 1; + sup += inc; + if (sup > n_lines-1) { + sup = n_lines-1; + } + } + /* bisect */ + while (sup-inf > 1) { + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + } + } + } + else { + if (x < x_array[0]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__, + x,x_array[0]); + return _FAILURE_; + } + /* try closest neighboor downward */ + sup = *last_index; + inf = sup - inc; + if (x < x_array[inf]) { + /* hunt downward */ + while (x < x_array[inf]) { + sup = inf; + inc += 1; + inf -= inc; + if (inf < 0) { + inf = 0; + } + } + /* bisect */ + while (sup-inf > 1) { + mid=(int)(0.5*(inf+sup)); + if (x < x_array[mid]) {sup=mid;} + else {inf=mid;} + } + } + } + + *last_index = inf; + + h = x_array[sup] - x_array[inf]; + b = (x-x_array[inf])/h; + a = 1-b; + + for (i=0; i array_x[sup*n_columns_x+index_x]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,array_x[sup*n_columns_x+index_x]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < array_x[mid*n_columns_x+index_x]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < *(array_x+sup*n_columns_x+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,*(array_x+sup*n_columns_x+index_x)); + return _FAILURE_; + } + + if (x > *(array_x+inf*n_columns_x+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,*(array_x+inf*n_columns_x+index_x)); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > *(array_x+mid*n_columns_x+index_x)) {sup=mid;} + else {inf=mid;} + + } + + } + + weight=(x-*(array_x+inf*n_columns_x+index_x))/(*(array_x+sup*n_columns_x+index_x)-*(array_x+inf*n_columns_x+index_x)); + + for (i=0; i array_x[sup*n_columns_x+index_x]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,array_x[sup*n_columns_x+index_x]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < array_x[mid*n_columns_x+index_x]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (x < *(array_x+sup*n_columns_x+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,x,*(array_x+sup*n_columns_x+index_x)); + return _FAILURE_; + } + + if (x > *(array_x+inf*n_columns_x+index_x)) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,x,*(array_x+inf*n_columns_x+index_x)); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > *(array_x+mid*n_columns_x+index_x)) {sup=mid;} + else {inf=mid;} + + } + + } + + weight=(x-*(array_x+inf*n_columns_x+index_x))/(*(array_x+sup*n_columns_x+index_x)-*(array_x+inf*n_columns_x+index_x)); + + for (i=0; i array_x[sup], + errmsg, + "x=%e > x_max=%e",x,array_x[sup]); + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x < array_x[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + class_test(x < array_x[sup], + errmsg, + "x=%e < x_min=%e",x,array_x[sup]); + + class_test(x > array_x[inf], + errmsg, + "x=%e > x_max=%e",x,array_x[inf]); + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (x > array_x[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + weight=(x-array_x[inf])/(array_x[sup]-array_x[inf]); + + *result = array_y[index_y*n_lines+inf] * (1.-weight) + + weight * array_y[index_y*n_lines+sup]; + + return _SUCCESS_; +} + +/** + * Called by transfer_solve(). + */ +int array_interpolate_equal( + double * array, + int n_columns, + int n_lines, + double x, + double x_min, + double x_max, + double * result, + ErrorMsg errmsg) { + + int index_minus,i; + double x_step,x_minus,weight; + + if (x < x_min) { + sprintf(errmsg,"%s(L:%d) : x out of bounds: x=%e,x_min=%e",__func__,__LINE__,x,x_min); + return _FAILURE_; + } + + if (x > x_max) { + sprintf(errmsg,"%s(L:%d) : x out of bounds: x=%e,x_max=%e",__func__,__LINE__,x,x_max); + return _FAILURE_; + } + + x_step = (x_max-x_min)/(n_lines-1); + index_minus = (int)((x-x_min)/x_step); + x_minus = index_minus * x_step; + weight = (x-x_minus) / x_step; + + for (i=0; i 0 && (xx0+dx*(Nx-1))), + errmsg, + "x=%e out of range [%e %e]",x,x0,x0+dx*(Nx-1)); + + class_test((dx < 0 && (x>x0 || xNx-3) i=Nx-3; + frac = (x-x0)/dx-i; + yarray += i-1; + + *result=-yarray[0]*frac*(1.-frac)*(2.-frac)/6. + +yarray[1]*(1.+frac)*(1.-frac)*(2.-frac)/2. + +yarray[2]*(1.+frac)*frac*(2.-frac)/2. + +yarray[3]*(1.+frac)*frac*(frac-1.)/6.; + + return _SUCCESS_; +} + +int array_interpolate_parabola(double x1, + double x2, + double x3, + double x, + double y1, + double y2, + double y3, + double * y, + double * dy, + double * ddy, + ErrorMsg errmsg) { + + double a,b,c; + + /* + a x_i**2 + b x_i + c = y_i + + a (x1**2-x2**2) + b (x1-x2) = y1-y2 + a (x3**2-x2**2) + b (x3-x2) = y3-y2 + + a (x1**2-x2**2)(x3**2-x2**2) + b (x1-x2)(x3**2-x2**2) = (y1-y2)(x3**2-x2**2) + a (x3**2-x2**2)(x1**2-x2**2) + b (x3-x2)(x1**2-x2**2) = (y3-y2)(x1**2-x2**2) + + b = [(y1-y2)(x3**2-x2**2) - (y3-y2)(x1**2-x2**2)]/(x1-x2)(x3-x2)(x3-x1) + + */ + + b = ((y1-y2)*(x3-x2)*(x3+x2) - (y3-y2)*(x1-x2)*(x1+x2))/(x1-x2)/(x3-x2)/(x3-x1); + + a = (y1-y2-b*(x1-x2))/(x1-x2)/(x1+x2); + + c = y2 - b*x2 - a*x2*x2; + + *y = a*x*x + b*x + c; + *dy = 2.*a*x + b; + *ddy = 2.*a; + + return _SUCCESS_; + +} + +/** + * Called by transfer_solve(). + */ +int array_integrate_all( + double * array, + int n_columns, + int n_lines, + int index_x, /** from 0 to (n_columns-1) */ + int index_y, + double *result) { + + int i; + double sum; + + sum=0.; + + for (i=1; i1){ + //Set edgeweights: + w_trapz[0] = 0.5*(x[1]-x[0]); + w_trapz[n-1] = 0.5*(x[n-1]-x[n-2]); + //Set inner weights: + for (i=1; i<(n-1); i++){ + w_trapz[i] = 0.5*(x[i+1]-x[i-1]); + } + } + return _SUCCESS_; +} + +/** + * Compute quadrature weights for the trapezoidal integration method, when x is in decreasing order. + * + * @param x Input: Grid points on which f() is known. + * @param n Input: number of grid points. + * @param w_trapz Output: Weights of the trapezoidal method. + * @return the error status + */ + +int array_trapezoidal_mweights( + double * __restrict__ x, + int n, + double * __restrict__ w_trapz, + ErrorMsg errmsg + ) { + int i; + + /* Case with just one point. */ + if (n==1){ + w_trapz[0] = 1.0; + } + else if (n>1){ + //Set edgeweights: + w_trapz[0] = 0.5*(x[0]-x[1]); + w_trapz[n-1] = 0.5*(x[n-2]-x[n-1]); + //Set inner weights: + for (i=1; i<(n-1); i++){ + w_trapz[i] = 0.5*(x[i-1]-x[i+1]); + } + } + return _SUCCESS_; +} + +/** + * Compute integral of function using trapezoidal method. + * + * @param integrand Input: The function we are integrating. + * @param n Input: Compute integral on grid [0;n-1]. + * @param w_trapz Input: Weights of the trapezoidal method. + * @param I Output: The integral. + * @return the error status + */ + +int array_trapezoidal_integral( + double * __restrict__ integrand, + int n, + double * __restrict__ w_trapz, + double * __restrict__ I, + ErrorMsg errmsg + ) { + int i; + double res=0.0; + for (i=0; in = n_dim; + + class_alloc(pgi->yscal, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->y, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->dydx, + sizeof(double)*n_dim, + pgi->error_message); + + class_alloc(pgi->yerr, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ytempo, + sizeof(double)*n_dim, + pgi->error_message); + + class_alloc(pgi->ak2, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ak3, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ak4, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ak5, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ak6, + sizeof(double)*n_dim, + pgi->error_message); + class_alloc(pgi->ytemp, + sizeof(double)*n_dim, + pgi->error_message); + + return _SUCCESS_; +} + + +/** + * Free the integrator's memory space + * + * Called by background_solve(); thermodynamics_solve_with_recfast(); perturb_solve(). + */ +int cleanup_generic_integrator(struct generic_integrator_workspace * pgi){ + + free(pgi->yscal); + free(pgi->y); + free(pgi->dydx); + + free(pgi->yerr); + free(pgi->ytempo); + + free(pgi->ak2); + free(pgi->ak3); + free(pgi->ak4); + free(pgi->ak5); + free(pgi->ak6); + free(pgi->ytemp); + + return _SUCCESS_; +} + +int generic_integrator(int (*derivs)(double x, double y[], double yprime[], void * parameters_and_workspace, ErrorMsg error_message), + double x1, + double x2, + double ystart[], + void * parameters_and_workspace_for_derivs, + double eps, + double hmin, + struct generic_integrator_workspace * pgi) + +{ + int nstp,i; + double x,hnext,hdid,h,h1; + + h1=x2-x1; + x=x1; + h=dsign(h1,x2-x1); + for (i=0;in;i++) pgi->y[i]=ystart[i]; + for (nstp=1;nstp<=_MAXSTP_;nstp++) { + class_call((*derivs)(x,pgi->y,pgi->dydx,parameters_and_workspace_for_derivs, pgi->error_message), + pgi->error_message, + pgi->error_message); + for (i=0;in;i++) + pgi->yscal[i]=fabs(pgi->y[i])+fabs(pgi->dydx[i]*h)+_TINY_; + if ((x+h-x2)*(x+h-x1) > 0.0) h=x2-x; + class_call(rkqs(&x, + h, + eps, + &hdid, + &hnext, + derivs, + parameters_and_workspace_for_derivs, + pgi), + pgi->error_message, + pgi->error_message); + if ((x-x2)*(x2-x1) >= 0.0) { + for (i=0;in;i++) ystart[i]=pgi->y[i]; + return _SUCCESS_; + } + class_test(fabs(hnext/x1) <= hmin, + pgi->error_message, + "Step size too small: step:%g, minimum:%g, in interval: [%g:%g]", + fabs(hnext/x1), + hmin, + x1, + x2); + h=hnext; + } + + class_stop(pgi->error_message, + "Too many integration steps needed within interval [%g : %g],\n the system of equations is probably buggy or featuring a discontinuity",x1,x2); + +} + +int rkqs(double *x, double htry, double eps, + double *hdid, double *hnext, + int (*derivs)(double, double [], double [], void * parameters_and_workspace, ErrorMsg error_message), + void * parameters_and_workspace_for_derivs, + struct generic_integrator_workspace * pgi) +{ + + int i; + double errmax,h,htemp,xnew; + + h=htry; + for (;;) { + class_call(rkck(*x,h,derivs,parameters_and_workspace_for_derivs,pgi), + pgi->error_message, + pgi->error_message); + errmax=0.0; + for (i=0;in;i++) errmax=MAX(errmax,fabs(pgi->yerr[i]/pgi->yscal[i])); + errmax /= eps; + if (errmax <= 1.0) break; + htemp=_SAFETY_*h*pow(errmax,_PSHRNK_); + h=(h >= 0.0 ? MAX(htemp,0.1*h) : MIN(htemp,0.1*h)); + xnew=(*x)+h; + class_test(xnew == *x, + pgi->error_message, + "stepsize underflow at x=%e",xnew); + } + if (errmax > _ERRCON_) *hnext=_SAFETY_*h*pow(errmax,_PGROW_); + else *hnext=5.0*h; + *x += (*hdid=h); + for (i=0;in;i++) pgi->y[i]=pgi->ytemp[i]; + + return _SUCCESS_; +} + +int rkck( + double x, + double h, + int (*derivs)(double, double [], double [], void * parameters_and_workspace, ErrorMsg error_message), + void * parameters_and_workspace_for_derivs, + struct generic_integrator_workspace * pgi) +{ + int i; + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+_RKCK_b21_*h*pgi->dydx[i]; + + class_call((*derivs)(x+_RKCK_a2_*h, + pgi->ytemp, + pgi->ak2, + parameters_and_workspace_for_derivs, + pgi->error_message), + pgi->error_message, + pgi->error_message); + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+h*(_RKCK_b31_*pgi->dydx[i]+_RKCK_b32_*pgi->ak2[i]); + + class_call((*derivs)(x+_RKCK_a3_*h, + pgi->ytemp, + pgi->ak3, + parameters_and_workspace_for_derivs, + pgi->error_message), + pgi->error_message, + pgi->error_message); + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+h*(_RKCK_b41_*pgi->dydx[i]+_RKCK_b42_*pgi->ak2[i]+_RKCK_b43_*pgi->ak3[i]); + + class_call((*derivs)(x+_RKCK_a4_*h, + pgi->ytemp, + pgi->ak4, + parameters_and_workspace_for_derivs, + pgi->error_message), + pgi->error_message, + pgi->error_message); + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+h*(_RKCK_b51_*pgi->dydx[i]+_RKCK_b52_*pgi->ak2[i]+_RKCK_b53_*pgi->ak3[i]+_RKCK_b54_*pgi->ak4[i]); + + class_call((*derivs)(x+_RKCK_a5_*h, + pgi->ytemp, + pgi->ak5,parameters_and_workspace_for_derivs, + pgi->error_message), + pgi->error_message, + pgi->error_message); + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+h*(_RKCK_b61_*pgi->dydx[i]+_RKCK_b62_*pgi->ak2[i]+_RKCK_b63_*pgi->ak3[i]+_RKCK_b64_*pgi->ak4[i]+_RKCK_b65_*pgi->ak5[i]); + + class_call((*derivs)(x+_RKCK_a6_*h, + pgi->ytemp, + pgi->ak6, + parameters_and_workspace_for_derivs, + pgi->error_message), + pgi->error_message, + pgi->error_message); + + for (i=0;in;i++) + pgi->ytemp[i]=pgi->y[i]+h*(_RKCK_c1_*pgi->dydx[i]+_RKCK_c3_*pgi->ak3[i]+_RKCK_c4_*pgi->ak4[i]+_RKCK_c6_*pgi->ak6[i]); + + for (i=0;in;i++) + pgi->yerr[i]=h*(_RKCK_dc1_*pgi->dydx[i]+_RKCK_dc3_*pgi->ak3[i]+_RKCK_dc4_*pgi->ak4[i]+_RKCK_dc5_*pgi->ak5[i]+_RKCK_dc6_*pgi->ak6[i]); + + return _SUCCESS_; +} + + diff --git a/class_old/tools/evolver_ndf15.c b/class_old/tools/evolver_ndf15.c new file mode 100644 index 00000000..f5937636 --- /dev/null +++ b/class_old/tools/evolver_ndf15.c @@ -0,0 +1,1638 @@ +/****************************************/ +/* Stiff ODE evolver for CLASS */ +/* 19/11 2010 */ +/* Thomas Tram */ +/****************************************/ +/* This is an variable order, adaptive stepsize ODE evolver for CLASS. + It is based on the Numerical Differentiaion Formulas of order 1-5, + and can be used to solve stiff problems. The algorithm is described in + [The MATLAB ODE Suite, L. F. Shampine and M. W. Reichelt, SIAM Journal + on Scientific Computing, 18-1, 1997]. + + The code will call the (*output) routine at x-values in t_vec[]. It + will interpolate to get the y-value aswell as (optionally) the first and + second derivative at points returned by the routine relevant_indices. + Since the transfer function only depends on a few of these values, there + is no need to interpolate all of them. + + Every time there is a stepsize change, we need to rebuild **dif, the matrix + which holds the backward differences, to reflect the new stepsize. This is done + in "adjust_stepsize" and is essentially a matrix multiplication. Every times + there is either a stepsize change, the method order k is changed, or we compute + a new Jacobian, we must call "new_linearisation" to calculate a new LU + decomposition of a matrix. + + The method will not recompute the Jacobian in every step, but only when the + Newton iterations fail to converge fast enough. This feature makes the + solver competitive even for non-stiff problems. + + Statistics is saved in the stepstat[6] vector. The entries are: + stepstat[0] = Successful steps. + stepstat[1] = Failed steps. + stepstat[2] = Total number of function evaluations. + stepstat[3] = Number of Jacobians computed. + stepstat[4] = Number of LU decompositions. + stepstat[5] = Number of linear solves. + If ppt->perturbations_verbose > 2, this statistic is printed at the end of + each call to evolver. + + Sparsity: + When the number of equations becomes high, too much times is spent on solving + linear equations. Since the ODE-functions are not very coupled, one would normally + supply a sparsity pattern of the jacobian, which would encode the couplings of the + equations. However, this would be of some inconvenience to the users who just want + to add some new physics without thinking too much about how the code work. So we + pay a few more function evaluations, and calculate the full jacobian every time. + + Then, if jac->use_sparse==_TRUE_, numjac will try to construct a sparse matrix from + the dense matrix. If there are too many nonzero elements in the dense matrix, numjac + will stop constructing the sparse matrix and set jac->use_sparse=_FALSE_. The sparse + matrix is stored in the compressed column format. (See sparse.h). + + In the sparse case, we also do partial pivoting, but with diagonal preference. The + structure of the equations are nearly optimal for the LU decomposition, so we don't + want to mess it up by too many row permutations if we can avoid it. This is also why + do not use any column permutation to pre-order the matrix. +*/ +#include "common.h" +#include "evolver_ndf15.h" +//#include "perturbations.h" +#include "sparse.h" + +int evolver_ndf15( + int (*derivs)(double x,double * y,double * dy, + void * parameters_and_workspace, ErrorMsg error_message), + double x_ini, + double x_final, + double * y_inout, + int * used_in_output, + int neq, + void * parameters_and_workspace_for_derivs, + double rtol, + double minimum_variation, + int (*timescale_and_approximation)(double x, + void * parameters_and_workspace, + double * timescales, + ErrorMsg error_message), + double timestep_over_timescale, + double * t_vec, + int tres, + int (*output)(double x,double y[],double dy[],int index_x,void * parameters_and_workspace, + ErrorMsg error_message), + int (*print_variables)(double x, double y[], double dy[], void *parameters_and_workspace, + ErrorMsg error_message), + ErrorMsg error_message){ + + /* Constants: */ + double G[5]={1.0,3.0/2.0,11.0/6.0,25.0/12.0,137.0/60.0}; + double alpha[5]={-37.0/200,-1.0/9.0,-8.23e-2,-4.15e-2, 0}; + double invGa[5],erconst[5]; + double abstol = 1e-15, eps=1e-16, threshold=abstol; + int maxit=4, maxk=5; + + /* Logicals: */ + int Jcurrent,havrate,done,at_hmin,nofailed,gotynew,tooslow,*interpidx; + + /* Storage: */ + double *f0,*y,*wt,*ddfddt,*pred,*ynew,*invwt,*rhs,*psi,*difkp1,*del,*yinterp; + double *tempvec1,*tempvec2,*ypinterp,*yppinterp; + double **dif; + struct jacobian jac; + struct numjac_workspace nj_ws; + + /* Method variables: */ + double t,t0,tfinal,tnew=0; + double rh,htspan,absh,hmin,hmax,h,tdel; + double abshlast,hinvGak,minnrm,oldnrm=0.,newnrm; + double err,hopt,errkm1,hkm1,errit,rate=0.,temp,errkp1,hkp1,maxtmp; + int k,klast,nconhk,iter,next,kopt,tdir; + + /* Misc: */ + int stepstat[6],nfenj,j,ii,jj, numidx, neqp=neq+1; + int verbose=0; + + /** Allocate memory . */ + + void * buffer; + int buffer_size; + + buffer_size= + 15*neqp*sizeof(double) + +neqp*sizeof(int) + +neqp*sizeof(double*) + +(7*neq+1)*sizeof(double); + + class_alloc(buffer, + buffer_size, + error_message); + + f0 =(double*)buffer; + wt =f0+neqp; + ddfddt =wt+neqp; + pred =ddfddt+neqp; + y =pred+neqp; + invwt =y+neqp; + rhs =invwt+neqp; + psi =rhs+neqp; + difkp1 =psi+neqp; + del =difkp1+neqp; + yinterp =del+neqp; + ypinterp =yinterp+neqp; + yppinterp=ypinterp+neqp; + tempvec1 =yppinterp+neqp; + tempvec2 =tempvec1+neqp; + + interpidx=(int*)(tempvec2+neqp); + + dif =(double**)(interpidx+neqp); + dif[1] =(double*)(dif+neqp); + for(j=2;j<=neq;j++) dif[j] = dif[j-1]+7; /* Set row pointers... */ + dif[0] = NULL; + /* for (ii=0;ii<(7*neq+1);ii++) dif[1][ii]=0.; */ + for (j=1; j<=neq; j++) { + for (ii=1;ii<=7;ii++) { + dif[j][ii]=0.; + } + } + + /* class_alloc(f0,sizeof(double)*neqp,error_message); */ + /* class_alloc(wt,sizeof(double)*neqp,error_message); */ + /* class_alloc(ddfddt,sizeof(double)*neqp,error_message); */ + /* class_alloc(pred,sizeof(double)*neqp,error_message); */ + /* class_alloc(y,sizeof(double)*neqp,error_message); */ + /* class_alloc(invwt,sizeof(double)*neqp,error_message); */ + /* class_alloc(rhs,sizeof(double)*neqp,error_message); */ + /* class_alloc(psi,sizeof(double)*neqp,error_message); */ + /* class_alloc(difkp1,sizeof(double)*neqp,error_message); */ + /* class_alloc(del,sizeof(double)*neqp,error_message); */ + /* class_alloc(yinterp,sizeof(double)*neqp,error_message); */ + /* class_alloc(ypinterp,sizeof(double)*neqp,error_message); */ + /* class_alloc(yppinterp,sizeof(double)*neqp,error_message); */ + /* class_alloc(tempvec1,sizeof(double)*neqp,error_message); */ + /* class_alloc(tempvec2,sizeof(double)*neqp,error_message); */ + + /* class_alloc(interpidx,sizeof(int)*neqp,error_message); */ + + /* Allocate vector of pointers to rows of dif:*/ + /* class_alloc(dif,sizeof(double*)*neqp,error_message); */ + /* class_calloc(dif[1],(7*neq+1),sizeof(double),error_message); */ + /* dif[0] = NULL; */ + /* for(j=2;j<=neq;j++) dif[j] = dif[j-1]+7; */ /* Set row pointers... */ + + /*Set pointers:*/ + ynew = y_inout-1; /* This way y_inout is always up to date. */ + + /*Initialize the jacobian:*/ + class_call(initialize_jacobian(&jac,neq,error_message),error_message,error_message); + + /* Initialize workspace for numjac: */ + class_call(initialize_numjac_workspace(&nj_ws,neq,error_message),error_message,error_message); + + /* Initialize some method parameters:*/ + for(ii=0;ii<5;ii++){ + invGa[ii] = 1.0/(G[ii]*(1.0 - alpha[ii])); + erconst[ii] = alpha[ii]*G[ii] + 1.0/(2.0+ii); + } + + /* Set the relevant indices which needs to be found by interpolation. */ + /* But if we want to print variables for testing purposes, just interpolate everything.. */ + for(ii=1;ii<=neq;ii++){ + y[ii] = y_inout[ii-1]; + if (print_variables==NULL){ + interpidx[ii]=used_in_output[ii-1]; + } + else{ + interpidx[ii]=1; + } + } + t0 = x_ini; + tfinal = x_final; + + /* Some CLASS-specific stuff:*/ + next=0; + while (t_vec[next] < t0) next++; + + if (verbose > 1){ + numidx=0; + for(ii=1;ii<=neq;ii++){ + if (interpidx[ii]==_TRUE_) numidx++; + } + printf("%d/%d ",numidx,neq); + } + + htspan = fabs(tfinal-t0); + for(ii=0;ii<6;ii++) stepstat[ii] = 0; + + class_call((*derivs)(t0,y+1,f0+1,parameters_and_workspace_for_derivs,error_message),error_message,error_message); + stepstat[2] +=1; + if ((tfinal-t0)<0.0){ + tdir = -1; + } + else{ + tdir = 1; + } + hmax = (tfinal-t0)/10.0; + t = t0; + + + nfenj=0; + class_call(numjac((*derivs),t,y,f0,&jac,&nj_ws,abstol,neq, + &nfenj,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + stepstat[3] += 1; + stepstat[2] += nfenj; + Jcurrent = _TRUE_; /* True */ + + hmin = 16.0*eps*fabs(t); + /*Calculate initial step */ + rh = 0.0; + + for(jj=1;jj<=neq;jj++){ + wt[jj] = MAX(fabs(y[jj]),threshold); + /*printf("wt: %4.8f \n",wt[jj]);*/ + rh = MAX(rh,1.25/sqrt(rtol)*fabs(f0[jj]/wt[jj])); + } + + absh = MIN(hmax, htspan); + if (absh * rh > 1.0) absh = 1.0 / rh; + + absh = MAX(absh, hmin); + h = tdir * absh; + tdel = (t + tdir*MIN(sqrt(eps)*MAX(fabs(t),fabs(t+h)),absh)) - t; + + class_call((*derivs)(t+tdel,y+1,tempvec1+1,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + stepstat[2] += 1; + + /*I assume that a full jacobi matrix is always calculated in the beginning...*/ + for(ii=1;ii<=neq;ii++){ + ddfddt[ii]=0.0; + for(jj=1;jj<=neq;jj++){ + ddfddt[ii]+=(jac.dfdy[ii][jj])*f0[jj]; + } + } + + rh = 0.0; + for(ii=1;ii<=neq;ii++){ + ddfddt[ii] += (tempvec1[ii] - f0[ii]) / tdel; + rh = MAX(rh,1.25*sqrt(0.5*fabs(ddfddt[ii]/wt[ii])/rtol)); + } + absh = MIN(hmax, htspan); + if (absh * rh > 1.0) absh = 1.0 / rh; + + absh = MAX(absh, hmin); + h = tdir * absh; + /* Done calculating initial step + Get ready to do the loop:*/ + k = 1; /*start at order 1 with BDF1 */ + klast = k; + abshlast = absh; + + for(ii=1;ii<=neq;ii++) dif[ii][1] = h*f0[ii]; + + hinvGak = h*invGa[k-1]; + nconhk = 0; /*steps taken with current h and k*/ + class_call(new_linearisation(&jac,hinvGak,neq,error_message), + error_message,error_message); + stepstat[4] += 1; + havrate = _FALSE_; /*false*/ + + /* Doing main loop: */ + done = _FALSE_; + at_hmin = _FALSE_; + while (done==_FALSE_){ + hmin = minimum_variation; + maxtmp = MAX(hmin,absh); + absh = MIN(hmax, maxtmp); + if (fabs(absh-hmin)<100*eps){ + /* If the stepsize has not changed */ + if (at_hmin==_TRUE_){ + absh = abshlast; /*required by stepsize recovery */ + } + at_hmin = _TRUE_; + } + else{ + at_hmin = _FALSE_; + } + h = tdir * absh; + /* Stretch the step if within 10% of tfinal-t. */ + if (1.1*absh >= fabs(tfinal - t)){ + h = tfinal - t; + absh = fabs(h); + done = _TRUE_; + } + if (((fabs(absh-abshlast)/absh)>1e-6)||(k!=klast)){ + adjust_stepsize(dif,(absh/abshlast),neq,k); + hinvGak = h * invGa[k-1]; + nconhk = 0; + class_call(new_linearisation(&jac,hinvGak,neq,error_message), + error_message,error_message); + stepstat[4] += 1; + havrate = _FALSE_; + } + /* Loop for advancing one step */ + nofailed = _TRUE_; + for( ; ; ){ + gotynew = _FALSE_; /* is ynew evaluated yet?*/ + while(gotynew==_FALSE_){ + /*Compute the constant terms in the equation for ynew. + Next FOR lop is just: psi = matmul(dif(:,1:k),(G(1:k) * invGa(k)))*/ + for(ii=1;ii<=neq;ii++){ + psi[ii] = 0.0; + for(jj=1;jj<=k;jj++){ + psi[ii] += dif[ii][jj]*G[jj-1]*invGa[k-1]; + } + } + /* Predict a solution at t+h. */ + tnew = t + h; + if (done==_TRUE_){ + tnew = tfinal; /*Hit end point exactly. */ + } + h = tnew - t; /* Purify h. */ + for(ii=1;ii<=neq;ii++){ + pred[ii] = y[ii]; + for(jj=1;jj<=k;jj++){ + pred[ii] +=dif[ii][jj]; + } + } + eqvec(pred,ynew,neq); + + /*The difference, difkp1, between pred and the final accepted + ynew is equal to the backward difference of ynew of order + k+1. Initialize to zero for the iteration to compute ynew. + */ + + minnrm = 0.0; + for(j=1;j<=neq;j++){ + difkp1[j] = 0.0; + maxtmp = MAX(fabs(ynew[j]),fabs(y[j])); + invwt[j] = 1.0 / MAX(maxtmp,threshold); + maxtmp = 100*eps*fabs(ynew[j]*invwt[j]); + minnrm = MAX(minnrm,maxtmp); + } + /* Iterate with simplified Newton method. */ + tooslow = _FALSE_; + for(iter=1;iter<=maxit;iter++){ + for (ii=1;ii<=neq;ii++){ + tempvec1[ii]=(psi[ii]+difkp1[ii]); + } + class_call((*derivs)(tnew,ynew+1,f0+1,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + stepstat[2] += 1; + for(j=1;j<=neq;j++){ + rhs[j] = hinvGak*f0[j]-tempvec1[j]; + } + + /*Solve the linear system A*x=del by using the LU decomposition stored in jac.*/ + if (jac.use_sparse){ + sp_lusolve(jac.Numerical, rhs+1, del+1); + } + else{ + eqvec(rhs,del,neq); + lubksb(jac.LU,neq,jac.luidx,del); + } + + stepstat[5]+=1; + newnrm = 0.0; + for(j=1;j<=neq;j++){ + maxtmp = fabs(del[j]*invwt[j]); + newnrm = MAX(newnrm,maxtmp); + } + for(j=1;j<=neq;j++){ + difkp1[j] += del[j]; + ynew[j] = pred[j] + difkp1[j]; + } + if (newnrm <= minnrm){ + gotynew = _TRUE_; + break; /* Break Newton loop */ + } + else if(iter == 1){ + if (havrate==_TRUE_){ + errit = newnrm * rate / (1.0 - rate); + if (errit <= 0.05*rtol){ + gotynew = _TRUE_; + break; /* Break Newton Loop*/ + } + } + else { + rate = 0.0; + } + } + else if(newnrm > 0.9*oldnrm){ + tooslow = _TRUE_; + break; /*Break Newton lop */ + } + else{ + rate = MAX(0.9*rate, newnrm / oldnrm); + havrate = _TRUE_; + errit = newnrm * rate / (1.0 - rate); + if (errit <= 0.5*rtol){ + gotynew = _TRUE_; + break; /* exit newton */ + } + else if (iter == maxit){ + tooslow = _TRUE_; + break; /*exit newton */ + } + else if (0.5*rtol < errit*pow(rate,(maxit-iter))){ + tooslow = _TRUE_; + break; /*exit Newton */ + } + } + oldnrm = newnrm; + } + if (tooslow==_TRUE_){ + stepstat[1] += 1; + /* ! Speed up the iteration by forming new linearization or reducing h. */ + if (Jcurrent==_FALSE_){ + class_call((*derivs)(t,y+1,f0+1,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + nfenj=0; + class_call(numjac((*derivs),t,y,f0,&jac,&nj_ws,abstol,neq, + &nfenj,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + stepstat[3] += 1; + stepstat[2] += (nfenj + 1); + Jcurrent = _TRUE_; + } + else if (absh <= hmin){ + class_test(absh <= hmin, error_message, + "Step size too small: step:%g, minimum:%g, in interval: [%g:%g]\n", + absh,hmin,t0,tfinal); + } + else{ + abshlast = absh; + absh = MAX(0.3 * absh, hmin); + h = tdir * absh; + done = _FALSE_; + adjust_stepsize(dif,(absh/abshlast),neq,k); + hinvGak = h * invGa[k-1]; + nconhk = 0; + } + /* A new linearisation is needed in both cases */ + class_call(new_linearisation(&jac,hinvGak,neq,error_message), + error_message,error_message); + stepstat[4] += 1; + havrate = _FALSE_; + } + } + /*end of while loop for getting ynew + difkp1 is now the backward difference of ynew of order k+1. */ + err = 0.0; + for(jj=1;jj<=neq;jj++){ + err = MAX(err,fabs(difkp1[jj]*invwt[jj])); + } + err = err * erconst[k-1]; + if (err>rtol){ + /*Step failed */ + stepstat[1]+= 1; + if (absh <= hmin){ + class_test(absh <= hmin, error_message, + "Step size too small: step:%g, minimum:%g, in interval: [%g:%g]\n", + absh,hmin,t0,tfinal); + } + abshlast = absh; + if (nofailed==_TRUE_){ + nofailed = _FALSE_; + hopt = absh * MAX(0.1, 0.833*pow((rtol/err),(1.0/(k+1)))); + if (k > 1){ + errkm1 = 0.0; + for(jj=1;jj<=neq;jj++){ + errkm1 = MAX(errkm1,fabs((dif[jj][k]+difkp1[jj])*invwt[jj])); + } + errkm1 = errkm1*erconst[k-2]; + hkm1 = absh * MAX(0.1, 0.769*pow((rtol/errkm1),(1.0/k))); + if (hkm1 > hopt){ + hopt = MIN(absh,hkm1); /* don't allow step size increase */ + k = k - 1; + } + } + absh = MAX(hmin, hopt); + } + else{ + absh = MAX(hmin, 0.5 * absh); + } + h = tdir * absh; + if (absh < abshlast){ + done = _FALSE_; + } + adjust_stepsize(dif,(absh/abshlast),neq,k); + hinvGak = h * invGa[k-1]; + nconhk = 0; + class_call(new_linearisation(&jac,hinvGak,neq,error_message), + error_message,error_message); + stepstat[4] += 1; + havrate = _FALSE_; + } + else { + break; /* Succesfull step */ + } + } + /* End of conditionless FOR loop */ + stepstat[0] += 1; + + /* Update dif: */ + for(jj=1;jj<=neq;jj++){ + dif[jj][k+2] = difkp1[jj] - dif[jj][k+1]; + dif[jj][k+1] = difkp1[jj]; + } + for(j=k;j>=1;j--){ + for(ii=1;ii<=neq;ii++){ + dif[ii][j] += dif[ii][j+1]; + } + } + /** Output **/ + while ((next= 0.0)){ + /* Do we need to write output? */ + if (tnew==t_vec[next]){ + class_call((*output)(t_vec[next],ynew+1,f0+1,next,parameters_and_workspace_for_derivs,error_message), + error_message,error_message); +// MODIFICATION BY LUC +// All print_variables have been moved to the end of time step +/* + if (print_variables != NULL){ + class_call((*print_variables)(t_vec[next],ynew+1,f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + } +*/ + } + else { + /*Interpolate if we have overshot sample values*/ + interp_from_dif(t_vec[next],tnew,ynew,h,dif,k,yinterp,ypinterp,yppinterp,interpidx,neq,2); + + class_call((*output)(t_vec[next],yinterp+1,ypinterp+1,next,parameters_and_workspace_for_derivs, + error_message),error_message,error_message); + + } + next++; + } + /** End of output **/ + if (done==_TRUE_) { + break; + } + klast = k; + abshlast = absh; + nconhk = MIN(nconhk+1,maxk+2); + if (nconhk >= k + 2){ + temp = 1.2*pow((err/rtol),(1.0/(k+1.0))); + if (temp > 0.1){ + hopt = absh / temp; + } + else { + hopt = 10*absh; + } + kopt = k; + if (k > 1){ + errkm1 = 0.0; + for(jj=1;jj<=neq;jj++){ + errkm1 = MAX(errkm1,fabs(dif[jj][k]*invwt[jj])); + } + errkm1 = errkm1*erconst[k-2]; + temp = 1.3*pow((errkm1/rtol),(1.0/k)); + if (temp > 0.1){ + hkm1 = absh / temp; + } + else { + hkm1 = 10*absh; + } + if (hkm1 > hopt){ + hopt = hkm1; + kopt = k - 1; + } + } + if (k < maxk){ + errkp1 = 0.0; + for(jj=1;jj<=neq;jj++){ + errkp1 = MAX(errkp1,fabs(dif[jj][k+2]*invwt[jj])); + } + errkp1 = errkp1*erconst[k]; + temp = 1.4*pow((errkp1/rtol),(1.0/(k+2.0))); + if (temp > 0.1){ + hkp1 = absh / temp; + } + else { + hkp1 = 10*absh; + } + if (hkp1 > hopt){ + hopt = hkp1; + kopt = k + 1; + } + } + if (hopt > absh){ + absh = hopt; + if (k!=kopt){ + k = kopt; + } + } + } + /* Advance the integration one step. */ + t = tnew; + eqvec(ynew,y,neq); + Jcurrent = _FALSE_; + +// MODIFICATION BY LUC + if (print_variables!=NULL){ + class_call((*derivs)(tnew, + ynew+1, + f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message, + error_message); + + class_call((*print_variables)(tnew,ynew+1,f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + } +// end of modification + + } + + /* a last call is compulsory to ensure that all quantitites in + y,dy,parameters_and_workspace_for_derivs are updated to the + last point in the covered range */ + class_call( + (*derivs)(tnew, + ynew+1, + f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message, + error_message); + + if (verbose > 0){ + printf("\n End of evolver. Next=%d, t=%e and tnew=%e.",next,t,tnew); + printf("\n Statistics: [%d %d %d %d %d %d] \n",stepstat[0],stepstat[1], + stepstat[2],stepstat[3],stepstat[4],stepstat[5]); + } + + /** Deallocate memory */ + + free(buffer); + + /* free(f0); */ + /* free(wt); */ + /* free(ddfddt); */ + /* free(pred); */ + /* free(y); */ + /* free(invwt); */ + /* free(rhs); */ + /* free(psi); */ + /* free(difkp1); */ + /* free(del); */ + /* free(yinterp); */ + /* free(ypinterp); */ + /* free(yppinterp); */ + /* free(tempvec1); */ + /* free(tempvec2); */ + + /* free(interpidx); */ + /* free(dif[1]); */ + /* free(dif); */ + + uninitialize_jacobian(&jac); + uninitialize_numjac_workspace(&nj_ws); + return _SUCCESS_; + +} /*End of program*/ + +/**********************************************************************/ +/* Here are some small routines used in evolver_ndf15: */ +/* "interp_from_dif", "eqvec", "adjust_stepsize", "calc_C", */ +/* "new_linearisation", "relevant_indices", "ludcmp", "lubksb". */ +/**********************************************************************/ + +void eqvec(double *datavec,double *emptyvec, int n){ + int i; + for(i=1;i<=n;i++){ + emptyvec[i] = datavec[i]; + } +} + +int calc_C(struct jacobian *jac){ + int nz, i, j, k, n, col, row; + int duplicate; + int *Ci, *Cp, *Ai, *Ap; + n = jac->Numerical->n;Ci = jac->Ci;Cp = jac->Cp; + Ai = jac->spJ->Ai; Ap = jac->spJ->Ap; + /* Calculate sparse pattern for C = J + J'. We can use jac->Numerical->xi as + storage, since we can't refactor when jac->repeated_pattern = 0. xi[0..n][0..n]. + At first, Cp[i+1] holds the number of elements in w[i].*/ + for (j=0;j<=n;j++) Cp[j] = 0; /* Clear Cp */ + for (j=0;jNumerical->xi[col][k]==row){ + duplicate = _TRUE_; + break; + } + } + if (!duplicate){ + jac->Numerical->xi[col][Cp[col+1]] = row; + Cp[col+1]++; + } + /* Add (j,i) to sparsity pattern if it does not exist: */ + duplicate = _FALSE_; + col = Ai[i]; row = j; + for(k=0;kNumerical->xi[col][k]==row){ + duplicate = _TRUE_; + break; + } + } + if (!duplicate){ + jac->Numerical->xi[col][Cp[col+1]] = row; + Cp[col+1]++; + } + } + } + } + /* wi prepared, write sparsity pattern in Ci and Cp:*/ + nz = 0; + for(j=0;jNumerical->xi[j][k]; + nz++; + } + Cp[j+1] +=Cp[j]; /* We can update Cp here. */ + } + return _SUCCESS_; +} + +/* Subroutine that interpolates from information stored in dif */ +int interp_from_difold(double tinterp,double tnew,double *ynew,double h,double **dif,int k, double *yinterp, + double *ypinterp, double *yppinterp, int* index, int neq, int output){ + /* Output=1: only y_vector. Output=2: y and y prime. Output=3: y, yp and ypp*/ + int i,j,m,l,p,factor; + double sumj,suml,sump,prodm,s; + s = (tinterp - tnew)/h; + if (k==1){ + for(i=1;i<=neq;i++){ + if(index[i]==_TRUE_){ + yinterp[i] = ynew[i] + dif[i][1] * s; + if (output>1) ypinterp[i] = dif[i][1]/h; + if (output>2) yppinterp[i] = 0; /* No good estimate can be made of the second derivative */ + } + } + } + else{ + /*This gets tricky */ + for(i=1;i<=neq;i++){ + if(index[i]==_TRUE_){ + /*First the value of the function: */ + sumj=0.0; + factor=1; + for(j=1;j<=k;j++){ + prodm=1.0; + factor*=j; + for(m=0;m1){ + factor = 1; + sumj=0.0; + for(j=1;j<=k;j++){ + suml = 0.0; + factor *=j; + for(l=0;l2){ + factor=1; + sumj=0.0; + for(j=1;j<=k;j++){ + suml=0.0; + factor*=j; + for(l=0;luse_sparse==1){ + Ap = jac->spJ->Ap; Ai = jac->spJ->Ai; Ax = jac->spJ->Ax; + /* Construct jac->spJ->Ax from jac->xjac, the jacobian:*/ + for(j=0;jxjac[i]; + } + else{ + Ax[i] = -hinvGak*jac->xjac[i]; + } + } + } + /* Matrix constructed... */ + if(jac->new_jacobian==_TRUE_){ + /*I have a new pattern, and I have not done a LU decomposition + since the last jacobian calculation, so I need to do a full + sparse LU-decomposition: */ + /* Find the sparsity pattern C = J + J':*/ + calc_C(jac); + /* Calculate the optimal ordering: */ + sp_amd(jac->Cp, jac->Ci, neq, jac->cnzmax, + jac->Numerical->q,jac->Numerical->wamd); + /* if the next line is uncomented, the code uses natural ordering instead of AMD ordering */ + /*jac->Numerical->q = NULL;*/ + funcreturn = sp_ludcmp(jac->Numerical, jac->spJ, 1e-3); + class_test(funcreturn == _FAILURE_,error_message, + "Failure in sp_ludcmp. Possibly singular matrix!"); + jac->new_jacobian = _FALSE_; + } + else{ + /* I have a repeated pattern, so I can just refactor:*/ + sp_refactor(jac->Numerical, jac->spJ); + } + } + else{ + /* Normal calculation: */ + for(i=1;i<=neq;i++){ + for(j=1;j<=neq;j++){ + jac->LU[i][j] = - hinvGak * jac->dfdy[i][j]; + if(i==j) jac->LU[i][j] +=1.0; + } + } + /*Dense LU decomposition: */ + funcreturn = ludcmp(jac->LU,neq,jac->luidx,&luparity,jac->LUw); + class_test(funcreturn == _FAILURE_,error_message, + "Failure in ludcmp. Possibly singular matrix!"); + } + return _SUCCESS_; +} + +/** Helper functions */ +int lubksb(double **a, int n, int *indx, double b[]){ + int i,ii=0,ip,j; + double sum; + for (i=1;i<=n;i++) { + ip=indx[i]; + sum=b[ip]; + b[ip]=b[i]; + if (ii) for (j=ii;j<=i-1;j++) sum -= a[i][j]*b[j]; + else if (sum) ii=i; + b[i]=sum; + } + for (i=n;i>=1;i--) { + sum=b[i]; + for (j=i+1;j<=n;j++) sum -= a[i][j]*b[j]; + b[i]=sum/a[i][i]; + } + return _SUCCESS_; +} + + +int ludcmp(double **a, int n, int *indx, double *d, double *vv){ + int i,imax=0,j,k; + double big,dum,sum,temp; + *d=1.0; + for (i=1;i<=n;i++) { + big=0.0; + for (j=1;j<=n;j++) if ((temp=fabs(a[i][j])) > big) big=temp; + if (big == 0.0) return _FAILURE_; + vv[i]=1.0/big; + } + for (j=1;j<=n;j++) { + for (i=1;i= big) { + big=dum; + imax=i; + } + } + if (j != imax) { + for (k=1;k<=n;k++) { + dum=a[imax][k]; + a[imax][k]=a[j][k]; + a[j][k]=dum; + } + *d = -(*d); + vv[imax]=vv[j]; + } + indx[j]=imax; + if (a[j][j] == 0.0) a[j][j]=TINY; + if (j != n) { + dum=1.0/(a[j][j]); + for (i=j+1;i<=n;i++) a[i][j] *= dum; + } + } + return _SUCCESS_; +} + +int fzero_Newton(int (*func)(double *x, + int x_size, + void *param, + double *F, + ErrorMsg error_message), + double *x_inout, + double *dxdF, + int x_size, + double tolx, + double tolF, + void *param, + int *fevals, + ErrorMsg error_message){ + /**Given an initial guess x[1..n] for a root in n dimensions, + take ntrial Newton-Raphson steps to improve the root. + Stop if the root converges in either summed absolute + variable increments tolx or summed absolute function values tolf.*/ + int k,i,j,*indx, ntrial=20; + double errx,errf,d,*F0,*Fdel,**Fjac,*p, *lu_work; + int has_converged = _FALSE_; + double toljac = 1e-3; + double *delx; + + /** All arrays are indexed as [0, n-1] with the exception of p, indx, + lu_work and Fjac, since they are passed to ludcmp and lubksb. */ + class_alloc(indx, sizeof(int)*(x_size+1), error_message); + class_alloc(p, sizeof(double)*(x_size+1), error_message); + class_alloc(lu_work, sizeof(double)*(x_size+1), error_message); + class_alloc(Fjac, sizeof(double *)*(x_size+1), error_message); + Fjac[0] = NULL; + class_alloc(Fjac[1], sizeof(double)*(x_size*x_size+1), error_message); + for (i=2; i<=x_size; i++){ + Fjac[i] = Fjac[i-1] + x_size; + } + + class_alloc(F0, sizeof(double)*x_size, error_message); + class_alloc(delx, sizeof(double)*x_size, error_message); + class_alloc(Fdel, sizeof(double)*x_size, error_message); + + for (i=1; i<=x_size; i++){ + delx[i-1] = toljac*dxdF[i-1]; + } + + for (k=1;k<=ntrial;k++) { + /** Compute F(x): */ + /**printf("x = [%f, %f], delx = [%e, %e]\n", + x_inout[0],x_inout[1],delx[0],delx[1]);*/ + class_call(func(x_inout, x_size, param, F0, error_message), + error_message, error_message); + /** printf("F0 = [%f, %f]\n",F0[0],F0[1]);*/ + *fevals = *fevals + 1; + errf=0.0; //fvec and Jacobian matrix in fjac. + for (i=1; i<=x_size; i++) + errf += fabs(F0[i-1]); //Check function convergence. + if (errf <= tolF){ + has_converged = _TRUE_; + break; + } + + /** + if (k==1){ + for (i=1; i<=x_size; i++){ + delx[i-1] *= F0[i-1]; + } + } + */ + + /** Compute the jacobian of F: */ + for (i=1; i<=x_size; i++){ + if (F0[i-1]<0.0) + delx[i-1] *= -1; + x_inout[i-1] += delx[i-1]; + + /** printf("x = [%f, %f], delx = [%e, %e]\n", + x_inout[0],x_inout[1],delx[0],delx[1]);*/ + class_call(func(x_inout, x_size, param, Fdel, error_message), + error_message, error_message); + /** printf("F = [%f, %f]\n",Fdel[0],Fdel[1]);*/ + for (j=1; j<=x_size; j++) + Fjac[j][i] = (Fdel[j-1]-F0[j-1])/delx[i-1]; + x_inout[i-1] -= delx[i-1]; + } + *fevals = *fevals + x_size; + + for (i=1; i<=x_size; i++) + p[i] = -F0[i-1]; //Right-hand side of linear equations. + ludcmp(Fjac, x_size, indx, &d, lu_work); //Solve linear equations using LU decomposition. + lubksb(Fjac, x_size, indx, p); + errx=0.0; //Check root convergence. + for (i=1; i<=x_size; i++) { //Update solution. + errx += fabs(p[i]); + x_inout[i-1] += p[i]; + } + if (errx <= tolx){ + has_converged = _TRUE_; + break; + } + } + + free(p); + free(lu_work); + free(indx); + free(Fjac[1]); + free(Fjac); + free(F0); + free(delx); + free(Fdel); + + if (has_converged == _TRUE_){ + return _SUCCESS_; + } + else{ + class_stop(error_message, "Newton's method failed to converge. Try improving initial guess on the parameters, decrease the tolerance requirements to Newtons method or increase the precision of the input function.\n"); + } +} + +/**********************************************************************/ +/* Here are some routines related to the calculation of the jacobian: */ +/* "numjac", "initialize_jacobian", "uninitialize_jacobian", */ +/* "initialize_numjac_workspace", "uninitialize_numjac_workspace". */ +/**********************************************************************/ +int numjac( + int (*derivs)(double x, double * y,double * dy, + void * parameters_and_workspace, ErrorMsg error_message), + double t, double *y, double *fval, + struct jacobian *jac, struct numjac_workspace *nj_ws, + double thresh, int neq, int *nfe, void * parameters_and_workspace_for_derivs, + ErrorMsg error_message){ + /* Routine that computes the jacobian numerically. It is based on the numjac + implementation in MATLAB, but a feature for recognising sparsity in the + jacobian and taking advantage of that has been added. + */ + double eps=1e-16, br=pow(eps,0.875),bl=pow(eps,0.75),bu=pow(eps,0.25); + double facmin=pow(eps,0.78),facmax=0.1; + int logjpos, pattern_broken; + double tmpfac,difmax2=0.,del2,ffscale; + int i,j,rowmax2; + double maxval1,maxval2; + int colmax,group,row,nz,nz2; + double Fdiff_absrm,Fdiff_new; + double **dFdy,*fac; + int *Ap=NULL, *Ai=NULL; + + dFdy = jac->dfdy; /* Assign pointer to dfdy directly for easier notation. */ + fac = jac->jacvec; + if (jac->use_sparse){ + Ap = jac->spJ->Ap; + Ai = jac->spJ->Ai; + } + + /* Set new_jacobian flag: */ + jac->new_jacobian = _TRUE_; + + for(j=1;j<=neq;j++){ + nj_ws->yscale[j] = MAX(fabs(y[j]),thresh); + nj_ws->del[j] = (y[j] + fac[j] * nj_ws->yscale[j]) - y[j]; + } + + /*Select an increment del for a difference approximation to + column j of dFdy. The vector fac accounts for experience + gained in previous calls to numjac. + */ + for(j=1;j<=neq;j++){ + if (nj_ws->del[j]==0.0){ + for(;;){ + if (fac[j] < facmax){ + fac[j] = MIN(100*fac[j],facmax); + nj_ws->del[j] = (y[j] + fac[j]*nj_ws->yscale[j]) - y[j]; + if(nj_ws->del[j]==0.0){ + break; + } + } + else{ + nj_ws->del[j] = thresh; + break; + } + } + } + } + + /* keep del pointing into region: */ + for(j=1;j<=neq;j++){ + if (fval[j]>=0.0){ + nj_ws->del[j] = fabs(nj_ws->del[j]); + } + else{ + nj_ws->del[j] = -fabs(nj_ws->del[j]); + } + } + + /* Sparse calculation?*/ + if ((jac->use_sparse)&&(jac->repeated_pattern >= jac->trust_sparse)){ + /* printf("\n Sparse calculation..neq=%d, has grouping=%d",neq,jac->has_grouping);*/ + /* Everything done sparse'ly. Do we have a grouping? */ + if (jac->has_grouping==0){ + jac->max_group = column_grouping(jac->spJ,jac->col_group,jac->col_wi); + jac->has_grouping = 1; + } + colmax = jac->max_group+1; + /* printf("\n ->groups=%d/%d.",colmax,neq); */ + for(j=1;j<=colmax;j++){ + /*loop over groups */ + group = j-1; + for(i=1;i<=neq;i++){ + /*Add y-vector.. */ + nj_ws->ydel_Fdel[i][j] = y[i]; + /*Add del of all groupmembers:*/ + if(jac->col_group[i-1]==group) nj_ws->ydel_Fdel[i][j] +=nj_ws->del[i]; + } + } + } + else{ + /*printf("\n Normal calculation..."); */ + /*Normal calculation: */ + colmax = neq; + for(j=1;j<=neq;j++){ + for(i=1;i<=neq;i++){ + nj_ws->ydel_Fdel[i][j] = y[i]; + } + nj_ws->ydel_Fdel[j][j] += nj_ws->del[j]; + } + } + + /* The next section should work regardless of sparse...*/ + /* Evaluate the function at y+delta vectors:*/ + for(j=1;j<=colmax;j++){ + for(i=1;i<=neq;i++){ + nj_ws->yydel[i] = nj_ws->ydel_Fdel[i][j]; + } + class_call((*derivs)(t,nj_ws->yydel+1,nj_ws->ffdel+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + + *nfe+=1; + for(i=1;i<=neq;i++) nj_ws->ydel_Fdel[i][j] = nj_ws->ffdel[i]; + } + + + /*Using the Fdel array, form the jacobian and construct max-value arrays. + First we do it for the sparse case, then for the normal case:*/ + if ((jac->use_sparse)&&(jac->repeated_pattern >= jac->trust_sparse)){ + /* Sparse case:*/ + for(j=0;jcol_group[j]; + Fdiff_new = 0.0; + Fdiff_absrm = 0.0; + for(i=Ap[j];iydel_Fdel[row][group+1]-fval[row]; /*Remember to access the column of the corresponding group */ + if (fabs(Fdiff_new)>=Fdiff_absrm){ + nj_ws->Rowmax[j+1] = row; + nj_ws->Difmax[j+1] = Fdiff_new; + } + /* Assign value to sparse rep of jacobian: */ + jac->xjac[i] = Fdiff_new/nj_ws->del[j+1]; + } + /* The maximum numerical value of Fdel in true column j+1*/ + nj_ws->absFdelRm[j+1] = fabs(nj_ws->ydel_Fdel[nj_ws->Rowmax[j+1]][group+1]); + } + } + else{ + /*Normal case:*/ + for(j=1;j<=neq;j++){ + Fdiff_new = 0.0; + Fdiff_absrm = 0.0; + for(i=1;i<=neq;i++){ + Fdiff_absrm = MAX(fabs(Fdiff_new),Fdiff_absrm); + Fdiff_new = nj_ws->ydel_Fdel[i][j] - fval[i]; + dFdy[i][j] = Fdiff_new/nj_ws->del[j]; + /*Find row maximums:*/ + if(fabs(Fdiff_new)>=Fdiff_absrm){ + /* Found new max location in column */ + nj_ws->Rowmax[j] = i; + nj_ws->Difmax[j] = fabs(Fdiff_new); + } + } + nj_ws->absFdelRm[j] = fabs(nj_ws->ydel_Fdel[nj_ws->Rowmax[j]][j]); + } + } + + /* Adjust fac for next call to numjac. */ + for(i=1;i<=neq;i++){ + nj_ws->absFvalue[i] = fabs(fval[i]); + } + for(j=1;j<=neq;j++){ + nj_ws->absFvalueRm[j] = nj_ws->absFvalue[nj_ws->Rowmax[j]]; + } + + logjpos = 0; + for(j=1;j<=neq;j++){ + if (((nj_ws->absFdelRm[j]absFvalueRm[j] < TINY))||(fabs(nj_ws->Difmax[j])logj[j] = 1;/*.true.*/ + logjpos = 1; + } + else{ + nj_ws->logj[j] = 0; + } + } + + if (logjpos ==1){ + for(i=1;i<=neq;i++){ + nj_ws->yydel[i] = y[i]; + nj_ws->Fscale[i] = MAX(nj_ws->absFdelRm[i],nj_ws->absFvalueRm[i]); + } + /* If the difference in f values is so small that the column might be just + ! roundoff error, try a bigger increment. */ + for(j=1;j<=neq;j++){ + if ((nj_ws->logj[j]==1)&&(nj_ws->Difmax[j]<=(br*nj_ws->Fscale[j]))){ + tmpfac = MIN(sqrt(fac[j]),facmax); + del2 = (y[j] + tmpfac*nj_ws->yscale[j]) - y[j]; + if ((tmpfac!=fac[j])&&(del2!=0.0)){ + if (fval[j] >= 0.0){ + /*! keep del pointing into region */ + del2 = fabs(del2); + } + else{ + del2 = -fabs(del2); + } + nj_ws->yydel[j] = y[j] + del2; + class_call((*derivs)(t,nj_ws->yydel+1,nj_ws->ffdel+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + *nfe+=1; + nj_ws->yydel[j] = y[j]; + rowmax2 = 1; + Fdiff_new=0.0; + Fdiff_absrm = 0.0; + for(i=1;i<=neq;i++){ + Fdiff_absrm = MAX(Fdiff_absrm,fabs(Fdiff_new)); + Fdiff_new = nj_ws->ffdel[i]-fval[i]; + nj_ws->tmp[i] = Fdiff_new/del2; + if(fabs(Fdiff_new)>=Fdiff_absrm){ + rowmax2 = i; + difmax2 = fabs(Fdiff_new); + } + } + maxval1 = difmax2*fabs(del2)*tmpfac; + maxval2 = nj_ws->Difmax[j]*fabs(nj_ws->del[j]); + if(maxval1>=maxval2){ + /* The new difference is more significant, so + use the column computed with this increment. + This depends on wether we are in sparse mode or not: */ + if ((jac->use_sparse)&&(jac->repeated_pattern >= jac->trust_sparse)){ + for(i=Ap[j-1];ixjac[i]=nj_ws->tmp[Ai[i]+1]; + } + else{ + for(i=1;i<=neq;i++) dFdy[i][j]=nj_ws->tmp[i]; + } + /* Adjust fac for the next call to numjac. */ + ffscale = MAX(fabs(nj_ws->ffdel[rowmax2]),nj_ws->absFvalue[rowmax2]); + if (difmax2 <= bl*ffscale){ + /* The difference is small, so increase the increment. */ + fac[j] = MIN(10*tmpfac, facmax); + } + else if(difmax2 > bu*ffscale){ + /* The difference is large, so reduce the increment. */ + fac[j] = MAX(0.1*tmpfac, facmin); + } + else{ + fac[j] = tmpfac; + } + } + } + } + } + } + /* If use_sparse is true but I still don't trust the sparsity pattern, go through the full calculated jacobi- + matrix, deduce the sparsity pattern, compare with the old pattern, and write the new sparse Jacobi matrix. + If I do this cleverly, I only have to walk through the jacobian once, and I don't need any local storage.*/ + + if ((jac->use_sparse)&&(jac->repeated_pattern < jac->trust_sparse)){ + nz=0; /*Number of non-zeros */ + Ap[0]=0; /*<-Always is.. */ + pattern_broken = _FALSE_; + for(j=1;j<=neq;j++){ + for(i=1;i<=neq;i++){ + if ((i==j)||(fabs(dFdy[i][j])!=0.0)){ + /* Diagonal or non-zero index found. */ + if (nz>=jac->max_nonzero){ + /* Too many non-zero points to take advantage of sparsity.*/ + jac->use_sparse = 0; + break; + } + /* Test pattern if it is still unbroken: */ + /* Two conditions must be met if the pattern is intact: Ap[j-1]<=nzhas_pattern==_TRUE_)){ + if ((nz=Ap[j])){ + /* If we are no longer in the right column, pattern is broken for sure. */ + pattern_broken = _TRUE_; + } + } + if ((pattern_broken==_FALSE_)&&(jac->has_pattern==_TRUE_)){ + /* Up to this point, the new jacobian has managed to fit in the old + sparsity pattern..*/ + if (Ai[nz]!=(i-1)){ + /* The current non-zero rownumber does not fit the current entry in the + sparse matrix. Pattern MIGHT be broken. Scan ahead in the sparse matrix + to search for the row entry: (Remember: the indices are sorted..)*/ + pattern_broken = _TRUE_; + for(nz2=nz; (nz2xjac[nz2] = 0.0; + } + } + } + /* The following works no matter the status of the pattern: */ + /* Write row_number: */ + Ai[nz] = i-1; + /* Write value: */ + jac->xjac[nz] = dFdy[i][j]; + nz++; + } + } + /* Break this loop too if I have hit max non-zero points: */ + if (jac->use_sparse==_FALSE_) break; + Ap[j]=nz; + } + if (jac->use_sparse==_TRUE_){ + if ((jac->has_pattern==_TRUE_)&&(pattern_broken==_FALSE_)){ + /*New jacobian fitted into the current sparsity pattern:*/ + jac->repeated_pattern++; + /* printf("\n Found repeated pattern. nz=%d/%d and + rep.pat=%d.",nz,neq*neq,jac->repeated_pattern); */ + } + else{ + /*Something has changed (or first run), better still do the full calculation..*/ + jac->repeated_pattern = 0; + } + jac->has_pattern = 1; + } + } + return _SUCCESS_; +} /* End of numjac */ + +int initialize_jacobian(struct jacobian *jac, int neq, ErrorMsg error_message){ + int i; + + if (neq>15){ + jac->use_sparse = 1; + } + else{ + jac->use_sparse = 0; + } + jac->max_nonzero = (int)(MAX(3*neq,0.20*neq*neq)); + jac->cnzmax = 12*jac->max_nonzero/5; + + /*Maximal number of non-zero entries to be considered sparse */ + jac->repeated_pattern = 0; + jac->trust_sparse = 4; + /* Number of times a pattern is repeated before we trust it. */ + jac->has_grouping = 0; + jac->has_pattern = 0; + jac->sparse_stuff_initialized=0; + + /*Setup memory for the pointers of the dense method:*/ + + class_alloc(jac->dfdy,sizeof(double*)*(neq+1),error_message); /* Allocate vector of pointers to rows of matrix.*/ + class_alloc(jac->dfdy[1],sizeof(double)*(neq*neq+1),error_message); + jac->dfdy[0] = NULL; + for(i=2;i<=neq;i++) jac->dfdy[i] = jac->dfdy[i-1]+neq; /* Set row pointers... */ + + class_alloc(jac->LU,sizeof(double*)*(neq+1),error_message); /* Allocate vector of pointers to rows of matrix.*/ + class_alloc(jac->LU[1],sizeof(double)*(neq*neq+1),error_message); + jac->LU[0] = NULL; + for(i=2;i<=neq;i++) jac->LU[i] = jac->LU[i-1]+neq; /* Set row pointers... */ + + class_alloc(jac->LUw,sizeof(double)*(neq+1),error_message); + class_alloc(jac->jacvec,sizeof(double)*(neq+1),error_message); + class_alloc(jac->luidx,sizeof(int)*(neq+1),error_message); + + /*Setup memory for the sparse method, if used: */ + if (jac->use_sparse){ + jac->sparse_stuff_initialized = 1; + + jac->xjac=(double*)(jac->luidx+neq+1); + jac->col_group=(int*)(jac->xjac+jac->max_nonzero); + jac->col_wi=jac->col_group+neq; + jac->Cp=jac->col_wi+neq; + jac->Ci=jac->Cp+neq+1; + + class_alloc(jac->xjac,sizeof(double)*jac->max_nonzero,error_message); + class_alloc(jac->col_group,sizeof(int)*neq,error_message); + class_alloc(jac->col_wi,sizeof(int)*neq,error_message); + class_alloc(jac->Cp,sizeof(int)*(neq+1),error_message); + class_alloc(jac->Ci,sizeof(int)*jac->cnzmax,error_message); + + class_call(sp_num_alloc(&jac->Numerical, neq,error_message), + error_message,error_message); + + class_call(sp_mat_alloc(&jac->spJ, neq, neq, jac->max_nonzero, + error_message),error_message,error_message); + + } + + /* Initialize jacvec to sqrt(eps):*/ + for (i=1;i<=neq;i++) jac->jacvec[i]=1.490116119384765597872e-8; + return _SUCCESS_; +} + +int uninitialize_jacobian(struct jacobian *jac){ + free(jac->dfdy[1]); + free(jac->dfdy); + free(jac->LU[1]); + free(jac->LU); + + free(jac->luidx); + free(jac->LUw); + free(jac->jacvec); + + if(jac->sparse_stuff_initialized){ + free(jac->xjac); + free(jac->col_wi); + free(jac->col_group); + free(jac->Cp); + free(jac->Ci); + sp_mat_free(jac->spJ); + sp_num_free(jac->Numerical); + } + return _SUCCESS_; +} + +int initialize_numjac_workspace(struct numjac_workspace * nj_ws,int neq, ErrorMsg error_message){ + int i,neqp=neq+1; + /* Allocate vectors and matrices: */ + + class_alloc(nj_ws->yscale,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->del,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->Difmax,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->absFdelRm,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->absFvalue,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->absFvalueRm,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->Fscale,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->ffdel,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->yydel,sizeof(double)*neqp,error_message); + class_alloc(nj_ws->tmp,sizeof(double)*neqp,error_message); + + class_alloc(nj_ws->ydel_Fdel,sizeof(double*)*(neq+1),error_message); /* Allocate vector of pointers to rows of matrix.*/ + class_alloc(nj_ws->ydel_Fdel[1],sizeof(double)*(neq*neq+1),error_message); + nj_ws->ydel_Fdel[0] = NULL; + for(i=2;i<=neq;i++) nj_ws->ydel_Fdel[i] = nj_ws->ydel_Fdel[i-1]+neq; /* Set row pointers... */ + + class_alloc(nj_ws->logj,sizeof(int)*neqp,error_message); + class_alloc(nj_ws->Rowmax,sizeof(int)*neqp,error_message); + + /* Done allocating stuff */ + return _SUCCESS_; +} + +int uninitialize_numjac_workspace(struct numjac_workspace * nj_ws){ + /* Deallocate vectors and matrices: */ + free(nj_ws->yscale); + free(nj_ws->del); + free(nj_ws->Difmax); + free(nj_ws->absFdelRm); + free(nj_ws->absFvalue); + free(nj_ws->absFvalueRm); + free(nj_ws->Fscale); + free(nj_ws->ffdel); + free(nj_ws->yydel); + free(nj_ws->tmp); + + free(nj_ws->ydel_Fdel[1]); + free(nj_ws->ydel_Fdel); + free(nj_ws->logj); + free(nj_ws->Rowmax); + return _SUCCESS_; +} diff --git a/class_old/tools/evolver_rkck.c b/class_old/tools/evolver_rkck.c new file mode 100644 index 00000000..7ecf412d --- /dev/null +++ b/class_old/tools/evolver_rkck.c @@ -0,0 +1,178 @@ +#include "evolver_rkck.h" + +int evolver_rk(int (*derivs)(double x, + double * y, + double * dy, + void * parameters_and_workspace, + ErrorMsg error_message), + double x_ini, + double x_end, + double * y, + int * used_in_output, + int y_size, + void * parameters_and_workspace_for_derivs, + double tolerance, + double minimum_variation, + int (*evaluate_timescale)(double x, + void * parameters_and_workspace, + double * timescale, + ErrorMsg error_message), + double timestep_over_timescale, + double * x_sampling, + int x_size, + int (*output)(double x, + double y[], + double dy[], + int index_x, + void * parameters_and_workspace, + ErrorMsg error_message), + int (*print_variables)(double x, + double y[], + double dy[], + void * parameters_and_workspace, + ErrorMsg error_message), + ErrorMsg error_message) { + + int next_index_x; + double x1,x2=0.,timestep,timescale; + struct generic_integrator_workspace gi; + double * dy; + short call_output; + + class_test(x_ini > x_sampling[x_size-1], + error_message, + "called with x=%e, last x_sampling=%e",x_ini,x_sampling[x_size-1]); + + next_index_x=0; + + while (x_sampling[next_index_x] < x_ini) next_index_x++; + + class_call(initialize_generic_integrator(y_size, &gi), + gi.error_message, + error_message); + + class_alloc(dy,y_size*sizeof(double),error_message); + + x1=x_ini; + + call_output = _FALSE_; + + while ((x1 < x_end) && (next_index_x x_end) { + x2 = x_end; + call_output = _FALSE_; + } + + if (print_variables != NULL) { + + if (x1 == x_ini) { + + class_call((*derivs)(x1, + y, + dy, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + } + + class_call((*print_variables)(x1, + y, + dy, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + } + + class_call(generic_integrator(derivs, + x1, + x2, + y, + parameters_and_workspace_for_derivs, + tolerance, + x1*minimum_variation, + &gi), + gi.error_message, + error_message); + + if (call_output == _TRUE_) { + + class_call((*derivs)(x2, + y, + dy, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + + class_call((*output)(x2, + y, + dy, + next_index_x, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + + call_output = _FALSE_; + + next_index_x++; + + } + + x1 = x2; + + } + + /* a last call is compulsory to ensure that all quantitites in + y,dy,parameters_and_workspace_for_derivs are updated to the last + point in the covered range */ + class_call((*derivs)(x1, + y, + dy, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + + if (print_variables != NULL) + class_call((*print_variables)(x1, + y, + dy, + parameters_and_workspace_for_derivs, + error_message), + error_message, + error_message); + + class_call(cleanup_generic_integrator(&gi), + gi.error_message, + error_message); + + free(dy); + + return _SUCCESS_; + +} diff --git a/class_old/tools/growTable.c b/class_old/tools/growTable.c new file mode 100644 index 00000000..02ae9bee --- /dev/null +++ b/class_old/tools/growTable.c @@ -0,0 +1,161 @@ +/*** + * growTable provides automatically growing tables. + */ + +#include "growTable.h" + +/*** + * gt_init Initialize the growTable. + * gt_init will initialize the growTable structure. It must be already allocated. + * + * Called by background_solve(). + */ +int gt_init( + growTable* self /***< a pointer on an empty growTable */ + ) { + + class_alloc(self->buffer,_GT_INITSIZE_,self->error_message); + self->sz=_GT_INITSIZE_; + self->csz=0; + self->freeze=_FALSE_; /**< This line added by JL */ + return _SUCCESS_; +} + +/** + * Add data to the growTable. + * + * Called by background_solve(). + */ +int gt_add( + growTable* self, /**< a growTable*/ + long idx, /**< index at wich to add the data (in bytes). #_GT_END_ means the end of the currently written data*/ + void* data, /**< data to be added*/ + long sz /**< size of the data (in bytes)*/ + ) { + long ridx; + void *res; + void *nbuffer; + + /** - assumes the growTable is correctly initialized */ + + class_test(self->freeze == _TRUE_, + self->error_message, + "cannot add any more data in the growTable (freeze is on)"); + + if (idx==_GT_END_) { + ridx=self->csz; + } + else { + ridx=idx; + } + class_test(ridx<0, + self->error_message, + "Don't know what to do with idx=%ld",ridx); + + if (ridx+sz>self->sz) { + /** - test -> pass -> ok we need to grow */ + nbuffer=realloc(self->buffer,self->sz*_GT_FACTOR_); + class_test(nbuffer==NULL, + self->error_message, + "Cannot grow growTable"); + self->buffer=nbuffer; + self->sz=self->sz*_GT_FACTOR_; + } + + res=memcpy((void*) (self->buffer+ridx),(void*) data,(size_t) sz); + class_test(res!=self->buffer+ridx, + self->error_message, + "Cannot add data to growTable"); + self->csz=ridx+sz; + + return _SUCCESS_; +} + +/** + * Retrieve data from the growTable. + * + * Not called. + */ +int gt_retrieve( + growTable *self, /**< a growTable*/ + long idx, /**< index at wich to retrieve the data (in bytes).*/ + long sz, /**< size of the data (in bytes)*/ + void* data /**< OUTPUT : data must be allocated to ::sz bytes*/ + ) { + void *res; + + class_test(idx<0, + self->error_message, + "don't know what to do with idx=%ld",idx); + + class_test((idx>self->csz) || (idx+sz>self->csz), + self->error_message, + "not enough data in growTable"); + + res=memcpy(data,self->buffer+idx,sz); + class_test(res!=self->buffer+idx, + self->error_message, + "cannot retrieve data from the growTable"); + + return _SUCCESS_; +} + +/** + * Retrieve all data from the growTable. + * + * Not called. + */ +int gt_retrieveAll( + growTable *self, /**< a growTable*/ + void* data /**< OUTPUT : data must be allocated to the size of the growTable (see gt_getSize)*/ + ) { + return gt_retrieve(self,0,self->csz,data); +} + +/** + * returns the size of the growTable + * + * Not called. + */ +int gt_getSize( + growTable* self,/**< a growTable*/ + long *idx /**< OUTPUT : the size of the growTable ::self*/ + ) { + class_test(self->csz<0, + self->error_message, + "growTable does not make sense"); + *idx=self->csz; + return _SUCCESS_; +} + +/** + * returns a pointer on the data contained in the growTable. + * No Data can be added afterward !!!!! This is not for the faint of heart. + * + * Called by background_solve(). + */ +int gt_getPtr( + growTable* self, /**< a growTable*/ + void** ptr /**< OUTPUT : pointer on the data */ + ) { + self->freeze=_TRUE_; + *ptr=self->buffer; + + return _SUCCESS_; +} + + +/** + * free the growTable + * + * Called by background_solve(). + */ +int gt_free(growTable* self) { + free(self->buffer); + self->csz=-1; + self->sz=-1; + self->freeze=_FALSE_; /**< This line added by JL */ + + return _SUCCESS_; +} + diff --git a/class_old/tools/hermite3_interpolation_csource.h b/class_old/tools/hermite3_interpolation_csource.h new file mode 100644 index 00000000..0cfe0437 --- /dev/null +++ b/class_old/tools/hermite3_interpolation_csource.h @@ -0,0 +1,166 @@ +/** Hermite interpolation of order 3 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +int l = pHIS->l[lnum]; +#if defined (HERMITE_DO_PHI)|| defined (HERMITE_DO_D2PHI) +double ym=0; +#endif +double yp=0, dyp=0, x; +double z[2]={0.,0.}; +#ifdef HERMITE_DO_PHI +double a[3]={0.,0.}; +#endif +#ifdef HERMITE_DO_DPHI +double b[3]={0.,0.}; +#endif +#ifdef HERMITE_DO_D2PHI +double c[3]={0.,0.}; +double d2ym = 0, d3yp=0; +double cotKm=0,sinKm=0; +double sinKm2; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double dym=0; +double d2yp=0; +double cotKp=0,sinKp=0; +double sinKp2; +double *sinK = pHIS->sinK; +double *cotK = pHIS->cotK; +int K = pHIS->K; +double lxlp1 = l*(l+1.0); +double beta = pHIS->beta; +double beta2 = beta*beta; +#endif +double *xvec; +double xmin, xmax, deltax; +double left_border, right_border, next_border; +int j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +deltax = pHIS->delta_x; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; + +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(l, (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. +#if defined (HERMITE_DO_PHI) || defined (HERMITE_DO_D2PHI) + ym = yp; +#endif +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + dym = dyp; +#endif +#ifdef HERMITE_DO_D2PHI + d2ym = d2yp; + sinKm = sinKp; + cotKm = cotKp; +#endif + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#endif +#ifdef HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif + +#ifdef HERMITE_DO_PHI + a[0] = -dyp*deltax-2*ym+2*yp; + a[1] = dyp*deltax+ym-yp; +#endif +#ifdef HERMITE_DO_DPHI + b[0] = -d2yp*deltax-2*dym+2*dyp; + b[1] = d2yp*deltax+dym-dyp; +#endif +#ifdef HERMITE_DO_D2PHI + c[0] = -d3yp*deltax-2*d2ym+2*d2yp; + c[1] = d3yp*deltax+d2ym-d2yp; +#endif + } + //Evaluate polynomial: + z[0] = (x-left_border)/deltax; + z[1] = z[0]*z[0]; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a[0]*z[0]+a[1]*z[1])*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b[0]*z[0]+b[1]*z[1])*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c[0]*z[0]+c[1]*z[1])*phisign; +#endif + } + diff --git a/class_old/tools/hermite4_interpolation_csource.h b/class_old/tools/hermite4_interpolation_csource.h new file mode 100644 index 00000000..21fc2f8f --- /dev/null +++ b/class_old/tools/hermite4_interpolation_csource.h @@ -0,0 +1,163 @@ +/** Hermite interpolation of order 4 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +int l = pHIS->l[lnum]; +double ym=0, yp=0, dym=0, dyp=0, x; +double z[3]={0.,0.,0.}; +#ifdef HERMITE_DO_PHI +double a[3]={0.,0.,0.}; +#endif +#ifdef HERMITE_DO_DPHI +double b[3]={0.,0.,0.}; +#endif +#ifdef HERMITE_DO_D2PHI +double c[3]={0.,0.,0.}; +double d3ym=0, d3yp=0; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double *sinK = pHIS->sinK; +double *cotK = pHIS->cotK; +double cotKm=0,cotKp=0,sinKm=0,sinKp=0; +double sinKm2, sinKp2; +double d2ym = 0, d2yp=0; +int K = pHIS->K; +double lxlp1 = l*(l+1.0); +double beta = pHIS->beta; +double beta2 = beta*beta; +#endif +double *xvec; +double xmin, xmax, deltax; +double left_border, right_border, next_border; +int j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +deltax = pHIS->delta_x; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; + +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(l, (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. + ym = yp; + dym = dyp; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d2ym = d2yp; + sinKm = sinKp; + cotKm = cotKp; +#endif +#ifdef HERMITE_DO_D2PHI + d3ym = d3yp; +#endif + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#endif +#ifdef HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif + +#ifdef HERMITE_DO_PHI + a[0] = dym*deltax; + a[1] = -2*dym*deltax-dyp*deltax-3*ym+3*yp; + a[2] = dym*deltax+dyp*deltax+2*ym-2*yp; +#endif +#ifdef HERMITE_DO_DPHI + b[0] = d2ym*deltax; + b[1] = -2*d2ym*deltax-d2yp*deltax-3*dym+3*dyp; + b[2] = d2ym*deltax+d2yp*deltax+2*dym-2*dyp; +#endif +#ifdef HERMITE_DO_D2PHI + c[0] = d3ym*deltax; + c[1] = -2*d3ym*deltax-d3yp*deltax-3*d2ym+3*d2yp; + c[2] = d3ym*deltax+d3yp*deltax+2*d2ym-2*d2yp; +#endif + } + //Evaluate polynomial: + z[0] = (x-left_border)/deltax; + z[1] = z[0]*z[0]; + z[2] = z[1]*z[0]; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a[0]*z[0]+a[1]*z[1]+a[2]*z[2])*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b[0]*z[0]+b[1]*z[1]+b[2]*z[2])*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c[0]*z[0]+c[1]*z[1]+c[2]*z[2])*phisign; +#endif + } + diff --git a/class_old/tools/hermite6_interpolation_csource.h b/class_old/tools/hermite6_interpolation_csource.h new file mode 100644 index 00000000..6920a6cb --- /dev/null +++ b/class_old/tools/hermite6_interpolation_csource.h @@ -0,0 +1,176 @@ +/** Hermite interpolation of order 6 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. +*/ + +double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5; +double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2; +#ifdef HERMITE_DO_PHI +double a1=0, a2=0, a3=0, a4=0, a5=0; +#endif +#ifdef HERMITE_DO_DPHI +double b1=0, b2=0, b3=0, b4=0, b5=0; +#endif +#ifdef HERMITE_DO_D2PHI +double c1=0, c2=0, c3=0, c4=0, c5=0; +double d4ym=0, d4yp=0; +#endif +#if defined (HERMITE_DO_DPHI) || defined (HERMITE_DO_D2PHI) +double d3ym = 0, d3yp=0; +#endif +double beta, beta2, *xvec, *sinK, *cotK; +double xmin, xmax, deltax, deltax2, lxlp1; +double left_border, right_border, next_border; +int K, l, j, nx, current_border_idx=0; +double *Phi_l, *dPhi_l; +int phisign = 1, dphisign = 1; + +/** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. +*/ + +xvec = pHIS->x; +sinK = pHIS->sinK; +cotK = pHIS->cotK; +beta = pHIS->beta; +beta2 = beta*beta; +deltax = pHIS->delta_x; +deltax2 = deltax*deltax; +K = pHIS->K; +nx = pHIS->x_size; +Phi_l = pHIS->phi+lnum*nx; +dPhi_l = pHIS->dphi+lnum*nx; +l = pHIS->l[lnum]; +lxlp1 = l*(l+1.0); +xmin = xvec[0]; +xmax = xvec[nx-1]; + +left_border = xmax; +right_border = xmin; +next_border = xmin; + +for (j=0; jK==1) + ClosedModY(pHIS->l[lnum], (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. +#ifdef HERMITE_DO_PHI + Phi[j] = 0.0; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = 0.0; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = 0.0; +#endif + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. + ym = yp; + dym = dyp; + d2ym = d2yp; +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d3ym = d3yp; +#endif +#ifdef HERMITE_DO_D2PHI + d4ym = d4yp; +#endif + sinKm = sinKp; + cotKm = cotKp; + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); +#if defined HERMITE_DO_DPHI || defined HERMITE_DO_D2PHI + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); +#endif +#ifdef HERMITE_DO_D2PHI + d4yp = -2*cotKp*d3yp + d2yp*(K-beta2+(4+lxlp1)/sinKp2)+ + dyp*(-4*(1+lxlp1)*cotKp/sinKp2)+ + yp*(2*lxlp1/sinKp2*(2*cotKp*cotKp+1/sinKp2)); +#endif + +#ifdef HERMITE_DO_PHI + a1 = dym*deltax; + a2 = 0.5*d2ym*deltax2; + a3 = (-1.5*d2ym+0.5*d2yp)*deltax2-(6*dym+4*dyp)*deltax-10*(ym-yp); + a4 = (1.5*d2ym-d2yp)*deltax2+(8*dym+7*dyp)*deltax+15*(ym-yp); + a5 = (-0.5*d2ym+0.5*d2yp)*deltax2-3*(dym+dyp)*deltax-6*(ym-yp); +#endif +#ifdef HERMITE_DO_DPHI + b1 = d2ym*deltax; + b2 = 0.5*d3ym*deltax2; + b3 = (-1.5*d3ym+0.5*d3yp)*deltax2-(6*d2ym+4*d2yp)*deltax-10*(dym-dyp); + b4 = (1.5*d3ym-d3yp)*deltax2+(8*d2ym+7*d2yp)*deltax+15*(dym-dyp); + b5 = (-0.5*d3ym+0.5*d3yp)*deltax2-3*(d2ym+d2yp)*deltax-6*(dym-dyp); +#endif +#ifdef HERMITE_DO_D2PHI + c1 = d3ym*deltax; + c2 = 0.5*d4ym*deltax2; + c3 = (-1.5*d4ym+0.5*d4yp)*deltax2-(6*d3ym+4*d3yp)*deltax-10*(d2ym-d2yp); + c4 = (1.5*d4ym-d4yp)*deltax2+(8*d3ym+7*d3yp)*deltax+15*(d2ym-d2yp); + c5 = (-0.5*d4ym+0.5*d4yp)*deltax2-3*(d3ym+d3yp)*deltax-6*(d2ym-d2yp); +#endif + } + //Evaluate polynomial: + z = (x-left_border)/deltax; + z2 = z*z; + z3 = z2*z; + z4 = z2*z2; + z5 = z2*z3; +#ifdef HERMITE_DO_PHI + Phi[j] = (ym+a1*z+a2*z2+a3*z3+a4*z4+a5*z5)*phisign; +#endif +#ifdef HERMITE_DO_DPHI + dPhi[j] = (dym+b1*z+b2*z2+b3*z3+b4*z4+b5*z5)*dphisign; +#endif +#ifdef HERMITE_DO_D2PHI + d2Phi[j] = (d2ym+c1*z+c2*z2+c3*z3+c4*z4+c5*z5)*phisign; +#endif + } + diff --git a/class_old/tools/hyperspherical.c b/class_old/tools/hyperspherical.c new file mode 100644 index 00000000..5fd70108 --- /dev/null +++ b/class_old/tools/hyperspherical.c @@ -0,0 +1,1766 @@ +/** @file hyperspherical.c Documented hyperspherical bessel function module. + * + * Thomas Tram, 11.01.2013 + * + * This module computes hyperspherical Bessel functions. + */ + +#include "hyperspherical.h" + +int hyperspherical_HIS_create(int K, + double beta, + int nl, + int *lvec, + double xmin, + double xmax, + double sampling, + int l_WKB, + double phiminabs, + HyperInterpStruct *pHIS, + ErrorMsg error_message){ + /** Allocate storage for Hyperspherical Interpolation Structure (HIS). + Then, compute the values of Phi and dPhi and complete the interpolation + structure. + Change to accomodate shared memory approach: Allocate all memory in a + single call, and return the pointer as ppHIS. All pointers inside are + then relative to ppHIS. + */ + double deltax, beta2, lambda, x, xfwd; + double *sqrtK, *one_over_sqrtK,*PhiL; + int j, k, l, nx, lmax, l_recurrence_max; + int abort; + int current_chunk, index_x; + + beta2 = beta*beta; + lmax = lvec[nl-1]; + lambda = 2*_PI_/beta; + nx = (int) ((xmax-xmin)*sampling/lambda); + nx = MAX(nx,2); + deltax = (xmax-xmin)/(nx-1.0); + //fprintf(stderr,"dx=%e\n",deltax); + //fprintf(stderr,"%e %e\n",beta,sampling); + //Set scalar values: + pHIS->beta = beta; + pHIS->delta_x = deltax; + pHIS->l_size = nl; + pHIS->x_size = nx; + pHIS->K = K; + //Set pointervalues in pHIS: + + class_alloc(pHIS->l, sizeof(int)*nl,error_message); + class_alloc(pHIS->chi_at_phimin,sizeof(double)*nl,error_message); + class_alloc(pHIS->x,sizeof(double)*nx,error_message); + class_alloc(pHIS->sinK,sizeof(double)*nx,error_message); + class_alloc(pHIS->cotK,sizeof(double)*nx,error_message); + class_alloc(pHIS->phi,sizeof(double)*nx*nl,error_message); + class_alloc(pHIS->dphi,sizeof(double)*nx*nl,error_message); + + //Order needed for trig interpolation: (We are using Taylor's remainder theorem) + if (0.5*deltax*deltax < _TRIG_PRECISSION_) + pHIS->trig_order = 1; + else if ((pow(deltax,4)/24.0) < _TRIG_PRECISSION_) + pHIS->trig_order = 3; + else + pHIS->trig_order = 5; + + //Copy lvector: + for (j=0; jl[j] = lvec[j]; + } + //Allocate sqrtK, and PhiL: + class_alloc(sqrtK,(lmax+3)*sizeof(double),error_message); + class_alloc(one_over_sqrtK,(lmax+3)*sizeof(double),error_message); + //class_alloc(PhiL,(lmax+2)*sizeof(double),error_message); + + //Find l_WKB_min, the highest l in lvec where l=0; k--){ + l = lvec[k]; + if (lx[j] = x; + pHIS->sinK[j] = x; + pHIS->cotK[j] = 1.0/x; + } + for (l=0; l<=(lmax+2); l++){ + sqrtK[l] = beta; + one_over_sqrtK[l] = 1.0/sqrtK[l]; + } + break; + case 1: + xfwd = asin(sqrt(l_recurrence_max*(l_recurrence_max+1.0))/beta); + for (j=0; jx[j] = x; + pHIS->sinK[j] = sin(x); + pHIS->cotK[j] = 1.0/tan(x); + } + for (l=0; l<=(lmax+2); l++){ + sqrtK[l] = sqrt(beta2-l*l); + one_over_sqrtK[l] = 1.0/sqrtK[l]; + } + break; + case -1: + xfwd = asinh(sqrt(l_recurrence_max*(l_recurrence_max+1.0))/beta); + for (j=0; jx[j] = x; + pHIS->sinK[j] = sinh(x); + pHIS->cotK[j] = 1.0/tanh(x); + } + for (l=0; l<=(lmax+2); l++){ + sqrtK[l] = sqrt(beta2+l*l); + one_over_sqrtK[l] = 1.0/sqrtK[l]; + } + break; + default: + return _FAILURE_; + } + + int xfwdidx = (xfwd-xmin)/deltax; + //Calculate and assign Phi and dPhi values: + + abort = _FALSE_; + +#pragma omp parallel \ + shared(nx,pHIS,xfwd,K,l_recurrence_max,beta,sqrtK,one_over_sqrtK,lvec,nl,xfwdidx,abort,error_message) \ + private(j,PhiL,k,l,current_chunk,index_x) \ + firstprivate(lmax) + { + class_alloc_parallel(PhiL,(lmax+2)*sizeof(double)*_HYPER_CHUNK_,error_message); + + if ((K == 1) && ((int)(beta+0.2) == (lmax+1))) { + /** Take care of special case lmax = beta-1. + The routine below will try to compute + Phi_{lmax+1} which is not allowed. However, + the purpose is to calculate the derivative + Phi'_{lmax}, and the formula is correct if we set Phi_{lmax+1} = 0. + */ + PhiL[lmax+1] = 0.0; + lmax--; + } + +#pragma omp for schedule (dynamic) \ + + + for (j=0; jx[j], + pHIS->sinK[j], + pHIS->cotK[j], + sqrtK, + one_over_sqrtK, + PhiL); + //We have now populated PhiL at x, assign Phi and dPhi for all l in lvec: + for (k=0; k<=index_recurrence_max; k++){ + l = lvec[k]; + pHIS->phi[k*nx+j] = PhiL[l]; + pHIS->dphi[k*nx+j] = l*pHIS->cotK[j]*PhiL[l]-sqrtK[l+1]*PhiL[l+1]; + } + } + /** + for (j=0; jx+j, + pHIS->sinK+j, + pHIS->cotK+j, + current_chunk, + sqrtK, + one_over_sqrtK, + PhiL); + //We have now populated PhiL at x, assign Phi and dPhi for all l in lvec: + for (k=0; k<=index_recurrence_max; k++){ + l = lvec[k]; + for (index_x=0; index_xphi[k*nx+j+index_x] = PhiL[l*current_chunk+index_x]; + pHIS->dphi[k*nx+j+index_x] = l*pHIS->cotK[j+index_x]* + PhiL[l*current_chunk+index_x]- + sqrtK[l+1]*PhiL[(l+1)*current_chunk+index_x]; + } + } + } + + */ + +#pragma omp for schedule (dynamic) \ + + for (j=xfwdidx; jx+j, + pHIS->sinK+j, + pHIS->cotK+j, + current_chunk, + sqrtK, + one_over_sqrtK, + PhiL); + + //We have now populated PhiL at x, assign Phi and dPhi for all l in lvec: + for (k=0; k<=index_recurrence_max; k++){ + l = lvec[k]; + for (index_x=0; index_xphi[k*nx+j+index_x] = PhiL[l*current_chunk+index_x]; + pHIS->dphi[k*nx+j+index_x] = l*pHIS->cotK[j+index_x]* + PhiL[l*current_chunk+index_x]- + sqrtK[l+1]*PhiL[(l+1)*current_chunk+index_x]; + } + } + } + free(PhiL); + } + if (abort == _TRUE_) return _FAILURE_; + + free(sqrtK); + free(one_over_sqrtK); + + for (k=0; kchi_at_phimin+k,NULL); + } + + //hyperspherical_get_xmin(pHIS,1.e-4,phiminabs,pHIS->chi_at_phimin); + + return _SUCCESS_; +} + +size_t hyperspherical_HIS_size(int nl, int nx){ + return(sizeof(int)*nl+sizeof(double)*nl+3*sizeof(double)*nx+2*sizeof(double)*nx*nl); +} + +int hyperspherical_update_pointers(HyperInterpStruct *pHIS_local, + void * HIS_storage_shared){ + /** Assign pointers in pHIS: (Remember that pointer incrementation moves + the number of bytes taken up by 1 variable of the type that the + pointer points to. */ + int nx=pHIS_local->x_size; + int nl=pHIS_local->l_size; + pHIS_local->l = (int *) (HIS_storage_shared); + pHIS_local->chi_at_phimin = (double *) (pHIS_local->l+nl); + pHIS_local->x = pHIS_local->chi_at_phimin+nl; + pHIS_local->sinK = pHIS_local->x + nx; + pHIS_local->cotK = pHIS_local->sinK + nx; + pHIS_local->phi = pHIS_local->cotK +nx; + pHIS_local->dphi = pHIS_local->phi+nx*nl; + + return _SUCCESS_; +} + +int hyperspherical_HIS_free(HyperInterpStruct *pHIS, + ErrorMsg error_message){ + /** Free the Hyperspherical Interpolation Structure. */ + free(pHIS->l); + free(pHIS->chi_at_phimin); + free(pHIS->x); + free(pHIS->sinK); + free(pHIS->cotK); + free(pHIS->phi); + free(pHIS->dphi); + + return _SUCCESS_; +} + +int hyperspherical_Hermite_interpolation_vector(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double *xinterp, + double *Phi, + double *dPhi, + double *d2Phi) { + + /** Hermite interpolation of order 6 for Phi, dPhi, and d2Phi. When xinterp + is sorted (increasing), computations can be reused. On the other hand, + for a randomly called value, the routine is not much slower than a + routine optimised for this case. The more sorted the vector, the faster + the execution time. For closed case, the interpolation structure only + covers [safety;pi/2-safety]. The calling routine should respect this. + if sinK and cosK are not NULL, we will also interpolate them. + */ + + int do_function=_TRUE_, do_first_derivative=_TRUE_; + int do_second_derivative=_TRUE_, do_first_or_second_derivative=_TRUE_; + double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5; + double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2; + double d3ym = 0, d3yp=0, d4ym=0, d4yp=0; + double a1=0, a2=0, a3=0, a4=0, a5=0; + double b1=0, b2=0, b3=0, b4=0, b5=0; + double c1=0, c2=0, c3=0, c4=0, c5=0; + double beta, beta2, *xvec, *sinK, *cotK; + double xmin, xmax, deltax, deltax2, lxlp1; + double left_border, right_border, next_border; + int K, l, j, nx, current_border_idx=0; + double *Phi_l, *dPhi_l; + int phisign = 1, dphisign = 1; + + /** Set logical flags. The compiler should probably generate 2^3-1=7 + different functions, according to these flags. If not, maybe I should + do it. + */ + + + if (Phi==NULL) + do_function = _FALSE_; + else + do_function = _TRUE_; + if (dPhi == NULL) + do_first_derivative = _FALSE_; + else + do_first_derivative = _TRUE_; + if (d2Phi == NULL) + do_second_derivative = _FALSE_; + else + do_second_derivative = _TRUE_; + if ((do_first_derivative == _TRUE_)||(do_second_derivative == _TRUE_)) + do_first_or_second_derivative = _TRUE_; + else + do_first_or_second_derivative = _FALSE_; + + xvec = pHIS->x; + sinK = pHIS->sinK; + cotK = pHIS->cotK; + beta = pHIS->beta; + beta2 = beta*beta; + deltax = pHIS->delta_x; + deltax2 = deltax*deltax; + K = pHIS->K; + nx = pHIS->x_size; + Phi_l = pHIS->phi+lnum*nx; + dPhi_l = pHIS->dphi+lnum*nx; + l = pHIS->l[lnum]; + lxlp1 = l*(l+1.0); + xmin = xvec[0]; + xmax = xvec[nx-1]; + + left_border = xmax; + right_border = xmin; + next_border = xmin; + + for (j=0; jK==1) + ClosedModY(pHIS->l[lnum], (int)(pHIS->beta+0.2), &x, &phisign, &dphisign); + //Loop over output values + if ((xxmax)){ + //Outside interpolation region, set to zero. + if (do_function==_TRUE_) + Phi[j] = 0.0; + if (do_first_derivative==_TRUE_) + dPhi[j] = 0.0; + if (do_second_derivative==_TRUE_) + d2Phi[j] = 0.0; + continue; + } + if ((x>right_border)||(xnext_border)||(xcurrent_border but not next border: I have moved to next block. + current_border_idx++; + //printf("Current border index at else: %d\n",current_border_idx); + //Copy former right derivatives to left derivatives. + ym = yp; + dym = dyp; + d2ym = d2yp; + d3ym = d3yp; + d4ym = d4yp; + sinKm = sinKp; + cotKm = cotKp; + } + left_border = xvec[MAX(0,current_border_idx-1)]; + right_border = xvec[current_border_idx]; + next_border = xvec[MIN(nx-1,current_border_idx+1)]; + //Evaluate right derivatives and calculate coefficients: + cotKp = cotK[current_border_idx]; + sinKp = sinK[current_border_idx]; + sinKp2 = sinKp*sinKp; + yp = Phi_l[current_border_idx]; + dyp = dPhi_l[current_border_idx]; + d2yp = -2*dyp*cotKp+yp*(lxlp1/sinKp2-beta2+K); + if (do_first_or_second_derivative == _TRUE_){ + d3yp = -2*cotKp*d2yp-2*yp*lxlp1*cotKp/sinKp2+ + dyp*(K-beta2+(2+lxlp1)/sinKp2); + } + if (do_second_derivative == _TRUE_){ + d4yp = -2*cotKp*d3yp + d2yp*(K-beta2+(4+lxlp1)/sinKp2)+ + dyp*(-4*(1+lxlp1)*cotKp/sinKp2)+ + yp*(2*lxlp1/sinKp2*(2*cotKp*cotKp+1/sinKp2)); + } + if (do_function == _TRUE_){ + a1 = dym*deltax; + a2 = 0.5*d2ym*deltax2; + a3 = (-1.5*d2ym+0.5*d2yp)*deltax2-(6*dym+4*dyp)*deltax-10*(ym-yp); + a4 = (1.5*d2ym-d2yp)*deltax2+(8*dym+7*dyp)*deltax+15*(ym-yp); + a5 = (-0.5*d2ym+0.5*d2yp)*deltax2-3*(dym+dyp)*deltax-6*(ym-yp); + } + if (do_first_derivative==_TRUE_){ + b1 = d2ym*deltax; + b2 = 0.5*d3ym*deltax2; + b3 = (-1.5*d3ym+0.5*d3yp)*deltax2-(6*d2ym+4*d2yp)*deltax-10*(dym-dyp); + b4 = (1.5*d3ym-d3yp)*deltax2+(8*d2ym+7*d2yp)*deltax+15*(dym-dyp); + b5 = (-0.5*d3ym+0.5*d3yp)*deltax2-3*(d2ym+d2yp)*deltax-6*(dym-dyp); + } + if (do_second_derivative==_TRUE_){ + c1 = d3ym*deltax; + c2 = 0.5*d4ym*deltax2; + c3 = (-1.5*d4ym+0.5*d4yp)*deltax2-(6*d3ym+4*d3yp)*deltax-10*(d2ym-d2yp); + c4 = (1.5*d4ym-d4yp)*deltax2+(8*d3ym+7*d3yp)*deltax+15*(d2ym-d2yp); + c5 = (-0.5*d4ym+0.5*d4yp)*deltax2-3*(d3ym+d3yp)*deltax-6*(d2ym-d2yp); + } + } + //Evaluate polynomial: + z = (x-left_border)/deltax; + z2 = z*z; + z3 = z2*z; + z4 = z2*z2; + z5 = z2*z3; + if (do_function == _TRUE_) + Phi[j] = (ym+a1*z+a2*z2+a3*z3+a4*z4+a5*z5)*phisign; + if (do_first_derivative == _TRUE_) + dPhi[j] = (dym+b1*z+b2*z2+b3*z3+b4*z4+b5*z5)*dphisign; + if (do_second_derivative == _TRUE_) + d2Phi[j] = (d2ym+c1*z+c2*z2+c3*z3+c4*z4+c5*z5)*phisign; + //printf("x = %g, [%g, %g, %g]\n",x,Phi[j],dPhi[j],d2Phi[j]); + } + return _SUCCESS_; +} + +int hyperspherical_forwards_recurrence(int K, + int lmax, + double beta, + double x, + double sinK, + double cotK, + double * __restrict__ sqrtK, + double * __restrict__ one_over_sqrtK, + double * __restrict__ PhiL){ + int l; + PhiL[0] = 1.0/beta*sin(beta*x)/sinK; + PhiL[1] = PhiL[0]*(cotK-beta/tan(beta*x))*one_over_sqrtK[1]; + for (l=2; l<=lmax; l++){ + PhiL[l] = ((2*l-1)*cotK*PhiL[l-1]-PhiL[l-2]*sqrtK[l-1])*one_over_sqrtK[l]; + } + return _SUCCESS_; +} + +int hyperspherical_forwards_recurrence_chunk(int K, + int lmax, + double beta, + double * __restrict__ x, + double * __restrict__ sinK, + double * __restrict__ cotK, + int chunk, + double * __restrict__ sqrtK, + double * __restrict__ one_over_sqrtK, + double * __restrict__ PhiL){ + int l; + int index_x; + for (index_x=0; index_x 1.5*lmax) { + funcreturn = get_CF1(K,lmax,beta,cotK, &phipr1, &isign); + } + if (funcreturn == _FAILURE_) { + CF1_from_Gegenbauer(lmax,(int) (beta+0.2),sinK,cotK, &phipr1); + } + phi1 = 1.0; + } + else{ + get_CF1(K,lmax,beta,cotK, &phipr1, &isign); + phi1 = isign; + phipr1 *=phi1; + //printf("isign = %d, phi1 = %g, phipr1 = %g\n",isign,phi1,phipr1); + } + + PhiL[lmax] = phi1; + phi = phi1; + // phi_plus_1 = 1/sqrtK[lmax+1]*(lmax*cotK*phi1-phipr1); + phi_plus_1_times_sqrtK = lmax*cotK*phi1-phipr1; + + + int l_ini, l_align; + l_align = lmax-lmax%_HYPER_BLOCK_; + + // Bring l down to _HYPER_BLOCK_ aligned region: + for (l=lmax; l>l_align; l--){ + // phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )/sqrtK[l]; + phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )*one_over_sqrtK[l]; + phi_plus_1_times_sqrtK = phi*sqrtK[l]; + phi = phi_minus_1; + PhiL[l-1] = phi; + } + for (l_ini=l_align; l_ini>0; l_ini -= _HYPER_BLOCK_){ + for (l=l_ini; l>(l_ini-_HYPER_BLOCK_); l--){ + // phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )/sqrtK[l]; + phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )*one_over_sqrtK[l]; + phi_plus_1_times_sqrtK = phi*sqrtK[l]; + phi = phi_minus_1; + PhiL[l-1] = phi; + } + if (fabs(phi)>_HYPER_OVERFLOW_){ + phi *= _ONE_OVER_HYPER_OVERFLOW_; + phi_plus_1_times_sqrtK *= _ONE_OVER_HYPER_OVERFLOW_; + //Rescale whole Phi vector until this point: + for (k=l; k<=lmax; k++) + PhiL[k] *=_ONE_OVER_HYPER_OVERFLOW_; + } + } + + /** + for (l=lmax; l>=1; l--){ + // phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )/sqrtK[l]; + phi_minus_1 = ( (2*l+1)*cotK*phi-phi_plus_1_times_sqrtK )*one_over_sqrtK[l]; + phi_plus_1_times_sqrtK = phi*sqrtK[l]; + phi = phi_minus_1; + PhiL[l-1] = phi; + if (fabs(phi)>_HYPER_OVERFLOW_){ + // + phi *= _ONE_OVER_HYPER_OVERFLOW_; + phi_plus_1_times_sqrtK *= _ONE_OVER_HYPER_OVERFLOW_; + //Rescale whole Phi vector until this point: + for (k=l-1; k<=lmax; k++) + PhiL[k] *=_ONE_OVER_HYPER_OVERFLOW_; + } + } + */ + scaling = phi0/phi; + for (k=0; k<=lmax; k++) + PhiL[k] *= scaling; + return _SUCCESS_; +} + +int hyperspherical_backwards_recurrence_chunk(int K, + int lmax, + double beta, + double * __restrict__ x, + double * __restrict__ sinK, + double * __restrict__ cotK, + int chunk, + double * __restrict__ sqrtK, + double * __restrict__ one_over_sqrtK, + double * __restrict__ PhiL){ + double phi0, phi1, phipr1; + int l, k, isign; + int funcreturn = _FAILURE_; + int index_x; + double scalevec[_HYPER_CHUNK_]={0}; + + for (index_x=0; index_x 1.5*lmax) { + funcreturn = get_CF1(K,lmax,beta,cotK[index_x], &phipr1, &isign); + } + if (funcreturn == _FAILURE_) { + CF1_from_Gegenbauer(lmax,(int) (beta+0.2),sinK[index_x],cotK[index_x], &phipr1); + } + phi1 = 1.0; + } + else{ + get_CF1(K,lmax,beta,cotK[index_x], &phipr1, &isign); + phi1 = isign; + phipr1 *=phi1; + } + + PhiL[lmax*chunk+index_x] = phi1; + PhiL[(lmax-1)*chunk+index_x] = one_over_sqrtK[lmax]* + ((lmax+1)*cotK[index_x]*phi1+phipr1); + + } + for (l=lmax-2; l>=0; l--){ + //Use recurrence Phi_{l} = --Phi_{l+1} + -- Phi_{l+2} + for (index_x=0; index_x_HYPER_OVERFLOW_){ + //Rescale whole Phi vector until this point. + //Create scale vector: + for (index_x=0; index_x_HYPER_OVERFLOW_){ + Gkm2 = Gkm1/_HYPER_OVERFLOW_; + G = G/_HYPER_OVERFLOW_; + Gkm1 = G; + } + else{ + Gkm2 = Gkm1; + Gkm1 = G; + } + } + //Derivative. Gkm2 is in fact Gkm1.. + dG = (-n*x*G+(n+2*alpha-1)*Gkm2)/(1.0-x*x); + } + //%Phi = G; + //%dPhi = l*coty.*G-siny.*dG; + *CF = l*cotK-sinK*dG/G; + return _SUCCESS_; +} + + int hyperspherical_WKB_vec(int l, + double beta, + double * __restrict__ sinK_vec, + int size_sinK_vec, + double * __restrict__ Phi){ + double e, w, w2, alpha, alpha2, t; + double S, Q, C, argu, Ai; + int airy_sign = 1, phisign = 1; + int index_sinK; + double one_over_alpha; + double one_over_alpha2; + double one_over_sqrt_one_plus_alpha2; + double sqrt_alpha; + double one_over_e; + double one_over_beta; + double cscK; + double pow_argu_onesixth; + + one_over_e = sqrt(l*(l+1.0)); + e = 1.0/one_over_e; + alpha = beta*e; + alpha2 = alpha*alpha; + one_over_alpha = 1.0/alpha; + one_over_alpha2 = one_over_alpha*one_over_alpha; + one_over_sqrt_one_plus_alpha2 = 1.0/sqrt(1.0+alpha2); + sqrt_alpha=sqrt(alpha); + one_over_beta = 1.0/beta; + + for (index_sinK=0; index_sinK cscK){ + S = alpha*log((sqrt(w2-1.0)+sqrt(w2+alpha2))*one_over_sqrt_one_plus_alpha2)+ + atan(one_over_alpha*sqrt((w2+alpha2)/(w2-1.0)))-M_PI_2; + airy_sign = -1; + } + else{ + t = sqrt(1.0-w2)/sqrt(1.0+w2*one_over_alpha2); + S = atanh(t)-alpha*atan(t*one_over_alpha); + airy_sign = 1; + } + argu = 1.5*S*one_over_e; + Q = cscK*cscK-alpha2; + C = 0.5*sqrt_alpha*one_over_beta; + pow_argu_onesixth = pow(argu,1.0/6.0); + Ai = airy_cheb_approx(airy_sign*pow(pow_argu_onesixth,4)); + Phi[index_sinK] = phisign*2.0*_SQRT_PI_*C*pow_argu_onesixth*pow(fabs(Q),-0.25)*Ai*cscK; + } + return _SUCCESS_; +} + + +int hyperspherical_WKB(int K,int l,double beta,double y, double *Phi){ + double e, w, w2, alpha, alpha2, CscK, ytp, t; + double S, Q, C, argu, Ai; + int airy_sign = 1, phisign = 1, dphisign = 1, intbeta; + double ldbl = l; + + if (K==1){ + //Limit range to [0; pi/2]: + intbeta = (int)(beta+0.4); //Round to nearest integer (just to be sure) + ClosedModY(l, intbeta, &y, &phisign, &dphisign); + } + e = 1.0/sqrt(ldbl*(ldbl+1.0)); + alpha = beta*e; + if (K==-1){ + CscK = 1.0/sinh(y); + ytp = asinh(1.0/alpha); + } + else if (K==1){ + CscK = 1.0/sin(y); + ytp = asin(1.0/alpha); + } + else{ + return _FAILURE_; + } + w = alpha/CscK; + w2 = w*w; + alpha2 = alpha*alpha; + if (K==-1){ + if (y>ytp){ + S = alpha*log((sqrt(w2-1.0)+sqrt(w2+alpha2))/sqrt(1.0+alpha2))+ + atan(1.0/alpha*sqrt((w2+alpha2)/(w2-1.0)))-0.5*_PI_; + airy_sign = -1; + } + else{ + t = sqrt(1.0-w2)/sqrt(1.0+w2/alpha2); + S = atanh(t)-alpha*atan(t/alpha); + airy_sign = 1; + } + } + else if (K==1){ + if (y>ytp){ + t = sqrt(1-w2/alpha2)/sqrt(w2-1.0); + S = atan(t)+alpha*atan(1.0/(t*alpha))-0.5*_PI_; + airy_sign = -1; + } + else{ + S = atanh(sqrt(1.0-w2)/sqrt(1.0-w2/alpha2))- + alpha*log((sqrt(alpha2-w2)+sqrt(1.0-w2))/sqrt(alpha2-1.0)); + airy_sign = 1; + } + } + argu = 3.0*S/(2.0*e); + Q = CscK*CscK-alpha2; + C = 0.5*sqrt(alpha)/beta; + Ai = airy_cheb_approx(airy_sign*pow(argu,2.0/3.0)); + *Phi = phisign*2.0*sqrt(_PI_)*C*pow(argu,1.0/6.0)*pow(fabs(Q),-0.25)*Ai*CscK; + return _SUCCESS_; +} + + + +double airy_cheb_approx(double z){ + double Ai; + if (z<=-7){ + Ai = coef1(z); + return Ai; + } + if (z<=0){ + Ai = coef2(z); + return Ai; + } + if (z<7){ + Ai = coef3(z); + return Ai; + } + Ai = coef4(z); + return Ai; +} + +double coef1(double z){ + const double A[5] = {1.1282427601,-0.6803534e-4,0.16687e-6,-0.128e-8,0.2e-10}; + const double B[5] = {0.7822108673e-1,-0.6895649e-4,0.32857e-6,-0.37e-8,0.7e-10}; + double x,y,t,Ai,zeta,theta,sintheta,costheta,FA,FB; + + x = -z; + zeta = _TWO_OVER_THREE_*x*sqrt(x); + theta = zeta+0.25*_PI_; + sintheta = sin(theta); + costheta = cos(theta); + + y = pow(7.0/x,3);//y = (7.0/x)*(7.0/x)*(7.0/x); + FA = cheb(y,5,A); + FB = cheb(y,5,B)/zeta; + + t = pow(x,-0.25); + Ai = t*(sintheta*FA-costheta*FB); + //Bi = t*(costheta*FA+sintheta*FB); + return Ai; +} + +double coef2(double z){ + const double A[17] = {0.11535880704,0.6542816649e-1,0.26091774326,0.21959346500, + 0.12476382168,-0.43476292594,0.28357718605,-0.9751797082e-1, + 0.2182551823e-1,-0.350454097e-2,0.42778312e-3, + -0.4127564e-4,0.323880e-5,-0.21123e-6,0.1165e-7, + -0.55e-9,0.2e-10}; + const double B[16] = {0.10888288487,-0.17511655051,0.13887871101,-0.11469998998, + 0.22377807641,-0.18546243714,0.8063565186e-1, + -0.2208847864e-1,0.422444527e-2,-0.60131028e-3, + 0.6653890e-4,-0.590842e-5,0.43131e-6,-0.2638e-7, + 0.137e-8,-0.6e-10}; + //Ej = 3^(-j/3)/Gamma(j/3); + double E1 = 0.355028053887817, E2 = 0.258819403792807; + double x,FA,FB,Ai; + x = -(z/7.0)*(z/7.0)*(z/7.0); + FA = E1*cheb(x,17,A); + FB = E2*z*cheb(x,16,B); + Ai = FA-FB; + //Bi = sqrt(3)*(FA+FB); + return Ai; +} +double coef3(double z){ + const double A[20] = {1.2974695794,-0.20230907821, + -0.45786169516,0.12953331987,0.6983827954e-1, + -0.3005148746e-1,-0.493036334e-2,0.390425474e-2, + -0.1546539e-4,-0.32193999e-3,0.3812734e-4,0.1714935e-4, + -0.416096e-5,-0.50623e-6,0.26346e-6,-0.281e-8, + -0.1122e-7,0.120e-8,0.31e-9,-0.7e-10}; + /** +double B[25]={0.47839902387,-0.6881732880e-1,0.20938146768, + -0.3988095886e-1,0.4758441683e-1,-0.812296149e-2, + 0.462845913e-2,0.70010098e-3,-0.75611274e-3, + 0.68958657e-3,-0.33621865e-3,0.14501668e-3,-0.4766359e-4, + 0.1251965e-4,-0.193012e-5,-0.19032e-6,0.29390e-6, + -0.13436e-6,0.4231e-7,-0.967e-8,0.135e-8,0.7e-10, + -0.12e-9,0.4e-10,-0.1e-10}; + */ + double x,EX,EY,Ai; + x = z/7.0; + EX = exp(1.75*z); + EY = 1.0/EX; + + Ai = EY*cheb(x,20,A); + //Bi = EX*cheb(x,25,&(B[0])); + return Ai; +} + +double coef4(double z){ + const double A[7]={0.56265126169,-0.76136219e-3,0.765252e-5,-0.14228e-6, + 0.380e-8,-0.13e-9,0.1e-10}; + /** double B[7]={1.1316635302,0.166141673e-02,0.1968882e-04,0.47047e-06, + 0.1769e-7,0.94e-9,0.6e-10}; + */ + double x,Y,t,zeta,EX,EY,Ai; + + Y = z*sqrt(z); + zeta = 2.0/3.0*Y; + EX = exp(zeta); + EY = 1.0/EX; + x = 7*sqrt(7)/Y; + t = pow(z,-0.25); + + Ai = t*EY*cheb(x, 7, A); + //Bi = t*EX*cheb(x, 7, &(B[0])); + return Ai; +} + +double cheb(double x, int n, const double A[]){ + double b,d,u,y,c,F; + int j; + b = 0.0; + d = A[n-1]; + u = 2*x-1.0; + y = 2*u; + + for (j=(n-1);j>1;j--){ + c=b; + b=d; + d=y*b-c+A[j-1]; + } + F = u*d-b+0.5*A[0]; + return F; +} + + +double get_value_at_small_phi(int K,int l,double beta,double Phi){ + double nu, lhs, alpha, xval; + + nu = l+0.5; + lhs = 1.0/nu*log(2*Phi*nu); + alpha = -2*lhs/5.0*(1.0+2.0*cosh(1.0/3.0*acosh(1.0+375/(16.0*lhs*lhs)))); + xval = nu/cosh(alpha)/beta; + //Correct for geometry: + if (K==1) + xval *= asin(l/beta)/(l/beta); + else if(K==-1) + xval *= asinh(l/beta)/(l/beta); + return xval; +} + +int ClosedModY(int l, int beta, double *y, int * phisign, int * dphisign){ + + *phisign = 1; + *dphisign = 1; + + + while (*y > _TWOPI_) + *y -= _TWOPI_; + + if ((*y) > _PI_){ + *y = 2.0*_PI_-(*y); + //phisign *= pow(-1,l) + if (l%2==1) //l is odd + *phisign = -*phisign; + else //l is even + *dphisign = -*dphisign; + } + if ((*y)>0.5*_PI_){ + *y = _PI_-(*y); + //phisign *= pow(-1,beta-l-1) + if ((beta-l)%2==0) //beta-l-1 odd + *phisign = -*phisign; + else //beta-l-1 even + *dphisign = -*dphisign; + } + return _SUCCESS_; +} + + +int hyperspherical_get_xmin(HyperInterpStruct *pHIS, + double xtol, + double phiminabs, + double *xmin){ + int left_index, right_index, index_l, j; + int nl = pHIS->l_size; + int nx = pHIS->x_size; + int REFINE=10; + double x[REFINE]; + double Phi[REFINE]; + double *phivec = pHIS->phi; + double *xvec = pHIS->x; + double xleft, xright; + + for (index_l=0; index_lphiminabs) + break; + } + if (right_index==0){ + xmin[index_l] = xvec[0]; + //printf("special case: xmin = %.16e for index_l=%d\n",xmin[index_l],index_l); + continue; + } + if (right_index==nx){ + xmin[index_l] = xvec[nx-1]; + //printf("special case: xmin = %.16e for index_l=%d\n",xmin[index_l],index_l); + continue; + } + left_index = right_index-1; + xleft = xvec[left_index]; + xright = xvec[right_index]; + xmin[index_l] = xright; + while ((xright-xleft)>xtol){ + //Create interpolation vector + //printf("Refining\n"); + for (j=0; jphiminabs) + break; + } + left_index = right_index-1; + xleft = x[left_index]; + xright = x[right_index]; + xmin[index_l] = xright; + } + //printf("xmin = %.16e\n",xmin[index_l]); + } + return _SUCCESS_; +} + +int hyperspherical_get_xmin_from_Airy(int K, + int l, + double beta, + double xtol, + double phiminabs, + double *xmin, + int *fevals){ + double xold, xtp=0, xleft, xright, xnew; + double Fnew, Fold, Fleft, Fright; + double delx, lambda; + double AIRY_SAFETY = 1e-6; + struct WKB_parameters wkbstruct; + //Start searching from turning point: + switch (K){ + case -1: + xtp = asinh(sqrt(l*(l+1.))/beta); + break; + case 0: + xtp = sqrt(l*(l+1.))/beta; + break; + case 1: + xtp = asin(sqrt(l*(l+1.))/beta); + break; + } + wkbstruct.K = K; + wkbstruct.l = l; + wkbstruct.beta = beta; + wkbstruct.phiminabs = phiminabs; + + xnew = 0.99*xtp; + + Fnew = PhiWKB_minus_phiminabs(xnew,&wkbstruct); + *fevals = (*fevals)+1; + + lambda = 2*_PI_/(beta+5.0); + if (Fnew>0) + delx = -lambda; + else + delx = 0.25*lambda; + + do { + //printf("In the loop: xnew = %g, Fnew=%g, Fold=%g\n",xnew,Fnew,Fold); + xold = xnew; + Fold = Fnew; + xnew += delx; + if (xnew=0.0){ + *xmin = xnew; + return _SUCCESS_; + } + else{ + break; + } + } + Fnew = PhiWKB_minus_phiminabs(xnew,&wkbstruct); + *fevals = (*fevals)+1; + } while (SIGN(Fnew)==(SIGN(Fold))); + + if (Fnew<=0.0){ + xleft = xnew; + Fleft = Fnew; + xright = xold; + Fright = Fold; + } + else{ + xleft = xold; + Fleft = Fold; + xright = xnew; + Fright = Fnew; + } + + fzero_ridder(PhiWKB_minus_phiminabs, + xleft, + xright, + xtol, + &wkbstruct, + &Fleft, + &Fright, + xmin, + fevals); + + return _SUCCESS_; +} + +double PhiWKB_minus_phiminabs(double x, void *param){ + double phiwkb; + struct WKB_parameters *wkbparam = param; + hyperspherical_WKB(wkbparam->K,wkbparam->l,wkbparam->beta,x, &phiwkb); + return(fabs(phiwkb)-wkbparam->phiminabs); +} + +int fzero_ridder(double (*func)(double, void *), + double x1, + double x2, + double xtol, + void *param, + double *Fx1, + double *Fx2, + double *xzero, + int *fevals){ + /**Using Ridders' method, return the root of a function func known to + lie between x1 and x2. The root, returned as zriddr, will be found to + an approximate accuracy xtol. + */ + int j,MAXIT=1000; + double ans,fh,fl,fm,fnew,s,xh,xl,xm,xnew; + if ((Fx1!=NULL)&&(Fx2!=NULL)){ + fl = *Fx1; + fh = *Fx2; + } + else{ + fl=(*func)(x1,param); + fh=(*func)(x2,param); + *fevals = (*fevals)+2; + } + if ((fl > 0.0 && fh < 0.0) || (fl < 0.0 && fh > 0.0)) { + xl=x1; + xh=x2; + ans=-1.11e11; + for (j=1;j<=MAXIT;j++) { + xm=0.5*(xl+xh); + fm=(*func)(xm,param); + *fevals = (*fevals)+1; + s=sqrt(fm*fm-fl*fh); + if (s == 0.0){ + *xzero = ans; + //printf("Success 1\n"); + return _SUCCESS_; + } + xnew=xm+(xm-xl)*((fl >= fh ? 1.0 : -1.0)*fm/s); + if (fabs(xnew-ans) <= xtol) { + *xzero = ans; + return _SUCCESS_; + } + ans=xnew; + fnew=(*func)(ans,param); + *fevals = (*fevals)+1; + if (fnew == 0.0){ + *xzero = ans; + //printf("Success 2, ans=%g\n",ans); + return _SUCCESS_; + } + if (NRSIGN(fm,fnew) != fm) { + xl=xm; + fl=fm; + xh=ans; + fh=fnew; + } else if (NRSIGN(fl,fnew) != fl) { + xh=ans; + fh=fnew; + } else if (NRSIGN(fh,fnew) != fh) { + xl=ans; + fl=fnew; + } else return _FAILURE_; + if (fabs(xh-xl) <= xtol) { + *xzero = ans; + // printf("Success 3\n"); + return _SUCCESS_; + } + } + fprintf(stderr,"zriddr exceed maximum iterations"); + return _FAILURE_; + } + else { + if (fl == 0.0) return x1; + if (fh == 0.0) return x2; + fprintf(stderr,"root must be bracketed in zriddr."); + return _FAILURE_; + } + fprintf(stderr,"Failure in Ridder\n"); + return _FAILURE_; + } + +int HypersphericalExplicit(int K,int l, double beta,double x, double *Phi){ + /** Explicit formulae for the Hyperspherical Besselfunctions of order +l<=9. + phi_tilde = gam * beta * cos(x*beta) + delta * sin(x*beta), + and Phi = phi_tilde *cscK/sqrt(NK). Gamma and delta are +polynomials in + beta and cscK, containing only even powers. + */ + double NK,xbeta,gamma,delta,CotK; + double beta2,beta4,beta6,beta8,beta12,beta16; + double CscK,CscK2,CscK4,CscK6,CscK8; + //NK = prod(beta^2-K*(0:l).^2); + beta2 = beta*beta; + xbeta = x*beta; + if (K==-1){ + CotK = 1.0/tanh(x); + CscK = 1.0/sinh(x); + } + else if (K==1){ + CotK = 1.0/tan(x); + CscK = 1.0/sin(x); + } + else{ + CotK = 1.0/x; + CscK = CotK; + } + + //Calculate polynomials: + switch (l){ + case 0: + gamma = 0; + delta = 1; + NK = beta2; + break; + case 1: + gamma = -1; + delta = CotK; + NK = beta2*(beta2 - K); + break; + case 2: + beta4 = beta2*beta2; + CscK2 =CscK*CscK; + gamma = -3*CotK; + delta = -beta2 + 3*CscK2 - 2*K; + NK = beta2*(4.0 + beta4 - 5.0*beta2*K); + break; + case 3: + beta4 = beta2*beta2; + CscK2 =CscK*CscK; + gamma = beta2-15*CscK2+11*K; + delta = CotK*(-6*beta2 + 15*CscK2 - 6*K); + NK = beta2*(49*beta2 + beta2*beta4 - 36*K - 14*beta4*K); + break; + case 4: + beta4 = beta2*beta2; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; + gamma = CotK*(10*beta2-105*CscK2+50*K); + delta = 24 + beta4 + 105*CscK4 + CscK2*(-45*beta2 - 120*K) + 35*beta2*K; + NK = beta2*(576 + 273*beta4 + beta4*beta4 - 10*beta2*(82 + 3*beta4)*K); + break; + case 5: + beta2 = beta*beta; beta4 = beta2*beta2; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; + gamma = -274-beta4+105*beta2*CscK2-945*CscK4-85*beta2*K+1155*CscK2*K; + delta = CotK*(120 + 15*beta4 + 945*CscK4 + CscK2*(-420*beta2 - 840*K) + + 225*beta2*K); + NK = beta2*(beta2*(21076.0 + 1023*beta4 + beta4*beta4) - + 5.0*(2880.0 + 11*beta4*(139 + beta4))*K); + break; + case 6: + beta2 = beta*beta; beta4 = beta2*beta2; beta6 = beta4*beta2; beta8 = beta4*beta4; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; CscK6 = CscK4*CscK2; + gamma = CotK*(-1764 - 21*beta4 + 1260*beta2*CscK2 - 10395*CscK4 - + 735*beta2*K + 10080*CscK2*K); + delta = -1624*beta2 - beta6 + 10395*CscK6 + CscK4*(-4725*beta2 - 17010*K) - + 720*K - 175*beta4*K + CscK2*(7560 + 210*beta4 + 6090*beta2*K); + NK = beta2*(518400 + beta8*beta4 + 296296*beta4 + 3003*beta8 - + 13*beta2*(59472 + 3421*beta4 + 7*beta8)*K); + break; + case 7: + beta2 = beta*beta; beta4 = beta2*beta2; beta6 = beta4*beta2; beta8 = beta4*beta4; + beta12 = beta6*beta6; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; CscK6 = CscK4*CscK2; + gamma = 6769*beta2 + beta6 - 112392*CscK2 - 378*beta4*CscK2 + + 17325*beta2*CscK4 - 135135*CscK6 + 13068*K + 322*beta4*K - + 23310*beta2*CscK2*K + 232155*CscK4*K; + delta = CotK*(-13132*beta2 - 28*beta6 + 135135*CscK6 + + CscK4*(-62370*beta2 - 187110*K) - 5040*K - 1960*beta4*K + + CscK2*(68040 + 3150*beta4 + 64890*beta2*K)); + NK = beta2*(beta2*(38402064 + beta6*beta6 + 2475473*beta4 + 7462*beta8) - + 20*(1270080 + 7*beta12 + 764582*beta4 + 9581*beta8)*K); + break; + case 8: + beta2 = beta*beta; beta4 = beta2*beta2; beta6 = beta4*beta2; beta8 = beta4*beta4; + beta12 = beta6*beta6; beta16 = beta8*beta8; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; CscK6 = CscK4*CscK2; CscK8 = CscK4*CscK4; + gamma = CotK*(67284*beta2 + 36*beta6 - 1191960*CscK2 - 6930*beta4*CscK2 + + 270270*beta2*CscK4 - 2027025*CscK6 + 109584*K + 4536*beta4*K - + 297990*beta2*CscK2*K + 2972970*CscK4*K); + delta = 40320 + 22449*beta4 + beta8 + 2027025*CscK8 + + CscK6*(-945945*beta2 - 4324320*K) + 118124*beta2*K + 546*beta6*K + + CscK4*(2993760 + 51975*beta4 + 1694385*beta2*K) + + CscK2*(-879480*beta2 - 630*beta6 - 725760*K - 72450*beta4*K); + NK = beta2*(1625702400 + 16422*beta12 + beta16 + 1017067024*beta4 + 14739153*beta8 - + 68*beta2*(36516672 + 3*beta12 + 2554734*beta4 + 9841*beta8)*K); + break; + case 9: + beta2 = beta*beta; beta4 = beta2*beta2; beta6 = beta4*beta2; beta8 = beta4*beta4; + beta12 = beta6*beta6; beta16 = beta8*beta8; + CscK2 = CscK*CscK; CscK4 = CscK2*CscK2; CscK6 = CscK4*CscK2; CscK8 = CscK4*CscK4; + gamma = -1026576 - 63273*beta4 - beta8 + 4830210*beta2*CscK2 + + 990*beta6*CscK2 - 55945890*CscK4 - 135135*beta4*CscK4 + + 4729725*beta2*CscK6 - 34459425*CscK8 - 723680*beta2*K - 870*beta6*K + + 14933160*CscK2*K + 194040*beta4*CscK2*K - 8783775*beta2*CscK4*K + + 76351275*CscK6*K; + delta = CotK*(362880 + 269325*beta4 + 45*beta8 + 34459425*CscK8 + + CscK6*(-16216200*beta2 - 64864800*K) + 1172700*beta2*K + 9450*beta6*K + + CscK4*(38918880 + 945945*beta4 + 24999975*beta2*K) + + CscK2*(-10866240*beta2 - 13860*beta6 - 7983360*K - 1094940*beta4*K)); + NK = beta2*(beta2*(202759531776.0 + 32946*beta12 + beta16 + 15088541896.0*beta4 + 68943381.0*beta8) - + 5*(26336378880.0 + 19*beta4*(893321712.0 + 3*beta12 + 14395719.0*beta4 + 21046.0*beta8))*K); + break; + default: + *Phi = 0.0; + //Failure + return _FAILURE_; + } + beta2 = beta*beta; + NK = beta*beta; + int n; + for (n=1; n<=l; n++) + NK *=(beta*beta-K*n*n); + + *Phi = (gamma*beta*cos(xbeta)+delta*sin(xbeta))*CscK/sqrt(NK); + return _SUCCESS_; +} + +int hyperspherical_get_xmin_from_approx(int K, + int l, + double nu, + double ignore1, + double phiminabs, + double *xmin, + int *ignore2){ + + double l_plus_half; + double lhs; + double alpha; + double ldbl = l; + double x; + + l_plus_half = l+0.5; + lhs = 1.0/l_plus_half*log(2*phiminabs*l_plus_half); + //Using Chebyshev cubic root, much cleaner: + alpha = -2.0*lhs/5.0*(1.0+2.0*cosh(1.0/3.0*acosh(1.0+375.0/(16.0*lhs*lhs)))); + x = l_plus_half/cosh(alpha)/nu; + if (K==-1){ + //%Correct for open case: + x *= asinh(ldbl/nu)/(ldbl/nu); + //...and fudge for small nu: + x *=((nu+0.4567)/(nu+1.24)-2.209e-3); + } + else if(K==1){ + //Correct for closed case if possible + x *= asin(ldbl/nu)/(ldbl/nu); + } + *xmin = x; + return _SUCCESS_; +} + +/** Generate the 2^3-1 non-trivial versions of the functions + hyperspherical_Hermite3_interpolation_vectorXXX(), + hyperspherical_Hermite4_interpolation_vectorXXX() and + hyperspherical_Hermite6_interpolation_vectorXXX() using the + preprocessor. Apologise in advance, but speed for this function + is important and it is better than manual copy-paste. +*/ +int hyperspherical_Hermite3_interpolation_vector_Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite3_interpolation_vector_dPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite3_interpolation_vector_d2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_D2PHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite3_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite3_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_D2PHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite3_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} + +int hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double *Phi, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite3_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_dPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_d2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_D2PHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_D2PHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite4_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} + +int hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double *Phi, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite4_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_dPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_d2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_D2PHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * dPhi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * Phi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_D2PHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} +int hyperspherical_Hermite6_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} + +int hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS, + int nxi, + int lnum, + double * xinterp, + double *Phi, + double * dPhi, + double * d2Phi, + ErrorMsg error_message) { +#undef HERMITE_DO_PHI +#undef HERMITE_DO_DPHI +#undef HERMITE_DO_D2PHI +#define HERMITE_DO_PHI +#define HERMITE_DO_DPHI +#define HERMITE_DO_D2PHI +#include "hermite6_interpolation_csource.h" + return _SUCCESS_; +} + diff --git a/class_old/tools/parser.c b/class_old/tools/parser.c new file mode 100644 index 00000000..e830fc5f --- /dev/null +++ b/class_old/tools/parser.c @@ -0,0 +1,677 @@ +#include "parser.h" + +int parser_read_file( + char * filename, + struct file_content * pfc, + ErrorMsg errmsg + ){ + FILE * inputfile; + char line[_LINE_LENGTH_MAX_]; + int counter; + int is_data; + FileArg name; + FileArg value; + + class_open(inputfile,filename,"r",errmsg); + + counter = 0; + while (fgets(line,_LINE_LENGTH_MAX_,inputfile) != NULL) { + class_call(parser_read_line(line,&is_data,name,value,errmsg),errmsg,errmsg); + if (is_data == _TRUE_) counter++; + } + + class_test(counter == 0, + errmsg, + "No readable input in file %s",filename); + + class_call(parser_init(pfc,counter,filename,errmsg), + errmsg, + errmsg); + + rewind(inputfile); + + counter = 0; + while (fgets(line,_LINE_LENGTH_MAX_,inputfile) != NULL) { + class_call(parser_read_line(line,&is_data,name,value,errmsg),errmsg,errmsg); + if (is_data == _TRUE_) { + strcpy(pfc->name[counter],name); + strcpy(pfc->value[counter],value); + pfc->read[counter]=_FALSE_; + counter++; + } + } + + fclose(inputfile); + + return _SUCCESS_; + +} + +int parser_init( + struct file_content * pfc, + int size, + char * filename, + ErrorMsg errmsg + ) { + + if (size > 0) { + pfc->size=size; + class_alloc(pfc->filename,(strlen(filename)+1)*sizeof(char),errmsg); + strcpy(pfc->filename,filename); + class_alloc(pfc->name,size*sizeof(FileArg),errmsg); + class_alloc(pfc->value,size*sizeof(FileArg),errmsg); + class_alloc(pfc->read,size*sizeof(short),errmsg); + } + + return _SUCCESS_; +} + +int parser_free( + struct file_content * pfc + ) { + + if (pfc->size > 0) { + free(pfc->name); + free(pfc->value); + free(pfc->read); + free(pfc->filename); + } + + return _SUCCESS_; +} + +int parser_read_line( + char * line, + int * is_data, + char * name, + char * value, + ErrorMsg errmsg + ) { + + char * phash; + char * pequal; + char * left; + char * right; + + /* check that there is an '=' */ + + pequal=strchr(line,'='); + if (pequal == NULL) {*is_data = _FALSE_; return _SUCCESS_;} + + /* if yes, check that there is not an '#' before the '=' */ + + phash=strchr(line,'#'); + if ((phash != NULL) && (phash-pequal<2)) {*is_data = _FALSE_; return _SUCCESS_;} + + /* get the name, i.e. the block before the '=' */ + + left=line; + while (left[0]==' ') { + left++; + } + + right=pequal-1; + while (right[0]==' ') { + right--; + } + + if (right-left < 0) {*is_data = _FALSE_; return _SUCCESS_;} + + class_test(right-left+1 >= _ARGUMENT_LENGTH_MAX_, + errmsg, + "name starting by '%s' too long; shorten it or increase _ARGUMENT_LENGTH_MAX_",strncpy(name,left,(_ARGUMENT_LENGTH_MAX_-1))); + + strncpy(name,left,right-left+1); + name[right-left+1]='\0'; + + /* get the value, i.e. the block after the '=' */ + + left = pequal+1; + while (left[0]==' ') { + left++; + } + + if (phash == NULL) + right = line+strlen(line)-1; + else + right = phash-1; + + while (right[0]<=' ') { + right--; + } + + if (right-left < 0) {*is_data = _FALSE_; return _SUCCESS_;} + + class_test(right-left+1 >= _ARGUMENT_LENGTH_MAX_, + errmsg, + "value starting by '%s' too long; shorten it or increase _ARGUMENT_LENGTH_MAX_",strncpy(value,left,(_ARGUMENT_LENGTH_MAX_-1))); + + strncpy(value,left,right-left+1); + value[right-left+1]='\0'; + + *is_data = _TRUE_; + + return _SUCCESS_; + +} + +int parser_read_int( + struct file_content * pfc, + char * name, + int * value, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* read parameter value. If this fails, return an error */ + + class_test(sscanf(pfc->value[index],"%d",value) != 1, + errmsg, + "could not read value of parameter %s in file %s\n",name,pfc->filename); + + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + return _SUCCESS_; + +} + +int parser_read_double( + struct file_content * pfc, + char * name, + double * value, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* read parameter value. If this fails, return an error */ + + class_test(sscanf(pfc->value[index],"%lg",value) != 1, + errmsg, + "could not read value of parameter %s in file %s\n",name,pfc->filename); + + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + return _SUCCESS_; + +} + +int parser_read_double_and_position( + struct file_content * pfc, + char * name, + double * value, + int * position, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* read parameter value. If this fails, return an error */ + + class_test(sscanf(pfc->value[index],"%lg",value) != 1, + errmsg, + "could not read value of parameter %s in file %s\n",name,pfc->filename); + + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + * position = index; + + return _SUCCESS_; + +} + +int parser_read_string( + struct file_content * pfc, + char * name, + FileArg * value, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* read parameter value. */ + + strcpy(*value,pfc->value[index]); + + /* Set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + return _SUCCESS_; + +} + +int parser_read_list_of_doubles( + struct file_content * pfc, + char * name, + int * size, + double ** pointer_to_list, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + char * string; + char * substring; + FileArg string_with_one_value; + + double * list; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* count number of comas and compute size = number of comas + 1 */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + string = substring+1; + } while(substring != NULL); + + *size = i; + + /* free and re-allocate array of values */ + class_alloc(list,*size*sizeof(double),errmsg); + *pointer_to_list = list; + + /* read one double between each comas */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + if (substring == NULL) { + strcpy(string_with_one_value,string); + } + else { + strncpy(string_with_one_value,string,(substring-string)); + string_with_one_value[substring-string]='\0'; + } + class_test(sscanf(string_with_one_value,"%lg",&(list[i-1])) != 1, + errmsg, + "could not read %dth value of list of parameters %s in file %s\n", + i, + name, + pfc->filename); + string = substring+1; + } while(substring != NULL); + + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + return _SUCCESS_; + +} + +int parser_read_list_of_integers( + struct file_content * pfc, + char * name, + int * size, + int ** pointer_to_list, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + char * string; + char * substring; + FileArg string_with_one_value; + + int * list; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* count number of comas and compute size = number of comas + 1 */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + string = substring+1; + } while(substring != NULL); + + *size = i; + + /* free and re-allocate array of values */ + class_alloc(list,*size*sizeof(int),errmsg); + *pointer_to_list = list; + + /* read one integer between each comas */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + if (substring == NULL) { + strcpy(string_with_one_value,string); + } + else { + strncpy(string_with_one_value,string,(substring-string)); + string_with_one_value[substring-string]='\0'; + } + class_test(sscanf(string_with_one_value,"%d",&(list[i-1])) != 1, + errmsg, + "could not read %dth value of list of parameters %s in file %s\n", + i, + name, + pfc->filename); + string = substring+1; + } while(substring != NULL); + + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + + * found = _TRUE_; + pfc->read[index] = _TRUE_; + + /* check for multiple entries of the same parameter. If another occurence is found, + return an error. */ + + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + + /* if everything proceeded normally, return with 'found' flag equal to true */ + + return _SUCCESS_; + +} + +int parser_read_list_of_strings( + struct file_content * pfc, + char * name, + int * size, + char ** pointer_to_list, + int * found, + ErrorMsg errmsg + ) { + int index; + int i; + + char * string; + char * substring; + FileArg string_with_one_value; + + char * list; + + /* intialize the 'found' flag to false */ + + * found = _FALSE_; + + /* search parameter */ + + index=0; + while ((index < pfc->size) && (strcmp(pfc->name[index],name) != 0)) + index++; + + /* if parameter not found, return with 'found' flag still equal to false */ + + if (index == pfc->size) + return _SUCCESS_; + + /* count number of comas and compute size = number of comas + 1 */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + string = substring+1; + } while(substring != NULL); + + *size = i; + + /* free and re-allocate array of values */ + class_alloc(list,*size*sizeof(FileArg),errmsg); + *pointer_to_list = list; + + /* read one string between each comas */ + i = 0; + string = pfc->value[index]; + do { + i ++; + substring = strchr(string,','); + if (substring == NULL) { + strcpy(string_with_one_value,string); + } + else { + strncpy(string_with_one_value,string,(substring-string)); + string_with_one_value[substring-string]='\0'; + } + strcpy(list+(i-1)*_ARGUMENT_LENGTH_MAX_,string_with_one_value); + //Insert EOL character: + *(list+i*_ARGUMENT_LENGTH_MAX_-1) = '\n'; + string = substring+1; + } while(substring != NULL); + /* if parameter read correctly, set 'found' flag to true, as well as the flag + associated with this parameter in the file_content structure */ + * found = _TRUE_; + pfc->read[index] = _TRUE_; + /* check for multiple entries of the same parameter. If another occurence is + found, + return an error. */ + for (i=index+1; i < pfc->size; i++) { + class_test(strcmp(pfc->name[i],name) == 0, + errmsg, + "multiple entry of parameter %s in file %s\n",name,pfc->filename); + } + /* if everything proceeded normally, return with 'found' flag equal to true */ + return _SUCCESS_; +} + +int parser_cat( + struct file_content * pfc1, + struct file_content * pfc2, + struct file_content * pfc3, + ErrorMsg errmsg + ) { + + int i; + + class_test(pfc1->size < 0., + errmsg, + "size of file_content structure probably not initialized properly\n"); + + class_test(pfc2->size < 0., + errmsg, + "size of file_content structure probably not initialized properly\n"); + + if (pfc1->size == 0) { + class_alloc(pfc3->filename,(strlen(pfc2->filename)+1)*sizeof(char),errmsg); + sprintf(pfc3->filename,"%s",pfc2->filename); + } + if (pfc2->size == 0) { + class_alloc(pfc3->filename,(strlen(pfc1->filename)+1)*sizeof(char),errmsg); + sprintf(pfc3->filename,"%s",pfc1->filename); + } + if ((pfc1->size !=0) && (pfc2->size != 0)) { + class_alloc(pfc3->filename,(strlen(pfc1->filename)+strlen(pfc2->filename)+5)*sizeof(char),errmsg); + sprintf(pfc3->filename,"%s or %s",pfc1->filename,pfc2->filename); + } + + pfc3->size = pfc1->size + pfc2->size; + class_alloc(pfc3->value,pfc3->size*sizeof(FileArg),errmsg); + class_alloc(pfc3->name,pfc3->size*sizeof(FileArg),errmsg); + class_alloc(pfc3->read,pfc3->size*sizeof(short),errmsg); + + for (i=0; i < pfc1->size; i++) { + strcpy(pfc3->value[i],pfc1->value[i]); + strcpy(pfc3->name[i],pfc1->name[i]); + pfc3->read[i]=pfc1->read[i]; + } + + for (i=0; i < pfc2->size; i++) { + strcpy(pfc3->value[i+pfc1->size],pfc2->value[i]); + strcpy(pfc3->name[i+pfc1->size],pfc2->name[i]); + pfc3->read[i+pfc1->size]=pfc2->read[i]; + } + + return _SUCCESS_; + +} diff --git a/class_old/tools/quadrature.c b/class_old/tools/quadrature.c new file mode 100644 index 00000000..4c728889 --- /dev/null +++ b/class_old/tools/quadrature.c @@ -0,0 +1,839 @@ +/******************************************/ +/* Quadrature Sampling Strategy for CLASS */ +/* 10/12 2010 */ +/* Thomas Tram */ +/******************************************/ +#include "quadrature.h" + +int get_qsampling(double *x, + double *w, + int *N, + int N_max, + double rtol, + double *qvec, + int qsiz, + int (*test)(void * params_for_function, double q, double *psi), + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg) { + + /* This routine returns the fewest possible number of abscissas and weights under + the requirement that a test function folded with the neutrino distribution function + can be integrated to an accuracy of rtol. If the distribution function is Fermi-Dirac + or close, a Laguerre quadrature formula is often the best choice. + + This function combines two completely different strategies: Adaptive Gauss-Kronrod + quadrature and Laguerres quadrature formula. */ + + int i, NL=2,NR,level,Nadapt=0,NLag,NLag_max,Nold=NL; + int adapt_converging=_FALSE_,Laguerre_converging=_FALSE_,combined_converging=_FALSE_; + double y,y1,y2,I,Igk,err,ILag,*b,*c; + qss_node *root,*root_comb; + double I_comb,I_atzero,I_atinf,I_comb2; + int N_comb=0,N_comb_lag=16,N_comb_leg=4; + double a_comb,b_comb; + double q_leg[4],w_leg[4]; + double q_lag[N_comb_lag],w_lag[N_comb_lag]; + char method_chosen[40]; + double qmin=0., qmax=0., qmaxm1=0.; + double *wcomb2=NULL,delq; + double Itot=0.0; + int zeroskip=0; + + /* Set roots and weights for Gauss-Legendre 4 point rule: */ + q_leg[3] = sqrt((3.0+2.0*sqrt(6.0/5.0))/7.0); + q_leg[2] = sqrt((3.0-2.0*sqrt(6.0/5.0))/7.0); + q_leg[1] = -q_leg[2]; + q_leg[0] = -q_leg[3]; + w_leg[3] = (18.0-sqrt(30.0))/36.0; + w_leg[2] = (18.0+sqrt(30.0))/36.0; + w_leg[1] = w_leg[2]; + w_leg[0] = w_leg[3]; + + /* Allocate storage for Laguerre coefficients: */ + class_alloc(b,N_max*sizeof(double),errmsg); + class_alloc(c,N_max*sizeof(double),errmsg); + /* If a vector of q values has been passed, use it: */ + if ((qvec!=NULL)&&(qsiz>1)){ + qmin = qvec[0]; + qmax = qvec[qsiz-1]; + qmaxm1 = qvec[qsiz-2]; + } + else{ + qvec = NULL; + } + + /* First do the adaptive quadrature - this will also give the value of the integral: */ + gk_adapt(&root,(*test),(*function), params_for_function, + rtol*1e-4, 1, 0.0, 1.0, _TRUE_, errmsg); + /* Do a leaf count: */ + leaf_count(root); + /* I can get the integral now: */ + I = get_integral(root, 1); + //printf("I = %le |%le, used points: %d\n",I,I-1.0,15*root->leaf_childs); + Itot += I; + + /* Starting from the top, move down in levels until tolerance is met: */ + for(level=root->leaf_childs; level>=1; level--){ + Igk = get_integral(root,level); + err = I-Igk; + if (fabs(err/Itot)0){ + /* Reduce tree to the found level:*/ + reduce_tree(root,level); + /* Count the new leafs: */ + leaf_count(root); + /* I know know how many function evaluations is + required by the adaptively sampled grid:*/ + Nadapt = 15*root->leaf_childs; + /* The adaptive routine could not recieve required precision + using less than the required maximal number of points.*/ + if (Nadapt <= N_max) adapt_converging = _TRUE_; + } + + + /* Combined adaptive quadrature and Laguerre rescaled quadrature: */ + if(qvec!=NULL){ + /* Evaluate [0;qmin] using 4 point Gauss-Legendre rule: */ + (*function)(params_for_function,qmin,&y2); + for(i=0,I_atzero=0.0; ileaf_childs; level>=1; level--){ + I_comb = get_integral(root_comb,level); + //printf("%le + %le + %le = %le | %le\n", + // I_atzero,I_atinf,I_comb,I_comb+I_atinf+I_atzero,I_comb+I_atinf+I_atzero-1.0); + I_comb +=(I_atinf+I_atzero); + err = I-I_comb; + if (fabs(err/Itot)0){ + reduce_tree(root_comb,level); + /* Count the new leafs: */ + leaf_count(root_comb); + N_comb = 15*root_comb->leaf_childs+N_comb_lag+N_comb_leg; + if (N_comb <= N_max) combined_converging = _TRUE_; + } + + /* Do the second combined quadrature: Same as above, but with trapezoidal rule + using the given q grid: */ + class_alloc(wcomb2,qsiz*sizeof(double),errmsg); + I_comb2 = 0.0; + for(i=0; i1) { + NLag = (NL+NR)/2; + /* Evaluate integral: */ + compute_Laguerre(x,w,NLag,0.0,b,c,_TRUE_); + ILag = 0.0; + for (i=0; i",workx[i]); + x[top] = workx[i]; + w[top--] = workw[i]; + } + } + //printf("\n top=%d, bot=%d, left=%d, right=%d\n",top,bot,startidx,endidx); + x[top] = pivot; + w[top] = workw[endidx]; + /* Recursive call: */ + sort_x_and_w(x,w,workx,workw,startidx,bot-1); + sort_x_and_w(x,w,workx,workw,top+1,endidx); + return _SUCCESS_; + } + +} + +int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite){ + /* x and w should be exactly 15*root_node->leafchilds, and a leaf count should have + been performed. Or perhaps I just use the fact that a leaf won't have children. + Nah, let me use the leaf-count then. */ + int k; + if (node->leaf_childs==1){ + for(k=0;k<15;k++){ + x[*ind] = node->x[k]; + w[*ind] = node->w[k]; + if (isindefinite == _TRUE_){ + (*ind)--; + } + else{ + (*ind)++; + } + } + } + else{ + /* Do recursive call: */ + get_leaf_x_and_w(node->left,ind,x,w,isindefinite); + get_leaf_x_and_w(node->right,ind,x,w,isindefinite); + } + return _SUCCESS_; +} + +int reduce_tree(qss_node *node, int level){ + /* Reduce the tree to a given level. Make all nodes with + node->leaf_childs==level into leafs. + If we call reduce_tree(root,1), nothing happens.*/ + if(node->leaf_childs==level){ + burn_tree(node->left); + burn_tree(node->right); + node->left = NULL; + node->right = NULL; + } + else if(node->leaf_childs>level){ + /* else try to see if children nodes can be simplified: */ + reduce_tree(node->left,level); + reduce_tree(node->right,level); + } + /* If called on a node which has leaf_childsleft!=NULL) burn_tree(node->left); + if (node->right!=NULL) burn_tree(node->right); + + if (node->x!=NULL) free(node->x); + if (node->w!=NULL) free(node->w); + free(node); + } + return _SUCCESS_; +} + +int leaf_count(qss_node *node){ + /* Count the amount of leafs under a given node and write the number in the node. */ + /* We call recursively, until a node is a leaf - then we add the numbers on our + way back:*/ + if (node->left!=NULL){ + /* This is not a leaf, do recursive call: */ + leaf_count(node->left); + leaf_count(node->right); + node->leaf_childs = node->left->leaf_childs + node->right->leaf_childs; + return _SUCCESS_; + } + else{ + /* This is a leaf, by definition leaf_childs = 1: */ + node->leaf_childs = 1; + return _SUCCESS_; + } +} + +double get_integral(qss_node *node, int level){ + /* Traverse the tree and return the estimate of the integral at a given level. + level 1 is the best estimate. */ + double IL,IR; + /* An updated leaf_count is assumed. */ + if (node->leaf_childs<=level){ + return node->I; + } + else{ + IL = get_integral(node->left, level); + IR = get_integral(node->right, level); + /* Combine the integrals: */ + return (IL+IR); + } +} + + + +int gk_adapt( + qss_node** node, + int (*test)(void * params_for_function, double q, double *psi), + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + double tol, + int treemode, + double a, + double b, + int isindefinite, + ErrorMsg errmsg){ + /* Do adaptive Gauss-Kronrod quadrature, while building the + recurrence tree. If treemode!=0, store x-values and weights aswell. + At first call, a and b should be 0 and 1 if isdefinite==_TRUE_. */ + double mid; + /* Allocate current node: */ + class_alloc(*node,sizeof(qss_node),errmsg); + if (treemode==0){ + (*node)->x = NULL; + (*node)->w = NULL; + } + else{ + class_alloc((*node)->x,15*sizeof(double),errmsg); + class_alloc((*node)->w,15*sizeof(double),errmsg); + } + (*node)->left = NULL; (*node)->right = NULL; + + gk_quad((*test), (*function), params_for_function, *node, a, b, isindefinite); + if ((fabs((*node)->err/(*node)->I) < tol)||(tol>=1.0)){ + /* Stop recursion and return. tol>=1.0 in case of I=0 infinite recursion */ + return _SUCCESS_; + } + else{ + /* Call gk_adapt recursively on children:*/ + mid = 0.5*(a+b); + //printf("<-%g,%g,%g,%g",mid,tol,(*node)->err,(*node)->I); + gk_adapt(&((*node)->left),(*test),(*function), params_for_function, 1.5*tol, + treemode, a, mid, isindefinite, errmsg); + //printf("%g->",mid); + gk_adapt(&((*node)->right),(*test),(*function), params_for_function, 1.5*tol, + treemode, mid, b, isindefinite, errmsg); + /* Update integral and error in this node and return: */ + /* Actually, it is more convenient just to keep the nodes own estimate of the + integral for our purposes. + (*node)->I = (*node)->left->I + (*node)->right->I; + (*node)->err = sqrt(pow(node->left->err,2)+pow(node->right->err,2)); + */ + return _SUCCESS_; + } +} + +int compute_Hermite(double *x, double *w, int N, int alpha, double *b, double *c){ + int NLag,i; + double alpha_Lag; + + NLag = N/2; + /* In case N is uneven, zero the N'th weight:*/ + w[N-1] = 0.0; + alpha_Lag = (alpha-1.0)/2.0; + + /* Compute the positive roots and weights (up to some simple manipulation): */ + compute_Laguerre(x+NLag,w+NLag,NLag,alpha_Lag,b,c,_FALSE_); + + /* Do manipulations:*/ + for(i=NLag; i<2*NLag; i++){ + x[i] = sqrt(x[i]); + w[i] *=0.5; + } + + /* Set the negative roots and weights:*/ + for(i=0; ix and node->w is allocated, store values: */ + if (node->x!=NULL) node->x[i] = x; + if (node->w!=NULL) node->w[i] = wk; + /* If i is uneven, update Gauss integral: */ + if ((i%2)==1){ + j = (i-1)/2; + /* Transform weight according to linear transformation: */ + wg = 0.5*(b-a)*w_g[j]; + if (isindefinite == _TRUE_){ + /* Transform weight according to non-linear transformation x = 1/t -1: */ + wg = wg/(t*t); + } + /* Update integral: */ + Ig +=wg*y*y2; + } + } + node->err = pow(200*fabs(Ik-Ig),1.5); + node->I = Ik; + return _SUCCESS_; +} + +/** + * This routine computes the weights and abscissas of a Gauss-Legendre quadrature between -1 and 1 + * + * @param mu Input/output: Vector of cos(beta) values + * @param w8 Input/output: Vector of quadrature weights + * @param n Input : Number of quadrature points + * @param tol Input : tolerance on each mu + * + * From Numerical recipes + **/ + +int quadrature_gauss_legendre( + double *mu, + double *w8, + int n, + double tol, + ErrorMsg error_message) { + + int m,j,i,counter; + double z1,z,pp,p3,p2,p1; + + m=(n+1)/2; + for (i=1;i<=m;i++) { + z=cos(_PI_*((double)i-0.25)/((double)n+0.5)); + counter=0; + do { + p1=1.0; + p2=0.0; + for (j=1;j<=n;j++) { + p3=p2; + p2=p1; + p1=((2.0*j-1.0)*z*p2-(j-1.0)*p3)/j; + } + pp=n*(z*p1-p2)/(z*z-1.0); + z1=z; + z=z1-p1/pp; + counter++; + class_test(counter == _MAX_IT_, + error_message, + "maximum number of iteration reached: increase either _MAX_IT_ or tol\n"); + } while (fabs(z-z1) > tol); + mu[i-1]=-z; + mu[n-i]=z; + w8[i-1]=2.0/((1.0-z*z)*pp*pp); + w8[n-i]=w8[i-1]; + + } + return _SUCCESS_; +} + +int quadrature_in_rectangle( + double xl, + double xr, + double yl, + double yr, + int *n, + double ** x, + double ** y, + double ** w, + ErrorMsg error_message) { + + + double xl_tile,xr_tile,yl_tile,yr_tile; + int N; + + N=24; + xl_tile = xl; + xr_tile = xr; + yl_tile = yl; + yr_tile = yr; + + *n = N; + + + class_alloc(*x,sizeof(double)*N,error_message); + class_alloc(*y,sizeof(double)*N,error_message); + class_alloc(*w,sizeof(double)*N,error_message); + class_call(cubature_order_eleven(xl_tile, + xr_tile, + yl_tile, + yr_tile, + *x+0, + *y+0, + *w+0, + error_message), + error_message, + error_message); + + + return _SUCCESS_; +} + + + +int cubature_order_eleven( + double xl, + double xr, + double yl, + double yr, + double *x, + double *y, + double *w, + ErrorMsg error_message){ + + double wi[6]={0.48020763350723814563e-01, + 0.66071329164550595674e-01, + 0.97386777358668164196e-01, + 0.21173634999894860050e+00, + 0.22562606172886338740e+00, + 0.35115871839824543766e+00}; + double xi[6]={0.98263922354085547295e+00, + 0.82577583590296393730e+00, + 0.18858613871864195460e+00, + 0.81252054830481310049e+00, + 0.52532025036454776234e+00, + 0.41658071912022368274e-01}; + double yi[6]={0.69807610454956756478e+00, + 0.93948638281673690721e+00, + 0.95353952820153201585e+00, + 0.31562343291525419599e+00, + 0.71200191307533630655e+00, + 0.42484724884866925062e+00}; + + int idx,i; + double a1,a2,b1,b2; + + a1 = 2./(xr-xl); + a2 = 2./(yr-yl); + b1 = 1.-2*xr/(xr-xl); + b2 = 1.-2*yr/(yr-yl); + + for (i=0,idx=0; i<6; i++,idx++){ + // Upper right corner: + x[idx] = (xi[i]-b1)/a1; + y[idx] = (yi[i]-b2)/a2; + w[idx] = wi[i]/a1/a2; + } + for (i=0,idx=6; i<6; i++,idx++){ + // Upper left corner: + x[idx] = (-yi[i]-b1)/a1; + y[idx] = (xi[i]-b2)/a2; + w[idx] = wi[i]/a1/a2; + } + for (i=0,idx=12; i<6; i++,idx++){ + // Lower left corner: + x[idx] = (-xi[i]-b1)/a1; + y[idx] = (-yi[i]-b2)/a2; + w[idx] = wi[i]/a1/a2; + } + for (i=0,idx=18; i<6; i++,idx++){ + // Lower right corner: + x[idx] = (yi[i]-b1)/a1; + y[idx] = (-xi[i]-b2)/a2; + w[idx] = wi[i]/a1/a2; + } + + + + return _SUCCESS_; +} + diff --git a/class_old/tools/sparse.c b/class_old/tools/sparse.c new file mode 100644 index 00000000..2c8246fb --- /dev/null +++ b/class_old/tools/sparse.c @@ -0,0 +1,628 @@ +/****************************************/ +/* Sparse Matrix algorithms for CLASS */ +/* 15/11 2010 */ +/* Thomas Tram */ +/****************************************/ +/* This module is used for solving sparse linear systems, arising + when doing Newton iterations in evolver_ndf15 with a sparse Jacobian. + The LU factorization is a left-looking algorithm based on the algorithms + presented in "Direct Methods for Sparse Linear Systems", ISBN 978-0-898716-13-9. + The primary modification is the ability to refactor a matrix, based on an + earlier factorization. The routine column_grouping calculates the 'first fit' + column grouping of a sparse matrix, which is used for evaluating the Jacobian + with far fewer function evaluations.*/ + +#include "common.h" +#include "sparse.h" +int sp_mat_alloc(sp_mat** A, int ncols, int nrows, int maxnz, ErrorMsg error_message){ + int ncp = ncols+1; + class_alloc((*A),sizeof(sp_mat),error_message); + class_alloc((*A)->Ax,maxnz*sizeof(double),error_message); + class_alloc((*A)->Ai,maxnz*sizeof(int),error_message); + class_alloc((*A)->Ap,(ncp*sizeof(int)),error_message); + (*A)->ncols = ncols; + (*A)->nrows = nrows; + (*A)->maxnz = maxnz; + return _SUCCESS_; +} + +int sp_mat_free(sp_mat *A){ + free(A->Ax); + free(A->Ai); + free(A->Ap); + free(A); + return _SUCCESS_; +} + +int sp_num_alloc(sp_num** N, int n, ErrorMsg error_message){ + int maxnz, k; + class_alloc((*N),sizeof(sp_num),error_message); + maxnz = n*(n+1); + maxnz /=2; + (*N)->n = n; + class_call(sp_mat_alloc(&((*N)->L), n, n, maxnz, error_message), + error_message,error_message); + class_call(sp_mat_alloc(&((*N)->U), n, n, maxnz, error_message), + error_message,error_message); + class_alloc((*N)->xi,n*sizeof(int*),error_message); + /* I really want xi to be a vector of pointers to vectors. */ + class_alloc((*N)->xi[0],n*n*sizeof(int),error_message); + for (k=1;kxi[k] = (*N)->xi[k-1]+n; + /*Assign pointers to rows.*/ + class_alloc((*N)->topvec,n*sizeof(int),error_message); + class_alloc((*N)->pinv,n*sizeof(int),error_message); + class_alloc((*N)->p,n*sizeof(int),error_message); + /* Has to be n+1 because sp_amd uses it for storage:*/ + class_alloc((*N)->q,(n+1)*sizeof(int),error_message); + class_alloc((*N)->w,n*sizeof(double),error_message); + class_alloc((*N)->wamd,(8*(n+1))*sizeof(int),error_message); + return _SUCCESS_; +} + +int sp_num_free(sp_num *N){ + sp_mat_free(N->L); + sp_mat_free(N->U); + free(N->xi[0]); + free(N->xi); + free(N->topvec); + free(N->pinv); + free(N->p); + free(N->q); + free(N->w); + free(N->wamd); + free(N); + return _SUCCESS_; +} + +int reachr(sp_mat *G, sp_mat *B,int k, int *xik,int *pinv){ + int p, n, top, *Bp, *Bi, *Gp; + n=G->ncols; Bp = B->Ap; Bi = B->Ai;Gp = G->Ap; + top = n; + for (p=Bp[k];pAp, *Gi=G->Ai; + jnew = pinv[j]; + SPMARK(Gp,j); + if (jnew>=0){ /*We should consider the jnew column.*/ + p1 = SPUNFLIP(Gp[jnew]); /*Get true column pointers of neighbours:*/ + p2 = SPUNFLIP(Gp[jnew+1]); + for(p=p1; pAp; Gi = G->Ai; Gx = G->Ax; + Bp = B->Ap; Bi = B->Ai; Bx = B->Ax; + n = G->ncols; + + for (p=top; pncols; q = N->q; + Li = N->L->Ai; Lp = N->L->Ap; Lx = N->L->Ax; + Ui = N->U->Ai; Up = N->U->Ap; Ux = N->U->Ax; + lnz = 0; unz = 0; + x = N->w; pinv = N->pinv; pvec = N->p; + for (i=0; iL, A, col, N->xi[k], pinv); + N->topvec[k] = top; + sp_splsolve(N->L, A, col, N->xi[k], top, x, pinv); + /* Find pivot: */ + ipiv = -1; + a = -1; + for(p=top; pxi[k][p]; + if (pinv[i]<0){ + t = fabs(x[i]); + if (t>a){ + a = t; + ipiv = i; + } + } + else{ + Ui[unz] = pinv[i]; + Ux[unz] = x[i]; + unz++; + } + } + if ((ipiv == -1)||(a<=0)) return _FAILURE_; + if ((pinv[col]<0) && (fabs(x[col])>=a*pivtol)) ipiv = col; + /* Divide by pivot: */ + pivot = x[ipiv]; + Ui[unz] = k; + Ux[unz] = pivot; + unz++; + pinv[ipiv] = k; + pvec[k] = ipiv; + Li[lnz] = ipiv; + Lx[lnz] = 1.0; + lnz++; + for (p=top; pxi[k][p]; + if (pinv[i]<0){ + Li[lnz] = i; + Lx[lnz] = x[i]/pivot; + lnz++; + } + x[i] = 0; + } + } + /* Finalize: */ + Lp[n] = lnz; + Up[n] = unz; + for(p=0; pn; + /* permute b and initialize x:*/ + for (j=0; jpinv[j]] = b[j]; + /* lower solve: */ + Ap = N->L->Ap; Ai = N->L->Ai; Ax = N->L->Ax; + for (j=0; jU->Ap; Ai = N->U->Ai; Ax = N->U->Ax; + for (j=n-1; j>=0; j--){ + x[j] /=Ax[Ap[j+1]-1]; + for (p=Ap[j];pq!=NULL){ + /* We must permute once more..*/ + w = N->w; + for(j=0;jq[j]] = w[j]; + } + return _SUCCESS_; +} + +int sp_refactor(sp_num *N, sp_mat *A){ + double pivot, *Lx, *Ux, *x; + int *Lp, *Li, *Up, *Ui, *pinv, *pvec, *q; + int n, ipiv, k, top, p, i, col, lnz, unz; + n = A->ncols; + Li = N->L->Ai; Lp = N->L->Ap; Lx = N->L->Ax; + Ui = N->U->Ai; Up = N->U->Ap; Ux = N->U->Ax; + q = N->q; + lnz = 0; unz = 0; + x = N->w; pinv = N->pinv; pvec = N->p; + for (i=0; itopvec[k]; + sp_splsolve(N->L, A, col, N->xi[k], top, x, pinv); + /* Assign values to U and L: */ + ipiv = pvec[k]; + pivot = x[ipiv]; + Li[lnz] = ipiv; + Lx[lnz] = 1; + lnz++; + for (p=top; pxi[k][p]; + if (pinv[i]k){ + Li[lnz] = i; + Lx[lnz] = x[i]/pivot; + lnz++; + } + x[i] = 0; + } + Ui[unz] = k; + Ux[unz] = pivot; + unz++; + } + Lp[n] = lnz; + Up[n] = unz; + for(p=0; pncols; + Ai = G->Ai; Ap = G->Ap; + for(i=0;imax_nonzero >= (6/5)*(C->Ap[n]) + 2n. Work array W must be 8*(n+1). + */ + dense = MAX(16,10*sqrt((double) n)); + dense = MIN(n-2,dense); + cnz = Cp[n]; + /* Assign pointers to positions in work array:*/ + len = W; + nv = W+(n+1); + next = W+2*(n+1); + head = W+3*(n+1); + elen = W+4*(n+1); + degree = W+5*(n+1); + w = W+6*(n+1); + hhead = W+7*(n+1); + last = P; + /* Initialise quotient graph: */ + for(k=0; kdense){ + nv[i] = 0; + elen[i] = -1; + nel++; + Cp[i] = SPFLIP(n); + nv[n]++; + } + else{ + if(head[d]!=-1) last[head[d]] = i; + next[i] = head[d]; + head[d] = i; + } + } + while(nel0)&&(cnz+mindeg >=nzmax)){ + for(j=0; j=0){ + Cp[j] = Ci[p]; + Ci[p] = SPFLIP(j); + } + } + for(q=0,p=0; p=0){ + Ci[q] = Cp[j]; + Cp[j] = q++; + for(k3=0; k3elenk){ + e=k; + pj = p; + ln = len[k] - elenk; + } + else{ + e = Ci[p++]; + pj = Cp[e]; + ln = len[e]; + } + for(k2=1; k2<=ln; k2++){ + i=Ci[pj++]; + if((nvi=nv[i])<=0) continue; + dk += nvi; + nv[i] = -nvi; + Ci[pk2++] = i; + if (next[i]!=-1) last[next[i]] =last[i]; + if (last[i]!=-1){ + next[last[i]] = next[i]; + } + else{ + head[degree[i]] = next[i]; + } + } + if(e!=k){ + Cp[e] = SPFLIP(k); + w[e] = 0; + } + } + if (elenk!=0) cnz = pk2; + degree[k] = dk; + Cp[k] = pk1; + len[k] = pk2 - pk1; + elen[k] = -2; + /* Find set differences: */ + mark = sp_wclear(mark, lemax, w, n); + for(pk=pk1; pk=mark){ + w[e] -= nvi; + } + else if(w[e]!=0){ + w[e] = degree[e] + wnvi; + } + } + } + /* Degree update:*/ + for(pk=pk1; pk0){ + d+=dext; + Ci[pn++] = e; + h +=e; + } + else{ + Cp[e] = SPFLIP(k); + w[e] = 0; + } + } + } + elen[i] = pn-p1+1; + p3 = pn; + p4 = p1 + len[i]; + for(p=p2+1; p=0) continue; + h = last[i]; + i = hhead[h]; + hhead[h] = -1; + for( ;(i!=-1)&&(next[i]!=-1);i = next[i],mark++){ + ln = len[i]; + eln = elen[i]; + for(p=Cp[i] + 1; p<=Cp[i]+ln-1; p++) w[Ci[p]] = mark; + jlast = i; + for(j=next[i]; j!=-1; ){ + ok = (len[j]==ln)&&(elen[j] == eln); + for(p=Cp[j] +1;ok&&p<=Cp[j]+ln-1; p++){ + if(w[Ci[p]]!=mark) ok=0; + } + if (ok){ + Cp[j] = SPFLIP(i); + nv[i] +=nv[j]; + nv[j] = 0; + elen[j] = -1; + j = next[j]; + next[jlast] = j; + } + else{ + jlast =j; + j = next[j]; + } + } + } + } + /* Finalize new element: */ + for(p=pk1, pk=pk1; pk=0; j--){ + if(nv[j] > 0) continue; + next[j] = head[Cp[j]]; + head[Cp[j]] = j; + } + for(e=n; e>=0; e--){ + if(nv[e]<=0) continue; + if(Cp[e] !=-1){ + next[e] = head[Cp[e]]; + head[Cp[e]] = e; + } + } + for(k=0,i=0; i<=n; i++){ + if (Cp[i] == -1) k = sp_tdfs(i, k, head, next, P, w); + } + return _SUCCESS_; +} + +int sp_wclear(int mark, int lemax, int *w, int n){ + int k; + if (mark<2 || (mark+lemax<0)){ + for(k=0; k=0){ + p = stack[top]; + i = head[p]; + if (i==-1){ + top--; + post[k++] = p; + } + else{ + head[p] = next[i]; + stack[++top] = i; + } + } + return (k); +} + + From 02f605e94f54a0325486dab8e23455a45de771c5 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Thu, 6 Mar 2025 13:42:11 -0500 Subject: [PATCH 22/24] add RSF to C_cl_tomo --- theory/cosmo2D_fourier.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/theory/cosmo2D_fourier.c b/theory/cosmo2D_fourier.c index 92c5231d..4f7937bc 100644 --- a/theory/cosmo2D_fourier.c +++ b/theory/cosmo2D_fourier.c @@ -346,8 +346,8 @@ double C_cl_tomo(double l, int ni, int nj) //galaxy clustering power spectrum o double result; for (int i=0; i Date: Thu, 6 Mar 2025 13:42:30 -0500 Subject: [PATCH 23/24] bugfix --- theory/covariances_binned_simple.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/theory/covariances_binned_simple.c b/theory/covariances_binned_simple.c index dfb6b7fc..78719c20 100644 --- a/theory/covariances_binned_simple.c +++ b/theory/covariances_binned_simple.c @@ -1444,6 +1444,7 @@ void cov_mix_binned_fullsky(double **cov, double **covNG, char *mixcov_type, int double (*func_for_cov_G)(double, int*); double (*func_bin_cov_NG)(double, double, int*); + double (*func_P1)(int, int); double (*func_P2)(int, int); if(strcmp(mixcov_type, "kk_xi+")==0) { @@ -1911,7 +1912,7 @@ void cov_kk_ks_mix_binned_fullsky(double **cov, double **covNG, int zs, int FLAG /// Full Fourier 6x2pt cov - band averaged -// Real cov +// Fourier cov void cov_shear_shear_fourier_binned(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *ell){ char cov_type[]= "ss_ss"; int z_ar[4]; From b32f1bddf74ff54632e6a541efba156f78a35524 Mon Sep 17 00:00:00 2001 From: JiachuanXu Date: Thu, 6 Mar 2025 13:42:43 -0500 Subject: [PATCH 24/24] updates --- theory/run_covariances_fourier_binned_6x2pt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/theory/run_covariances_fourier_binned_6x2pt.c b/theory/run_covariances_fourier_binned_6x2pt.c index 083f870d..ec5ee785 100644 --- a/theory/run_covariances_fourier_binned_6x2pt.c +++ b/theory/run_covariances_fourier_binned_6x2pt.c @@ -109,7 +109,7 @@ void run_cov_shear_shear_fourier_bin(char *OUTFILE, char *PATH,double *ell, int FILE *F1; char filename[300]; z1 = Z1(n1); z2 = Z2(n1); - printf("N_shear1 = %d (%d,%d)\n", n1,z1,z2); + printf("N_shear1 = %d (%d, %d)\n", n1,z1,z2); z3 = Z1(n2); z4 = Z2(n2); printf("N_shear2 = %d (%d, %d)\n",n2,z3,z4); sprintf(filename,"%s%s_%d",PATH,OUTFILE,start);

XX1yleY^fN0W9c-gA_bk>vN1hGV{i`bH!gEKw7O zPCxKbH^7P2V3bHvX%#Oj?6rXim+_Cn)?^asK)~Sbf{u(t$?qA;&(b8!6iD4`TwXQM zxz*q%w=Cf%M3T#>k?kc#l={`zvzrXWxCn8c)N3KFr{#5=rM+veCI>6QD37jRQn?H4<9>- z>SU3r27)+kZXtJ<`V%5>lTF^yZR@ga*xm%~Y)&IJlAm-=$y4aYg&fT$i$LSm8d;cQ zmWkOUWCW&w3voZnM$Tn?7mAtIOa97g>c+rxZl From 2de7c5975d4225b4eae4e1a26fe8d271bb31a2f8 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Mon, 10 Oct 2022 11:11:10 -0700 Subject: [PATCH 07/24] new stuff --- theory/.basics.c.swp | Bin 28672 -> 0 bytes theory/.cosmo3D_new.c.swo | Bin 16384 -> 0 bytes theory/.covariances_real_binned.c.swo | Bin 16384 -> 0 bytes theory/.covariances_real_binned.c.swp | Bin 16384 -> 0 bytes theory/{.halo.c.swo => .halo.c.swl} | Bin 16384 -> 16384 bytes theory/.halo.c.swm | Bin 40960 -> 16384 bytes theory/.halo.c.swp | Bin 16384 -> 0 bytes theory/.redshift_spline.c.swp | Bin 77824 -> 0 bytes theory/IA.c | 11 +- theory/cosmo2D_exact_fft.c | 19 +-- theory/cosmo3D.c | 10 +- theory/structs.c | 5 +- theory/tags | 196 ++++++++++++++++++++------ 13 files changed, 183 insertions(+), 58 deletions(-) delete mode 100644 theory/.basics.c.swp delete mode 100644 theory/.cosmo3D_new.c.swo delete mode 100644 theory/.covariances_real_binned.c.swo delete mode 100644 theory/.covariances_real_binned.c.swp rename theory/{.halo.c.swo => .halo.c.swl} (74%) delete mode 100644 theory/.halo.c.swp delete mode 100644 theory/.redshift_spline.c.swp diff --git a/theory/.basics.c.swp b/theory/.basics.c.swp deleted file mode 100644 index 112cb0d97cb5ce845f7989a3ce0fe61aac8310f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 diff --git a/theory/.cosmo3D_new.c.swo b/theory/.cosmo3D_new.c.swo deleted file mode 100644 index d59bf35c1448cdd80e8929800728f3caaf012456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHOTddqh8FtI95ZcnTP>H@wlAhM}1LyJmga z+TPuBdQ^CT2TBkKgj5MsaVdyOTpr-51q6r(E~*d`5(uO|R0sqQRP;g%EiHWic*3;JI19l)L zO=t7?s-^Nk<$;Uwz~$QVQp+L^JGO6QS8qLeG0dv5l?N&hR34~2P4dKTx8-s_1vC_FtChuPFNcs=cNJWODwY=z*d? zQlh`C=$YKBl)~BgmlXX@HGZQ+|GT2EDEbp6`rj1&xT0VCy7VUF|DvM%itd)^FDQCn z(SKE<|5ed96n)?8XZb&0lK)tV{+yy8RO7e2VRrnpivB)DKVG6gqv)A_UoX-BqUdMT z_-o!c%U_wJ?NaopL|4t#N9BRa1C<9V4^$qgJWzR{@<8Q*$^(@LDi8dRdVqH{?Jdyl zXLQiT_y5`X{^=_>fo}s}06q_V1aN?ZKpj{F4B&d;3gEdbH0@d77r-}xvp^p> z1n9tJz#lKyw4VTv0v`qXz%gJe@ZwuF?bE=gfO~;kfNOzQwrJY7fCqsSz&_wQ;LlM0 z3E*?U5O@#p@|!hn47>yQ^<|p&FmMLA9{9tXH0}4mW55@Iv%nBo0$RWeIM@CTcog_5 za29wFxDi+Yt_S{vv-4MgF9Q)U1nvP218)a@fV2AmaDgW90uImL1-=734m=E;1nvTs zfgQlps7E{nJPA;3;!D7Xfj)2tup6iYRQLEf=8ER)r&)1A#uj4_Xbe{v2z%&_V%zW8 z{)jEMS^8s(u(#eka?l?cp)Y!TZ1zX1>Sq{4c`r5E<2_*EcJxWM z^;50W)DH|;oBkRAHFUz!swc_{v{|cJpsG>fSVVnG=d}VURjeKQV|&aa5yo@KetW80 zsqq$tLQksBmkeLHVk%nev~6gY_+2JA+o3Sn#xpT*w(Y#+K@-wkN0RB8U#qbMQ&L?UU$MEPBLe$ zpE_Mv9J;t2hi-=%DW{rdnz?q+iz&UBe&FEY8s^+I7cT6=NaB_B8O%(;*$o_T)Nz9z zJHVp>6M=|&>rAR45)s90V%6D%W1Mqg5*IX@351?Ko|#`>Gx(ChxmgG~HLZ)7RUO1) zIPe-Tld?{GG8 zF|lH8$b*>TI-TN+nL0Ulkw`{SuxXmc1|;c?<))z*XcKF3>aq!6Y&C0!7xu88XW9+D z)okz@E^>@=SYdiH7p5+_(8x1QWD}QDYEn~mQO*!+aC*SxGzx!|O`)-dAHPNQY+W1c zvyTIMgqfL1w$pdBp}3{wq(}tClP+~u1u~FbA@l?qJ zG!!Fjc+3t1Z#|bipG_(_x3M_<0!JR=Uf9KJK>1Uu&$8JlTa1vQM4XE4&yF;Vgks4) zR?r-=J@DNipMCkv*YfAiV0ufFnj2QuD(}YqVSXR_e&K$cd3|EvpEn;TWioRD(d}lP z_9IW`gk!dxLi?~ANF}6^0j9$Z?AYO+$h=dOZp`pDB=by?LF|k6P%t7jXMDT>hD#}i z3dP)V>Pfu*!>+O0vya<@z{~r?+_Gs{I6b*tZ=j%j(mzI&y5kgkF9Uajnp@u@D5D+JYW`!v5^tj;e}YBe#}Drt~i>wvA~{I<^EvQ2B)$R zz9xl$(#lB_o(s2{%aA$d-bmoRA4MV_hIr{FA#3Op+ghC1ymm%!nLBGUqZQXyb7}Xq zJ!jfzHJ7DDV$qr^G_id(tZ|dFSTqV+1=!asm)zXkm5wjdbGer6FvGuZ<>PnF8&7mK zelGv`=6w8I{fMr{@1CcB=&u%Lb*b4(Rcu&Gxr5a zc(kSgHZ#A=xOV0$fRqol5XbFy8~g1Y={8xgy}j5o0b4{-5H|b!=8)ncEuHx^df)aU zdKCxrJK!hs?wCjg#*WA1c(ywlM3l_7#Yx94se~raU7hWQyfZ(u*&*XagIDHZVqC2>kg^u~&8dmz=6ili%SFKY}V;kZfaT2miP#h+U`gu`&QLUjsRZD5Bi)X8EY*t_py;=U%s*3p80QpNV+STIj7 z@*iE$kMu}gx&jjm<*c-9pFFc0wxEZ#2`up7OOW z9LJpz=9r4IIL4sL*TZAPIxhFACW{*!(&)GY*09)W!QP#9Y4p2fn;SFEB8~yxw91Wx zQi6JbfT^^I_|Fz zMYM|l%jryofCmBw^i|P>UL+ z-aSMnAP^%V>~u=)v7kD+o>qP!s*Za2QTfz7YV$_+-NHGC@N*0(xWq-pZ0Zs=6{T)@ zQKDLm$~lNuDyI;$>}VnEbn)4F)a%rRsu86A(UXT!FDiPfjv!8(TR2TA{?ZXxWYcd= z7CLMJ=}k~(bL**+{FHlI-GVnB)Mz#}0*x1{WI@I}6*D2E1Vms8u^v%ZrVp#Rd$&E)=SmuX_GUq%; zsm!8EkG!sKAU@T5H0+Q9@=Zfu+vqn?sVEI}q`lA|jxzG{0eyc>8j*&%T6eG_i=Swi zE=3zFEp(`&g#f^UOV_UIs1|bCr7+S-37dkImfW_ChZL`BOv*HvLhGEhQ5PYBike%* z_7_?U@?_Fr2GmRM+Kghm)K_Uvy>cVcZc2KZO{S`}prL8<(VB~#yFSfqDEW9{IAEh8 zKvl-~3OQKRLAdKz{YF=eEd uOhd#(u539lO+H1x&RM{$gEWDE;35B{??}vlIHng#{?5QV(=iX(mi8}WeMm+C diff --git a/theory/.covariances_real_binned.c.swo b/theory/.covariances_real_binned.c.swo deleted file mode 100644 index 113cb9e5d5676e8454a72c32f82609d9bb915744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHOO^hQ)6>gT_{RxSJga`*zA!2d2du(^xyBpzga+pY~n9XF9WjBY>(Dc}4PqXE2 zr@KAlnc?S>1rCIO1P4GIBSJ1n2*eEuq(})u9QcWZlmjRWCk~u|01JGts@iUQJY?rE zlSS&*eD3aguc}^s{i?d^RnJE4+M|!L3zdd};~vBK_Ko@{fBgE*x#>YmG{h`e84MyA|FYEz0vbDzMs#x*R{rAQHiK?scM=SJO=%#XCsd^5eh{J3R4X z?h9`t2t(ejbQYCXq!kPl3>=PuyNtT))F{sbAHJWx@7}A2%U);~3=|9$3=|9$3=|9$ z3=|9$3=|CfUo(&n&lsOa3r^@(tmyOG=Fb1oM^~pmGAIAHmOri2Uzn5M((-{$zfV_? z)$=bczozA1n3Mlg%iCK1+MN6!TKuklTV4z^2V4z^2V4z^2V4z^2V4z^2V4z^2 zVBkm?@Uft$rLIK_S?vF>=vuyUw_%ilU%b~aeBk$Y8OD9UjWdSv4DiNj!-#+oc>R=N zTm?P>eCs5N0qzEN-eVYldbeTx5%>u3)pr@jbHG=CXMu--I`C281n`Gi-;Wi?nP8~U+7NScP0kK67< zI=0zX6m*%Tbmr@2nr2THjofnhT{tXu?`;OS^U`LaNsN z$8uOzqgrM1xD-W07H#pE;X9MmcWiZbSuco_)MgtTU#)P~i3Y<_8iaikvyhKdO2Q{7 zei}p}i+XsF-DET9r3{G)6~7v#TxyFby1q0TvebukN<;>K;I-7pj=cwrzIkOHraxGwSL`3O^!p4z+!{SSxmlsgx>(f1BPcaLQFW|6ji3!(aRVKV3OnJQJ3nV#}Y6%_bG4JxDCbL)) zpa)f~Tm~tsPV>la#YMvRX6vX`s8SMu|B`SYYEh-=Ju{X#QcEfj1sU<0~d`;O}1ONcNk8l5_#5M{JXNv`tEcYeiQ9B>z5|X}Tk<-0prX1{O!ro0-f2q#|4>1%g2b}A~F#D)2*ALdo z+|A8+boUc^4CWj#px~MAb1!({xu#adM-eIBIhdTM(%f@9=yEmm>lfiRUU=dWcG*(p3E)nXhx|JrXk(z>L!!m5U zGKtgDQe4stK5h2+$E7&k83vebPbSR?Zt$pJ8)<{56sC-@81CaA7v*9;BtwV|$@ZF4 zTPKs0wFvAFrlJcZkp{|;Ra579FrVy?r~2n60*B1c^v~y$^ZE`6CN=LmSq67D-EAsM z>$Ayqo!ppBZonQ*{VJHR*jYQBbsKb`MoLo-#99=j)Y>YB-X|)pQ0NouYjMJdphG}Q)NL$sG#V{K9tlr zCyPFhqG5wBJVaM$u@D^-jcCz^L`jcjaL2+Q0rQsRL3~({h_Ix4oIpCj@ z+zp+>RXNmH`M;{jGC0bn+o(bt71Fpgsn=O=5_i)C7YS74M5B%bGHR00SSL4w+py5F zL)Q-Lc1V3N>xAvL4Y#$)Q}N@{m5VF5Fghm&MtH2gz@t(ra1LDL%6PNwN7R1s%Owjk zAO<(LFImm)1z|)$glBdmsoxiDtmD=fr@GbrRuKl0YN?UEn&mbS8BU(a*d6uOMI>u7 PxT#>)9roHK#*F_0?yV>p diff --git a/theory/.covariances_real_binned.c.swp b/theory/.covariances_real_binned.c.swp deleted file mode 100644 index 2f839c4c62887a2268150a5522c6965e59da5375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 PxT#>)9roHK#*F_0_sJ)z diff --git a/theory/.halo.c.swo b/theory/.halo.c.swl similarity index 74% rename from theory/.halo.c.swo rename to theory/.halo.c.swl index e729c74fb5e31cd2545784df992fd5fb12df11a7..73e6c39d60fbf271c5dc4b9b2849171b83be0789 100644 GIT binary patch delta 261 zcmZo@U~Fh$R7f%i^Ym3P*E3-N0s#hw60Fx?*awKcftU@5 zS%CNA1>*Ni3=D68_#zO`1>$NTE&$?SAhrZzWgvbDv=U_P zLB@#-H8$T>%w=SYPfp2=PulFIe40^BBRRh~H$Nvoy;9FVH#I#mK35lAB(GF+vzqEH FDF8~6IYUMC8BxjW5Ph6<7(d7*PWD5a- z$qE7joaG>OK#;WAQs6W{uNaWIjS)xywI*&BRFGz@f6l_d@Dzxj0PzkW?gipRAWi^c zX&{ya;&03h4EKO|G7#GUu@w+20kHxQa{)0s5Wisp>IdR!K->+)c|aTj#CAZ;0>pQL z)`G0w3bGynChBpkDS$yvetK?hVugaO0+6MVlbM@YQmp424;0ce(lgMs-h5Cok8!i9 R@@dA&%hZH6tE=9W0sxLkH$4CV diff --git a/theory/.halo.c.swm b/theory/.halo.c.swm index b3b14ae8d1b63d42443c3be1e4ce3bba7e4f39a0..71ac472224aa2be16c81a564afdb8633238214d8 100644 GIT binary patch delta 350 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 T!njw(Jk;PhrFvFLaX<6lMtU%N diff --git a/theory/.redshift_spline.c.swp b/theory/.redshift_spline.c.swp deleted file mode 100644 index 3cf41f2b5c1b21593f4ceea470cd0742bed32c02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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 diff --git a/theory/IA.c b/theory/IA.c index 76469432..ed6f2836 100644 --- a/theory/IA.c +++ b/theory/IA.c @@ -846,6 +846,8 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of static double **table; static double ds = .0, logsmin = .0, logsmax = .0; + double result =0 ; + double negative=0; if (ni < 0 || ni >= tomo.shear_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ printf("C_shear_tomo(l,%d,%d) outside tomo.shear_Nbin range\nEXIT\n",ni,nj); exit(1); } @@ -864,8 +866,15 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of for (k=0; k0) table[k][i]= log(result); + else { + table[k][i]=log(1E-30); + negative=1; + } + if(negative>0){table[k][i]=log(1E-30);} } } update_cosmopara(&C); update_nuisance(&N); diff --git a/theory/cosmo2D_exact_fft.c b/theory/cosmo2D_exact_fft.c index c4fa3c2d..1b29357d 100644 --- a/theory/cosmo2D_exact_fft.c +++ b/theory/cosmo2D_exact_fft.c @@ -295,11 +295,12 @@ void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double i_block++; L = i_block*Nell_block -1 ; - dev = Cl[L]/C_cl_tomo_nointerp((double)L,ni,nj)-1.; - if(L>=LMAX){ + if(L>=LMAX-Nell_block){ printf("L>Lmax\n"); break; } + dev = Cl[L]/C_cl_tomo_nointerp((double)L,ni,nj)-1.; + // printf("ni,L,Cl[L],dev=%d %d %e %e\n",ni,L,Cl[L],dev); // printf("i_block: %d\n", i_block); } @@ -309,15 +310,17 @@ void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double // Cl[l]=C_cl_tomo_nointerp((double)l,ni,nj); // // fprintf(OUT, "%d %lg\n", l, Cl[l]); // } - for (l = L; l < LMAX; l++){ - Cl[l]=C_cl_tomo((double)l,ni,nj); - // fprintf(OUT, "%d %lg\n", l, Cl[l]); - } + if(L0){ sprintf(fc->value[position_kmax],"%e",k_max_old); } - return *nl.sigma8; + return nl.sigma8[nl.index_pk_total]; } double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){ @@ -562,11 +562,11 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/(*nl.sigma8),2.); + A_s_guess*=pow(sigma8/(nl.sigma8[nl.index_pk_total]),2.); printf("A_s_guess=%e\n",A_s_guess); sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/(*nl.sigma8),2.); + A_s_guess*=pow(sigma8/(nl.sigma8[nl.index_pk_total]),2.); printf("A_s_guess=%e\n",A_s_guess); if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); @@ -733,10 +733,10 @@ double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){ aa = limits.a_min; if (cosmology.A_s){ norm = 3.*log(cosmology.h0/cosmology.coverH0); - cosmology.sigma_8 = (*nl.sigma8); + cosmology.sigma_8 = (nl.sigma8[nl.index_pk_total]); } else{ - norm = log(pow(cosmology.sigma_8/(*nl.sigma8),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); + norm = log(pow(cosmology.sigma_8/(nl.sigma8[nl.index_pk_total]),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); } //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); if (*status ==0){ diff --git a/theory/structs.c b/theory/structs.c index 835af290..d50868da 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -47,8 +47,9 @@ typedef struct { char probes[500]; char ext_data[500]; int theta_s; + int Ytransform; }likepara; -likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0}; +likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0}; typedef struct { double Omega_m; /* matter density parameter */ @@ -483,4 +484,4 @@ typedef struct { int Nell; int Nchi; } fft_optimize; -fft_optimize fft_int; \ No newline at end of file +fft_optimize fft_int; diff --git a/theory/tags b/theory/tags index bd30ef3a..f0c371e7 100644 --- a/theory/tags +++ b/theory/tags @@ -6,6 +6,7 @@ !_TAG_PROGRAM_VERSION 5.8 // A2_ia structs.c /^ double A2_ia; \/\/placeholder param for quadratic,etc IA$/;" m struct:__anon21 file: A2_ia structs.c /^ double A2_ia[2];$/;" m struct:__anon22 file: +A2_z structs.c /^ double A2_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA = 5)$/;" m struct:__anon21 file: AD_DESdepth baryons.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221},{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277},{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374},{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085},{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961},{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444},{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812},{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035},{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709},{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678},{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197},{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302},{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746},{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846},{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739},{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005},{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935},{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302},{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563},{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942},{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996},{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829},{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221},{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528},{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299},{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896},{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165},{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676},{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103},{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392},{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807},{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311},{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951},{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946},{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043},{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327},{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818},{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309},{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083},{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189},{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588},{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029},{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471},{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898},{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186},{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475},{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508},{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917},{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325},{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403},{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873},{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344},{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527},{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748},{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226},{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097},{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701},{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306},{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911},{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798},{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158},{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518},{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878},{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892},{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021},{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121},{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414},{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638},{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863},{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087},{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283},{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232},{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182},{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131},{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081},{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086},{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192},{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298},{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404},{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527},{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602},{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935},{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267},{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v AD_DESdepth baryons2.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v AD_LSSTdepth baryons2.h /^ static double AD_LSSTdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v @@ -22,17 +23,20 @@ A_ia structs.c /^ double A_ia[2]; \/\/A IA see Joachimi2012$/;" m struct:__anon A_s structs.c /^ double A_s;$/;" m struct:__anon10 file: A_s structs.c /^ double A_s;$/;" m struct:input_cosmo_params_mpp file: A_s structs.c /^ double A_s;$/;" m struct:__anon22 file: -A_z structs.c /^ double A_z[10];$/;" m struct:input_nuisance_params_mpp file: -A_z structs.c /^ double A_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA =3)$/;" m struct:__anon21 file: +A_z structs.c /^ double A_z[10];$/;" m struct:input_nuisance_params_mpp file: +A_z structs.c /^ double A_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA =3 or like.IA = 5)$/;" m struct:__anon21 file: B1 halo.c /^double B1 (double m,double a){ \/\/b(m,a) based on redshift evolution fits in Tinker et al. paper, no additional normalization$/;" f B1_model structs.c /^typedef double (*B1_model)(double z, int nz);$/;" t file: B1_normalized halo.c /^double B1_normalized (double m,double a){ \/\/divide by bias norm only in matter spectra, not in HOD modeling\/cluster analyses$/;" f B1_nu halo.c /^double B1_nu (double n,double a){$/;" f BAO BAO.c /^baopara BAO;$/;" v BAO structs.c /^ int BAO;$/;" m struct:__anon9 file: +BARY_FILE structs.c /^ char BARY_FILE[500]; $/;" m struct:__anon9 file: C structs.c /^ cosmopara C;$/;" m struct:__anon20 file: +C1_TA cosmo2D_fullsky_TATT.c /^double C1_TA(double a, double nz){$/;" f +C2_TT cosmo2D_fullsky_TATT.c /^double C2_TT(double a, double nz){$/;" f COS_shear_shear_tomo EBfunctions.c /^void COS_shear_shear_tomo(double *E,double *B,int ORDER,double vt_max, double vt_min,int ni, int nj)$/;" f -COV_FILE structs.c /^ char COV_FILE[500]; $/;" m struct:__anon9 file: +COV_FILE structs.c /^ char COV_FILE[500];$/;" m struct:__anon9 file: CSF_DESdepth baryons2.h /^ static double CSF_DESdepth[100][11]={{0.998183, 0.9983853, 0.998452, 0.9984787, 0.9985515, 0.9986352, 0.9986458, 0.9986549, 0.9986562, 0.9986346, 0.9986083}{0.9980241, 0.9981315, 0.9980876, 0.9980564, 0.9981817, 0.9983176, 0.9983623, 0.9984908, 0.9985419, 0.9985111, 0.9984791}{0.9981029, 0.99795, 0.9978325, 0.9979343, 0.9980838, 0.9982414, 0.9983734, 0.9985295, 0.9985915, 0.9985369, 0.9984688}{0.9981204, 0.9980167, 0.9980872, 0.9981641, 0.9982827, 0.9983431, 0.9984992, 0.9986038, 0.9986193, 0.9985253, 0.9983924}{0.998073, 0.9981888, 0.9982503, 0.9984343, 0.9984852, 0.9985112, 0.9986103, 0.9987254, 0.9987188, 0.998575, 0.9984025}{0.9983572, 0.9983268, 0.9985223, 0.9987815, 0.9988115, 0.9988542, 0.9989739, 0.9989817, 0.9988793, 0.9986832, 0.9984104}{0.9987019, 0.9985092, 0.9988351, 0.9989447, 0.9989894, 0.999053, 0.9990206, 0.9990455, 0.9989408, 0.9986672, 0.9983866}{0.9990963, 0.9990118, 0.9991538, 0.9991888, 0.9992523, 0.9992548, 0.9993182, 0.9993303, 0.9991508, 0.9988703, 0.9985376}{0.9999526, 0.9999876, 0.9999725, 0.9998518, 0.9998445, 0.999795, 0.9997166, 0.9996343, 0.9994124, 0.9990712, 0.9987039}{1.000743, 1.000724, 1.000332, 1.000142, 1.000072, 1.000066, 0.9999631, 0.9998472, 0.9995217, 0.9991411, 0.9987424}{1.001915, 1.001377, 1.000952, 1.000782, 1.000823, 1.000779, 1.000509, 1.000238, 0.9998971, 0.9994853, 0.9989965}{1.003371, 1.002507, 1.00185, 1.001545, 1.001405, 1.001233, 1.000963, 1.000693, 1.000283, 0.9997085, 0.999102}{1.004563, 1.003173, 1.002493, 1.002131, 1.001874, 1.00165, 1.001427, 1.001205, 1.00072, 1.000031, 0.9993408}{1.006098, 1.004279, 1.003112, 1.002672, 1.002737, 1.002795, 1.002281, 1.001767, 1.00116, 1.000462, 0.9997612}{1.007968, 1.005782, 1.00443, 1.003826, 1.003644, 1.003462, 1.002922, 1.002379, 1.001714, 1.000906, 1.000097}{1.009403, 1.007033, 1.005643, 1.004999, 1.004651, 1.004302, 1.003668, 1.002991, 1.002225, 1.001293, 1.00036}{1.011137, 1.008465, 1.007185, 1.006693, 1.005983, 1.005261, 1.004556, 1.003819, 1.002985, 1.001909, 1.000828}{1.012595, 1.009961, 1.008665, 1.007771, 1.007124, 1.006493, 1.005667, 1.004654, 1.003608, 1.002511, 1.00141}{1.014626, 1.012104, 1.010607, 1.009656, 1.00879, 1.007825, 1.006786, 1.005642, 1.004521, 1.00324, 1.001884}{1.016323, 1.014146, 1.012651, 1.011402, 1.010338, 1.009188, 1.008036, 1.006644, 1.005269, 1.003873, 1.002443}{1.018185, 1.016177, 1.014485, 1.013151, 1.012023, 1.010933, 1.00954, 1.007604, 1.005875, 1.004433, 1.002971}{1.020417, 1.018328, 1.016648, 1.015063, 1.013927, 1.012621, 1.010594, 1.00851, 1.006725, 1.005202, 1.003448}{1.022787, 1.020738, 1.018602, 1.01701, 1.01569, 1.014215, 1.012107, 1.009744, 1.007593, 1.005843, 1.00413}{1.025272, 1.022763, 1.020573, 1.019046, 1.017572, 1.015938, 1.01339, 1.010782, 1.008581, 1.006869, 1.004998}{1.027981, 1.024755, 1.02261, 1.020913, 1.019268, 1.017522, 1.014834, 1.012035, 1.009532, 1.007651, 1.005809}{1.030939, 1.027034, 1.024703, 1.023002, 1.021222, 1.019075, 1.01595, 1.012825, 1.010342, 1.008513, 1.006642}{1.033338, 1.02945, 1.027151, 1.025274, 1.022847, 1.020264, 1.017126, 1.013988, 1.011446, 1.009544, 1.007519}{1.036399, 1.031424, 1.029378, 1.027345, 1.024534, 1.021652, 1.01846, 1.015268, 1.012541, 1.010336, 1.008068}{1.038698, 1.033916, 1.031795, 1.02926, 1.026285, 1.02291, 1.019718, 1.016342, 1.013527, 1.011175, 1.008463}{1.040996, 1.0365, 1.03371, 1.030918, 1.027543, 1.024168, 1.020753, 1.017327, 1.014281, 1.011569, 1.008857}{1.043532, 1.038733, 1.035767, 1.033625, 1.030214, 1.026588, 1.023163, 1.019174, 1.015664, 1.012857, 1.009456}{1.046077, 1.040698, 1.03853, 1.036306, 1.03268, 1.029053, 1.024902, 1.020595, 1.016863, 1.013463, 1.010063}{1.048429, 1.043146, 1.041293, 1.038869, 1.035243, 1.031241, 1.026934, 1.022267, 1.018029, 1.014629, 1.011239}{1.050746, 1.045909, 1.043878, 1.041408, 1.037394, 1.033379, 1.028606, 1.023531, 1.019295, 1.015905, 1.012515}{1.053561, 1.048642, 1.046078, 1.043581, 1.039566, 1.035207, 1.030132, 1.025008, 1.020679, 1.017289, 1.013776}{1.056638, 1.050641, 1.048226, 1.045771, 1.041344, 1.03687, 1.031719, 1.026451, 1.022122, 1.018585, 1.015031}{1.059563, 1.052998, 1.050687, 1.047953, 1.043479, 1.03885, 1.033582, 1.028285, 1.023644, 1.02009, 1.016133}{1.062318, 1.055759, 1.053384, 1.050612, 1.045931, 1.041182, 1.035799, 1.030071, 1.02543, 1.021338, 1.017067}{1.065076, 1.058522, 1.055979, 1.053038, 1.048289, 1.043694, 1.037966, 1.032238, 1.026691, 1.022421, 1.018127}{1.067842, 1.061023, 1.058421, 1.05544, 1.050911, 1.04651, 1.040619, 1.033649, 1.028028, 1.023725, 1.019403}{1.070571, 1.06355, 1.060853, 1.058065, 1.053664, 1.049038, 1.042067, 1.035097, 1.029578, 1.025256, 1.020757}{1.073204, 1.066083, 1.063394, 1.060646, 1.055909, 1.050786, 1.043815, 1.037241, 1.0318, 1.027214, 1.022324}{1.075783, 1.068554, 1.066008, 1.062812, 1.057688, 1.0526, 1.04604, 1.03948, 1.033675, 1.028785, 1.023828}{1.077884, 1.071191, 1.068697, 1.064866, 1.059825, 1.05499, 1.04843, 1.04134, 1.035277, 1.030227, 1.024778}{1.079985, 1.074087, 1.070752, 1.067051, 1.062215, 1.05738, 1.050178, 1.042942, 1.036627, 1.031177, 1.025727}{1.082906, 1.076492, 1.072754, 1.069534, 1.064682, 1.059722, 1.052487, 1.044794, 1.038091, 1.032682, 1.027526}{1.085864, 1.078426, 1.075242, 1.071981, 1.067022, 1.062063, 1.054235, 1.046281, 1.039673, 1.034518, 1.029362}{1.088299, 1.081127, 1.078432, 1.074466, 1.069507, 1.064565, 1.056611, 1.048389, 1.041571, 1.036409, 1.03044}{1.090643, 1.084446, 1.080941, 1.076979, 1.072037, 1.067096, 1.058777, 1.050297, 1.043322, 1.037353, 1.031384}{1.093218, 1.086981, 1.08286, 1.079367, 1.074425, 1.069449, 1.060968, 1.05226, 1.04472, 1.038751, 1.032744}{1.095874, 1.088693, 1.085123, 1.081704, 1.076721, 1.071739, 1.062927, 1.053816, 1.046275, 1.040261, 1.034248}{1.098975, 1.091327, 1.087795, 1.084061, 1.079078, 1.074117, 1.065006, 1.055846, 1.04815, 1.042137, 1.035942}{1.102383, 1.09423, 1.090336, 1.086465, 1.081508, 1.076557, 1.067356, 1.057978, 1.050282, 1.044046, 1.037767}{1.105509, 1.097065, 1.093006, 1.088833, 1.083882, 1.079155, 1.069777, 1.060399, 1.052394, 1.046114, 1.039355}{1.108252, 1.100095, 1.095612, 1.091118, 1.086467, 1.081968, 1.072531, 1.062798, 1.054791, 1.047868, 1.040621}{1.111026, 1.103075, 1.098116, 1.093924, 1.089424, 1.084576, 1.074843, 1.065109, 1.056416, 1.049169, 1.042052}{1.113878, 1.106099, 1.101283, 1.097241, 1.092214, 1.086673, 1.076936, 1.066596, 1.057802, 1.050753, 1.043895}{1.116696, 1.109086, 1.104485, 1.099876, 1.094334, 1.088745, 1.078405, 1.068064, 1.059507, 1.052649, 1.045592}{1.119319, 1.111689, 1.107041, 1.102125, 1.096584, 1.090672, 1.080332, 1.070072, 1.061708, 1.05485, 1.046471}{1.121941, 1.114245, 1.109464, 1.104374, 1.098693, 1.092599, 1.082259, 1.072273, 1.063909, 1.056475, 1.04735}{1.124564, 1.116802, 1.111713, 1.106623, 1.10062, 1.094526, 1.084344, 1.074474, 1.06611, 1.057354, 1.048229}{1.127186, 1.119358, 1.113962, 1.10864, 1.102547, 1.096453, 1.086546, 1.076675, 1.067358, 1.058233, 1.049108}{1.130445, 1.122594, 1.116572, 1.111526, 1.105433, 1.09882, 1.08895, 1.079061, 1.068722, 1.059597, 1.05137}{1.133804, 1.125261, 1.119303, 1.114564, 1.108366, 1.101257, 1.091387, 1.080502, 1.070162, 1.061218, 1.053849}{1.137163, 1.127927, 1.12234, 1.117601, 1.110802, 1.103694, 1.093495, 1.081942, 1.071603, 1.063698, 1.056329}{1.140522, 1.130594, 1.125378, 1.120348, 1.113239, 1.10613, 1.094936, 1.083382, 1.073547, 1.066178, 1.058809}{1.143957, 1.133779, 1.12842, 1.122957, 1.115848, 1.108752, 1.097199, 1.085645, 1.075984, 1.068615, 1.060581}{1.147434, 1.136928, 1.131466, 1.125664, 1.118555, 1.111479, 1.099925, 1.088133, 1.078396, 1.071028, 1.061955}{1.150912, 1.139974, 1.134212, 1.12837, 1.121279, 1.114205, 1.10265, 1.090546, 1.080809, 1.072523, 1.063328}{1.15439, 1.143019, 1.136919, 1.131079, 1.124005, 1.116931, 1.105063, 1.092958, 1.083091, 1.073896, 1.064702}{1.157755, 1.14606, 1.139786, 1.133875, 1.126801, 1.119613, 1.107509, 1.095405, 1.084689, 1.075494, 1.066196}{1.160781, 1.149209, 1.143139, 1.136881, 1.129807, 1.122161, 1.110057, 1.097851, 1.086967, 1.077773, 1.068059}{1.163806, 1.152562, 1.146318, 1.139888, 1.132583, 1.124709, 1.112605, 1.10013, 1.089246, 1.079842, 1.069921}{1.166832, 1.155915, 1.149324, 1.142894, 1.135131, 1.127257, 1.114983, 1.102409, 1.091524, 1.081705, 1.071784}{1.169858, 1.159268, 1.15233, 1.145553, 1.137679, 1.129804, 1.117261, 1.104687, 1.093488, 1.083567, 1.073646}{1.173318, 1.162744, 1.155328, 1.148204, 1.140329, 1.131973, 1.119399, 1.106829, 1.095662, 1.085741, 1.075401}{1.176836, 1.165741, 1.158258, 1.150868, 1.142883, 1.134092, 1.121518, 1.109044, 1.097877, 1.08786, 1.077142}{1.180354, 1.168738, 1.160922, 1.153532, 1.145003, 1.136212, 1.123672, 1.111259, 1.100092, 1.089601, 1.078883}{1.183872, 1.171735, 1.163586, 1.155913, 1.147122, 1.138331, 1.125887, 1.113474, 1.102061, 1.091342, 1.080624}{1.187609, 1.175305, 1.166443, 1.158618, 1.149828, 1.141216, 1.128803, 1.116389, 1.10421, 1.093492, 1.082444}{1.191451, 1.178397, 1.16939, 1.161602, 1.152811, 1.144464, 1.132051, 1.118879, 1.106553, 1.095835, 1.0843}{1.195293, 1.181345, 1.172374, 1.164586, 1.156059, 1.147712, 1.135155, 1.121222, 1.108896, 1.097692, 1.086156}{1.199134, 1.184292, 1.175358, 1.167654, 1.159307, 1.15096, 1.137498, 1.123565, 1.111084, 1.099548, 1.088013}{1.202297, 1.186989, 1.178591, 1.171076, 1.162729, 1.153991, 1.140058, 1.126125, 1.113041, 1.101506, 1.089658}{1.204722, 1.190075, 1.182095, 1.174689, 1.166342, 1.156789, 1.142856, 1.128475, 1.115108, 1.103573, 1.091074}{1.207147, 1.19358, 1.18568, 1.178302, 1.169347, 1.159586, 1.145653, 1.130542, 1.117175, 1.105154, 1.092489}{1.209572, 1.197084, 1.189293, 1.181905, 1.172144, 1.162383, 1.147808, 1.132609, 1.119234, 1.10657, 1.093905}{1.21218, 1.200615, 1.192804, 1.184716, 1.174955, 1.165141, 1.149942, 1.134743, 1.120803, 1.108138, 1.095398}{1.215866, 1.204078, 1.195713, 1.187608, 1.177847, 1.167668, 1.15247, 1.137254, 1.123273, 1.110608, 1.097346}{1.219552, 1.206987, 1.198615, 1.1905, 1.180583, 1.170196, 1.154997, 1.139724, 1.125743, 1.112855, 1.099294}{1.223238, 1.209896, 1.201507, 1.193393, 1.183111, 1.172724, 1.157492, 1.142194, 1.128213, 1.114803, 1.101242}{1.226924, 1.212805, 1.204399, 1.196025, 1.185638, 1.175252, 1.159962, 1.144664, 1.130311, 1.116751, 1.10319}{1.230707, 1.216464, 1.207194, 1.198886, 1.188499, 1.177725, 1.162427, 1.147129, 1.132644, 1.119084, 1.104825}{1.234507, 1.219241, 1.209995, 1.201804, 1.19134, 1.180189, 1.164891, 1.149527, 1.135043, 1.121345, 1.106405}{1.238307, 1.222019, 1.212912, 1.204721, 1.193804, 1.182653, 1.167334, 1.151926, 1.137442, 1.122925, 1.107986}{1.242107, 1.224796, 1.21583, 1.207419, 1.196268, 1.185117, 1.169733, 1.154325, 1.139446, 1.124506, 1.109567}{1.245619, 1.227941, 1.219379, 1.210679, 1.199528, 1.188048, 1.172641, 1.157233, 1.141704, 1.126764, 1.111446}{1.24897, 1.231733, 1.223284, 1.214385, 1.203234, 1.191242, 1.175835, 1.159985, 1.144342, 1.129402, 1.113493}{1.25232, 1.235638, 1.227, 1.218091, 1.206453, 1.194437, 1.178969, 1.162623, 1.14698, 1.131478, 1.11554}{1.255671, 1.239543, 1.230707, 1.221663, 1.209647, 1.197631, 1.181607, 1.165261, 1.149463, 1.133525, 1.117587}};$/;" v CUBE basics.c 33;" d file: CW_DESdepth baryons.h /^ static double CW_DESdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908},{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265},{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475},{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354},{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506},{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496},{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929},{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479},{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111},{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031},{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421},{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209},{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076},{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891},{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418},{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356},{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317},{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017},{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464},{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602},{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469},{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385},{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714},{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368},{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472},{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319},{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281},{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234},{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573},{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133},{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294},{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309},{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149},{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433},{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688},{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917},{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721},{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077},{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325},{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856},{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351},{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718},{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084},{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432},{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481},{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008},{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007},{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007},{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689},{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518},{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302},{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993},{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683},{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803},{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255},{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707},{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891},{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484},{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059},{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617},{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753},{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889},{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235},{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627},{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019},{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495},{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565},{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635},{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705},{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228},{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445},{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662},{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878},{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718},{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563},{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409},{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354},{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786},{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218},{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665},{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062},{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377},{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693},{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008},{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324},{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843},{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572},{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715},{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857},{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169},{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912},{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655},{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398},{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v @@ -41,6 +45,10 @@ CW_LSSTdepth baryons2.h /^ static double CW_LSSTdepth[100][11]={{0.979908, 0.979 CX_DESdepth baryons.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909},{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438},{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723},{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262},{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663},{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347},{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236},{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965},{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326},{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366},{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495},{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447},{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528},{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727},{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646},{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457},{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913},{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133},{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385},{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654},{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675},{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847},{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869},{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192},{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641},{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144},{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139},{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899},{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257},{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793},{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867},{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259},{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468},{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107},{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558},{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717},{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573},{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268},{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784},{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274},{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637},{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753},{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846},{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582},{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075},{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094},{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828},{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501},{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174},{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664},{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038},{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765},{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784},{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915},{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741},{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638},{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788},{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447},{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106},{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177},{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568},{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959},{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211},{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392},{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573},{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757},{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529},{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363},{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583},{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275},{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966},{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525},{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916},{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796},{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431},{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944},{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388},{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832},{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276},{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345},{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418},{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492},{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671},{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536},{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049},{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738},{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397},{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908},{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419},{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929},{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544},{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533},{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638},{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743},{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847},{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959},{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739},{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822},{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253},{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v CX_DESdepth baryons2.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v CX_LSSTdepth baryons2.h /^ static double CX_LSSTdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +C_BB_TATT cosmo2D_fullsky_TATT.c /^double C_BB_TATT(double l, int ni, int nj){$/;" f +C_BB_tab cosmo2D_fullsky_TATT.c /^double C_BB_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_EE_TATT cosmo2D_fullsky_TATT.c /^double C_EE_TATT(double l, int ni,int nj){$/;" f +C_EE_tab cosmo2D_fullsky_TATT.c /^double C_EE_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f C_FOOTPRINT_FILE structs.c /^ char C_FOOTPRINT_FILE[200]; \/*angular power spectrum of survey footprint, in healpix format *\/$/;" m struct:__anon24 file: C_GI_JB_nointerp IA.c /^double C_GI_JB_nointerp(double s, int ni, int nj) $/;" f C_GI_lin_nointerp IA.c /^double C_GI_lin_nointerp(double s, int ni, int nj) $/;" f @@ -65,9 +73,13 @@ C_cl_g_tomo cluster.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1 C_cl_g_tomo clusters_DES.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f C_cl_lin_nointerp cosmo2D_exact.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_cl_lin_nointerp cosmo2D_exact_fft.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft_cltomo.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_cl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_cl_mixed cosmo2D_exact_fft.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_mixed cosmo2D_exact_fft_cltomo.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f C_cl_mixed cosmo2D_exact_fft_optimize.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_nl_rescaled_nointerp cosmo2D_exact_fft.c /^double C_cl_nl_rescaled_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_nl_rescaled_nointerp cosmo2D_exact_fft_cltomo.c /^double C_cl_nl_rescaled_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_cl_non_Limber cosmo2D_exact.c /^double C_cl_non_Limber(int l, int ni, int nj){ \/\/includes RSD too!$/;" f C_cl_tomo cosmo2D_fourier.c /^double C_cl_tomo(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxies in bins ni, nj$/;" f C_cl_tomo_nointerp cosmo2D_fourier.c /^double C_cl_tomo_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f @@ -76,32 +88,32 @@ C_gI_lin_nointerp IA.c /^double C_gI_lin_nointerp(double s, int ni, int nj)$/;" C_gI_nointerp IA.c /^double C_gI_nointerp(double s, int ni, int nj)$/;" f C_ggl_IA IA.c /^double C_ggl_IA(double s, int nl, int ns)$/;" f C_ggl_IA_tab IA.c /^double C_ggl_IA_tab(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f -C_gk CMBxLSS.c /^double C_gk(double l, int ni)$/;" f -C_gk_nointerp CMBxLSS.c /^double C_gk_nointerp(double l, int nl)$/;" f -C_gk_wrapper CMBxLSS.c /^double C_gk_wrapper(double l,int ni, int nj){$/;" f +C_ggl_TATT cosmo2D_fullsky_TATT.c /^double C_ggl_TATT(double l, int nl, int ns)$/;" f +C_ggl_TATT_tab cosmo2D_fullsky_TATT.c /^double C_ggl_TATT_tab(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gk CMBxLSS_fourier.c /^double C_gk(double l, int ni)$/;" f +C_gk_nointerp CMBxLSS_fourier.c /^double C_gk_nointerp(double l, int nl)$/;" f +C_gk_wrapper CMBxLSS_real.c /^double C_gk_wrapper(double l,int ni, int nj){$/;" f C_gl_HOD_tomo cosmo2D_fourier.c /^double C_gl_HOD_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f C_gl_lin_IA_nointerp cosmo2D_exact.c /^double C_gl_lin_IA_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f -C_gl_lin_IA_nointerp cosmo2D_exact_fft.c /^double C_gl_lin_IA_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_gl_lin_nointerp cosmo2D_exact.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f -C_gl_lin_nointerp cosmo2D_exact_fft.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_gl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f C_gl_lin_nointerp_IA cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp_IA(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f -C_gl_mixed cosmo2D_exact_fft.c /^void C_gl_mixed(int L, int LMAX, int nl, int ns, double *Cl, double dev, double tolerance) {$/;" f C_gl_mixed cosmo2D_exact_fft_optimize.c /^void C_gl_mixed(int L, int LMAX, int nl, int ns, double *Cl, double dev, double tolerance) {$/;" f C_gl_non_Limber cosmo2D_exact.c /^double C_gl_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f C_gl_tomo cosmo2D_fourier.c /^double C_gl_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f C_gl_tomo_HOD_sys like_fourier_HOD.c /^double C_gl_tomo_HOD_sys(double ell,int zl,int zs)$/;" f C_gl_tomo_all covariances_real.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f C_gl_tomo_all covariances_real_binned.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_all covariances_real_binned_fullsky.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f C_gl_tomo_nointerp cosmo2D_fourier.c /^double C_gl_tomo_nointerp(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f C_gl_tomo_sys like_fourier.c /^double C_gl_tomo_sys(double ell,int zl,int zs)$/;" f C_gl_withIA_non_Limber cosmo2D_exact.c /^double C_gl_withIA_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f -C_kk CMBxLSS.c /^double C_kk(double l)$/;" f -C_kk_nointerp CMBxLSS.c /^double C_kk_nointerp(double l){$/;" f -C_ks CMBxLSS.c /^double C_ks(double l, int ni)$/;" f -C_ks_IA CMBxLSS.c /^double C_ks_IA(double s, int ni)$/;" f -C_ks_nointerp CMBxLSS.c /^double C_ks_nointerp(double l, int ns) {$/;" f -C_ks_wrapper CMBxLSS.c /^double C_ks_wrapper(double l,int ni, int nj){$/;" f +C_kk CMBxLSS_fourier.c /^double C_kk(double l)$/;" f +C_kk_nointerp CMBxLSS_fourier.c /^double C_kk_nointerp(double l){$/;" f +C_ks CMBxLSS_fourier.c /^double C_ks(double l, int ni)$/;" f +C_ks_IA CMBxLSS_fourier.c /^double C_ks_IA(double s, int ni)$/;" f +C_ks_nointerp CMBxLSS_fourier.c /^double C_ks_nointerp(double l, int ns) {$/;" f +C_ks_wrapper CMBxLSS_real.c /^double C_ks_wrapper(double l,int ni, int nj){$/;" f C_magnification_magnification magnification.c /^double C_magnification_magnification(double s) $/;" f C_magnification_magnification_tomo magnification.c /^double C_magnification_magnification_tomo(double s, int ni, int nj) \/\/shear tomography power spectra$/;" f C_pos_mag magnification.c /^double C_pos_mag(double s) $/;" f @@ -151,9 +163,10 @@ EXIT_MISSING_FILE basics.c 20;" d file: FILE_logPkR structs.c /^ char FILE_logPkR[500];$/;" m struct:__anon26 file: FMAX basics.c 25;" d file: FMIN basics.c 26;" d file: -FPT structs.c /^FPTpara FPT ={.k_min = 1.e-4, .k_max =1.e+3, .N = 70, .N_per_dec = 10, .N_AB = 7};$/;" v +FPT structs.c /^FPTpara FPT ={.k_min = 1.e-5, .k_max =1.e+3, .N = 800, .N_per_dec = 100, .N_AB = 7,.N_IA = 10};$/;" v FPT_bias_interface pt.c /^void FPT_bias_interface(void){$/;" f FPT_input pt.c /^void FPT_input(double k[FPT.N], double P[FPT.N]){$/;" f +FPT_input pt_cfastpt.c /^void FPT_input(double k[FPT.N], double P[FPT.N]){$/;" f FPTpara structs.c /^}FPTpara;$/;" t typeref:struct:__anon20 file: FREE_ARG basics.c 17;" d file: G02 HOD.c /^double G02 (double k, double a, int nz){\/\/needs to be devided by ngal(nz, a)^2$/;" f @@ -169,6 +182,7 @@ GRSpara GRS.c /^} GRSpara;$/;" t typeref:struct:__anon7 file: GRSpara_mt structs.c /^} GRSpara_mt;$/;" t typeref:struct:__anon25 file: G_taper cosmo2D_exact.c /^double G_taper(double k){$/;" f G_taper cosmo2D_exact_fft.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft_cltomo.c /^double G_taper(double k){$/;" f G_taper cosmo2D_exact_fft_optimize.c /^double G_taper(double k){$/;" f HOD_FILE structs.c /^ char HOD_FILE[500];$/;" m struct:__anon16 file: HOD_rm structs.c /^ double HOD_rm[5][2];$/;" m struct:__anon23 file: @@ -188,10 +202,14 @@ IA_JB_terms IA.h /^static double IA_JB_terms[500][13] = {{1.000000000E-03, 3.896 INV_FILE structs.c /^ char INV_FILE[500]; $/;" m struct:__anon9 file: I_11 halo.c /^double I_11 (double k,double a){\/\/look-up table for I11 integral$/;" f J0_binned covariances_real_binned.c /^double J0_binned(double l, double tmin, double tmax){$/;" f +J0_binned covariances_real_binned_fullsky.c /^double J0_binned(double l, double tmin, double tmax){$/;" f J2_binned covariances_real_binned.c /^double J2_binned(double l, double tmin, double tmax){$/;" f +J2_binned covariances_real_binned_fullsky.c /^double J2_binned(double l, double tmin, double tmax){$/;" f J4_binned covariances_real_binned.c /^double J4_binned(double l, double tmin, double tmax){$/;" f +J4_binned covariances_real_binned_fullsky.c /^double J4_binned(double l, double tmin, double tmax){$/;" f KE IA.h /^double KE[31] = {0. , -0.018, 0.013, 0.043, 0.091, 0.236, 0.449, 0.667, 0.827, 0.907, 0.916, 0.91 , 0.932, 0.901, 0.835, 0.735, 0.594, 0.427, 0.179, -0.025, -0.226, -0.423, -0.591, -0.754, -0.913, -1.061, -1.181, -1.301, -1.421, -1.541, -1.661};$/;" v K_CH0 pt.c /^double K_CH0(double k_mpch){$/;" f +K_CH0 pt_cfastpt.c /^double K_CH0(double k_mpch){$/;" f K_MPCH pt.c /^double K_MPCH(double k_ch0){$/;" f Kcorrect_File structs.c /^ char Kcorrect_File[200];$/;" m struct:__anon13 file: LD_term covariances_3D.c /^double LD_term(double k)$/;" f @@ -211,6 +229,8 @@ LF_red_Q structs.c /^ double LF_red_Q;$/;" m struct:__anon21 file: LF_red_Q structs.c /^ double LF_red_Q[2];$/;" m struct:__anon22 file: LF_red_alpha structs.c /^ double LF_red_alpha;$/;" m struct:__anon21 file: LF_red_alpha structs.c /^ double LF_red_alpha[2];$/;" m struct:__anon22 file: +LMAX cosmo2D_fullsky_TATT.c /^int LMAX = 100000;$/;" v +LMIN_tab cosmo2D_fullsky_TATT.c /^int LMIN_tab =20;$/;" v MASK_FILE structs.c /^ char MASK_FILE[500]; $/;" m struct:__anon9 file: MGSigma structs.c /^ double MGSigma;$/;" m struct:__anon10 file: MGSigma structs.c /^ double MGSigma;$/;" m struct:input_cosmo_params file: @@ -221,7 +241,7 @@ MGmu structs.c /^ double MGmu;$/;" m struct:__anon10 file: MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params file: MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params_mpp file: MGmu structs.c /^ double MGmu;$/;" m struct:__anon22 file: -MOR structs.c /^ double MOR[10];$/;" m struct:input_nuisance_params_mpp file: +MOR structs.c /^ double MOR[10];$/;" m struct:input_nuisance_params_mpp file: M_abs IA.c /^double M_abs(double mag, double a){ \/\/in h = 1 units, incl. Poggianti 1997 k+e-corrections$/;" f M_max basics.c /^ double M_max;$/;" m struct:__anon5 file: M_min basics.c /^ double M_min;$/;" m struct:__anon5 file: @@ -236,6 +256,8 @@ N200_completeness clusters_DES.c /^double N200_completeness(int nz, int nN){$/;" N200_max structs.c /^ double N200_max;$/;" m struct:__anon17 file: N200_min structs.c /^ double N200_min;$/;" m struct:__anon17 file: NG run_covariances_real.c /^int NG = 1;$/;" v +NG run_covariances_real_fullsky.c /^int NG = 1;$/;" v +NG run_covariances_real_fullsky_cltomo.c /^int NG = 1;$/;" v NOSN_DESdepth baryons2.h /^ static double NOSN_DESdepth[100][11]={{0.9990871, 0.9942591, 1.0002, 1.00047, 1.000687, 1.000818, 1.000885, 1.0009, 1.000897, 1.000886, 1.00089}{0.9981768, 1.002662, 0.9998689, 1.000279, 1.000493, 1.000659, 1.000789, 1.000858, 1.000879, 1.000869, 1.000865}{0.9961528, 0.9961901, 0.9987581, 0.9994543, 1.00001, 1.000412, 1.000683, 1.000806, 1.000857, 1.000861, 1.000846}{0.9951525, 1.001664, 0.9986309, 0.9995079, 0.9999267, 1.000239, 1.000615, 1.000766, 1.000805, 1.000801, 1.000796}{0.993446, 1.002933, 0.9979311, 0.9986836, 0.9992639, 0.999744, 1.00019, 1.000453, 1.000597, 1.000689, 1.000716}{0.9916882, 0.9997891, 0.9968021, 0.9979973, 0.9988605, 0.9995087, 1.000066, 1.000403, 1.000608, 1.000742, 1.000784}{0.9902664, 0.9987756, 0.9957517, 0.9969538, 0.9980728, 0.9988666, 0.9996142, 1.000122, 1.000457, 1.000657, 1.000731}{0.9876207, 0.9930046, 0.9937164, 0.9953918, 0.9970428, 0.9983358, 0.9993033, 0.9999552, 1.000359, 1.000627, 1.000727}{0.9856391, 0.9972358, 0.9924927, 0.9942844, 0.9961633, 0.9975275, 0.998842, 0.9996514, 1.000158, 1.000484, 1.000655}{0.9845015, 0.9919567, 0.9913063, 0.9932565, 0.9952277, 0.9969435, 0.9985198, 0.9994114, 0.9999946, 1.000463, 1.000744}{0.9836875, 0.9968837, 0.9909141, 0.9930097, 0.9949309, 0.996506, 0.9980387, 0.9989557, 0.9996413, 1.000268, 1.00064}{0.983795, 0.9922165, 0.9901434, 0.9921195, 0.9941539, 0.9956671, 0.9972383, 0.9983132, 0.9992231, 1.000169, 1.000634}{0.9825931, 0.9921804, 0.9895117, 0.9915154, 0.9937526, 0.9952751, 0.9970092, 0.9982727, 0.9992615, 1.000272, 1.000776}{0.9828572, 0.9923188, 0.9890413, 0.9907743, 0.9926206, 0.9945711, 0.9965121, 0.9979193, 0.9990701, 1.000163, 1.000728}{0.982006, 0.9919958, 0.9889263, 0.9905452, 0.9921124, 0.9941422, 0.9959442, 0.9974835, 0.9987711, 1.000099, 1.000794}{0.9815181, 0.9914807, 0.9893156, 0.9905051, 0.9918294, 0.9939538, 0.9958903, 0.9974026, 0.9988361, 1.00017, 1.00088}{0.9826476, 0.9912253, 0.9898301, 0.9905335, 0.9918535, 0.9937637, 0.9952965, 0.9968238, 0.9983165, 1.000026, 1.000991}{0.9851723, 0.9933035, 0.9899865, 0.9902679, 0.9916198, 0.9935511, 0.9954586, 0.9970029, 0.9985924, 1.000167, 1.001043}{0.9861359, 0.9974315, 0.9908848, 0.9911777, 0.9921975, 0.9936039, 0.9954555, 0.9969814, 0.9985772, 1.00038, 1.001325}{0.9853352, 0.9965792, 0.9917997, 0.9917847, 0.9924436, 0.9940194, 0.9958422, 0.9971039, 0.9987377, 1.000623, 1.001715}{0.9868989, 0.9894565, 0.9911528, 0.9907791, 0.9916185, 0.9931485, 0.9952429, 0.9967724, 0.9985476, 1.000901, 1.001963}{0.9874078, 0.9914928, 0.9923954, 0.9920421, 0.9926693, 0.9941049, 0.9958583, 0.9973405, 0.9988902, 1.001296, 1.00221}{0.9882466, 0.9957506, 0.9920802, 0.9916586, 0.9926923, 0.9945203, 0.9967057, 0.9977028, 0.9989871, 1.001365, 1.002326}{0.9889541, 0.9969507, 0.9928544, 0.9927846, 0.9936595, 0.9956319, 0.9972738, 0.9979735, 0.9991598, 1.001794, 1.00274}{0.9910725, 1.003288, 0.9948164, 0.9938642, 0.9942734, 0.9964796, 0.9976547, 0.9981243, 0.9995704, 1.002299, 1.003171}{0.991612, 1.000572, 0.9948057, 0.9942581, 0.9955301, 0.9973803, 0.9980875, 0.9986429, 1.000166, 1.002888, 1.003762}{0.9927216, 1.004224, 0.9964417, 0.9951001, 0.9962644, 0.9980016, 0.9990285, 0.9997606, 1.001042, 1.003449, 1.004179}{0.9928392, 0.9976285, 0.9966127, 0.9970327, 0.9972163, 0.9986229, 0.9998161, 1.000328, 1.001538, 1.004162, 1.00506}{0.9925588, 1.00339, 0.9975456, 0.9982378, 0.9986629, 1.000427, 1.001189, 1.001226, 1.001917, 1.004633, 1.005666}{0.9929198, 0.9990881, 1.00016, 1.000775, 0.9997344, 1.000605, 1.002179, 1.002231, 1.003046, 1.005883, 1.006658}{0.9912, 1.003587, 0.9995556, 1.000273, 1.001296, 1.002519, 1.003362, 1.002622, 1.003144, 1.006198, 1.00721}{0.9924668, 1.007759, 1.002022, 1.00312, 1.003589, 1.003283, 1.004416, 1.003777, 1.004282, 1.007389, 1.008403}{0.9934106, 1.007199, 1.002722, 1.002611, 1.003473, 1.004939, 1.005968, 1.005308, 1.005608, 1.008855, 1.009679}{0.993293, 1.012248, 1.004564, 1.004376, 1.005435, 1.006937, 1.007651, 1.006757, 1.006961, 1.010253, 1.010575}{0.9950129, 1.009506, 1.005703, 1.007051, 1.007243, 1.008309, 1.008934, 1.007938, 1.008516, 1.01157, 1.011518}{0.9972684, 1.014865, 1.006996, 1.007981, 1.007707, 1.009488, 1.011064, 1.010415, 1.00988, 1.012476, 1.012953}{0.9970944, 1.016503, 1.008368, 1.008679, 1.009433, 1.010268, 1.012856, 1.011721, 1.011109, 1.014025, 1.014322}{0.9985665, 1.01987, 1.009249, 1.010546, 1.011963, 1.012188, 1.014474, 1.013013, 1.01171, 1.015105, 1.01532}{0.9961019, 1.023212, 1.01126, 1.01226, 1.013097, 1.014205, 1.016591, 1.014386, 1.013304, 1.016813, 1.016566}{0.9968482, 1.026479, 1.011902, 1.013923, 1.015675, 1.015361, 1.018142, 1.016058, 1.014993, 1.019136, 1.019121}{0.9983679, 1.015936, 1.016924, 1.014886, 1.017203, 1.017793, 1.020341, 1.017897, 1.016684, 1.019715, 1.019596}{0.9998594, 1.017852, 1.019016, 1.0165, 1.018597, 1.019769, 1.022069, 1.019956, 1.018488, 1.021646, 1.021255}{1.001051, 1.020161, 1.019536, 1.018253, 1.019905, 1.021196, 1.024681, 1.022774, 1.021355, 1.024869, 1.024552}{1.002036, 1.015464, 1.019864, 1.022135, 1.023233, 1.024504, 1.027307, 1.024241, 1.022102, 1.025758, 1.025717}{1.001033, 1.015959, 1.021269, 1.024023, 1.026691, 1.024997, 1.027971, 1.025712, 1.025052, 1.027323, 1.027315}{1.003871, 1.015055, 1.024038, 1.02642, 1.028875, 1.026936, 1.029928, 1.028233, 1.026287, 1.029283, 1.029537}{1.007983, 1.022087, 1.027323, 1.029384, 1.031438, 1.02974, 1.032225, 1.029753, 1.028284, 1.031514, 1.031759}{1.00944, 1.026186, 1.031109, 1.032506, 1.033797, 1.032157, 1.034449, 1.031936, 1.030515, 1.033523, 1.033171}{1.006024, 1.024786, 1.034391, 1.034344, 1.036414, 1.03613, 1.037836, 1.035069, 1.033445, 1.035872, 1.034237}{1.005102, 1.02287, 1.034826, 1.035041, 1.038494, 1.038478, 1.040458, 1.037803, 1.035423, 1.038215, 1.036878}{1.010054, 1.023532, 1.036675, 1.037991, 1.041148, 1.040569, 1.043049, 1.039887, 1.038687, 1.040892, 1.039849}{1.018731, 1.032574, 1.040316, 1.040443, 1.043968, 1.042769, 1.045055, 1.042745, 1.041497, 1.043383, 1.042585}{1.019364, 1.037939, 1.043276, 1.039873, 1.045364, 1.044266, 1.045783, 1.044204, 1.043486, 1.045455, 1.044804}{1.017927, 1.034287, 1.046954, 1.045376, 1.049145, 1.048009, 1.049659, 1.047472, 1.045484, 1.048452, 1.046242}{1.020571, 1.039045, 1.050869, 1.050753, 1.051951, 1.050394, 1.052812, 1.050516, 1.0484, 1.050399, 1.048879}{1.02393, 1.04024, 1.053347, 1.052393, 1.054387, 1.052629, 1.056677, 1.054406, 1.05082, 1.05298, 1.051837}{1.024208, 1.039449, 1.053036, 1.053495, 1.057377, 1.056059, 1.06147, 1.057258, 1.053642, 1.055817, 1.054135}{1.023366, 1.040918, 1.056108, 1.05565, 1.058749, 1.058803, 1.062537, 1.059478, 1.057663, 1.05991, 1.056241}{1.027166, 1.044441, 1.059405, 1.058706, 1.062447, 1.06226, 1.064362, 1.061563, 1.060751, 1.062116, 1.059984}{1.029349, 1.052328, 1.062765, 1.061404, 1.06492, 1.065142, 1.066328, 1.064792, 1.063078, 1.064592, 1.062418}{1.030359, 1.052232, 1.066012, 1.063111, 1.067482, 1.067763, 1.070018, 1.067514, 1.065389, 1.066767, 1.063781}{1.037058, 1.053267, 1.069761, 1.066403, 1.07303, 1.072076, 1.07362, 1.070393, 1.068299, 1.07026, 1.066966}{1.04273, 1.056318, 1.072368, 1.071032, 1.077829, 1.075703, 1.075965, 1.07334, 1.07316, 1.07333, 1.068154}{1.043195, 1.055593, 1.076668, 1.074754, 1.078705, 1.076954, 1.078311, 1.078165, 1.075745, 1.07526, 1.070508}{1.041291, 1.058563, 1.079653, 1.076131, 1.08093, 1.078639, 1.082908, 1.0804, 1.077821, 1.078208, 1.073607}{1.040804, 1.060319, 1.081299, 1.080239, 1.08609, 1.083234, 1.085396, 1.082526, 1.08067, 1.081765, 1.076895}{1.049454, 1.067069, 1.083357, 1.084705, 1.088299, 1.088949, 1.089198, 1.085754, 1.083745, 1.084786, 1.080665}{1.049764, 1.071358, 1.08653, 1.087987, 1.093776, 1.092863, 1.093295, 1.090409, 1.088739, 1.087836, 1.083471}{1.04932, 1.072293, 1.089378, 1.091692, 1.096777, 1.096778, 1.097166, 1.093581, 1.091884, 1.091775, 1.086779}{1.051262, 1.080325, 1.092984, 1.094065, 1.099535, 1.100876, 1.099303, 1.097475, 1.095152, 1.095826, 1.090535}{1.057084, 1.079258, 1.098589, 1.097045, 1.102747, 1.104018, 1.104555, 1.09984, 1.096715, 1.098471, 1.093712}{1.058276, 1.082457, 1.100553, 1.100522, 1.104217, 1.106461, 1.107853, 1.103927, 1.101579, 1.10242, 1.096722}{1.058802, 1.084617, 1.101243, 1.101254, 1.111328, 1.109472, 1.11167, 1.108452, 1.105278, 1.105048, 1.099668}{1.062176, 1.086726, 1.103365, 1.106682, 1.114992, 1.11234, 1.11516, 1.111904, 1.107869, 1.108085, 1.102476}{1.069557, 1.090034, 1.108099, 1.108247, 1.115348, 1.114967, 1.119013, 1.114656, 1.110952, 1.111393, 1.105224}{1.071446, 1.088527, 1.112488, 1.111734, 1.120228, 1.121905, 1.123399, 1.118513, 1.114921, 1.115733, 1.110474}{1.078153, 1.090659, 1.117472, 1.117686, 1.12337, 1.128112, 1.129135, 1.123725, 1.119072, 1.119742, 1.113522}{1.079588, 1.095627, 1.12107, 1.12009, 1.129102, 1.132551, 1.133315, 1.126933, 1.122006, 1.123256, 1.116331}{1.077729, 1.101243, 1.123652, 1.124975, 1.133715, 1.135951, 1.136504, 1.129866, 1.125711, 1.126546, 1.118858}{1.080807, 1.109856, 1.127633, 1.128389, 1.135783, 1.140297, 1.140566, 1.134392, 1.129646, 1.129046, 1.120084}{1.082093, 1.116213, 1.132854, 1.132867, 1.139047, 1.141253, 1.143124, 1.139487, 1.134512, 1.132124, 1.124369}{1.083322, 1.115899, 1.138041, 1.136455, 1.142206, 1.142114, 1.147126, 1.143416, 1.138289, 1.135196, 1.128617}{1.085248, 1.110902, 1.141067, 1.137059, 1.144487, 1.144965, 1.15242, 1.14727, 1.14223, 1.139011, 1.132529}{1.08814, 1.110216, 1.143244, 1.135123, 1.148531, 1.150654, 1.15582, 1.151428, 1.148208, 1.143538, 1.136001}{1.090971, 1.116297, 1.144012, 1.137671, 1.15257, 1.156329, 1.158697, 1.15606, 1.151948, 1.147274, 1.13937}{1.095485, 1.139463, 1.148671, 1.146266, 1.157544, 1.161418, 1.16338, 1.160301, 1.15662, 1.15254, 1.143192}{1.100132, 1.142588, 1.154416, 1.153877, 1.162599, 1.166248, 1.166752, 1.164222, 1.161289, 1.158173, 1.146982}{1.102891, 1.138921, 1.159522, 1.156973, 1.166734, 1.170932, 1.170855, 1.168942, 1.165326, 1.161246, 1.150771}{1.101293, 1.122384, 1.160475, 1.158313, 1.171131, 1.175559, 1.176538, 1.174702, 1.168486, 1.162989, 1.154809}{1.099738, 1.120603, 1.161419, 1.161105, 1.175316, 1.180124, 1.181953, 1.177185, 1.17025, 1.165013, 1.1588}{1.106065, 1.125865, 1.165908, 1.168845, 1.17859, 1.184315, 1.186888, 1.181753, 1.172889, 1.169336, 1.162833}{1.115402, 1.13184, 1.171708, 1.176932, 1.181681, 1.188306, 1.191214, 1.18505, 1.176086, 1.174113, 1.16681}{1.123672, 1.140874, 1.177469, 1.179442, 1.184842, 1.192337, 1.195759, 1.18756, 1.180081, 1.178125, 1.170765}{1.12642, 1.153082, 1.178736, 1.182931, 1.188658, 1.19691, 1.19961, 1.191213, 1.185465, 1.183563, 1.175014}{1.129111, 1.153462, 1.180126, 1.18604, 1.192443, 1.201329, 1.202356, 1.195484, 1.190073, 1.188581, 1.179165}{1.132635, 1.158974, 1.183268, 1.189049, 1.197759, 1.206131, 1.207076, 1.199828, 1.194326, 1.191996, 1.182581}{1.136706, 1.163457, 1.186663, 1.19218, 1.2041, 1.211216, 1.210587, 1.203704, 1.198563, 1.195548, 1.185497}{1.140788, 1.167836, 1.189528, 1.197054, 1.208935, 1.216169, 1.21404, 1.207149, 1.201438, 1.198407, 1.188439}{1.148499, 1.158723, 1.196246, 1.201468, 1.207929, 1.218389, 1.216873, 1.210709, 1.207577, 1.202613, 1.194318}{1.156127, 1.160671, 1.202813, 1.203369, 1.206954, 1.220582, 1.219655, 1.215631, 1.212284, 1.206705, 1.200036}};$/;" v NOSN_LSSTdepth baryons2.h /^ static double NOSN_LSSTdepth[100][11]={{0.9990871, 1.000133, 1.000617, 1.000833, 1.0009, 1.000886, 1.000867, 0.9878576, 1.000801, 1.000749, 1.000715}{0.9981768, 0.9997068, 1.000381, 1.000694, 1.000858, 1.000872, 1.00083, 0.995508, 1.000724, 1.000658, 1.000609}{0.9961528, 0.998515, 0.9997834, 1.000469, 1.000806, 1.000864, 1.000809, 0.9853735, 1.000659, 1.000574, 1.000512}{0.9951525, 0.998318, 0.9996985, 1.000374, 1.000766, 1.000792, 1.000767, 0.9958565, 1.000612, 1.000501, 1.000417}{0.993446, 0.9975574, 0.9989863, 0.9998395, 1.000453, 1.000683, 1.000686, 0.9820089, 1.00052, 1.000395, 1.000288}{0.9916882, 0.9963793, 0.9984913, 0.9996287, 1.000403, 1.000731, 1.000741, 0.9882319, 1.000511, 1.000341, 1.000209}{0.9902664, 0.9951752, 0.9974713, 0.9990791, 1.000122, 1.000641, 1.000689, 0.984326, 1.000419, 1.000219, 1.000047}{0.9876207, 0.9930928, 0.9963073, 0.998537, 0.9999552, 1.000603, 1.000688, 0.9807855, 1.000394, 1.000149, 0.9999471}{0.9856391, 0.991806, 0.9952112, 0.9978884, 0.9996514, 1.000437, 1.00064, 0.9814614, 1.000424, 1.000146, 0.999886}{0.9845015, 0.9906494, 0.9944239, 0.9972642, 0.9994114, 1.000405, 1.000734, 0.9753778, 1.000478, 1.000127, 0.9998097}{0.9836875, 0.9900916, 0.9940022, 0.9968468, 0.9989557, 1.000183, 1.000632, 0.9831083, 1.0004, 1.000029, 0.9996705}{0.983795, 0.9893234, 0.9932074, 0.9959864, 0.9983132, 1.000079, 1.000639, 0.9746923, 1.000416, 0.9999778, 0.9995571}{0.9825931, 0.9886056, 0.9926158, 0.9956838, 0.9982727, 1.000179, 1.000808, 0.9788524, 1.000534, 0.9999876, 0.9994665}{0.9828572, 0.9882072, 0.9916844, 0.9949662, 0.9979193, 1.00005, 1.000772, 0.9746759, 1.000505, 0.999895, 0.9993012}{0.982006, 0.9880776, 0.9913309, 0.9945153, 0.9974835, 0.9999544, 1.00086, 0.9741422, 1.000599, 0.9999409, 0.9992889}{0.9815181, 0.9884373, 0.9910407, 0.9943767, 0.9974026, 1.000005, 1.000942, 0.9721654, 1.000817, 1.000107, 0.9993313}{0.9826476, 0.9889757, 0.9910631, 0.9940667, 0.9968238, 0.999833, 1.001089, 0.9698492, 1.000833, 1.000015, 0.9991377}{0.9851723, 0.9892497, 0.990923, 0.9939412, 0.9970029, 0.9999958, 1.001127, 0.9741022, 1.001027, 1.000144, 0.9992123}{0.9861359, 0.9900969, 0.9917504, 0.9939761, 0.9969814, 1.000206, 1.00143, 0.9688955, 1.001265, 1.000254, 0.9992284}{0.9853352, 0.9911479, 0.991967, 0.9943914, 0.9971039, 1.000406, 1.001748, 0.9720575, 1.001472, 1.000412, 0.9992497}{0.9868989, 0.9907339, 0.9911542, 0.9935663, 0.9967724, 1.000709, 1.002049, 0.9667217, 1.001722, 1.000525, 0.9992662}{0.9874078, 0.9916053, 0.9923064, 0.9944228, 0.9973405, 1.001121, 1.002273, 0.9661127, 1.001947, 1.000632, 0.9992156}{0.9882466, 0.9914083, 0.9920858, 0.9949594, 0.9977028, 1.001192, 1.002426, 0.9684049, 1.002326, 1.000943, 0.999492}{0.9889541, 0.9919629, 0.9930693, 0.9960131, 0.9979735, 1.001601, 1.002847, 0.9590086, 1.002825, 1.001124, 0.9994251}{0.9910725, 0.9938205, 0.993524, 0.9967187, 0.9981243, 1.002138, 1.003295, 0.9672187, 1.002842, 1.001187, 0.9994669}{0.991612, 0.9939363, 0.9948872, 0.9975624, 0.9986429, 1.002724, 1.003876, 0.9662113, 1.003491, 1.001673, 0.9997522}{0.9927216, 0.9962056, 0.9953699, 0.998195, 0.9997606, 1.00334, 1.00438, 0.967763, 1.004013, 1.002082, 0.9999397}{0.9928392, 0.9958447, 0.9969909, 0.9989061, 1.000328, 1.003979, 1.005187, 0.9665936, 1.004487, 1.002245, 0.9999204}{0.9925588, 0.9964191, 0.99831, 1.000541, 1.001226, 1.004468, 1.005766, 0.9662723, 1.004995, 1.002756, 1.000246}{0.9929198, 0.9985008, 1.000039, 1.000923, 1.002231, 1.005741, 1.00676, 0.9695206, 1.005618, 1.003157, 1.000401}{0.9912, 0.9981561, 1.000803, 1.002813, 1.002622, 1.005994, 1.007395, 0.9651554, 1.006228, 1.003546, 1.000573}{0.9924668, 1.000269, 1.003469, 1.003515, 1.003777, 1.007189, 1.00853, 0.9664472, 1.006758, 1.003809, 1.000871}{0.9934106, 1.000931, 1.003092, 1.005152, 1.005308, 1.008697, 1.009831, 0.9680073, 1.007733, 1.004586, 1.001356}{0.993293, 1.003147, 1.004829, 1.007089, 1.006757, 1.010173, 1.010591, 0.9703638, 1.008414, 1.005229, 1.00179}{0.9950129, 1.003867, 1.00702, 1.008422, 1.007938, 1.011491, 1.011609, 0.9709047, 1.009438, 1.005785, 1.002282}{0.9972684, 1.00496, 1.007619, 1.009809, 1.010415, 1.012453, 1.013104, 0.9721378, 1.010034, 1.006169, 1.002397}{0.9970944, 1.006401, 1.009016, 1.010735, 1.011721, 1.013889, 1.014316, 0.9741831, 1.010775, 1.006835, 1.002882}{0.9985665, 1.007202, 1.011249, 1.012692, 1.013013, 1.015096, 1.015378, 0.9736965, 1.011867, 1.007701, 1.003399}{0.9961019, 1.009568, 1.012648, 1.014693, 1.014386, 1.016856, 1.016559, 0.9758184, 1.012615, 1.008253, 1.003811}{0.9968482, 1.009982, 1.014793, 1.015904, 1.016058, 1.019053, 1.019128, 0.9756584, 1.013912, 1.008949, 1.004244}{0.9983679, 1.013583, 1.016304, 1.018491, 1.017897, 1.019687, 1.019382, 0.9671967, 1.01501, 1.01002, 1.005031}{0.9998594, 1.01827, 1.017812, 1.020196, 1.019956, 1.021583, 1.021843, 0.9752937, 1.016172, 1.01102, 1.005878}{1.001051, 1.018151, 1.019365, 1.021909, 1.022774, 1.024925, 1.024229, 0.9776072, 1.017173, 1.011658, 1.006485}{1.002036, 1.017783, 1.022622, 1.025188, 1.024241, 1.025766, 1.025283, 0.9827887, 1.018356, 1.012125, 1.006535}{1.001033, 1.019387, 1.025426, 1.025554, 1.025712, 1.027246, 1.026993, 0.9737962, 1.01999, 1.013091, 1.0071}{1.003871, 1.021027, 1.02811, 1.027679, 1.028233, 1.029198, 1.029412, 0.9815568, 1.02087, 1.014054, 1.008123}{1.007983, 1.0244, 1.03125, 1.030261, 1.029753, 1.031376, 1.030868, 0.9862401, 1.021954, 1.015295, 1.009288}{1.00944, 1.027845, 1.033481, 1.032627, 1.031936, 1.033571, 1.032446, 0.9848882, 1.023702, 1.016511, 1.010291}{1.006024, 1.029918, 1.035712, 1.036794, 1.035069, 1.035826, 1.033753, 0.9847908, 1.025475, 1.017562, 1.011191}{1.005102, 1.031912, 1.037141, 1.038853, 1.037803, 1.038379, 1.036795, 0.9798027, 1.026571, 1.018606, 1.011782}{1.010054, 1.033527, 1.040046, 1.041124, 1.039887, 1.041018, 1.039254, 0.9838922, 1.027899, 1.019839, 1.012515}{1.018731, 1.036556, 1.042279, 1.043241, 1.042745, 1.043508, 1.041161, 0.9908041, 1.029395, 1.021204, 1.013667}{1.019364, 1.040078, 1.043362, 1.044644, 1.044204, 1.045539, 1.043573, 0.9919914, 1.030891, 1.022785, 1.015269}{1.017927, 1.043549, 1.04769, 1.048502, 1.047472, 1.048418, 1.045024, 0.993035, 1.0331, 1.024348, 1.015807}{1.020571, 1.04638, 1.051798, 1.050779, 1.050516, 1.050744, 1.047556, 0.9940436, 1.03481, 1.025386, 1.016383}{1.02393, 1.048734, 1.053249, 1.053448, 1.054406, 1.053083, 1.049882, 0.9984639, 1.036531, 1.026367, 1.017283}{1.024208, 1.048807, 1.056114, 1.057179, 1.057258, 1.056089, 1.051705, 1.003976, 1.038371, 1.027742, 1.01854}{1.023366, 1.052462, 1.057657, 1.059962, 1.059478, 1.060065, 1.053898, 1.0067, 1.040166, 1.028242, 1.019115}{1.027166, 1.054976, 1.060889, 1.063086, 1.061563, 1.062662, 1.057985, 1.008522, 1.041993, 1.030061, 1.020473}{1.029349, 1.05753, 1.063664, 1.065365, 1.064792, 1.064804, 1.059863, 1.008147, 1.043658, 1.031934, 1.021886}{1.030359, 1.061722, 1.065253, 1.068233, 1.067514, 1.067256, 1.061586, 1.006808, 1.04533, 1.033238, 1.023268}{1.037058, 1.065904, 1.070489, 1.072474, 1.070393, 1.070794, 1.064449, 1.016213, 1.047429, 1.034911, 1.025009}{1.04273, 1.068821, 1.075169, 1.076193, 1.07334, 1.073775, 1.065726, 1.015253, 1.049484, 1.036597, 1.025325}{1.043195, 1.071738, 1.077607, 1.076856, 1.078165, 1.076168, 1.068371, 1.019622, 1.051018, 1.037743, 1.026186}{1.041291, 1.075443, 1.078869, 1.079614, 1.0804, 1.078931, 1.071574, 1.022847, 1.052759, 1.039042, 1.027604}{1.040804, 1.077356, 1.084476, 1.083688, 1.082526, 1.082661, 1.074508, 1.031782, 1.05485, 1.040864, 1.02936}{1.049454, 1.080185, 1.087103, 1.089489, 1.085754, 1.085525, 1.078127, 1.033596, 1.056864, 1.043123, 1.030677}{1.049764, 1.082308, 1.091287, 1.092962, 1.090409, 1.088437, 1.080917, 1.030083, 1.059434, 1.045276, 1.032164}{1.04932, 1.084721, 1.095076, 1.097083, 1.093581, 1.092444, 1.084366, 1.035451, 1.060851, 1.046972, 1.033616}{1.051262, 1.087202, 1.097318, 1.10055, 1.097475, 1.096802, 1.087018, 1.038041, 1.06213, 1.048583, 1.03476}{1.057084, 1.093115, 1.100395, 1.104097, 1.09984, 1.099341, 1.089662, 1.030394, 1.064539, 1.049983, 1.03516}{1.058276, 1.096174, 1.102613, 1.106707, 1.103927, 1.103086, 1.092986, 1.036263, 1.067332, 1.053086, 1.037908}{1.058802, 1.097307, 1.106731, 1.109946, 1.108452, 1.106002, 1.096217, 1.042938, 1.068919, 1.055199, 1.039791}{1.062176, 1.099937, 1.112927, 1.112922, 1.111904, 1.108938, 1.098455, 1.046809, 1.071215, 1.057243, 1.041596}{1.069557, 1.104345, 1.112653, 1.115808, 1.114656, 1.112541, 1.101321, 1.04773, 1.074588, 1.059443, 1.043916}{1.071446, 1.107872, 1.116854, 1.122769, 1.118513, 1.116677, 1.10633, 1.051211, 1.076237, 1.060768, 1.044942}{1.078153, 1.112459, 1.120918, 1.128583, 1.123725, 1.120518, 1.109308, 1.050261, 1.0782, 1.063827, 1.046725}{1.079588, 1.116328, 1.124602, 1.1328, 1.126933, 1.124326, 1.112077, 1.059981, 1.081263, 1.066033, 1.047758}{1.077729, 1.120151, 1.13097, 1.136068, 1.129866, 1.127842, 1.114165, 1.067503, 1.083789, 1.067275, 1.048657}{1.080807, 1.123815, 1.132457, 1.140371, 1.134392, 1.130688, 1.115926, 1.060237, 1.085228, 1.069042, 1.05119}{1.082093, 1.125905, 1.136493, 1.141355, 1.139487, 1.133644, 1.120747, 1.063682, 1.088255, 1.071955, 1.053206}{1.083322, 1.130733, 1.139309, 1.142261, 1.143416, 1.136554, 1.124543, 1.069424, 1.09122, 1.074204, 1.055139}{1.085248, 1.136699, 1.13995, 1.146515, 1.14727, 1.140057, 1.127671, 1.07774, 1.093481, 1.07652, 1.056715}{1.08814, 1.139325, 1.142987, 1.152521, 1.151428, 1.144354, 1.131582, 1.072844, 1.096287, 1.078496, 1.057852}{1.090971, 1.141334, 1.146505, 1.157233, 1.15606, 1.148515, 1.134758, 1.073333, 1.098579, 1.079658, 1.058971}{1.095485, 1.144081, 1.154071, 1.162027, 1.160301, 1.153766, 1.13897, 1.074318, 1.100985, 1.082832, 1.062248}{1.100132, 1.149368, 1.158468, 1.167072, 1.164222, 1.159118, 1.142491, 1.074847, 1.103514, 1.08537, 1.065751}{1.102891, 1.15234, 1.162026, 1.170916, 1.168942, 1.163356, 1.145058, 1.083404, 1.106108, 1.088122, 1.068659}{1.101293, 1.152464, 1.165324, 1.175801, 1.174702, 1.164989, 1.149572, 1.085959, 1.109772, 1.091548, 1.070397}{1.099738, 1.153435, 1.169137, 1.180562, 1.177185, 1.166574, 1.152777, 1.089389, 1.112971, 1.093574, 1.072098}{1.106065, 1.159966, 1.17639, 1.18489, 1.181753, 1.170289, 1.156814, 1.093684, 1.115805, 1.096415, 1.074624}{1.115402, 1.165353, 1.179121, 1.189069, 1.18505, 1.174827, 1.161029, 1.096018, 1.118808, 1.098539, 1.077381}{1.123672, 1.169903, 1.181993, 1.193055, 1.18756, 1.179463, 1.164378, 1.099716, 1.120996, 1.100288, 1.079987}{1.12642, 1.170768, 1.185573, 1.197856, 1.191213, 1.184631, 1.169136, 1.101501, 1.122876, 1.102498, 1.0823}{1.129111, 1.171975, 1.188897, 1.202254, 1.195484, 1.189597, 1.173026, 1.104276, 1.124655, 1.10438, 1.084567}{1.132635, 1.175786, 1.192512, 1.206374, 1.199828, 1.19359, 1.176356, 1.108263, 1.128092, 1.108451, 1.08617}{1.136706, 1.179027, 1.198199, 1.211738, 1.203704, 1.196958, 1.179599, 1.099145, 1.132963, 1.111912, 1.087297}{1.140788, 1.182159, 1.203679, 1.215726, 1.207149, 1.200292, 1.182522, 1.103301, 1.137009, 1.113749, 1.088428}{1.148499, 1.186609, 1.205698, 1.218072, 1.210709, 1.20427, 1.18904, 1.114122, 1.140493, 1.115861, 1.091389}{1.156127, 1.192781, 1.204867, 1.220389, 1.215631, 1.208145, 1.193821, 1.127786, 1.143867, 1.118459, 1.094282}};$/;" v NOSN_NOZCOOL_DESdepth baryons2.h /^ static double NOSN_NOZCOOL_DESdepth[100][11]={{0.9990932, 0.9997307, 1.00009, 1.000297, 1.000468, 1.000575, 1.000658, 1.000671, 1.000661, 1.000647, 1.000648}{0.9980975, 0.9990149, 0.999616, 0.9999627, 1.000178, 1.000362, 1.000532, 1.00062, 1.000651, 1.000647, 1.000644}{0.9963601, 0.9974836, 0.998541, 0.9991244, 0.9996414, 1.000051, 1.000393, 1.000549, 1.000615, 1.000625, 1.000614}{0.9953192, 0.9971, 0.9984213, 0.9991852, 0.9996231, 0.99997, 1.000394, 1.000542, 1.00057, 1.000565, 1.000571}{0.9937599, 0.9960001, 0.9976407, 0.998287, 0.9989116, 0.9994382, 0.9999653, 1.000241, 1.000358, 1.000424, 1.000467}{0.9921713, 0.9946356, 0.9966645, 0.9977173, 0.9985958, 0.9992668, 0.9998896, 1.000188, 1.000335, 1.000442, 1.000507}{0.9911154, 0.9935284, 0.9958957, 0.9968916, 0.9979616, 0.9987516, 0.9995395, 0.9999772, 1.000199, 1.000331, 1.000425}{0.9892273, 0.9916289, 0.9942042, 0.9954785, 0.9969727, 0.9982097, 0.9992463, 0.9998091, 1.000094, 1.000287, 1.000412}{0.9875901, 0.9902933, 0.9932279, 0.994587, 0.9962778, 0.9975412, 0.9988952, 0.9995868, 0.9999153, 1.000132, 1.000339}{0.9864441, 0.9890053, 0.9921165, 0.9935457, 0.9953473, 0.9969169, 0.9985777, 0.9993526, 0.9997528, 1.000096, 1.000419}{0.9862744, 0.9889519, 0.9921474, 0.9934864, 0.9951067, 0.996562, 0.9982073, 0.9989807, 0.9994138, 0.9998794, 1.000292}{0.9870366, 0.9886583, 0.9916546, 0.9927121, 0.9944819, 0.995919, 0.99757, 0.9984264, 0.9990015, 0.9997248, 1.000243}{0.9866316, 0.9878489, 0.9913512, 0.9922329, 0.9941248, 0.9955518, 0.9973387, 0.9983517, 0.9989693, 0.9997843, 1.000367}{0.9874055, 0.9881245, 0.9911093, 0.9916493, 0.9932264, 0.9950464, 0.9969949, 0.998081, 0.9988064, 0.9996644, 1.000313}{0.9870907, 0.9883318, 0.9912153, 0.9914913, 0.9927513, 0.9946258, 0.9965614, 0.997725, 0.998528, 0.999547, 1.000337}{0.9870452, 0.9886375, 0.992058, 0.9917518, 0.9927952, 0.9946132, 0.9965748, 0.9976923, 0.9985834, 0.999597, 1.000411}{0.9884296, 0.989003, 0.9925122, 0.9915496, 0.9926488, 0.9943623, 0.9961454, 0.9972314, 0.9980928, 0.9993598, 1.000438}{0.9916057, 0.9900805, 0.9932385, 0.9916872, 0.9926477, 0.9941389, 0.9961761, 0.997279, 0.9982197, 0.9994023, 1.00042}{0.993102, 0.9917895, 0.9941895, 0.9923441, 0.9931202, 0.9942561, 0.9962788, 0.9973493, 0.9982181, 0.9995445, 1.000665}{0.9926723, 0.9925039, 0.9953659, 0.9931181, 0.9934366, 0.9945307, 0.9965837, 0.997398, 0.9982583, 0.9996818, 1.000983}{0.9946157, 0.9937734, 0.995055, 0.992286, 0.9926826, 0.9936777, 0.996072, 0.9971158, 0.9980397, 0.9998163, 1.001142}{0.9955081, 0.9943024, 0.9961198, 0.9931735, 0.9934229, 0.9944189, 0.9964892, 0.9975397, 0.9982809, 1.000099, 1.001322}{0.9966049, 0.9947511, 0.9960162, 0.9929157, 0.993561, 0.9947167, 0.9972466, 0.9978881, 0.9983508, 1.000075, 1.001327}{0.9972773, 0.9942682, 0.9968872, 0.9937232, 0.9942379, 0.9956448, 0.9978312, 0.9981555, 0.9984126, 1.000326, 1.001648}{0.9997646, 0.9951153, 0.9987656, 0.9947918, 0.9948994, 0.9964467, 0.9980551, 0.9981272, 0.9986641, 1.000707, 1.002014}{1.000679, 0.99556, 0.9993752, 0.9950629, 0.9959462, 0.9971904, 0.9984795, 0.9986544, 0.999206, 1.001096, 1.002452}{1.002337, 0.9976968, 1.000637, 0.9954684, 0.9964248, 0.9974703, 0.9992472, 0.999601, 0.9998227, 1.001505, 1.00282}{1.002973, 0.9986632, 1.00083, 0.9971455, 0.9971872, 0.9979329, 0.9998502, 0.9999746, 1.000184, 1.002067, 1.003533}{1.002915, 1.000069, 1.001361, 0.9979789, 0.9984166, 0.999409, 1.000985, 1.000775, 1.000457, 1.00235, 1.004005}{1.00257, 0.9991983, 1.003722, 1.000079, 0.9990555, 0.9991723, 1.001801, 1.001619, 1.001369, 1.003302, 1.004785}{1.001088, 1.000795, 1.003551, 0.9996485, 1.000561, 1.000882, 1.002702, 1.00173, 1.001215, 1.00347, 1.005209}{1.002359, 1.001095, 1.005382, 1.001899, 1.002579, 1.001287, 1.003479, 1.002725, 1.002222, 1.004388, 1.006183}{1.003, 1.001773, 1.006223, 1.001165, 1.001938, 1.002606, 1.00492, 1.00413, 1.003275, 1.005593, 1.007326}{1.002988, 1.003312, 1.007635, 1.002329, 1.003181, 1.004101, 1.006218, 1.005293, 1.004356, 1.006719, 1.008063}{1.004337, 1.003205, 1.008787, 1.004814, 1.004653, 1.005224, 1.007217, 1.0061, 1.005676, 1.007766, 1.008795}{1.005919, 1.004181, 1.009157, 1.004883, 1.004648, 1.005927, 1.009051, 1.008281, 1.006665, 1.008355, 1.009968}{1.005442, 1.004771, 1.010597, 1.005081, 1.005647, 1.00633, 1.010413, 1.009271, 1.007629, 1.009597, 1.011191}{1.006389, 1.004999, 1.010828, 1.006327, 1.00801, 1.007905, 1.011677, 1.010167, 1.007809, 1.010381, 1.01196}{1.00343, 1.006927, 1.01232, 1.007628, 1.008513, 1.009356, 1.013218, 1.01107, 1.009045, 1.011715, 1.012947}{1.004678, 1.00934, 1.012807, 1.00854, 1.011239, 1.010243, 1.014392, 1.012382, 1.010455, 1.013763, 1.015208}{1.004989, 1.009385, 1.016603, 1.009363, 1.011862, 1.012088, 1.016063, 1.013803, 1.011686, 1.013963, 1.015482}{1.005869, 1.012763, 1.018104, 1.00985, 1.012466, 1.013391, 1.017277, 1.015405, 1.013173, 1.015533, 1.016875}{1.007674, 1.01602, 1.018264, 1.010856, 1.013115, 1.01412, 1.019377, 1.017875, 1.015649, 1.018389, 1.019802}{1.009024, 1.014881, 1.019279, 1.014545, 1.015857, 1.016538, 1.021314, 1.018697, 1.015906, 1.019044, 1.020639}{1.007104, 1.016244, 1.019031, 1.014656, 1.018565, 1.016679, 1.021618, 1.019809, 1.018523, 1.020057, 1.021911}{1.008424, 1.018716, 1.021031, 1.016431, 1.01996, 1.017921, 1.023024, 1.022006, 1.019364, 1.021579, 1.023732}{1.011152, 1.01884, 1.023647, 1.018601, 1.021587, 1.019929, 1.024905, 1.023053, 1.020945, 1.023412, 1.025626}{1.012067, 1.020046, 1.026239, 1.020926, 1.023121, 1.021834, 1.026463, 1.024745, 1.022795, 1.025149, 1.026947}{1.008652, 1.017388, 1.028336, 1.021937, 1.024833, 1.024902, 1.028951, 1.027025, 1.024948, 1.026739, 1.027648}{1.007377, 1.020061, 1.028849, 1.022146, 1.026115, 1.026397, 1.030898, 1.02923, 1.026323, 1.028846, 1.029825}{1.011355, 1.023812, 1.03015, 1.023414, 1.027964, 1.027816, 1.033015, 1.03077, 1.02916, 1.031056, 1.032362}{1.018771, 1.025361, 1.032436, 1.024718, 1.029983, 1.029602, 1.034632, 1.033134, 1.031398, 1.033017, 1.034727}{1.019358, 1.026515, 1.034719, 1.023818, 1.030478, 1.031079, 1.035115, 1.034163, 1.032879, 1.034614, 1.036581}{1.017122, 1.02742, 1.037724, 1.028072, 1.033334, 1.033829, 1.038257, 1.036879, 1.034362, 1.037117, 1.037593}{1.018583, 1.029911, 1.039772, 1.032201, 1.035829, 1.035219, 1.040382, 1.038744, 1.036388, 1.038629, 1.039802}{1.020594, 1.029713, 1.041078, 1.033443, 1.037495, 1.036671, 1.043134, 1.04185, 1.038274, 1.040766, 1.042347}{1.019591, 1.030845, 1.040644, 1.033568, 1.039265, 1.039623, 1.047514, 1.044277, 1.04063, 1.043125, 1.044244}{1.018306, 1.035253, 1.042526, 1.034602, 1.040492, 1.041525, 1.047947, 1.045835, 1.043877, 1.046394, 1.045776}{1.021931, 1.034614, 1.045083, 1.036486, 1.04311, 1.044093, 1.049218, 1.047479, 1.046383, 1.048161, 1.049058}{1.023456, 1.034401, 1.047134, 1.038101, 1.044908, 1.046281, 1.050631, 1.049824, 1.048232, 1.050153, 1.051167}{1.023277, 1.035306, 1.049181, 1.039497, 1.046855, 1.048355, 1.053298, 1.052096, 1.049908, 1.051758, 1.052199}{1.028796, 1.041277, 1.05281, 1.04274, 1.051192, 1.051934, 1.056691, 1.054368, 1.051984, 1.054428, 1.054722}{1.033892, 1.045781, 1.053944, 1.044568, 1.054291, 1.05445, 1.057954, 1.056383, 1.056223, 1.057055, 1.055605}{1.034017, 1.045687, 1.056453, 1.047106, 1.05497, 1.055159, 1.059609, 1.060529, 1.05826, 1.05844, 1.057597}{1.031904, 1.044902, 1.058536, 1.048274, 1.056318, 1.056326, 1.063401, 1.062109, 1.059609, 1.06082, 1.060202}{1.031053, 1.045362, 1.059791, 1.050957, 1.059593, 1.059909, 1.065124, 1.063466, 1.061791, 1.063773, 1.062851}{1.037227, 1.049213, 1.061046, 1.053349, 1.061104, 1.064594, 1.068452, 1.066382, 1.064452, 1.066028, 1.066031}{1.036695, 1.05255, 1.062305, 1.055988, 1.065435, 1.06767, 1.071435, 1.069878, 1.068644, 1.068624, 1.068415}{1.036028, 1.050456, 1.063861, 1.058892, 1.067556, 1.070901, 1.074494, 1.072822, 1.071113, 1.072017, 1.071253}{1.037309, 1.050255, 1.066365, 1.060485, 1.069591, 1.074316, 1.076468, 1.075815, 1.073701, 1.075475, 1.074498}{1.040511, 1.051939, 1.070887, 1.062721, 1.07218, 1.076544, 1.080701, 1.077451, 1.07473, 1.077636, 1.077279}{1.042104, 1.054964, 1.070958, 1.063811, 1.072852, 1.078514, 1.082845, 1.080218, 1.078482, 1.080578, 1.079828}{1.042628, 1.056844, 1.071134, 1.064989, 1.078297, 1.080331, 1.085342, 1.083739, 1.081504, 1.082799, 1.082273}{1.044806, 1.059755, 1.072768, 1.068877, 1.080959, 1.082243, 1.088248, 1.086884, 1.08364, 1.085347, 1.084551}{1.049816, 1.062614, 1.075773, 1.069639, 1.081204, 1.084694, 1.091862, 1.089072, 1.08621, 1.088088, 1.086757}{1.051474, 1.061548, 1.079081, 1.071259, 1.083711, 1.090229, 1.094829, 1.092006, 1.089552, 1.091374, 1.091228}{1.055308, 1.06502, 1.08281, 1.075223, 1.087038, 1.094914, 1.099431, 1.09645, 1.092751, 1.09466, 1.093754}{1.056096, 1.065105, 1.08543, 1.077417, 1.091462, 1.098158, 1.102788, 1.098817, 1.094822, 1.097447, 1.096122}{1.054801, 1.067159, 1.087099, 1.080829, 1.094749, 1.10067, 1.10518, 1.100931, 1.097707, 1.100083, 1.098252}{1.055591, 1.07149, 1.089306, 1.082985, 1.096116, 1.104133, 1.108713, 1.104792, 1.100998, 1.102098, 1.099142}{1.055832, 1.07592, 1.093371, 1.086172, 1.097439, 1.104705, 1.110471, 1.108526, 1.104728, 1.104538, 1.102912}{1.056058, 1.075877, 1.097423, 1.088426, 1.098691, 1.105201, 1.113404, 1.111529, 1.107656, 1.106973, 1.106654}{1.056802, 1.07458, 1.09911, 1.088221, 1.100444, 1.10751, 1.117658, 1.114434, 1.110944, 1.110149, 1.109968}{1.058263, 1.074981, 1.099587, 1.086278, 1.103826, 1.112395, 1.120258, 1.117719, 1.116054, 1.113685, 1.112715}{1.059694, 1.080116, 1.099282, 1.088447, 1.107238, 1.117268, 1.122386, 1.121693, 1.119044, 1.116634, 1.11538}{1.062822, 1.08144, 1.103175, 1.094686, 1.111301, 1.120798, 1.125631, 1.125125, 1.122746, 1.121333, 1.118755}{1.066134, 1.081248, 1.108034, 1.10027, 1.115396, 1.123986, 1.128326, 1.128246, 1.126601, 1.126396, 1.122154}{1.068097, 1.081561, 1.111848, 1.1027, 1.118398, 1.127229, 1.131551, 1.132112, 1.130113, 1.129045, 1.125511}{1.066944, 1.082484, 1.112707, 1.103432, 1.121576, 1.130809, 1.136313, 1.136954, 1.132493, 1.130091, 1.128985}{1.065822, 1.080405, 1.113466, 1.105403, 1.12465, 1.134341, 1.14097, 1.138824, 1.133681, 1.131501, 1.132418}{1.071168, 1.084485, 1.116019, 1.111435, 1.127525, 1.137501, 1.14466, 1.141698, 1.135688, 1.1352, 1.135831}{1.078982, 1.090705, 1.119341, 1.11787, 1.130365, 1.140475, 1.147286, 1.144004, 1.138242, 1.13927, 1.139178}{1.085763, 1.095858, 1.123347, 1.120002, 1.132818, 1.143439, 1.150102, 1.146083, 1.141563, 1.142661, 1.14247}{1.08716, 1.095782, 1.12374, 1.121561, 1.13502, 1.146586, 1.153225, 1.149449, 1.145577, 1.147036, 1.145824}{1.088528, 1.09546, 1.124206, 1.123185, 1.137253, 1.149627, 1.155892, 1.152636, 1.149195, 1.151073, 1.1491}{1.090355, 1.09795, 1.125889, 1.124543, 1.141169, 1.153037, 1.159585, 1.156119, 1.152732, 1.15379, 1.151929}{1.092484, 1.101343, 1.127871, 1.125796, 1.145903, 1.156714, 1.162547, 1.15938, 1.15629, 1.156595, 1.154451}{1.094652, 1.103853, 1.129288, 1.129583, 1.149447, 1.160297, 1.165454, 1.16226, 1.158585, 1.158962, 1.157003}{1.100106, 1.104015, 1.134086, 1.132102, 1.147288, 1.161998, 1.16723, 1.164076, 1.163772, 1.162346, 1.162344}{1.1055, 1.107, 1.138777, 1.132675, 1.145194, 1.16368, 1.168649, 1.168244, 1.167699, 1.165638, 1.167539}};$/;" v @@ -243,6 +265,7 @@ NOSN_NOZCOOL_LSSTdepth baryons2.h /^ static double NOSN_NOZCOOL_LSSTdepth[100][1 NOZCOOL_DESdepth baryons2.h /^ static double NOZCOOL_DESdepth[100][11]={{0.9985162, 0.9990644, 0.9993579, 0.9995421, 0.9997053, 0.9998427, 0.9999944, 1.000087, 1.000175, 1.000267, 1.000372}{0.9970993, 0.9980107, 0.9985687, 0.9989136, 0.9991069, 0.9992959, 0.9995091, 0.9996959, 0.9998575, 0.9999883, 1.000126}{0.9950728, 0.9963094, 0.9974101, 0.9979237, 0.9983466, 0.9986569, 0.9989661, 0.9991912, 0.9993935, 0.9995899, 0.9998028}{0.9937125, 0.9956226, 0.9969145, 0.9974468, 0.9976517, 0.9978492, 0.9982503, 0.9985379, 0.9987925, 0.999043, 0.9993391}{0.9919158, 0.994528, 0.9962646, 0.9965589, 0.9967023, 0.9969155, 0.9973193, 0.9976493, 0.9979785, 0.9983675, 0.9987863}{0.9908396, 0.9932565, 0.9951334, 0.9955348, 0.9957161, 0.9959677, 0.9964353, 0.9968486, 0.9972767, 0.9977793, 0.9983069}{0.9898224, 0.9922295, 0.9944029, 0.9946013, 0.9946397, 0.9947687, 0.995288, 0.9957687, 0.996299, 0.9969168, 0.9975582}{0.9882405, 0.9903662, 0.9925999, 0.9928451, 0.9931362, 0.9936194, 0.9943632, 0.994969, 0.9955513, 0.9962386, 0.9970125}{0.986594, 0.9891451, 0.9916765, 0.9917387, 0.9919326, 0.9922781, 0.993195, 0.9938432, 0.9944853, 0.9952641, 0.9961774}{0.9853322, 0.9875564, 0.9903588, 0.9904053, 0.9905252, 0.9909504, 0.992071, 0.9927582, 0.9934578, 0.9944114, 0.9955736}{0.9852575, 0.9879425, 0.9908382, 0.9903315, 0.9898735, 0.9899787, 0.9908723, 0.9914434, 0.9921364, 0.993182, 0.9944747}{0.9867572, 0.9883332, 0.9907473, 0.9895409, 0.988803, 0.9888349, 0.9895824, 0.9900832, 0.9907996, 0.9920814, 0.9936176}{0.9873684, 0.9882472, 0.9909266, 0.989082, 0.9878972, 0.987532, 0.9881744, 0.9888371, 0.9896698, 0.9911389, 0.9928493}{0.9881402, 0.9888719, 0.9907953, 0.988039, 0.9861927, 0.9858615, 0.9867193, 0.9874445, 0.9884321, 0.9900055, 0.991881}{0.987737, 0.9891748, 0.9904644, 0.9871633, 0.9847933, 0.9843788, 0.9853035, 0.986053, 0.9870345, 0.9887432, 0.990842}{0.9880309, 0.9892342, 0.9908377, 0.9870621, 0.9842894, 0.9833656, 0.9840967, 0.9847325, 0.9857942, 0.9875223, 0.9896919}{0.9884873, 0.9886889, 0.990319, 0.9856597, 0.983124, 0.98286, 0.9833624, 0.9837856, 0.984587, 0.9863045, 0.9887344}{0.9919616, 0.9903213, 0.9907753, 0.9851736, 0.9822748, 0.9814339, 0.9819891, 0.9822979, 0.983162, 0.9849718, 0.9875529}{0.9934404, 0.9923502, 0.9915889, 0.9856351, 0.9825537, 0.981076, 0.981229, 0.9813613, 0.9820003, 0.9838461, 0.9865873}{0.9944291, 0.9935311, 0.9922774, 0.9855407, 0.9818977, 0.9799404, 0.9801995, 0.9801362, 0.9808505, 0.982842, 0.98585}{0.996577, 0.9947131, 0.9919242, 0.9847322, 0.9807258, 0.9782983, 0.9787142, 0.9785738, 0.9791164, 0.9813252, 0.9845004}{0.997682, 0.9947723, 0.9914161, 0.9841598, 0.9798615, 0.9769809, 0.9770553, 0.9770143, 0.9776809, 0.9801065, 0.9833457}{0.9987193, 0.9952593, 0.9903264, 0.98262, 0.9780844, 0.9752269, 0.975983, 0.9759595, 0.9764026, 0.9785811, 0.9818796}{0.9996153, 0.9938562, 0.9905781, 0.9832832, 0.9784028, 0.9756175, 0.9759095, 0.9750916, 0.9747335, 0.9770267, 0.9807955}{1.002914, 0.9939896, 0.9920983, 0.984037, 0.9783325, 0.9754057, 0.9746416, 0.9731114, 0.9731749, 0.9759066, 0.9798493}{1.003968, 0.9945215, 0.9933578, 0.9838683, 0.978137, 0.9746065, 0.9734195, 0.9721727, 0.9722981, 0.9748579, 0.9788411}{1.007205, 0.9966487, 0.9941175, 0.9835255, 0.9774195, 0.9736171, 0.9729576, 0.9715268, 0.971268, 0.9738143, 0.9777378}{1.007593, 0.9975114, 0.9937038, 0.9841525, 0.9766054, 0.9723215, 0.9715795, 0.9702312, 0.9701166, 0.9728055, 0.9768661}{1.00782, 0.9984328, 0.9925589, 0.9843937, 0.9773429, 0.972332, 0.9712519, 0.9692422, 0.9684839, 0.9710837, 0.9755986}{1.006533, 0.9972628, 0.9938418, 0.9846264, 0.9763594, 0.970736, 0.9703358, 0.9684283, 0.9676625, 0.9703246, 0.9747926}{1.004952, 0.9994252, 0.9944492, 0.984126, 0.9769289, 0.9709816, 0.9696007, 0.9668545, 0.9657094, 0.9688982, 0.9736288}{1.007813, 0.9988501, 0.995617, 0.9860078, 0.9777349, 0.9699878, 0.9680203, 0.9654909, 0.9650138, 0.9681599, 0.9729108}{1.007853, 0.999249, 0.9963074, 0.9843464, 0.9762384, 0.9692748, 0.9674548, 0.9652589, 0.9646714, 0.9675583, 0.9723471}{1.008918, 1.00082, 0.997517, 0.9843173, 0.9753821, 0.9680706, 0.966301, 0.9644855, 0.9640122, 0.9670309, 0.9715}{1.011195, 0.9998062, 0.9981152, 0.9866823, 0.9753643, 0.9674792, 0.9659485, 0.9639022, 0.9635993, 0.9658278, 0.9701581}{1.013934, 1.000423, 0.997397, 0.984814, 0.9739777, 0.966796, 0.9661019, 0.9641685, 0.9628787, 0.9649573, 0.9700329}{1.013319, 1.001739, 0.9989523, 0.983553, 0.9734384, 0.9661499, 0.9654904, 0.9631569, 0.9617932, 0.9639543, 0.9692221}{1.01471, 1.002655, 0.9980797, 0.9844851, 0.9746326, 0.9658918, 0.9648742, 0.962065, 0.9599568, 0.9625816, 0.967891}{1.011097, 1.003437, 0.9981863, 0.9840528, 0.9731489, 0.9656473, 0.9645417, 0.9610852, 0.9590204, 0.9616272, 0.9670088}{1.011059, 1.005733, 0.9962771, 0.9828813, 0.9752031, 0.9637087, 0.9636278, 0.9604747, 0.9584192, 0.9620867, 0.9677138}{1.011036, 1.00573, 0.9998546, 0.9829705, 0.9741465, 0.9638714, 0.9634038, 0.9596795, 0.9581339, 0.9606145, 0.9661521}{1.012653, 1.009607, 1.000176, 0.9820662, 0.9732633, 0.9632056, 0.9619135, 0.9588123, 0.9574557, 0.9601509, 0.9654584}{1.015843, 1.013236, 0.9988285, 0.9819978, 0.9721729, 0.9613253, 0.9610875, 0.9590447, 0.9577155, 0.9605762, 0.9660072}{1.017574, 1.010435, 1.000642, 0.9852431, 0.9737283, 0.9617113, 0.9616824, 0.9583844, 0.9558063, 0.9580579, 0.9639769}{1.015156, 1.011009, 0.9987591, 0.9841751, 0.9745118, 0.9596979, 0.9592429, 0.956586, 0.9559982, 0.9574621, 0.9643424}{1.017355, 1.013185, 1.00003, 0.9846669, 0.9744451, 0.9601955, 0.959263, 0.9572932, 0.955226, 0.957112, 0.9640402}{1.021455, 1.012966, 1.002112, 0.9856953, 0.9750474, 0.9617738, 0.9598925, 0.9563804, 0.9548751, 0.9566919, 0.963339}{1.022833, 1.013593, 1.00388, 0.9867078, 0.9750369, 0.9620354, 0.9590325, 0.9562649, 0.9550488, 0.9566952, 0.9629691}{1.017776, 1.009473, 1.000804, 0.985495, 0.9729502, 0.9621015, 0.9587166, 0.9561235, 0.9550321, 0.9556714, 0.9617872}{1.016993, 1.01255, 1.001388, 0.9842783, 0.9728529, 0.9624398, 0.9593321, 0.9565325, 0.9534359, 0.955196, 0.9616464}{1.021291, 1.014474, 1.002319, 0.9845629, 0.9733022, 0.9622155, 0.9592815, 0.9549487, 0.9542785, 0.955175, 0.9621235}{1.02839, 1.014252, 1.003914, 0.984927, 0.9732694, 0.9615744, 0.9582911, 0.9555994, 0.9546729, 0.9552485, 0.9627008}{1.029594, 1.015875, 1.00578, 0.9837407, 0.971926, 0.9619916, 0.9563833, 0.9541938, 0.9538676, 0.954732, 0.9623523}{1.026929, 1.015773, 1.006922, 0.9844801, 0.9739179, 0.9604086, 0.9571339, 0.9553898, 0.9534214, 0.9550716, 0.9615871}{1.02785, 1.017125, 1.007398, 0.9877, 0.9740863, 0.9599283, 0.9580908, 0.9552597, 0.9528844, 0.9549449, 0.9622197}{1.029602, 1.015459, 1.007761, 0.9875783, 0.9735245, 0.9602751, 0.9586909, 0.9559302, 0.9526041, 0.9549958, 0.962705}{1.028605, 1.015621, 1.006126, 0.9855812, 0.972145, 0.9607636, 0.9610921, 0.9560013, 0.952296, 0.9543719, 0.9615884}{1.023619, 1.018435, 1.006291, 0.9843351, 0.9732153, 0.9600715, 0.95888, 0.9551185, 0.9532176, 0.9548984, 0.9614093}{1.028113, 1.017376, 1.008004, 0.9862378, 0.9728082, 0.9611857, 0.958235, 0.9545875, 0.9533419, 0.9542957, 0.9621708}{1.031442, 1.01711, 1.009068, 0.9853701, 0.972491, 0.9610766, 0.9567596, 0.9537858, 0.9533641, 0.9543147, 0.9619876}{1.031846, 1.017011, 1.009128, 0.9846738, 0.972553, 0.960306, 0.9565212, 0.9547602, 0.9530834, 0.9541428, 0.9612105}{1.034721, 1.021538, 1.010139, 0.9864801, 0.9764235, 0.9630388, 0.9589067, 0.9546113, 0.9523325, 0.9547786, 0.9623269}{1.039817, 1.02403, 1.013546, 0.988059, 0.9766506, 0.9642363, 0.9576677, 0.9538687, 0.9546199, 0.9553228, 0.9608834}{1.040318, 1.02347, 1.013975, 0.9881292, 0.9758269, 0.9611548, 0.9555345, 0.95516, 0.9537122, 0.9539323, 0.9603208}{1.039086, 1.021462, 1.013074, 0.9874348, 0.9745491, 0.9588746, 0.9570904, 0.9545224, 0.952572, 0.9537245, 0.9605266}{1.039347, 1.021479, 1.011726, 0.987986, 0.9756054, 0.9613854, 0.9575611, 0.9542247, 0.9527828, 0.9546288, 0.9611754}{1.042359, 1.023181, 1.01183, 0.9899553, 0.9749262, 0.9627809, 0.9586035, 0.9549351, 0.9532447, 0.9551744, 0.962374}{1.039938, 1.025484, 1.011274, 0.9904495, 0.9760652, 0.9624664, 0.9587732, 0.9557692, 0.9549663, 0.954448, 0.9624818}{1.038618, 1.021526, 1.010333, 0.9901791, 0.9754086, 0.9630167, 0.9591042, 0.9556274, 0.9544001, 0.9552607, 0.9630166}{1.039901, 1.020376, 1.010862, 0.9897712, 0.9755941, 0.9640722, 0.9577071, 0.9559872, 0.9548593, 0.9564936, 0.9639997}{1.042537, 1.021756, 1.015831, 0.9913366, 0.9770893, 0.9631477, 0.9593874, 0.9559218, 0.9542642, 0.956536, 0.9645226}{1.045302, 1.026582, 1.013542, 0.9909095, 0.9754694, 0.9624461, 0.9593555, 0.9560332, 0.9544481, 0.9570892, 0.964739}{1.046158, 1.026896, 1.011926, 0.989853, 0.9771835, 0.9619866, 0.9592484, 0.9561304, 0.9549889, 0.956874, 0.964707}{1.04737, 1.025562, 1.012045, 0.9903921, 0.9773395, 0.9618694, 0.9594663, 0.9570025, 0.9544491, 0.9567664, 0.9646614}{1.05017, 1.026887, 1.013581, 0.9891053, 0.976177, 0.9623594, 0.9609238, 0.9565615, 0.9542702, 0.9570743, 0.9648962}{1.050222, 1.025043, 1.015344, 0.9897984, 0.9775507, 0.9648207, 0.9615102, 0.9570051, 0.9549605, 0.9578077, 0.9662057}{1.055358, 1.026808, 1.014808, 0.992461, 0.977413, 0.9670813, 0.9633097, 0.9584976, 0.9557212, 0.9585014, 0.9666203}{1.055463, 1.025035, 1.016677, 0.993659, 0.9789638, 0.9680791, 0.9640518, 0.9586206, 0.9561442, 0.959116, 0.9672319}{1.052408, 1.026225, 1.018109, 0.9955378, 0.9800576, 0.9680957, 0.9638478, 0.9591144, 0.9568174, 0.9595814, 0.9675984}{1.054237, 1.029072, 1.017813, 0.9962823, 0.980173, 0.9681865, 0.9647693, 0.9599681, 0.9571648, 0.9591004, 0.9664384}{1.051992, 1.032305, 1.020061, 0.9974165, 0.9805999, 0.9666221, 0.9638092, 0.9601328, 0.9582195, 0.9585504, 0.967709}{1.049696, 1.032578, 1.022311, 0.9981032, 0.9810223, 0.965064, 0.9638867, 0.9609473, 0.9586289, 0.9580151, 0.9690011}{1.049315, 1.03111, 1.022535, 0.9966761, 0.9797312, 0.964697, 0.9646015, 0.9612701, 0.9592017, 0.959046, 0.9699821}{1.051575, 1.02982, 1.021906, 0.9931754, 0.9782448, 0.9659697, 0.9644143, 0.961625, 0.9611419, 0.9602187, 0.9705462}{1.053787, 1.032149, 1.020418, 0.9916076, 0.977664, 0.9672393, 0.9640416, 0.9631359, 0.9621616, 0.9611456, 0.9710939}{1.055293, 1.03449, 1.021068, 0.9939127, 0.97963, 0.9689292, 0.9655532, 0.9646643, 0.9636764, 0.9628055, 0.9718896}{1.056627, 1.032407, 1.022368, 0.996367, 0.9817577, 0.9706393, 0.9667906, 0.965995, 0.9652165, 0.9646262, 0.9727044}{1.057181, 1.030171, 1.024005, 0.9971503, 0.9829886, 0.971854, 0.9677207, 0.9677855, 0.96561, 0.9650222, 0.973626}{1.055894, 1.029149, 1.025455, 0.9960848, 0.983776, 0.971941, 0.9696919, 0.9695928, 0.9634336, 0.9638083, 0.974868}{1.054641, 1.0262, 1.026315, 0.9962362, 0.9843789, 0.9720269, 0.9721161, 0.9678344, 0.9621792, 0.9631379, 0.9760954}{1.058582, 1.027279, 1.026296, 1.00106, 0.984228, 0.972757, 0.973251, 0.9667037, 0.9621212, 0.9648972, 0.9766942}{1.064506, 1.03142, 1.02664, 1.006234, 0.9840228, 0.9737227, 0.9725318, 0.9665401, 0.9626362, 0.9669355, 0.9770426}{1.069863, 1.035123, 1.029287, 1.005706, 0.9842786, 0.974534, 0.9719435, 0.9667118, 0.9641131, 0.967839, 0.9775261}{1.072323, 1.033089, 1.030083, 1.004506, 0.98421, 0.9745901, 0.9720882, 0.9670179, 0.9648756, 0.9680838, 0.9787793}{1.074733, 1.032798, 1.030693, 1.004003, 0.9841396, 0.9746445, 0.9722395, 0.9676153, 0.9653134, 0.9684033, 0.9800037}{1.07657, 1.036, 1.02984, 1.003633, 0.985048, 0.975239, 0.9730104, 0.9685157, 0.9662992, 0.9688383, 0.9810842}{1.078007, 1.038705, 1.029073, 1.003137, 0.9865985, 0.9762019, 0.9738803, 0.9696762, 0.9677161, 0.9688345, 0.9820666}{1.079447, 1.039095, 1.028435, 1.004042, 0.9876231, 0.9771067, 0.9746908, 0.9708228, 0.9677277, 0.9692905, 0.9830406}{1.082143, 1.036817, 1.030899, 1.005277, 0.9867491, 0.9761215, 0.9738076, 0.9701971, 0.9680568, 0.9702355, 0.9842918}{1.084809, 1.036158, 1.033308, 1.005479, 0.9859003, 0.9751485, 0.9732687, 0.9704482, 0.9685983, 0.9711548, 0.9855087}};$/;" v NOZCOOL_LSSTdepth baryons2.h /^ static double NOZCOOL_LSSTdepth[100][11]={{0.9985162, 0.9993199, 0.9996571, 0.9998762, 1.000087, 1.000241, 1.00038, 0.9874492, 1.000462, 1.000488, 1.00046}{0.9970993, 0.9984401, 0.9989939, 0.9993586, 0.9996959, 0.9999431, 1.000153, 0.9949615, 1.00031, 1.000359, 1.000341}{0.9950728, 0.99721, 0.9981701, 0.9987224, 0.9991912, 0.9995433, 0.9998399, 0.9846464, 1.000114, 1.000191, 1.000194}{0.9937125, 0.9966709, 0.9975228, 0.9979819, 0.9985379, 0.9989512, 0.9994389, 0.9948458, 0.999882, 1.000008, 1.000024}{0.9919158, 0.9959686, 0.9966212, 0.9970025, 0.9976493, 0.9982821, 0.9988827, 0.9806759, 0.9995501, 0.9997314, 0.9997935}{0.9908396, 0.9948345, 0.9956238, 0.9960762, 0.9968486, 0.9976437, 0.9984712, 0.9865558, 0.999293, 0.9995258, 0.9995978}{0.9898224, 0.99401, 0.9945421, 0.9949367, 0.9957687, 0.9967637, 0.9977366, 0.982157, 0.9988613, 0.9991635, 0.9993019}{0.9882405, 0.9922166, 0.9929743, 0.9937787, 0.994969, 0.9960629, 0.9972459, 0.978283, 0.9985713, 0.9989311, 0.9990848}{0.986594, 0.9913207, 0.9917721, 0.992527, 0.9938432, 0.9950308, 0.9964767, 0.9783639, 0.998175, 0.9986206, 0.9988349}{0.9853322, 0.9900269, 0.9905117, 0.9911784, 0.9927582, 0.9941696, 0.9958919, 0.9718012, 0.9977971, 0.9983026, 0.998551}{0.9852575, 0.9904499, 0.990037, 0.9901812, 0.9914434, 0.9928794, 0.9948794, 0.9787572, 0.9971972, 0.9978555, 0.9981859}{0.9867572, 0.9904557, 0.989066, 0.9889866, 0.9900832, 0.9917823, 0.9940398, 0.9697994, 0.9967743, 0.9975004, 0.9978911}{0.9873684, 0.9906982, 0.9883353, 0.9876831, 0.9888371, 0.9907717, 0.993391, 0.9732644, 0.9963714, 0.9971622, 0.9975519}{0.9881402, 0.9908483, 0.9869491, 0.9860357, 0.9874445, 0.9896232, 0.9924168, 0.9683841, 0.9957739, 0.9966497, 0.9971271}{0.987737, 0.9906847, 0.9857763, 0.9846044, 0.986053, 0.9883215, 0.9914632, 0.9670286, 0.995217, 0.9962539, 0.9967728}{0.9880309, 0.9910657, 0.9853666, 0.9836066, 0.9847325, 0.9870404, 0.990341, 0.9640813, 0.994678, 0.9958439, 0.9964686}{0.9884873, 0.9906692, 0.9840317, 0.9829504, 0.9837856, 0.9858287, 0.9894533, 0.9609623, 0.9939795, 0.9952772, 0.9959316}{0.9919616, 0.9915383, 0.9835159, 0.9815206, 0.9822979, 0.9844123, 0.988367, 0.9642947, 0.9935292, 0.994905, 0.9956661}{0.9934404, 0.9923538, 0.9839765, 0.981107, 0.9813613, 0.9833332, 0.9873757, 0.9580669, 0.9928409, 0.9943645, 0.9952478}{0.9944291, 0.9935623, 0.9834114, 0.9800262, 0.9801362, 0.9822469, 0.9866614, 0.9603001, 0.9923265, 0.9939572, 0.9948483}{0.996577, 0.9933128, 0.9825157, 0.9783815, 0.9785738, 0.9807441, 0.9853593, 0.9538213, 0.9916133, 0.9933573, 0.9943931}{0.997682, 0.992858, 0.9818592, 0.9769319, 0.9770143, 0.9795312, 0.9841554, 0.9519718, 0.990742, 0.9925918, 0.9937674}{0.9987193, 0.9920142, 0.9800928, 0.9753789, 0.9759595, 0.9779916, 0.9828346, 0.9530831, 0.9902123, 0.992243, 0.9935628}{0.9996153, 0.9919084, 0.9805486, 0.9757808, 0.9750916, 0.9764748, 0.9817168, 0.9427015, 0.9896394, 0.991564, 0.992905}{1.002914, 0.9932457, 0.9807569, 0.9752506, 0.9731114, 0.9752077, 0.9809059, 0.9495139, 0.9886526, 0.9908806, 0.9924141}{1.003968, 0.9946131, 0.9807655, 0.9743576, 0.9721727, 0.9742344, 0.979863, 0.9473183, 0.9882312, 0.9906286, 0.9921536}{1.007205, 0.9963517, 0.979899, 0.9734813, 0.9715268, 0.973173, 0.9788626, 0.9474735, 0.9876233, 0.9900349, 0.991619}{1.007593, 0.9957046, 0.9799985, 0.9721485, 0.9702312, 0.9720828, 0.9780195, 0.9450699, 0.987008, 0.9894733, 0.9911047}{1.00782, 0.9941261, 0.9807009, 0.9720978, 0.9692422, 0.9703686, 0.9767853, 0.9433714, 0.9862637, 0.9888998, 0.9906875}{1.006533, 0.9951073, 0.9801574, 0.9706531, 0.9684283, 0.9695173, 0.9760786, 0.945038, 0.9854631, 0.988282, 0.9900844}{1.004952, 0.9959865, 0.9803008, 0.9708512, 0.9668545, 0.968086, 0.9749072, 0.9393259, 0.9848721, 0.9876886, 0.9896585}{1.007813, 0.9966355, 0.9818564, 0.9695861, 0.9654909, 0.9673063, 0.9742953, 0.9391832, 0.9843706, 0.9871884, 0.9892326}{1.007853, 0.9976079, 0.9800757, 0.968779, 0.9652589, 0.9667657, 0.9736807, 0.9390965, 0.9838304, 0.9868302, 0.9889526}{1.008918, 0.9990359, 0.9794961, 0.9677053, 0.9644855, 0.9662629, 0.9728099, 0.9400211, 0.9833621, 0.9864586, 0.9886374}{1.011195, 0.999334, 0.9805823, 0.9671512, 0.9639022, 0.965076, 0.9716026, 0.9389532, 0.9829867, 0.986046, 0.9883251}{1.013934, 0.9986785, 0.9789239, 0.9666393, 0.9641685, 0.9641444, 0.9715395, 0.938708, 0.9824371, 0.9853178, 0.9875976}{1.013319, 1.000708, 0.9780864, 0.966023, 0.9631569, 0.9630151, 0.9707446, 0.9393768, 0.9818889, 0.9850299, 0.9873902}{1.01471, 1.000278, 0.9792829, 0.9656863, 0.962065, 0.9618008, 0.9695537, 0.937209, 0.9813453, 0.9844607, 0.9869117}{1.011097, 1.000528, 0.9780283, 0.9654215, 0.9610852, 0.9606573, 0.9687878, 0.9376981, 0.9807241, 0.9840203, 0.9863908}{1.011059, 0.9990288, 0.9788302, 0.9633743, 0.9604747, 0.9611269, 0.9693995, 0.9359455, 0.9805237, 0.983746, 0.9861102}{1.011036, 1.000926, 0.978727, 0.9639701, 0.9596795, 0.9597121, 0.9674848, 0.9259711, 0.9801115, 0.9832935, 0.9858232}{1.012653, 1.004785, 0.9777527, 0.9628619, 0.9588123, 0.9591652, 0.9675828, 0.9318586, 0.9796135, 0.9829572, 0.9857003}{1.015843, 1.002287, 0.9775878, 0.9612766, 0.9590447, 0.9596434, 0.9675261, 0.9321616, 0.9791708, 0.9827951, 0.9855385}{1.017574, 1.003227, 0.9793081, 0.9616984, 0.9583844, 0.9571156, 0.9656276, 0.9353347, 0.9784472, 0.9815157, 0.9843095}{1.015156, 1.002167, 0.979435, 0.9595758, 0.956586, 0.9564438, 0.9660953, 0.9254839, 0.9786653, 0.9814136, 0.9838968}{1.017355, 1.002074, 0.9799997, 0.9601522, 0.9572932, 0.955854, 0.9657789, 0.9310073, 0.9781804, 0.9810376, 0.9839653}{1.021455, 1.00448, 0.9810138, 0.9614073, 0.9563804, 0.9554556, 0.9648322, 0.9335285, 0.9776868, 0.9809792, 0.9840233}{1.022833, 1.00612, 0.9810048, 0.9614203, 0.9562649, 0.955536, 0.9644665, 0.9302552, 0.9775705, 0.9807373, 0.9835995}{1.017776, 1.002813, 0.9792473, 0.9614963, 0.9561235, 0.954613, 0.9635121, 0.9284942, 0.9774587, 0.9803217, 0.9835903}{1.016993, 1.004005, 0.978376, 0.9617543, 0.9565325, 0.9541365, 0.963653, 0.9219057, 0.9769133, 0.9800094, 0.9831575}{1.021291, 1.004533, 0.9787566, 0.9616252, 0.9549487, 0.9539803, 0.9640606, 0.9239504, 0.9764562, 0.9796404, 0.9828183}{1.02839, 1.006059, 0.9791597, 0.9608969, 0.9555994, 0.9539092, 0.9639278, 0.9287523, 0.9761035, 0.9795477, 0.9828007}{1.029594, 1.008264, 0.9776505, 0.9609838, 0.9541938, 0.9533617, 0.9639591, 0.9281905, 0.9762188, 0.9802046, 0.9832507}{1.026929, 1.008804, 0.9789738, 0.9591675, 0.9553898, 0.953705, 0.9630997, 0.9273589, 0.9760983, 0.9796644, 0.9826217}{1.02785, 1.008667, 0.9810391, 0.9595553, 0.9552597, 0.953811, 0.9636742, 0.9265427, 0.9762879, 0.9797274, 0.9822286}{1.029602, 1.008801, 0.980483, 0.959915, 0.9559302, 0.9535515, 0.9635221, 0.9286339, 0.9764812, 0.9794029, 0.9821287}{1.028605, 1.007625, 0.9784428, 0.9608316, 0.9560013, 0.9530213, 0.962465, 0.932202, 0.9762432, 0.9791735, 0.9821997}{1.023619, 1.0084, 0.9787098, 0.9600468, 0.9551185, 0.9535613, 0.9622385, 0.9327011, 0.9765626, 0.9786984, 0.9817197}{1.028113, 1.009256, 0.9794145, 0.9609337, 0.9545875, 0.9531586, 0.9630493, 0.933073, 0.9768383, 0.9789369, 0.9817176}{1.031442, 1.009784, 0.978626, 0.9601284, 0.9537858, 0.9527918, 0.9630911, 0.9307449, 0.9768656, 0.9792126, 0.982014}{1.031846, 1.010975, 0.9780981, 0.9595175, 0.9547602, 0.9528452, 0.9624962, 0.9267575, 0.9768006, 0.9794244, 0.9823625}{1.034721, 1.012259, 0.9816676, 0.9622278, 0.9546113, 0.9534055, 0.9631066, 0.9336411, 0.9769339, 0.9794329, 0.9822986}{1.039817, 1.015246, 0.9824731, 0.9634446, 0.9538687, 0.953919, 0.9616176, 0.9310289, 0.9768846, 0.9792332, 0.9817447}{1.040318, 1.015946, 0.9819715, 0.9593572, 0.95516, 0.9530122, 0.9614582, 0.9337959, 0.9764135, 0.9786549, 0.9813617}{1.039086, 1.015692, 0.9812026, 0.9585729, 0.9545224, 0.9523986, 0.9625912, 0.9350186, 0.9765392, 0.978743, 0.981431}{1.039347, 1.014336, 0.9821791, 0.9605821, 0.9542247, 0.9534305, 0.9629488, 0.9409949, 0.977561, 0.9796078, 0.9820379}{1.042359, 1.014647, 0.9822299, 0.9620208, 0.9549351, 0.9539315, 0.9638115, 0.9405081, 0.9774193, 0.9801564, 0.9821217}{1.039938, 1.014013, 0.9829194, 0.9615642, 0.9557692, 0.9531659, 0.9636821, 0.9354796, 0.9775012, 0.980321, 0.9822331}{1.038618, 1.012467, 0.9826992, 0.9624067, 0.9556274, 0.9536834, 0.9649098, 0.9382652, 0.9770355, 0.9806881, 0.9823173}{1.039901, 1.011869, 0.9823861, 0.9627528, 0.9559872, 0.9551187, 0.9650901, 0.9386059, 0.9769432, 0.9809651, 0.9821653}{1.042537, 1.017418, 0.9840228, 0.962281, 0.9559218, 0.9550822, 0.9653225, 0.930566, 0.9777942, 0.9804523, 0.9813815}{1.045302, 1.017381, 0.98295, 0.9616636, 0.9560332, 0.9556033, 0.9656143, 0.9333537, 0.9779253, 0.9816836, 0.9824145}{1.046158, 1.015088, 0.9832853, 0.9613835, 0.9561304, 0.9554722, 0.9657529, 0.9373935, 0.977739, 0.982089, 0.9831181}{1.04737, 1.015096, 0.9842274, 0.9613325, 0.9570025, 0.9553063, 0.9655962, 0.9391774, 0.9783349, 0.9829557, 0.9838875}{1.05017, 1.017282, 0.9826442, 0.962061, 0.9565615, 0.9556187, 0.9660889, 0.9379413, 0.9798245, 0.9837376, 0.9849096}{1.050222, 1.018862, 0.9836964, 0.9644561, 0.9570051, 0.9562964, 0.9673368, 0.9387344, 0.9795581, 0.983479, 0.9845019}{1.055358, 1.017657, 0.9845542, 0.9664191, 0.9584976, 0.9569137, 0.9676457, 0.9354232, 0.9797357, 0.9846132, 0.9847975}{1.055463, 1.018658, 0.9857205, 0.9672627, 0.9586206, 0.9576056, 0.968065, 0.9422771, 0.9805815, 0.984794, 0.9845066}{1.052408, 1.021715, 0.9876617, 0.9672086, 0.9591144, 0.958063, 0.9680936, 0.9475803, 0.9809042, 0.9844674, 0.9841287}{1.054237, 1.021042, 0.9877085, 0.9674651, 0.9599681, 0.9577122, 0.9677878, 0.9396882, 0.9808161, 0.9849296, 0.9851453}{1.051992, 1.022105, 0.9885813, 0.9658383, 0.9601328, 0.9572092, 0.9692205, 0.939815, 0.9821269, 0.986376, 0.9860347}{1.049696, 1.024174, 0.988841, 0.9642063, 0.9609473, 0.9567115, 0.9699689, 0.9431092, 0.9834154, 0.9877397, 0.98689}{1.049315, 1.026725, 0.9873781, 0.9646773, 0.9612701, 0.9569111, 0.9701702, 0.9481807, 0.984082, 0.9883223, 0.9871981}{1.051575, 1.02644, 0.9857126, 0.9660213, 0.961625, 0.9580635, 0.9707893, 0.9416428, 0.9842517, 0.9878443, 0.986771}{1.053787, 1.025793, 0.9843327, 0.9667484, 0.9631359, 0.9591795, 0.9716798, 0.9399593, 0.9842567, 0.9873621, 0.9863503}{1.055293, 1.02414, 0.9865509, 0.9682756, 0.9646643, 0.9608635, 0.9725993, 0.9387312, 0.9848, 0.9882398, 0.9880793}{1.056627, 1.025326, 0.9883634, 0.9700771, 0.965995, 0.9626176, 0.9733135, 0.93754, 0.9854771, 0.9893576, 0.9900981}{1.057181, 1.025045, 0.9893146, 0.9709947, 0.9677855, 0.9635238, 0.9739312, 0.943105, 0.9864695, 0.9905412, 0.9916137}{1.055894, 1.025171, 0.9895612, 0.9710926, 0.9695928, 0.9623864, 0.9753066, 0.9441631, 0.9880546, 0.9917978, 0.992056}{1.054641, 1.026476, 0.9902312, 0.9716382, 0.9678344, 0.961282, 0.9763976, 0.9464226, 0.9894396, 0.9926233, 0.9924889}{1.058582, 1.030195, 0.9942636, 0.9729459, 0.9667037, 0.9623805, 0.976953, 0.9478522, 0.9900457, 0.9935202, 0.9932949}{1.064506, 1.030492, 0.9939504, 0.9739569, 0.9665401, 0.9643248, 0.9773992, 0.9476329, 0.9905059, 0.994016, 0.994215}{1.069863, 1.030688, 0.993482, 0.9739905, 0.9667118, 0.9660056, 0.978241, 0.9485114, 0.9910109, 0.9941908, 0.9951512}{1.072323, 1.031027, 0.9929482, 0.9740593, 0.9670179, 0.9662763, 0.979611, 0.9478492, 0.9911848, 0.993771, 0.9963523}{1.074733, 1.031742, 0.9928806, 0.97413, 0.9676153, 0.9665363, 0.9808272, 0.9485173, 0.991303, 0.9941296, 0.9975291}{1.07657, 1.032332, 0.9926923, 0.9747803, 0.9685157, 0.9666481, 0.9819303, 0.9496551, 0.9920617, 0.9959633, 0.997648}{1.078007, 1.031588, 0.9939244, 0.9757996, 0.9696762, 0.966661, 0.982994, 0.9398754, 0.9935651, 0.9976868, 0.9970559}{1.079447, 1.030863, 0.9951221, 0.9766038, 0.9708228, 0.9666954, 0.9838529, 0.9414697, 0.9952446, 0.998519, 0.9965344}{1.082143, 1.031599, 0.9954156, 0.9755674, 0.9701971, 0.9676287, 0.985209, 0.9487696, 0.9957888, 0.9982953, 0.9980869}{1.084809, 1.033819, 0.9945537, 0.9745444, 0.9704482, 0.9685379, 0.9863066, 0.9592831, 0.9963144, 0.9993805, 0.9996036}};$/;" v NR_END basics.c 16;" d file: +NTAB_TATT cosmo2D_fullsky_TATT.c /^int NTAB_TATT = 60;$/;" v N_AB structs.c /^ int N_AB;$/;" m struct:__anon20 file: N_DS basics.c /^ int N_DS;$/;" m struct:__anon6 file: N_IA structs.c /^ int N_IA;$/;" m struct:__anon20 file: @@ -278,9 +301,11 @@ N_thetaH basics.c /^ int N_thetaH;$/;" m struct:__anon6 file: N_z GRS.c /^ int N_z;$/;" m struct:__anon7 file: N_z structs.c /^ int N_z;$/;" m struct:__anon25 file: Nabins structs.c /^ int Nabins;$/;" m struct:__anon26 file: +Nchi structs.c /^ int Nchi;$/;" m struct:__anon27 file: Ncl structs.c /^ int Ncl;$/;" m struct:__anon9 file: Ncos structs.c /^ int Ncos;$/;" m struct:__anon9 file: Ndata structs.c /^ int Ndata;$/;" m struct:__anon9 file: +Nell structs.c /^ int Nell;$/;" m struct:__anon27 file: Nkbins structs.c /^ int Nkbins;$/;" m struct:__anon26 file: Ntab basics.c /^}Ntab;$/;" t typeref:struct:__anon6 file: Ntable basics.c /^Ntab Ntable = {$/;" v @@ -296,17 +321,24 @@ POW4 basics.c 35;" d file: PT_AB pt.h /^static double PT_AB[7][70]={{-2.1024937749e-14, -3.3317686284e-14, -5.2794957251e-14, -8.3644863773e-14, -1.3249669417e-13, -2.0981691528e-13, -3.3209178755e-13, -5.2522570327e-13, -8.2967929846e-13, -1.3081263591e-12, -2.0564134478e-12, -3.2179083906e-12, -4.9992198442e-12, -7.6785847041e-12, -1.1581497781e-11, -1.6958530617e-11, -2.3611953877e-11, -2.9932339654e-11, -3.0665502589e-11, -1.2193571997e-11, 5.6424473650e-11, 2.3824909004e-10, 6.4779725600e-10, 1.4645539607e-09, 2.9114043576e-09, 5.1592167002e-09, 8.2173165203e-09, 1.2174298554e-08, 1.7622105574e-08, 2.4351547758e-08, 3.0565723812e-08, 3.5651871841e-08, 3.9290301006e-08, 4.1030836495e-08, 4.1101396653e-08, 3.8922483438e-08, 3.4779227303e-08, 2.9804812529e-08, 2.4598062581e-08, 1.9623372501e-08, 1.5172466295e-08, 1.1402215546e-08, 8.3508292331e-09, 5.9742563095e-09, 4.1838702398e-09, 2.8738474167e-09, 1.9395131170e-09, 1.2880603209e-09, 8.4292324310e-10, 5.4423247230e-10, 3.4705142937e-10, 2.1879856446e-10, 1.3649181356e-10, 8.4316379645e-11, 5.1608877176e-11, 3.1321023265e-11, 1.8852550922e-11, 1.1248155893e-11, 6.6590240823e-12, 3.9234803101e-12, 2.3037328204e-12, 1.3482727449e-12, 7.8685472652e-13, 4.5809370308e-13, 2.6611893572e-13, 1.5449594605e-13, 9.0336081778e-14, 4.9964739555e-14, 3.0704285651e-14, 2.1664808656e-14},$/;" v PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d2$/;" f PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate PT_AB[0] - Pd1d2$/;" f +PT_d1d2 pt_cfastpt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d2$/;" f PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d3$/;" f PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate PT_AB[5]$/;" f +PT_d1d3 pt_cfastpt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d3$/;" f PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[2]$/;" f PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate PT_AB[2]$/;" f +PT_d1s2 pt_cfastpt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[2]$/;" f PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[1]$/;" f PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate PT_AB[1]$/;" f +PT_d2d2 pt_cfastpt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[1]$/;" f PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[3]$/;" f PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate PT_AB[3]$/;" f +PT_d2s2 pt_cfastpt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[3]$/;" f PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[4]$/;" f PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate PT_AB[4]$/;" f +PT_s2s2 pt_cfastpt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[4]$/;" f PT_sigma4 pt.c /^double PT_sigma4(double k_coverH0){$/;" f +PT_sigma4 pt_cfastpt.c /^double PT_sigma4(double k_coverH0){$/;" f P_2_s_max basics.c /^ double P_2_s_max;$/;" m struct:__anon5 file: P_2_s_min basics.c /^ double P_2_s_min;$/;" m struct:__anon5 file: P_DW GRS.c /^double P_DW(double k, double mu, double a){$/;" f @@ -357,7 +389,12 @@ SN_WFIRST structs.c /^ int SN_WFIRST;$/;" m struct:__anon9 file: SQR basics.c 31;" d file: SRD structs.c /^ int SRD;$/;" m struct:__anon9 file: SVD_inversion basics.c /^void SVD_inversion(gsl_matrix *cov, gsl_matrix *inverseSVD,int Nmatrix)$/;" f +S_integrands_cl structs.c /^ double*** S_integrands_cl; \/\/ galaxy density nonlimber integrand$/;" m struct:__anon27 file: +S_integrands_sh structs.c /^ double*** S_integrands_sh; \/\/ galaxy shape nonlimber integrand$/;" m struct:__anon27 file: T baryons.c /^ const gsl_interp2d_type *T = gsl_interp2d_bilinear;$/;" m struct:__anon2 file: +TATT_GI_E pt_cfastpt.c /^double TATT_GI_E (double k_coverH0, double a, double C1, double C2, double b_ta){$/;" f +TATT_II_BB pt_cfastpt.c /^double TATT_II_BB (double k_coverH0, double a, double C1, double C2, double b_ta,double C1_2, double C2_2, double b_ta_2){$/;" f +TATT_II_EE pt_cfastpt.c /^double TATT_II_EE (double k_coverH0, double a, double C1, double C2, double b_ta, double C1_2, double C2_2, double b_ta_2){$/;" f T_lin_minus_COSEBIS EBfunctions.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f T_lin_minus_COSEBIS coefficients.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f T_lin_minus_integrand_COSEBIS EBfunctions.c /^double T_lin_minus_integrand_COSEBIS(double t, void *params)$/;" f @@ -392,13 +429,14 @@ W_calc_j2 EBfunctions.c /^double W_calc_j2(double ell,int ORDER,double max,doubl W_cluster cluster.c /^double W_cluster(double a, double nz,double nN){$/;" f W_cluster clusters_DES.c /^double W_cluster(double a, double nz,double nN){$/;" f W_gal cosmo2D_fourier.c /^double W_gal(double a, double nz){$/;" f -W_k CMBxLSS.c /^double W_k(double a, double fK){$/;" f +W_k CMBxLSS_fourier.c /^double W_k(double a, double fK){$/;" f W_kappa cosmo2D_fourier.c /^double W_kappa(double a, double fK, double nz){$/;" f W_mag cosmo2D_fourier.c /^double W_mag(double a, double fK, double nz){$/;" f W_rm covariances_fourier_HOD.c /^double W_rm(double a, double nz){$/;" f -W_source IA.c /^double W_source(double a, double nz){$/;" f +W_source cosmo2D_fourier.c /^double W_source(double a, double nz){$/;" f Y_minus EBfunctions.c /^void Y_minus(double x, double eta, double *ym)$/;" f Y_plus EBfunctions.c /^void Y_plus(double x, double eta, double *yp)$/;" f +Ytransform structs.c /^ int Ytransform;$/;" m struct:__anon9 file: Z1 redshift.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f Z1 redshift_spline.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f Z2 redshift.c /^int Z2(int Nbin){ \/\/ find z2 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f @@ -414,6 +452,8 @@ ZSC redshift_spline.c /^int ZSC(int Nbin){$/;" f Z_SPLINE_TYPE redshift_spline.c 2;" d file: Z_minus EBfunctions.c /^double Z_minus(double vartheta,double *array)$/;" f Z_plus EBfunctions.c /^double Z_plus(double vartheta, double *array)$/;" f +Zcl1 redshift_spline.c /^int Zcl1(int Nbin){\/\/ find zcl1 of tomography combination (zcl1,zcl2) constituting galaxy clustering tomography bin Nbin$/;" f +Zcl2 redshift_spline.c /^int Zcl2(int Nbin){ \/\/ find zcl2 of tomography combination (zcl1,zcl2) constituting galaxy clustering tomography bin Nbin$/;" f a inv_cov.py /^a = np.sort(LA.eigvals(cor))$/;" v a inv_cov.py /^a = np.sort(LA.eigvals(cov))$/;" v a inv_cov.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v @@ -477,6 +517,7 @@ b1_powerlaw HOD.c /^double b1_powerlaw(double z, int ni){$/;" f b2 structs.c /^ double b2[10]; \/* quadratic bias parameter for redshift bin i *\/$/;" m struct:__anon15 file: b2_from_b1 HOD.c /^double b2_from_b1(double b1){$/;" f b3nl_from_b1 HOD.c /^double b3nl_from_b1 (double b1){$/;" f +b_TA cosmo2D_fullsky_TATT.c /^double b_TA(double a, double nz){$/;" f b_a structs.c /^ double b_a; \/\/assembly bias$/;" m struct:__anon16 file: b_cluster cluster.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f b_cluster clusters_DES.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f @@ -486,16 +527,23 @@ b_lin covariances_3D.c /^double b_lin (double k1x, double k1y, double k2x, doubl b_lin_cov covariances_3D.c /^double b_lin_cov(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f b_lin_cov_mu covariances_3D.c /^double b_lin_cov_mu(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f b_lin_mu covariances_3D.c /^double b_lin_mu(double k1,double k2, double m, double a){$/;" f +b_mag structs.c /^ double b_mag[10];$/;" m struct:input_nuisance_params file: +b_mag structs.c /^ double b_mag[10];$/;" m struct:input_nuisance_params_mpp file: b_mag structs.c /^ double b_mag[10]; \/*amplitude of magnification bias, b_mag[i] = 5*s[i]+beta[i] -2 *\/$/;" m struct:__anon15 file: b_mt structs.c /^ double b_mt[10][2];$/;" m struct:__anon25 file: b_ngmatched halo.c /^double b_ngmatched(double a, double n_cmv){$/;" f b_source halo.c /^double b_source(double a){ \/\/lookup table for b1 of source galaxies$/;" f +b_ta_z structs.c /^ double b_ta_z[10]; \/\/b_ta, per bin (like.IA = 6), or use b_ta_z[0] with like.IA = 5$/;" m struct:__anon21 file: baopara BAO.c /^}baopara;$/;" t typeref:struct:__anon1 file: +bary structs.c /^ double bary[3];$/;" m struct:input_nuisance_params file: bary structs.c /^barypara bary ={.isPkbary=0};$/;" v +bary_Q1 structs.c /^ double bary_Q1[2];$/;" m struct:__anon22 file: +bary_Q2 structs.c /^ double bary_Q2[2];$/;" m struct:__anon22 file: +bary_Q3 structs.c /^ double bary_Q3[2];$/;" m struct:__anon22 file: baryons structs.c /^ char baryons[300];$/;" m struct:__anon18 file: baryons structs.c /^ int baryons;$/;" m struct:__anon9 file: barypara structs.c /^}barypara;$/;" t typeref:struct:__anon26 file: -beam_SPT CMBxLSS.c /^double beam_SPT(double l){$/;" f +beam_SPT CMBxLSS_fourier.c /^double beam_SPT(double l){$/;" f beta_c covariances_3D.c /^double beta_c(double k1x,double k1y,double k2x,double k2y)$/;" f beta_ia structs.c /^ double beta_ia;$/;" m struct:input_nuisance_params file: beta_ia structs.c /^ double beta_ia; \/\/beta IA see Joachimi2012$/;" m struct:__anon21 file: @@ -527,16 +575,22 @@ bias_zphot_shear structs.c /^ double bias_zphot_shear[10];$/;" m struct:__anon2 bias_zphot_shear structs.c /^ double bias_zphot_shear[10][2];$/;" m struct:__anon22 file: bin_cov_NG_cl_cl_tomo covariances_real.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_cl_cl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_cl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_cl_gl_tomo covariances_real.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_cl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_cl_shear_tomo covariances_real.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_cl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_gl_gl_tomo covariances_real.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_gl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_gl_shear_tomo covariances_real.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_gl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_shear_shear_tomo covariances_real.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bin_cov_NG_shear_shear_tomo covariances_real_binned.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f bs2 structs.c /^ double bs2[10]; \/* leading order tidal bias for redshift bin i *\/$/;" m struct:__anon15 file: bs2_from_b1 HOD.c /^double bs2_from_b1 (double b1){$/;" f c1rhocrit_ia structs.c /^ double c1rhocrit_ia;$/;" m struct:__anon21 file: @@ -612,7 +666,7 @@ cor patch_cov_HOD.py /^cor = np.zeros((ndata,ndata))$/;" v cor patch_cov_Rmin.py /^cor = np.zeros((ndata,ndata))$/;" v cos basics.c /^struct cos{$/;" s file: cosmax structs.c /^ double cosmax;$/;" m struct:__anon9 file: -cosmology structs.c /^cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0};$/;" v +cosmology structs.c /^cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0};$/;" v cosmopara structs.c /^}cosmopara;$/;" t typeref:struct:__anon10 file: count_rows init.c /^int count_rows(char* filename,const char delimiter){$/;" f count_rows init_basic.c /^int count_rows(char* filename,const char delimiter){$/;" f @@ -689,16 +743,19 @@ cov_NG_cl_cgl covariances_cluster.c /^double cov_NG_cl_cgl (double l1,double l2, cov_NG_cl_cgl_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cgl_HOD (double l1,double l2, int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f cov_NG_cl_cl_real covariances_real.c /^double cov_NG_cl_cl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f cov_NG_cl_cl_real_binned covariances_real_binned.c /^double cov_NG_cl_cl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_cl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_cl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f cov_NG_cl_cl_tomo covariances_fourier.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f cov_NG_cl_cl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f cov_NG_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cl_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f cov_NG_cl_gl_real covariances_real.c /^double cov_NG_cl_gl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f cov_NG_cl_gl_real_binned covariances_real_binned.c /^double cov_NG_cl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_gl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_gl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f cov_NG_cl_gl_tomo covariances_fourier.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f cov_NG_cl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f cov_NG_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_gl_tomo_HOD(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f cov_NG_cl_shear_real covariances_real.c /^double cov_NG_cl_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm){$/;" f cov_NG_cl_shear_real_binned covariances_real_binned.c /^double cov_NG_cl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_cl_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm){$/;" f cov_NG_cl_shear_tomo covariances_fourier.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f cov_NG_cl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f cov_NG_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_shear_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f @@ -714,11 +771,13 @@ cov_NG_gk_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ks(double l1,doubl cov_NG_gk_ss covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ss(double l1,double l2, int zl, int zs1, int zs2){$/;" f cov_NG_gl_gl_real covariances_real.c /^double cov_NG_gl_gl_real(double theta1, double theta2, int z1l,int z1s, int z2l, int z2s){$/;" f cov_NG_gl_gl_real_binned covariances_real_binned.c /^double cov_NG_gl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_gl_gl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_gl_gl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f cov_NG_gl_gl_tomo covariances_fourier.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f cov_NG_gl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f cov_NG_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_gl_tomo_HOD(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f cov_NG_gl_shear_real covariances_real.c /^double cov_NG_gl_shear_real(double theta1, double theta2, int z1l,int z1s, int z3, int z4, int pm){$/;" f cov_NG_gl_shear_real_binned covariances_real_binned.c /^double cov_NG_gl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_gl_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_gl_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm){$/;" f cov_NG_gl_shear_tomo covariances_fourier.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f cov_NG_gl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f cov_NG_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_shear_tomo_HOD(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f @@ -733,15 +792,22 @@ cov_NG_shear_cgl covariances_cluster.c /^double cov_NG_shear_cgl (double l1,doub cov_NG_shear_rebin covariances_real.c /^double cov_NG_shear_rebin(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f cov_NG_shear_shear_real covariances_real.c /^double cov_NG_shear_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm1, int pm2){ \/\/pm1 = pm2 = 1 for C++, pm1=pm2 = 0 for C--, pm1 = 1, pm2 = 0 for C+-$/;" f cov_NG_shear_shear_real_binned covariances_real_binned.c /^double cov_NG_shear_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_shear_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f cov_NG_shear_shear_tomo covariances_fourier.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f cov_NG_shear_shear_tomo covariances_fourier_SSC.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f cov_N_N covariances_cluster.c /^double cov_N_N(int nzc1,int nN1, int nzc2, int nN2){$/;" f cov_cgl_N covariances_cluster.c /^double cov_cgl_N(double l,int nzc1,int nN1, int nzs,int nzc2, int nN2){$/;" f cov_cl_N covariances_cluster.c /^double cov_cl_N(double l,int nl1,int nl2, int nzc, int nN){$/;" f cov_cl_N_HOD covariances_fourier_HOD.c /^double cov_cl_N_HOD(double l,int nl1,int nl2, int nzc, int nN){$/;" f +cov_cl_cl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_cl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_cl_gl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_gl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_cl_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm, int FLAG_NG, double *theta, double *dtheta){$/;" f cov_ggl_N covariances_cluster.c /^double cov_ggl_N(double l,int nzl,int nzs, int nzc, int nN){$/;" f cov_ggl_N_HOD covariances_fourier_HOD.c /^double cov_ggl_N_HOD(double l,int nzl,int nzs, int nzc, int nN){$/;" f +cov_gl_gl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_gl_gl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_gl_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_gl_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm, int FLAG_NG, double *theta, double *dtheta){$/;" f cov_shear_N covariances_cluster.c /^double cov_shear_N(double l,int ns1,int ns2, int nzc, int nN){$/;" f +cov_shear_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_shear_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm1,int pm2, int FLAG_NG, double *theta, double *dtheta){$/;" f coverH0 structs.c /^ double coverH0; \/\/units for comoving distances - speeds up code$/;" m struct:__anon10 file: covfile inv_cov.py /^covfile = np.genfromtxt(infile)$/;" v covfile patch_cov_HOD.py /^covfile = np.genfromtxt(infile)$/;" v @@ -785,6 +851,7 @@ eta_ia structs.c /^ double eta_ia[2]; \/\/eta_other IA see Joachimi2012$/;" m s eta_ia_highz structs.c /^ double eta_ia_highz;$/;" m struct:input_nuisance_params file: eta_ia_highz structs.c /^ double eta_ia_highz; \/\/uncertainty in high z evolution$/;" m struct:__anon21 file: eta_ia_highz structs.c /^ double eta_ia_highz[2]; \/\/additional uncertainty at high z$/;" m struct:__anon22 file: +eta_ia_tt structs.c /^ double eta_ia_tt; \/\/same as eta_ia, for TT$/;" m struct:__anon21 file: example_Cl examples.c /^void example_Cl (){$/;" f example_Cov examples.c /^void example_Cov(){$/;" f example_pdelta examples.c /^void example_pdelta(){$/;" f @@ -804,17 +871,19 @@ f_a GRS.c /^double f_a(double a){$/;" f f_c HOD.c /^double f_c(int nz){$/;" f f_c structs.c /^ double f_c;$/;" m struct:input_HOD_params file: f_chi_for_Psi_cl cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f f_chi_for_Psi_cl cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f f_chi_for_Psi_cl_Mag cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f f_chi_for_Psi_cl_Mag cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f f_chi_for_Psi_cl_RSD cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f f_chi_for_Psi_cl_RSD cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f -f_chi_for_Psi_sh cosmo2D_exact_fft.c /^void f_chi_for_Psi_sh(double* chi_ar, int Nchi, double* f_chi_ar, int ns) {$/;" f f_chi_for_Psi_sh cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh(double* chi_ar, int Nchi, double* f_chi_ar, int ns) {$/;" f -f_chi_for_Psi_sh_IA cosmo2D_exact_fft.c /^void f_chi_for_Psi_sh_IA(double* chi_ar, int Nchi, double* f_chi_IA_ar, int ns) {$/;" f f_chi_for_Psi_sh_IA cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh_IA(double* chi_ar, int Nchi, double* f_chi_IA_ar, int ns) {$/;" f f_growth cosmo2D_exact.c /^double f_growth(double z){$/;" f f_growth cosmo2D_exact_fft.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft_cltomo.c /^double f_growth(double z){$/;" f f_growth cosmo2D_exact_fft_optimize.c /^double f_growth(double z){$/;" f f_red_LF IA.c /^double f_red_LF(double mag, double a){$/;" f f_rsd cosmo2D_fourier.c /^double f_rsd (double aa){$/;" f @@ -823,21 +892,25 @@ f_sky structs.c /^ double f_sky; $/;" m struct:__anon25 file: f_tinker halo.c /^double f_tinker(double n, double a_in)$/;" f fc structs.c /^ double fc; \/\/central occupation$/;" m struct:__anon16 file: fc_rm structs.c /^ double fc_rm[2];$/;" m struct:__anon23 file: +fft_int structs.c /^fft_optimize fft_int;$/;" v +fft_optimize structs.c /^} fft_optimize;$/;" t typeref:struct:__anon27 file: filename structs.c /^ char filename[200]; \/* output file name prefix *\/$/;" m struct:__anon24 file: fill_class_parameters cosmo3D.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f fill_class_parameters cosmo3D_april7.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f filter_cov patch_cov_HOD.py /^def filter_cov(cov,mask):$/;" f filter_cov patch_cov_Rmin.py /^def filter_cov(cov,mask):$/;" f -filter_cov_fourier covariances_real.c /^void filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +filter_cov_fourier covariances_real.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f filter_cov_fourier covariances_real_binned.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +filter_cov_fourier covariances_real_binned_fullsky.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f flat_prior structs.c /^flat_priorpara flat_prior;$/;" v flat_priorpara structs.c /^}flat_priorpara;$/;" t typeref:struct:__anon23 file: fnu_tinker halo.c /^double fnu_tinker(double n, double a)$/;" f +fprint_parser cosmo3D.c /^void fprint_parser(struct file_content * fc,int parser_length){$/;" f fraction_Pdelta_baryon_from_sims_DES baryons.c /^double fraction_Pdelta_baryon_from_sims_DES(double k,double z)$/;" f fraction_Pdelta_baryon_from_spline_DES baryons.c /^double fraction_Pdelta_baryon_from_spline_DES(double k,double z)$/;" f fred structs.c /^ double fred[10];$/;" m struct:__anon21 file: free_baryon_spline_interpolation_to_TNG100 baryons.c /^void free_baryon_spline_interpolation_to_TNG100(){$/;" f -free_class_structs cosmo3D.c /^void free_class_structs( $/;" f +free_class_structs cosmo3D.c /^void free_class_structs($/;" f free_class_structs cosmo3D_april7.c /^void free_class_structs( $/;" f free_double_matrix basics.c /^void free_double_matrix(double **m, long nrl, long nrh, long ncl, long nch)$/;" f free_double_vector basics.c /^void free_double_vector(double *v, long nl, long nh)$/;" f @@ -846,6 +919,12 @@ fs_2 reduced_shear.c /^double fs_2(double k1x, double k1y, double k2x, double k2 fs_3 covariances_3D.c /^double fs_3(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y)$/;" f fsat HOD.c /^double fsat(int nz,double a){$/;" f fsat_rm redmagic.c /^double fsat_rm(double a){$/;" f +func_for_cov_G_cl covariances_real_binned_fullsky.c /^double func_for_cov_G_cl(double l, int *ar){$/;" f +func_for_cov_G_cl_gl covariances_real_binned_fullsky.c /^double func_for_cov_G_cl_gl(double l, int *ar){$/;" f +func_for_cov_G_cl_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_cl_shear(double l, int *ar){$/;" f +func_for_cov_G_gl covariances_real_binned_fullsky.c /^double func_for_cov_G_gl(double l, int *ar){$/;" f +func_for_cov_G_gl_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_gl_shear(double l, int *ar){$/;" f +func_for_cov_G_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_shear(double l, int *ar){$/;" f func_for_growfac cosmo3D.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f func_for_growfac cosmo3D_april7.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f fwhm structs.c /^ double fwhm; \/\/ beam fwhm in rad$/;" m struct:__anon14 file: @@ -859,8 +938,10 @@ g_tomo redshift.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zb g_tomo redshift_spline.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zbin$/;" f galpara structs.c /^}galpara;$/;" t typeref:struct:__anon15 file: galsample structs.c /^ char galsample[256];$/;" m struct:__anon13 file: -gbias structs.c /^galpara gbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.bs2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.b1_function = &bgal_z, .b_mag ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; \/\/default: point to old bgal_z routin$/;" v +gbias structs.c /^galpara gbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.bs2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.b1_function = &b1_per_bin, .b_mag ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; \/\/default: point to old bgal_z routin$/;" v +get_FPT_IA pt_cfastpt.c /^void get_FPT_IA(void){$/;" f get_FPT_bias pt.c /^void get_FPT_bias(void){$/;" f +get_FPT_bias pt_cfastpt.c /^void get_FPT_bias(void){$/;" f get_FPT_bias_command_line pt.c /^void get_FPT_bias_command_line(void){$/;" f get_N_ell like_fourier.c /^int get_N_ell(void){$/;" f get_N_ggl like_fourier.c /^int get_N_ggl(void){$/;" f @@ -910,7 +991,6 @@ init_BAO_BOSS BAO.c /^void init_BAO_BOSS(){$/;" f init_BAO_DES BAO.c /^void init_BAO_DES(){$/;" f init_BAO_LSST BAO.c /^void init_BAO_LSST(){$/;" f init_BAO_WFIRST BAO.c /^void init_BAO_WFIRST(){$/;" f -init_BAO_WFIRST_spectro BAO.c /^void init_BAO_WFIRST_spectro(){$/;" f init_DES examples.c /^void init_DES(){$/;" f init_HOD_rm init.c /^void init_HOD_rm(){$/;" f init_HOD_rm init_basic.c /^void init_HOD_rm(){$/;" f @@ -1090,7 +1170,10 @@ int_for_C_cl_g_tomo cluster.c /^double int_for_C_cl_g_tomo(double a, void *param int_for_C_cl_g_tomo clusters_DES.c /^double int_for_C_cl_g_tomo(double a, void *params){$/;" f int_for_C_cl_lin cosmo2D_exact.c /^double int_for_C_cl_lin(double a, void *params)$/;" f int_for_C_cl_lin cosmo2D_exact_fft.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft_cltomo.c /^double int_for_C_cl_lin(double a, void *params)$/;" f int_for_C_cl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_nl_rescale cosmo2D_exact_fft.c /^double int_for_C_cl_nl_rescale(double a, void *params)$/;" f +int_for_C_cl_nl_rescale cosmo2D_exact_fft_cltomo.c /^double int_for_C_cl_nl_rescale(double a, void *params)$/;" f int_for_C_cl_nonLimber cosmo2D_exact.c /^double int_for_C_cl_nonLimber (double lk, void *params){$/;" f int_for_C_cl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_cl_nonLimber_tomo (double k, void *params){$/;" f int_for_C_cl_tomo cosmo2D_fourier.c /^double int_for_C_cl_tomo(double a, void *params)$/;" f @@ -1102,15 +1185,16 @@ int_for_C_gI_lin IA.c /^double int_for_C_gI_lin(double a, void *params)$/;" f int_for_C_ggl_IA IA.c /^double int_for_C_ggl_IA(double a, void *params)$/;" f int_for_C_ggl_IA_Az IA.c /^double int_for_C_ggl_IA_Az(double a, void *params)$/;" f int_for_C_ggl_IA_Az_b2 IA.c /^double int_for_C_ggl_IA_Az_b2(double a, void *params)$/;" f +int_for_C_ggl_IA_TATT cosmo2D_fullsky_TATT.c /^double int_for_C_ggl_IA_TATT(double a, void *params){$/;" f int_for_C_ggl_IA_mpp IA.c /^double int_for_C_ggl_IA_mpp(double a, void *params)$/;" f int_for_C_ggl_IA_mpp_b2 IA.c /^double int_for_C_ggl_IA_mpp_b2(double a, void *params)$/;" f -int_for_C_gk CMBxLSS.c /^double int_for_C_gk(double a, void *params)$/;" f -int_for_C_gk_b2 CMBxLSS.c /^double int_for_C_gk_b2(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_part1 IA.c /^double int_for_C_ggl_IA_mpp_part1(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_part2 IA.c /^double int_for_C_ggl_IA_mpp_part2(double a, void *params)$/;" f +int_for_C_gk CMBxLSS_fourier.c /^double int_for_C_gk(double a, void *params)$/;" f +int_for_C_gk_b2 CMBxLSS_fourier.c /^double int_for_C_gk_b2(double a, void *params)$/;" f int_for_C_gl_HOD_tomo cosmo2D_fourier.c /^double int_for_C_gl_HOD_tomo(double a, void *params)$/;" f int_for_C_gl_IA_lin cosmo2D_exact.c /^double int_for_C_gl_IA_lin(double a, void *params)$/;" f -int_for_C_gl_IA_lin cosmo2D_exact_fft.c /^double int_for_C_gl_IA_lin(double a, void *params)$/;" f int_for_C_gl_lin cosmo2D_exact.c /^double int_for_C_gl_lin(double a, void *params)$/;" f -int_for_C_gl_lin cosmo2D_exact_fft.c /^double int_for_C_gl_lin(double a, void *params)$/;" f int_for_C_gl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin(double a, void *params)$/;" f int_for_C_gl_lin_IA cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin_IA(double a, void *params)$/;" f int_for_C_gl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_nonLimber_tomo (double lk, void *params){$/;" f @@ -1118,16 +1202,19 @@ int_for_C_gl_onlyIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_onlyIA_ int_for_C_gl_tomo cosmo2D_fourier.c /^double int_for_C_gl_tomo(double a, void *params) \/\/ Add RSD$/;" f int_for_C_gl_tomo_b2 cosmo2D_fourier.c /^double int_for_C_gl_tomo_b2(double a, void *params)$/;" f int_for_C_gl_withIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_withIA_nonLimber_tomo (double lk, void *params){$/;" f -int_for_C_kk CMBxLSS.c /^double int_for_C_kk(double a, void *params){$/;" f -int_for_C_ks CMBxLSS.c /^double int_for_C_ks(double a, void *params)$/;" f -int_for_C_ks_IA CMBxLSS.c /^double int_for_C_ks_IA(double a, void *params)$/;" f -int_for_C_ks_IA_Az CMBxLSS.c /^double int_for_C_ks_IA_Az(double a, void *params)$/;" f +int_for_C_kk CMBxLSS_fourier.c /^double int_for_C_kk(double a, void *params){$/;" f +int_for_C_ks CMBxLSS_fourier.c /^double int_for_C_ks(double a, void *params)$/;" f +int_for_C_ks_IA CMBxLSS_fourier.c /^double int_for_C_ks_IA(double a, void *params)$/;" f +int_for_C_ks_IA_Az CMBxLSS_fourier.c /^double int_for_C_ks_IA_Az(double a, void *params)$/;" f +int_for_C_ks_IA_mpp CMBxLSS_fourier.c /^double int_for_C_ks_IA_mpp(double a, void *params)$/;" f int_for_C_magnification_magnification magnification.c /^double int_for_C_magnification_magnification(double a, void *params)$/;" f int_for_C_position_magnification magnification.c /^double int_for_C_position_magnification(double a, void *params)$/;" f int_for_C_shear_magnification magnification.c /^double int_for_C_shear_magnification(double a, void *params)$/;" f int_for_C_shear_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_shear_nonLimber_tomo (double lk, void *params){$/;" f int_for_C_shear_shear_IA IA.c /^double int_for_C_shear_shear_IA(double a, void *params)$/;" f int_for_C_shear_shear_IA_Az IA.c /^double int_for_C_shear_shear_IA_Az(double a, void *params)$/;" f +int_for_C_shear_shear_IA_BB cosmo2D_fullsky_TATT.c /^double int_for_C_shear_shear_IA_BB(double a, void *params){$/;" f +int_for_C_shear_shear_IA_EE cosmo2D_fullsky_TATT.c /^double int_for_C_shear_shear_IA_EE(double a, void *params){$/;" f int_for_C_shear_shear_IA_mpp IA.c /^double int_for_C_shear_shear_IA_mpp(double a, void *params)$/;" f int_for_C_shear_tomo cosmo2D_fourier.c /^double int_for_C_shear_tomo(double a, void *params)$/;" f int_for_Delta_C_gl_reduced_shear reduced_shear.c /^double int_for_Delta_C_gl_reduced_shear(double a, void *params){$/;" f @@ -1291,7 +1378,7 @@ lgMmin clusters_DES.c /^double lgMmin(double a,int nN){ \/\/ speed up of mass in lgMmin structs.c /^ double lgMmin[10];$/;" m struct:input_HOD_params file: lgN200_model cluster.c /^double lgN200_model(double M, double a){$/;" f lightspeed basics.c /^ double lightspeed;$/;" m struct:__anon3 file: -like structs.c /^likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0};$/;" v +like structs.c /^likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0};$/;" v likepara structs.c /^}likepara;$/;" t typeref:struct:__anon9 file: lim basics.c /^}lim;$/;" t typeref:struct:__anon5 file: limits basics.c /^lim limits = {$/;" v @@ -1444,7 +1531,7 @@ nsource redshift.c /^double nsource(int j) \/\/returns n_gal for shear tomograph nsource redshift_spline.c /^double nsource(int j) \/\/returns n_gal for shear tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f ntheta structs.c /^ int ntheta;\/* number of theta bins *\/$/;" m struct:__anon24 file: nu halo.c /^double nu(double m, double a){$/;" f -nuisance structs.c /^nuisancepara nuisance ={.c1rhocrit_ia = 0.0134,$/;" v +nuisance structs.c /^nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856,$/;" v nuisancepara structs.c /^nuisancepara;$/;" t typeref:struct:__anon21 file: nulogm_a1 halo.c /^double nulogm_a1(double lgm,void * params)$/;" f number_of_cluster_bins init_LSST_SRD.c /^double number_of_cluster_bins(){$/;" f @@ -1498,10 +1585,11 @@ outfilebase patch_cov_HOD.py /^outfilebase = '..\/cov\/cov_combi_LSST_HOD_Ntomo1 outfilebase patch_cov_Rmin.py /^outfilebase = '..\/cov\/cov_combi_LSST_Rmin10'$/;" v p_1h halo.c /^double p_1h(double k, double a)$/;" f p_2h halo.c /^double p_2h(double k, double a)$/;" f -p_class cosmo3D.c /^double p_class(double k_coverh0,double a, int NL, int *status){$/;" f +p_class cosmo3D.c /^double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){$/;" f p_class cosmo3D_april7.c /^double p_class(double k_coverh0,double a, int NL, int *status){$/;" f p_lin cosmo3D.c /^double p_lin(double k,double a)$/;" f p_lin cosmo3D_april7.c /^double p_lin(double k,double a)$/;" f +p_lin_cdm_b cosmo3D.c /^double p_lin_cdm_b(double k,double a)$/;" f parameterization structs.c /^ int parameterization; \/\/Zehavi, Reddick, histo$/;" m struct:__anon16 file: path structs.c /^ char path[200];$/;" m struct:__anon20 file: pathLensRecNoise structs.c /^ char * pathLensRecNoise; \/\/ path to precomputed noise on reconstructed kappa$/;" m struct:__anon14 file: @@ -1549,13 +1637,16 @@ recompute_DESclusters recompute.c /^int recompute_DESclusters(cosmopara C, nuisa recompute_Delta recompute.c /^int recompute_Delta(cosmopara C){ \/\/rules for recomputing early time power spectrum Delta_L$/;" f recompute_IA recompute.c /^int recompute_IA(nuisancepara N){$/;" f recompute_PkRatio recompute.c /^int recompute_PkRatio(barypara B){$/;" f +recompute_cl structs.c /^ int *recompute_cl; \/\/ recompute the above or not$/;" m struct:__anon27 file: recompute_clustering recompute.c /^int recompute_clustering(cosmopara C, galpara G, nuisancepara N, int i, int j){$/;" f recompute_clusters recompute.c /^int recompute_clusters(cosmopara C, nuisancepara N){$/;" f recompute_cosmo3D recompute.c /^int recompute_cosmo3D(cosmopara C){$/;" f +recompute_cosmo3D_CLASS recompute.c /^int recompute_cosmo3D_CLASS(cosmopara C){$/;" f recompute_expansion recompute.c /^int recompute_expansion(cosmopara C){ \/\/rules for recomputing growth factor & comoving distance$/;" f recompute_galaxies recompute.c /^int recompute_galaxies(galpara G, int i){$/;" f recompute_ggl recompute.c /^int recompute_ggl(cosmopara C, galpara G, nuisancepara N, int i){$/;" f recompute_ii recompute.c /^int recompute_ii(cosmopara C, nuisancepara N){$/;" f +recompute_sh structs.c /^ int *recompute_sh;$/;" m struct:__anon27 file: recompute_shear recompute.c /^int recompute_shear(cosmopara C, nuisancepara N){$/;" f recompute_zphot_clustering recompute.c /^int recompute_zphot_clustering(nuisancepara N){$/;" f recompute_zphot_magnification recompute.c /^int recompute_zphot_magnification(nuisancepara N){$/;" f @@ -1593,11 +1684,17 @@ run_cov_clustering_ggl compute_covariances_fourier.c /^void run_cov_clustering_g run_cov_clustering_ggl compute_covariances_fourier_HSC.c /^void run_cov_clustering_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_clustering_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_clustering_ggl_real_bin run_covariances_real.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f run_cov_clustering_real_bin run_covariances_real.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f run_cov_clustering_shear compute_covariances_fourier.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_clustering_shear compute_covariances_fourier_HSC.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_clustering_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_clustering_shear_real_bin run_covariances_real.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f run_cov_ggl compute_covariances_fourier.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_ggl compute_covariances_fourier_HSC.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f @@ -1608,10 +1705,14 @@ run_cov_ggl_cgl compute_covariances_fourier.c /^void run_cov_ggl_cgl (char *OUTF run_cov_ggl_cgl compute_covariances_fourier_HSC.c /^void run_cov_ggl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f run_cov_ggl_cgl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_cgl_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f run_cov_ggl_real_bin run_covariances_real.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real_fullsky.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta,int Ntheta, int n1, int n2, int start)$/;" f run_cov_ggl_shear compute_covariances_fourier.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_ggl_shear compute_covariances_fourier_HSC.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_ggl_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f run_cov_ggl_shear_real_bin run_covariances_real.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f run_cov_shear_N compute_covariances_fourier.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f run_cov_shear_N compute_covariances_fourier_HSC.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f run_cov_shear_cgl compute_covariances_fourier.c /^void run_cov_shear_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f @@ -1619,6 +1720,8 @@ run_cov_shear_cgl compute_covariances_fourier_HSC.c /^void run_cov_shear_cgl (ch run_cov_shear_shear compute_covariances_fourier.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f run_cov_shear_shear compute_covariances_fourier_HSC.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f run_cov_shear_shear_real_bin run_covariances_real.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f runmode structs.c /^ char runmode[300];$/;" m struct:__anon18 file: s8_max_emu cosmo3D.c 21;" d file: s8_max_emu cosmo3D_april7.c 21;" d file: @@ -1788,7 +1891,7 @@ sigma_p GRS.c /^ double sigma_p[10]; \/\/ in km\/s$/;" m struct:__anon8 file: sigma_p structs.c /^ double sigma_p; \/\/ in km\/s$/;" m struct:__anon25 file: sigma_p_fid GRS.c /^ double sigma_p_fid[10]; \/\/ in km\/s, fiducial input values=center for prior calculation$/;" m struct:__anon8 file: sigma_p_fid_sigma GRS.c /^ double sigma_p_fid_sigma; \/\/ in km\/s, sigma for prior calculation$/;" m struct:__anon8 file: -sigma_r_sqr cosmo3D.c /^double sigma_r_sqr() $/;" f +sigma_r_sqr cosmo3D.c /^double sigma_r_sqr()$/;" f sigma_r_sqr cosmo3D_april7.c /^double sigma_r_sqr() $/;" f sigma_z GRS.c /^ double sigma_z[10]; \/\/ fractional accuracy$/;" m struct:__anon8 file: sigma_z structs.c /^ double sigma_z; \/\/ fractional accuracy$/;" m struct:__anon25 file: @@ -1818,6 +1921,7 @@ surveystage structs.c /^ int surveystage;$/;" m struct:__anon13 file: t_lin covariances_3D.c /^double t_lin(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y, double a)$/;" f tab_AB structs.c /^ double **tab_AB;$/;" m struct:__anon20 file: tab_IA structs.c /^ double **tab_IA;$/;" m struct:__anon20 file: +tab_d1d3 FASTPT_b3nl.h /^static double tab_d1d3[800] = {3.910971e-18,$/;" v test_kmax redshift.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f test_kmax redshift_spline.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f test_zoverlap redshift.c /^int test_zoverlap(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f @@ -1827,6 +1931,8 @@ test_zoverlap_c redshift_spline.c /^int test_zoverlap_c(int zc, int zs){ \/\/tes test_zoverlap_cov redshift.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f test_zoverlap_cov redshift_spline.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f theta structs.c /^ double *theta;$/;" m struct:__anon9 file: +theta_s structs.c /^ double theta_s;$/;" m struct:__anon10 file: +theta_s structs.c /^ int theta_s;$/;" m struct:__anon9 file: tmax structs.c /^ double tmax; \/* Theta max (arcmin) *\/$/;" m struct:__anon24 file: tmin structs.c /^ double tmin; \/* Theta min (arcmin) *\/$/;" m struct:__anon24 file: tomo structs.c /^tomopara tomo = {.n_source = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},.n_lens = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}};$/;" v @@ -1875,14 +1981,15 @@ w_clustering_HOD_rm_max redmagic_real.c /^double w_clustering_HOD_rm_max(double w_clustering_HOD_rm_tomo redmagic_real.c /^double w_clustering_HOD_rm_tomo(double theta, int nz)$/;" f w_clustering_tomo cosmo2D_real.c /^double w_clustering_tomo(double theta, int ni, int nj) \/\/ galaxy clustering tomography 2PCF galaxies in bins ni, nj$/;" f w_gamma_t_HOD_tomo cosmo2D_real.c /^double w_gamma_t_HOD_tomo(double theta,int ni, int nj) \/\/G-G lensing with HOD model, lens bin ni, source bin nj$/;" f +w_gamma_t_TATT cosmo2D_fullsky_TATT.c /^double w_gamma_t_TATT(int nt, int ni, int nj){$/;" f w_gamma_t_fullsky cosmo2D_fullsky.c /^double w_gamma_t_fullsky(int nt, int ni, int nj){$/;" f w_gamma_t_nonLimber cosmo2D_exact.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f -w_gamma_t_nonLimber cosmo2D_exact_fft.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f w_gamma_t_nonLimber cosmo2D_exact_fft_optimize.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f w_gamma_t_tomo cosmo2D_real.c /^double w_gamma_t_tomo(double theta,int ni, int nj) \/\/G-G lensing, lens bin ni, source bin nj$/;" f -w_gk_SPT CMBxLSS.c /^double w_gk_SPT(double theta, int ni) \/\/ galaxies (ni) x CMB kappa$/;" f -w_ks_SPT CMBxLSS.c /^double w_ks_SPT(double theta, int ni){ \/\/ CMB kappa x shear (ni)$/;" f +w_gk_SPT CMBxLSS_real.c /^double w_gk_SPT(double theta, int ni) \/\/ galaxies (ni) x CMB kappa$/;" f +w_ks_SPT CMBxLSS_real.c /^double w_ks_SPT(double theta, int ni){ \/\/ CMB kappa x shear (ni)$/;" f w_mask covariances_real_binned.c /^double w_mask(double theta_min){$/;" f +w_mask covariances_real_binned_fullsky.c /^double w_mask(double theta_min){$/;" f w_max_emu cosmo3D.c 27;" d file: w_max_emu cosmo3D_april7.c 27;" d file: w_min_emu cosmo3D.c 28;" d file: @@ -1892,6 +1999,7 @@ w_tomo_exact cosmo2D_real.c /^double w_tomo_exact(int nt, int ni, int nj){$/;" f w_tomo_fullsky cosmo2D_fullsky.c /^double w_tomo_fullsky(int nt, int ni, int nj){$/;" f w_tomo_nonLimber cosmo2D_exact.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f w_tomo_nonLimber cosmo2D_exact_fft.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft_cltomo.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f w_tomo_nonLimber cosmo2D_exact_fft_optimize.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f w_via_hankel_HOD_rm redmagic_real.c /^void w_via_hankel_HOD_rm(double **xi, double *logthetamin, double *logthetamax)$/;" f w_via_hankel_HOD_rm_1h redmagic_real.c /^void w_via_hankel_HOD_rm_1h(double **xi, double *logthetamin, double *logthetamax)$/;" f @@ -1908,8 +2016,11 @@ wlphotoz structs.c /^ int wlphotoz;$/;" m struct:__anon9 file: write_gglensing_zbins redshift.c /^void write_gglensing_zbins(char *surveyname){$/;" f write_gglensing_zbins redshift_spline.c /^void write_gglensing_zbins(char *surveyname){$/;" f write_plin pt.c /^void write_plin(char *filebase){$/;" f +write_plin pt_cfastpt.c /^void write_plin(void){$/;" f xJ2 covariances_real_binned.c /^double xJ2 (double x, void *params){$/;" f +xJ2 covariances_real_binned_fullsky.c /^double xJ2 (double x, void *params){$/;" f xJ4 covariances_real_binned.c /^double xJ4 (double x, void *params){$/;" f +xJ4 covariances_real_binned_fullsky.c /^double xJ4 (double x, void *params){$/;" f xacc baryons.c /^ gsl_interp_accel *xacc;$/;" m struct:__anon2 file: xi_3d_rmax basics.c /^ double xi_3d_rmax;$/;" m struct:__anon5 file: xi_3d_rmin basics.c /^ double xi_3d_rmin;$/;" m struct:__anon5 file: @@ -1918,6 +2029,7 @@ xi_gg_1h redmagic_real.c /^double xi_gg_1h (double R_mpc, double a){ \/\/ 3D gg xi_magnification_magnification_tomo magnification.c /^double xi_magnification_magnification_tomo(double theta, int ni, int nj)$/;" f xi_nl redmagic_real.c /^double xi_nl (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f xi_nl2 redmagic_real.c /^double xi_nl2 (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_pm_TATT cosmo2D_fullsky_TATT.c /^double xi_pm_TATT(int pm, int nt, int ni, int nj) \/\/shear tomography correlation functions$/;" f xi_pm_fullsky cosmo2D_fullsky.c /^double xi_pm_fullsky(int pm, int nt, int ni, int nj) \/\/shear tomography correlation functions$/;" f xi_pm_rebin cosmo2D_real.c /^double xi_pm_rebin(int pm, double thetamin_i, double thetamax_i, int ni,int nj){$/;" f xi_pm_tomo cosmo2D_real.c /^double xi_pm_tomo(int pm, double theta, int ni, int nj) \/\/shear tomography correlation functions$/;" f From 69ece2cda50dfda62e06457373fa1932eae02e33 Mon Sep 17 00:00:00 2001 From: CHUN-HAO TO Date: Mon, 1 May 2023 05:11:36 -0700 Subject: [PATCH 08/24] HMcode2020 --- class/.explanatory.ini.swp | Bin 0 -> 16384 bytes class/Makefile | 7 +- class/explanatory.ini | 45 +- class/include/.arrays.h.swp | Bin 0 -> 16384 bytes class/include/.background.h.swp | Bin 0 -> 16384 bytes class/include/.nonlinear.h.swp | Bin 0 -> 16384 bytes class/include/.perturbations.h.swp | Bin 0 -> 16384 bytes class/include/.precisions.h.swp | Bin 0 -> 53248 bytes class/include/nonlinear.h | 78 +- class/include/precisions.h | 7 + .../Growth_with_w-checkpoint.ipynb | 378 +++ .../Test HMcode2020-checkpoint.ipynb | 6 + .../cambvsclass-checkpoint.ipynb | 521 ++++ .../cambvsclass-v2-checkpoint.ipynb | 1036 +++++++ .../.ipynb_checkpoints/cl_ST-checkpoint.ipynb | 199 ++ .../cltt_terms-checkpoint.ipynb | 151 ++ .../.ipynb_checkpoints/one_k-checkpoint.ipynb | 211 ++ class/notebooks/Growth_with_w.ipynb | 24 +- class/notebooks/Test HMcode2020.ipynb | 1653 +++++++++++ class/notebooks/cambvsclass-v2.ipynb | 1586 +++++++++++ class/notebooks/cambvsclass.ipynb | 825 ++++++ class/notebooks/cl_ST.ipynb | 32 +- class/notebooks/cltt_terms.ipynb | 41 +- class/notebooks/one_k.ipynb | 26 +- class/ode_example | Bin 0 -> 12736 bytes class/python/setup.py | 2 +- class/source/.background.c.swp | Bin 0 -> 16384 bytes class/source/.input.c.swp | Bin 0 -> 16384 bytes class/source/.nonlinear.c.swp | Bin 0 -> 286720 bytes class/source/.perturbations.c.swp | Bin 0 -> 16384 bytes class/source/input.c | 157 +- class/source/mead_growth.c | 80 + class/source/nonlinear.c | 1260 ++++++++- class/source/nonlinear_hmcode.c | 639 +++++ class/source/tags | 2412 +++++++++++++++++ class/tools/.arrays.c.swp | Bin 0 -> 16384 bytes 36 files changed, 11166 insertions(+), 210 deletions(-) create mode 100644 class/.explanatory.ini.swp create mode 100644 class/include/.arrays.h.swp create mode 100644 class/include/.background.h.swp create mode 100644 class/include/.nonlinear.h.swp create mode 100644 class/include/.perturbations.h.swp create mode 100644 class/include/.precisions.h.swp create mode 100644 class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb create mode 100644 class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb create mode 100644 class/notebooks/Test HMcode2020.ipynb create mode 100644 class/notebooks/cambvsclass-v2.ipynb create mode 100644 class/notebooks/cambvsclass.ipynb create mode 100755 class/ode_example create mode 100644 class/source/.background.c.swp create mode 100644 class/source/.input.c.swp create mode 100644 class/source/.nonlinear.c.swp create mode 100644 class/source/.perturbations.c.swp create mode 100644 class/source/mead_growth.c create mode 100644 class/source/nonlinear_hmcode.c create mode 100644 class/source/tags create mode 100644 class/tools/.arrays.c.swp diff --git a/class/.explanatory.ini.swp b/class/.explanatory.ini.swp new file mode 100644 index 0000000000000000000000000000000000000000..7cc575cb853cdc7b31c23d5550cf4cc1ee742c36 GIT binary patch literal 16384 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 XA~|>T$qyN44= python/autosetup.py endif - cd python; export CC=$(CC); $(PYTHON) autosetup.py install || $(PYTHON) autosetup.py install --user + cd python; export CC='$(CC) $(OPTFLAG)'; $(PYTHON) autosetup.py install || $(PYTHON) autosetup.py install --user rm python/autosetup.py clean: .base diff --git a/class/explanatory.ini b/class/explanatory.ini index 3a963ba2..fc71cf8d 100755 --- a/class/explanatory.ini +++ b/class/explanatory.ini @@ -47,7 +47,7 @@ omega_b = 0.022032 # 'N_ur' you can pass equivalently 'N_eff', although this syntax is # deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) -N_ur = 3.046 +N_ur = 2.0328 #Omega_ur = #omega_ur = @@ -88,7 +88,7 @@ Gamma_dcdm = 0.0 # # -> 'N_ncdm' is the number of distinct species (default: set to 0) -N_ncdm = 0 +N_ncdm = 1 # -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space # distribution (psd) passed analytically inside the code, in the mnodule @@ -123,8 +123,10 @@ ncdm_psd_parameters = 0.3 ,0.5, 0.05 # this component, this coefficient is not imposed, and its value is # inferred from the other one. -m_ncdm = 0.04, 0.04, 0.04 -Omega_ncdm = +#m_ncdm = 0.04, 0.04, 0.04 +#Omega_ncdm = 0.0014129995059138502, 0.0014129995059138502, 0.0014129995059138502 +omega_ncdm = 0.000644866570625114 +#, 0.000644866570625114, 0.000644866570625114 # -> 'T_ncdm' is the ncdm temperature in units of photon temperature # (default: set to 0.71611, which is slightly larger than the @@ -133,7 +135,7 @@ Omega_ncdm = # active neutrinos, as predicted by precise studies of active # neutrino decoupling, see hep-ph/0506164) -T_ncdm = +T_ncdm = 0.71611 # -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature # (default: set to 0) @@ -202,7 +204,7 @@ c_gamma_over_c_fld = 0.4 # the function background_w_fld(). (default: 'w0_fld' set to -1, # 'wa_fld' to 0, 'cs2_fls' to 1) -w0_fld = -0.9 +w0_fld = -1 wa_fld = 0. cs2_fld = 1 @@ -253,7 +255,7 @@ Omega_idm_dr = 0. #f_idm_dr = # -> interacting dark matter mass, 'm_idm' (or equivalently just 'm_dm') in eV (default: 1.0e11) -m_idm = 1.0e11 +#m_idm = 1.0e11 # -> Amount of interacting dark radiation idr. # - Can be parameterised through the temperature ratio 'xi_idr' (= T_idr/T_cmb) @@ -325,7 +327,8 @@ beta_idr = 1.5 # 1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will # be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') -YHe = BBN +YHe = 0.2457089991568521 +#BBN # 2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' @@ -525,7 +528,7 @@ Nbody gauge transfer functions = # 'hmcode' or 'Hmcode' or 'HMcode' or 'HMCODE') for HMcode; # otherwise leave blank (default: blank, linear P(k) and Cls) -non linear = +non linear = "HMcode2020" # 2.b) if you chose Halofit, and you have Omega0_fld != 0. (i.e. you # set Omega_lambda=0.) & wa_fld != 0., then you might want to use the @@ -558,7 +561,7 @@ pk_eq = feedback model = eta_0 = c_min = - +hmcode2020log10tagn = 7.8 # 3) if you want to consider perturbed recombination, enter a word # containing the letter 'y' or 'Y'. CLASS will then compute the # perturbation in the ionization fraction x_e and the baryon @@ -839,7 +842,7 @@ l_max_tensors = 500 # automatically imposed (the same as in scalar Cls computation) # (default: set to 1 1/Mpc) -P_k_max_h/Mpc = 1. +P_k_max_h/Mpc = 10. #P_k_max_1/Mpc = 0.7 # 3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered @@ -970,13 +973,13 @@ write warnings = # Increase integer values to make each module more talkative (default: all set to 0) -input_verbose = 1 -background_verbose = 1 -thermodynamics_verbose = 1 -perturbations_verbose = 1 -transfer_verbose = 1 -primordial_verbose = 1 -spectra_verbose = 1 -nonlinear_verbose = 1 -lensing_verbose = 1 -output_verbose = 1 +input_verbose = 2 +background_verbose = 2 +thermodynamics_verbose = 2 +perturbations_verbose = 2 +transfer_verbose = 2 +primordial_verbose = 2 +spectra_verbose = 2 +nonlinear_verbose = 2 +lensing_verbose = 2 +output_verbose = 2 diff --git a/class/include/.arrays.h.swp b/class/include/.arrays.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..e45604e1d6398917f7ec740c827fa7c383ab8d6e GIT binary patch literal 16384 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 b&=u>UaH;+m)K5}VTzZ?$Iyj6r8zkvp6&wh~ literal 0 HcmV?d00001 diff --git a/class/include/.nonlinear.h.swp b/class/include/.nonlinear.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..a5d0040e9b6d874a719618d637ebb9f17f0d0480 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/class/include/.perturbations.h.swp b/class/include/.perturbations.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..7729d6e5980e6b934b2837d1fcde75d542e30c15 GIT binary patch literal 16384 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 Oq2es9zJ=2LhVySnyZHV9 literal 0 HcmV?d00001 diff --git a/class/include/.precisions.h.swp b/class/include/.precisions.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..15038fa01ea9eae90bac202b86d4a4a18f9ea952 GIT binary patch literal 53248 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 +#include +#include +#include #ifndef __NONLINEAR__ #define __NONLINEAR__ @@ -12,14 +16,14 @@ #define _MAX_NUM_EXTRAPOLATION_ 100000 -enum non_linear_method {nl_none,nl_halofit,nl_HMcode}; +enum non_linear_method {nl_none,nl_halofit,nl_HMcode,nl_HMcode_2020}; enum pk_outputs {pk_linear,pk_nonlinear}; enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined}; enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three}; -enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined}; +enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined, hmcode2020tagn}; enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp}; /** @@ -48,6 +52,7 @@ struct nonlinear { double c_min; /** for HMcode: minimum concentration in Bullock 2001 mass-concentration relation */ double eta_0; /** for HMcode: halo bloating parameter */ double z_infinity; /** for HMcode: z value at which Dark Energy correction is evaluated needs to be at early times (default */ + double hmcode2020log10tagn; /** for HMcode2020: Tagn value */ //@} @@ -194,6 +199,23 @@ struct nonlinear { //@} }; + +typedef struct { + double omega0m; + double omega0w; + double w0; + double wa; + double omega0k; +} ParamsMeadGrowth; + + + + + + + + + /** * Structure containing variables used only internally in nonlinear module by various functions. * @@ -210,7 +232,11 @@ struct nonlinear_workspace { double * ddstab; /** Splined sigma */ double * growtable; + double * intgrowtable; + double *meadgrowtable; + double *meadscaletable; double * ztable; + double * scaletable; double * tautable; double ** sigma_8; @@ -221,7 +247,10 @@ struct nonlinear_workspace { double dark_energy_correction; /** this is the ratio [g_wcdm(z_infinity)/g_lcdm(z_infinity)]^1.5 * (power comes from Dolag et al. (2004) correction) * it is 1, if has_fld == _FALSE_ */ - + double* dark_energy_correction_hmcode2020_table; /** the correction of c-m relation in equation 22 of Mead 2009.01858**/ + double* Pk_wiggle_tab; /** Wiggle pk at z=0 **/ + double* lnk_wiggle_tab; + int nk_wiggle; //@} }; @@ -238,6 +267,8 @@ extern "C" { /* external functions (meant to be called from other modules) */ + int meadgrowth_func(double a, const double y[], double f[], void *params); + int nonlinear_pk_at_z( struct background * pba, struct nonlinear *pnl, @@ -452,7 +483,25 @@ extern "C" { struct nonlinear_workspace * pnw ); + int nonlinear_hmcode2020( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * halofit_found_k_max, + struct nonlinear_workspace * pnw + ); + int nonlinear_hmcode_workspace_init( + struct primordial *ppm, struct precision *ppr, struct background *pba, struct nonlinear *pnl, @@ -495,6 +544,22 @@ extern "C" { struct nonlinear_workspace * pnw ); + + int nonlinear_hmcode_fill_intgrowtab( + struct precision *ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ); +int fill_Pk_wiggle_table( + struct primordial * ppm, + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ); + + int nonlinear_hmcode_growint( struct precision *ppr, struct background * pba, @@ -505,6 +570,13 @@ extern "C" { double * growth ); +int nonlinear_hmcode_fill_meadgrowtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ); + int nonlinear_hmcode_window_nfw( struct nonlinear * pnl, double k, diff --git a/class/include/precisions.h b/class/include/precisions.h index 3fc78cd1..eb561840 100644 --- a/class/include/precisions.h +++ b/class/include/precisions.h @@ -465,11 +465,18 @@ class_precision_parameter(hmcode_tol_sigma,double,1.e-6) /**< tolerance required condition sigma(R_nl)=1, which defines the wavenumber of non-linearity, k_nl=1./R_nl */ + +class_precision_parameter(nk_wiggle,int,512) /** following camb implementation for HMcode2020*/ +class_precision_parameter(logkmin_wiggle,double, log(5E-3)) /** following camb implementation for HMcode2020*/ +class_precision_parameter(logkmax_wiggle,double, log(5.0)) /** following camb implementation for HMcode2020*/ +class_precision_parameter(knorm_nowiggle,double, 0.03) /** following camb implementation for HMcode2020*/ + /** * parameters controlling stepsize and min/max r & a values for * sigma(r) & grow table */ class_precision_parameter(n_hmcode_tables,int,64) +class_precision_parameter(n_hmcode_mead_growth_tables,int,64) class_precision_parameter(rmin_for_sigtab,double,1.e-5) class_precision_parameter(rmax_for_sigtab,double,1.e3) class_precision_parameter(ainit_for_growtab,double,1.e-3) diff --git a/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb new file mode 100644 index 00000000..bd5e556f --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb @@ -0,0 +1,378 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy import interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "w0vec = [-0.7, -1.0, -1.3]\n", + "wavec = [-0.2,0.0,0.2]\n", + "#w0vec = [-1.0]\n", + "#wavec = [0.0]\n", + "\n", + "cosmo = {}\n", + "for w0 in w0vec:\n", + " for wa in wavec:\n", + " if w0==-1.0 and wa==0.0:\n", + " M='LCDM'\n", + " else:\n", + " M = '('+str(w0)+','+str(wa)+')'\n", + " cosmo[M] = Class()\n", + " cosmo[M].set({'input_verbose':1,'background_verbose':1,'gauge' : 'Newtonian'})\n", + " if M!='LCDM':\n", + " cosmo[M].set({'Omega_Lambda':0.,'w0_fld':w0,'wa_fld':wa})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy\n", + "import scipy.special\n", + "import scipy.integrate\n", + "\n", + "def D_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " D_today = scipy.special.hyp2f1(1./3.,1,11./6.,-Ol/Om)\n", + " return D/D_today\n", + "\n", + "def f_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " f = 1.-6./11.*x*avec/D*scipy.special.hyp2f1(4./3.,2,17./6.,-x)\n", + " return f\n", + "\n", + "def D_integral2(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " Hc = a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) )\n", + " Dintegrand2 = lambda a: (a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) ))**(-3)\n", + " I = scipy.integrate.quad(Dintegrand2, 1e-15,a)\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand2,1e-15,1)[0]\n", + " return D\n", + "\n", + "def D_integral(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " Or = 1-Om-Ol\n", + " def Dintegrand(a):\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " #print a,Hc\n", + " return Hc**(-3)\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " #if a<1e-4:\n", + " # continue\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " I = scipy.integrate.quad(Dintegrand,1e-15,a,args=())\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand,1e-15,1,args=())[0]\n", + " return D\n", + "\n", + "def D_linder(avec,csm):\n", + " bg = csm.get_background()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " \n", + " Om_of_a = (bg['(.)rho_cdm']+bg['(.)rho_b'])/bg['H [1/Mpc]']**2\n", + " gamma = 0.55+0.05*(w0+0.5*wa)\n", + " a_bg = 1./(1.+bg['z'])\n", + " \n", + " integ = (Om_of_a**gamma-1.)/a_bg\n", + " \n", + " integ_interp = interpolate.interp1d(a_bg,integ)\n", + " D = np.zeros(avec.shape)\n", + " amin = min(a_bg)\n", + " amin = 1e-3\n", + " for idx, a in enumerate(avec):\n", + " if a" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "figwidth1 = 4.4 #=0.7*6.3\n", + "figwidth2 = 6.3\n", + "figwidth15 = 0.5*(figwidth1+figwidth2)\n", + "ratio = 8.3/11.7\n", + "figheight1 = figwidth1*ratio\n", + "figheight2 = figwidth2*ratio\n", + "figheight15 = figwidth15*ratio\n", + "\n", + "lw=2\n", + "fs=12\n", + "labelfs=16\n", + "\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(1.2*figwidth1,figheight1/(3./5.)),sharex=True,\n", + " gridspec_kw = {'height_ratios':[3, 2]})\n", + "\n", + "if False:\n", + " aminexp = -13\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp/2.)\n", + " ymax = 10**(-aminexp/2.)\n", + "elif False:\n", + " aminexp = -7\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp)\n", + " ymax = 10**(-aminexp)\n", + "else:\n", + " aminexp = -4\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp-1)\n", + " ymax = 10**(-aminexp+1)\n", + " \n", + "\n", + "bg = cosmo['LCDM'].get_background()\n", + "\n", + "a = 1./(bg['z']+1)\n", + "H = bg['H [1/Mpc]']\n", + "D = bg['gr.fac. D']\n", + "f = bg['gr.fac. f']\n", + "\n", + "ax1.loglog(a,D,lw=lw,label=r'$D_+^\\mathrm{approx}$')\n", + "ax1.loglog(a,D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+^\\mathrm{analytic}$')\n", + "\n", + "ax1.loglog(a,a*ymax,'k--',lw=lw,label=r'$\\propto a$')\n", + "ax1.loglog(a,1./a*ymin,'k:',lw=lw,label=r'$\\propto a^{-1}$')\n", + "\n", + "ax2.semilogx(a,D/D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+/D_+^\\mathrm{analytic}$')\n", + "#ax2.semilogx(a,grow/grow[-1]/D_integral(a,cosmo['CDM']),'--',lw=5)\n", + "ax2.semilogx(a,f/f_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$f/f^{\\,\\mathrm{analytic}}$')\n", + "\n", + "\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=99,label='$z=99$')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=49,label='$z=49$',ls='-')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=99,label=None)\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=49,label=None,ls='-')\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 1.035))\n", + "\n", + "#lgd2 = ax2.legend([r'$D_+/D_+^\\mathrm{analytic}$','$z=99$'],\n", + "# fontsize=fs,ncol=1,loc='upper left',\n", + "# bbox_to_anchor=(1.0, 1.08))\n", + "lgd2 = ax2.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 0.83))\n", + "\n", + "ax1.set_xlim([10**aminexp,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([ymin,ymax])\n", + "ax2.set_ylim([0.9,1.099])\n", + "\n", + "ax2.axhline(1,color='k')\n", + "\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('NewtonianGrowthFactor.pdf',bbox_extra_artists=(lgd1,lgd2), bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nj/44im/dunXaZDLpmpqaTuvU19frrKwsfdVVV+n169frhQsX6oSEhA7DzD/77DNdWFioP/vssw7r\nlpeXa5PJpJ977rketWf58uXabDbr++67T5eWlup7771XWyyWDsPMH374YV1YWBhcbh9mfuaZZ+ov\nv/xSL168WOfk5IQNM1+yZImOj4/XLS0tXbbheP1dCiF6hj4YxSd6wUknncSkSZN48cUXO62TlJTE\n4sWL2b17N8XFxcyfP5/bbruNn/zkJ8E6TqeTTZs24XQ6O6z7xBNPkJSUxGWXXRZx2zNmzGDGjBnB\n5alTp/Liiy/y9NNPM3bsWJ555hleeuklJk+eHKxTU1PDpk2bgstms5m3336b2NhYpk2bxlVXXcVl\nl13GAw880GFfL7zwAnPnziU2NrZHPxshhIhEGUkuuhQXF+tVq1ZFjJWWllJUVNTHLeod77zzDrfe\neislJSWYzeY+3XdBQQE33XQTd95551HdT1VVFUVFRaxatarbUYfH8+9SCNE9pdRqrXXx4a4vPag+\nNHv2bObPn9/hHE5f2LhxI3a7ndtuu+2o76usrIwFCxb0aEi8EEJ05bi7o+7x7pZbbunzfY4ePZrN\nmzf3yb4mTZrEpEmT+mRfQoj+TXpQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJC\nCBGVJEEJIYSISpKg+lBdXR1ZWVls27btWDflqHn77bcZN24cfr//WDdFCHGckwTVh+69917OO+88\nhg4dGjHucrn49re/zdixY7FarR3mzuvKjTfeyNChQ4mJiQnerLC0tLTb9RYuXMioUaOw2+2MGjWK\n1157rdt1du7cyYUXXkhcXBzp6enccsstuN3uYPz888/HbDbz/PPP96jtQgjRGUlQfcTpdPL4449z\nww03dFrH5/PhcDi4+eabOf/8nt+Dqri4mKeffprS0lLeffddtNacffbZwftNRbJy5Uquuuoq5s6d\ny9q1a5k7dy5XXHEFn332WZftO//882lqamLZsmW88MILvPrqq2FTKH3nO9/hoYce6nH7hRAioiOZ\nCv1oPfrj7TZeeeUVnZKSov1+f4/qz58/X0+fPv2w9vXVV19pQH/99ded1rnyyiv12Wef3aHsrLPO\n0nPmzOlkDa0XLVqklVJ6586dwbJnn31W2+123dDQECwrLy/XgN6yZUuX7Txef5dCiJ5BbrdxfFi2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "lw=2\n", + "fs=14\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(6,8),sharex=True,)\n", + "# gridspec_kw = {'height_ratios':[2, 1]})\n", + "for M, csm in cosmo.iteritems():\n", + " if M!='LCDM':\n", + " w0, wa = M.strip('()').split(',')\n", + " if float(wa)!=0.0:\n", + " continue\n", + " bg = csm.get_background()\n", + " a = 1./(bg['z']+1)\n", + " H = bg['H [1/Mpc]']\n", + " #grow = bg['grow']\n", + " #grow_prime = bg['grow_prime']\n", + " D = bg['gr.fac. D']\n", + " f = bg['gr.fac. f']\n", + " #grow_interp = interpolate.interp1d(a,grow)\n", + " #p = ax1.semilogx(a,grow/grow[-1]/a,lw=lw,label=M)\n", + " #colour = p[0].get_color()\n", + " \n", + " p=ax1.semilogx(a,D_linder2(a,csm)/a,lw=lw,ls='--',label=M)\n", + " colour = p[0].get_color()\n", + " ax1.semilogx(a,D/a,lw=lw,ls='-',color=colour)\n", + " ax1.semilogx(a,D_hypergeom(a,csm)/a,lw=lw,ls=':',color=colour)\n", + " \n", + " ax2.semilogx(a,D/D_integral2(a,csm),lw=lw,ls='-',color=colour)\n", + " ax2.semilogx(a,D/D_hypergeom(a,csm),lw=lw,ls=':',color=colour)\n", + " ax2.semilogx(a,D/D_linder2(a,csm),lw=lw,ls='--',color=colour)\n", + "\n", + "ax1.set_xlim([1e-3,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([0,2])\n", + "ax2.set_ylim([0.9,1.3])\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='lower left')\n", + "# bbox_to_anchor=(1.0, 1.035))\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('Growthrate_w0.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb new file mode 100644 index 00000000..363fcab7 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb new file mode 100644 index 00000000..543b5550 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "nuFlag=False\n", + "bolt_names = ['h','Omr','Omb','Omcb','ns','Y_p','Neff','smnu','As']\n", + "h=1\n", + "bolt_cosmo = [h,5.042e-5*(0.7/h)**2,0.046*(0.7/h)**2,(0.224+0.046)*(0.7/h)**2,1.0,0.24,3.046,0.06,1e-10*np.exp(3.043)] #this is the choice of Planck TTTEEE in class for nu\n", + "cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + "# cosmo_dict['Omm'] = cosmo_dict['Omcb']+cosmo_dict['smnu']/93.14/cosmo_dict['h']**2\n", + "\n", + "k = np.logspace(-4,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "beb984ef", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " 'tol_ncdm_synchronous':1.e-10,\n", + " 'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dd878ca2", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version='mead2020')#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version='mead2020_feedback',HMCode_logT_AGN=7.8)#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + "\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=[0.],kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " zmin,zmax = 0, 2\n", + " nz=3\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7c0b8ea7", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=\"HMcode2020\"\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=7.8\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=0.06 \n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear']\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear']\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " print(m_ncdm)\n", + " print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3gAAAInCAYAAADKwfvYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAACTmUlEQVR4nOzdd5icZbnH8e8921t2s9n03gtEIAkdEkhoSpWiiAXxAKIoCiIeCyK2g4qCoAiiFBWlBKRIkRpKCCUJhIT03usm2c328pw/3ndmZ2Zna3ZndnZ/n+uaa2be533K7C5h733Kbc45REREREREJPkFEj0AERERERER6RgK8ERERERERLoJBXgiIiIiIiLdhAI8ERERERGRbkIBnoiIiIiISDehAE9ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPBERERERkW4iNdEDEEkWZrYO6AWsT/BQRERERKR7GwGUOOdGtrWiAjyR1uuVlZVVOHHixMJED0REREREuq9ly5ZRUVHRrroK8ERab/3EiRMLFyxYkOhxiIiIiEg3NnXqVBYuXLi+PXW1B09ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPBERERERkW5CAZ6IiIiIiEg3oQBPRERERESkm1CAJyIiIiIi0k0owBMREREREekmFOCJiIiIiIh0EwrwREREREREugkFeCIiIiIiIt2EArwkZWZDzOw+M9tqZlVmtt7Mbjez3m1sp9Cvt95vZ6vf7pCO7NvMJpnZo2a208wqzWyFmd1sZlnN1DnOzJ4zs2IzqzCzj8zs22aW0kyds8xsjpntN7MDZvaumV3a+q+IiIiIiEjySk30AKTtzGw08DbQD3gKWA4cBXwLOMPMjnfO7WlFO338dsYBrwIPAxOAy4AzzexY59zag+3bzI72208DZgObgJnAj4FZZjbLOVcVVedc4HGgEngEKAbOBm4DjgcuivF5vgHcCewB/gFUAxcCD5jZZOfc9S19TUREREREkpkCvOR0F16AdY1z7s7gRTP7HXAt8Avgqla080u84O53zrnvhLVzDfB7v58zDqZvf7btfiAbONc597R/PQA8Clzg17slrE4v4F6gDjjJ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DHzLf4iIiIiIxDSsGy/R1B48ERERERHpUYb16b658BTgiYiIiIhIj9Kdl2gqwBMRERERkR6lf69M0lO8UGhPWTUHqmoTPKKOowBPRERERER6lJSAMaR3Q8Lzjd1oH54CPBERERER6XG66z48BXgiIiIiItLjDC5omMHbsq8igSPpWArwRERERESkxxkctkRzy14FeCIiIiIiIklrSO+GJZpb9mmJpoiIiIiISNLSEk0REREREZFuYoiWaIqIiIiIiHQPfXMzQrnw9pbXUNZNcuEpwBMRERERkR4nEDAGFmSG3neXZZoK8EREREREpEeK2IfXTZZpKsATEREREZEeKTzA26wZPBERERERkeTVHXPhKcATEREREZEeqTumSlCAJyIiIiIiPVLkDF73SHauAE9ERERERHqkIQXZodeawRMREREREUliA/IzMfNe7yytorq2PrED6gAK8EREREREpEdKTw3QP8/LheccbNuf/LN4CvBERERERKTHGtLNTtJUgCciIiIiIj1W+EEr3SEXngI8ERERERHpsSJSJWgGT0REREREJHlFpErQDJ6IiIiIiEjyCp/B29wNcuEpwBMRERERkR5rUFiAt31/ZQJH0jEU4ImIiIiISI81MD8z9Hrb/kqccwkczcFTgCciIiIiIj1WXmYauRmpAFTV1rOvvCbBIzo4CvBERERERKRHGxA2i7c1yZOdK8ATEREREZEeLXyZZrLvw1OAJyIiIiIiPVr0PrxkpgBPRERERER6tAH53eckTQV4IiIiIiLSow3SHjwREREREZHuYYD24ImIiIiIiHQPA7VEU0REREREpHsYWBC5RDOZk50rwEtSZnacmT1nZsVmVmFmH5nZt80spR1tTTKzR81sp5lVmtkKM7vZzLKaqdPq/s2swMy+a2YPmdlSM6s1M2dmpzTTvmvF44tRdea0cH9mU/2JiIiISM+Vl5FKTrr3a2xlTT37K5I32XlqogcgbWdm5wKPA5XAI0AxcDZwG3A8cFEb2joaeBVIA2YDm4CZwI+BWWY2yzlXdZD9jwB+7b/eDOwG+rcwtJubuJ4HXAfUAi+1sW5tC32KiIiISA9kZgzIz2TNrjLAS5VQkJ2e4FG1jwK8JGNmvYB7gTrgJOfcfP/6jXiB2oVmdrFz7uFWtJUC3A9kA+c65572rweAR4ELgGuBWw6y/w3AKcAHzrliM3sAuLS5sTnnftLEmL/qv3zGObe9LXVFRERERJoyqCArLMCrYOLAXgkeUftoiWbyuRDoCzwcDK4AnHOVwI/8t19rZVszgInAG8Hgzm+rHrjBf3uVmdnB9O+c2+uce8U5V9zKcTXnSv/5ng5oS0REREQEgAG9ukeyc83gJZ+Z/vMLMcreAMqB48wsI3ppZVvacs6tNbOVwDhgFLCmE/pvEzObCkwB1gMvNnPfZ4GRQDWwDHi1o8ciIiIiIt3LwG6SKkEBXvIZ7z+vjC5wztWa2TrgELygbFl72/KtwgvwxtEQ4HVk/20VnL271zV/tFH08tSdZna1c252azoxswVNFE1oTX0RERERST4DwlIlbN2XvAGelmgmn3z/eX8T5cHrBZ3UVkf232pmlgt8Du+glPuauO0pvMNehgBZeAHZ//ljecTMzujIMYmIiIhI9xGeKmF7SUUCR3JwNIOXAGa2HhjehioPOee+0EnDSRafwztB84lmDle5LerSCuAHZrYVuBMv2Iu1tDS6namxrvsze1PaMmgRERERSQ7hSzS1B0/aag1eioHW2hr2OjhDlh/rxrDr+1rRbnva6sj+2yK4PPPP7aj7F7wUDoebWZ5zrrTjhiUiIiIi3cHAXg1LNLftq8Q5R+RZg8lBAV4COOdmHUT1FcA0vH1xEXvFzCwV73CRWmBtK9vCbyuWsf5z+H67juy/VczscL/PdTRzuEpTnHOVZlYK9AZyAAV4IiIiIhKhV1Yq2ekplFfXUVFTR0lFLfnZaYkeVptpD17yedV/jrWfbDpeTru3W3lqZJNtmdkovCBuA5HBWkf231rB3Hd/aeFwlZjMbDxecFeKl2RdRERERCRCMNl50Nb9ybkPTwFe8pmNF6RcbGbTghfNLBP4uf/2T+EVzCzbzCaY2bCotl7HO+lyupmdE3Z/APiV//buqKCqzf0fDDPLAS6h+cNVMLORZlYY43pfvGTu4OXuq+2osYmIiIhI9xKeC29naXJm2dISzSTjnCsxsyvwAq05ZvYwUAycg5fCYDbwSFS1o4DX8AK6k8LaqjOzy/Bm5Wab2WxgIzALb0nkXLy9awfbP2Z2K1Dkvz3Bf/6umQUPj3nSOfdkjI98MdCLZg5X8c0A7jazt/BmHIuBYcCn8PYFzqcheXunq6+vp7i4mNLSUqqqqmjHxKN0E2ZGRkYGeXl5FBYWEgjo72oiIiJdVf+wAG9HSXIetKIALwk55540sxnAD4ELgExgNXAdcEdbljE65941syOBm4HT8E6q3AD8FLgl1lLLdvZ/IY1PDj0t7PV64MkY9Vp7uMoCvPx3U4Ej8ILCUmAx8Chwj3OuuoU2OkR9fT2bNm2ivLw8Ht1JF+eco7KyksrKSsrKyhg6dKiCPBERkS6qX6+M0OudCvAknpxzc/Fmp1pz7xygySOAnHNLgYs6q3///hFtaT+s3tGtvG8x8OX29NHRiouLKS8vJzU1lQEDBpCTk6Nf6Huw+vp6ysrK2L59O+Xl5RQXF1NUVNRyRREREYm7/nnhM3jJuURTv3WKdLDSUu+QzgEDBpCXl6fgrocLBALk5eUxYMAAoOHnQ0RERLqe7rBEU795inSwqirvrz05OTkJHol0JcGfh+DPh4iIiHQ94Us0dyTpISsK8EQ6WHALombuJFwwUaoO3BEREem6wpdo7tIMnoiINCUY4ImIiEjXFXHISmkV9fXJ94dZBXgiIiIiIiJAZloK+VlpANTWO4rL43IIe4dSgCciIiIiIuLrH74PLwmXaSrAE5Euwcw46aSTEj0MERER6eHCT9LcmYSpEhTgiUinMTPtPRMREZGk0i8vuVMlKNG5iHQJy5YtIzs7O9HDEBERkR4ucolm8s3gKcATkS5hwoQJiR6CiIiISGSy89Lkm8HTEk0R6RJi7cH7yU9+gpkxZ84cZs+ezVFHHUV2djaFhYVcfPHFbNmyJWZbxcXFfP/732fixIlkZWWRn5/PrFmzePHFFxvdu3//fn7zm98wc+ZMhgwZQnp6On379uWcc85h3rx5zY51+/btXH755QwePJiUlBQeeOCBg/0yiIiISIKFz+Dt1BJNEZGOd9ddd/H0009zzjnnMGPGDN59910eeeQRFi1axIcffkhGRsM/xBs2bOCkk05i/fr1nHjiiZxxxhmUlZXxn//8hzPOOIN77rmHK664InT/smXL+OEPf8j06dM588wz6d27Nxs3buTpp5/m+eef55lnnuGMM85oNKbi4mKOOeYYcnNzOf/88wkEAvTv3z8uXw8RERHpPP3CD1kp1RJNEZEO98ILL/D+++8zefLk0LVLLrmEf/3rXzz11FN85jOfCV2/9NJL2bBhA//617+4+OKLQ9f37dvHSSedxDXXXMM555wTCsYmTpzI1q1bKSoqiuhz8+bNHHXUUVx77bUxA7zFixfzxS9+kfvuu4/UVP1TKiIi0l1ELNHUDJ6ItGTE/z6b6CG02vpbzkz0EAC45pprIoI7gCuuuIJ//etfvPfee6EAb9GiRbz++utceOGFEcEdQEFBATfffDPnnXcejz/+OF//+tcByM/Pj9nnkCFDuPDCC7nzzjvZuHEjw4YNiyhPT0/n1ltvVXAnIiLSzfTNbVgZtKu0irp6R0ogeU4F128mItLlTZs2rdG1oUOHArB3797QteCeuf379/OTn/ykUZ1du3YB3rLMcHPnzuX3v/898+bNY+fOnVRXV0eUb9mypVGAN2LECPr169f2DyMiIiJdWnpqgMKcdIrLqql3sOdAVcSyza5OAZ6IdHkFBQWNrgVnzurq6kLX9uzZA8BLL73ESy+91GR7Bw4cCL3+97//zYUXXkhmZiannnoqo0ePJicnh0AgwJw5c3j99depqmq8/n7AgAHt/TgiIiLSxfXLy6C4zPuD744SBXgi0oyusuyxOwout/z973/PNddc06o6N954I+np6cyfP5+JEydGlH31q1/l9ddfj1lPCdxFRES6r/69Mlm+vRTw9uFNJvaWjq5IaRJEpNs45phjAHjzzTdbXWf16tVMmjSpUXBXX1/PW2+91aHjExERkeQQkew8yXLhKcATkW5j2rRpnHjiiTzxxBPcd999Me9ZvHgxO3fuDL0fMWIEq1atYuvWraFrzjl+8pOfsHTp0k4fs4iIiHQ9kSdpJleqBC3RFJFO9+Uvf7nJsrvuuovs7OwO6+uf//wnM2fO5H/+53+44447OProoykoKGDz5s189NFHLFmyhHnz5oUOSLn22mu56qqrOOKII7jgggtIS0tj7ty5LF26lLPPPptnnnmmw8YmIiIiySEiF16SpUpQgCcine7BBx9ssuz222/v0ABvyJAhLFiwgDvvvJPHH3+chx56iLq6OgYMGMCkSZP45je/GZFy4atf/SoZGRncfvvtPPjgg2RlZXHiiSdy//338/jjjyvAExER6YH65TUs0Uy2ZOfmnEv0GESSgpktmDJlypQFCxY0e1/wCP7oPV0i+tkQERFJDgs37uX8u94GYPLgfJ755glx7X/q1KksXLhwoXNualvrag+eiIiIiIhImMgZvORaoqkAT0REREREJExRbkOAt/tANXX1ybPqUXvwREREREREwmSmpfCtWWPJz0qjX68MvG1tyZEDVwGeiIiIiIhIlGtPHZfoIbSLlmiKiIiIiIh0EwrwREREREREugkFeCIicaCUNCIiIhIPCvBEOpiZtwG3vr4+wSORriQY4AV/PkREREQ6gwI8kQ6WkeEdq1tWVpbgkUhXEvx5CP58iIiIiHQGBXgiHSwvLw+A7du3U1paSn19vZbn9VDOOerr6yktLWX79u1Aw8+HiIiISGdQmgSRDlZYWEhZWRnl5eVs3rw50cORLiQ7O5vCwsJED0NERES6MQV4Ih0sEAgwdOhQiouLKS0tpaqqSjN4PZiZkZGRQV5eHoWFhQQCWjghIiIinUcBnkgnCAQCFBUVUVRUlOihiIiIiEgPoj8li4iIiIiIdBMK8ERERERERLoJBXgiIiIiIiLdhAI8ERERERGRbkIBnoiIiIiISDehAE9ERERERKSbUIAnIiIiIiLSTZgSMIu0jpntycrKKpw4cWKihyIiIiIi3diyZcuoqKgods71aWtdBXgirWRm64BewPqwywGgP7ADqI9RrbnyWGVN3T/Bf17e7g/QMVr6vPFsry11W3Nve7+Xbb2u7+XB1e0q38uu8n2Envu9bE+ZvpcdX6+19+p7mZj2usq/r82VdeXvZUd/H9vS5gigxDk3ss09OOf00EOPdj6AQYADBrW1PFZZU/cDC4AFXf3zxrO9ttRtzb3t/V6247q+l93ge9lVvo89+XvZnjJ9LxPzfdT3svt8L9v772uyfi87+vvYWW1GP7QHT0REREREpJtQgCciIiIiItJNKMATOTilwM3+c1vLY5W11F6idfT4Dqa9ttRtzb3t/V629XpXoe+lvped0V48v5ftKdP3suPrtfZefS8T015X+fe1ubKu/L3sjLF1+ufVISsiScDMFgA456YmeixycPS97B70few+9L3sPvS97D70vTw4msETERERERHpJjSDJyIiIiIi0k1oBk9ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPJEexsy+b2bOzP6Q6LFI25nZ1Wb2kZmV+I95ZnZmosclbef/t/i+/33cZWbPmNmhiR6XtJ2ZTTezp81si//v65cTPSZpnpl93czWmVmlmS0wsxMTPSZpO/23F5sCPJEexMyO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\n", + "text/plain": [ + "

ju#L&v(Vf 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%0Dn_ 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ℑriJ5U@|&~FEoMVChyu>`n&LiOE=ZmuI6G3hjI;jb>wUp z9`sA@OgGfmqVo~gous~exuZtMq2>9ru*eSg82yIr9bR4Q=D3BpR(YwpRvVd~f{epi^_bhC2(QvqK_g7(du>qYAbH%I!BFZ$i2 z6Ly8~-XwV4oLc{_fSqr$ovBZ}b?J-2LJj0}prH0MQ6ztJN6P6XizN;J|9cg)7>h08 zPUVw{?%P+Ih8~D|4wJt*{8jYwY8QmTvF?R)kTQF4m>UUIJFP5P_kwI@Fj$uK$3KA^ znRYviEO`jw?=v&}gYEglB9B7oo1`P#l3vln!4WeIu4CCli9e@m^zgKN>IuPSZzmI% SmXwkelOf~hzpHbP?7sj8I#s6t literal 0 HcmV?d00001 diff --git a/class/explanatory.ini b/class/explanatory.ini old mode 100644 new mode 100755 index 4ce23a4a..3a963ba2 --- a/class/explanatory.ini +++ b/class/explanatory.ini @@ -1,228 +1,355 @@ -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* -* CLASS input parameter file * -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* - -> This example of input file, intended for CLASS beginners, lists all -> possibilities with detailed comments. You can use a more concise version, in -> which only the arguments in which you are interested would appear. Only -> lines containing an equal sign not preceded by a sharp sign "#" are -> considered by the code. Hence, do not write an equal sign within a comment, -> the whole line would be interpreted as relevant input. Input files must have -> an extension ".ini". - ----------------------------- -----> background parameters: ----------------------------- - -1) Hubble parameter : either 'H0' in km/s/Mpc or 'h' or '100*theta_s' where the - latter is the peak scale parameter 100(ds_dec/da_dec) close to 1.042143 - (default: 'h' set to 0.67556) +# *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* +# * CLASS input parameter file * +# *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* + +# This example of input file, intended for CLASS beginners, lists all +# possibilities with detailed comments. You can use a more concise version, in +# which only the arguments in which you are interested would appear. Only +# lines containing an equal sign not preceded by a sharp sign "#" are +# considered by the code, any other line is considered as a comment. +# +# The normal syntax is: parameter = value(s) +# where white spaces do not matter (they are removed automatically +# by the parser unless they are part of the parameter name). +# However, 'parameter' = value(s) +# and "parameter" = value(s) +# are also accepted by the parser since v2.8.0 +# +# Input files must have an extension ".ini". + +# ---------------------------- +# ----> background parameters: +# ---------------------------- + +# 1) Hubble parameter : either 'H0' in km/s/Mpc or 'h' or '100*theta_s' where the +# latter is the peak scale parameter 100(ds_dec/da_dec) close to 1.042143 +# (default: 'h' set to 0.67556) #H0 = 67.556 h =0.67556 #100*theta_s = 1.042143 -2) photon density: either 'T_cmb' in K or 'Omega_g' or 'omega_g' (default: - 'T_cmb' set to 2.7255) +# 2) photon density: either 'T_cmb' in K or 'Omega_g' or 'omega_g' (default: +# 'T_cmb' set to 2.7255) T_cmb = 2.7255 #Omega_g = #omega_g = -3) baryon density: either 'Omega_b' or 'omega_b' (default: 'omega_b' set to - 0.022032) +# 3) baryon density: either 'Omega_b' or 'omega_b' (default: 'omega_b' set to +# 0.022032) #Omega_b = omega_b = 0.022032 -4a) ultra-relativistic species / massless neutrino density: either 'N_ur' or - 'Omega_ur' or 'omega_ur' (default: 'N_ur' set to 3.046) (note: instead of - 'N_ur' you can pass equivalently 'N_eff', although this syntax is - deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) +# 4a) ultra-relativistic species / massless neutrino density: either 'N_ur' or +# 'Omega_ur' or 'omega_ur' (default: 'N_ur' set to 3.046) (note: instead of +# 'N_ur' you can pass equivalently 'N_eff', although this syntax is +# deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) N_ur = 3.046 #Omega_ur = #omega_ur = -4b) to simulate ultra-relativistic species with non-standard - properties, you can pass 'ceff2_ur' and 'cvis2_ur' (effective squared - sound speed and viscosity parameter, like in the Generalised Dark - Matter formalism of W. Hu) (default: both set to 1/3) +# 4b) to simulate ultra-relativistic species with non-standard +# properties, you can pass 'ceff2_ur' and 'cvis2_ur' (effective squared +# sound speed and viscosity parameter, like in the Generalised Dark +# Matter formalism of W. Hu) (default: both set to 1/3) #ceff2_ur = #cvis2_ur = -5) density of cdm (cold dark matter): 'Omega_cdm' or 'omega_cdm' (default: - 'omega_cdm' set to 0.12038) +# 5) density of cdm (cold dark matter): 'Omega_cdm' or 'omega_cdm' (default: +# 'omega_cdm' set to 0.12038) #Omega_cdm = omega_cdm = 0.12038 -5b) For models with decaying cold dark matter (dcdm) you can choose to pass either: +# 5b) For models with decaying cold dark matter (dcdm) you can choose to pass either: -5b1) the current fractional density of dcdm+dr (decaying cold dark - matter and its relativistic decay radiation): 'Omega_dcdmdr' or - 'omega_dcdmdr' (default: 'Omega_dcdmdr' set to 0) +# 5b1) the current fractional density of dcdm+dr (decaying cold dark +# matter and its relativistic decay radiation): 'Omega_dcdmdr' or +# 'omega_dcdmdr' (default: 'Omega_dcdmdr' set to 0) Omega_dcdmdr = 0.0 #omega_dcdmdr = 0.0 -5b2) the rescaled initial value for dcdm density (see 1407.2418 for definitions). If you specify 5b1, 5b2 will be found autamtically by a shooting method, and vice versa. (default: 'Omega_dcdmdr' set to 0, hence so is 'Omega_ini_dcdm') +# 5b2) the rescaled initial value for dcdm density (see 1407.2418 for definitions). If you specify 5b1, 5b2 will be found autamtically by a shooting method, and vice versa. (default: 'Omega_dcdmdr' set to 0, hence so is 'Omega_ini_dcdm') #Omega_ini_dcdm = #omega_ini_dcdm = -5c) decay constant of dcdm in km/s/Mpc, same unit as H0 above. +# 5c) decay constant of dcdm in km/s/Mpc, same unit as H0 above. Gamma_dcdm = 0.0 -6) all parameters describing the ncdm sector (i.e. any non-cold dark matter - relics, including massive neutrinos, warm dark matter, etc.): - - -> 'N_ncdm' is the number of distinct species (default: set to 0) +# 6) all parameters describing the ncdm sector (i.e. any non-cold dark matter +# relics, including massive neutrinos, warm dark matter, etc.): +# +# -> 'N_ncdm' is the number of distinct species (default: set to 0) N_ncdm = 0 - -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space - distribution (psd) passed analytically inside the code, in the mnodule - background.c, inside the function background_ncdm_distribution()'; 1 means - 'psd passed as a file with at list two columns: first for q, second for - f_0(q)', where q is p/T_ncdm (default: only zeros) +# -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space +# distribution (psd) passed analytically inside the code, in the mnodule +# background.c, inside the function background_ncdm_distribution()'; 1 means +# 'psd passed as a file with at list two columns: first for q, second for +# f_0(q)', where q is p/T_ncdm (default: only zeros) #use_ncdm_psd_files = 0 - -> if some of the previous values are equal to one, 'ncdm_psd_filenames' is - the list of names of psd files (as many as number of ones in previous entry) +# -> if some of the previous values are equal to one, 'ncdm_psd_filenames' is +# the list of names of psd files (as many as number of ones in previous entry) ncdm_psd_filenames = psd_FD_single.dat - -> 'ncdm_psd_parameters' is an optional list of double parameters to describe - the analytic distribution function or to modify a p.s.d. passed as a file. - It is made available in the routine background_ncdm_distribution. +# -> 'ncdm_psd_parameters' is an optional list of double parameters to describe +# the analytic distribution function or to modify a p.s.d. passed as a file. +# It is made available in the routine background_ncdm_distribution. #ncdm_psd_parameters = Nactive, sin^2_12 ,s23 ,s13 ncdm_psd_parameters = 0.3 ,0.5, 0.05 -The remaining parameters should be entered as a list of N_ncdm numbers -separated by commas: +# The remaining parameters should be entered as a list of N_ncdm numbers +# separated by commas: - -> 'Omega_ncdm' or 'omega_ncdm' or 'm_ncdm' in eV (default: all set to zero); - with only one of these inputs, CLASS computes the correct value of - the mass; if both (Omega_ncdm, m_ncdm) or (omega_ncdm, m_ncdm) are - passed, CLASS will renormalise the psd in order to fulfill both - conditions. - Passing zero in the list of m_ncdm's or Omeg_ncdm's means that for - this component, this coefficient is not imposed, and its value is - inferred from the other one. +# -> 'Omega_ncdm' or 'omega_ncdm' or 'm_ncdm' in eV (default: all set to zero); +# with only one of these inputs, CLASS computes the correct value of +# the mass; if both (Omega_ncdm, m_ncdm) or (omega_ncdm, m_ncdm) are +# passed, CLASS will renormalise the psd in order to fulfill both +# conditions. +# Passing zero in the list of m_ncdm's or Omeg_ncdm's means that for +# this component, this coefficient is not imposed, and its value is +# inferred from the other one. m_ncdm = 0.04, 0.04, 0.04 Omega_ncdm = - -> 'T_ncdm' is the ncdm temperature in units of photon temperature - (default: set to 0.71611, which is slightly larger than the - instantaneous decoupling value (4/11)^(1/3); indeed, this default - value is fudged to give a ratio m/omega equal to 93.14 eV for - active neutrinos, as predicted by precise studies of active - neutrino decoupling, see hep-ph/0506164) +# -> 'T_ncdm' is the ncdm temperature in units of photon temperature +# (default: set to 0.71611, which is slightly larger than the +# instantaneous decoupling value (4/11)^(1/3); indeed, this default +# value is fudged to give a ratio m/omega equal to 93.14 eV for +# active neutrinos, as predicted by precise studies of active +# neutrino decoupling, see hep-ph/0506164) T_ncdm = - -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature - (default: set to 0) +# -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature +# (default: set to 0) ksi_ncdm = - -> 'deg_ncdm' is the degeneracy parameter multiplying the psd: 1 stands for - 'one family', i.e. one particle + anti-particle (default: set to 1.0) +# -> 'deg_ncdm' is the degeneracy parameter multiplying the psd: 1 stands for +# 'one family', i.e. one particle + anti-particle (default: set to 1.0) deg_ncdm = -7) curvature: 'Omega_k' (default: 'Omega_k' set to 0) +# -> 'Quadrature strategy' is the method used for the momentum sampling of the +# ncdm distribution function. 0 is the automatic method, 1 is Gauss-Laguerre +# quadrature, 2 is the trapezoidal rule on [0,Infinity] using the transformation +# q->1/t-1. 3 is the trapezoidal rule on [0,q_max] where q_max is the next input. +# (default: set to 0) + +Quadrature strategy = + +# -> 'Maximum q' is the maximum q relevant only for Quadrature strategy 3. +# (default: set to 15) + +Maximum q = + +# 7) curvature: 'Omega_k' (default: 'Omega_k' set to 0) Omega_k = 0. -8a) Dark energy contributions. At least one out of three conditions must be satisfied: - i) 'Omega_Lambda' unspecified. - ii) 'Omega_fld' unspecified. - iii) 'Omega_scf' set to a negative value. [Will be refered to as - unspecified in the following text.] - The code will then use the first unspecified component to satisfy the - closure equation (sum_i Omega_i) equals (1 + Omega_k) - (default: 'Omega_fld' and 'Omega_scf' set to 0 and 'Omega_Lambda' inferred - by code) - -Omega_Lambda = 0.0 -#Omega_fld = 0 +# 8a) Dark energy contributions. At least one out of three conditions must be satisfied: +# i) 'Omega_Lambda' unspecified. +# ii) 'Omega_fld' unspecified. +# iii) 'Omega_scf' set to a negative value. [Will be refered to as +# unspecified in the following text.] +# The code will then use the first unspecified component to satisfy the +# closure equation (sum_i Omega_i) equals (1 + Omega_k) +# (default: 'Omega_fld' and 'Omega_scf' set to 0 and 'Omega_Lambda' inferred +# by code) + +# Omega_Lambda = 0.7 +Omega_fld = 0 Omega_scf = 0 -8b) equation of state parameter (p/rho equal to w0+wa(1-a/a0) ) and sound speed - of the fluid (this is the sound speed defined in the frame comoving with - the fluid, i.e. obeying to the most sensible physical definition) +# 8b) The flag 'use_ppf' is 'yes' by default, to use the PPF approximation +# (see 0808.3125 [astro-ph]) allowing perturbations to cross the +# phantom divide. Set to 'no' to enforce true fluid equations for +# perturbations. When the PPF approximation is used, you can choose +# the ratio 'c_gamma_over_c_fld' (eq. (16) in 0808.3125). The +# default is 0.4 as recommended by that reference, and implicitely +# assumed in other codes. (default: 'use_ppf' to yes, 'c_gamma_over_c_fld' to 0.4) + +use_ppf = yes +c_gamma_over_c_fld = 0.4 + +# 8c) Choose your equation of state between different models, 'CLP' for +# p/rho = w0_fld + wa_fld (1-a/a0) (Chevalier-Linder-Polarski). +# (default:'fluid_equation_of_state' set to 'CLP') + +#fluid_equation_of_state = CLP + +# 8c1) equation of state of the fluid in 'CLP' case (p/rho = w0_fld + +# wa_fld (1-a/a0)) and squared sound speed 'cs2_fld' of the fluid +# (this is the sound speed defined in the frame comoving with the +# fluid, i.e. obeying to the most sensible physical +# definition). Generalizing w(a) to a more complicated expressions +# would be easy, for that, have a look into source/background.c at +# the function background_w_fld(). (default: 'w0_fld' set to -1, +# 'wa_fld' to 0, 'cs2_fls' to 1) w0_fld = -0.9 wa_fld = 0. cs2_fld = 1 -8c) Scalar field (scf) initial conditions from attractor solution (assuming - pure exponential potential). (default: yes) +# 8d) Scalar field (scf) initial conditions from attractor solution (assuming +# pure exponential potential). (default: yes) attractor_ic_scf = yes -8d) Scalar field (scf) potential parameters and initial conditions. V equals - ((\phi-B)^\alpha + A)exp(-lambda*phi), see - http://arxiv.org/abs/astro-ph/9908085. +# 8e) Scalar field (scf) potential parameters and initial conditions. V equals +# ((\phi-B)^\alpha + A)exp(-lambda*phi), see +# http://arxiv.org/abs/astro-ph/9908085. #scf_parameters = [scf_lambda, scf_alpha, scf_A, scf_B, phi, phi_prime] scf_parameters = 10.0, 0.0, 0.0, 0.0, 100.0, 0.0 -If 'attractor_ic_scf' is set to 'no', the last two entries are assumed to be -the initial values of phi in units of the reduced planck mass m_Pl and the -conformal time derivative of phi in units of [m_Pl/Mpc]. (Note however that -CLASS determines the initial scale factor dynamically and the results might not -be as expected in some models.) +# If 'attractor_ic_scf' is set to 'no', the last two entries are assumed to be +# the initial values of phi in units of the reduced planck mass m_Pl and the +# conformal time derivative of phi in units of [m_Pl/Mpc]. (Note however that +# CLASS determines the initial scale factor dynamically and the results might not +# be as expected in some models.) -8e) Scalar field (scf) tuning parameter: If Omega_scf is negative, the - following index (0,1,2,...) in scf_parameters will be used for tuning: +# 8f) Scalar field (scf) tuning parameter: If Omega_scf is negative, the +# following index (0,1,2,...) in scf_parameters will be used for tuning: scf_tuning_index = 0 -9) scale factor today 'a_today' (arbitrary and irrelevant for most purposes) - (default: set to 1) +# 9) scale factor today 'a_today' (arbitrary and irrelevant for most purposes) +# (default: set to 1) # a_today = 1. --------------------------------- -----> thermodynamics parameters: --------------------------------- - -1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will - be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') +# 10) Dark Matter interacting with Dark Radiation (idm_dr) and +# interacting Dark Radiation (idr), implemented by +# M. Archidiacono, S. Bohr, and D.C. Hooper following the ETHOS +# framework (1512.05344). Can also take as input the parameters +# of the models of 1507.04351 (with non-abelian dark matter, dark +# gluons...) wicj can be seen as a sub-class of ETHOS. See +# 1907.01496 for more details on both cases. + +# -> Amount of idm_dr. Enter either: +# - 'Omega_idm_dr', +# - 'omega_idm_dr', or +# - the fraction 'f_idm_dr' of CDM that should be interacting; the latter option requires +# that Omega_cdm or omega_cdm are non-zero +# default: 0) +Omega_idm_dr = 0. +#omega_idm_dr = +#f_idm_dr = + +# -> interacting dark matter mass, 'm_idm' (or equivalently just 'm_dm') in eV (default: 1.0e11) +m_idm = 1.0e11 + +# -> Amount of interacting dark radiation idr. +# - Can be parameterised through the temperature ratio 'xi_idr' (= T_idr/T_cmb) +# - Can be parameterised through the number of extra relativistic relics 'N_idr' (or indifferently 'N_dg') +# In all cases the parameter is dimensionless. +# (default : 0) +xi_idr = +#N_idr = + +# -> Statistical factor to differentiate between fermionic (= 7/8) and bosonic (= 1) dark radiation (default 7/8) +stat_f_idr = 0.875 + +# -> Strength of the coupling between DM and DR: +# +# - Can be passed indifferently as 'a_idm_dr' or 'a_dark' in ETHOS parameterisation, in units of 1/Mpc. +# Then in ETHOS notations: Gamma_DR-DM = - omega_DM a_dark ((1+z)/10^7)^nindex_dark +# while: Gamma_DM-DR = - 4/3 (rho_DR/rho_DM) omega_DM a_dark ((1+z)/10^7)^nindex_dark +# = - 4/3 omega_DR a_dark (1+z) ((1+z)/10^7)^nindex_dark +# or in CLASS notations: dmu_idm_dr = - Gamma_DR-DM = omega_idm_dr a_idm_dr ((1+z)/10^7)^nindex_idm_dr +# +# - Can be passed as 'Gamma_0_nadm' in NADM parameterisation, in units of 1/Mpc. +# Then in ETHOS notations: Gamma_DR-DM = - 3/4 Omega_DM/Omega_DR Gamma_0_nadm +# while: Gamma_DM-DR = - (1+z) Gamma_0_nadm +# or in CLASS notations: dmu_idm_dr = - Gamma_DR-DM = 3/4 Omega_idm_dr/Omega_idr Gamma_0_nadm +# +# (default : 0) +a_idm_dr = 0. +#Gamma_0_nadm = + +# -> Strength of the dark radiation self interactions coupling, +# can be passed indifferently as 'b_idr' (or 'b_dark'), in units of 1/Mpc. +# In ETHOS notations: Gamma_DR-DR = (b_dark/a_dark) (Omega_DR/Omega_DM) Gamma_DR-DM +# In CLASS notations: dmu_idr = - Gamma_DR-DR = (b_idr/a_idm_dr) (Omega_idr/Omega_idm_dr) dmu_idm_dr +# (default : 0) +b_idr = + +# -> Power of the temperature dependence of the co-moving idr - idm_dr interaction rate +# Can be passed indifferently as 'nindex_idm_dr' (or 'nindex_dark'), in units of 1/Mpc. +# (default : 4, unless Gamma_0_nadm has been passed, then default changes to 0) +nindex_idm_dr = + +# -> Nature of the interacting dark radiation: 'free_streaming' or 'fluid' +# (default = 'free_streaming', unless Gamma_0_nadm has been passed, then default changes to 'fluid') +idr_nature = + +# -> idr - idm_dr interaction angular coefficient: 'alpha_idm_dr' (or indifferently 'alpha_dark') +# Should be 3/4 if vector boson mediator; 3/2 if scalar boson mediator. +# In full generality this coefficient may depend on l = 2, 3, 4... +# The user can pass here a list of values with an arbitrary size. The first coefficients will be adjusted +# accordingly. After that, the last value will be repeated. +# For instance, if users passes 3, 2, 1, the code will take alpha_2=3, alpha_3=2, and all others equal to 1. +# (default = all set to 1.5) +alpha_idm_dr = 1.5 + +# -> idr self-interaction angular coefficient: 'beta_idr' (or indifferently 'beta_dark') +# In full generality this coefficient may depend on l = 2, 3, 4... +# The user can pass here a list of values with an arbitrary size. The first coefficients will be adjusted +# accordingly. After that, the last value will be repeated. +# For instance, if users passes 3, 2, 1, the code will take beta_2=3, beta_3=2, and all others equal to 1. +# (default = all set to 1.5) +beta_idr = 1.5 + +# -> Precision parameters for idm_dr and idr can be found in precisions.h, with the tag idm_dr or idr + +# -------------------------------- +# ----> thermodynamics parameters: +# -------------------------------- + +# 1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will +# be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') YHe = BBN -2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' +# 2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' recombination = RECFAST -2) parametrization of reionization: 'reio_parametrization' must be one - of 'reio_none' (no reionization), 'reio_camb' (like CAMB: one - tanh() step for hydrogen reionization one for second helium - reionization), 'reio_bins_tanh' (binned history x_e(z) with tanh() - interpolation between input values), 'reio_half_tanh' (like - 'reio_camb' excepted that we match the function xe(z) from - recombination with only half a tanh(z-z_reio)), 'reio_many_tanh' - (arbitrary number of tanh-like steps with specified central values, - a scheme usually more useful than 'reio_bins_tanh')... (default: - set to 'reio_camb') +# 2) parametrization of reionization: 'reio_parametrization' must be one +# of 'reio_none' (no reionization), 'reio_camb' (like CAMB: one +# tanh() step for hydrogen reionization one for second helium +# reionization), 'reio_bins_tanh' (binned history x_e(z) with tanh() +# interpolation between input values), 'reio_half_tanh' (like +# 'reio_camb' excepted that we match the function xe(z) from +# recombination with only half a tanh(z-z_reio)), 'reio_many_tanh' +# (arbitrary number of tanh-like steps with specified ending values, +# a scheme usually more useful than 'reio_bins_tanh'), 'reio_inter' +# (linear interpolation between discrete values of xe(z))... (default: +# set to 'reio_camb') reio_parametrization = reio_camb -3.a.) if 'reio_parametrization' set to 'reio_camb' or 'reio_half_tanh': enter - one of 'z_reio' or 'tau_reio' (default: 'z_reio' set to 11.357 to get tau_reio of 0.0925), plus - 'reionization_exponent', 'reionization_width', - 'helium_fullreio_redshift', 'helium_fullreio_width' - (default: set to 1.5, 0.5, 3.5, 0.5) +# 3.a.) if 'reio_parametrization' set to 'reio_camb' or 'reio_half_tanh': enter +# one of 'z_reio' or 'tau_reio' (default: 'z_reio' set to 11.357 to get tau_reio of 0.0925), plus +# 'reionization_exponent', 'reionization_width', +# 'helium_fullreio_redshift', 'helium_fullreio_width' +# (default: set to 1.5, 0.5, 3.5, 0.5) z_reio = 11.357 #tau_reio = 0.0925 @@ -232,47 +359,64 @@ reionization_width = 0.5 helium_fullreio_redshift = 3.5 helium_fullreio_width = 0.5 -3.b.) if 'reio_parametrization' set to 'reio_bins_tanh': enter number of bins - and list of z_i and xe_i defining the free electron density at the center - of each bin. Also enter a dimensionless paramater regulating the - sharpness of the tanh() steps, independently of the bin width; - recommended sharpness is 0.3, smaller values will make steps too sharp, - larger values will make the step very progressive but with discontinuity - of x_e(z) derivative around z_i values. - (default: set to 0, blank, blank, 0.3) +# 3.b.) if 'reio_parametrization' set to 'reio_bins_tanh': enter number of bins +# and list of z_i and xe_i defining the free electron density at the center +# of each bin. Also enter a dimensionless paramater regulating the +# sharpness of the tanh() steps, independently of the bin width; +# recommended sharpness is 0.3, smaller values will make steps too sharp, +# larger values will make the step very progressive but with discontinuity +# of x_e(z) derivative around z_i values. +# (default: set to 0, blank, blank, 0.3) binned_reio_num = 3 binned_reio_z = 8,12,16 binned_reio_xe = 0.8,0.2,0.1 binned_reio_step_sharpness = 0.3 -3.c.) if 'reio_parametrization' set to 'reio_many_tanh': enter number of jumps, - list of jump redhsifts z_i (central value of each tanh()), list of free electron density x_i after each jump, and common width of all jumps. If you want to end up with all hydrogen reionized but neglecting helium reionization, the first value of x_i in the list should be 1. For each x_i you can also pass the flags -1 or -2. They mean: for -1, after hydrogen + first helium recombination (so the code will substitute a value bigger than one based on Y_He); for -2, after hydrogen + second helium recombination (the code will substitite an even bigger value based on Y_He). You can get results close to reio_camb by setting these parameters to the value showed below (and adapting the second many_tanh_z to the usual z_reio). (default: not set) +# 3.c.) if 'reio_parametrization' set to 'reio_many_tanh': enter number of jumps, +# list of jump redhsifts z_i (central value of each tanh()), list of free electron density x_i after each jump, and common width of all jumps. If you want to end up with all hydrogen reionized but neglecting helium reionization, the first value of x_i in the list should be 1. For each x_i you can also pass the flags -1 or -2. They mean: for -1, after hydrogen + first helium recombination (so the code will substitute a value bigger than one based on Y_He); for -2, after hydrogen + second helium recombination (the code will substitute an even bigger value based on Y_He). You can get results close to reio_camb by setting these parameters to the value showed below (and adapting the second many_tanh_z to the usual z_reio). (default: not set) many_tanh_num = 2 many_tanh_z = 3.5,11.3 many_tanh_xe = -2,-1 many_tanh_width = 0.5 -4.a) in order to model energy injection from DM annihilation, specify a - parameter 'annihilation' corresponding to the energy fraction absorbed by - the gas times the DM cross section divided by the DM mass, (f / - m_cdm), see e.g. 0905.0003, expressed here in units of m^3/s/Kg - (default: set to zero) +# 3.d.) if 'reio_parametrization' set to 'reio_inter': enter the number +# of points, the list of redshifts z_i, and the list of free electron +# fraction values x_i. The code will do linear interpolation between +# them. The first z_i should always be 0. Like above, for each x_i, you +# can also pass the flags -1 or -2. They mean: for -1, after the +# hydrogen and the first helium recombination (so the code will +# substitute a value bigger than one based on Y_He); for -2, after the +# hydrogen and the second helium recombination (the code will substitute +# an even bigger value based on Y_He). The last value of x_i should +# always be zero, the code will substitute it with the value that one +# would get in absence of reionization, as computed by the recombination +# code. (default: not set) + +reio_inter_num = 8 +reio_inter_z = 0, 3, 4, 8, 9, 10, 11, 12 +reio_inter_xe = -2, -2, -1, -1, 0.9, 0.5, 0.1, 0 + +# 4.a) in order to model energy injection from DM annihilation, specify a +# parameter 'annihilation' corresponding to the energy fraction absorbed by +# the gas times the DM cross section divided by the DM mass, (f / +# m_cdm), see e.g. 0905.0003, expressed here in units of m^3/s/Kg +# (default: set to zero) annihilation = 0. -4.b) you can model simple variations of the above quanity as a function of - redhsift. If 'annihilation_variation' is non-zero, the function F(z) - defined as (f / m_cdm)(z) will be a parabola in log-log scale - between 'annihilation_zmin' and 'annihilation_zmax', with a curvature - given by 'annihilation_variation' (must be negative), and with a maximum - in 'annihilation_zmax'; it will be constant outside this range. To take DM - halos into account, specify the parameters 'annihilation_f_halo', the - amplitude of the halo contribution, and 'annihilation_z_halo', the - characteristic redshift of halos - (default: no variation, 'annihilation_variation' and 'annihilation_f_halo' - set to zero). +# 4.b) you can model simple variations of the above quanity as a function of +# redhsift. If 'annihilation_variation' is non-zero, the function F(z) +# defined as (f / m_cdm)(z) will be a parabola in log-log scale +# between 'annihilation_zmin' and 'annihilation_zmax', with a curvature +# given by 'annihilation_variation' (must be negative), and with a maximum +# in 'annihilation_zmax'; it will be constant outside this range. To take DM +# halos into account, specify the parameters 'annihilation_f_halo', the +# amplitude of the halo contribution, and 'annihilation_z_halo', the +# characteristic redshift of halos +# (default: no variation, 'annihilation_variation' and 'annihilation_f_halo' +# set to zero). annihilation_variation = 0. annihilation_z = 1000 @@ -281,160 +425,224 @@ annihilation_zmin = 30 annihilation_f_halo= 20 annihilation_z_halo= 8 -4.c) You can also state whether you want to use the on-the-spot approximation - (default: 'on the spot' is 'yes') +# 4.c) You can also state whether you want to use the on-the-spot approximation +# (default: 'on the spot' is 'yes') on the spot = yes -5) to model DM decay, specify a parameter 'decay' which is equal to the energy - fraction absorbed by the gas divided by the lifetime of the particle, see - e.g. 1109.6322, expressed here in 1/s - (default: set to zero) +# 5) to model DM decay, specify a parameter 'decay' which is equal to the energy +# fraction absorbed by the gas divided by the lifetime of the particle, see +# e.g. 1109.6322, expressed here in 1/s +# (default: set to zero) decay = 0. -6) State whether you want the code to compute the simplest analytic approximation to the photon damping scale (it will be added to the thermodynamics output, and its value at recombination will be stored and displayed in the standard output) (default: 'compute damping scale' set to 'no') +# 6) State whether you want the code to compute the simplest analytic approximation to the photon damping scale (it will be added to the thermodynamics output, and its value at recombination will be stored and displayed in the standard output) (default: 'compute damping scale' set to 'no') # compute damping scale = yes ----------------------------------------------------- -----> define which perturbations should be computed: ----------------------------------------------------- - -1.a) list of output spectra requested: -- 'tCl' for temperature Cls, -- 'pCl' for polarization Cls, -- 'lCl' for CMB lensing potential Cls, -- 'nCl' (or 'dCl') for density number count Cls, -- 'sCl' for galaxy lensing potential Cls, -- 'mPk' for total matter power spectrum P(k) infered from gravitational potential, -- 'dTk' (or 'mTk') for density transfer functions for each species, -- 'vTk' for velocity transfer function for each species. -By defaut, the code will try to compute the following cross-correlation Cls (if -available): temperature-polarisation, temperature-CMB lensing, polarization-CMB -lensing, and density-lensing. Other cross-correlations are not computed because -they would slow down the code considerably. - -Can be left blank if you do not want to evolve cosmological perturbations at -all. (default: set to blanck, no perturbation calculation) - -#output = tCl,pCl,lCl +# ---------------------------------------------------- +# ----> define which perturbations should be computed: +# ---------------------------------------------------- + +# 1.a) list of output spectra requested: +# - 'tCl' for temperature Cls, +# - 'pCl' for polarization Cls, +# - 'lCl' for CMB lensing potential Cls, +# - 'nCl' (or 'dCl') for density number count Cls, +# - 'sCl' for galaxy lensing potential Cls, +# - 'mPk' for total matter power spectrum P(k) infered from gravitational potential, +# - 'dTk' (or 'mTk') for density transfer functions for each species, +# - 'vTk' for velocity transfer function for each species. +# Warning: both lCl and sCl compute the C_ls of the lensing potential, C_l^phi-phi. +# If you are used to other codes, you may want to deal instead with the deflection +# Cls or the shear/convergence Cls. The relations between them are trivial: +# --> deflection d: +# Cl^dd = l(l+1) C_l^phiphi +# --> convergence kappa and shear gamma: the share the same harmonic power spectrum: +# Cl^gamma-gamma = 1/4 * [(l+2)!/(l-2)!] C_l^phi-phi +# By defaut, the code will try to compute the following cross-correlation Cls (if +# available): temperature-polarisation, temperature-CMB lensing, polarization-CMB +# lensing, CMB lensing-density, and density-lensing. Other cross-correlations are +# not computed because they would slow down the code considerably. +# +# Can be left blank if you do not want to evolve cosmological perturbations at +# all. (default: set to blanck, no perturbation calculation) + +output = tCl,pCl,lCl #output = tCl,pCl,lCl,mPk -output = mPk +#output = mPk,mTk -1.b) if you included 'tCl' in the list, you can take into account only some of - the terms contributing to the temperature spectrum: intrinsic temperature - corrected by Sachs-Wolfe ('tsw' or 'TSW'), early integrated Sachs-Wolfe - ('eisw' or 'EISW'), late integrated Sachs-Wolfe ('lisw' or 'LISW'), - Doppler ('dop' or 'Dop'), polarisation contribution ('pol' or 'Pol'). Put - below the list of terms to be included - (defaut: if this field is not passed, all terms will be included) +# 1.b) if you included 'tCl' in the list, you can take into account only some of +# the terms contributing to the temperature spectrum: intrinsic temperature +# corrected by Sachs-Wolfe ('tsw' or 'TSW'), early integrated Sachs-Wolfe +# ('eisw' or 'EISW'), late integrated Sachs-Wolfe ('lisw' or 'LISW'), +# Doppler ('dop' or 'Dop'), polarisation contribution ('pol' or 'Pol'). Put +# below the list of terms to be included +# (defaut: if this field is not passed, all terms will be included) #temperature contributions = tsw, eisw, lisw, dop, pol -1.c) if one of 'eisw' or 'lisw' is turned off, the code will read 'early/late - isw redshift', the split value of redshift z at which the isw is - considered as late or early (if this field is absent or left blank, by - default, 'early/late isw redshift' is set to 50) +# 1.c) if one of 'eisw' or 'lisw' is turned off, the code will read 'early/late +# isw redshift', the split value of redshift z at which the isw is +# considered as late or early (if this field is absent or left blank, by +# default, 'early/late isw redshift' is set to 50) #early/late isw redshift = -1.d) if you included 'nCl' (or 'dCl') in the list, you can take into account - only some of the terms contributing to the obsevable number count - fluctuation spectrum: matter density ('density'), redshift-space and - Doppler distortions ('rsd'), lensing ('lensing'), or gravitational - potential terms ('gr'). Put below the list of terms to be included - (defaut: if this field is not passed, only 'dens' will be included) +# 1.d) if you included 'nCl' (or 'dCl') in the list, you can take into account +# only some of the terms contributing to the obsevable number count +# fluctuation spectrum: matter density ('density'), redshift-space and +# Doppler distortions ('rsd'), lensing ('lensing'), or gravitational +# potential terms ('gr'). Put below the list of terms to be included +# (defaut: if this field is not passed, only 'dens' will be included) #number count contributions = density, rsd, lensing, gr -2) if you want an estimate of the non-linear P(k) and Cls, enter 'halofit' or - 'Halofit' or 'HALOFIT' for Halofit; otherwise leave blank - (default: blank, linear P(k) and Cls) - -non linear = Halofit - -3) if you want to consider perturbed recombination, enter a word containing the - letter 'y' or 'Y'. CLASS will then compute the perturbation in the - ionization fraction x_e and the baryon temperature. The initial conformal - time will be small, therefore you should use the default integrator ndf15 - (i.e. do not set 'evolver' to 0, otherwise the code will be slower). - (default: neglect perturbed recombination) +# 1.e) if you included 'dTk' (or 'mTk') in the list, the code will give +# you by default the transfer function of the scale-invariant Bardeen +# potentials (for whatever gauge you are using). If you need the +# transfer function of additional metric fluctuations, specific to the +# gauge you are using, set the following flag to 'yes' (default: +# set to 'no') + +extra metric transfer functions = + +# 1.f) if you included 'dTk' or 'vTk' in the list of outputs, you may +# transform your transfer functions into the Nbody gauge by setting +# the following flag to ‘yes'. This will also include the transfer +# function for the metric perturbations H_T’ (exact) and gamma +# (approximate) in the Nbody gauge, see e.g. 1505.04756 and +# 1811.00904. These calculations are more stable whith +# 'gauge=synchronous' (default). To compute H_T' and gamma without +# converting the output to the Nbody gauge, use the previous flag +# 'extra metric transfer functions'. (default: set to 'no'). + +Nbody gauge transfer functions = + +# 2.a) if you want an estimate of the non-linear P(k) and Cls, enter +# 'halofit' or 'Halofit' or 'HALOFIT' for Halofit, and +# 'hmcode' or 'Hmcode' or 'HMcode' or 'HMCODE') for HMcode; +# otherwise leave blank (default: blank, linear P(k) and Cls) + +non linear = + +# 2.b) if you chose Halofit, and you have Omega0_fld != 0. (i.e. you +# set Omega_lambda=0.) & wa_fld != 0., then you might want to use the +# pk equal method of 0810.0190 and 1601.07230 by setting this flag to +# 'yes' (default: set to 'no') + +pk_eq = + +# 2.c) if you chose HMcode: +# In HMcode you can specify a baryonic feedback model (otherwise only DM is used). +# Each model depends on two parameters: the minimum concentration "c_min" from the +# Bullock et al. 2001 mass-concentration relation and the halo bloating parameter "eta_0" +# introduced in Mead et al. 2015. In Mead et al. 2015 the parameters c_min and eta_0 are fitted +# to the Cosmic Emulator dark matter only simulation (Heitman et al. 2014) and the +# hydrodynamical OWLS simulations (Schaye et al. 2010, van Daalen et al. 2011). +# You can choose between the 5 models of Mead et al. 2015, Table 4: +# Model (eta_0, c_min) Explanation +# - 'emu_dmonly' (0.603, 3.13) fits the only dark matter Cosmic Emulator simulation (default) +# - 'owls_dmonly' (0.64, 3.43) fits the OWLS simulation of dark matter only +# - 'owls_ref' (0.68, 3.91) fits the OWLS simulation that includes gas cooling, heating, +# star formation and evolution, chemical enrichment and supernovae feedback +# - 'owls_agn' (0.76, 2.32) fits the OWLS simulation that includes AGN feedback +# - 'owls_dblim' (0.70, 3.01) fits the OWLS simulation that has extra supernova energy in wind velocity +# Set 'feedback model' to one of these names, +# or leave blank and pass manually the value of either 'eta_0' or 'c_min' +# (the other one will then be fixed according to equation (30) in Mead et al. 2015), +# or pass manually the two values of 'eta_0' and 'c_min' +# (default: 'feedback model' set to 'nl_emu_dmonly') + +feedback model = +eta_0 = +c_min = + +# 3) if you want to consider perturbed recombination, enter a word +# containing the letter 'y' or 'Y'. CLASS will then compute the +# perturbation in the ionization fraction x_e and the baryon +# temperature, as in 0707.2727. The initial conformal time will be +# small, therefore you should use the default integrator ndf15 +# (i.e. do not set 'evolver' to 0, otherwise the code will be +# slower). (default: neglect perturbed recombination) #perturbed recombination = yes -4) list of modes ('s' for scalars, 'v' for vectors, 't' for tensors). More than - one letter allowed, can be attached or separated by arbitrary characters; - letters can be small or capital. - (default: set to 's') +# 4) list of modes ('s' for scalars, 'v' for vectors, 't' for tensors). More than +# one letter allowed, can be attached or separated by arbitrary characters; +# letters can be small or capital. +# (default: set to 's') modes = s #modes = s,t -5) relevant only if you ask for 'tCl, lCl' and/or 'pCl, lCl': if you want the - spectrum of lensed Cls, enter a word containing the letter 'y' or 'Y' - (default: no lensed Cls) +# 5) relevant only if you ask for 'tCl, lCl' and/or 'pCl, lCl': if you want the +# spectrum of lensed Cls, enter a word containing the letter 'y' or 'Y' +# (default: no lensed Cls) -lensing = no +lensing = yes -6) which perturbations should be included in tensor calculations? write 'exact' - to include photons, ultra-relativistic species 'ur' and all non-cold dark - matter species 'ncdm'; write 'massless' to appriximate 'ncdm' as extra - relativistic species (good approximation if ncdm is still relativistic at - the time of recombination); write 'photons' to include only photons - (default: 'massless') +# 6) which perturbations should be included in tensor calculations? write 'exact' +# to include photons, ultra-relativistic species 'ur' and all non-cold dark +# matter species 'ncdm'; write 'massless' to appriximate 'ncdm' as extra +# relativistic species (good approximation if ncdm is still relativistic at +# the time of recombination); write 'photons' to include only photons +# (default: 'massless') tensor method = -7) list of initial conditions for scalars ('ad' for adiabatic, 'bi' for baryon - isocurvature, 'cdi' for CDM isocurvature, 'nid' for neutrino density - isocurvature, 'niv' for neutrino velocity isocurvature). More than one of - these allowed, can be attached or separated by arbitrary characters; letters - can be small or capital. - (default: set to 'ad') +# 7) list of initial conditions for scalars ('ad' for adiabatic, 'bi' for baryon +# isocurvature, 'cdi' for CDM isocurvature, 'nid' for neutrino density +# isocurvature, 'niv' for neutrino velocity isocurvature). More than one of +# these allowed, can be attached or separated by arbitrary characters; letters +# can be small or capital. +# (default: set to 'ad') ic = ad #ic = ad&bi&nid -8) gauge in which calculations are performed: 'sync' or 'synchronous' or - 'Synchronous' for synchronous, 'new' or 'newtonian' or 'Newtonian' for - Newtonian/longitudinal gauge - (default: set to synchronous) +# 8) gauge in which calculations are performed: 'sync' or 'synchronous' or +# 'Synchronous' for synchronous, 'new' or 'newtonian' or 'Newtonian' for +# Newtonian/longitudinal gauge +# (default: set to synchronous) gauge = synchronous ---------------------------------------------- -----> define primordial perturbation spectra: ---------------------------------------------- +# --------------------------------------------- +# ----> define primordial perturbation spectra: +# --------------------------------------------- -1) primordial spectrum type ('analytic_Pk' for an analytic smooth function with amplitude, tilt, running, etc.; analytic spectra with feature can also be added as a new type;'inflation_V' for a numerical computation of the inflationary primordial spectrum, through a full integration of the perturbation equations, given a parametrization of the potential V(phi) in the observable window, like in astro-ph/0703625; 'inflation_H' for the same, but given a parametrization of the potential H(phi) in the observable window, like in astro-ph/0710.1630; 'inflation_V_end' for the same, but given a parametrization of the potential V(phi) in the whole region between the observable part and the end of inflation; there is also an option 'two scales' in order to specify two amplitudes instead of one amplitude and one tilt, like in the isocurvature mode analysis of the Planck inflation paper (works also for adiabatic mode only; see details below, item 2.c); finally 'external_Pk' allows for the primordial spectrum to be computed externally by some piece of code, or to be read from a table, see 2.d). (default: set to 'analytic_Pk') +# 1) primordial spectrum type ('analytic_Pk' for an analytic smooth function with amplitude, tilt, running, etc.; analytic spectra with feature can also be added as a new type;'inflation_V' for a numerical computation of the inflationary primordial spectrum, through a full integration of the perturbation equations, given a parametrization of the potential V(phi) in the observable window, like in astro-ph/0703625; 'inflation_H' for the same, but given a parametrization of the potential H(phi) in the observable window, like in astro-ph/0710.1630; 'inflation_V_end' for the same, but given a parametrization of the potential V(phi) in the whole region between the observable part and the end of inflation; there is also an option 'two scales' in order to specify two amplitudes instead of one amplitude and one tilt, like in the isocurvature mode analysis of the Planck inflation paper (works also for adiabatic mode only; see details below, item 2.c); finally 'external_Pk' allows for the primordial spectrum to be computed externally by some piece of code, or to be read from a table, see 2.d). (default: set to 'analytic_Pk') P_k_ini type = analytic_Pk -2) parameters related to one of the primordial spectrum types (will only be - read if they correspond to the type selected above) +# 2) parameters related to one of the primordial spectrum types (will only be +# read if they correspond to the type selected above) -2.a) for type 'analytic_Pk': +# 2.a) for type 'analytic_Pk': -2.a.1) pivot scale in Mpc-1 (default: set to 0.05) +# 2.a.1) pivot scale in Mpc-1 (default: set to 0.05) k_pivot = 0.05 -2.a.2) scalar adiabatic perturbations: curvature power spectrum value at pivot scale ('A_s' or 'ln10^{10}A_s'), tilt at the same scale 'n_s', and tilt running 'alpha_s' (default: set 'A_s' to 2.215e-9, 'n_s' to 0.9619, 'alpha_s' to 0) +# 2.a.2) scalar adiabatic perturbations: curvature power spectrum value at pivot scale ('A_s' or 'ln10^{10}A_s') OR 'sigma8' (found by iterations using a shooting method), tilt at the same scale 'n_s', and tilt running 'alpha_s' (default: set 'A_s' to 2.215e-9, 'n_s' to 0.9619, 'alpha_s' to 0) -sigma_8 = 0.83 -#A_s = 2.215e-9 +A_s = 2.215e-9 #ln10^{10}A_s = 3.0980 +# sigma8 = 0.848365 + n_s = 0.9619 + alpha_s = 0. -2.a.3) isocurvature/entropy perturbations: for each mode xx ('xx' being one of - 'bi', 'cdi', 'nid', 'niv', corresponding to baryon, cdm, neutrino - density and neutrino velocity entropy perturbations), enter the - entropy-to-curvature ratio f_xx, tilt n_xx and running alpha_xx, all - defined at the pivot scale; e.g. f_cdi of 0.5 means S_cdi/R equal to - one half and (S_cdi/R)^2 to 0.25 - (default: set each 'f_xx' to 1, 'n_xx' to 1, 'alpha_xx' to 0) +# 2.a.3) isocurvature/entropy perturbations: for each mode xx ('xx' being one of +# 'bi', 'cdi', 'nid', 'niv', corresponding to baryon, cdm, neutrino +# density and neutrino velocity entropy perturbations), enter the +# entropy-to-curvature ratio f_xx, tilt n_xx and running alpha_xx, all +# defined at the pivot scale; e.g. f_cdi of 0.5 means S_cdi/R equal to +# one half and (S_cdi/R)^2 to 0.25 +# (default: set each 'f_xx' to 1, 'n_xx' to 1, 'alpha_xx' to 0) f_bi = 1. n_bi = 1.5 @@ -445,17 +653,17 @@ f_nid=1. n_nid=2. alpha_nid= 0.01 -etc. +# etc. -2.a.4) cross-correlation between different adiabatic/entropy mode: for each - pair (xx, yy) where 'xx' and 'yy' are one of 'ad', 'bi', 'cdi', 'nid', - 'niv', enter the correlation c_xx_yy (parameter between -1 and 1, - standing for cosDelta, the cosine of the cross-correlation angle), the - tilt n_xx_yy of the function cosDelta(k), and its running alpha_xx_yy, - all defined at the pivot scale. So, for a pair of fully correlated - (resp. anti-correlated) modes, one should set (c_xx_yy, n_xx_yy, - alpha_xx_yy) to (1,0,0) (resp. (-1,0,0) - (default: set each 'c_xx_yy' to 0, 'n_xx_yy' to 0, 'alpha_xx_yy' to 0) +# 2.a.4) cross-correlation between different adiabatic/entropy mode: for each +# pair (xx, yy) where 'xx' and 'yy' are one of 'ad', 'bi', 'cdi', 'nid', +# 'niv', enter the correlation c_xx_yy (parameter between -1 and 1, +# standing for cosDelta, the cosine of the cross-correlation angle), the +# tilt n_xx_yy of the function cosDelta(k), and its running alpha_xx_yy, +# all defined at the pivot scale. So, for a pair of fully correlated +# (resp. anti-correlated) modes, one should set (c_xx_yy, n_xx_yy, +# alpha_xx_yy) to (1,0,0) (resp. (-1,0,0) +# (default: set each 'c_xx_yy' to 0, 'n_xx_yy' to 0, 'alpha_xx_yy' to 0) c_ad_bi = 0.5 #n_ad_bi = 0.1 @@ -466,26 +674,26 @@ c_bi_nid = 1. #n_bi_nid = -0.2 #alpha_bi_nid = 0.002 -etc. +# etc. -2.a.5) tensor mode (if any): tensor-to-scalar power spectrum ratio, tilt, - running at the pivot scale; if 'n_t' and/or 'alpha_t' is set to 'scc' or - 'SCC' isntead of a numerical value, it will be inferred from the - self-consistency condition of single field slow-roll inflation: for n_t, - -r/8*(2-r/8-n_s); for alpha_t, r/8(r/8+n_s-1) - (default: set 'r' to 1, 'n_t' to 'scc', 'alpha_t' to 'scc') +# 2.a.5) tensor mode (if any): tensor-to-scalar power spectrum ratio, tilt, +# running at the pivot scale; if 'n_t' and/or 'alpha_t' is set to 'scc' or +# 'SCC' isntead of a numerical value, it will be inferred from the +# self-consistency condition of single field slow-roll inflation: for n_t, +# -r/8*(2-r/8-n_s); for alpha_t, r/8(r/8+n_s-1) +# (default: set 'r' to 1, 'n_t' to 'scc', 'alpha_t' to 'scc') r = 1. n_t = scc alpha_t = scc -2.b) for type 'inflation_V' +# 2.b) for type 'inflation_V' -2.b.1) type of potential: 'polynomial' for a Taylor expansion of the potential around phi_pivot. Other shapes can easily be defined in primordial module. +# 2.b.1) type of potential: 'polynomial' for a Taylor expansion of the potential around phi_pivot. Other shapes can easily be defined in primordial module. potential = polynomial -2.b.2) for 'inflation_V' and 'polynomial': enter either the coefficients 'V_0', 'V_1', 'V_2', 'V_3', 'V_4' of the Taylor expansion (in units of Planck mass to appropriate power), or their ratios 'R_0', 'R_1', 'R_2', 'R_3', 'R_4' corresponding to (128pi/3)*V_0^3/V_1^2, V_1^2/V_0^2, V_2/V_0, V_1*V_3/V_0, V_1^2*V_4/V_0^3, or the potential-slow-roll parameters 'PSR_0', 'PSR_1', 'PSR_2', 'PSR_3', 'PSR_4', equal respectively to R_0, epsilon_V=R_1/(16pi), eta_V=R_2/(8pi), ksi_V=R_3/(8pi)^2, omega_V=R_4/(8pi)^3 (default: 'V_0' set to 1.25e-13, 'V_1' to 1.12e-14, 'V_2' to 6.95e-14, 'V_3' and 'V_4' to zero). +# 2.b.2) for 'inflation_V' and 'polynomial': enter either the coefficients 'V_0', 'V_1', 'V_2', 'V_3', 'V_4' of the Taylor expansion (in units of Planck mass to appropriate power), or their ratios 'R_0', 'R_1', 'R_2', 'R_3', 'R_4' corresponding to (128pi/3)*V_0^3/V_1^2, V_1^2/V_0^2, V_2/V_0, V_1*V_3/V_0, V_1^2*V_4/V_0^3, or the potential-slow-roll parameters 'PSR_0', 'PSR_1', 'PSR_2', 'PSR_3', 'PSR_4', equal respectively to R_0, epsilon_V=R_1/(16pi), eta_V=R_2/(8pi), ksi_V=R_3/(8pi)^2, omega_V=R_4/(8pi)^3 (default: 'V_0' set to 1.25e-13, 'V_1' to 1.12e-14, 'V_2' to 6.95e-14, 'V_3' and 'V_4' to zero). V_0=1.e-13 V_1=-1.e-14 @@ -505,7 +713,7 @@ V_4= #PSR_3 = #PSR_4 = -2.c) for 'inflation_H': enter either the coefficients 'H_0', 'H_1', 'H_2', 'H_3', 'H_4' of the Taylor expansion (in units of Planck mass to appropriate power), or the Hubble-slow-roll parameters 'HSR_0', 'HSR_1', 'HSR_2', 'HSR_3', 'HSR_4' +# 2.c) for 'inflation_H': enter either the coefficients 'H_0', 'H_1', 'H_2', 'H_3', 'H_4' of the Taylor expansion (in units of Planck mass to appropriate power), or the Hubble-slow-roll parameters 'HSR_0', 'HSR_1', 'HSR_2', 'HSR_3', 'HSR_4' H_0=1.e-13 H_1=-1.e-14 @@ -519,17 +727,17 @@ H_4= #HSR_3 = #HSR_4 = -2.d) for type 'inflation_V_end': +# 2.d) for type 'inflation_V_end': -2.d.1) value of the field at the minimum of the potential after inflation, or at a value in which you want to impose the end of inflation, in hybrid-like models. By convention, the code expects inflation to take place for values smaller than this value, with phi increasing with time (using a reflection symmetry, it is always possible to be in that case) (default: 'phi_end' set to 0) +# 2.d.1) value of the field at the minimum of the potential after inflation, or at a value in which you want to impose the end of inflation, in hybrid-like models. By convention, the code expects inflation to take place for values smaller than this value, with phi increasing with time (using a reflection symmetry, it is always possible to be in that case) (default: 'phi_end' set to 0) phi_end = -2.d.2) shape of the potential. Refers to functions pre-coded in the primordail module, so far 'polynomial' and 'higgs_inflation'. (default: 'full_potential' set to 0) +# 2.d.2) shape of the potential. Refers to functions pre-coded in the primordail module, so far 'polynomial' and 'higgs_inflation'. (default: 'full_potential' set to 0) full_potential = polynomial -2.d.3) parameters of the potential. The meaning of each parameter is explained in the function primrodial_inflation_potential() in source/primordial.c +# 2.d.3) parameters of the potential. The meaning of each parameter is explained in the function primrodial_inflation_potential() in source/primordial.c Vparam0 = Vparam1 = @@ -537,68 +745,68 @@ Vparam2 = Vparam3 = Vparam4 = -2.d.4) how much the scale factor a or the product (aH) increases between Hubble crossing for the pivot scale (during inflation) and the end of inflation. You can pass either: 'N_star' (standing for log(a_end/a_pivot)) set to a number; or 'ln_aH_ratio' (standing for log(aH_end/aH_pivot)) set to a number; (default: 'N_star' set to 60) +# 2.d.4) how much the scale factor a or the product (aH) increases between Hubble crossing for the pivot scale (during inflation) and the end of inflation. You can pass either: 'N_star' (standing for log(a_end/a_pivot)) set to a number; or 'ln_aH_ratio' (standing for log(aH_end/aH_pivot)) set to a number; (default: 'N_star' set to 60) #ln_aH_ratio = 50 #N_star = 55 -2.d.5) should the inflation module do its nomral job of numerical integration ('numerical') or use analytical slow-roll formulas to infer the primordial spectrum from the potential ('analytical') (default: 'inflation_behavior' set to 'numerical') +# 2.d.5) should the inflation module do its nomral job of numerical integration ('numerical') or use analytical slow-roll formulas to infer the primordial spectrum from the potential ('analytical') (default: 'inflation_behavior' set to 'numerical') #inflation_behavior = numerical -2.e) for type 'two_scales' (currently this option works only for scalar modes, and either for pure adiabatic modes or adiabatic + one type of isocurvature): +# 2.e) for type 'two_scales' (currently this option works only for scalar modes, and either for pure adiabatic modes or adiabatic + one type of isocurvature): -2.e.1) two wavenumbers 'k1' and 'k2' in 1/Mpc, at which primordial amplitude - parameters will be given. The value of 'k_pivot' will not be used in - input but quantities at k_pivot will still be calculated and stored in - the primordial structure (no default value: compulsory input if 'P_k_ini - type' has been set to 'two_scales') +# 2.e.1) two wavenumbers 'k1' and 'k2' in 1/Mpc, at which primordial amplitude +# parameters will be given. The value of 'k_pivot' will not be used in +# input but quantities at k_pivot will still be calculated and stored in +# the primordial structure (no default value: compulsory input if 'P_k_ini +# type' has been set to 'two_scales') k1=0.002 k2=0.1 -2.e.2) two amplitudes 'P_{RR}^1', 'P_{RR}^2' for the adiabatic primordial - spectrum (no default value: compulsory input if 'P_k_ini type' has been - set to 'two_scales') +# 2.e.2) two amplitudes 'P_{RR}^1', 'P_{RR}^2' for the adiabatic primordial +# spectrum (no default value: compulsory input if 'P_k_ini type' has been +# set to 'two_scales') P_{RR}^1 = 2.3e-9 P_{RR}^2 = 2.3e-9 -2.e.3) if one isocurvature mode has been turned on ('ic' set e.g. to 'ad,cdi' - or 'ad,nid', etc.), enter values of the isocurvature amplitude - 'P_{II}^1', 'P_{II}^2', and cross-correlation amplitude 'P_{RI}^1', - '|P_{RI}^2|' (see Planck paper on inflation for details on definitions) +# 2.e.3) if one isocurvature mode has been turned on ('ic' set e.g. to 'ad,cdi' +# or 'ad,nid', etc.), enter values of the isocurvature amplitude +# 'P_{II}^1', 'P_{II}^2', and cross-correlation amplitude 'P_{RI}^1', +# '|P_{RI}^2|' (see Planck paper on inflation for details on definitions) P_{II}^1 = 1.e-11 P_{II}^2 = 1.e-11 P_{RI}^1 = -1.e-13 |P_{RI}^2| = 1.e-13 -2.e.4) set 'special iso' to 'axion' or 'curvaton' for two particular cases: - 'axion' means uncorrelated, n_ad equal to n_iso, 'curvaton' means fully - anti-correlated with f_iso<0 (in the conventions of the Planck inflation - paper this would be called fully correlated), n_iso equal to one; in - these two cases, the last three of the four paramneters in 2.c.3 will be - over-written give the input for 'P_{II}^1' (defaut: 'special_iso' left - blanck, code assumes general case described by four parameters of 2.c.3) +# 2.e.4) set 'special iso' to 'axion' or 'curvaton' for two particular cases: +# 'axion' means uncorrelated, n_ad equal to n_iso, 'curvaton' means fully +# anti-correlated with f_iso<0 (in the conventions of the Planck inflation +# paper this would be called fully correlated), n_iso equal to one; in +# these two cases, the last three of the four paramneters in 2.c.3 will be +# over-written give the input for 'P_{II}^1' (defaut: 'special_iso' left +# blanck, code assumes general case described by four parameters of 2.c.3) special_iso = -2.f) for type 'external_Pk' (see external documentation external_Pk/README.md - for more details): +# 2.f) for type 'external_Pk' (see external documentation external_Pk/README.md +# for more details): -2.f.1) Command generating the table. If the table is already generated, just - write "cat ". The table should have two columns (k, pk) if - tensors are not requested, or three columns (k, pks, pkt) if they are. +# 2.f.1) Command generating the table. If the table is already generated, just +# write "cat ". The table should have two columns (k, pk) if +# tensors are not requested, or three columns (k, pks, pkt) if they are. #command = python external_Pk/generate_Pk_example.py #command = python external_Pk/generate_Pk_example_w_tensors.py command = cat external_Pk/Pk_example.dat #command = cat external_Pk/Pk_example_w_tensors.dat -2.f.2) If the table is not pregenerated, parameters to be passed to the - command, in the right order, starting from "custom1" and up to - "custom10". They must be real numbers. +# 2.f.2) If the table is not pregenerated, parameters to be passed to the +# command, in the right order, starting from "custom1" and up to +# "custom10". They must be real numbers. custom1 = 0.05 # In the example command: k_pivot custom2 = 2.215e-9 # In the example command: A_s @@ -611,56 +819,56 @@ custom5 = -0.1 # In the example (with tensors) command: n_t #custom9 = 0 #custom10 = 0 -------------------------------------- -----> define format of final spectra: -------------------------------------- +# ------------------------------------- +# ----> define format of final spectra: +# ------------------------------------- -1) maximum l for CLs: -- 'l_max_scalars' for CMB scalars (temperature, polarization, cmb lensing potential), -- 'l_max_tensors' for CMB tensors (temperature, polarization) -- 'l_max_lss' for Large Scale Structure Cls (density, galaxy lensing potential) -Reducing 'l_max_lss' with respect to l_max_scalars reduces the execution time significantly -(default: set 'l_max_scalars' to 2500, 'l_max_tensors' to 500, 'l_max_lss' to 300) +# 1) maximum l for CLs: +# - 'l_max_scalars' for CMB scalars (temperature, polarization, cmb lensing potential), +# - 'l_max_tensors' for CMB tensors (temperature, polarization) +# - 'l_max_lss' for Large Scale Structure Cls (density, galaxy lensing potential) +# Reducing 'l_max_lss' with respect to l_max_scalars reduces the execution time significantly +# (default: set 'l_max_scalars' to 2500, 'l_max_tensors' to 500, 'l_max_lss' to 300) -#l_max_scalars = 2500 -#l_max_tensors = 500 +l_max_scalars = 2500 +l_max_tensors = 500 #l_max_lss = 600 -2) maximum k in P(k), 'P_k_max_h/Mpc' in units of h/Mpc or 'P_k_max_1/Mpc' in - units of 1/Mpc. If scalar Cls are also requested, a minimum value is - automatically imposed (the same as in scalar Cls computation) - (default: set to 0.1h/Mpc) +# 2) maximum k in P(k), 'P_k_max_h/Mpc' in units of h/Mpc or 'P_k_max_1/Mpc' in +# units of 1/Mpc. If scalar Cls are also requested, a minimum value is +# automatically imposed (the same as in scalar Cls computation) +# (default: set to 1 1/Mpc) -P_k_max_h/Mpc = 100. +P_k_max_h/Mpc = 1. #P_k_max_1/Mpc = 0.7 -3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered - arbitrarily, but must be separated by comas (default: set 'z_pk' to 0) +# 3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered +# arbitrarily, but must be separated by comas (default: set 'z_pk' to 0) z_pk = 0 #z_pk = 0., 1.2, 3.5 -4) if the code is interfaced with routines that need to interpolate P(k,z) at - various values of (k,z), enter 'z_max_pk', the maximum value of z at which - such interpolations are needed. (default: set to maximum value in above - 'z_pk' input) +# 4) if the code is interfaced with routines that need to interpolate P(k,z) at +# various values of (k,z), enter 'z_max_pk', the maximum value of z at which +# such interpolations are needed. (default: set to maximum value in above +# 'z_pk' input) -z_max_pk = 10. +#z_max_pk = 10. -6) parameters for the the matter density number count (option 'nCl' (or 'dCl')) - or galaxy lensing potential (option 'sCl') Cls: +# 6) parameters for the the matter density number count (option 'nCl' (or 'dCl')) +# or galaxy lensing potential (option 'sCl') Cls: -6a) enter here a description of the selection functions W(z) of each - redshift bin; selection can be set to 'gaussian', 'tophat' or - 'dirac', then pass a list of N mean redshifts in growing order - separated by comas, 1 or N widths separated by comas, 1 or N bias - separated by a comma, and 1 or N magnification bias separated by a - comma. The width stands for one standard deviation of the gaussian - (in z space), or for the half-width of the top-hat. Finally, - non_diagonal sets the number of cross-correlation spectra that you - want to calculate: 0 means only auto-correlation, 1 means only - adjacent bins, and number of bins minus one means all correlations - (default: set to 'gaussian',1,0.1,1.,0.,0) +# 6a) enter here a description of the selection functions W(z) of each +# redshift bin; selection can be set to 'gaussian', 'tophat' or +# 'dirac', then pass a list of N mean redshifts in growing order +# separated by comas, 1 or N widths separated by comas, 1 or N bias +# separated by a comma, and 1 or N magnification bias separated by a +# comma. The width stands for one standard deviation of the gaussian +# (in z space), or for the half-width of the top-hat. Finally, +# non_diagonal sets the number of cross-correlation spectra that you +# want to calculate: 0 means only auto-correlation, 1 means only +# adjacent bins, and number of bins minus one means all correlations +# (default: set to 'gaussian',1,0.1,1.,0.,0) selection=gaussian selection_mean = 0.98,0.99,1.0,1.1,1.2 @@ -669,106 +877,106 @@ selection_bias = selection_magnification_bias = non_diagonal=4 - [note: for good performances, the code uses the Limber approximation for nCl. If you want high precision even with thin selection functions, increase the default value of the precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z; for instance, add them to the input file with values 10000 and 2000, instead of the default 100 and 30] +# [note: for good performances, the code uses the Limber approximation for nCl. If you want high precision even with thin selection functions, increase the default value of the precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z; for instance, add them to the input file with values 10000 and 2000, instead of the default 100 and 30] -6b) It is possible to multiply the window function W(z) by a selection function - 'dNdz' (number of objects per redshift interval). Type the name of the file - containing the redshift in the first column and the number of objects in - the second column (do not call it 'analytic*'). Set to 'analytic' to use - instead the analytic expression from arXiv:1004.4640 (this function can be - tuned in the module transfer.c, in the subroutine transfer_dNdz_analytic). - Leave blank to use a uniform distribution (default). +# 6b) It is possible to multiply the window function W(z) by a selection function +# 'dNdz' (number of objects per redshift interval). Type the name of the file +# containing the redshift in the first column and the number of objects in +# the second column (do not call it 'analytic*'). Set to 'analytic' to use +# instead the analytic expression from arXiv:1004.4640 (this function can be +# tuned in the module transfer.c, in the subroutine transfer_dNdz_analytic). +# Leave blank to use a uniform distribution (default). dNdz_selection = -6c) It is possible to consider source number counts evolution. Type the name of - the file containing the redshift on the first column and the number of - objects on the second column (do not call it 'analytic*'). Set to - 'analytic' to use instead the analytic expression from Eq. 48 of - arXiv:1105.5292. Leave blank to use constant comoving number densities - (default). +# 6c) It is possible to consider source number counts evolution. Type the name of +# the file containing the redshift on the first column and the number of +# objects on the second column (do not call it 'analytic*'). Set to +# 'analytic' to use instead the analytic expression from Eq. 48 of +# arXiv:1105.5292. Leave blank to use constant comoving number densities +# (default). dNdz_evolution = -7a) file name root 'root' for all output files (if Cl requested, written to - 'cl.dat'; if P(k) requested, written to 'pk.dat'; plus similar - files for scalars, tensors, pairs of initial conditions, etc.; if file with - input parameters requested, written to 'parameters.ini') (default: - the input module sets automatically 'root' to 'output/N_', - where N is the first available integer number, starting from 00, to avoid - erasing the output of previous runs) +# 7a) file name root 'root' for all output files (if Cl requested, written to +# 'cl.dat'; if P(k) requested, written to 'pk.dat'; plus similar +# files for scalars, tensors, pairs of initial conditions, etc.; if file with +# input parameters requested, written to 'parameters.ini') (default: +# the input module sets automatically 'root' to 'output/N_', +# where N is the first available integer number, starting from 00, to avoid +# erasing the output of previous runs) #root = output/test_ -7b) do you want headers at the beginning of each output file (giving precisions - on the output units/ format) ? If 'headers' set to something containing the - letter 'y' or 'Y', headers written, otherwise not written - (default: written) +# 7b) do you want headers at the beginning of each output file (giving precisions +# on the output units/ format) ? If 'headers' set to something containing the +# letter 'y' or 'Y', headers written, otherwise not written +# (default: written) headers = yes -7c) in all output files, do you want columns to be normalized and ordered with - the default CLASS definitions or with the CAMB definitions (often idential - to the CMBFAST one) ? Set 'format' to either 'class', 'CLASS', 'camb' or - 'CAMB' (default: 'class') +# 7c) in all output files, do you want columns to be normalized and ordered with +# the default CLASS definitions or with the CAMB definitions (often idential +# to the CMBFAST one) ? Set 'format' to either 'class', 'CLASS', 'camb' or +# 'CAMB' (default: 'class') format = class -7d) Do you want to write a table of background quantitites in a file? This will - include H, densities, Omegas, various cosmological distances, sound - horizon, etc., as a function of conformal time, proper time, scale factor. - File created if 'write background' set to something containing the letter - 'y' or 'Y', file written, otherwise not written (default: not written) +# 7d) Do you want to write a table of background quantitites in a file? This will +# include H, densities, Omegas, various cosmological distances, sound +# horizon, etc., as a function of conformal time, proper time, scale factor. +# File created if 'write background' set to something containing the letter +# 'y' or 'Y', file written, otherwise not written (default: not written) write background = no -7e) Do you want to write a table of thermodynamics quantitites in a file? File - is created if 'write thermodynamics' is set to something containing the - letter 'y' or 'Y'. (default: not written) +# 7e) Do you want to write a table of thermodynamics quantitites in a file? File +# is created if 'write thermodynamics' is set to something containing the +# letter 'y' or 'Y'. (default: not written) write thermodynamics = no -7f) Do you want to write a table of perturbations to files for certain - wavenumbers k? Dimension of k is 1/Mpc. The actual wave numbers are chosen - such that they are as close as possible to the requested k-values. +# 7f) Do you want to write a table of perturbations to files for certain +# wavenumbers k? Dimension of k is 1/Mpc. The actual wave numbers are chosen +# such that they are as close as possible to the requested k-values. k_output_values = #0.01, 0.1, 0.0001 -7g) Do you want to write the primordial scalar(/tensor) spectrum in a file, - with columns k [1/Mpc], P_s(k) [dimensionless], ( P_t(k) [dimensionless])? - File created if 'write primordial' set to something containing the letter - 'y' or 'Y', file written, otherwise not written (default: not written) +# 7g) Do you want to write the primordial scalar(/tensor) spectrum in a file, +# with columns k [1/Mpc], P_s(k) [dimensionless], ( P_t(k) [dimensionless])? +# File created if 'write primordial' set to something containing the letter +# 'y' or 'Y', file written, otherwise not written (default: not written) write primordial = no -7h) Do you want to have all input/precision parameters which have been read - written in file 'parameters.ini', and those not written in file - 'unused_parameters' ? If 'write parameters' set to something - containing the letter 'y' or 'Y', file written, otherwise not written - (default: not written) +# 7h) Do you want to have all input/precision parameters which have been read +# written in file 'parameters.ini', and those not written in file +# 'unused_parameters' ? If 'write parameters' set to something +# containing the letter 'y' or 'Y', file written, otherwise not written +# (default: not written) write parameters = yeap -7i) Do you want a warning written in the standard output when an input - parameter or value could not be interpreted ? If 'write warnings' set to - something containing the letter 'y' or 'Y', warnings written, otherwise not - written (default: not written) +# 7i) Do you want a warning written in the standard output when an input +# parameter or value could not be interpreted ? If 'write warnings' set to +# something containing the letter 'y' or 'Y', warnings written, otherwise not +# written (default: not written) write warnings = ----------------------------------------------------- -----> amount of information sent to standard output: ----------------------------------------------------- +# ---------------------------------------------------- +# ----> amount of information sent to standard output: +# ---------------------------------------------------- -Increase integer values to make each module more talkative (default: all set to 0) +# Increase integer values to make each module more talkative (default: all set to 0) input_verbose = 1 background_verbose = 1 -thermodynamics_verbose = 0 -perturbations_verbose = 0 -transfer_verbose = 0 -primordial_verbose = 0 -spectra_verbose = 0 -nonlinear_verbose = 0 +thermodynamics_verbose = 1 +perturbations_verbose = 1 +transfer_verbose = 1 +primordial_verbose = 1 +spectra_verbose = 1 +nonlinear_verbose = 1 lensing_verbose = 1 output_verbose = 1 diff --git a/class/external_Pk/Pk_example.dat b/class/external_Pk/Pk_example.dat new file mode 100644 index 00000000..cce8c798 --- /dev/null +++ b/class/external_Pk/Pk_example.dat @@ -0,0 +1,1401 @@ +9.99999999999999955e-07 3.32701686778166524e-09 +1.01157945425989849e-06 3.32557696044656018e-09 +1.02329299228075415e-06 3.32413767629228539e-09 +1.03514216667934384e-06 3.32269901504913284e-09 +1.04712854805089959e-06 3.32126097644751113e-09 +1.059253725177289e-06 3.31982356021794633e-09 +1.07151930523760658e-06 3.31838676609108071e-09 +1.08392691402120369e-06 3.31695059379767237e-09 +1.09647819614318531e-06 3.31551504306859685e-09 +1.10917481526240141e-06 3.31408011363484551e-09 +1.1220184543019639e-06 3.31264580522752756e-09 +1.13501081567231556e-06 3.3112121175778664e-09 +1.14815362149688337e-06 3.30977905041720367e-09 +1.16144861384034336e-06 3.30834660347699602e-09 +1.1748975549395302e-06 3.30691477648881672e-09 +1.18850222743701909e-06 3.3054835691843561e-09 +1.2022644346174136e-06 3.30405298129541863e-09 +1.21618600064636887e-06 3.30262301255392747e-09 +1.23026877081238242e-06 3.3011936626919187e-09 +1.24451461177138599e-06 3.29976493144154712e-09 +1.25892541179416823e-06 3.29833681853508248e-09 +1.27350308101666285e-06 3.29690932370490951e-09 +1.28824955169313518e-06 3.29548244668353e-09 +1.30316677845230061e-06 3.29405618720356113e-09 +1.31825673855640845e-06 3.29263054499773588e-09 +1.33352143216332558e-06 3.29120551979890179e-09 +1.34896288259165522e-06 3.28978111134002429e-09 +1.36458313658892618e-06 3.28835731935418252e-09 +1.38038426460288654e-06 3.28693414357457145e-09 +1.39636836105593931e-06 3.28551158373450185e-09 +1.41253754462275605e-06 3.28408963956739946e-09 +1.42889395851110465e-06 3.28266831080680665e-09 +1.44543977074592942e-06 3.28124759718637997e-09 +1.46217717445672011e-06 3.27982749843989049e-09 +1.4791083881682094e-06 3.27840801430122677e-09 +1.49623565609443541e-06 3.27698914450439069e-09 +1.51356124843621036e-06 3.27557088878349993e-09 +1.53108746168203239e-06 3.27415324687278673e-09 +1.54881661891248364e-06 3.27273621850659957e-09 +1.56675107010815143e-06 3.27131980341940022e-09 +1.58489319246111599e-06 3.26990400134576711e-09 +1.60324539069004414e-06 3.26848881202039198e-09 +1.62181009735893272e-06 3.2670742351780828e-09 +1.64058977319954219e-06 3.26566027055376044e-09 +1.65958690743756367e-06 3.26424691788246282e-09 +1.67880401812256343e-06 3.26283417689934077e-09 +1.69824365246174758e-06 3.26142204733966051e-09 +1.71790838715759147e-06 3.26001052893880284e-09 +1.73780082874937889e-06 3.25859962143226267e-09 +1.75792361395869617e-06 3.25718932455564953e-09 +1.7782794100389265e-06 3.25577963804468788e-09 +1.79887091512879167e-06 3.25437056163521635e-09 +1.81970085860998745e-06 3.2529620950631865e-09 +1.84077200146895999e-06 3.25155423806466648e-09 +1.86208713666287174e-06 3.25014699037583739e-09 +1.88364908948980499e-06 3.24874035173299446e-09 +1.90546071796325172e-06 3.24733432187254707e-09 +1.92752491319094052e-06 3.24592890053101959e-09 +1.94984459975805007e-06 3.24452408744504888e-09 +1.97242273611485878e-06 3.24311988235138719e-09 +1.99526231496888464e-06 3.24171628498689968e-09 +2.01836636368156641e-06 3.24031329508856648e-09 +2.04173794466953494e-06 3.23891091239348066e-09 +2.065380155810535e-06 3.23750913663884858e-09 +2.08929613085404531e-06 3.2361079675619916e-09 +2.11348903983665289e-06 3.23470740490034481e-09 +2.13796208950223857e-06 3.23330744839145578e-09 +2.16271852372702703e-06 3.23190809777298626e-09 +2.18776162394955936e-06 3.23050935278271173e-09 +2.21309470960564487e-06 3.22911121315852056e-09 +2.2387211385683469e-06 3.22771367863841529e-09 +2.26464430759306726e-06 3.22631674896051178e-09 +2.29086765276778108e-06 3.22492042386303838e-09 +2.31739464996848689e-06 3.2235247030843372e-09 +2.34422881531993065e-06 3.22212958636286446e-09 +2.37137370566166411e-06 3.22073507343718892e-09 +2.39883291901949943e-06 3.21934116404599181e-09 +2.42661009508242485e-06 3.21794785792806809e-09 +2.45470891568503983e-06 3.21655515482232567e-09 +2.48313310529557989e-06 3.21516305446778574e-09 +2.5118864315095899e-06 3.21377155660358242e-09 +2.54097270554931515e-06 3.21238066096896234e-09 +2.5703957827688744e-06 3.21099036730328459e-09 +2.60015956316528288e-06 3.20960067534602244e-09 +2.6302679918953931e-06 3.20821158483676082e-09 +2.66072505979882126e-06 3.20682309551519717e-09 +2.69153480392692776e-06 3.20543520712114306e-09 +2.72270130807792478e-06 3.20404791939452132e-09 +2.75422870333817904e-06 3.20266123207536688e-09 +2.78612116862978341e-06 3.20127514490382879e-09 +2.81838293126446741e-06 3.19988965762016822e-09 +2.85101826750392339e-06 3.19850476996475716e-09 +2.88403150312662028e-06 3.19712048167808217e-09 +2.91742701400118136e-06 3.19573679250074022e-09 +2.95120922666640065e-06 3.19435370217344164e-09 +2.98538261891797501e-06 3.19297121043700965e-09 +3.01995172040203199e-06 3.19158931703237748e-09 +3.05492111321552923e-06 3.19020802170059169e-09 +3.09029543251360714e-06 3.18882732418281216e-09 +3.12607936712397199e-06 3.18744722422030838e-09 +3.16227766016839656e-06 3.18606772155446357e-09 +3.19889510969141555e-06 3.18468881592677221e-09 +3.23593656929630038e-06 3.18331050707884128e-09 +3.27340694878840014e-06 3.18193279475238817e-09 +3.31131121482592974e-06 3.18055567868924321e-09 +3.34965439157829578e-06 3.17917915863134878e-09 +3.38844156139204531e-06 3.17780323432075771e-09 +3.42767786546452376e-06 3.17642790549963574e-09 +3.46736850452533717e-06 3.17505317191025944e-09 +3.50751873952570145e-06 3.17367903329501665e-09 +3.54813389233577665e-06 3.17230548939640729e-09 +3.58921934645007473e-06 3.17093253995704334e-09 +3.63078054770103653e-06 3.16956018471964642e-09 +3.67282300498087032e-06 3.16818842342705104e-09 +3.71535229097174963e-06 3.16681725582220213e-09 +3.75837404288446625e-06 3.16544668164815671e-09 +3.80189396320563693e-06 3.16407670064808141e-09 +3.84591782045356131e-06 3.16270731256525659e-09 +3.89045144994283218e-06 3.16133851714307097e-09 +3.93550075455780151e-06 3.15997031412502619e-09 +3.98107170553499961e-06 3.1586027032547343e-09 +4.02717034325461879e-06 3.1572356842759182e-09 +4.07380277804115604e-06 3.15586925693241165e-09 +4.1209751909733315e-06 3.15450342096815964e-09 +4.16869383470338365e-06 3.15313817612721719e-09 +4.2169650342858529e-06 3.15177352215375139e-09 +4.26579518801595789e-06 3.15040945879203936e-09 +4.31519076827768383e-06 3.14904598578646823e-09 +4.36515832240169219e-06 3.14768310288153762e-09 +4.41570447353315848e-06 3.14632080982185511e-09 +4.46683592150966515e-06 3.14495910635214035e-09 +4.518559443749258e-06 3.14359799221722426e-09 +4.57088189614878569e-06 3.14223746716204651e-09 +4.62381021399263895e-06 3.14087753093165846e-09 +4.67735141287201854e-06 3.13951818327122107e-09 +4.73151258961484191e-06 3.13815942392600572e-09 +4.78630092322642153e-06 3.1368012526413934e-09 +4.84172367584103189e-06 3.13544366916287719e-09 +4.89778819368450149e-06 3.13408667323605849e-09 +4.95450190804794238e-06 3.1327302646066496e-09 +5.01187233627276393e-06 3.1313744430204728e-09 +5.06990708274708519e-06 3.13001920822346038e-09 +5.12861383991369129e-06 3.12866455996165385e-09 +5.18800038928965452e-06 3.12731049798120593e-09 +5.24807460249777053e-06 3.12595702202837817e-09 +5.30884444230992931e-06 3.12460413184954249e-09 +5.37031796370257413e-06 3.12325182719118087e-09 +5.43250331492437979e-06 3.12190010779988322e-09 +5.49540873857629419e-06 3.12054897342235195e-09 +5.55904257270408545e-06 3.11919842380539699e-09 +5.62341325190354118e-06 3.11784845869593829e-09 +5.6885293084384656e-06 3.11649907784100543e-09 +5.7543993733716218e-06 3.11515028098773838e-09 +5.82103217770876751e-06 3.11380206788338425e-09 +5.88843655355594431e-06 3.11245443827530264e-09 +5.95662143529016024e-06 3.11110739191095945e-09 +6.02559586074363413e-06 3.10976092853793224e-09 +6.09536897240174922e-06 3.10841504790390611e-09 +6.16595001861488036e-06 3.10706974975667658e-09 +6.23734835482425226e-06 3.10572503384414754e-09 +6.30957344480199317e-06 3.1043808999143329e-09 +6.38263486190554834e-06 3.10303734771535408e-09 +6.45654229034661755e-06 3.10169437699544338e-09 +6.53130552647478693e-06 3.10035198750294059e-09 +6.60693448007602453e-06 3.09901017898629472e-09 +6.68343917568621162e-06 3.09766895119406478e-09 +6.7608297539198841e-06 3.09632830387491649e-09 +6.83911647281436111e-06 3.09498823677762641e-09 +6.9183097091894337e-06 3.09364874965107865e-09 +6.99841996002280485e-06 3.09230984224426689e-09 +7.07945784384145037e-06 3.09097151430629196e-09 +7.16143410212909289e-06 3.0896337655863651e-09 +7.24435960074997444e-06 3.08829659583380468e-09 +7.32824533138911571e-06 3.08696000479803784e-09 +7.4131024130092517e-06 3.08562399222860089e-09 +7.49894209332463598e-06 3.08428855787513813e-09 +7.58577575029191697e-06 3.08295370148740178e-09 +7.67361489361827076e-06 3.0816194228152524e-09 +7.76247116628700062e-06 3.08028572160865979e-09 +7.85235634610080224e-06 3.07895259761770123e-09 +7.94328234724290137e-06 3.07762005059256239e-09 +8.03526122185626116e-06 3.07628808028353566e-09 +8.12830516164108297e-06 3.07495668644102423e-09 +8.22242649947080286e-06 3.07362586881553679e-09 +8.31763771102680255e-06 3.07229562715769161e-09 +8.41395141645204474e-06 3.07096596121821452e-09 +8.51138038202385979e-06 3.06963687074793844e-09 +8.60993752184610247e-06 3.06830835549780509e-09 +8.70963589956090384e-06 3.06698041521886328e-09 +8.81048873008024044e-06 3.06565304966227063e-09 +8.91250938133755602e-06 3.06432625857929061e-09 +9.01571137605967146e-06 3.06300004172129631e-09 +9.1201083935592014e-06 3.0616743988397671e-09 +9.22571427154773663e-06 3.06034932968629113e-09 +9.33254300797001774e-06 3.05902483401256202e-09 +9.44060876285934213e-06 3.05770091157038339e-09 +9.54992586021447047e-06 3.05637756211166434e-09 +9.66050878989824593e-06 3.05505478538842192e-09 +9.77237220955822109e-06 3.05373258115278152e-09 +9.88553094656950416e-06 3.05241094915697402e-09 +1.00000000000001177e-05 3.05108988915333865e-09 +1.01157945425991052e-05 3.04976940089432216e-09 +1.02329299228076635e-05 3.04844948413247638e-09 +1.03514216667935633e-05 3.04713013862046354e-09 +1.04712854805091226e-05 3.04581136411104971e-09 +1.05925372517730187e-05 3.04449316035711012e-09 +1.07151930523761971e-05 3.04317552711162631e-09 +1.08392691402121707e-05 3.04185846412768569e-09 +1.09647819614319874e-05 3.04054197115848445e-09 +1.109174815262415e-05 3.03922604795732384e-09 +1.12201845430197758e-05 3.03791069427761304e-09 +1.13501081567232945e-05 3.03659590987286753e-09 +1.1481536214968973e-05 3.03528169449670949e-09 +1.16144861384035763e-05 3.03396804790286783e-09 +1.17489755493954464e-05 3.03265496984517689e-09 +1.18850222743703387e-05 3.03134246007757982e-09 +1.20226443461742859e-05 3.03003051835412479e-09 +1.2161860006463839e-05 3.0287191444289667e-09 +1.23026877081239767e-05 3.02740833805636673e-09 +1.24451461177140149e-05 3.02609809899069194e-09 +1.2589254117941839e-05 3.02478842698641693e-09 +1.27350308101667865e-05 3.02347932179812176e-09 +1.28824955169315128e-05 3.02217078318049279e-09 +1.303166778452317e-05 3.02086281088832224e-09 +1.31825673855642505e-05 3.01955540467650948e-09 +1.33352143216334235e-05 3.01824856430005849e-09 +1.34896288259167228e-05 3.01694228951408039e-09 +1.36458313658894346e-05 3.01563658007379258e-09 +1.38038426460290403e-05 3.01433143573451669e-09 +1.39636836105595714e-05 3.01302685625168271e-09 +1.41253754462277413e-05 3.01172284138082361e-09 +1.42889395851112303e-05 3.01041939087758073e-09 +1.44543977074594801e-05 3.00911650449769963e-09 +1.46217717445673904e-05 3.00781418199703215e-09 +1.47910838816822867e-05 3.00651242313153563e-09 +1.49623565609445494e-05 3.00521122765727365e-09 +1.51356124843623001e-05 3.00391059533041366e-09 +1.53108746168205238e-05 3.00261052590723101e-09 +1.5488166189125041e-05 3.00131101914410448e-09 +1.56675107010817227e-05 3.00001207479751953e-09 +1.58489319246113716e-05 2.99871369262406669e-09 +1.60324539069006541e-05 2.99741587238044194e-09 +1.62181009735895424e-05 2.9961186138234451e-09 +1.64058977319956409e-05 2.9948219167099839e-09 +1.65958690743758591e-05 2.9935257807970695e-09 +1.67880401812258588e-05 2.99223020584181809e-09 +1.69824365246177032e-05 2.99093519160145216e-09 +1.71790838715761468e-05 2.98964073783329842e-09 +1.73780082874940248e-05 2.98834684429478865e-09 +1.75792361395871989e-05 2.98705351074346049e-09 +1.77827941003895068e-05 2.98576073693695456e-09 +1.79887091512881624e-05 2.98446852263301862e-09 +1.81970085861001219e-05 2.98317686758950341e-09 +1.84077200146898498e-05 2.98188577156436594e-09 +1.86208713666289723e-05 2.98059523431566706e-09 +1.88364908948983091e-05 2.97930525560157308e-09 +1.90546071796327789e-05 2.97801583518035409e-09 +1.92752491319096729e-05 2.97672697281038528e-09 +1.94984459975807709e-05 2.97543866825014644e-09 +1.97242273611488589e-05 2.97415092125822161e-09 +1.99526231496891216e-05 2.97286373159329945e-09 +2.01836636368159411e-05 2.97157709901417369e-09 +2.04173794466956298e-05 2.97029102327974143e-09 +2.06538015581056363e-05 2.96900550414900445e-09 +2.08929613085407411e-05 2.96772054138106953e-09 +2.11348903983668211e-05 2.96643613473514648e-09 +2.13796208950226788e-05 2.96515228397055014e-09 +2.16271852372705651e-05 2.96386898884669916e-09 +2.18776162394958951e-05 2.96258624912311767e-09 +2.2130947096056752e-05 2.96130406455943111e-09 +2.23872113856837756e-05 2.96002243491537164e-09 +2.26464430759309826e-05 2.95874135995077357e-09 +2.29086765276781217e-05 2.95746083942557627e-09 +2.3173946499685184e-05 2.95618087309982209e-09 +2.3442288153199625e-05 2.95490146073365925e-09 +2.37137370566169638e-05 2.95362260208733649e-09 +2.39883291901953238e-05 2.95234429692120924e-09 +2.42661009508245814e-05 2.9510665449957351e-09 +2.45470891568507362e-05 2.94978934607147588e-09 +2.48313310529561428e-05 2.94851269990909721e-09 +2.51188643150962488e-05 2.9472366062693673e-09 +2.54097270554935047e-05 2.94596106491315939e-09 +2.57039578276890989e-05 2.9446860756014489e-09 +2.60015956316531888e-05 2.94341163809531463e-09 +2.63026799189542952e-05 2.94213775215594084e-09 +2.66072505979885794e-05 2.94086441754461274e-09 +2.69153480392696478e-05 2.93959163402271973e-09 +2.72270130807796222e-05 2.93831940135175504e-09 +2.75422870333821715e-05 2.93704771929331405e-09 +2.7861211686298217e-05 2.93577658760909635e-09 +2.81838293126450603e-05 2.93450600606090414e-09 +2.85101826750396218e-05 2.93323597441064214e-09 +2.8840315031266595e-05 2.93196649242031934e-09 +2.91742701400122125e-05 2.93069755985204769e-09 +2.95120922666644097e-05 2.92942917646804048e-09 +2.98538261891801567e-05 2.92816134203061562e-09 +3.01995172040207307e-05 2.9268940563021932e-09 +3.05492111321557124e-05 2.92562731904529586e-09 +3.09029543251364966e-05 2.92436113002254924e-09 +3.12607936712401476e-05 2.92309548899668196e-09 +3.16227766016843984e-05 2.92183039573052563e-09 +3.19889510969145969e-05 2.92056584998701399e-09 +3.23593656929634527e-05 2.91930185152918337e-09 +3.27340694878844562e-05 2.91803840012017186e-09 +3.31131121482597539e-05 2.91677549552322175e-09 +3.34965439157834178e-05 2.91551313750167707e-09 +3.3884415613920913e-05 2.91425132581898403e-09 +3.42767786546457068e-05 2.91299006023869139e-09 +3.46736850452538452e-05 2.91172934052444966e-09 +3.50751873952574931e-05 2.91046916644001317e-09 +3.54813389233582519e-05 2.90920953774923674e-09 +3.5892193464501236e-05 2.907950454216079e-09 +3.63078054770108583e-05 2.9066919156045991e-09 +3.67282300498092038e-05 2.90543392167895915e-09 +3.71535229097180028e-05 2.90417647220342426e-09 +3.75837404288451783e-05 2.90291956694235963e-09 +3.80189396320568894e-05 2.90166320566023385e-09 +3.84591782045361349e-05 2.90040738812161683e-09 +3.89045144994288521e-05 2.89915211409118025e-09 +3.93550075455785471e-05 2.89789738333369876e-09 +3.98107170553505348e-05 2.8966431956140475e-09 +4.027170343254673e-05 2.89538955069720379e-09 +4.07380277804121076e-05 2.8941364483482475e-09 +4.1209751909733869e-05 2.8928838883323586e-09 +4.16869383470343989e-05 2.89163187041481963e-09 +4.21696503428590965e-05 2.89038039436101446e-09 +4.26579518801601515e-05 2.88912945993642911e-09 +4.31519076827774245e-05 2.88787906690665052e-09 +4.36515832240175149e-05 2.88662921503736613e-09 +4.41570447353321828e-05 2.88537990409436762e-09 +4.46683592150972562e-05 2.88413113384354509e-09 +4.5185594437493195e-05 2.88288290405089161e-09 +4.57088189614884786e-05 2.88163521448250079e-09 +4.62381021399270231e-05 2.88038806490456753e-09 +4.67735141287208258e-05 2.87914145508338851e-09 +4.73151258961490662e-05 2.87789538478536046e-09 +4.78630092322648675e-05 2.87664985377698272e-09 +4.84172367584109796e-05 2.87540486182485468e-09 +4.8977881936845679e-05 2.87416040869567669e-09 +4.95450190804800963e-05 2.87291649415625038e-09 +5.01187233627283153e-05 2.87167311797347834e-09 +5.06990708274715363e-05 2.87043027991436446e-09 +5.1286138399137599e-05 2.86918797974601191e-09 +5.18800038928972398e-05 2.867946217235626e-09 +5.2480746024978405e-05 2.86670499215051339e-09 +5.30884444230999962e-05 2.86546430425807958e-09 +5.37031796370264494e-05 2.86422415332583221e-09 +5.43250331492445179e-05 2.8629845391213782e-09 +5.4954087385763667e-05 2.86174546141242662e-09 +5.55904257270415863e-05 2.86050691996678664e-09 +5.62341325190361538e-05 2.85926891455236709e-09 +5.68852930843854099e-05 2.85803144493717773e-09 +5.75439937337169787e-05 2.85679451088932881e-09 +5.82103217770884476e-05 2.8555581121770315e-09 +5.88843655355602224e-05 2.85432224856859581e-09 +5.95662143529023902e-05 2.85308691983243352e-09 +6.02559586074371409e-05 2.85185212573705565e-09 +6.09536897240183003e-05 2.85061786605107413e-09 +6.16595001861496201e-05 2.84938414054320018e-09 +6.2373483548243351e-05 2.84815094898224589e-09 +6.30957344480207702e-05 2.84691829113712308e-09 +6.38263486190563338e-05 2.84568616677684403e-09 +6.45654229034670361e-05 2.84445457567052072e-09 +6.531305526474874e-05 2.84322351758736396e-09 +6.60693448007611245e-05 2.84199299229668549e-09 +6.68343917568630107e-05 2.84076299956789837e-09 +6.76082975391997473e-05 2.83953353917051245e-09 +6.83911647281445259e-05 2.83830461087413849e-09 +6.91830970918952653e-05 2.83707621444848858e-09 +6.99841996002289904e-05 2.835848349663372e-09 +7.07945784384154524e-05 2.83462101628869978e-09 +7.16143410212918895e-05 2.83339421409448139e-09 +7.24435960075007151e-05 2.83216794285082553e-09 +7.32824533138921413e-05 2.83094220232794063e-09 +7.41310241300935114e-05 2.82971699229613557e-09 +7.49894209332473746e-05 2.82849231252581769e-09 +7.58577575029201879e-05 2.82726816278749358e-09 +7.67361489361837308e-05 2.82604454285176994e-09 +7.76247116628710362e-05 2.82482145248935189e-09 +7.85235634610090727e-05 2.82359889147104422e-09 +7.94328234724300775e-05 2.82237685956775098e-09 +8.03526122185636789e-05 2.8211553565504755e-09 +8.12830516164119105e-05 2.81993438219031912e-09 +8.22242649947091229e-05 2.81871393625848451e-09 +8.31763771102691368e-05 2.81749401852627028e-09 +8.41395141645215756e-05 2.81627462876507682e-09 +8.51138038202397363e-05 2.81505576674640208e-09 +8.609937521846218e-05 2.81383743224184289e-09 +8.70963589956102107e-05 2.81261962502309575e-09 +8.81048873008035869e-05 2.81140234486195476e-09 +8.91250938133767562e-05 2.81018559153031411e-09 +9.01571137605979174e-05 2.80896936480016561e-09 +9.12010839355932405e-05 2.80775366444360031e-09 +9.22571427154786166e-05 2.8065384902328073e-09 +9.3325430079701431e-05 2.80532384194007533e-09 +9.44060876285946919e-05 2.80410971933779119e-09 +9.54992586021459786e-05 2.80289612219843968e-09 +9.66050878989837603e-05 2.80168305029460485e-09 +9.77237220955835221e-05 2.80047050339896796e-09 +9.88553094656963697e-05 2.79925848128431077e-09 +0.000100000000000002526 2.7980469837235114e-09 +0.000101157945425992411 2.79683601048954683e-09 +0.000102329299228078014 2.79562556135549246e-09 +0.000103514216667937022 2.79441563609452213e-09 +0.000104712854805092632 2.7932062344799077e-09 +0.0001059253725177316 2.79199735628501824e-09 +0.000107151930523763394 2.79078900128332288e-09 +0.000108392691402123151 2.78958116924838713e-09 +0.000109647819614321334 2.78837385995387536e-09 +0.000110917481526242974 2.7871670731735483e-09 +0.000112201845430199255 2.78596080868126674e-09 +0.000113501081567234463 2.78475506625098872e-09 +0.000114815362149691275 2.78354984565676941e-09 +0.000116144861384037318 2.78234514667276206e-09 +0.000117489755493956037 2.78114096907321749e-09 +0.000118850222743704966 2.77993731263248579e-09 +0.000120226443461744455 2.77873417712501176e-09 +0.000121618600064640013 2.77753156232534071e-09 +0.000123026877081241413 2.77632946800811391e-09 +0.000124451461177141809 2.77512789394807022e-09 +0.000125892541179420077 2.77392683992004735e-09 +0.000127350308101669562 2.77272630569897814e-09 +0.000128824955169316835 2.77152629105989512e-09 +0.000130316677845233425 2.77032679577792633e-09 +0.000131825673855644237 2.76912781962829868e-09 +0.000133352143216335973 2.76792936238633544e-09 +0.000134896288259168994 2.76673142382745789e-09 +0.000136458313658896138 2.76553400372718288e-09 +0.000138038426460292233 2.76433710186112649e-09 +0.000139636836105597574 2.76314071800500036e-09 +0.00014125375446227931 2.76194485193461412e-09 +0.000142889395851114224 2.76074950342587382e-09 +0.000144543977074596756 2.75955467225478306e-09 +0.000146217717445675893 2.75836035819744143e-09 +0.000147910838816824877 2.75716656103004695e-09 +0.00014962356560944753 2.75597328052889316e-09 +0.000151356124843625054 2.75478051647037081e-09 +0.000153108746168207298 2.75358826863096743e-09 +0.00015488166189125247 2.75239653678726775e-09 +0.000156675107010819314 2.75120532071595325e-09 +0.00015848931924611581 2.75001462019380015e-09 +0.000160324539069008661 2.74882443499768393e-09 +0.000162181009735897565 2.74763476490457477e-09 +0.000164058977319958571 2.74644560969154006e-09 +0.000165958690743760759 2.74525696913574436e-09 +0.00016788040181226079 2.74406884301444738e-09 +0.000169824365246179254 2.74288123110500602e-09 +0.000171790838715763704 2.74169413318487311e-09 +0.000173780082874942511 2.74050754903159828e-09 +0.0001757923613958743 2.73932147842282753e-09 +0.000177827941003897393 2.73813592113630156e-09 +0.000179887091512883962 2.73695087694985952e-09 +0.000181970085861003604 2.73576634564143566e-09 +0.000184077200146900917 2.73458232698905939e-09 +0.000186208713666292149 2.73339882077085851e-09 +0.000188364908948985524 2.73221582676505393e-09 +0.000190546071796330262 2.73103334474996537e-09 +0.000192752491319099229 2.72985137450400603e-09 +0.00019498445997581025 2.72866991580568631e-09 +0.000197242273611491164 2.7274889684336138e-09 +0.000199526231496893839 2.72630853216648873e-09 +0.000201836636368162047 2.72512860678310937e-09 +0.000204173794466958974 2.72394919206236951e-09 +0.000206538015581059074 2.72277028778325806e-09 +0.000208929613085410162 2.72159189372485949e-09 +0.000211348903983670969 2.72041400966635463e-09 +0.00021379620895022958 2.719236635387019e-09 +0.000216271852372708497 2.71805977066622453e-09 +0.000218776162394961824 2.71688341528343824e-09 +0.00022130947096057042 2.71570756901822228e-09 +0.000223872113856840691 2.71453223165023436e-09 +0.000226464430759312774 2.71335740295922729e-09 +0.000229086765276784198 2.71218308272505068e-09 +0.000231739464996854835 2.71100927072764802e-09 +0.000234422881531999279 2.70983596674705792e-09 +0.000237137370566172694 2.70866317056341452e-09 +0.000239883291901956308 2.70749088195694794e-09 +0.000242661009508248924 2.70631910070798217e-09 +0.0002454708915685105 2.70514782659693632e-09 +0.000248313310529564579 2.70397705940432629e-09 +0.000251188643150965652 2.70280679891075979e-09 +0.000254097270554938266 2.70163704489694297e-09 +0.000257039578276894228 2.70046779714367504e-09 +0.000260015956316535127 2.69929905543184991e-09 +0.000263026799189546218 2.69813081954245663e-09 +0.000266072505979889128 2.69696308925657977e-09 +0.000269153480392699852 2.69579586435539782e-09 +0.000272270130807799617 2.69462914462018311e-09 +0.00027542287033382513 2.6934629298323052e-09 +0.000278612116862985619 2.69229721977322629e-09 +0.000281838293126454066 2.69113201422450284e-09 +0.000285101826750399755 2.68996731296778774e-09 +0.000288403150312669548 2.68880311578482646e-09 +0.000291742701400125751 2.68763942245746089e-09 +0.000295120922666647736 2.6864762327676247e-09 +0.000298538261891805273 2.68531354649734795e-09 +0.000301995172040211068 2.68415136342875498e-09 +0.000305492111321560892 2.68298968334406444e-09 +0.000309029543251368747 2.68182850602558721e-09 +0.000312607936712405352 2.68066783125573095e-09 +0.000316227766016847914 2.67950765881699638e-09 +0.000319889510969149926 2.67834798849197768e-09 +0.000323593656929638512 2.6771888200633654e-09 +0.000327340694878848601 2.67603015331394192e-09 +0.000331131121482601673 2.67487198802658349e-09 +0.000334965439157838406 2.67371432398426274e-09 +0.000338844156139213467 2.67255716097004369e-09 +0.000342767786546461432 2.67140049876708508e-09 +0.000346736850452542857 2.67024433715863994e-09 +0.000350751873952579363 2.6690886759280548e-09 +0.000354813389233586977 2.66793351485877003e-09 +0.000358921934645016873 2.66677885373431992e-09 +0.000363078054770113164 2.66562469233833139e-09 +0.000367282300498096646 2.66447103045452648e-09 +0.000371535229097184677 2.66331786786672073e-09 +0.000375837404288456459 2.66216520435882104e-09 +0.000380189396320573651 2.6610130397148303e-09 +0.000384591782045366174 2.65986137371884445e-09 +0.0003890451449942934 2.65871020615505205e-09 +0.000393550075455790431 2.65755953680773557e-09 +0.000398107170553510417 2.65640936546127013e-09 +0.00040271703432547245 2.65525969190012636e-09 +0.000407380277804126267 2.65411051590886508e-09 +0.000412097519097343935 2.65296183727214222e-09 +0.000416869383470349329 2.65181365577470718e-09 +0.000421696503428596386 2.6506659712014012e-09 +0.00042657951880160699 2.64951878333715897e-09 +0.000431519076827779761 2.64837209196700989e-09 +0.000436515832240180692 2.64722589687607436e-09 +0.000441570447353327412 2.64608019784956666e-09 +0.000446683592150978227 2.64493499467279414e-09 +0.000451855944374937655 2.64379028713115636e-09 +0.000457088189614890546 2.64264607501014678e-09 +0.000462381021399276004 2.64150235809535025e-09 +0.000467735141287214126 2.64035913617244636e-09 +0.000473151258961496612 2.63921640902720607e-09 +0.000478630092322654692 2.63807417644549342e-09 +0.000484172367584115922 2.63693243821326509e-09 +0.000489778819368463011 2.63579119411656997e-09 +0.000495450190804807211 2.63465044394155087e-09 +0.00050118723362728955 2.63351018747444156e-09 +0.000506990708274721882 2.6323704245015693e-09 +0.000512861383991382617 2.63123115480935399e-09 +0.000518800038928979106 2.63009237818430693e-09 +0.000524807460249790826 2.62895409441303289e-09 +0.000530884444231006819 2.62781630328222764e-09 +0.000537031796370271474 2.62667900457868164e-09 +0.000543250331492452199 2.62554219808927471e-09 +0.000549540873857643744 2.62440588360098179e-09 +0.000555904257270423033 2.62327006090086714e-09 +0.00056234132519036883 2.62213472977608934e-09 +0.000568852930843861417 2.62099989001389836e-09 +0.000575439937337177132 2.61986554140163641e-09 +0.000582103217770891862 2.61873168372673709e-09 +0.000588843655355609651 2.61759831677672665e-09 +0.000595662143529031383 2.61646544033922358e-09 +0.00060255958607437893 2.61533305420193735e-09 +0.000609536897240190606 2.61420115815266966e-09 +0.000616595001861503953 2.61306975197931487e-09 +0.000623734835482441289 2.61193883546985788e-09 +0.000630957344480215644 2.61080840841237628e-09 +0.000638263486190571334 2.6096784705950382e-09 +0.000645654229034678439 2.60854902180610485e-09 +0.000653130552647495613 2.60742006183392925e-09 +0.000660693448007619566 2.60629159046695416e-09 +0.000668343917568638536 2.60516360749371541e-09 +0.000676082975392006038 2.60403611270283941e-09 +0.000683911647281453959 2.6029091058830456e-09 +0.000691830970918961489 2.6017825868231428e-09 +0.000699841996002298849 2.60065655531203326e-09 +0.000707945784384163604 2.59953101113870941e-09 +0.00071614341021292811 2.59840595409225468e-09 +0.000724435960075016502 2.5972813839618443e-09 +0.000732824533138930873 2.59615730053674491e-09 +0.000741310241300944628 2.59503370360631455e-09 +0.000749894209332483287 2.59391059296000185e-09 +0.000758577575029211609 2.59278796838734641e-09 +0.000767361489361847201 2.59166582967798008e-09 +0.000776247116628720336 2.59054417662162443e-09 +0.00078523563461010081 2.58942300900809206e-09 +0.000794328234724310913 2.58830232662728819e-09 +0.000803526122185647062 2.58718212926920695e-09 +0.000812830516164129405 2.58606241672393514e-09 +0.000822242649947101719 2.58494318878164848e-09 +0.000831763771102701993 2.58382444523261449e-09 +0.000841395141645226463 2.58270618586719209e-09 +0.000851138038202408232 2.58158841047583081e-09 +0.000860993752184632832 2.58047111884906907e-09 +0.000870963589956113247 2.57935431077753877e-09 +0.000881048873008047091 2.5782379860519595e-09 +0.000891250938133779 2.57712214446314306e-09 +0.000901571137605990829 2.57600678580199268e-09 +0.000912010839355944115 2.57489190985950008e-09 +0.000922571427154798038 2.5737775164267488e-09 +0.000933254300797026399 2.57266360529491131e-09 +0.000944060876285959198 2.57155017625525271e-09 +0.000954992586021472228 2.57043722909912704e-09 +0.00096605087898985018 2.56932476361797807e-09 +0.00097723722095584796 2.56821277960334099e-09 +0.000988553094656976572 2.56710127684684114e-09 +0.00100000000000003818 2.56599025514019279e-09 +0.00101157945425993726 2.56487971427520244e-09 +0.00102329299228079342 2.56376965404376426e-09 +0.00103514216667938358 2.56266007423786468e-09 +0.00104712854805093973 2.56155097464957942e-09 +0.00105925372517732966 2.56044235507107316e-09 +0.00107151930523764782 2.55933421529460157e-09 +0.00108392691402124544 2.55822655511251003e-09 +0.00109647819614322743 2.55711937431723412e-09 +0.00110917481526244402 2.55601267270129834e-09 +0.00112201845430200705 2.55490645005731816e-09 +0.00113501081567235918 2.55380070617799799e-09 +0.00114815362149692755 2.55269544085613156e-09 +0.00116144861384038806 2.55159065388460402e-09 +0.00117489755493957546 2.55048634505638818e-09 +0.00118850222743706498 2.54938251416454787e-09 +0.00120226443461746006 2.54827916100223539e-09 +0.00121618600064641582 2.54717628536269242e-09 +0.00123026877081243002 2.54607388703925241e-09 +0.00124451461177143424 2.54497196582533612e-09 +0.00125892541179421693 2.54387052151445362e-09 +0.00127350308101671205 2.54276955390020473e-09 +0.00128824955169318505 2.54166906277627944e-09 +0.00130316677845235111 2.54056904793645667e-09 +0.00131825673855645955 2.53946950917460342e-09 +0.00133352143216337719 2.53837044628467768e-09 +0.00134896288259170739 2.53727185906072512e-09 +0.001364583136588979 2.5361737472968816e-09 +0.00138038426460293994 2.53507611078737145e-09 +0.00139636836105599352 2.53397894932650753e-09 +0.00141253754462281099 2.53288226270869409e-09 +0.00142889395851116029 2.53178605072842061e-09 +0.00144543977074598567 2.53069031318027e-09 +0.0014621771744567772 2.52959504985890957e-09 +0.00147910838816826731 2.52850026055909885e-09 +0.00149623565609449411 2.52740594507568423e-09 +0.00151356124843626968 2.52631210320360225e-09 +0.0015310874616820925 2.52521873473787757e-09 +0.00154881661891254443 2.52412583947362292e-09 +0.00156675107010821298 2.52303341720604038e-09 +0.00158489319246117827 2.52194146773042135e-09 +0.00160324539069010711 2.52084999084214451e-09 +0.00162181009735899652 2.51975898633667788e-09 +0.00164058977319960679 2.51866845400957756e-09 +0.00165958690743762895 2.517578393656489e-09 +0.00167880401812262959 2.51648880507314491e-09 +0.0016982436524618145 2.51539968805536733e-09 +0.00171790838715765921 2.51431104239906558e-09 +0.00173780082874944739 2.51322286790023913e-09 +0.00175792361395876555 2.51213516435497391e-09 +0.00177827941003899669 2.51104793155944474e-09 +0.0017988709151288626 2.50996116930991498e-09 +0.00181970085861005919 2.50887487740273649e-09 +0.00184077200146903265 2.50778905563434797e-09 +0.0018620871366629454 2.50670370380127746e-09 +0.00188364908948987953 2.50561882170013988e-09 +0.00190546071796332712 2.50453440912763902e-09 +0.00192752491319101707 2.50345046588056765e-09 +0.00194984459975812755 2.5023669917558037e-09 +0.00197242273611493695 2.50128398655031528e-09 +0.00199526231496896392 2.50020145006115859e-09 +0.0020183663636816466 2.49911938208547543e-09 +0.00204173794466961604 2.4980377824204978e-09 +0.00206538015581061735 2.49695665086354367e-09 +0.00208929613085412878 2.49587598721202e-09 +0.00211348903983673729 2.49479579126342054e-09 +0.00213796208950232372 2.49371606281532718e-09 +0.002162718523727113 2.49263680166540988e-09 +0.0021877616239496466 2.49155800761142463e-09 +0.0022130947096057332 2.49047968045121678e-09 +0.00223872113856843618 2.48940181998271725e-09 +0.00226464430759315766 2.48832442600394674e-09 +0.00229086765276787256 2.48724749831301032e-09 +0.00231739464996857936 2.48617103670810446e-09 +0.00234422881532002402 2.48509504098750875e-09 +0.0023713737056617586 2.48401951094959337e-09 +0.00239883291901959528 2.48294444639281371e-09 +0.00242661009508252177 2.4818698471157128e-09 +0.00245470891568513785 2.48079571291692181e-09 +0.00248313310529567908 2.47972204359515874e-09 +0.00251188643150969046 2.47864883894922763e-09 +0.00254097270554941692 2.47757609877802018e-09 +0.0025703957827689773 2.47650382288051621e-09 +0.00260015956316538704 2.47543201105578114e-09 +0.0026302679918954984 2.47436066310296806e-09 +0.0026607250597989276 2.47328977882131612e-09 +0.00269153480392703539 2.47221935801015294e-09 +0.00272270130807803368 2.47114940046889137e-09 +0.00275422870333828914 2.47007990599703192e-09 +0.00278612116862989468 2.46901087439416155e-09 +0.00281838293126457969 2.46794230545995449e-09 +0.00285101826750403702 2.466874198994171e-09 +0.00288403150312673516 2.46580655479665858e-09 +0.00291742701400129773 2.46473937266735038e-09 +0.00295120922666651823 2.46367265240626804e-09 +0.00298538261891809382 2.46260639381351757e-09 +0.00301995172040215231 2.46154059668929267e-09 +0.0030549211132156512 2.46047526083387389e-09 +0.00309029543251373041 2.45941038604762657e-09 +0.00312607936712409667 2.45834597213100454e-09 +0.00316227766016852294 2.45728201888454645e-09 +0.00319889510969154339 2.45621852610887735e-09 +0.0032359365692964299 2.45515549360471001e-09 +0.00327340694878853122 2.45409292117284195e-09 +0.00331131121482606226 2.45303080861415716e-09 +0.00334965439157842992 2.45196915572962688e-09 +0.00338844156139218085 2.45090796232030674e-09 +0.00342767786546466094 2.44984722818733961e-09 +0.00346736850452547584 2.44878695313195523e-09 +0.00350751873952584144 2.44772713695546649e-09 +0.00354813389233591802 2.44666777945927558e-09 +0.00358921934645021774 2.44560888044486866e-09 +0.00363078054770118097 2.44455043971381877e-09 +0.00367282300498101644 2.4434924570677837e-09 +0.00371535229097189751 2.44243493230850811e-09 +0.00375837404288461609 2.4413778652378227e-09 +0.00380189396320578877 2.44032125565764251e-09 +0.00384591782045371486 2.43926510336996947e-09 +0.00389045144994298745 2.43820940817689109e-09 +0.00393550075455795841 2.43715416988058011e-09 +0.00398107170553515903 2.43609938828329486e-09 +0.00402717034325477969 2.43504506318737971e-09 +0.0040738027780413185 2.43399119439526504e-09 +0.00412097519097349551 2.43293778170946522e-09 +0.00416869383470354956 2.43188482493258103e-09 +0.00421696503428602067 2.43083232386729928e-09 +0.00426579518801612715 2.42978027831639077e-09 +0.00431519076827785539 2.42872868808271229e-09 +0.00436515832240186568 2.42767755296920708e-09 +0.00441570447353333354 2.42662687277890194e-09 +0.00446683592150984212 2.42557664731490885e-09 +0.00451855944374943749 2.42452687638042707e-09 +0.00457088189614896726 2.42347755977873899e-09 +0.00462381021399282249 2.42242869731321261e-09 +0.00467735141287220404 2.42138028878730195e-09 +0.00473151258961502976 2.42033233400454543e-09 +0.00478630092322661176 2.41928483276856622e-09 +0.00484172367584122503 2.41823778488307272e-09 +0.00489778819368469689 2.4171911901518585e-09 +0.0049545019080481402 2.41614504837880153e-09 +0.00501187233627296402 2.41509935936786538e-09 +0.00506990708274728755 2.41405412292309757e-09 +0.00512861383991389599 2.41300933884863209e-09 +0.00518800038928986153 2.41196500694868561e-09 +0.0052480746024979796 2.41092112702755961e-09 +0.00530884444231014083 2.40987769888964325e-09 +0.00537031796370278803 2.40883472233940675e-09 +0.00543250331492459593 2.40779219718140677e-09 +0.00549540873857651269 2.40675012322028475e-09 +0.005559042572704306 2.40570850026076486e-09 +0.00562341325190376419 2.40466732810765811e-09 +0.00568852930843869158 2.40362660656585908e-09 +0.00575439937337185025 2.40258633544034627e-09 +0.00582103217770899885 2.40154651453618259e-09 +0.00588843655355617782 2.40050714365851655e-09 +0.00595662143529039623 2.39946822261257895e-09 +0.00602559586074387279 2.39842975120368746e-09 +0.00609536897240199084 2.39739172923724164e-09 +0.00616595001861512497 2.39635415651872708e-09 +0.00623734835482449984 2.39531703285371165e-09 +0.00630957344480224426 2.3942803580478497e-09 +0.00638263486190580268 2.39324413190687743e-09 +0.00645654229034687503 2.39220835423661586e-09 +0.00653130552647504786 2.39117302484297161e-09 +0.00660693448007628869 2.39013814353193317e-09 +0.00668343917568647861 2.38910371010957386e-09 +0.00676082975392015492 2.38806972438205092e-09 +0.00683911647281463479 2.38703618615560598e-09 +0.00691830970918971052 2.38600309523656338e-09 +0.00699841996002308498 2.38497045143133226e-09 +0.00707945784384173341 2.38393825454640488e-09 +0.00716143410212937911 2.38290650438835788e-09 +0.00724435960075026433 2.3818752007638506e-09 +0.00732824533138940956 2.38084434347962843e-09 +0.00741310241300954884 2.37981393234251656e-09 +0.00749894209332493695 2.37878396715942748e-09 +0.00758577575029222104 2.37775444773735554e-09 +0.00767361489361857805 2.37672537388337782e-09 +0.00776247116628731113 2.37569674540465702e-09 +0.00785235634610111609 2.37466856210843771e-09 +0.00794328234724321798 2.37364082380204802e-09 +0.00803526122185658012 2.37261353029290005e-09 +0.00812830516164140572 2.37158668138848942e-09 +0.00822242649947113081 2.37056027689639367e-09 +0.00831763771102713573 2.36953431662427509e-09 +0.00841395141645238237 2.36850880037987872e-09 +0.00851138038202420115 2.36748372797103271e-09 +0.0086099375218464478 2.36645909920564836e-09 +0.00870963589956125391 2.36543491389172051e-09 +0.00881048873008059494 2.3644111718373267e-09 +0.00891250938133791512 2.36338787285062679e-09 +0.00901571137606003471 2.36236501673986586e-09 +0.00912010839355956865 2.36134260331336959e-09 +0.00922571427154810809 2.36032063237954808e-09 +0.00933254300797039388 2.3592991037468937e-09 +0.00944060876285972295 2.35827801722398157e-09 +0.00954992586021485498 2.35725737261947075e-09 +0.00966050878989863603 2.35623716974210176e-09 +0.00977237220955861491 2.35521740840069871e-09 +0.00988553094656990233 2.3541980884041688e-09 +0.0100000000000005206 2.35317920956150032e-09 +0.0101157945425995131 2.35216077168176591e-09 +0.0102329299228080765 2.35114277457411972e-09 +0.0103514216667939807 2.35012521804779982e-09 +0.0104712854805095457 2.34910810191212495e-09 +0.0105925372517734467 2.34809142597649782e-09 +0.0107151930523766287 2.34707519005040384e-09 +0.0108392691402126075 2.3460593939434099e-09 +0.01096478196143243 2.3450440374651652e-09 +0.0110917481526245972 2.34402912042540206e-09 +0.0112201845430202288 2.34301464263393513e-09 +0.0113501081567237531 2.34200060390066092e-09 +0.0114815362149694386 2.34098700403555827e-09 +0.0116144861384040472 2.33997384284868872e-09 +0.0117489755493959229 2.33896112015019571e-09 +0.0118850222743708198 2.33794883575030457e-09 +0.0120226443461747719 2.33693698945932335e-09 +0.0121618600064643308 2.33592558108764156e-09 +0.0123026877081244754 2.33491461044573105e-09 +0.0124451461177145194 2.33390407734414634e-09 +0.0125892541179423497 2.33289398159352224e-09 +0.0127350308101673027 2.33188432300457747e-09 +0.0128824955169320344 2.33087510138811185e-09 +0.013031667784523698 2.32986631655500708e-09 +0.0131825673855647842 2.3288579683162259e-09 +0.0133352143216339623 2.32785005648281505e-09 +0.0134896288259172669 2.32684258086590023e-09 +0.0136458313658899856 2.32583554127669071e-09 +0.0138038426460295981 2.32482893752647722e-09 +0.0139636836105601347 2.32382276942663157e-09 +0.014125375446228312 2.32281703678860827e-09 +0.0142889395851118067 2.32181173942394291e-09 +0.0144543977074600635 2.32080687714425213e-09 +0.0146217717445679806 2.31980244976123406e-09 +0.014791083881682883 2.31879845708666912e-09 +0.0149623565609451527 2.31779489893241922e-09 +0.0151356124843629106 2.31679177511042651e-09 +0.0153108746168211414 2.31578908543271667e-09 +0.0154881661891256642 2.31478682971139396e-09 +0.015667510701082351 2.3137850077586458e-09 +0.0158489319246120051 2.31278361938674106e-09 +0.0160324539069012957 2.31178266440802885e-09 +0.0162181009735901903 2.31078214263493977e-09 +0.0164058977319962961 2.30978205387998588e-09 +0.0165958690743765215 2.30878239795576074e-09 +0.0167880401812265309 2.30778317467493771e-09 +0.0169824365246183835 2.30678438385027247e-09 +0.0171790838715768328 2.30578602529460134e-09 +0.0173780082874947193 2.30478809882084129e-09 +0.0175792361395879018 2.3037906042419912e-09 +0.0177827941003902146 2.30279354137112974e-09 +0.0179887091512888793 2.30179691002141792e-09 +0.018197008586100849 2.30080071000609489e-09 +0.0184077200146905845 2.29980494113848419e-09 +0.0186208713666297133 2.29880960323198793e-09 +0.0188364908948990585 2.29781469610008888e-09 +0.0190546071796335384 2.2968202195563521e-09 +0.0192752491319104387 2.29582617341442085e-09 +0.0194984459975815448 2.29483255748802231e-09 +0.0197242273611496419 2.29383937159096145e-09 +0.0199526231496899159 2.29284661553712468e-09 +0.0201836636368167427 2.2918542891404795e-09 +0.0204173794466964396 2.29086239221507365e-09 +0.0206538015581064563 2.2898709245750355e-09 +0.0208929613085415723 2.28887988603457368e-09 +0.0211348903983676617 2.28788927640797578e-09 +0.0213796208950235295 2.2868990955096134e-09 +0.0216271852372714249 2.2859093431539346e-09 +0.0218776162394967617 2.2849200191554702e-09 +0.0221309470960576286 2.28393112332882999e-09 +0.0223872113856846619 2.28294265548870484e-09 +0.0226464430759318776 2.28195461544986543e-09 +0.0229086765276790283 2.28096700302716228e-09 +0.0231739464996860989 2.27997981803552695e-09 +0.0234422881532005516 2.27899306028997043e-09 +0.0237137370566179 2.27800672960558393e-09 +0.0239883291901962677 2.27702082579753851e-09 +0.0242661009508255351 2.27603534868108502e-09 +0.0245470891568517029 2.27505029807155497e-09 +0.0248313310529571195 2.27406567378435971e-09 +0.0251188643150972377 2.27308147563498998e-09 +0.0254097270554945048 2.27209770343901636e-09 +0.0257039578276901104 2.27111435701208964e-09 +0.0260015956316542104 2.27013143616994087e-09 +0.0263026799189553309 2.26914894072837926e-09 +0.026607250597989629 2.2681668705032951e-09 +0.0269153480392707103 2.26718522531065805e-09 +0.0272270130807806959 2.26620400496651764e-09 +0.0275422870333832566 2.26522320928700194e-09 +0.0278612116862993163 2.2642428380883197e-09 +0.0281838293126461699 2.26326289118675908e-09 +0.028510182675040744 2.2622833683986872e-09 +0.0288403150312677332 2.26130426954055146e-09 +0.0291742701400133642 2.26032559442887781e-09 +0.0295120922666655752 2.25934734288027246e-09 +0.0298538261891813372 2.2583695147114202e-09 +0.0301995172040219265 2.25739210973908561e-09 +0.0305492111321569206 2.25641512778011231e-09 +0.0309029543251377152 2.25543856865142373e-09 +0.0312607936712413839 2.25446243217002268e-09 +0.031622776601685651 2.25348671815298935e-09 +0.0319889510969158589 2.25251142641748456e-09 +0.0323593656929647283 2.25153655678074938e-09 +0.0327340694878857433 2.25056210906010178e-09 +0.0331131121482610563 2.24958808307294001e-09 +0.0334965439157847364 2.24861447863674085e-09 +0.0338844156139222474 2.24764129556906013e-09 +0.0342767786546470526 2.24666853368753346e-09 +0.0346736850452552051 2.24569619280987422e-09 +0.035075187395258868 2.2447242727538748e-09 +0.0354813389233596399 2.24375277333740738e-09 +0.0358921934645026405 2.24278169437842277e-09 +0.0363078054770122824 2.24181103569494907e-09 +0.0367282300498106423 2.24084079710509506e-09 +0.0371535229097194608 2.23987097842704727e-09 +0.0375837404288466501 2.23890157947907122e-09 +0.0380189396320583795 2.23793260007951103e-09 +0.0384591782045376473 2.23696404004678896e-09 +0.0389045144994303801 2.23599589919940628e-09 +0.0393550075455800924 2.23502817735594327e-09 +0.0398107170553521003 2.23406087433505795e-09 +0.0402717034325483156 2.23309398995548774e-09 +0.0407380277804137089 2.23212752403604658e-09 +0.0412097519097354842 2.23116147639562909e-09 +0.0416869383470360316 2.23019584685320677e-09 +0.0421696503428607497 2.22923063522783098e-09 +0.0426579518801618249 2.22826584133862957e-09 +0.0431519076827791143 2.22730146500480981e-09 +0.0436515832240192206 2.22633750604565715e-09 +0.0441570447353339113 2.22537396428053435e-09 +0.0446683592150990058 2.22441083952888362e-09 +0.0451855944374949664 2.22344813161022489e-09 +0.0457088189614902676 2.22248584034415586e-09 +0.0462381021399288286 2.2215239655503524e-09 +0.0467735141287226527 2.22056250704856813e-09 +0.0473151258961509169 2.21960146465863567e-09 +0.0478630092322667386 2.21864083820046457e-09 +0.0484172367584128766 2.21768062749404295e-09 +0.0489778819368476004 2.2167208323594371e-09 +0.0495450190804820403 2.21576145261678985e-09 +0.0501187233627302872 2.21480248808632341e-09 +0.050699070827473533 2.21384393858833734e-09 +0.0512861383991396191 2.21288580394320772e-09 +0.0518800038928992832 2.21192808397139045e-09 +0.0524807460249804708 2.21097077849341751e-09 +0.0530884444231020866 2.21001388732989951e-09 +0.0537031796370285655 2.20905741030152394e-09 +0.0543250331492466584 2.2081013472290569e-09 +0.0549540873857658346 2.20714569793334099e-09 +0.0555904257270437782 2.20619046223529698e-09 +0.056234132519038374 2.20523563995592259e-09 +0.0568852930843876531 2.20428123091629408e-09 +0.0575439937337192467 2.20332723493756386e-09 +0.0582103217770907413 2.20237365184096287e-09 +0.0588843655355625398 2.20142048144779861e-09 +0.0595662143529047325 2.2004677235794559e-09 +0.0602559586074395068 2.19951537805739773e-09 +0.060953689724020696 2.19856344470316318e-09 +0.0616595001861520442 2.19761192333836994e-09 +0.0623734835482458033 2.19666081378471178e-09 +0.0630957344480232579 2.19571011586395981e-09 +0.0638263486190588508 2.1947598293979629e-09 +0.0645654229034695881 2.19380995420864603e-09 +0.0653130552647513268 2.19286049011801192e-09 +0.066069344800763749 2.19191143694814064e-09 +0.0668343917568656604 2.19096279452118877e-09 +0.0676082975392024305 2.19001456265938982e-09 +0.0683911647281472412 2.18906674118505423e-09 +0.0691830970918980159 2.18811932992056936e-09 +0.0699841996002317779 2.18717232868839993e-09 +0.0707945784384182708 2.18622573731108673e-09 +0.0716143410212947418 2.18527955561124791e-09 +0.0724435960075036078 2.18433378341157815e-09 +0.073282453313895074 2.18338842053484944e-09 +0.074131024130096479 2.18244346680390906e-09 +0.074989420933250367 2.18149892204168204e-09 +0.0758577575029232148 2.18055478607117035e-09 +0.0767361489361867988 2.17961105871545205e-09 +0.0776247116628741435 2.17866773979768129e-09 +0.0785235634610122052 2.17772482914108958e-09 +0.0794328234724332449 2.17678232656898452e-09 +0.0803526122185668906 2.17584023190475065e-09 +0.0812830516164151501 2.17489854497184819e-09 +0.082224264994712401 2.17395726559381386e-09 +0.0831763771102724536 2.17301639359426174e-09 +0.0841395141645249339 2.17207592879688118e-09 +0.0851138038202431391 2.17113587102543804e-09 +0.0860993752184656264 2.17019622010377511e-09 +0.0870963589956137013 2.16925697585581045e-09 +0.0881048873008071221 2.16831813810553906e-09 +0.0891250938133803378 2.16737970667703202e-09 +0.090157113760601551 2.16644168139443611e-09 +0.0912010839355969077 2.16550406208197463e-09 +0.0922571427154823265 2.16456684856394697e-09 +0.0933254300797051878 2.16363004066472779e-09 +0.0944060876285984923 2.16269363820876911e-09 +0.0954992586021498335 2.16175764102059779e-09 +0.0966050878989876544 2.16082204892481722e-09 +0.0977237220955874675 2.15988686174610646e-09 +0.0988553094657003695 2.15895207930922068e-09 +0.10000000000000657 2.15801770143899033e-09 +0.101157945425996501 2.15708372796032277e-09 +0.102329299228082149 2.15615015869819942e-09 +0.103514216667941208 2.15521699347767901e-09 +0.104712854805096872 2.15428423212389598e-09 +0.1059253725177359 2.15335187446205921e-09 +0.107151930523767744 2.15241992031745409e-09 +0.108392691402127539 2.15148836951544169e-09 +0.109647819614325778 2.15055722188145755e-09 +0.110917481526247474 2.14962647724101494e-09 +0.112201845430203798 2.14869613541970077e-09 +0.113501081567239051 2.14776619624317804e-09 +0.114815362149695913 2.1468366595371846e-09 +0.116144861384042009 2.14590752512753525e-09 +0.11748975549396079 2.1449787928401188e-09 +0.11885022274370978 2.14405046250089935e-09 +0.120226443461749322 2.14312253393591751e-09 +0.121618600064644936 2.14219500697128874e-09 +0.123026877081246391 2.14126788143320255e-09 +0.124451461177146852 2.14034115714792496e-09 +0.125892541179425166 2.13941483394179724e-09 +0.12735030810167472 2.13848891164123514e-09 +0.128824955169322047 2.13756339007272966e-09 +0.130316677845238704 2.13663826906284751e-09 +0.131825673855649583 2.1357135484382294e-09 +0.133352143216341396 2.13478922802559216e-09 +0.134896288259174463 2.13386530765172625e-09 +0.136458313658901681 2.13294178714349946e-09 +0.138038426460297819 2.13201866632785152e-09 +0.139636836105603207 2.13109594503179956e-09 +0.141253754462284997 2.13017362308243385e-09 +0.142889395851119982 2.12925170030692122e-09 +0.144543977074602564 2.12833017653250127e-09 +0.146217717445681766 2.12740905158648972e-09 +0.147910838816830814 2.12648832529627671e-09 +0.149623565609453529 2.12556799748932726e-09 +0.151356124843631146 2.12464806799318082e-09 +0.153108746168213461 2.1237285366354509e-09 +0.15488166189125871 2.12280940324382749e-09 +0.156675107010825626 2.12189066764607258e-09 +0.158489319246122196 2.12097232967002546e-09 +0.160324539069015143 2.12005438914359701e-09 +0.16218100973590413 2.11913684589477501e-09 +0.164058977319965188 2.11821969975162088e-09 +0.165958690743767456 2.11730295054226965e-09 +0.167880401812267571 2.11638659809493204e-09 +0.169824365246186132 2.11547064223789237e-09 +0.171790838715770666 2.11455508279950861e-09 +0.17378008287494956 2.11363991960821522e-09 +0.175792361395881419 2.11272515249251864e-09 +0.177827941003904588 2.11181078128100016e-09 +0.179887091512891256 2.11089680580231634e-09 +0.181970085861010961 2.10998322588519615e-09 +0.184077200146908343 2.1090700413584442e-09 +0.18620871366629968 2.10815725205093833e-09 +0.188364908948993159 2.10724485779163083e-09 +0.190546071796337979 2.10633285840954802e-09 +0.192752491319107017 2.10542125373378941e-09 +0.19498445997581812 2.10451004359352981e-09 +0.197242273611499125 2.10359922781801721e-09 +0.199526231496901879 2.10268880623657283e-09 +0.201836636368170202 2.10177877867859396e-09 +0.204173794466967207 2.10086914497354865e-09 +0.20653801558106738 2.09995990495098143e-09 +0.208929613085418575 2.09905105844050923e-09 +0.211348903983679504 2.098142605271823e-09 +0.213796208950238209 2.09723454527468775e-09 +0.216271852372717205 2.09632687827894123e-09 +0.218776162394970636 2.0954196041144957e-09 +0.221309470960579346 2.09451272261133739e-09 +0.223872113856849742 2.09360623359952496e-09 +0.226464430759321933 2.09270013690919107e-09 +0.229086765276793475 2.09179443237054201e-09 +0.231739464996864236 2.09088911981385811e-09 +0.234422881532008798 2.08998419906949207e-09 +0.237137370566182309 2.08907966996787061e-09 +0.239883291901966028 2.08817553233949369e-09 +0.242661009508258751 2.08727178601493485e-09 +0.24547089156852045 2.08636843082484087e-09 +0.248313310529574671 2.0854654665999317e-09 +0.251188643150975888 2.08456289317100054e-09 +0.254097270554948629 2.08366071036891374e-09 +0.257039578276904712 2.08275891802461132e-09 +0.260015956316545727 2.08185751596910607e-09 +0.263026799189556959 2.08095650403348398e-09 +0.266072505979899954 2.08005588204890384e-09 +0.269153480392710809 2.07915564984659847e-09 +0.272270130807810706 2.07825580725787225e-09 +0.275422870333836334 2.0773563541141044e-09 +0.278612116862996972 2.07645729024674571e-09 +0.281838293126465578 2.07555861548731976e-09 +0.285101826750411402 2.07466032966742456e-09 +0.288403150312681322 2.07376243261872969e-09 +0.291742701400137694 2.07286492417297752e-09 +0.295120922666659846 2.07196780416198443e-09 +0.29853826189181748 2.07107107241763839e-09 +0.301995172040223414 2.07017472877190053e-09 +0.30549211132157339 2.06927877305680523e-09 +0.309029543251381378 2.0683832051044588e-09 +0.3126079367124181 2.06748802474703995e-09 +0.316227766016860812 2.06659323181680141e-09 +0.31988951096916296 2.06569882614606747e-09 +0.323593656929651696 2.06480480756723521e-09 +0.327340694878861915 2.06391117591277367e-09 +0.331131121482615143 2.06301793101522592e-09 +0.334965439157851985 2.06212507270720534e-09 +0.338844156139227193 2.0612326008214002e-09 +0.342767786546475328 2.06034051519056903e-09 +0.346736850452556922 2.05944881564754402e-09 +0.350751873952593607 2.05855750202522931e-09 +0.354813389233601395 2.05766657415660182e-09 +0.358921934645031471 2.05677603187470922e-09 +0.363078054770127945 2.05588587501267318e-09 +0.367282300498111614 2.05499610340368737e-09 +0.371535229097199826 2.05410671688101657e-09 +0.375837404288471788 2.05321771527799837e-09 +0.380189396320589179 2.05232909842804314e-09 +0.384591782045381914 2.05144086616463238e-09 +0.389045144994309311 2.05055301832131918e-09 +0.393550075455806558 2.04966555473173102e-09 +0.398107170553526735 2.04877847522956491e-09 +0.402717034325488943 2.04789177964859063e-09 +0.407380277804142932 2.04700546782265035e-09 +0.412097519097360809 2.04611953958565777e-09 +0.416869383470366395 2.04523399477159857e-09 +0.421696503428613645 2.0443488332145304e-09 +0.426579518801624424 2.04346405474858245e-09 +0.431519076827797388 2.04257965920795546e-09 +0.43651583224019852 2.04169564642692298e-09 +0.441570447353345441 2.04081201623982885e-09 +0.446683592150996456 2.03992876848109012e-09 +0.451855944374956131 2.03904590298519458e-09 +0.457088189614909213 2.03816341958670113e-09 +0.462381021399294934 2.03728131812024189e-09 +0.467735141287233258 2.03639959842051847e-09 +0.473151258961515997 2.0355182603223065e-09 +0.478630092322674283 2.03463730366045069e-09 +0.484172367584135732 2.03375672826986854e-09 +0.489778819368483054 2.03287653398554951e-09 +0.49545019080482755 2.03199672064255295e-09 +0.501187233627310103 2.03111728807601061e-09 +0.506990708274742685 2.03023823612112535e-09 +0.512861383991403685 2.0293595646131712e-09 +0.518800038929000396 2.02848127338749453e-09 +0.524807460249812396 2.02760336227951081e-09 +0.530884444231028652 2.02672583112470913e-09 +0.537031796370293524 2.02584867975864762e-09 +0.543250331492474481 2.02497190801695765e-09 +0.549540873857666368 2.02409551573534004e-09 +0.555904257270445901 2.02321950274956719e-09 +0.562341325190391927 2.02234386889548386e-09 +0.568852930843884885 2.0214686140090039e-09 +0.575439937337200891 2.0205937379261131e-09 +0.582103217770915893 2.01971924048286798e-09 +0.588843655355633988 2.01884512151539704e-09 +0.595662143529055998 2.01797138085989825e-09 +0.602559586074403852 2.01709801835264113e-09 +0.609536897240215869 2.01622503382996635e-09 +0.61659500186152949 2.01535242712828445e-09 +0.623734835482467109 2.01448019808407798e-09 +0.630957344480241655 2.01360834653389975e-09 +0.638263486190597695 2.0127368723143725e-09 +0.645654229034705152 2.01186577526219133e-09 +0.653130552647522622 2.01099505521412044e-09 +0.660693448007646844 2.01012471200699595e-09 +0.668343917568666068 2.00925474547772349e-09 +0.67608297539203388 2.00838515546327983e-09 +0.683911647281482127 2.00751594180071245e-09 +0.691830970918989929 2.00664710432713915e-09 +0.69984199600232766 2.00577864287974805e-09 +0.707945784384192756 2.00491055729579796e-09 +0.716143410212957576 2.00404284741261846e-09 +0.724435960075046292 2.00317551306760857e-09 +0.73282453313896101 2.00230855409823805e-09 +0.741310241300975115 2.00144197034204824e-09 +0.749894209332514161 2.00057576163664908e-09 +0.758577575029242834 1.99970992781972128e-09 +0.767361489361878757 1.99884446872901626e-09 +0.776247116628752343 1.99797938420235574e-09 +0.785235634610133126 1.99711467407763053e-09 +0.794328234724343551 1.99625033819280296e-09 +0.803526122185680092 1.99538637638590488e-09 +0.812830516164162908 1.9945227884950376e-09 +0.822242649947135584 1.99365957435837356e-09 +0.831763771102736249 1.99279673381415513e-09 +0.841395141645261191 1.99193426670069372e-09 +0.851138038202443381 1.99107217285637189e-09 +0.860993752184668448 1.99021045211964126e-09 +0.870963589956149309 1.98934910432902418e-09 +0.881048873008083655 1.98848812932311208e-09 +0.891250938133815951 1.98762752694056626e-09 +0.901571137606028139 1.98676729702011919e-09 +0.912010839355981928 1.98590743940057157e-09 +0.922571427154836199 1.98504795392079397e-09 +0.933254300797064951 1.98418884041972814e-09 +0.944060876285998218 1.98333009873638364e-09 +0.954992586021511713 1.98247172870984075e-09 +0.966050878989890061 1.98161373017925005e-09 +0.977237220955888275 1.98075610298382999e-09 +0.98855309465701735 1.97989884696287052e-09 +1.00000000000007949 1.97904196195572904e-09 +1.01157945425997897 1.97818544780183449e-09 +1.02329299228083559 1.97732930434068405e-09 +1.03514216667942627 1.97647353141184522e-09 +1.0471285480509831 1.97561812885495372e-09 +1.05925372517737348 1.97476309650971603e-09 +1.07151930523769212 1.97390843421590724e-09 +1.08392691402129038 1.97305414181337156e-09 +1.09647819614327302 1.97220021914202348e-09 +1.10917481526249007 1.97134666604184572e-09 +1.12201845430205349 1.97049348235289093e-09 +1.13501081567240614 1.96964066791528081e-09 +1.14815362149697497 1.96878822256920614e-09 +1.16144861384043607 1.96793614615492676e-09 +1.17489755493962411 1.96708443851277199e-09 +1.1885022274371142 1.96623309948314064e-09 +1.20226443461750976 1.96538212890649894e-09 +1.21618600064646598 1.96453152662338384e-09 +1.23026877081248065 1.96368129247440094e-09 +1.24451461177148537 1.9628314263002245e-09 +1.25892541179426876 1.96198192794159744e-09 +1.27350308101676446 1.96113279723933257e-09 +1.28824955169323796 1.96028403403431054e-09 +1.30316677845240458 1.95943563816748188e-09 +1.3182567385565136 1.95858760947986496e-09 +1.33352143216343189 1.95773994781254805e-09 +1.34896288259176278 1.95689265300668683e-09 +1.36458313658903507 1.95604572490350686e-09 +1.38038426460299668 1.95519916334430239e-09 +1.39636836105605089 1.95435296817043507e-09 +1.41253754462286896 1.95350713922333726e-09 +1.42889395851121903 1.95266167634450834e-09 +1.44543977074604513 1.95181657937551633e-09 +1.46217717445683726 1.95097184815799875e-09 +1.47910838816832801 1.95012748253366136e-09 +1.49623565609455556 1.94928348234427732e-09 +1.51356124843633189 1.94843984743169012e-09 +1.53108746168215548 1.94759657763781065e-09 +1.54881661891260825 1.94675367280461846e-09 +1.56675107010827763 1.94591113277416052e-09 +1.58489319246124349 1.94506895738855369e-09 +1.60324539069017313 1.94422714648998226e-09 +1.62181009735906323 1.94338569992069956e-09 +1.64058977319967414 1.94254461752302596e-09 +1.65958690743769721 1.94170389913935086e-09 +1.67880401812269864 1.94086354461213235e-09 +1.69824365246188447 1.94002355378389592e-09 +1.71790838715773009 1.93918392649723488e-09 +1.73780082874951924 1.93834466259481205e-09 +1.75792361395883812 1.93750576191935721e-09 +1.7782794100390702 1.93666722431366802e-09 +1.79887091512893704 1.93582904962061158e-09 +1.81970085861013442 1.93499123768312159e-09 +1.84077200146910869 1.93415378834420001e-09 +1.86208713666302228 1.93331670144691744e-09 +1.88364908948995735 1.93247997683441189e-09 +1.90546071796340599 1.93164361434988881e-09 +1.92752491319109676 1.93080761383662227e-09 +1.94984459975820812 1.9299719751379542e-09 +1.97242273611501862 1.92913669809729351e-09 +1.99526231496904649 1.92830178255811779e-09 +2.01836636368172995 1.92746722836397202e-09 +2.0417379446697006 1.9266330353584682e-09 +2.06538015581070278 1.92579920338528739e-09 +2.08929613085421506 1.92496573228817723e-09 +2.11348903983682446 1.92413262191095321e-09 +2.13796208950241207 1.92329987209749905e-09 +2.16271852372720241 1.92246748269176506e-09 +2.18776162394973683 1.92163545353776937e-09 +2.21309470960582422 1.92080378447959838e-09 +2.23872113856852861 1.91997247536140503e-09 +2.26464430759325097 1.91914152602741015e-09 +2.29086765276796678 1.91831093632190193e-09 +2.31739464996867461 1.917480706089236e-09 +2.34422881532012051 1.916650835173835e-09 +2.37137370566185623 1.91582132342018937e-09 +2.39883291901969375 1.9149921706728566e-09 +2.42661009508262149 1.91416337677646154e-09 +2.45470891568523886 1.91333494157569607e-09 +2.48313310529578146 1.91250686491531991e-09 +2.51188643150979374 1.91167914664015934e-09 +2.54097270554952148 1.91085178659510807e-09 +2.57039578276908287 1.9100247846251264e-09 +2.6001595631654939 1.90919814057524287e-09 +2.63026799189560645 1.9083718542905522e-09 +2.66072505979903706 1.90754592561621568e-09 +2.69153480392714606 1.90672035439746328e-09 +2.72270130807814548 1.90589514047959029e-09 +2.75422870333840253 1.90507028370796027e-09 +2.78612116863000958 1.90424578392800252e-09 +2.81838293126469619 1.90342164098521377e-09 +2.85101826750415466 1.90259785472515775e-09 +2.88403150312685419 1.90177442499346559e-09 +2.91742701400141824 1.90095135163583336e-09 +2.9512092266666401 1.90012863449802581e-09 +2.9853826189182171 1.89930627342587383e-09 +3.01995172040227677 1.8984842682652745e-09 +3.05492111321577697 1.89766261886219273e-09 +3.09029543251385741 1.89684132506265836e-09 +3.12607936712422507 1.89602038671276989e-09 +3.16227766016865264 1.89519980365869075e-09 +3.19889510969167468 1.8943795757466522e-09 +3.23593656929656293 1.89355970282295126e-09 +3.27340694878866545 1.89274018473395154e-09 +3.31131121482619806 1.89192102132608324e-09 +3.34965439157856704 1.89110221244584355e-09 +3.38844156139231956 1.89028375793979503e-09 +3.42767786546480124 1.88946565765456804e-09 +3.46736850452561773 1.8886479114368583e-09 +3.50751873952598503 1.88783051913342731e-09 +3.54813389233606324 1.88701348059110479e-09 +3.58921934645036478 1.88619679565678456e-09 +3.63078054770132974 1.88538046417742912e-09 +3.67282300498116676 1.88456448600006465e-09 +3.71535229097204933 1.88374886097178556e-09 +3.75837404288476984 1.8829335889397508e-09 +3.80189396320594408 1.88211866975118715e-09 +3.84591782045387198 1.88130410325338631e-09 +3.8904514499431464 1.88048988929370657e-09 +3.93550075455811932 1.87967602771957199e-09 +3.9810717055353213 1.8788625183784728e-09 +4.02717034325494438 1.8780493611179654e-09 +4.07380277804148516 1.87723655578567195e-09 +4.12097519097366405 1.87642410222928079e-09 +4.16869383470372057 1.8756120002965452e-09 +4.21696503428619351 1.87480024983528668e-09 +4.26579518801630186 1.87398885069338963e-09 +4.31519076827803172 1.87317780271880625e-09 +4.36515832240204382 1.87236710575955409e-09 +4.41570447353351359 1.87155675966371648e-09 +4.4668359215100244 1.87074676427944249e-09 +4.51855944374962171 1.86993711945494655e-09 +4.57088189614915308 1.86912782503850925e-09 +4.62381021399301062 1.86831888087847655e-09 +4.67735141287239475 1.86751028682326016e-09 +4.73151258961522281 1.86670204272133795e-09 +4.78630092322680678 1.86589414842125232e-09 +4.84172367584142194 1.86508660377161145e-09 +4.89778819368489593 1.86427940862108967e-09 +4.9545019080483419 1.86347256281842666e-09 +5.01187233627316786 1.86266606621242704e-09 +5.06990708274749391 1.8618599186519612e-09 +5.12861383991410413 1.86105411998596507e-09 +5.18800038929007279 1.86024867006343951e-09 +5.24807460249819346 1.85944356873345136e-09 +5.3088444423103569 1.8586388158451324e-09 +5.37031796370300629 1.85783441124767972e-09 +5.43250331492481742 1.8570303547903556e-09 +5.49540873857673695 1.85622664632248763e-09 +5.55904257270453339 1.85542328569346877e-09 +5.62341325190399477 1.8546202727527569e-09 +5.68852930843892501 1.85381760734987546e-09 +5.7543993733720864 1.85301528933441262e-09 +5.82103217770923731 1.85221331855602168e-09 +5.88843655355641893 1.85141169486442129e-09 +5.95662143529064014 1.85061041810939464e-09 +6.02559586074411957 1.84980948814079065e-09 +6.09536897240224018 1.84900890480852236e-09 +6.16595001861537728 1.84820866796256858e-09 +6.23734835482475525 1.84740877745297283e-09 +6.30957344480250182 1.84660923312984297e-09 +6.38263486190606333 1.84581003484335216e-09 +6.456542290347139 1.84501118244373876e-09 +6.53130552647531459 1.8442126757813056e-09 +6.60693448007655881 1.84341451470641964e-09 +6.68343917568675217 1.84261669906951422e-09 +6.76082975392043117 1.84181922872108555e-09 +6.83911647281491408 1.84102210351169599e-09 +6.91830970918999366 1.84022532329197184e-09 +6.99841996002337119 1.83942888791260429e-09 +7.07945784384202348 1.83863279722434867e-09 +7.16143410212967257 1.83783705107802605e-09 +7.24435960075056062 1.8370416493245208e-09 +7.32824533138970935 1.83624659181478241e-09 +7.41310241300985151 1.8354518783998249e-09 +7.49894209332524309 1.8346575089307266e-09 +7.58577575029253115 1.83386348325863057e-09 +7.67361489361889149 1.83306980123474418e-09 +7.76247116628762779 1.83227646271033891e-09 +7.85235634610143673 1.83148346753675076e-09 +7.94328234724354232 1.83069081556538025e-09 +8.03526122185690816 1.8298985066476922e-09 +8.12830516164173744 1.82910654063521556e-09 +8.22242649947146553 1.82831491737954317e-09 +8.31763771102747285 1.82752363673233321e-09 +8.41395141645272382 1.82673269854530714e-09 +8.51138038202454794 1.82594210267025053e-09 +8.60993752184679906 1.82515184895901349e-09 +8.70963589956160789 1.82436193726351061e-09 +8.81048873008095157 1.82357236743571937e-09 +8.91250938133827653 1.82278313932768261e-09 +9.01571137606040018 1.82199425279150662e-09 +9.12010839355993852 1.82120570767936121e-09 +9.22571427154848323 1.82041750384348131e-09 +9.33254300797077185 1.81962964113616494e-09 +9.44060876286010497 1.81884211940977399e-09 +9.54992586021524126 1.81805493851673491e-09 +9.66050878989902628 1.8172680983095376e-09 +9.77237220955901087 1.81648159864073588e-09 +9.88553094657030407 1.81569543936294706e-09 +10.0000000000009273 1.81490962032885274e-09 diff --git a/class/external_Pk/Pk_example_w_tensors.dat b/class/external_Pk/Pk_example_w_tensors.dat new file mode 100644 index 00000000..c270a143 --- /dev/null +++ b/class/external_Pk/Pk_example_w_tensors.dat @@ -0,0 +1,1401 @@ +9.99999999999999955e-07 3.32701686778166524e-09 5.9010187706738371e-10 +1.01157945425989849e-06 3.32557696044656018e-09 5.89422888107105289e-10 +1.02329299228075415e-06 3.32413767629228539e-09 5.88744680411937329e-10 +1.03514216667934384e-06 3.32269901504913284e-09 5.88067253082932717e-10 +1.04712854805089959e-06 3.32126097644751113e-09 5.87390605222178626e-10 +1.059253725177289e-06 3.31982356021794633e-09 5.86714735932795481e-10 +1.07151930523760658e-06 3.31838676609108071e-09 5.86039644318935823e-10 +1.08392691402120369e-06 3.31695059379767237e-09 5.85365329485782548e-10 +1.09647819614318531e-06 3.31551504306859685e-09 5.84691790539548703e-10 +1.10917481526240141e-06 3.31408011363484551e-09 5.84019026587475209e-10 +1.1220184543019639e-06 3.31264580522752756e-09 5.83347036737830659e-10 +1.13501081567231556e-06 3.3112121175778664e-09 5.82675820099909448e-10 +1.14815362149688337e-06 3.30977905041720367e-09 5.8200537578403106e-10 +1.16144861384034336e-06 3.30834660347699602e-09 5.81335702901538301e-10 +1.1748975549395302e-06 3.30691477648881672e-09 5.80666800564796891e-10 +1.18850222743701909e-06 3.3054835691843561e-09 5.79998667887193703e-10 +1.2022644346174136e-06 3.30405298129541863e-09 5.79331303983135733e-10 +1.21618600064636887e-06 3.30262301255392747e-09 5.78664707968049062e-10 +1.23026877081238242e-06 3.3011936626919187e-09 5.77998878958377512e-10 +1.24451461177138599e-06 3.29976493144154712e-09 5.7733381607158172e-10 +1.25892541179416823e-06 3.29833681853508248e-09 5.76669518426137477e-10 +1.27350308101666285e-06 3.29690932370490951e-09 5.76005985141535319e-10 +1.28824955169313518e-06 3.29548244668353e-09 5.7534321533827846e-10 +1.30316677845230061e-06 3.29405618720356113e-09 5.74681208137882477e-10 +1.31825673855640845e-06 3.29263054499773588e-09 5.74019962662873452e-10 +1.33352143216332558e-06 3.29120551979890179e-09 5.73359478036787352e-10 +1.34896288259165522e-06 3.28978111134002429e-09 5.72699753384168581e-10 +1.36458313658892618e-06 3.28835731935418252e-09 5.72040787830568633e-10 +1.38038426460288654e-06 3.28693414357457145e-09 5.71382580502545476e-10 +1.39636836105593931e-06 3.28551158373450185e-09 5.70725130527661999e-10 +1.41253754462275605e-06 3.28408963956739946e-09 5.7006843703448477e-10 +1.42889395851110465e-06 3.28266831080680665e-09 5.69412499152583419e-10 +1.44543977074592942e-06 3.28124759718637997e-09 5.68757316012528669e-10 +1.46217717445672011e-06 3.27982749843989049e-09 5.68102886745892029e-10 +1.4791083881682094e-06 3.27840801430122677e-09 5.67449210485244037e-10 +1.49623565609443541e-06 3.27698914450439069e-09 5.66796286364153326e-10 +1.51356124843621036e-06 3.27557088878349993e-09 5.66144113517185384e-10 +1.53108746168203239e-06 3.27415324687278673e-09 5.65492691079901937e-10 +1.54881661891248364e-06 3.27273621850659957e-09 5.64842018188858775e-10 +1.56675107010815143e-06 3.27131980341940022e-09 5.64192093981605648e-10 +1.58489319246111599e-06 3.26990400134576711e-09 5.63542917596684199e-10 +1.60324539069004414e-06 3.26848881202039198e-09 5.6289448817362786e-10 +1.62181009735893272e-06 3.2670742351780828e-09 5.62246804852959787e-10 +1.64058977319954219e-06 3.26566027055376044e-09 5.61599866776192028e-10 +1.65958690743756367e-06 3.26424691788246282e-09 5.60953673085824596e-10 +1.67880401812256343e-06 3.26283417689934077e-09 5.60308222925344226e-10 +1.69824365246174758e-06 3.26142204733966051e-09 5.5966351543922293e-10 +1.71790838715759147e-06 3.26001052893880284e-09 5.59019549772917271e-10 +1.73780082874937889e-06 3.25859962143226267e-09 5.58376325072867329e-10 +1.75792361395869617e-06 3.25718932455564953e-09 5.57733840486494635e-10 +1.7782794100389265e-06 3.25577963804468788e-09 5.57092095162202376e-10 +1.79887091512879167e-06 3.25437056163521635e-09 5.56451088249373431e-10 +1.81970085860998745e-06 3.2529620950631865e-09 5.55810818898369338e-10 +1.84077200146895999e-06 3.25155423806466648e-09 5.55171286260529155e-10 +1.86208713666287174e-06 3.25014699037583739e-09 5.54532489488168735e-10 +1.88364908948980499e-06 3.24874035173299446e-09 5.53894427734578973e-10 +1.90546071796325172e-06 3.24733432187254707e-09 5.53257100154025286e-10 +1.92752491319094052e-06 3.24592890053101959e-09 5.5262050590174606e-10 +1.94984459975805007e-06 3.24452408744504888e-09 5.51984644133951827e-10 +1.97242273611485878e-06 3.24311988235138719e-09 5.51349514007823815e-10 +1.99526231496888464e-06 3.24171628498689968e-09 5.50715114681513017e-10 +2.01836636368156641e-06 3.24031329508856648e-09 5.50081445314139469e-10 +2.04173794466953494e-06 3.23891091239348066e-09 5.49448505065790388e-10 +2.065380155810535e-06 3.23750913663884858e-09 5.48816293097519447e-10 +2.08929613085404531e-06 3.2361079675619916e-09 5.48184808571345537e-10 +2.11348903983665289e-06 3.23470740490034481e-09 5.47554050650252144e-10 +2.13796208950223857e-06 3.23330744839145578e-09 5.46924018498185592e-10 +2.16271852372702703e-06 3.23190809777298626e-09 5.46294711280054113e-10 +2.18776162394955936e-06 3.23050935278271173e-09 5.45666128161727124e-10 +2.21309470960564487e-06 3.22911121315852056e-09 5.45038268310033363e-10 +2.2387211385683469e-06 3.22771367863841529e-09 5.44411130892760684e-10 +2.26464430759306726e-06 3.22631674896051178e-09 5.43784715078654197e-10 +2.29086765276778108e-06 3.22492042386303838e-09 5.43159020037415749e-10 +2.31739464996848689e-06 3.2235247030843372e-09 5.4253404493970227e-10 +2.34422881531993065e-06 3.22212958636286446e-09 5.41909788957125258e-10 +2.37137370566166411e-06 3.22073507343718892e-09 5.41286251262249018e-10 +2.39883291901949943e-06 3.21934116404599181e-09 5.40663431028590251e-10 +2.42661009508242485e-06 3.21794785792806809e-09 5.40041327430616398e-10 +2.45470891568503983e-06 3.21655515482232567e-09 5.39419939643745021e-10 +2.48313310529557989e-06 3.21516305446778574e-09 5.38799266844342354e-10 +2.5118864315095899e-06 3.21377155660358242e-09 5.38179308209722375e-10 +2.54097270554931515e-06 3.21238066096896234e-09 5.37560062918145354e-10 +2.5703957827688744e-06 3.21099036730328459e-09 5.36941530148817651e-10 +2.60015956316528288e-06 3.20960067534602244e-09 5.36323709081889334e-10 +2.6302679918953931e-06 3.20821158483676082e-09 5.35706598898454699e-10 +2.66072505979882126e-06 3.20682309551519717e-09 5.3509019878054958e-10 +2.69153480392692776e-06 3.20543520712114306e-09 5.34474507911151143e-10 +2.72270130807792478e-06 3.20404791939452132e-09 5.33859525474177056e-10 +2.75422870333817904e-06 3.20266123207536688e-09 5.33245250654483426e-10 +2.78612116862978341e-06 3.20127514490382879e-09 5.32631682637864382e-10 +2.81838293126446741e-06 3.19988965762016822e-09 5.32018820611051456e-10 +2.85101826750392339e-06 3.19850476996475716e-09 5.31406663761711305e-10 +2.88403150312662028e-06 3.19712048167808217e-09 5.30795211278445615e-10 +2.91742701400118136e-06 3.19573679250074022e-09 5.30184462350789541e-10 +2.95120922666640065e-06 3.19435370217344164e-09 5.29574416169210783e-10 +2.98538261891797501e-06 3.19297121043700965e-09 5.28965071925108859e-10 +3.01995172040203199e-06 3.19158931703237748e-09 5.28356428810813039e-10 +3.05492111321552923e-06 3.19020802170059169e-09 5.27748486019582549e-10 +3.09029543251360714e-06 3.18882732418281216e-09 5.27141242745604508e-10 +3.12607936712397199e-06 3.18744722422030838e-09 5.26534698183993403e-10 +3.16227766016839656e-06 3.18606772155446357e-09 5.25928851530789652e-10 +3.19889510969141555e-06 3.18468881592677221e-09 5.25323701982958974e-10 +3.23593656929630038e-06 3.18331050707884128e-09 5.24719248738391049e-10 +3.27340694878840014e-06 3.18193279475238817e-09 5.24115490995898176e-10 +3.31131121482592974e-06 3.18055567868924321e-09 5.23512427955214958e-10 +3.34965439157829578e-06 3.17917915863134878e-09 5.22910058816996547e-10 +3.38844156139204531e-06 3.17780323432075771e-09 5.22308382782817818e-10 +3.42767786546452376e-06 3.17642790549963574e-09 5.21707399055172538e-10 +3.46736850452533717e-06 3.17505317191025944e-09 5.21107106837471923e-10 +3.50751873952570145e-06 3.17367903329501665e-09 5.20507505334043909e-10 +3.54813389233577665e-06 3.17230548939640729e-09 5.19908593750131918e-10 +3.58921934645007473e-06 3.17093253995704334e-09 5.1931037129189361e-10 +3.63078054770103653e-06 3.16956018471964642e-09 5.18712837166400474e-10 +3.67282300498087032e-06 3.16818842342705104e-09 5.18115990581636069e-10 +3.71535229097174963e-06 3.16681725582220213e-09 5.17519830746495405e-10 +3.75837404288446625e-06 3.16544668164815671e-09 5.16924356870783698e-10 +3.80189396320563693e-06 3.16407670064808141e-09 5.16329568165215548e-10 +3.84591782045356131e-06 3.16270731256525659e-09 5.15735463841413282e-10 +3.89045144994283218e-06 3.16133851714307097e-09 5.15142043111906849e-10 +3.93550075455780151e-06 3.15997031412502619e-09 5.14549305190132171e-10 +3.98107170553499961e-06 3.1586027032547343e-09 5.13957249290429999e-10 +4.02717034325461879e-06 3.1572356842759182e-09 5.13365874628045297e-10 +4.07380277804115604e-06 3.15586925693241165e-09 5.12775180419126001e-10 +4.1209751909733315e-06 3.15450342096815964e-09 5.12185165880721776e-10 +4.16869383470338365e-06 3.15313817612721719e-09 5.1159583023078319e-10 +4.2169650342858529e-06 3.15177352215375139e-09 5.11007172688161095e-10 +4.26579518801595789e-06 3.15040945879203936e-09 5.10419192472604659e-10 +4.31519076827768383e-06 3.14904598578646823e-09 5.09831888804760751e-10 +4.36515832240169219e-06 3.14768310288153762e-09 5.09245260906173727e-10 +4.41570447353315848e-06 3.14632080982185511e-09 5.08659307999282853e-10 +4.46683592150966515e-06 3.14495910635214035e-09 5.08074029307422297e-10 +4.518559443749258e-06 3.14359799221722426e-09 5.07489424054820207e-10 +4.57088189614878569e-06 3.14223746716204651e-09 5.0690549146659715e-10 +4.62381021399263895e-06 3.14087753093165846e-09 5.06322230768764986e-10 +4.67735141287201854e-06 3.13951818327122107e-09 5.05739641188226651e-10 +4.73151258961484191e-06 3.13815942392600572e-09 5.05157721952774404e-10 +4.78630092322642153e-06 3.1368012526413934e-09 5.04576472291089003e-10 +4.84172367584103189e-06 3.13544366916287719e-09 5.03995891432738559e-10 +4.89778819368450149e-06 3.13408667323605849e-09 5.03415978608178235e-10 +4.95450190804794238e-06 3.1327302646066496e-09 5.02836733048747964e-10 +5.01187233627276393e-06 3.1313744430204728e-09 5.02258153986672556e-10 +5.06990708274708519e-06 3.13001920822346038e-09 5.01680240655060046e-10 +5.12861383991369129e-06 3.12866455996165385e-09 5.01102992287901067e-10 +5.18800038928965452e-06 3.12731049798120593e-09 5.00526408120067305e-10 +5.24807460249777053e-06 3.12595702202837817e-09 4.99950487387311288e-10 +5.30884444230992931e-06 3.12460413184954249e-09 4.9937522932626453e-10 +5.37031796370257413e-06 3.12325182719118087e-09 4.9880063317443711e-10 +5.43250331492437979e-06 3.12190010779988322e-09 4.98226698170216336e-10 +5.49540873857629419e-06 3.12054897342235195e-09 4.97653423552865912e-10 +5.55904257270408545e-06 3.11919842380539699e-09 4.97080808562524801e-10 +5.62341325190354118e-06 3.11784845869593829e-09 4.96508852440206403e-10 +5.6885293084384656e-06 3.11649907784100543e-09 4.9593755442779741e-10 +5.7543993733716218e-06 3.11515028098773838e-09 4.95366913768056676e-10 +5.82103217770876751e-06 3.11380206788338425e-09 4.94796929704614487e-10 +5.88843655355594431e-06 3.11245443827530264e-09 4.94227601481971428e-10 +5.95662143529016024e-06 3.11110739191095945e-09 4.93658928345497347e-10 +6.02559586074363413e-06 3.10976092853793224e-09 4.93090909541430322e-10 +6.09536897240174922e-06 3.10841504790390611e-09 4.92523544316875832e-10 +6.16595001861488036e-06 3.10706974975667658e-09 4.91956831919805828e-10 +6.23734835482425226e-06 3.10572503384414754e-09 4.91390771599057287e-10 +6.30957344480199317e-06 3.1043808999143329e-09 4.90825362604331484e-10 +6.38263486190554834e-06 3.10303734771535408e-09 4.90260604186193168e-10 +6.45654229034661755e-06 3.10169437699544338e-09 4.89696495596069321e-10 +6.53130552647478693e-06 3.10035198750294059e-09 4.89133036086248432e-10 +6.60693448007602453e-06 3.09901017898629472e-09 4.88570224909879053e-10 +6.68343917568621162e-06 3.09766895119406478e-09 4.88008061320969383e-10 +6.7608297539198841e-06 3.09632830387491649e-09 4.87446544574385612e-10 +6.83911647281436111e-06 3.09498823677762641e-09 4.86885673925851616e-10 +6.9183097091894337e-06 3.09364874965107865e-09 4.86325448631947607e-10 +6.99841996002280485e-06 3.09230984224426689e-09 4.85765867950109001e-10 +7.07945784384145037e-06 3.09097151430629196e-09 4.85206931138625896e-10 +7.16143410212909289e-06 3.0896337655863651e-09 4.84648637456641732e-10 +7.24435960074997444e-06 3.08829659583380468e-09 4.84090986164152357e-10 +7.32824533138911571e-06 3.08696000479803784e-09 4.83533976522004996e-10 +7.4131024130092517e-06 3.08562399222860089e-09 4.82977607791897525e-10 +7.49894209332463598e-06 3.08428855787513813e-09 4.82421879236377438e-10 +7.58577575029191697e-06 3.08295370148740178e-09 4.81866790118840296e-10 +7.67361489361827076e-06 3.0816194228152524e-09 4.81312339703529832e-10 +7.76247116628700062e-06 3.08028572160865979e-09 4.80758527255535878e-10 +7.85235634610080224e-06 3.07895259761770123e-09 4.80205352040794164e-10 +7.94328234724290137e-06 3.07762005059256239e-09 4.79652813326084867e-10 +8.03526122185626116e-06 3.07628808028353566e-09 4.79100910379031993e-10 +8.12830516164108297e-06 3.07495668644102423e-09 4.78549642468102134e-10 +8.22242649947080286e-06 3.07362586881553679e-09 4.7799900886260364e-10 +8.31763771102680255e-06 3.07229562715769161e-09 4.77449008832685589e-10 +8.41395141645204474e-06 3.07096596121821452e-09 4.76899641649336854e-10 +8.51138038202385979e-06 3.06963687074793844e-09 4.76350906584385274e-10 +8.60993752184610247e-06 3.06830835549780509e-09 4.75802802910496211e-10 +8.70963589956090384e-06 3.06698041521886328e-09 4.75255329901172339e-10 +8.81048873008024044e-06 3.06565304966227063e-09 4.74708486830751784e-10 +8.91250938133755602e-06 3.06432625857929061e-09 4.74162272974408228e-10 +9.01571137605967146e-06 3.06300004172129631e-09 4.7361668760814874e-10 +9.1201083935592014e-06 3.0616743988397671e-09 4.73071730008813976e-10 +9.22571427154773663e-06 3.06034932968629113e-09 4.72527399454076325e-10 +9.33254300797001774e-06 3.05902483401256202e-09 4.71983695222439493e-10 +9.44060876285934213e-06 3.05770091157038339e-09 4.71440616593237052e-10 +9.54992586021447047e-06 3.05637756211166434e-09 4.70898162846632342e-10 +9.66050878989824593e-06 3.05505478538842192e-09 4.70356333263616504e-10 +9.77237220955822109e-06 3.05373258115278152e-09 4.69815127126008272e-10 +9.88553094656950416e-06 3.05241094915697402e-09 4.69274543716452423e-10 +1.00000000000001177e-05 3.05108988915333865e-09 4.68734582318419366e-10 +1.01157945425991052e-05 3.04976940089432216e-09 4.68195242216204102e-10 +1.02329299228076635e-05 3.04844948413247638e-09 4.67656522694924888e-10 +1.03514216667935633e-05 3.04713013862046354e-09 4.67118423040522608e-10 +1.04712854805091226e-05 3.04581136411104971e-09 4.66580942539759849e-10 +1.05925372517730187e-05 3.04449316035711012e-09 4.66044080480219863e-10 +1.07151930523761971e-05 3.04317552711162631e-09 4.65507836150305485e-10 +1.08392691402121707e-05 3.04185846412768569e-09 4.6497220883923856e-10 +1.09647819614319874e-05 3.04054197115848445e-09 4.64437197837058498e-10 +1.109174815262415e-05 3.03922604795732384e-09 4.63902802434621914e-10 +1.12201845430197758e-05 3.03791069427761304e-09 4.63369021923601071e-10 +1.13501081567232945e-05 3.03659590987286753e-09 4.62835855596483578e-10 +1.1481536214968973e-05 3.03528169449670949e-09 4.62303302746570933e-10 +1.16144861384035763e-05 3.03396804790286783e-09 4.61771362667977758e-10 +1.17489755493954464e-05 3.03265496984517689e-09 4.61240034655631013e-10 +1.18850222743703387e-05 3.03134246007757982e-09 4.60709318005268764e-10 +1.20226443461742859e-05 3.03003051835412479e-09 4.60179212013439712e-10 +1.2161860006463839e-05 3.0287191444289667e-09 4.59649715977501697e-10 +1.23026877081239767e-05 3.02740833805636673e-09 4.59120829195621126e-10 +1.24451461177140149e-05 3.02609809899069194e-09 4.58592550966771944e-10 +1.2589254117941839e-05 3.02478842698641693e-09 4.58064880590734749e-10 +1.27350308101667865e-05 3.02347932179812176e-09 4.57537817368095816e-10 +1.28824955169315128e-05 3.02217078318049279e-09 4.57011360600246368e-10 +1.303166778452317e-05 3.02086281088832224e-09 4.56485509589381028e-10 +1.31825673855642505e-05 3.01955540467650948e-09 4.55960263638497663e-10 +1.33352143216334235e-05 3.01824856430005849e-09 4.55435622051396246e-10 +1.34896288259167228e-05 3.01694228951408039e-09 4.54911584132677307e-10 +1.36458313658894346e-05 3.01563658007379258e-09 4.54388149187742242e-10 +1.38038426460290403e-05 3.01433143573451669e-09 4.53865316522791087e-10 +1.39636836105595714e-05 3.01302685625168271e-09 4.53343085444822267e-10 +1.41253754462277413e-05 3.01172284138082361e-09 4.52821455261631915e-10 +1.42889395851112303e-05 3.01041939087758073e-09 4.52300425281812432e-10 +1.44543977074594801e-05 3.00911650449769963e-09 4.51779994814751706e-10 +1.46217717445673904e-05 3.00781418199703215e-09 4.51260163170632288e-10 +1.47910838816822867e-05 3.00651242313153563e-09 4.50740929660430564e-10 +1.49623565609445494e-05 3.00521122765727365e-09 4.50222293595915618e-10 +1.51356124843623001e-05 3.00391059533041366e-09 4.49704254289648557e-10 +1.53108746168205238e-05 3.00261052590723101e-09 4.49186811054981328e-10 +1.5488166189125041e-05 3.00131101914410448e-09 4.48669963206056091e-10 +1.56675107010817227e-05 3.00001207479751953e-09 4.48153710057804086e-10 +1.58489319246113716e-05 2.99871369262406669e-09 4.47638050925944805e-10 +1.60324539069006541e-05 2.99741587238044194e-09 4.47122985126985214e-10 +1.62181009735895424e-05 2.9961186138234451e-09 4.46608511978218464e-10 +1.64058977319956409e-05 2.9948219167099839e-09 4.46094630797723682e-10 +1.65958690743758591e-05 2.9935257807970695e-09 4.45581340904364162e-10 +1.67880401812258588e-05 2.99223020584181809e-09 4.45068641617787316e-10 +1.69824365246177032e-05 2.99093519160145216e-09 4.44556532258423013e-10 +1.71790838715761468e-05 2.98964073783329842e-09 4.44045012147483431e-10 +1.73780082874940248e-05 2.98834684429478865e-09 4.43534080606961658e-10 +1.75792361395871989e-05 2.98705351074346049e-09 4.4302373695963076e-10 +1.77827941003895068e-05 2.98576073693695456e-09 4.42513980529043164e-10 +1.79887091512881624e-05 2.98446852263301862e-09 4.42004810639529569e-10 +1.81970085861001219e-05 2.98317686758950341e-09 4.41496226616198432e-10 +1.84077200146898498e-05 2.98188577156436594e-09 4.40988227784934312e-10 +1.86208713666289723e-05 2.98059523431566706e-09 4.40480813472397611e-10 +1.88364908948983091e-05 2.97930525560157308e-09 4.39973983006023593e-10 +1.90546071796327789e-05 2.97801583518035409e-09 4.39467735714021348e-10 +1.92752491319096729e-05 2.97672697281038528e-09 4.38962070925372762e-10 +1.94984459975807709e-05 2.97543866825014644e-09 4.38456987969832048e-10 +1.97242273611488589e-05 2.97415092125822161e-09 4.37952486177924557e-10 +1.99526231496891216e-05 2.97286373159329945e-09 4.3744856488094585e-10 +2.01836636368159411e-05 2.97157709901417369e-09 4.36945223410961283e-10 +2.04173794466956298e-05 2.97029102327974143e-09 4.36442461100804145e-10 +2.06538015581056363e-05 2.96900550414900445e-09 4.35940277284075814e-10 +2.08929613085407411e-05 2.96772054138106953e-09 4.35438671295144466e-10 +2.11348903983668211e-05 2.96643613473514648e-09 4.34937642469143984e-10 +2.13796208950226788e-05 2.96515228397055014e-09 4.34437190141973449e-10 +2.16271852372705651e-05 2.96386898884669916e-09 4.33937313650295841e-10 +2.18776162394958951e-05 2.96258624912311767e-09 4.33438012331537629e-10 +2.2130947096056752e-05 2.96130406455943111e-09 4.32939285523887475e-10 +2.23872113856837756e-05 2.96002243491537164e-09 4.32441132566295773e-10 +2.26464430759309826e-05 2.95874135995077357e-09 4.31943552798473198e-10 +2.29086765276781217e-05 2.95746083942557627e-09 4.31446545560890451e-10 +2.3173946499685184e-05 2.95618087309982209e-09 4.30950110194777118e-10 +2.3442288153199625e-05 2.95490146073365925e-09 4.30454246042120585e-10 +2.37137370566169638e-05 2.95362260208733649e-09 4.29958952445665524e-10 +2.39883291901953238e-05 2.95234429692120924e-09 4.29464228748912803e-10 +2.42661009508245814e-05 2.9510665449957351e-09 4.28970074296118662e-10 +2.45470891568507362e-05 2.94978934607147588e-09 4.28476488432293938e-10 +2.48313310529561428e-05 2.94851269990909721e-09 4.27983470503203026e-10 +2.51188643150962488e-05 2.9472366062693673e-09 4.27491019855363162e-10 +2.54097270554935047e-05 2.94596106491315939e-09 4.26999135836043488e-10 +2.57039578276890989e-05 2.9446860756014489e-09 4.26507817793264226e-10 +2.60015956316531888e-05 2.94341163809531463e-09 4.26017065075795747e-10 +2.63026799189542952e-05 2.94213775215594084e-09 4.25526877033157641e-10 +2.66072505979885794e-05 2.94086441754461274e-09 4.25037253015618253e-10 +2.69153480392696478e-05 2.93959163402271973e-09 4.2454819237419318e-10 +2.72270130807796222e-05 2.93831940135175504e-09 4.24059694460645017e-10 +2.75422870333821715e-05 2.93704771929331405e-09 4.23571758627482214e-10 +2.7861211686298217e-05 2.93577658760909635e-09 4.23084384227958051e-10 +2.81838293126450603e-05 2.93450600606090414e-09 4.22597570616070058e-10 +2.85101826750396218e-05 2.93323597441064214e-09 4.22111317146559351e-10 +2.8840315031266595e-05 2.93196649242031934e-09 4.21625623174909185e-10 +2.91742701400122125e-05 2.93069755985204769e-09 4.21140488057344377e-10 +2.95120922666644097e-05 2.92942917646804048e-09 4.20655911150830642e-10 +2.98538261891801567e-05 2.92816134203061562e-09 4.20171891813073662e-10 +3.01995172040207307e-05 2.9268940563021932e-09 4.19688429402517994e-10 +3.05492111321557124e-05 2.92562731904529586e-09 4.1920552327834656e-10 +3.09029543251364966e-05 2.92436113002254924e-09 4.18723172800479402e-10 +3.12607936712401476e-05 2.92309548899668196e-09 4.18241377329573218e-10 +3.16227766016843984e-05 2.92183039573052563e-09 4.17760136227020328e-10 +3.19889510969145969e-05 2.92056584998701399e-09 4.17279448854947796e-10 +3.23593656929634527e-05 2.91930185152918337e-09 4.16799314576216706e-10 +3.27340694878844562e-05 2.91803840012017186e-09 4.1631973275442128e-10 +3.31131121482597539e-05 2.91677549552322175e-09 4.15840702753887951e-10 +3.34965439157834178e-05 2.91551313750167707e-09 4.15362223939674486e-10 +3.3884415613920913e-05 2.91425132581898403e-09 4.14884295677569357e-10 +3.42767786546457068e-05 2.91299006023869139e-09 4.14406917334090874e-10 +3.46736850452538452e-05 2.91172934052444966e-09 4.13930088276486087e-10 +3.50751873952574931e-05 2.91046916644001317e-09 4.13453807872730022e-10 +3.54813389233582519e-05 2.90920953774923674e-09 4.12978075491525259e-10 +3.5892193464501236e-05 2.907950454216079e-09 4.12502890502300436e-10 +3.63078054770108583e-05 2.9066919156045991e-09 4.12028252275209992e-10 +3.67282300498092038e-05 2.90543392167895915e-09 4.11554160181132922e-10 +3.71535229097180028e-05 2.90417647220342426e-09 4.1108061359167211e-10 +3.75837404288451783e-05 2.90291956694235963e-09 4.10607611879153548e-10 +3.80189396320568894e-05 2.90166320566023385e-09 4.10135154416625619e-10 +3.84591782045361349e-05 2.90040738812161683e-09 4.09663240577857745e-10 +3.89045144994288521e-05 2.89915211409118025e-09 4.09191869737340136e-10 +3.93550075455785471e-05 2.89789738333369876e-09 4.08721041270282646e-10 +3.98107170553505348e-05 2.8966431956140475e-09 4.08250754552614211e-10 +4.027170343254673e-05 2.89538955069720379e-09 4.07781008960981497e-10 +4.07380277804121076e-05 2.8941364483482475e-09 4.07311803872748701e-10 +4.1209751909733869e-05 2.8928838883323586e-09 4.06843138665996408e-10 +4.16869383470343989e-05 2.89163187041481963e-09 4.06375012719520716e-10 +4.21696503428590965e-05 2.89038039436101446e-09 4.05907425412832561e-10 +4.26579518801601515e-05 2.88912945993642911e-09 4.05440376126156735e-10 +4.31519076827774245e-05 2.88787906690665052e-09 4.0497386424043127e-10 +4.36515832240175149e-05 2.88662921503736613e-09 4.0450788913730655e-10 +4.41570447353321828e-05 2.88537990409436762e-09 4.04042450199144289e-10 +4.46683592150972562e-05 2.88413113384354509e-09 4.03577546809017053e-10 +4.5185594437493195e-05 2.88288290405089161e-09 4.03113178350707135e-10 +4.57088189614884786e-05 2.88163521448250079e-09 4.0264934420870582e-10 +4.62381021399270231e-05 2.88038806490456753e-09 4.02186043768212826e-10 +4.67735141287208258e-05 2.87914145508338851e-09 4.01723276415135002e-10 +4.73151258961490662e-05 2.87789538478536046e-09 4.0126104153608608e-10 +4.78630092322648675e-05 2.87664985377698272e-09 4.00799338518385476e-10 +4.84172367584109796e-05 2.87540486182485468e-09 4.00338166750057315e-10 +4.8977881936845679e-05 2.87416040869567669e-09 3.99877525619830323e-10 +4.95450190804800963e-05 2.87291649415625038e-09 3.99417414517136228e-10 +5.01187233627283153e-05 2.87167311797347834e-09 3.98957832832109446e-10 +5.06990708274715363e-05 2.87043027991436446e-09 3.98498779955585998e-10 +5.1286138399137599e-05 2.86918797974601191e-09 3.98040255279103096e-10 +5.18800038928972398e-05 2.867946217235626e-09 3.97582258194897798e-10 +5.2480746024978405e-05 2.86670499215051339e-09 3.97124788095906596e-10 +5.30884444230999962e-05 2.86546430425807958e-09 3.96667844375764379e-10 +5.37031796370264494e-05 2.86422415332583221e-09 3.96211426428803971e-10 +5.43250331492445179e-05 2.8629845391213782e-09 3.95755533650054837e-10 +5.4954087385763667e-05 2.86174546141242662e-09 3.95300165435242618e-10 +5.55904257270415863e-05 2.86050691996678664e-09 3.94845321180788303e-10 +5.62341325190361538e-05 2.85926891455236709e-09 3.94391000283807403e-10 +5.68852930843854099e-05 2.85803144493717773e-09 3.93937202142109073e-10 +5.75439937337169787e-05 2.85679451088932881e-09 3.9348392615419528e-10 +5.82103217770884476e-05 2.8555581121770315e-09 3.93031171719260293e-10 +5.88843655355602224e-05 2.85432224856859581e-09 3.9257893823718954e-10 +5.95662143529023902e-05 2.85308691983243352e-09 3.92127225108558888e-10 +6.02559586074371409e-05 2.85185212573705565e-09 3.91676031734634173e-10 +6.09536897240183003e-05 2.85061786605107413e-09 3.91225357517369915e-10 +6.16595001861496201e-05 2.84938414054320018e-09 3.90775201859408948e-10 +6.2373483548243351e-05 2.84815094898224589e-09 3.90325564164081236e-10 +6.30957344480207702e-05 2.84691829113712308e-09 3.89876443835403457e-10 +6.38263486190563338e-05 2.84568616677684403e-09 3.89427840278077921e-10 +6.45654229034670361e-05 2.84445457567052072e-09 3.8897975289749215e-10 +6.531305526474874e-05 2.84322351758736396e-09 3.88532181099717489e-10 +6.60693448007611245e-05 2.84199299229668549e-09 3.88085124291508946e-10 +6.68343917568630107e-05 2.84076299956789837e-09 3.87638581880303955e-10 +6.76082975391997473e-05 2.83953353917051245e-09 3.87192553274222008e-10 +6.83911647281445259e-05 2.83830461087413849e-09 3.8674703788206332e-10 +6.91830970918952653e-05 2.83707621444848858e-09 3.86302035113308666e-10 +6.99841996002289904e-05 2.835848349663372e-09 3.85857544378117987e-10 +7.07945784384154524e-05 2.83462101628869978e-09 3.85413565087330239e-10 +7.16143410212918895e-05 2.83339421409448139e-09 3.84970096652462044e-10 +7.24435960075007151e-05 2.83216794285082553e-09 3.84527138485707225e-10 +7.32824533138921413e-05 2.83094220232794063e-09 3.8408468999993588e-10 +7.41310241300935114e-05 2.82971699229613557e-09 3.8364275060869386e-10 +7.49894209332473746e-05 2.82849231252581769e-09 3.83201319726201632e-10 +7.58577575029201879e-05 2.82726816278749358e-09 3.82760396767353767e-10 +7.67361489361837308e-05 2.82604454285176994e-09 3.82319981147718056e-10 +7.76247116628710362e-05 2.82482145248935189e-09 3.81880072283534683e-10 +7.85235634610090727e-05 2.82359889147104422e-09 3.81440669591715659e-10 +7.94328234724300775e-05 2.82237685956775098e-09 3.81001772489843788e-10 +8.03526122185636789e-05 2.8211553565504755e-09 3.80563380396172146e-10 +8.12830516164119105e-05 2.81993438219031912e-09 3.80125492729623104e-10 +8.22242649947091229e-05 2.81871393625848451e-09 3.79688108909787602e-10 +8.31763771102691368e-05 2.81749401852627028e-09 3.79251228356924525e-10 +8.41395141645215756e-05 2.81627462876507682e-09 3.78814850491959675e-10 +8.51138038202397363e-05 2.81505576674640208e-09 3.78378974736485304e-10 +8.609937521846218e-05 2.81383743224184289e-09 3.77943600512759128e-10 +8.70963589956102107e-05 2.81261962502309575e-09 3.7750872724370366e-10 +8.81048873008035869e-05 2.81140234486195476e-09 3.77074354352905379e-10 +8.91250938133767562e-05 2.81018559153031411e-09 3.76640481264614061e-10 +9.01571137605979174e-05 2.80896936480016561e-09 3.76207107403741793e-10 +9.12010839355932405e-05 2.80775366444360031e-09 3.75774232195862616e-10 +9.22571427154786166e-05 2.8065384902328073e-09 3.75341855067211331e-10 +9.3325430079701431e-05 2.80532384194007533e-09 3.74909975444683088e-10 +9.44060876285946919e-05 2.80410971933779119e-09 3.74478592755832353e-10 +9.54992586021459786e-05 2.80289612219843968e-09 3.74047706428872233e-10 +9.66050878989837603e-05 2.80168305029460485e-09 3.73617315892673858e-10 +9.77237220955835221e-05 2.80047050339896796e-09 3.73187420576765501e-10 +9.88553094656963697e-05 2.79925848128431077e-09 3.72758019911331752e-10 +0.000100000000000002526 2.7980469837235114e-09 3.72329113327212947e-10 +0.000101157945425992411 2.79683601048954683e-09 3.71900700255904291e-10 +0.000102329299228078014 2.79562556135549246e-09 3.71472780129555083e-10 +0.000103514216667937022 2.79441563609452213e-09 3.71045352380967989e-10 +0.000104712854805092632 2.7932062344799077e-09 3.70618416443598376e-10 +0.0001059253725177316 2.79199735628501824e-09 3.70191971751553528e-10 +0.000107151930523763394 2.79078900128332288e-09 3.69766017739591777e-10 +0.000108392691402123151 2.78958116924838713e-09 3.69340553843121821e-10 +0.000109647819614321334 2.78837385995387536e-09 3.6891557949820206e-10 +0.000110917481526242974 2.7871670731735483e-09 3.68491094141539815e-10 +0.000112201845430199255 2.78596080868126674e-09 3.68067097210490453e-10 +0.000113501081567234463 2.78475506625098872e-09 3.67643588143056815e-10 +0.000114815362149691275 2.78354984565676941e-09 3.67220566377888238e-10 +0.000116144861384037318 2.78234514667276206e-09 3.66798031354280238e-10 +0.000117489755493956037 2.78114096907321749e-09 3.66375982512173278e-10 +0.000118850222743704966 2.77993731263248579e-09 3.65954419292152346e-10 +0.000120226443461744455 2.77873417712501176e-09 3.65533341135445978e-10 +0.000121618600064640013 2.77753156232534071e-09 3.65112747483925793e-10 +0.000123026877081241413 2.77632946800811391e-09 3.64692637780105557e-10 +0.000124451461177141809 2.77512789394807022e-09 3.6427301146714057e-10 +0.000125892541179420077 2.77392683992004735e-09 3.63853867988826625e-10 +0.000127350308101669562 2.77272630569897814e-09 3.63435206789599806e-10 +0.000128824955169316835 2.77152629105989512e-09 3.63017027314535247e-10 +0.000130316677845233425 2.77032679577792633e-09 3.62599329009346612e-10 +0.000131825673855644237 2.76912781962829868e-09 3.62182111320385372e-10 +0.000133352143216335973 2.76792936238633544e-09 3.61765373694640138e-10 +0.000134896288259168994 2.76673142382745789e-09 3.61349115579735566e-10 +0.000136458313658896138 2.76553400372718288e-09 3.60933336423932262e-10 +0.000138038426460292233 2.76433710186112649e-09 3.60518035676125383e-10 +0.000139636836105597574 2.76314071800500036e-09 3.60103212785844325e-10 +0.00014125375446227931 2.76194485193461412e-09 3.59688867203251847e-10 +0.000142889395851114224 2.76074950342587382e-09 3.59274998379143397e-10 +0.000144543977074596756 2.75955467225478306e-09 3.58861605764946288e-10 +0.000146217717445675893 2.75836035819744143e-09 3.58448688812719071e-10 +0.000147910838816824877 2.75716656103004695e-09 3.58036246975150871e-10 +0.00014962356560944753 2.75597328052889316e-09 3.57624279705560347e-10 +0.000151356124843625054 2.75478051647037081e-09 3.57212786457895488e-10 +0.000153108746168207298 2.75358826863096743e-09 3.56801766686732269e-10 +0.00015488166189125247 2.75239653678726775e-09 3.56391219847274389e-10 +0.000156675107010819314 2.75120532071595325e-09 3.55981145395352554e-10 +0.00015848931924611581 2.75001462019380015e-09 3.5557154278742328e-10 +0.000160324539069008661 2.74882443499768393e-09 3.55162411480568846e-10 +0.000162181009735897565 2.74763476490457477e-09 3.54753750932496004e-10 +0.000164058977319958571 2.74644560969154006e-09 3.54345560601535453e-10 +0.000165958690743760759 2.74525696913574436e-09 3.53937839946641385e-10 +0.00016788040181226079 2.74406884301444738e-09 3.5353058842739039e-10 +0.000169824365246179254 2.74288123110500602e-09 3.53123805503980788e-10 +0.000171790838715763704 2.74169413318487311e-09 3.52717490637232217e-10 +0.000173780082874942511 2.74050754903159828e-09 3.52311643288584544e-10 +0.0001757923613958743 2.73932147842282753e-09 3.51906262920097401e-10 +0.000177827941003897393 2.73813592113630156e-09 3.51501348994449409e-10 +0.000179887091512883962 2.73695087694985952e-09 3.51096900974937406e-10 +0.000181970085861003604 2.73576634564143566e-09 3.50692918325475768e-10 +0.000184077200146900917 2.73458232698905939e-09 3.50289400510595743e-10 +0.000186208713666292149 2.73339882077085851e-09 3.49886346995444675e-10 +0.000188364908948985524 2.73221582676505393e-09 3.49483757245785328e-10 +0.000190546071796330262 2.73103334474996537e-09 3.49081630727995164e-10 +0.000192752491319099229 2.72985137450400603e-09 3.48679966909065727e-10 +0.00019498445997581025 2.72866991580568631e-09 3.48278765256601756e-10 +0.000197242273611491164 2.7274889684336138e-09 3.47878025238820622e-10 +0.000199526231496893839 2.72630853216648873e-09 3.47477746324551606e-10 +0.000201836636368162047 2.72512860678310937e-09 3.47077927983235167e-10 +0.000204173794466958974 2.72394919206236951e-09 3.46678569684922123e-10 +0.000206538015581059074 2.72277028778325806e-09 3.46279670900273286e-10 +0.000208929613085410162 2.72159189372485949e-09 3.45881231100558323e-10 +0.000211348903983670969 2.72041400966635463e-09 3.45483249757655397e-10 +0.00021379620895022958 2.719236635387019e-09 3.45085726344050339e-10 +0.000216271852372708497 2.71805977066622453e-09 3.44688660332835923e-10 +0.000218776162394961824 2.71688341528343824e-09 3.44292051197711194e-10 +0.00022130947096057042 2.71570756901822228e-09 3.43895898412980797e-10 +0.000223872113856840691 2.71453223165023436e-09 3.43500201453554254e-10 +0.000226464430759312774 2.71335740295922729e-09 3.43104959794945238e-10 +0.000229086765276784198 2.71218308272505068e-09 3.42710172913271006e-10 +0.000231739464996854835 2.71100927072764802e-09 3.42315840285251466e-10 +0.000234422881531999279 2.70983596674705792e-09 3.41921961388208768e-10 +0.000237137370566172694 2.70866317056341452e-09 3.41528535700066369e-10 +0.000239883291901956308 2.70749088195694794e-09 3.41135562699348464e-10 +0.000242661009508248924 2.70631910070798217e-09 3.40743041865179372e-10 +0.0002454708915685105 2.70514782659693632e-09 3.40350972677282598e-10 +0.000248313310529564579 2.70397705940432629e-09 3.39959354615980422e-10 +0.000251188643150965652 2.70280679891075979e-09 3.39568187162192971e-10 +0.000254097270554938266 2.70163704489694297e-09 3.39177469797437697e-10 +0.000257039578276894228 2.70046779714367504e-09 3.38787202003828658e-10 +0.000260015956316535127 2.69929905543184991e-09 3.38397383264075741e-10 +0.000263026799189546218 2.69813081954245663e-09 3.38008013061484142e-10 +0.000266072505979889128 2.69696308925657977e-09 3.37619090879953389e-10 +0.000269153480392699852 2.69579586435539782e-09 3.37230616203977131e-10 +0.000272270130807799617 2.69462914462018311e-09 3.368425885186419e-10 +0.00027542287033382513 2.6934629298323052e-09 3.36455007309626952e-10 +0.000278612116862985619 2.69229721977322629e-09 3.36067872063203134e-10 +0.000281838293126454066 2.69113201422450284e-09 3.3568118226623247e-10 +0.000285101826750399755 2.68996731296778774e-09 3.35294937406167433e-10 +0.000288403150312669548 2.68880311578482646e-09 3.34909136971050278e-10 +0.000291742701400125751 2.68763942245746089e-09 3.34523780449512262e-10 +0.000295120922666647736 2.6864762327676247e-09 3.34138867330773081e-10 +0.000298538261891805273 2.68531354649734795e-09 3.33754397104640192e-10 +0.000301995172040211068 2.68415136342875498e-09 3.33370369261507988e-10 +0.000305492111321560892 2.68298968334406444e-09 3.32986783292357284e-10 +0.000309029543251368747 2.68182850602558721e-09 3.3260363868875469e-10 +0.000312607936712405352 2.68066783125573095e-09 3.32220934942851585e-10 +0.000316227766016847914 2.67950765881699638e-09 3.31838671547384008e-10 +0.000319889510969149926 2.67834798849197768e-09 3.31456847995671417e-10 +0.000323593656929638512 2.6771888200633654e-09 3.31075463781616332e-10 +0.000327340694878848601 2.67603015331394192e-09 3.30694518399703709e-10 +0.000331131121482601673 2.67487198802658349e-09 3.30314011345000015e-10 +0.000334965439157838406 2.67371432398426274e-09 3.29933942113152911e-10 +0.000338844156139213467 2.67255716097004369e-09 3.29554310200390121e-10 +0.000342767786546461432 2.67140049876708508e-09 3.29175115103519274e-10 +0.000346736850452542857 2.67024433715863994e-09 3.28796356319926766e-10 +0.000350751873952579363 2.6690886759280548e-09 3.28418033347577452e-10 +0.000354813389233586977 2.66793351485877003e-09 3.28040145685013919e-10 +0.000358921934645016873 2.66677885373431992e-09 3.27662692831355509e-10 +0.000363078054770113164 2.66562469233833139e-09 3.27285674286298053e-10 +0.000367282300498096646 2.66447103045452648e-09 3.2690908955011305e-10 +0.000371535229097184677 2.66331786786672073e-09 3.26532938123646944e-10 +0.000375837404288456459 2.66216520435882104e-09 3.26157219508320599e-10 +0.000380189396320573651 2.6610130397148303e-09 3.25781933206128429e-10 +0.000384591782045366174 2.65986137371884445e-09 3.2540707871963798e-10 +0.0003890451449942934 2.65871020615505205e-09 3.25032655551989154e-10 +0.000393550075455790431 2.65755953680773557e-09 3.24658663206893436e-10 +0.000398107170553510417 2.65640936546127013e-09 3.24285101188633532e-10 +0.00040271703432547245 2.65525969190012636e-09 3.23911969002062434e-10 +0.000407380277804126267 2.65411051590886508e-09 3.23539266152602859e-10 +0.000412097519097343935 2.65296183727214222e-09 3.23166992146246569e-10 +0.000416869383470349329 2.65181365577470718e-09 3.2279514648955391e-10 +0.000421696503428596386 2.6506659712014012e-09 3.22423728689652779e-10 +0.00042657951880160699 2.64951878333715897e-09 3.22052738254238361e-10 +0.000431519076827779761 2.64837209196700989e-09 3.21682174691572205e-10 +0.000436515832240180692 2.64722589687607436e-09 3.21312037510481648e-10 +0.000441570447353327412 2.64608019784956666e-09 3.20942326220359355e-10 +0.000446683592150978227 2.64493499467279414e-09 3.2057304033116218e-10 +0.000451855944374937655 2.64379028713115636e-09 3.20204179353411216e-10 +0.000457088189614890546 2.64264607501014678e-09 3.19835742798190506e-10 +0.000462381021399276004 2.64150235809535025e-09 3.19467730177146678e-10 +0.000467735141287214126 2.64035913617244636e-09 3.19100141002488378e-10 +0.000473151258961496612 2.63921640902720607e-09 3.18732974786985495e-10 +0.000478630092322654692 2.63807417644549342e-09 3.18366231043968434e-10 +0.000484172367584115922 2.63693243821326509e-09 3.17999909287327706e-10 +0.000489778819368463011 2.63579119411656997e-09 3.176340090315131e-10 +0.000495450190804807211 2.63465044394155087e-09 3.1726852979153301e-10 +0.00050118723362728955 2.63351018747444156e-09 3.16903471082954072e-10 +0.000506990708274721882 2.6323704245015693e-09 3.16538832421900135e-10 +0.000512861383991382617 2.63123115480935399e-09 3.16174613325051943e-10 +0.000518800038928979106 2.63009237818430693e-09 3.15810813309646264e-10 +0.000524807460249790826 2.62895409441303289e-09 3.1544743189347542e-10 +0.000530884444231006819 2.62781630328222764e-09 3.15084468594886564e-10 +0.000537031796370271474 2.62667900457868164e-09 3.14721922932780956e-10 +0.000543250331492452199 2.62554219808927471e-09 3.14359794426613604e-10 +0.000549540873857643744 2.62440588360098179e-09 3.13998082596392277e-10 +0.000555904257270423033 2.62327006090086714e-09 3.13636786962677147e-10 +0.00056234132519036883 2.62213472977608934e-09 3.13275907046579961e-10 +0.000568852930843861417 2.62099989001389836e-09 3.12915442369763521e-10 +0.000575439937337177132 2.61986554140163641e-09 3.12555392454441119e-10 +0.000582103217770891862 2.61873168372673709e-09 3.12195756823375605e-10 +0.000588843655355609651 2.61759831677672665e-09 3.11836534999879079e-10 +0.000595662143529031383 2.61646544033922358e-09 3.11477726507812161e-10 +0.00060255958607437893 2.61533305420193735e-09 3.11119330871583224e-10 +0.000609536897240190606 2.61420115815266966e-09 3.10761347616147972e-10 +0.000616595001861503953 2.61306975197931487e-09 3.10403776267008671e-10 +0.000623734835482441289 2.61193883546985788e-09 3.10046616350213475e-10 +0.000630957344480215644 2.61080840841237628e-09 3.09689867392356114e-10 +0.000638263486190571334 2.6096784705950382e-09 3.09333528920574707e-10 +0.000645654229034678439 2.60854902180610485e-09 3.0897760046255176e-10 +0.000653130552647495613 2.60742006183392925e-09 3.08622081546513082e-10 +0.000660693448007619566 2.60629159046695416e-09 3.08266971701227218e-10 +0.000668343917568638536 2.60516360749371541e-09 3.07912270456005289e-10 +0.000676082975392006038 2.60403611270283941e-09 3.07557977340699652e-10 +0.000683911647281453959 2.6029091058830456e-09 3.07204091885703795e-10 +0.000691830970918961489 2.6017825868231428e-09 3.06850613621951458e-10 +0.000699841996002298849 2.60065655531203326e-09 3.06497542080916169e-10 +0.000707945784384163604 2.59953101113870941e-09 3.06144876794610621e-10 +0.00071614341021292811 2.59840595409225468e-09 3.05792617295585796e-10 +0.000724435960075016502 2.5972813839618443e-09 3.05440763116930757e-10 +0.000732824533138930873 2.59615730053674491e-09 3.05089313792271562e-10 +0.000741310241300944628 2.59503370360631455e-09 3.04738268855771162e-10 +0.000749894209332483287 2.59391059296000185e-09 3.04387627842128363e-10 +0.000758577575029211609 2.59278796838734641e-09 3.04037390286577315e-10 +0.000767361489361847201 2.59166582967798008e-09 3.03687555724887042e-10 +0.000776247116628720336 2.59054417662162443e-09 3.03338123693360721e-10 +0.00078523563461010081 2.58942300900809206e-09 3.02989093728835008e-10 +0.000794328234724310913 2.58830232662728819e-09 3.02640465368679574e-10 +0.000803526122185647062 2.58718212926920695e-09 3.02292238150796276e-10 +0.000812830516164129405 2.58606241672393514e-09 3.01944411613618851e-10 +0.000822242649947101719 2.58494318878164848e-09 3.01596985296111927e-10 +0.000831763771102701993 2.58382444523261449e-09 3.01249958737770772e-10 +0.000841395141645226463 2.58270618586719209e-09 3.00903331478620564e-10 +0.000851138038202408232 2.58158841047583081e-09 3.00557103059215516e-10 +0.000860993752184632832 2.58047111884906907e-09 3.00211273020638668e-10 +0.000870963589956113247 2.57935431077753877e-09 2.99865840904501007e-10 +0.000881048873008047091 2.5782379860519595e-09 2.99520806252941159e-10 +0.000891250938133779 2.57712214446314306e-09 2.99176168608624301e-10 +0.000901571137605990829 2.57600678580199268e-09 2.98831927514742008e-10 +0.000912010839355944115 2.57489190985950008e-09 2.98488082515011425e-10 +0.000922571427154798038 2.5737775164267488e-09 2.98144633153674696e-10 +0.000933254300797026399 2.57266360529491131e-09 2.97801578975498453e-10 +0.000944060876285959198 2.57155017625525271e-09 2.97458919525772983e-10 +0.000954992586021472228 2.57043722909912704e-09 2.9711665435031197e-10 +0.00096605087898985018 2.56932476361797807e-09 2.96774782995451465e-10 +0.00097723722095584796 2.56821277960334099e-09 2.96433305008049727e-10 +0.000988553094656976572 2.56710127684684114e-09 2.96092219935486346e-10 +0.00100000000000003818 2.56599025514019279e-09 2.95751527325661623e-10 +0.00101157945425993726 2.56487971427520244e-09 2.95411226726996207e-10 +0.00102329299228079342 2.56376965404376426e-09 2.95071317688430215e-10 +0.00103514216667938358 2.56266007423786468e-09 2.94731799759422925e-10 +0.00104712854805093973 2.56155097464957942e-09 2.9439267248995179e-10 +0.00105925372517732966 2.56044235507107316e-09 2.94053935430512184e-10 +0.00107151930523764782 2.55933421529460157e-09 2.93715588132116881e-10 +0.00108392691402124544 2.55822655511251003e-09 2.93377630146295022e-10 +0.00109647819614322743 2.55711937431723412e-09 2.93040061025091806e-10 +0.00110917481526244402 2.55601267270129834e-09 2.92702880321067973e-10 +0.00112201845430200705 2.55490645005731816e-09 2.92366087587299027e-10 +0.00113501081567235918 2.55380070617799799e-09 2.92029682377374719e-10 +0.00114815362149692755 2.55269544085613156e-09 2.9169366424539843e-10 +0.00116144861384038806 2.55159065388460402e-09 2.913580327459867e-10 +0.00117489755493957546 2.55048634505638818e-09 2.91022787434268458e-10 +0.00118850222743706498 2.54938251416454787e-09 2.90687927865884502e-10 +0.00120226443461746006 2.54827916100223539e-09 2.90353453596986983e-10 +0.00121618600064641582 2.54717628536269242e-09 2.90019364184238783e-10 +0.00123026877081243002 2.54607388703925241e-09 2.89685659184812691e-10 +0.00124451461177143424 2.54497196582533612e-09 2.89352338156391297e-10 +0.00125892541179421693 2.54387052151445362e-09 2.89019400657166062e-10 +0.00127350308101671205 2.54276955390020473e-09 2.88686846245836645e-10 +0.00128824955169318505 2.54166906277627944e-09 2.88354674481610649e-10 +0.00130316677845235111 2.54056904793645667e-09 2.88022884924202838e-10 +0.00131825673855645955 2.53946950917460342e-09 2.87691477133834524e-10 +0.00133352143216337719 2.53837044628467768e-09 2.87360450671233096e-10 +0.00134896288259170739 2.53727185906072512e-09 2.87029805097631352e-10 +0.001364583136588979 2.5361737472968816e-09 2.86699539974766928e-10 +0.00138038426460293994 2.53507611078737145e-09 2.86369654864881834e-10 +0.00139636836105599352 2.53397894932650753e-09 2.86040149330721676e-10 +0.00141253754462281099 2.53288226270869409e-09 2.85711022935535195e-10 +0.00142889395851116029 2.53178605072842061e-09 2.85382275243073694e-10 +0.00144543977074598567 2.53069031318027e-09 2.85053905817590474e-10 +0.0014621771744567772 2.52959504985890957e-09 2.84725914223840103e-10 +0.00147910838816826731 2.52850026055909885e-09 2.84398300027078115e-10 +0.00149623565609449411 2.52740594507568423e-09 2.84071062793060123e-10 +0.00151356124843626968 2.52631210320360225e-09 2.83744202088041463e-10 +0.0015310874616820925 2.52521873473787757e-09 2.83417717478776619e-10 +0.00154881661891254443 2.52412583947362292e-09 2.83091608532518457e-10 +0.00156675107010821298 2.52303341720604038e-09 2.827658748170178e-10 +0.00158489319246117827 2.52194146773042135e-09 2.8244051590052292e-10 +0.00160324539069010711 2.52084999084214451e-09 2.82115531351778811e-10 +0.00162181009735899652 2.51975898633667788e-09 2.81790920740026619e-10 +0.00164058977319960679 2.51866845400957756e-09 2.8146668363500323e-10 +0.00165958690743762895 2.517578393656489e-09 2.81142819606940598e-10 +0.00167880401812262959 2.51648880507314491e-09 2.80819328226565176e-10 +0.0016982436524618145 2.51539968805536733e-09 2.80496209065097243e-10 +0.00171790838715765921 2.51431104239906558e-09 2.80173461694250596e-10 +0.00173780082874944739 2.51322286790023913e-09 2.79851085686231771e-10 +0.00175792361395876555 2.51213516435497391e-09 2.79529080613739479e-10 +0.00177827941003899669 2.51104793155944474e-09 2.79207446049964239e-10 +0.0017988709151288626 2.50996116930991498e-09 2.78886181568587556e-10 +0.00181970085861005919 2.50887487740273649e-09 2.78565286743781452e-10 +0.00184077200146903265 2.50778905563434797e-09 2.78244761150207949e-10 +0.0018620871366629454 2.50670370380127746e-09 2.77924604363018607e-10 +0.00188364908948987953 2.50561882170013988e-09 2.77604815957853588e-10 +0.00190546071796332712 2.50453440912763902e-09 2.7728539551084156e-10 +0.00192752491319101707 2.50345046588056765e-09 2.76966342598598707e-10 +0.00194984459975812755 2.5023669917558037e-09 2.76647656798228528e-10 +0.00197242273611493695 2.50128398655031528e-09 2.76329337687321111e-10 +0.00199526231496896392 2.50020145006115859e-09 2.76011384843952458e-10 +0.0020183663636816466 2.49911938208547543e-09 2.7569379784668413e-10 +0.00204173794466961604 2.4980377824204978e-09 2.75376576274562672e-10 +0.00206538015581061735 2.49695665086354367e-09 2.75059719707118892e-10 +0.00208929613085412878 2.49587598721202e-09 2.74743227724367395e-10 +0.00211348903983673729 2.49479579126342054e-09 2.74427099906806119e-10 +0.00213796208950232372 2.49371606281532718e-09 2.7411133583541566e-10 +0.002162718523727113 2.49263680166540988e-09 2.73795935091658656e-10 +0.0021877616239496466 2.49155800761142463e-09 2.73480897257479523e-10 +0.0022130947096057332 2.49047968045121678e-09 2.7316622191530348e-10 +0.00223872113856843618 2.48940181998271725e-09 2.72851908648036488e-10 +0.00226464430759315766 2.48832442600394674e-09 2.7253795703906407e-10 +0.00229086765276787256 2.48724749831301032e-09 2.72224366672251459e-10 +0.00231739464996857936 2.48617103670810446e-09 2.71911137131942518e-10 +0.00234422881532002402 2.48509504098750875e-09 2.71598268002959426e-10 +0.0023713737056617586 2.48401951094959337e-09 2.7128575887060211e-10 +0.00239883291901959528 2.48294444639281371e-09 2.70973609320647522e-10 +0.00242661009508252177 2.4818698471157128e-09 2.70661818939349485e-10 +0.00245470891568513785 2.48079571291692181e-09 2.70350387313437707e-10 +0.00248313310529567908 2.47972204359515874e-09 2.70039314030117372e-10 +0.00251188643150969046 2.47864883894922763e-09 2.69728598677068774e-10 +0.00254097270554941692 2.47757609877802018e-09 2.69418240842446648e-10 +0.0025703957827689773 2.47650382288051621e-09 2.69108240114879393e-10 +0.00260015956316538704 2.47543201105578114e-09 2.68798596083469021e-10 +0.0026302679918954984 2.47436066310296806e-09 2.68489308337790173e-10 +0.0026607250597989276 2.47328977882131612e-09 2.68180376467889759e-10 +0.00269153480392703539 2.47221935801015294e-09 2.67871800064286442e-10 +0.00272270130807803368 2.47114940046889137e-09 2.67563578717970013e-10 +0.00275422870333828914 2.47007990599703192e-09 2.67255712020400829e-10 +0.00278612116862989468 2.46901087439416155e-09 2.66948199563509445e-10 +0.00281838293126457969 2.46794230545995449e-09 2.66641040939695841e-10 +0.00285101826750403702 2.466874198994171e-09 2.66334235741829062e-10 +0.00288403150312673516 2.46580655479665858e-09 2.66027783563246593e-10 +0.00291742701400129773 2.46473937266735038e-09 2.65721683997753847e-10 +0.00295120922666651823 2.46367265240626804e-09 2.65415936639623541e-10 +0.00298538261891809382 2.46260639381351757e-09 2.65110541083595336e-10 +0.00301995172040215231 2.46154059668929267e-09 2.64805496924875114e-10 +0.0030549211132156512 2.46047526083387389e-09 2.64500803759134663e-10 +0.00309029543251373041 2.45941038604762657e-09 2.64196461182510858e-10 +0.00312607936712409667 2.45834597213100454e-09 2.63892468791605341e-10 +0.00316227766016852294 2.45728201888454645e-09 2.63588826183483858e-10 +0.00319889510969154339 2.45621852610887735e-09 2.6328553295567584e-10 +0.0032359365692964299 2.45515549360471001e-09 2.62982588706173731e-10 +0.00327340694878853122 2.45409292117284195e-09 2.62679993033432734e-10 +0.00331131121482606226 2.45303080861415716e-09 2.62377745536369823e-10 +0.00334965439157842992 2.45196915572962688e-09 2.62075845814363643e-10 +0.00338844156139218085 2.45090796232030674e-09 2.61774293467253785e-10 +0.00342767786546466094 2.44984722818733961e-09 2.61473088095340271e-10 +0.00346736850452547584 2.44878695313195523e-09 2.61172229299382929e-10 +0.00350751873952584144 2.44772713695546649e-09 2.60871716680601088e-10 +0.00354813389233591802 2.44666777945927558e-09 2.60571549840672905e-10 +0.00358921934645021774 2.44560888044486866e-09 2.6027172838173474e-10 +0.00363078054770118097 2.44455043971381877e-09 2.59972251906380955e-10 +0.00367282300498101644 2.4434924570677837e-09 2.59673120017663031e-10 +0.00371535229097189751 2.44243493230850811e-09 2.59374332319089159e-10 +0.00375837404288461609 2.4413778652378227e-09 2.59075888414623923e-10 +0.00380189396320578877 2.44032125565764251e-09 2.58777787908687429e-10 +0.00384591782045371486 2.43926510336996947e-09 2.58480030406154987e-10 +0.00389045144994298745 2.43820940817689109e-09 2.581826155123566e-10 +0.00393550075455795841 2.43715416988058011e-09 2.57885542833076393e-10 +0.00398107170553515903 2.43609938828329486e-09 2.57588811974551942e-10 +0.00402717034325477969 2.43504506318737971e-09 2.57292422543474064e-10 +0.0040738027780413185 2.43399119439526504e-09 2.56996374146986148e-10 +0.00412097519097349551 2.43293778170946522e-09 2.56700666392683484e-10 +0.00416869383470354956 2.43188482493258103e-09 2.56405298888612896e-10 +0.00421696503428602067 2.43083232386729928e-09 2.56110271243272231e-10 +0.00426579518801612715 2.42978027831639077e-09 2.55815583065609942e-10 +0.00431519076827785539 2.42872868808271229e-09 2.55521233965024156e-10 +0.00436515832240186568 2.42767755296920708e-09 2.55227223551362679e-10 +0.00441570447353333354 2.42662687277890194e-09 2.54933551434922163e-10 +0.00446683592150984212 2.42557664731490885e-09 2.54640217226447648e-10 +0.00451855944374943749 2.42452687638042707e-09 2.54347220537132035e-10 +0.00457088189614896726 2.42347755977873899e-09 2.54054560978615682e-10 +0.00462381021399282249 2.42242869731321261e-09 2.53762238162985675e-10 +0.00467735141287220404 2.42138028878730195e-09 2.53470251702775622e-10 +0.00473151258961502976 2.42033233400454543e-09 2.53178601210964775e-10 +0.00478630092322661176 2.41928483276856622e-09 2.52887286300977875e-10 +0.00484172367584122503 2.41823778488307272e-09 2.52596306586684324e-10 +0.00489778819368469689 2.4171911901518585e-09 2.52305661682397925e-10 +0.0049545019080481402 2.41614504837880153e-09 2.52015351202876163e-10 +0.00501187233627296402 2.41509935936786538e-09 2.51725374763319941e-10 +0.00506990708274728755 2.41405412292309757e-09 2.51435731979372757e-10 +0.00512861383991389599 2.41300933884863209e-09 2.51146422467120443e-10 +0.00518800038928986153 2.41196500694868561e-09 2.50857445843090597e-10 +0.0052480746024979796 2.41092112702755961e-09 2.50568801724252015e-10 +0.00530884444231014083 2.40987769888964325e-09 2.50280489728014225e-10 +0.00537031796370278803 2.40883472233940675e-09 2.49992509472226919e-10 +0.00543250331492459593 2.40779219718140677e-09 2.49704860575179692e-10 +0.00549540873857651269 2.40675012322028475e-09 2.49417542655601064e-10 +0.005559042572704306 2.40570850026076486e-09 2.49130555332658529e-10 +0.00562341325190376419 2.40466732810765811e-09 2.48843898225957572e-10 +0.00568852930843869158 2.40362660656585908e-09 2.48557570955541568e-10 +0.00575439937337185025 2.40258633544034627e-09 2.48271573141890849e-10 +0.00582103217770899885 2.40154651453618259e-09 2.47985904405922654e-10 +0.00588843655355617782 2.40050714365851655e-09 2.47700564368990199e-10 +0.00595662143529039623 2.39946822261257895e-09 2.47415552652882621e-10 +0.00602559586074387279 2.39842975120368746e-09 2.47130868879824055e-10 +0.00609536897240199084 2.39739172923724164e-09 2.46846512672473264e-10 +0.00616595001861512497 2.39635415651872708e-09 2.46562483653923489e-10 +0.00623734835482449984 2.39531703285371165e-09 2.46278781447701311e-10 +0.00630957344480224426 2.3942803580478497e-09 2.45995405677766701e-10 +0.00638263486190580268 2.39324413190687743e-09 2.45712355968512246e-10 +0.00645654229034687503 2.39220835423661586e-09 2.45429631944762734e-10 +0.00653130552647504786 2.39117302484297161e-09 2.45147233231774638e-10 +0.00660693448007628869 2.39013814353193317e-09 2.44865159455235548e-10 +0.00668343917568647861 2.38910371010957386e-09 2.44583410241263912e-10 +0.00676082975392015492 2.38806972438205092e-09 2.44301985216408208e-10 +0.00683911647281463479 2.38703618615560598e-09 2.44020884007646736e-10 +0.00691830970918971052 2.38600309523656338e-09 2.43740106242386899e-10 +0.00699841996002308498 2.38497045143133226e-09 2.43459651548464991e-10 +0.00707945784384173341 2.38393825454640488e-09 2.43179519554145373e-10 +0.00716143410212937911 2.38290650438835788e-09 2.42899709888120161e-10 +0.00724435960075026433 2.3818752007638506e-09 2.42620222179508659e-10 +0.00732824533138940956 2.38084434347962843e-09 2.4234105605785715e-10 +0.00741310241300954884 2.37981393234251656e-09 2.42062211153137865e-10 +0.00749894209332493695 2.37878396715942748e-09 2.41783687095749032e-10 +0.00758577575029222104 2.37775444773735554e-09 2.41505483516514049e-10 +0.00767361489361857805 2.37672537388337782e-09 2.41227600046681073e-10 +0.00776247116628731113 2.37569674540465702e-09 2.40950036317922655e-10 +0.00785235634610111609 2.37466856210843771e-09 2.40672791962335071e-10 +0.00794328234724321798 2.37364082380204802e-09 2.40395866612437956e-10 +0.00803526122185658012 2.37261353029290005e-09 2.40119259901173792e-10 +0.00812830516164140572 2.37158668138848942e-09 2.39842971461907333e-10 +0.00822242649947113081 2.37056027689639367e-09 2.39567000928425354e-10 +0.00831763771102713573 2.36953431662427509e-09 2.39291347934935819e-10 +0.00841395141645238237 2.36850880037987872e-09 2.39016012116067674e-10 +0.00851138038202420115 2.36748372797103271e-09 2.3874099310687028e-10 +0.0086099375218464478 2.36645909920564836e-09 2.38466290542812845e-10 +0.00870963589956125391 2.36543491389172051e-09 2.38191904059784215e-10 +0.00881048873008059494 2.3644111718373267e-09 2.37917833294091944e-10 +0.00891250938133791512 2.36338787285062679e-09 2.37644077882462192e-10 +0.00901571137606003471 2.36236501673986586e-09 2.37370637462039105e-10 +0.00912010839355956865 2.36134260331336959e-09 2.37097511670384345e-10 +0.00922571427154810809 2.36032063237954808e-09 2.36824700145476579e-10 +0.00933254300797039388 2.3592991037468937e-09 2.36552202525711063e-10 +0.00944060876285972295 2.35827801722398157e-09 2.36280018449899019e-10 +0.00954992586021485498 2.35725737261947075e-09 2.36008147557267486e-10 +0.00966050878989863603 2.35623716974210176e-09 2.35736589487458382e-10 +0.00977237220955861491 2.35521740840069871e-09 2.35465343880528355e-10 +0.00988553094656990233 2.3541980884041688e-09 2.35194410376948264e-10 +0.0100000000000005206 2.35317920956150032e-09 2.34923788617602608e-10 +0.0101157945425995131 2.35216077168176591e-09 2.34653478243789064e-10 +0.0102329299228080765 2.35114277457411972e-09 2.34383478897218125e-10 +0.0103514216667939807 2.35012521804779982e-09 2.34113790220012475e-10 +0.0104712854805095457 2.34910810191212495e-09 2.33844411854706583e-10 +0.0105925372517734467 2.34809142597649782e-09 2.33575343444246282e-10 +0.0107151930523766287 2.34707519005040384e-09 2.33306584631988205e-10 +0.0108392691402126075 2.3460593939434099e-09 2.33038135061699318e-10 +0.01096478196143243 2.3450440374651652e-09 2.32769994377556585e-10 +0.0110917481526245972 2.34402912042540206e-09 2.32502162224146242e-10 +0.0112201845430202288 2.34301464263393513e-09 2.32234638246463566e-10 +0.0113501081567237531 2.34200060390066092e-09 2.31967422089912309e-10 +0.0114815362149694386 2.34098700403555827e-09 2.31700513400304252e-10 +0.0116144861384040472 2.33997384284868872e-09 2.31433911823858692e-10 +0.0117489755493959229 2.33896112015019571e-09 2.31167617007201954e-10 +0.0118850222743708198 2.33794883575030457e-09 2.30901628597366996e-10 +0.0120226443461747719 2.33693698945932335e-09 2.30635946241792949e-10 +0.0121618600064643308 2.33592558108764156e-09 2.30370569588324573e-10 +0.0123026877081244754 2.33491461044573105e-09 2.30105498285211765e-10 +0.0124451461177145194 2.33390407734414634e-09 2.29840731981109328e-10 +0.0125892541179423497 2.33289398159352224e-09 2.29576270325076193e-10 +0.0127350308101673027 2.33188432300457747e-09 2.29312112966575162e-10 +0.0128824955169320344 2.33087510138811185e-09 2.29048259555472289e-10 +0.013031667784523698 2.32986631655500708e-09 2.28784709742036594e-10 +0.0131825673855647842 2.3288579683162259e-09 2.2852146317693944e-10 +0.0133352143216339623 2.32785005648281505e-09 2.28258519511254229e-10 +0.0134896288259172669 2.32684258086590023e-09 2.27995878396455802e-10 +0.0136458313658899856 2.32583554127669071e-09 2.27733539484419901e-10 +0.0138038426460295981 2.32482893752647722e-09 2.27471502427423033e-10 +0.0139636836105601347 2.32382276942663157e-09 2.27209766878141702e-10 +0.014125375446228312 2.32281703678860827e-09 2.26948332489652067e-10 +0.0142889395851118067 2.32181173942394291e-09 2.26687198915429429e-10 +0.0144543977074600635 2.32080687714425213e-09 2.26426365809347893e-10 +0.0146217717445679806 2.31980244976123406e-09 2.26165832825679749e-10 +0.014791083881682883 2.31879845708666912e-09 2.2590559961909521e-10 +0.0149623565609451527 2.31779489893241922e-09 2.25645665844661643e-10 +0.0151356124843629106 2.31679177511042651e-09 2.25386031157843457e-10 +0.0153108746168211414 2.31578908543271667e-09 2.25126695214501414e-10 +0.0154881661891256642 2.31478682971139396e-09 2.2486765767089239e-10 +0.015667510701082351 2.3137850077586458e-09 2.24608918183668575e-10 +0.0158489319246120051 2.31278361938674106e-09 2.24350476409877425e-10 +0.0160324539069012957 2.31178266440802885e-09 2.24092332006960829e-10 +0.0162181009735901903 2.31078214263493977e-09 2.23834484632754958e-10 +0.0164058977319962961 2.30978205387998588e-09 2.23576933945489618e-10 +0.0165958690743765215 2.30878239795576074e-09 2.23319679603787912e-10 +0.0167880401812265309 2.30778317467493771e-09 2.23062721266665779e-10 +0.0169824365246183835 2.30678438385027247e-09 2.22806058593531393e-10 +0.0171790838715768328 2.30578602529460134e-09 2.2254969124418486e-10 +0.0173780082874947193 2.30478809882084129e-09 2.22293618878817799e-10 +0.0175792361395879018 2.3037906042419912e-09 2.22037841158012749e-10 +0.0177827941003902146 2.30279354137112974e-09 2.21782357742742861e-10 +0.0179887091512888793 2.30179691002141792e-09 2.21527168294371275e-10 +0.018197008586100849 2.30080071000609489e-09 2.21272272474650887e-10 +0.0184077200146905845 2.29980494113848419e-09 2.21017669945723732e-10 +0.0186208713666297133 2.29880960323198793e-09 2.20763360370120592e-10 +0.0188364908948990585 2.29781469610008888e-09 2.2050934341076061e-10 +0.0190546071796335384 2.2968202195563521e-09 2.20255618730950673e-10 +0.0192752491319104387 2.29582617341442085e-09 2.20002185994385174e-10 +0.0194984459975815448 2.29483255748802231e-09 2.19749044865145444e-10 +0.0197242273611496419 2.29383937159096145e-09 2.19496195007699344e-10 +0.0199526231496899159 2.29284661553712468e-09 2.19243636086900741e-10 +0.0201836636368167427 2.2918542891404795e-09 2.18991367767989202e-10 +0.0204173794466964396 2.29086239221507365e-09 2.187393897165895e-10 +0.0206538015581064563 2.2898709245750355e-09 2.18487701598711102e-10 +0.0208929613085415723 2.28887988603457368e-09 2.18236303080747723e-10 +0.0211348903983676617 2.28788927640797578e-09 2.1798519382947702e-10 +0.0213796208950235295 2.2868990955096134e-09 2.17734373512060101e-10 +0.0216271852372714249 2.2859093431539346e-09 2.17483841796040877e-10 +0.0218776162394967617 2.2849200191554702e-09 2.17233598349346011e-10 +0.0221309470960576286 2.28393112332882999e-09 2.16983642840284089e-10 +0.0223872113856846619 2.28294265548870484e-09 2.16733974937545445e-10 +0.0226464430759318776 2.28195461544986543e-09 2.16484594310201532e-10 +0.0229086765276790283 2.28096700302716228e-09 2.16235500627704723e-10 +0.0231739464996860989 2.27997981803552695e-09 2.15986693559887634e-10 +0.0234422881532005516 2.27899306028997043e-09 2.15738172776962763e-10 +0.0237137370566179 2.27800672960558393e-09 2.15489937949522182e-10 +0.0239883291901962677 2.27702082579753851e-09 2.15241988748536812e-10 +0.0242661009508255351 2.27603534868108502e-09 2.14994324845356317e-10 +0.0245470891568517029 2.27505029807155497e-09 2.14746945911708437e-10 +0.0248313310529571195 2.27406567378435971e-09 2.14499851619698751e-10 +0.0251188643150972377 2.27308147563498998e-09 2.14253041641809955e-10 +0.0254097270554945048 2.27209770343901636e-09 2.14006515650901681e-10 +0.0257039578276901104 2.27111435701208964e-09 2.13760273320209929e-10 +0.0260015956316542104 2.27013143616994087e-09 2.13514314323346857e-10 +0.0263026799189553309 2.26914894072837926e-09 2.13268638334299881e-10 +0.026607250597989629 2.2681668705032951e-09 2.13023245027431827e-10 +0.0269153480392707103 2.26718522531065805e-09 2.12778134077480053e-10 +0.0272270130807806959 2.26620400496651764e-09 2.12533305159556164e-10 +0.0275422870333832566 2.26522320928700194e-09 2.12288757949145652e-10 +0.0278612116862993163 2.2642428380883197e-09 2.12044492122107375e-10 +0.0281838293126461699 2.26326289118675908e-09 2.11800507354673201e-10 +0.028510182675040744 2.2622833683986872e-09 2.11556803323447459e-10 +0.0288403150312677332 2.26130426954055146e-09 2.11313379705406634e-10 +0.0291742701400133642 2.26032559442887781e-09 2.11070236177898847e-10 +0.0295120922666655752 2.25934734288027246e-09 2.10827372418643623e-10 +0.0298538261891813372 2.2583695147114202e-09 2.10584788105731088e-10 +0.0301995172040219265 2.25739210973908561e-09 2.10342482917621922e-10 +0.0305492111321569206 2.25641512778011231e-09 2.10100456533146761e-10 +0.0309029543251377152 2.25543856865142373e-09 2.09858708631505756e-10 +0.0312607936712413839 2.25446243217002268e-09 2.09617238892268137e-10 +0.031622776601685651 2.25348671815298935e-09 2.09376046995371929e-10 +0.0319889510969158589 2.25251142641748456e-09 2.09135132621123326e-10 +0.0323593656929647283 2.25153655678074938e-09 2.08894495450196492e-10 +0.0327340694878857433 2.25056210906010178e-09 2.08654135163632908e-10 +0.0331131121482610563 2.24958808307294001e-09 2.08414051442841067e-10 +0.0334965439157847364 2.24861447863674085e-09 2.0817424396959616e-10 +0.0338844156139222474 2.24764129556906013e-09 2.07934712426039483e-10 +0.0342767786546470526 2.24666853368753346e-09 2.07695456494677896e-10 +0.0346736850452552051 2.24569619280987422e-09 2.07456475858383844e-10 +0.035075187395258868 2.2447242727538748e-09 2.07217770200394483e-10 +0.0354813389233596399 2.24375277333740738e-09 2.06979339204311548e-10 +0.0358921934645026405 2.24278169437842277e-09 2.06741182554100762e-10 +0.0363078054770122824 2.24181103569494907e-09 2.06503299934091544e-10 +0.0367282300498106423 2.24084079710509506e-09 2.0626569102897645e-10 +0.0371535229097194608 2.23987097842704727e-09 2.06028355523810984e-10 +0.0375837404288466501 2.23890157947907122e-09 2.05791293104012906e-10 +0.0380189396320583795 2.23793260007951103e-09 2.05554503455361918e-10 +0.0384591782045376473 2.23696404004678896e-09 2.05317986263999432e-10 +0.0389045144994303801 2.23599589919940628e-09 2.05081741216427873e-10 +0.0393550075455800924 2.23502817735594327e-09 2.04845767999510343e-10 +0.0398107170553521003 2.23406087433505795e-09 2.04610066300470415e-10 +0.0402717034325483156 2.23309398995548774e-09 2.04374635806891431e-10 +0.0407380277804137089 2.23212752403604658e-09 2.04139476206716222e-10 +0.0412097519097354842 2.23116147639562909e-09 2.03904587188246642e-10 +0.0416869383470360316 2.23019584685320677e-09 2.03669968440143386e-10 +0.0421696503428607497 2.22923063522783098e-09 2.0343561965142511e-10 +0.0426579518801618249 2.22826584133862957e-09 2.03201540511468433e-10 +0.0431519076827791143 2.22730146500480981e-09 2.02967730710007473e-10 +0.0436515832240192206 2.22633750604565715e-09 2.02734189937133248e-10 +0.0441570447353339113 2.22537396428053435e-09 2.02500917883293293e-10 +0.0446683592150990058 2.22441083952888362e-09 2.02267914239291448e-10 +0.0451855944374949664 2.22344813161022489e-09 2.02035178696287348e-10 +0.0457088189614902676 2.22248584034415586e-09 2.01802710945795822e-10 +0.0462381021399288286 2.2215239655503524e-09 2.01570510679686844e-10 +0.0467735141287226527 2.22056250704856813e-09 2.01338577590184784e-10 +0.0473151258961509169 2.21960146465863567e-09 2.011069113698682e-10 +0.0478630092322667386 2.21864083820046457e-09 2.0087551171166945e-10 +0.0484172367584128766 2.21768062749404295e-09 2.00644378308874099e-10 +0.0489778819368476004 2.2167208323594371e-09 2.0041351085512066e-10 +0.0495450190804820403 2.21576145261678985e-09 2.00182909044400205e-10 +0.0501187233627302872 2.21480248808632341e-09 1.99952572571055849e-10 +0.050699070827473533 2.21384393858833734e-09 1.99722501129782466e-10 +0.0512861383991396191 2.21288580394320772e-09 1.99492694415626171e-10 +0.0518800038928992832 2.21192808397139045e-09 1.99263152123983933e-10 +0.0524807460249804708 2.21097077849341751e-09 1.99033873950603343e-10 +0.0530884444231020866 2.21001388732989951e-09 1.98804859591581914e-10 +0.0537031796370285655 2.20905741030152394e-09 1.98576108743366979e-10 +0.0543250331492466584 2.2081013472290569e-09 1.98347621102755047e-10 +0.0549540873857658346 2.20714569793334099e-09 1.98119396366891537e-10 +0.0555904257270437782 2.20619046223529698e-09 1.97891434233270324e-10 +0.056234132519038374 2.20523563995592259e-09 1.97663734399733392e-10 +0.0568852930843876531 2.20428123091629408e-09 1.97436296564470428e-10 +0.0575439937337192467 2.20332723493756386e-09 1.97209120426018248e-10 +0.0582103217770907413 2.20237365184096287e-09 1.969822056832607e-10 +0.0588843655355625398 2.20142048144779861e-09 1.96755552035428009e-10 +0.0595662143529047325 2.2004677235794559e-09 1.96529159182096501e-10 +0.0602559586074395068 2.19951537805739773e-09 1.96303026823188237e-10 +0.060953689724020696 2.19856344470316318e-09 1.96077154658970419e-10 +0.0616595001861520442 2.19761192333836994e-09 1.95851542390055285e-10 +0.0623734835482458033 2.19666081378471178e-09 1.95626189717399442e-10 +0.0630957344480232579 2.19571011586395981e-09 1.95401096342303653e-10 +0.0638263486190588508 2.1947598293979629e-09 1.95176261966412375e-10 +0.0645654229034695881 2.19380995420864603e-09 1.94951686291713244e-10 +0.0653130552647513268 2.19286049011801192e-09 1.94727369020536991e-10 +0.066069344800763749 2.19191143694814064e-09 1.94503309855556725e-10 +0.0668343917568656604 2.19096279452118877e-09 1.94279508499787645e-10 +0.0676082975392024305 2.19001456265938982e-09 1.94055964656586783e-10 +0.0683911647281472412 2.18906674118505423e-09 1.93832678029652408e-10 +0.0691830970918980159 2.18811932992056936e-09 1.93609648323023769e-10 +0.0699841996002317779 2.18717232868839993e-09 1.93386875241080629e-10 +0.0707945784384182708 2.18622573731108673e-09 1.93164358488542929e-10 +0.0716143410212947418 2.18527955561124791e-09 1.92942097770470322e-10 +0.0724435960075036078 2.18433378341157815e-09 1.92720092792261838e-10 +0.073282453313895074 2.18338842053484944e-09 1.92498343259655549e-10 +0.074131024130096479 2.18244346680390906e-09 1.92276848878728024e-10 +0.074989420933250367 2.18149892204168204e-09 1.92055609355894095e-10 +0.0758577575029232148 2.18055478607117035e-09 1.91834624397906398e-10 +0.0767361489361867988 2.17961105871545205e-09 1.91613893711854926e-10 +0.0776247116628741435 2.17866773979768129e-09 1.9139341700516675e-10 +0.0785235634610122052 2.17772482914108958e-09 1.91173193985605603e-10 +0.0794328234724332449 2.17678232656898452e-09 1.9095322436127144e-10 +0.0803526122185668906 2.17584023190475065e-09 1.90733507840600053e-10 +0.0812830516164151501 2.17489854497184819e-09 1.90514044132362835e-10 +0.082224264994712401 2.17395726559381386e-09 1.90294832945666164e-10 +0.0831763771102724536 2.17301639359426174e-09 1.90075873989951139e-10 +0.0841395141645249339 2.17207592879688118e-09 1.89857166974993248e-10 +0.0851138038202431391 2.17113587102543804e-09 1.89638711610901849e-10 +0.0860993752184656264 2.17019622010377511e-09 1.89420507608119914e-10 +0.0870963589956137013 2.16925697585581045e-09 1.89202554677423561e-10 +0.0881048873008071221 2.16831813810553906e-09 1.88984852529921691e-10 +0.0891250938133803378 2.16737970667703202e-09 1.88767400877055632e-10 +0.090157113760601551 2.16644168139443611e-09 1.88550199430598693e-10 +0.0912010839355969077 2.16550406208197463e-09 1.88333247902655885e-10 +0.0922571427154823265 2.16456684856394697e-09 1.88116546005663449e-10 +0.0933254300797051878 2.16363004066472779e-09 1.87900093452388554e-10 +0.0944060876285984923 2.16269363820876911e-09 1.87683889955928723e-10 +0.0954992586021498335 2.16175764102059779e-09 1.87467935229711782e-10 +0.0966050878989876544 2.16082204892481722e-09 1.87252228987495162e-10 +0.0977237220955874675 2.15988686174610646e-09 1.87036770943365721e-10 +0.0988553094657003695 2.15895207930922068e-09 1.86821560811739299e-10 +0.10000000000000657 2.15801770143899033e-09 1.8660659830736026e-10 +0.101157945425996501 2.15708372796032277e-09 1.86391883145301303e-10 +0.102329299228082149 2.15615015869819942e-09 1.86177415040962899e-10 +0.103514216667941208 2.15521699347767901e-09 1.85963193710073007e-10 +0.104712854805096872 2.15428423212389598e-09 1.8574921886868668e-10 +0.1059253725177359 2.15335187446205921e-09 1.85535490233185686e-10 +0.107151930523767744 2.15241992031745409e-09 1.85322007520278137e-10 +0.108392691402127539 2.15148836951544169e-09 1.85108770446998085e-10 +0.109647819614325778 2.15055722188145755e-09 1.84895778730705176e-10 +0.110917481526247474 2.14962647724101494e-09 1.84683032089084348e-10 +0.112201845430203798 2.14869613541970077e-09 1.84470530240145259e-10 +0.113501081567239051 2.14776619624317804e-09 1.84258272902222105e-10 +0.114815362149695913 2.1468366595371846e-09 1.84046259793973181e-10 +0.116144861384042009 2.14590752512753525e-09 1.83834490634380445e-10 +0.11748975549396079 2.1449787928401188e-09 1.83622965142749254e-10 +0.11885022274370978 2.14405046250089935e-09 1.83411683038707954e-10 +0.120226443461749322 2.14312253393591751e-09 1.83200644042207416e-10 +0.121618600064644936 2.14219500697128874e-09 1.82989847873520849e-10 +0.123026877081246391 2.14126788143320255e-09 1.82779294253243213e-10 +0.124451461177146852 2.14034115714792496e-09 1.82568982902291058e-10 +0.125892541179425166 2.13941483394179724e-09 1.82358913541901985e-10 +0.12735030810167472 2.13848891164123514e-09 1.82149085893634436e-10 +0.128824955169322047 2.13756339007272966e-09 1.81939499679367129e-10 +0.130316677845238704 2.13663826906284751e-09 1.81730154621298797e-10 +0.131825673855649583 2.1357135484382294e-09 1.81521050441947979e-10 +0.133352143216341396 2.13478922802559216e-09 1.81312186864152329e-10 +0.134896288259174463 2.13386530765172625e-09 1.81103563611068403e-10 +0.136458313658901681 2.13294178714349946e-09 1.80895180406171478e-10 +0.138038426460297819 2.13201866632785152e-09 1.80687036973254783e-10 +0.139636836105603207 2.13109594503179956e-09 1.80479133036429568e-10 +0.141253754462284997 2.13017362308243385e-09 1.8027146832012436e-10 +0.142889395851119982 2.12925170030692122e-09 1.80064042549084859e-10 +0.144543977074602564 2.12833017653250127e-09 1.79856855448373471e-10 +0.146217717445681766 2.12740905158648972e-09 1.7964990674336892e-10 +0.147910838816830814 2.12648832529627671e-09 1.79443196159765967e-10 +0.149623565609453529 2.12556799748932726e-09 1.7923672342357494e-10 +0.151356124843631146 2.12464806799318082e-09 1.79030488261121453e-10 +0.153108746168213461 2.1237285366354509e-09 1.78824490399046044e-10 +0.15488166189125871 2.12280940324382749e-09 1.7861872956430376e-10 +0.156675107010825626 2.12189066764607258e-09 1.78413205484163795e-10 +0.158489319246122196 2.12097232967002546e-09 1.78207917886209259e-10 +0.160324539069015143 2.12005438914359701e-09 1.78002866498336556e-10 +0.16218100973590413 2.11913684589477501e-09 1.77798051048755307e-10 +0.164058977319965188 2.11821969975162088e-09 1.77593471265987808e-10 +0.165958690743767456 2.11730295054226965e-09 1.77389126878868745e-10 +0.167880401812267571 2.11638659809493204e-09 1.77185017616544831e-10 +0.169824365246186132 2.11547064223789237e-09 1.76981143208474368e-10 +0.171790838715770666 2.11455508279950861e-09 1.7677750338442699e-10 +0.17378008287494956 2.11363991960821522e-09 1.76574097874483321e-10 +0.175792361395881419 2.11272515249251864e-09 1.7637092640903444e-10 +0.177827941003904588 2.11181078128100016e-09 1.76167988718781772e-10 +0.179887091512891256 2.11089680580231634e-09 1.75965284534736522e-10 +0.181970085861010961 2.10998322588519615e-09 1.75762813588219415e-10 +0.184077200146908343 2.1090700413584442e-09 1.75560575610860386e-10 +0.18620871366629968 2.10815725205093833e-09 1.75358570334598064e-10 +0.188364908948993159 2.10724485779163083e-09 1.75156797491679593e-10 +0.190546071796337979 2.10633285840954802e-09 1.74955256814660185e-10 +0.192752491319107017 2.10542125373378941e-09 1.74753948036402767e-10 +0.19498445997581812 2.10451004359352981e-09 1.74552870890077665e-10 +0.197242273611499125 2.10359922781801721e-09 1.74352025109162221e-10 +0.199526231496901879 2.10268880623657283e-09 1.74151410427440399e-10 +0.201836636368170202 2.10177877867859396e-09 1.73951026579002559e-10 +0.204173794466967207 2.10086914497354865e-09 1.73750873298244986e-10 +0.20653801558106738 2.09995990495098143e-09 1.73550950319869531e-10 +0.208929613085418575 2.09905105844050923e-09 1.73351257378883381e-10 +0.211348903983679504 2.098142605271823e-09 1.73151794210598587e-10 +0.213796208950238209 2.09723454527468775e-09 1.72952560550631812e-10 +0.216271852372717205 2.09632687827894123e-09 1.72753556134903835e-10 +0.218776162394970636 2.0954196041144957e-09 1.72554780699639373e-10 +0.221309470960579346 2.09451272261133739e-09 1.72356233981366591e-10 +0.223872113856849742 2.09360623359952496e-09 1.72157915716916889e-10 +0.226464430759321933 2.09270013690919107e-09 1.71959825643424393e-10 +0.229086765276793475 2.09179443237054201e-09 1.71761963498325744e-10 +0.231739464996864236 2.09088911981385811e-09 1.71564329019359656e-10 +0.234422881532008798 2.08998419906949207e-09 1.71366921944566639e-10 +0.237137370566182309 2.08907966996787061e-09 1.71169742012288655e-10 +0.239883291901966028 2.08817553233949369e-09 1.70972788961168658e-10 +0.242661009508258751 2.08727178601493485e-09 1.70776062530150361e-10 +0.24547089156852045 2.08636843082484087e-09 1.70579562458477895e-10 +0.248313310529574671 2.0854654665999317e-09 1.70383288485695377e-10 +0.251188643150975888 2.08456289317100054e-09 1.70187240351646646e-10 +0.254097270554948629 2.08366071036891374e-09 1.69991417796474799e-10 +0.257039578276904712 2.08275891802461132e-09 1.69795820560622063e-10 +0.260015956316545727 2.08185751596910607e-09 1.69600448384829225e-10 +0.263026799189556959 2.08095650403348398e-09 1.69405301010135426e-10 +0.266072505979899954 2.08005588204890384e-09 1.69210378177877799e-10 +0.269153480392710809 2.07915564984659847e-09 1.69015679629690978e-10 +0.272270130807810706 2.07825580725787225e-09 1.68821205107507045e-10 +0.275422870333836334 2.0773563541141044e-09 1.6862695435355491e-10 +0.278612116862996972 2.07645729024674571e-09 1.68432927110360133e-10 +0.281838293126465578 2.07555861548731976e-09 1.68239123120744533e-10 +0.285101826750411402 2.07466032966742456e-09 1.68045542127825773e-10 +0.288403150312681322 2.07376243261872969e-09 1.67852183875017211e-10 +0.291742701400137694 2.07286492417297752e-09 1.67659048106027351e-10 +0.295120922666659846 2.07196780416198443e-09 1.67466134564859612e-10 +0.29853826189181748 2.07107107241763839e-09 1.67273442995812022e-10 +0.301995172040223414 2.07017472877190053e-09 1.67080973143476745e-10 +0.30549211132157339 2.06927877305680523e-09 1.66888724752739881e-10 +0.309029543251381378 2.0683832051044588e-09 1.6669669756878105e-10 +0.3126079367124181 2.06748802474703995e-09 1.66504891337073107e-10 +0.316227766016860812 2.06659323181680141e-09 1.66313305803381728e-10 +0.31988951096916296 2.06569882614606747e-09 1.66121940713765154e-10 +0.323593656929651696 2.06480480756723521e-09 1.65930795814573775e-10 +0.327340694878861915 2.06391117591277367e-09 1.65739870852449898e-10 +0.331131121482615143 2.06301793101522592e-09 1.65549165574327308e-10 +0.334965439157851985 2.06212507270720534e-09 1.65358679727431011e-10 +0.338844156139227193 2.0612326008214002e-09 1.65168413059276814e-10 +0.342767786546475328 2.06034051519056903e-09 1.64978365317671077e-10 +0.346736850452556922 2.05944881564754402e-09 1.64788536250710342e-10 +0.350751873952593607 2.05855750202522931e-09 1.64598925606780948e-10 +0.354813389233601395 2.05766657415660182e-09 1.64409533134558827e-10 +0.358921934645031471 2.05677603187470922e-09 1.6422035858300906e-10 +0.363078054770127945 2.05588587501267318e-09 1.6403140170138552e-10 +0.367282300498111614 2.05499610340368737e-09 1.63842662239230713e-10 +0.371535229097199826 2.05410671688101657e-09 1.63654139946375209e-10 +0.375837404288471788 2.05321771527799837e-09 1.63465834572937544e-10 +0.380189396320589179 2.05232909842804314e-09 1.63277745869323618e-10 +0.384591782045381914 2.05144086616463238e-09 1.63089873586226726e-10 +0.389045144994309311 2.05055301832131918e-09 1.62902217474626808e-10 +0.393550075455806558 2.04966555473173102e-09 1.6271477728579055e-10 +0.398107170553526735 2.04877847522956491e-09 1.62527552771270637e-10 +0.402717034325488943 2.04789177964859063e-09 1.62340543682905775e-10 +0.407380277804142932 2.04700546782265035e-09 1.62153749772820128e-10 +0.412097519097360809 2.04611953958565777e-09 1.61967170793423106e-10 +0.416869383470366395 2.04523399477159857e-09 1.61780806497408953e-10 +0.421696503428613645 2.0443488332145304e-09 1.61594656637756621e-10 +0.426579518801624424 2.04346405474858245e-09 1.61408720967729067e-10 +0.431519076827797388 2.04257965920795546e-09 1.61222999240873359e-10 +0.43651583224019852 2.04169564642692298e-09 1.61037491211019978e-10 +0.441570447353345441 2.04081201623982885e-09 1.60852196632282818e-10 +0.446683592150996456 2.03992876848109012e-09 1.60667115259058513e-10 +0.451855944374956131 2.03904590298519458e-09 1.60482246846026464e-10 +0.457088189614909213 2.03816341958670113e-09 1.60297591148148219e-10 +0.462381021399294934 2.03728131812024189e-09 1.60113147920667342e-10 +0.467735141287233258 2.03639959842051847e-09 1.59928916919109025e-10 +0.473151258961515997 2.0355182603223065e-09 1.59744897899279728e-10 +0.478630092322674283 2.03463730366045069e-09 1.59561090617266897e-10 +0.484172367584135732 2.03375672826986854e-09 1.59377494829438645e-10 +0.489778819368483054 2.03287653398554951e-09 1.59194110292443401e-10 +0.49545019080482755 2.03199672064255295e-09 1.59010936763209591e-10 +0.501187233627310103 2.03111728807601061e-09 1.5882797399894536e-10 +0.506990708274742685 2.03023823612112535e-09 1.58645221757138206e-10 +0.512861383991403685 2.0293595646131712e-09 1.58462679795554619e-10 +0.518800038929000396 2.02848127338749453e-09 1.58280347872239902e-10 +0.524807460249812396 2.02760336227951081e-09 1.58098225745517677e-10 +0.530884444231028652 2.02672583112470913e-09 1.57916313173989681e-10 +0.537031796370293524 2.02584867975864762e-09 1.57734609916535427e-10 +0.543250331492474481 2.02497190801695765e-09 1.57553115732311846e-10 +0.549540873857666368 2.02409551573534004e-09 1.57371830380752947e-10 +0.555904257270445901 2.02321950274956719e-09 1.57190753621569637e-10 +0.562341325190391927 2.02234386889548386e-09 1.57009885214749232e-10 +0.568852930843884885 2.0214686140090039e-09 1.56829224920555275e-10 +0.575439937337200891 2.0205937379261131e-09 1.56648772499527094e-10 +0.582103217770915893 2.01971924048286798e-09 1.56468527712479574e-10 +0.588843655355633988 2.01884512151539704e-09 1.56288490320502817e-10 +0.595662143529055998 2.01797138085989825e-09 1.56108660084961808e-10 +0.602559586074403852 2.01709801835264113e-09 1.55929036767496181e-10 +0.609536897240215869 2.01622503382996635e-09 1.55749620130019679e-10 +0.61659500186152949 2.01535242712828445e-09 1.55570409934720176e-10 +0.623734835482467109 2.01448019808407798e-09 1.55391405944059084e-10 +0.630957344480241655 2.01360834653389975e-09 1.55212607920771096e-10 +0.638263486190597695 2.0127368723143725e-09 1.55034015627864029e-10 +0.645654229034705152 2.01186577526219133e-09 1.54855628828618283e-10 +0.653130552647522622 2.01099505521412044e-09 1.54677447286586658e-10 +0.660693448007646844 2.01012471200699595e-09 1.5449947076559407e-10 +0.668343917568666068 2.00925474547772349e-09 1.54321699029737138e-10 +0.67608297539203388 2.00838515546327983e-09 1.54144131843383928e-10 +0.683911647281482127 2.00751594180071245e-09 1.5396676897117361e-10 +0.691830970918989929 2.00664710432713915e-09 1.53789610178016209e-10 +0.69984199600232766 2.00577864287974805e-09 1.53612655229092234e-10 +0.707945784384192756 2.00491055729579796e-09 1.53435903889852348e-10 +0.716143410212957576 2.00404284741261846e-09 1.53259355926017185e-10 +0.724435960075046292 2.00317551306760857e-09 1.53083011103576858e-10 +0.73282453313896101 2.00230855409823805e-09 1.52906869188790753e-10 +0.741310241300975115 2.00144197034204824e-09 1.52730929948187273e-10 +0.749894209332514161 2.00057576163664908e-09 1.52555193148563343e-10 +0.758577575029242834 1.99970992781972128e-09 1.52379658556984357e-10 +0.767361489361878757 1.99884446872901626e-09 1.52204325940783592e-10 +0.776247116628752343 1.99797938420235574e-09 1.52029195067562172e-10 +0.785235634610133126 1.99711467407763053e-09 1.51854265705188505e-10 +0.794328234724343551 1.99625033819280296e-09 1.51679537621798178e-10 +0.803526122185680092 1.99538637638590488e-09 1.51505010585793545e-10 +0.812830516164162908 1.9945227884950376e-09 1.51330684365843415e-10 +0.822242649947135584 1.99365957435837356e-09 1.51156558730882845e-10 +0.831763771102736249 1.99279673381415513e-09 1.5098263345011265e-10 +0.841395141645261191 1.99193426670069372e-09 1.50808908292999325e-10 +0.851138038202443381 1.99107217285637189e-09 1.50635383029274555e-10 +0.860993752184668448 1.99021045211964126e-09 1.50462057428935032e-10 +0.870963589956149309 1.98934910432902418e-09 1.50288931262241989e-10 +0.881048873008083655 1.98848812932311208e-09 1.50116004299721154e-10 +0.891250938133815951 1.98762752694056626e-09 1.49943276312162149e-10 +0.901571137606028139 1.98676729702011919e-09 1.49770747070618466e-10 +0.912010839355981928 1.98590743940057157e-09 1.49598416346406951e-10 +0.922571427154836199 1.98504795392079397e-09 1.49426283911107522e-10 +0.933254300797064951 1.98418884041972814e-09 1.49254349536563084e-10 +0.944060876285998218 1.98333009873638364e-09 1.49082612994878944e-10 +0.954992586021511713 1.98247172870984075e-09 1.48911074058422674e-10 +0.966050878989890061 1.98161373017925005e-09 1.48739732499823751e-10 +0.977237220955888275 1.98075610298382999e-09 1.48568588091973278e-10 +0.98855309465701735 1.97989884696287052e-09 1.48397640608023666e-10 +1.00000000000007949 1.97904196195572904e-09 1.48226889821388379e-10 +1.01157945425997897 1.97818544780183449e-09 1.48056335505741549e-10 +1.02329299228083559 1.97732930434068405e-09 1.47885977435017738e-10 +1.03514216667942627 1.97647353141184522e-09 1.4771581538341171e-10 +1.0471285480509831 1.97561812885495372e-09 1.47545849125377909e-10 +1.05925372517737348 1.97476309650971603e-09 1.47376078435630337e-10 +1.07151930523769212 1.97390843421590724e-09 1.47206503089142339e-10 +1.08392691402129038 1.97305414181337156e-09 1.47037122861146015e-10 +1.09647819614327302 1.97220021914202348e-09 1.46867937527132191e-10 +1.10917481526249007 1.97134666604184572e-09 1.46698946862850004e-10 +1.12201845430205349 1.97049348235289093e-09 1.46530150644306572e-10 +1.13501081567240614 1.96964066791528081e-09 1.46361548647766806e-10 +1.14815362149697497 1.96878822256920614e-09 1.46193140649753025e-10 +1.16144861384043607 1.96793614615492676e-09 1.46024926427044674e-10 +1.17489755493962411 1.96708443851277199e-09 1.45856905756678087e-10 +1.1885022274371142 1.96623309948314064e-09 1.4568907841594613e-10 +1.20226443461750976 1.96538212890649894e-09 1.45521444182397886e-10 +1.21618600064646598 1.96453152662338384e-09 1.45354002833838425e-10 +1.23026877081248065 1.96368129247440094e-09 1.45186754148328494e-10 +1.24451461177148537 1.9628314263002245e-09 1.45019697904184181e-10 +1.25892541179426876 1.96198192794159744e-09 1.44852833879976704e-10 +1.27350308101676446 1.96113279723933257e-09 1.44686161854531954e-10 +1.28824955169323796 1.96028403403431054e-09 1.44519681606930461e-10 +1.30316677845240458 1.95943563816748188e-09 1.4435339291650683e-10 +1.3182567385565136 1.95858760947986496e-09 1.44187295562849611e-10 +1.33352143216343189 1.95773994781254805e-09 1.44021389325800986e-10 +1.34896288259176278 1.95689265300668683e-09 1.43855673985456412e-10 +1.36458313658903507 1.95604572490350686e-09 1.4369014932216441e-10 +1.38038426460299668 1.95519916334430239e-09 1.43524815116526283e-10 +1.39636836105605089 1.95435296817043507e-09 1.4335967114939565e-10 +1.41253754462286896 1.95350713922333726e-09 1.43194717201878418e-10 +1.42889395851121903 1.95266167634450834e-09 1.43029953055332297e-10 +1.44543977074604513 1.95181657937551633e-09 1.42865378491366585e-10 +1.46217717445683726 1.95097184815799875e-09 1.42700993291841838e-10 +1.47910838816832801 1.95012748253366136e-09 1.42536797238869688e-10 +1.49623565609455556 1.94928348234427732e-09 1.42372790114812349e-10 +1.51356124843633189 1.94843984743169012e-09 1.42208971702282595e-10 +1.53108746168215548 1.94759657763781065e-09 1.42045341784143293e-10 +1.54881661891260825 1.94675367280461846e-09 1.41881900143507038e-10 +1.56675107010827763 1.94591113277416052e-09 1.41718646563736134e-10 +1.58489319246124349 1.94506895738855369e-09 1.41555580828442122e-10 +1.60324539069017313 1.94422714648998226e-09 1.41392702721485424e-10 +1.62181009735906323 1.94338569992069956e-09 1.4123001202697531e-10 +1.64058977319967414 1.94254461752302596e-09 1.41067508529269311e-10 +1.65958690743769721 1.94170389913935086e-09 1.4090519201297324e-10 +1.67880401812269864 1.94086354461213235e-09 1.40743062262940574e-10 +1.69824365246188447 1.94002355378389592e-09 1.40581119064272503e-10 +1.71790838715773009 1.93918392649723488e-09 1.4041936220231739e-10 +1.73780082874951924 1.93834466259481205e-09 1.40257791462670641e-10 +1.75792361395883812 1.93750576191935721e-09 1.40096406631174291e-10 +1.7782794100390702 1.93666722431366802e-09 1.39935207493916875e-10 +1.79887091512893704 1.93582904962061158e-09 1.39774193837232986e-10 +1.81970085861013442 1.93499123768312159e-09 1.39613365447703125e-10 +1.84077200146910869 1.93415378834420001e-09 1.39452722112153285e-10 +1.86208713666302228 1.93331670144691744e-09 1.39292263617654845e-10 +1.88364908948995735 1.93247997683441189e-09 1.39131989751524134e-10 +1.90546071796340599 1.93164361434988881e-09 1.38971900301322172e-10 +1.92752491319109676 1.93080761383662227e-09 1.38811995054854435e-10 +1.94984459975820812 1.9299719751379542e-09 1.38652273800170627e-10 +1.97242273611501862 1.92913669809729351e-09 1.38492736325564234e-10 +1.99526231496904649 1.92830178255811779e-09 1.38333382419572376e-10 +2.01836636368172995 1.92746722836397202e-09 1.38174211870975464e-10 +2.0417379446697006 1.9266330353584682e-09 1.38015224468797027e-10 +2.06538015581070278 1.92579920338528739e-09 1.37856420002303237e-10 +2.08929613085421506 1.92496573228817723e-09 1.37697798261002815e-10 +2.11348903983682446 1.92413262191095321e-09 1.37539359034646663e-10 +2.13796208950241207 1.92329987209749905e-09 1.37381102113227582e-10 +2.16271852372720241 1.92246748269176506e-09 1.3722302728698004e-10 +2.18776162394973683 1.92163545353776937e-09 1.37065134346379859e-10 +2.21309470960582422 1.92080378447959838e-09 1.3690742308214396e-10 +2.23872113856852861 1.91997247536140503e-09 1.3674989328523005e-10 +2.26464430759325097 1.91914152602741015e-09 1.36592544746836339e-10 +2.29086765276796678 1.91831093632190193e-09 1.36435377258401358e-10 +2.31739464996867461 1.917480706089236e-09 1.36278390611603601e-10 +2.34422881532012051 1.916650835173835e-09 1.36121584598361182e-10 +2.37137370566185623 1.91582132342018937e-09 1.35964959010831738e-10 +2.39883291901969375 1.9149921706728566e-09 1.35808513641412037e-10 +2.42661009508262149 1.91416337677646154e-09 1.35652248282737672e-10 +2.45470891568523886 1.91333494157569607e-09 1.35496162727682874e-10 +2.48313310529578146 1.91250686491531991e-09 1.3534025676936021e-10 +2.51188643150979374 1.91167914664015934e-09 1.3518453020112029e-10 +2.54097270554952148 1.91085178659510807e-09 1.35028982816551463e-10 +2.57039578276908287 1.9100247846251264e-09 1.34873614409479581e-10 +2.6001595631654939 1.90919814057524287e-09 1.34718424773967821e-10 +2.63026799189560645 1.9083718542905522e-09 1.34563413704316243e-10 +2.66072505979903706 1.90754592561621568e-09 1.34408580995061557e-10 +2.69153480392714606 1.90672035439746328e-09 1.34253926440976944e-10 +2.72270130807814548 1.90589514047959029e-09 1.34099449837071747e-10 +2.75422870333840253 1.90507028370796027e-09 1.33945150978591079e-10 +2.78612116863000958 1.90424578392800252e-09 1.33791029661015747e-10 +2.81838293126469619 1.90342164098521377e-09 1.33637085680061843e-10 +2.85101826750415466 1.90259785472515775e-09 1.33483318831680556e-10 +2.88403150312685419 1.90177442499346559e-09 1.33329728912057736e-10 +2.91742701400141824 1.90095135163583336e-09 1.33176315717613895e-10 +2.9512092266666401 1.90012863449802581e-09 1.33023079045003715e-10 +2.9853826189182171 1.89930627342587383e-09 1.32870018691115916e-10 +3.01995172040227677 1.8984842682652745e-09 1.32717134453072795e-10 +3.05492111321577697 1.89766261886219273e-09 1.32564426128230199e-10 +3.09029543251385741 1.89684132506265836e-09 1.32411893514177109e-10 +3.12607936712422507 1.89602038671276989e-09 1.3225953640873541e-10 +3.16227766016865264 1.89519980365869075e-09 1.32107354609959631e-10 +3.19889510969167468 1.8943795757466522e-09 1.31955347916136635e-10 +3.23593656929656293 1.89355970282295126e-09 1.31803516125785414e-10 +3.27340694878866545 1.89274018473395154e-09 1.31651859037656751e-10 +3.31131121482619806 1.89192102132608324e-09 1.31500376450733038e-10 +3.34965439157856704 1.89110221244584355e-09 1.31349068164227918e-10 +3.38844156139231956 1.89028375793979503e-09 1.31197933977586126e-10 +3.42767786546480124 1.88946565765456804e-09 1.31046973690483103e-10 +3.46736850452561773 1.8886479114368583e-09 1.30896187102824816e-10 +3.50751873952598503 1.88783051913342731e-09 1.30745574014747446e-10 +3.54813389233606324 1.88701348059110479e-09 1.30595134226617208e-10 +3.58921934645036478 1.88619679565678456e-09 1.30444867539029909e-10 +3.63078054770132974 1.88538046417742912e-09 1.30294773752810903e-10 +3.67282300498116676 1.88456448600006465e-09 1.3014485266901467e-10 +3.71535229097204933 1.88374886097178556e-09 1.2999510408892456e-10 +3.75837404288476984 1.8829335889397508e-09 1.29845527814052693e-10 +3.80189396320594408 1.88211866975118715e-09 1.29696123646139488e-10 +3.84591782045387198 1.88130410325338631e-09 1.29546891387153513e-10 +3.8904514499431464 1.88048988929370657e-09 1.29397830839291146e-10 +3.93550075455811932 1.87967602771957199e-09 1.29248941804976444e-10 +3.9810717055353213 1.8788625183784728e-09 1.29100224086860736e-10 +4.02717034325494438 1.8780493611179654e-09 1.28951677487822461e-10 +4.07380277804148516 1.87723655578567195e-09 1.28803301810966887e-10 +4.12097519097366405 1.87642410222928079e-09 1.28655096859625801e-10 +4.16869383470372057 1.8756120002965452e-09 1.28507062437357248e-10 +4.21696503428619351 1.87480024983528668e-09 1.28359198347945433e-10 +4.26579518801630186 1.87398885069338963e-09 1.2821150439540017e-10 +4.31519076827803172 1.87317780271880625e-09 1.28063980383956915e-10 +4.36515832240204382 1.87236710575955409e-09 1.27916626118076323e-10 +4.41570447353351359 1.87155675966371648e-09 1.27769441402444043e-10 +4.4668359215100244 1.87074676427944249e-09 1.27622426041970458e-10 +4.51855944374962171 1.86993711945494655e-09 1.27475579841790402e-10 +4.57088189614915308 1.86912782503850925e-09 1.27328902607263002e-10 +4.62381021399301062 1.86831888087847655e-09 1.2718239414397127e-10 +4.67735141287239475 1.86751028682326016e-09 1.27036054257721993e-10 +4.73151258961522281 1.86670204272133795e-09 1.26889882754545273e-10 +4.78630092322680678 1.86589414842125232e-09 1.26743879440694575e-10 +4.84172367584142194 1.86508660377161145e-09 1.26598044122646137e-10 +4.89778819368489593 1.86427940862108967e-09 1.26452376607098963e-10 +4.9545019080483419 1.86347256281842666e-09 1.26306876700974468e-10 +5.01187233627316786 1.86266606621242704e-09 1.26161544211416191e-10 +5.06990708274749391 1.8618599186519612e-09 1.26016378945789586e-10 +5.12861383991410413 1.86105411998596507e-09 1.25871380711681819e-10 +5.18800038929007279 1.86024867006343951e-09 1.25726549316901326e-10 +5.24807460249819346 1.85944356873345136e-09 1.2558188456947784e-10 +5.3088444423103569 1.8586388158451324e-09 1.25437386277661847e-10 +5.37031796370300629 1.85783441124767972e-09 1.25293054249924563e-10 +5.43250331492481742 1.8570303547903556e-09 1.25148888294957491e-10 +5.49540873857673695 1.85622664632248763e-09 1.2500488822167237e-10 +5.55904257270453339 1.85542328569346877e-09 1.24861053839200713e-10 +5.62341325190399477 1.8546202727527569e-09 1.24717384956893673e-10 +5.68852930843892501 1.85381760734987546e-09 1.24573881384321787e-10 +5.7543993733720864 1.85301528933441262e-09 1.24430542931274772e-10 +5.82103217770923731 1.85221331855602168e-09 1.24287369407761053e-10 +5.88843655355641893 1.85141169486442129e-09 1.24144360624007794e-10 +5.95662143529064014 1.85061041810939464e-09 1.24001516390460457e-10 +6.02559586074411957 1.84980948814079065e-09 1.23858836517782648e-10 +6.09536897240224018 1.84900890480852236e-09 1.23716320816855779e-10 +6.16595001861537728 1.84820866796256858e-09 1.23573969098778939e-10 +6.23734835482475525 1.84740877745297283e-09 1.23431781174868484e-10 +6.30957344480250182 1.84660923312984297e-09 1.23289756856657978e-10 +6.38263486190606333 1.84581003484335216e-09 1.23147895955897738e-10 +6.456542290347139 1.84501118244373876e-09 1.23006198284554744e-10 +6.53130552647531459 1.8442126757813056e-09 1.22864663654812316e-10 +6.60693448007655881 1.84341451470641964e-09 1.22723291879069921e-10 +6.68343917568675217 1.84261669906951422e-09 1.22582082769942795e-10 +6.76082975392043117 1.84181922872108555e-09 1.22441036140261911e-10 +6.83911647281491408 1.84102210351169599e-09 1.22300151803073439e-10 +6.91830970918999366 1.84022532329197184e-09 1.22159429571638848e-10 +6.99841996002337119 1.83942888791260429e-09 1.22018869259434338e-10 +7.07945784384202348 1.83863279722434867e-09 1.21878470680150763e-10 +7.16143410212967257 1.83783705107802605e-09 1.21738233647693398e-10 +7.24435960075056062 1.8370416493245208e-09 1.21598157976181601e-10 +7.32824533138970935 1.83624659181478241e-09 1.21458243479948635e-10 +7.41310241300985151 1.8354518783998249e-09 1.21318489973541305e-10 +7.49894209332524309 1.8346575089307266e-09 1.21178897271719957e-10 +7.58577575029253115 1.83386348325863057e-09 1.21039465189457962e-10 +7.67361489361889149 1.83306980123474418e-09 1.2090019354194164e-10 +7.76247116628762779 1.83227646271033891e-09 1.20761082144569945e-10 +7.85235634610143673 1.83148346753675076e-09 1.20622130812954212e-10 +7.94328234724354232 1.83069081556538025e-09 1.20483339362918025e-10 +8.03526122185690816 1.8298985066476922e-09 1.20344707610496804e-10 +8.12830516164173744 1.82910654063521556e-09 1.20206235371937674e-10 +8.22242649947146553 1.82831491737954317e-09 1.20067922463699183e-10 +8.31763771102747285 1.82752363673233321e-09 1.19929768702451071e-10 +8.41395141645272382 1.82673269854530714e-09 1.19791773905074056e-10 +8.51138038202454794 1.82594210267025053e-09 1.1965393788865948e-10 +8.60993752184679906 1.82515184895901349e-09 1.19516260470509254e-10 +8.70963589956160789 1.82436193726351061e-09 1.19378741468135419e-10 +8.81048873008095157 1.82357236743571937e-09 1.19241380699259989e-10 +8.91250938133827653 1.82278313932768261e-09 1.19104177981814799e-10 +9.01571137606040018 1.82199425279150662e-09 1.18967133133941088e-10 +9.12010839355993852 1.82120570767936121e-09 1.18830245973989349e-10 +9.22571427154848323 1.82041750384348131e-09 1.18693516320519194e-10 +9.33254300797077185 1.81962964113616494e-09 1.18556943992298893e-10 +9.44060876286010497 1.81884211940977399e-09 1.18420528808305266e-10 +9.54992586021524126 1.81805493851673491e-09 1.18284270587723484e-10 +9.66050878989902628 1.8172680983095376e-09 1.18148169149946697e-10 +9.77237220955901087 1.81648159864073588e-09 1.18012224314575888e-10 +9.88553094657030407 1.81569543936294706e-09 1.17876435901419634e-10 +10.0000000000009273 1.81490962032885274e-09 1.17740803730493826e-10 diff --git a/class/external_Pk/README.md b/class/external_Pk/README.md new file mode 100644 index 00000000..e8f11d3e --- /dev/null +++ b/class/external_Pk/README.md @@ -0,0 +1,101 @@ +The `external_Pk` mode +====================== + +* Author: Jesus Torrado (torradocacho [@] lorentz.leidenuniv.nl) +* Date: 2013-12-20 + + +Introduction +------------ + +This mode allows for an arbitrary primordial spectrum `P(k)` to be calculated by an external command and passed to CLASS. That external command may be anything that can be run in the shell: a python script, some compiled C or Fortran code... This command is executed from within CLASS, and CLASS is able to pass it a number of parameters defining the spectrum (an amplitude, a tilt...). Those parameters can be used in a Markov chain search performed by MontePython. + +This mode includes the simple case of a precomputed primordial spectrum stored in a text file. In that case, the `cat` shell command will do the trick (see below). + +Currently, scalar and tensor spectra of perturbations of adiabatic modes are supported. + + +Use case #1: reading the spectrum from a table +---------------------------------------------- + +In this case, say the file with the table is called `spectrum.txt`, located under `/path/to`, simply include in the `.ini` file + + command = cat path/to/spectrum.txt + +It is necessary that 1st 4 characters are exactly `cat `. + + +Use case #2: getting the spectrum from an external command +---------------------------------------------------------- + +Here an external command is called to generate the spectrum; it may be some compiled C or Fortran code, a python script... This command may be passed up to 10 floating point arguments, named `custom1` to `custom10`, which are assigned values inside the `.ini` file of CLASS. The `command` parameter would look like + + command = /path/to/example.py + +if it starts with `#/usr/bin/python`, otherwise + + command = python /path/to/example.py + +As an example of the 1st use case, one may use the included script `generate_Pk_example.py`, which implements a single-field slow-roll spectrum without running, and takes 3 arguments: +* `custom1` -- the pivot scale (`k_0 = 0.05 1/Mpc` for Planck). +* `custom2` -- the amplitude of the scalar power spectrum. +* `custom3` -- the scalar spectral index. + +In order to use it, the following lines must be present in the parameter file: + + P_k_ini type = external_Pk + command = /path/to/CLASS/external_Pk/generate_Pk_example.py + custom1 = 0.05 + custom2 = 2.2e-9 + custom3 = 1. + +Defined or not (in that case, 0-valued), parameters from `custom4` to `custom10` will be passed to the example script, which should ignore them. In this case, CLASS will run in the shell the command + + /path/to/CLASS/external_Pk/generate_Pk_example.py 0.05 2.2e-9 1. 0 0 0 0 0 0 0 + +If CLASS fails to run the command, try to do it directly yourself by hand, using exactly the same string that was given in `command`. + + +Output of the command / format of the table +------------------------------------------- + +The command must generate an output separated into lines, each containing a tuple (`k`, `P(k)`). The following requirements must be fulfilled: + +* Each line must contain 2 (3, if tensors) floating point numbers: `k` (in `1/Mpc` units) and `P_s(k)` (and `P_t(k)`, if tensors), separated by any number of spaces or tabs. The numbers can be in scientific notation, e.g. `1.4e-3`. + +* The lines must be sorted in increasing values of `k`. + +* There must be at least two points `(k, P(k))` before and after the interval of `k` requested by CLASS, in order not to introduce unnecessary interpolation error. Otherwise, an error will be raised. In most of the cases, generating the spectrum between `1e-6` and `1 1/Mpc` should be more than enough. + + +Precision +--------- + +This implementation properly handles double-precision floating point numbers (i.e. about 17 significant figures), both for the input parameters of the command and for the output of the command (or the table). + +The sampling of `k` given by the command (or table) is preserved to be used internally by CLASS. It must be fine enough a sampling to clearly show the features of the spectrum. The best way to test this is to plot the output/table and check it with the naked eye. + +Another thing to have in mind arises at the time of convolving with the transfer functions. Two precision parameters are implied: the sampling of `k` in the integral, given by `k_step_trans`, and the sampling of the transfer functions in `l`, given by `l_logstep` and `l_linstep`. In general, it will be enough to reduce the values of the first and the third parameters. A good start is to give them rather small values, say `k_step_trans=0.01` and `l_linstep=1`, and to increase them slowly until the point at which the effect of increasing them gets noticeable. + + +Parameter fit with MontePython +------------------------------ + +(MontePython)[http://montepython.net/] is able to interact with the `external_Pk` mode transparently, using the `custom` parameters in an MCMC fit. One must just add the appropriate lines to the input file of MontePython. For our example, if we wanted to fit the amplitude and spectral index of the primordial spectrum, it would be: + + data.cosmo_arguments['P_k_ini type'] = 'external_Pk' + data.cosmo_arguments['command'] = '/path/to/CLASS/external_Pk/generate_Pk_example.py' + data.cosmo_arguments['custom1'] = 0.05 # k_pivot + data.parameters['custom2'] = [ 2.2, 0, -1, 0.055, 1.e-9, 'cosmo'] # A_s + data.parameters['custom3'] = [ 1., 0, -1, 0.0074, 1, 'cosmo'] # n_s + +Notice that since in our case `custom1` represents the pivot scale, it is passed as a (non-varying) argument, instead of as a (varying) parameter. + +In this case, one would not include the corresponding lines for the primordial parameters of CLASS: `k_pivot`, `A_s`, `n_s`, `alpha_s`, etc. They would simply be ignored. + + +Limitations +----------- + +* So far, this mode cannot handle vector perturbations, nor isocurvature initial conditions. +* The external script knows nothing about the rest of the CLASS parameters, so if it needs, e.g., `k_pivot`, it should be either hard coded, or its value passed as one of the `custom` parameters. diff --git a/class/external_Pk/generate_Pk_example.py b/class/external_Pk/generate_Pk_example.py new file mode 100755 index 00000000..6f876af2 --- /dev/null +++ b/class/external_Pk/generate_Pk_example.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +from __future__ import print_function +import sys +from math import exp + +# README: +# +# This is an example python script for the external_Pk mode of Class. +# It generates the primordial spectrum of LambdaCDM. +# It can be edited and used directly, though keeping a copy of it is recommended. +# +# Two (maybe three) things need to be edited: +# +# 1. The name of the parameters needed for the calculation of Pk. +# "sys.argv[1]" corresponds to "custom1" in Class, an so on + +try : + k_0 = float(sys.argv[1]) + A = float(sys.argv[2]) + n_s = float(sys.argv[3]) + +# Error control, no need to touch +except IndexError : + raise IndexError("It seems you are calling this script with too few arguments.") +except ValueError : + raise ValueError("It seems some of the arguments are not correctly formatted. "+ + "Remember that they must be floating point numbers.") + +# 2. The function giving P(k), including the necessary import statements. +# Inside this function, you can use the parameters named in the previous step. + +def P(k) : + return A * (k/k_0)**(n_s-1.) + +# 3. Limits for k and precision: +# Check that the boundaries are correct for your case. +# It is safer to set k_per_decade primordial slightly bigger than that of Class. + +k_min = 1.e-6 +k_max = 10. +k_per_decade_primordial = 200. + +# +# And nothing should need to be edited from here on. +# + +# Filling the array of k's +ks = [float(k_min)] +while ks[-1] <= float(k_max) : + ks.append(ks[-1]*10.**(1./float(k_per_decade_primordial))) + +# Filling the array of Pk's +for k in ks : + P_k = P(k) + print("%.18g %.18g" % (k, P_k)) + diff --git a/class/external_Pk/generate_Pk_example_w_tensors.py b/class/external_Pk/generate_Pk_example_w_tensors.py new file mode 100755 index 00000000..3722d289 --- /dev/null +++ b/class/external_Pk/generate_Pk_example_w_tensors.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +from __future__ import print_function +import sys +from math import exp + +# README: +# +# This is an example python script for the external_Pk mode of Class. +# It generates the primordial spectrum of LambdaCDM. +# It can be edited and used directly, though keeping a copy of it is recommended. +# +# Two (maybe three) things need to be edited: +# +# 1. The name of the parameters needed for the calculation of Pk. +# "sys.argv[1]" corresponds to "custom1" in Class, an so on + +try : + k_0 = float(sys.argv[1]) + A_s = float(sys.argv[2]) + n_s = float(sys.argv[3]) + A_t = float(sys.argv[4]) + n_t = float(sys.argv[5]) + +# Error control, no need to touch +except IndexError : + raise IndexError("It seems you are calling this script with too few arguments.") +except ValueError : + raise ValueError("It seems some of the arguments are not correctly formatted. "+ + "Remember that they must be floating point numbers.") + +# 2. The function giving P(k), including the necessary import statements. +# Inside this function, you can use the parameters named in the previous step. + +def P_s(k) : + return A_s * (k/k_0)**(n_s-1.) + +def P_t(k) : + return A_t * (k/k_0)**(n_t) + +# 3. Limits for k and precision: +# Check that the boundaries are correct for your case. +# It is safer to set k_per_decade primordial slightly bigger than that of Class. + +k_min = 1.e-6 +k_max = 10. +k_per_decade_primordial = 200. + +# +# And nothing should need to be edited from here on. +# + +# Filling the array of k's +ks = [float(k_min)] +while ks[-1] <= float(k_max) : + ks.append(ks[-1]*10.**(1./float(k_per_decade_primordial))) + +# Filling the array of Pk's +for k in ks : + print("%.18g %.18g %.18g" % (k, P_s(k), P_t(k))) + diff --git a/class/hyrec/Alpha_inf.dat b/class/hyrec/Alpha_inf.dat new file mode 100644 index 00000000..3fae8b09 --- /dev/null +++ b/class/hyrec/Alpha_inf.dat @@ -0,0 +1,4000 @@ + 6.0915545e-12 5.5735114e-11 + 5.4363309e-12 4.7677140e-11 + 4.9520194e-12 4.1925958e-11 + 4.5754201e-12 3.7588861e-11 + 4.2718516e-12 3.4186367e-11 + 4.0204787e-12 3.1436457e-11 + 3.8079302e-12 2.9161701e-11 + 3.6251808e-12 2.7244566e-11 + 3.4658896e-12 2.5603878e-11 + 3.3254542e-12 2.4181682e-11 + 3.2004429e-12 2.2935428e-11 + 3.0882372e-12 2.1833107e-11 + 2.9868004e-12 2.0850160e-11 + 2.8945211e-12 1.9967416e-11 + 2.8101057e-12 1.9169664e-11 + 2.7325022e-12 1.8444685e-11 + 2.6608452e-12 1.7782520e-11 + 2.5944154e-12 1.7174995e-11 + 2.5326095e-12 1.6615326e-11 + 2.4749172e-12 1.6097812e-11 + 2.4209036e-12 1.5617655e-11 + 2.3701952e-12 1.5170759e-11 + 2.3224698e-12 1.4753633e-11 + 2.2774470e-12 1.4363249e-11 + 2.2348823e-12 1.3997002e-11 + 2.1945607e-12 1.3652613e-11 + 2.1562926e-12 1.3328083e-11 + 2.1199104e-12 1.3021664e-11 + 2.0852645e-12 1.2731804e-11 + 2.0522218e-12 1.2457129e-11 + 2.0206627e-12 1.2196419e-11 + 1.9904798e-12 1.1948582e-11 + 1.9615764e-12 1.1712638e-11 + 1.9338648e-12 1.1487708e-11 + 1.9072656e-12 1.1272996e-11 + 1.8817066e-12 1.1067788e-11 + 1.8571219e-12 1.0871435e-11 + 1.8334514e-12 1.0683342e-11 + 1.8106399e-12 1.0502974e-11 + 1.7886370e-12 1.0329839e-11 + 5.9611031e-12 5.4202236e-11 + 5.3193387e-12 4.6363395e-11 + 4.8449393e-12 4.0767469e-11 + 4.4760502e-12 3.6547009e-11 + 4.1787080e-12 3.3235847e-11 + 3.9325031e-12 3.0559705e-11 + 3.7243361e-12 2.8345971e-11 + 3.5453644e-12 2.6480297e-11 + 3.3893754e-12 2.4883679e-11 + 3.2518594e-12 2.3499732e-11 + 3.1294537e-12 2.2287024e-11 + 3.0195926e-12 2.1214420e-11 + 2.9202802e-12 2.0258002e-11 + 2.8299378e-12 1.9399116e-11 + 2.7472978e-12 1.8622950e-11 + 2.6713296e-12 1.7917608e-11 + 2.6011852e-12 1.7273411e-11 + 2.5361602e-12 1.6682393e-11 + 2.4756635e-12 1.6137941e-11 + 2.4191952e-12 1.5634517e-11 + 2.3663293e-12 1.5167450e-11 + 2.3167000e-12 1.4732759e-11 + 2.2699916e-12 1.4327029e-11 + 2.2259296e-12 1.3947327e-11 + 2.1842744e-12 1.3591112e-11 + 2.1448154e-12 1.3256165e-11 + 2.1073672e-12 1.2940544e-11 + 2.0717651e-12 1.2642544e-11 + 2.0378630e-12 1.2360658e-11 + 2.0055304e-12 1.2093547e-11 + 1.9746502e-12 1.1840022e-11 + 1.9451172e-12 1.1599022e-11 + 1.9168367e-12 1.1369591e-11 + 1.8897229e-12 1.1150878e-11 + 1.8636979e-12 1.0942105e-11 + 1.8386911e-12 1.0742579e-11 + 1.8146380e-12 1.0551667e-11 + 1.7914797e-12 1.0368791e-11 + 1.7691622e-12 1.0193430e-11 + 1.7476361e-12 1.0025106e-11 + 5.8337663e-12 5.2714403e-11 + 5.2051141e-12 4.5087571e-11 + 4.7403792e-12 3.9642049e-11 + 4.3790108e-12 3.5534684e-11 + 4.0877431e-12 3.2312148e-11 + 3.8465812e-12 2.9707614e-11 + 3.6426904e-12 2.7553138e-11 + 3.4674063e-12 2.5737442e-11 + 3.3146408e-12 2.4183649e-11 + 3.1799750e-12 2.2836866e-11 + 3.0601133e-12 2.1656772e-11 + 2.9525412e-12 2.0613043e-11 + 2.8553031e-12 1.9682418e-11 + 2.7668517e-12 1.8846723e-11 + 2.6859451e-12 1.8091546e-11 + 2.6115735e-12 1.7405302e-11 + 2.5429062e-12 1.6778573e-11 + 2.4792529e-12 1.6203597e-11 + 2.4200346e-12 1.5673949e-11 + 2.3647616e-12 1.5184230e-11 + 2.3130164e-12 1.4729896e-11 + 2.2644410e-12 1.4307064e-11 + 2.2187258e-12 1.3912419e-11 + 2.1756022e-12 1.3543108e-11 + 2.1348352e-12 1.3196647e-11 + 2.0962187e-12 1.2870883e-11 + 2.0595710e-12 1.2563926e-11 + 2.0247309e-12 1.2274115e-11 + 1.9915552e-12 1.1999982e-11 + 1.9599161e-12 1.1740227e-11 + 1.9296989e-12 1.1493692e-11 + 1.9008006e-12 1.1259339e-11 + 1.8731284e-12 1.1036245e-11 + 1.8465983e-12 1.0823579e-11 + 1.8211342e-12 1.0620583e-11 + 1.7966667e-12 1.0426585e-11 + 1.7731327e-12 1.0240962e-11 + 1.7504746e-12 1.0063160e-11 + 1.7286395e-12 9.8926682e-12 + 1.7075790e-12 9.7290216e-12 + 5.7094677e-12 5.1269844e-11 + 5.0935910e-12 4.3848280e-11 + 4.6382796e-12 3.8548559e-11 + 4.2842469e-12 3.4550902e-11 + 3.9989058e-12 3.1414397e-11 + 3.7626650e-12 2.8879386e-11 + 3.5629477e-12 2.6782481e-11 + 3.3912631e-12 2.5015349e-11 + 3.2416447e-12 2.3503169e-11 + 3.1097615e-12 2.2192508e-11 + 2.9923834e-12 2.1044114e-11 + 2.8870462e-12 2.0028468e-11 + 2.7918331e-12 1.9122914e-11 + 2.7052281e-12 1.8309768e-11 + 2.6260140e-12 1.7575001e-11 + 2.5532013e-12 1.6907326e-11 + 2.4859762e-12 1.6297583e-11 + 2.4236623e-12 1.5738214e-11 + 2.3656924e-12 1.5222965e-11 + 2.3115866e-12 1.4746572e-11 + 2.2609360e-12 1.4304618e-11 + 2.2133897e-12 1.3893323e-11 + 2.1686445e-12 1.3509462e-11 + 2.1264372e-12 1.3150253e-11 + 2.0865377e-12 1.2813282e-11 + 2.0487440e-12 1.2496450e-11 + 2.0128781e-12 1.2197921e-11 + 1.9787821e-12 1.1916074e-11 + 1.9463158e-12 1.1649481e-11 + 1.9153539e-12 1.1396882e-11 + 1.8857841e-12 1.1157141e-11 + 1.8575057e-12 1.0929257e-11 + 1.8304276e-12 1.0712328e-11 + 1.8044676e-12 1.0505540e-11 + 1.7795511e-12 1.0308162e-11 + 1.7556102e-12 1.0119538e-11 + 1.7325833e-12 9.9390626e-12 + 1.7104137e-12 9.7661964e-12 + 1.6890497e-12 9.6004385e-12 + 1.6684440e-12 9.4413416e-12 + 5.5881331e-12 4.9866943e-11 + 4.9847048e-12 4.2644207e-11 + 4.5385822e-12 3.7485894e-11 + 4.1917050e-12 3.3594730e-11 + 3.9121460e-12 3.0541731e-11 + 3.6807075e-12 2.8074277e-11 + 3.4850638e-12 2.6033300e-11 + 3.3168929e-12 2.4313371e-11 + 3.1703468e-12 2.2841646e-11 + 3.0411800e-12 2.1566104e-11 + 2.9262267e-12 2.0448531e-11 + 2.8230713e-12 1.9460187e-11 + 2.7298354e-12 1.8579015e-11 + 2.6450329e-12 1.7787799e-11 + 2.5674713e-12 1.7072875e-11 + 2.4961808e-12 1.6423271e-11 + 2.4303640e-12 1.5830042e-11 + 2.3693580e-12 1.5285853e-11 + 2.3126071e-12 1.4784603e-11 + 2.2596412e-12 1.4321181e-11 + 2.2100595e-12 1.3891266e-11 + 2.1635182e-12 1.3491195e-11 + 2.1197203e-12 1.3117822e-11 + 2.0784079e-12 1.2768438e-11 + 2.0393555e-12 1.2440697e-11 + 2.0023653e-12 1.2132556e-11 + 1.9672629e-12 1.1842222e-11 + 1.9338936e-12 1.1568121e-11 + 1.9021200e-12 1.1308866e-11 + 1.8718194e-12 1.1063223e-11 + 1.8428820e-12 1.0830095e-11 + 1.8152088e-12 1.0608503e-11 + 1.7887109e-12 1.0397567e-11 + 1.7633076e-12 1.0196498e-11 + 1.7389259e-12 1.0004586e-11 + 1.7154994e-12 9.8211873e-12 + 1.6929676e-12 9.6457206e-12 + 1.6712751e-12 9.4776529e-12 + 1.6503712e-12 9.3165004e-12 + 1.6302096e-12 9.1618278e-12 + 5.4696901e-12 4.8504135e-11 + 4.8783926e-12 4.1474166e-11 + 4.4412301e-12 3.6453024e-11 + 4.1013325e-12 3.2665240e-11 + 3.8274152e-12 2.9693381e-11 + 3.6006631e-12 2.7291565e-11 + 3.4089954e-12 2.5304952e-11 + 3.2442545e-12 2.3630907e-11 + 3.1007075e-12 2.2198517e-11 + 2.9741927e-12 2.0957116e-11 + 2.8616065e-12 1.9869514e-11 + 2.7605813e-12 1.8907720e-11 + 2.6692756e-12 1.8050267e-11 + 2.5862331e-12 1.7280380e-11 + 2.5102849e-12 1.6584764e-11 + 2.4404807e-12 1.5952722e-11 + 2.3760390e-12 1.5375568e-11 + 2.3163102e-12 1.4846144e-11 + 2.2607498e-12 1.4358512e-11 + 2.2088969e-12 1.3907698e-11 + 2.1603591e-12 1.3489499e-11 + 2.1147993e-12 1.3100346e-11 + 2.0719265e-12 1.2737176e-11 + 2.0314880e-12 1.2397348e-11 + 1.9932629e-12 1.2078587e-11 + 1.9570573e-12 1.1778897e-11 + 1.9227004e-12 1.1496536e-11 + 1.8900408e-12 1.1229973e-11 + 1.8589437e-12 1.0977853e-11 + 1.8292890e-12 1.0738981e-11 + 1.8009689e-12 1.0512282e-11 + 1.7738869e-12 1.0296809e-11 + 1.7479555e-12 1.0091704e-11 + 1.7230959e-12 9.8961988e-12 + 1.6992365e-12 9.7096041e-12 + 1.6763123e-12 9.5312899e-12 + 1.6542640e-12 9.3606907e-12 + 1.6330374e-12 9.1972914e-12 + 1.6125830e-12 9.0406210e-12 + 1.5928552e-12 8.8902533e-12 + 5.3540682e-12 4.7180015e-11 + 4.7745928e-12 4.0336974e-11 + 4.3461675e-12 3.5448988e-11 + 4.0130783e-12 3.1761614e-11 + 3.7446655e-12 2.8868576e-11 + 3.5224871e-12 2.6530549e-11 + 3.3347003e-12 2.4596791e-11 + 3.1733075e-12 2.2967361e-11 + 3.0326884e-12 2.1573215e-11 + 2.9087626e-12 2.0365031e-11 + 2.7984873e-12 1.9306577e-11 + 2.6995416e-12 1.8370612e-11 + 2.6101204e-12 1.7536224e-11 + 2.5287962e-12 1.6787084e-11 + 2.4544234e-12 1.6110244e-11 + 2.3860705e-12 1.5495298e-11 + 2.3229715e-12 1.4933776e-11 + 2.2644900e-12 1.4418713e-11 + 2.2100920e-12 1.3944333e-11 + 2.1593262e-12 1.3505787e-11 + 2.1118077e-12 1.3098986e-11 + 2.0672063e-12 1.2720454e-11 + 2.0252369e-12 1.2367207e-11 + 1.9856518e-12 1.2036683e-11 + 1.9482345e-12 1.1726656e-11 + 1.9127952e-12 1.1435187e-11 + 1.8791664e-12 1.1160583e-11 + 1.8471996e-12 1.0901350e-11 + 1.8167631e-12 1.0656172e-11 + 1.7877391e-12 1.0423884e-11 + 1.7600221e-12 1.0203443e-11 + 1.7335172e-12 9.9939217e-12 + 1.7081391e-12 9.7944886e-12 + 1.6838104e-12 9.6043952e-12 + 1.6604612e-12 9.4229715e-12 + 1.6380275e-12 9.2496033e-12 + 1.6164515e-12 9.0837408e-12 + 1.5956800e-12 8.9248826e-12 + 1.5756645e-12 8.7725717e-12 + 1.5563604e-12 8.6263893e-12 + 5.2411989e-12 4.5893230e-11 + 4.6732454e-12 3.9231511e-11 + 4.2533403e-12 3.4472837e-11 + 3.9268924e-12 3.0883003e-11 + 3.6638506e-12 2.8066587e-11 + 3.4461359e-12 2.5790582e-11 + 3.2621371e-12 2.3908218e-11 + 3.1040128e-12 2.2322179e-11 + 2.9662518e-12 2.0965231e-11 + 2.8448532e-12 1.9789345e-11 + 2.7368340e-12 1.8759253e-11 + 2.6399185e-12 1.7848409e-11 + 2.5523372e-12 1.7036464e-11 + 2.4726907e-12 1.6307508e-11 + 2.3998560e-12 1.5648937e-11 + 2.3329203e-12 1.5050622e-11 + 2.2711325e-12 1.4504308e-11 + 2.2138688e-12 1.4003222e-11 + 2.1606061e-12 1.3541731e-11 + 2.1109017e-12 1.3115121e-11 + 2.0643786e-12 1.2719408e-11 + 2.0207132e-12 1.2351209e-11 + 1.9796259e-12 1.2007621e-11 + 1.9408741e-12 1.1686143e-11 + 1.9042457e-12 1.1384613e-11 + 1.8695546e-12 1.1101143e-11 + 1.8366368e-12 1.0834086e-11 + 1.8053467e-12 1.0581987e-11 + 1.7755553e-12 1.0343562e-11 + 1.7471472e-12 1.0117678e-11 + 1.7200190e-12 9.9033228e-12 + 1.6940778e-12 9.6995913e-12 + 1.6692400e-12 9.5056786e-12 + 1.6454299e-12 9.3208511e-12 + 1.6225788e-12 9.1444548e-12 + 1.6006242e-12 8.9759003e-12 + 1.5795095e-12 8.8146470e-12 + 1.5591824e-12 8.6602058e-12 + 1.5395956e-12 8.5121340e-12 + 1.5207053e-12 8.3700248e-12 + 5.1310153e-12 4.4642449e-11 + 4.5742917e-12 3.8156767e-11 + 4.1626952e-12 3.3523685e-11 + 3.8427261e-12 3.0028665e-11 + 3.5849253e-12 2.7286734e-11 + 3.3715670e-12 2.5071030e-11 + 3.1912657e-12 2.3238646e-11 + 3.0363318e-12 2.1694811e-11 + 2.9013607e-12 2.0374050e-11 + 2.7824293e-12 1.9229596e-11 + 2.6766124e-12 1.8227090e-11 + 2.5816789e-12 1.7340690e-11 + 2.4958940e-12 1.6550576e-11 + 2.4178856e-12 1.5841260e-11 + 2.3465529e-12 1.5200468e-11 + 2.2810008e-12 1.4618329e-11 + 2.2204934e-12 1.4086815e-11 + 2.1644191e-12 1.3599324e-11 + 2.1122648e-12 1.3150376e-11 + 2.0635970e-12 1.2735382e-11 + 2.0180459e-12 1.2350459e-11 + 1.9752944e-12 1.1992312e-11 + 1.9350686e-12 1.1658118e-11 + 1.8971305e-12 1.1345443e-11 + 1.8612724e-12 1.1052181e-11 + 1.8273120e-12 1.0776496e-11 + 1.7950883e-12 1.0516779e-11 + 1.7644591e-12 1.0271617e-11 + 1.7352976e-12 1.0039766e-11 + 1.7074909e-12 9.8201129e-12 + 1.6809377e-12 9.6116797e-12 + 1.6555471e-12 9.4135827e-12 + 1.6312370e-12 9.2250354e-12 + 1.6079332e-12 9.0453308e-12 + 1.5855686e-12 8.8738297e-12 + 1.5640821e-12 8.7099555e-12 + 1.5434178e-12 8.5531847e-12 + 1.5235248e-12 8.4030416e-12 + 1.5043567e-12 8.2590938e-12 + 1.4858706e-12 8.1209460e-12 + 5.0234523e-12 4.3426480e-11 + 4.4776744e-12 3.7111721e-11 + 4.0741806e-12 3.2600691e-11 + 3.7605318e-12 2.9197829e-11 + 3.5078451e-12 2.6528333e-11 + 3.2987386e-12 2.4371288e-11 + 3.1220465e-12 2.2587521e-11 + 2.9702268e-12 2.1084743e-11 + 2.8379792e-12 1.9799192e-11 + 2.7214562e-12 1.8685315e-11 + 2.6177893e-12 1.7709651e-11 + 2.5247909e-12 1.6847033e-11 + 2.4407597e-12 1.6078164e-11 + 2.3643507e-12 1.5387960e-11 + 2.2944846e-12 1.4764462e-11 + 2.2302837e-12 1.4198069e-11 + 2.1710266e-12 1.3680954e-11 + 2.1161135e-12 1.3206697e-11 + 2.0650417e-12 1.2769954e-11 + 2.0173861e-12 1.2366260e-11 + 1.9727841e-12 1.1991835e-11 + 1.9309250e-12 1.1643470e-11 + 1.8915404e-12 1.1318417e-11 + 1.8543969e-12 1.1014309e-11 + 1.8192910e-12 1.0729090e-11 + 1.7860440e-12 1.0460976e-11 + 1.7544983e-12 1.0208403e-11 + 1.7245143e-12 9.9699938e-12 + 1.6959680e-12 9.7445346e-12 + 1.6687486e-12 9.5309469e-12 + 1.6427570e-12 9.3282742e-12 + 1.6179039e-12 9.1356582e-12 + 1.5941092e-12 8.9523329e-12 + 1.5713000e-12 8.7776129e-12 + 1.5494106e-12 8.6108730e-12 + 1.5283811e-12 8.4515506e-12 + 1.5081568e-12 8.2991422e-12 + 1.4886879e-12 8.1531802e-12 + 1.4699287e-12 8.0132431e-12 + 1.4518374e-12 7.8789501e-12 + 4.9184462e-12 4.2244164e-11 + 4.3833377e-12 3.6095463e-11 + 3.9877458e-12 3.1703048e-11 + 3.6802630e-12 2.8389795e-11 + 3.4325670e-12 2.5790751e-11 + 3.2276103e-12 2.3690768e-11 + 3.0544409e-12 2.1954303e-11 + 2.9056610e-12 2.0491476e-11 + 2.7760719e-12 1.9240183e-11 + 2.6619000e-12 1.8156056e-11 + 2.5603321e-12 1.7206514e-11 + 2.4692228e-12 1.6367043e-11 + 2.3869040e-12 1.5618850e-11 + 2.3120567e-12 1.4947241e-11 + 2.2436226e-12 1.4340577e-11 + 2.1807411e-12 1.3789504e-11 + 2.1227047e-12 1.3286403e-11 + 2.0689256e-12 1.2825022e-11 + 2.0189109e-12 1.2400155e-11 + 1.9722435e-12 1.2007456e-11 + 1.9285683e-12 1.1643247e-11 + 1.8875807e-12 1.1304402e-11 + 1.8490173e-12 1.0988245e-11 + 1.8126497e-12 1.0692471e-11 + 1.7782784e-12 1.0415080e-11 + 1.7457280e-12 1.0154335e-11 + 1.7148443e-12 9.9087122e-12 + 1.6854904e-12 9.6768714e-12 + 1.6575449e-12 9.4576316e-12 + 1.6308991e-12 9.2499428e-12 + 1.6054558e-12 9.0528750e-12 + 1.5811279e-12 8.8655914e-12 + 1.5578365e-12 8.6873501e-12 + 1.5355104e-12 8.5174772e-12 + 1.5140851e-12 8.3553687e-12 + 1.4935019e-12 8.2004794e-12 + 1.4737073e-12 8.0523127e-12 + 1.4546526e-12 7.9104169e-12 + 1.4362928e-12 7.7743865e-12 + 1.4185871e-12 7.6438415e-12 + 4.8159352e-12 4.1094417e-11 + 4.2912270e-12 3.5107059e-11 + 3.9033415e-12 3.0829985e-11 + 3.6018744e-12 2.7603891e-11 + 3.3590487e-12 2.5073377e-11 + 3.1581423e-12 2.3028908e-11 + 2.9884112e-12 2.1338477e-11 + 2.8425986e-12 1.9914526e-11 + 2.7156045e-12 1.8696569e-11 + 2.6037276e-12 1.7641396e-11 + 2.5042088e-12 1.6717275e-11 + 2.4149440e-12 1.5900330e-11 + 2.3342971e-12 1.5172254e-11 + 2.2609747e-12 1.4518747e-11 + 2.1939388e-12 1.3928467e-11 + 2.1323456e-12 1.3392304e-11 + 2.0755013e-12 1.2902842e-11 + 2.0228295e-12 1.2453988e-11 + 1.9738468e-12 1.2040681e-11 + 1.9281444e-12 1.1658684e-11 + 1.8853743e-12 1.1304415e-11 + 1.8452375e-12 1.0974835e-11 + 1.8074761e-12 1.0667334e-11 + 1.7718661e-12 1.0379670e-11 + 1.7382120e-12 1.0109896e-11 + 1.7063419e-12 9.8563204e-12 + 1.6761047e-12 9.6174613e-12 + 1.6473662e-12 9.3920124e-12 + 1.6200072e-12 9.1788219e-12 + 1.5939216e-12 8.9768757e-12 + 1.5690140e-12 8.7852598e-12 + 1.5451989e-12 8.6031681e-12 + 1.5223990e-12 8.4298691e-12 + 1.5005447e-12 8.2647149e-12 + 1.4795727e-12 8.1071125e-12 + 1.4594255e-12 7.9565343e-12 + 1.4400507e-12 7.8124950e-12 + 1.4214004e-12 7.6745571e-12 + 1.4034308e-12 7.5423232e-12 + 1.3861018e-12 7.4154265e-12 + 4.7158589e-12 3.9976210e-11 + 4.2012889e-12 3.4145664e-11 + 3.8209197e-12 2.9980753e-11 + 3.5253220e-12 2.6839454e-11 + 3.2872491e-12 2.4375622e-11 + 3.0902957e-12 2.2385182e-11 + 2.9239206e-12 2.0739538e-11 + 2.7810042e-12 1.9353421e-11 + 2.6565432e-12 1.8167912e-11 + 2.5469069e-12 1.7140923e-11 + 2.4493886e-12 1.6241540e-11 + 2.3619245e-12 1.5446521e-11 + 2.2829101e-12 1.4738032e-11 + 2.2110766e-12 1.4102139e-11 + 2.1454059e-12 1.3527804e-11 + 2.0850707e-12 1.3006151e-11 + 2.0293903e-12 1.2529965e-11 + 1.9777997e-12 1.2093306e-11 + 1.9298247e-12 1.1691247e-11 + 1.8850646e-12 1.1319664e-11 + 1.8431781e-12 1.0975070e-11 + 1.8038721e-12 1.0654503e-11 + 1.7668938e-12 1.0355425e-11 + 1.7320237e-12 1.0075654e-11 + 1.6990698e-12 9.8132913e-12 + 1.6678641e-12 9.5666940e-12 + 1.6382582e-12 9.3344129e-12 + 1.6101206e-12 9.1151843e-12 + 1.5833346e-12 8.9078855e-12 + 1.5577961e-12 8.7115240e-12 + 1.5334116e-12 8.5252151e-12 + 1.5100972e-12 8.3481714e-12 + 1.4877775e-12 8.1796829e-12 + 1.4663840e-12 8.0191174e-12 + 1.4458547e-12 7.8659017e-12 + 1.4261333e-12 7.7195149e-12 + 1.4071685e-12 7.5794926e-12 + 1.3889133e-12 7.4454065e-12 + 1.3713248e-12 7.3168650e-12 + 1.3543636e-12 7.1935200e-12 + 4.6181582e-12 3.8888556e-11 + 4.1134716e-12 3.3210474e-11 + 3.7404334e-12 2.9154662e-11 + 3.4505624e-12 2.6095850e-11 + 3.2171278e-12 2.3696918e-11 + 3.0240325e-12 2.1759054e-11 + 2.8609330e-12 2.0157010e-11 + 2.7208435e-12 1.8807717e-11 + 2.5988552e-12 1.7653791e-11 + 2.4914061e-12 1.6654232e-11 + 2.3958409e-12 1.5778933e-11 + 2.3101351e-12 1.5005259e-11 + 2.2327145e-12 1.4315826e-11 + 2.1623348e-12 1.3697081e-11 + 2.0979972e-12 1.3138267e-11 + 2.0388902e-12 1.2630740e-11 + 1.9843464e-12 1.2167470e-11 + 1.9338113e-12 1.1742680e-11 + 1.8868203e-12 1.1351570e-11 + 1.8429803e-12 1.0990122e-11 + 1.8019565e-12 1.0654944e-11 + 1.7634617e-12 1.0343149e-11 + 1.7272481e-12 1.0052269e-11 + 1.6931004e-12 9.7801761e-12 + 1.6608305e-12 9.5250284e-12 + 1.6302735e-12 9.2852207e-12 + 1.6012840e-12 9.0593432e-12 + 1.5737333e-12 8.8461672e-12 + 1.5475069e-12 8.6445978e-12 + 1.5225027e-12 8.4536713e-12 + 1.4986291e-12 8.2725260e-12 + 1.4758039e-12 8.1003936e-12 + 1.4539531e-12 7.9365877e-12 + 1.4330096e-12 7.7804879e-12 + 1.4129128e-12 7.6315390e-12 + 1.3936073e-12 7.4892340e-12 + 1.3750429e-12 7.3531178e-12 + 1.3571735e-12 7.2227777e-12 + 1.3399572e-12 7.0978324e-12 + 1.3233553e-12 6.9779390e-12 + 4.5227757e-12 3.7830464e-11 + 4.0277243e-12 3.2300684e-11 + 3.6618368e-12 2.8351022e-11 + 3.3775536e-12 2.5372501e-11 + 3.1486455e-12 2.3036714e-11 + 2.9593155e-12 2.1150033e-11 + 2.7994131e-12 1.9590424e-11 + 2.6620830e-12 1.8276983e-11 + 2.5425085e-12 1.7153799e-11 + 2.4371946e-12 1.6180942e-11 + 2.3435362e-12 1.5329089e-11 + 2.2595470e-12 1.4576187e-11 + 2.1836827e-12 1.3905310e-11 + 2.1147224e-12 1.3303255e-11 + 2.0516864e-12 1.2759548e-11 + 1.9937787e-12 1.2265767e-11 + 1.9403445e-12 1.1815074e-11 + 1.8908401e-12 1.1401835e-11 + 1.8448098e-12 1.1021380e-11 + 1.8018681e-12 1.0669797e-11 + 1.7616868e-12 1.0343781e-11 + 1.7239842e-12 1.0040527e-11 + 1.6885172e-12 9.7576239e-12 + 1.6550749e-12 9.4930065e-12 + 1.6234729e-12 9.2448767e-12 + 1.5935495e-12 9.0116743e-12 + 1.5651621e-12 8.7920294e-12 + 1.5381845e-12 8.5847435e-12 + 1.5125046e-12 8.3887506e-12 + 1.4880222e-12 8.2031111e-12 + 1.4646475e-12 8.0269914e-12 + 1.4423001e-12 7.8596405e-12 + 1.4209073e-12 7.7003878e-12 + 1.4004034e-12 7.5486333e-12 + 1.3807289e-12 7.4038350e-12 + 1.3618296e-12 7.2654996e-12 + 1.3436563e-12 7.1331868e-12 + 1.3261638e-12 7.0064903e-12 + 1.3093109e-12 6.8850422e-12 + 1.2930599e-12 6.7685078e-12 + 4.4296553e-12 3.6801091e-11 + 3.9439977e-12 3.1415564e-11 + 3.5850853e-12 2.7569190e-11 + 3.3062545e-12 2.4668805e-11 + 3.0817637e-12 2.2394497e-11 + 2.8961085e-12 2.0557630e-11 + 2.7393265e-12 1.9039339e-11 + 2.6046898e-12 1.7760799e-11 + 2.4874716e-12 1.6667542e-11 + 2.3842423e-12 1.5720682e-11 + 2.2924456e-12 1.4891650e-11 + 2.2101324e-12 1.4158969e-11 + 2.1357876e-12 1.3506155e-11 + 2.0682132e-12 1.2920348e-11 + 2.0064480e-12 1.2391344e-11 + 1.9497111e-12 1.1910949e-11 + 1.8973604e-12 1.1472493e-11 + 1.8488624e-12 1.1070499e-11 + 1.8037701e-12 1.0700416e-11 + 1.7617055e-12 1.0358434e-11 + 1.7223467e-12 1.0041336e-11 + 1.6854176e-12 9.7463886e-12 + 1.6506798e-12 9.4712509e-12 + 1.6179264e-12 9.2139089e-12 + 1.5869766e-12 8.9726098e-12 + 1.5576719e-12 8.7458365e-12 + 1.5298725e-12 8.5322580e-12 + 1.5034547e-12 8.3307015e-12 + 1.4783085e-12 8.1401351e-12 + 1.4543357e-12 7.9596454e-12 + 1.4314484e-12 7.7884113e-12 + 1.4095676e-12 7.6257124e-12 + 1.3886221e-12 7.4708912e-12 + 1.3685475e-12 7.3233661e-12 + 1.3492854e-12 7.1826054e-12 + 1.3307829e-12 7.0481343e-12 + 1.3129915e-12 6.9195195e-12 + 1.2958671e-12 6.7963685e-12 + 1.2793693e-12 6.6783233e-12 + 1.2634609e-12 6.5650564e-12 + 4.3387422e-12 3.5799540e-11 + 3.8622435e-12 3.0554369e-11 + 3.5101353e-12 2.6808529e-11 + 3.2366246e-12 2.3984203e-11 + 3.0164446e-12 2.1769748e-11 + 2.8343759e-12 1.9981384e-11 + 2.6806395e-12 1.8503320e-11 + 2.5486318e-12 1.7258751e-11 + 2.4337139e-12 1.6194634e-11 + 2.3325197e-12 1.5273087e-11 + 2.2425407e-12 1.4466273e-11 + 2.1618639e-12 1.3753278e-11 + 2.0890026e-12 1.3118049e-11 + 2.0227812e-12 1.2548059e-11 + 1.9622569e-12 1.2033369e-11 + 1.9066632e-12 1.1565999e-11 + 1.8553702e-12 1.1139458e-11 + 1.8078548e-12 1.0748407e-11 + 1.7636784e-12 1.0388420e-11 + 1.7224702e-12 1.0055782e-11 + 1.6839147e-12 9.7473642e-12 + 1.6477409e-12 9.4605047e-12 + 1.6137151e-12 9.1929259e-12 + 1.5816344e-12 8.9426592e-12 + 1.5513215e-12 8.7080095e-12 + 1.5226211e-12 8.4874945e-12 + 1.4953960e-12 8.2798163e-12 + 1.4695249e-12 8.0838384e-12 + 1.4449000e-12 7.8985542e-12 + 1.4214249e-12 7.7230709e-12 + 1.3990136e-12 7.5565954e-12 + 1.3775885e-12 7.3984217e-12 + 1.3570798e-12 7.2479135e-12 + 1.3374245e-12 7.1045005e-12 + 1.3185653e-12 6.9676706e-12 + 1.3004502e-12 6.8369582e-12 + 1.2830318e-12 6.7119423e-12 + 1.2662669e-12 6.5922407e-12 + 1.2501158e-12 6.4775054e-12 + 1.2345421e-12 6.3674195e-12 + 4.2499830e-12 3.4824998e-11 + 3.7824147e-12 2.9716428e-11 + 3.4369443e-12 2.6068445e-11 + 3.1686248e-12 2.3318167e-11 + 2.9526516e-12 2.1161986e-11 + 2.7740830e-12 1.9420850e-11 + 2.6233192e-12 1.7981940e-11 + 2.4938779e-12 1.6770453e-11 + 2.3812056e-12 1.5734709e-11 + 2.2819983e-12 1.4837802e-11 + 2.1937937e-12 1.4052622e-11 + 2.1147147e-12 1.3358794e-11 + 2.0433017e-12 1.2740686e-11 + 1.9784015e-12 1.2186091e-11 + 1.9190885e-12 1.1685339e-11 + 1.8646109e-12 1.1230649e-11 + 1.8143508e-12 1.0815704e-11 + 1.7677947e-12 1.0435309e-11 + 1.7245125e-12 1.0085144e-11 + 1.6841407e-12 9.7616039e-12 + 1.6463695e-12 9.4616352e-12 + 1.6109333e-12 9.1826483e-12 + 1.5776028e-12 8.9224218e-12 + 1.5461791e-12 8.6790463e-12 + 1.5164883e-12 8.4508662e-12 + 1.4883779e-12 8.2364410e-12 + 1.4617137e-12 8.0345074e-12 + 1.4363765e-12 7.8439564e-12 + 1.4122606e-12 7.6638091e-12 + 1.3892717e-12 7.4932006e-12 + 1.3673252e-12 7.3313544e-12 + 1.3463452e-12 7.1775846e-12 + 1.3262632e-12 7.0312718e-12 + 1.3070174e-12 6.8918631e-12 + 1.2885516e-12 6.7588566e-12 + 1.2708149e-12 6.6318005e-12 + 1.2537609e-12 6.5102865e-12 + 1.2373470e-12 6.3939413e-12 + 1.2215345e-12 6.2824274e-12 + 1.2062877e-12 6.1754337e-12 + 4.1633258e-12 3.3876697e-11 + 3.7044655e-12 2.8901062e-11 + 3.3654706e-12 2.5348345e-11 + 3.1022165e-12 2.2670168e-11 + 2.8903485e-12 2.0570725e-11 + 2.7151960e-12 1.8875573e-11 + 2.5673336e-12 1.7474800e-11 + 2.4403975e-12 1.6295527e-11 + 2.3299173e-12 1.5287412e-11 + 2.2326498e-12 1.4414493e-11 + 2.1461778e-12 1.3650378e-11 + 2.0686585e-12 1.2975210e-11 + 1.9986597e-12 1.2373769e-11 + 1.9350492e-12 1.1834165e-11 + 1.8769189e-12 1.1346978e-11 + 1.8235311e-12 1.0904634e-11 + 1.7742793e-12 1.0500978e-11 + 1.7286599e-12 1.0130952e-11 + 1.6862510e-12 9.7903514e-12 + 1.6466957e-12 9.4756648e-12 + 1.6096904e-12 9.1839201e-12 + 1.5749745e-12 8.9125928e-12 + 1.5423230e-12 8.6595254e-12 + 1.5115409e-12 8.4228566e-12 + 1.4824576e-12 8.2009734e-12 + 1.4549236e-12 7.9924734e-12 + 1.4288071e-12 7.7961283e-12 + 1.4039914e-12 7.6108606e-12 + 1.3803727e-12 7.4357155e-12 + 1.3578586e-12 7.2698477e-12 + 1.3363660e-12 7.1125073e-12 + 1.3158207e-12 6.9630227e-12 + 1.2961554e-12 6.8207936e-12 + 1.2773094e-12 6.6852796e-12 + 1.2592279e-12 6.5559929e-12 + 1.2418608e-12 6.4324962e-12 + 1.2251625e-12 6.3143885e-12 + 1.2090915e-12 6.2013089e-12 + 1.1936097e-12 6.0929274e-12 + 1.1786822e-12 5.9889447e-12 + 4.0787199e-12 3.2953836e-11 + 3.6283513e-12 2.8107633e-11 + 3.2956737e-12 2.4647678e-11 + 3.0373621e-12 2.2039713e-11 + 2.8295002e-12 1.9995523e-11 + 2.6576816e-12 1.8345150e-11 + 2.5126513e-12 1.6981515e-11 + 2.3881607e-12 1.5833604e-11 + 2.2798207e-12 1.4852386e-11 + 2.1844469e-12 1.4002832e-11 + 2.0996663e-12 1.3259225e-11 + 2.0236698e-12 1.2602229e-11 + 1.9550516e-12 1.2017013e-11 + 1.8927003e-12 1.1492004e-11 + 1.8357247e-12 1.1018021e-11 + 1.7834008e-12 1.0587695e-11 + 1.7351335e-12 1.0195030e-11 + 1.6904288e-12 9.8350960e-12 + 1.6488725e-12 9.5038075e-12 + 1.6101147e-12 9.1977378e-12 + 1.5738573e-12 8.9139986e-12 + 1.5398447e-12 8.6501270e-12 + 1.5078565e-12 8.4040284e-12 + 1.4777009e-12 8.1738852e-12 + 1.4492109e-12 7.9581303e-12 + 1.4222398e-12 7.7553981e-12 + 1.3966582e-12 7.5644940e-12 + 1.3723517e-12 7.3843660e-12 + 1.3492186e-12 7.2140869e-12 + 1.3271682e-12 7.0528343e-12 + 1.3061190e-12 6.8998781e-12 + 1.2859981e-12 6.7545630e-12 + 1.2667398e-12 6.6163073e-12 + 1.2482844e-12 6.4845826e-12 + 1.2305781e-12 6.3589165e-12 + 1.2135719e-12 6.2388808e-12 + 1.1972211e-12 6.1240882e-12 + 1.1814850e-12 6.0141852e-12 + 1.1663262e-12 5.9088531e-12 + 1.1517105e-12 5.8077965e-12 + 3.9961156e-12 3.2055726e-11 + 3.5540282e-12 2.7335525e-11 + 3.2275137e-12 2.3965902e-11 + 2.9740249e-12 2.1426310e-11 + 2.7700724e-12 1.9435933e-11 + 2.6015075e-12 1.7829165e-11 + 2.4592416e-12 1.6501688e-11 + 2.3371383e-12 1.5384329e-11 + 2.2308876e-12 1.4429301e-11 + 2.1373626e-12 1.3602496e-11 + 2.0542333e-12 1.2878858e-11 + 1.9797236e-12 1.2239552e-11 + 1.9124531e-12 1.1670137e-11 + 1.8513312e-12 1.1159337e-11 + 1.7954829e-12 1.0698213e-11 + 1.7441978e-12 1.0279585e-11 + 1.6968919e-12 9.8976164e-12 + 1.6530802e-12 9.5475110e-12 + 1.6123565e-12 9.2252852e-12 + 1.5743773e-12 8.9276036e-12 + 1.5388504e-12 8.6516543e-12 + 1.5055248e-12 8.3950438e-12 + 1.4741841e-12 8.1557246e-12 + 1.4446405e-12 7.9319340e-12 + 1.4167299e-12 7.7221443e-12 + 1.3903084e-12 7.5250250e-12 + 1.3652493e-12 7.3394151e-12 + 1.3414402e-12 7.1642896e-12 + 1.3187813e-12 6.9987471e-12 + 1.2971836e-12 6.8419850e-12 + 1.2765675e-12 6.6932934e-12 + 1.2568612e-12 6.5520375e-12 + 1.2380002e-12 6.4176466e-12 + 1.2199263e-12 6.2896087e-12 + 1.2025865e-12 6.1674655e-12 + 1.1859328e-12 6.0507987e-12 + 1.1699214e-12 5.9392302e-12 + 1.1545123e-12 5.8324186e-12 + 1.1396690e-12 5.7300520e-12 + 1.1253578e-12 5.6318439e-12 + 3.9154649e-12 3.1181635e-11 + 3.4814537e-12 2.6584145e-11 + 3.1609519e-12 2.3302491e-11 + 2.9121688e-12 2.0829492e-11 + 2.7120313e-12 1.8891511e-11 + 2.5466423e-12 1.7327220e-11 + 2.4070747e-12 1.6034961e-11 + 2.2873019e-12 1.4947346e-11 + 2.1830908e-12 1.4017832e-11 + 2.0913708e-12 1.3213179e-11 + 2.0098535e-12 1.2508987e-11 + 1.9367952e-12 1.1886908e-11 + 1.8708405e-12 1.1332875e-11 + 1.8109188e-12 1.0835907e-11 + 1.7561712e-12 1.0387298e-11 + 1.7059004e-12 9.9800612e-12 + 1.6595331e-12 9.6085081e-12 + 1.6165935e-12 9.2679689e-12 + 1.5766828e-12 8.9545640e-12 + 1.5394641e-12 8.6650476e-12 + 1.5046504e-12 8.3966822e-12 + 1.4719956e-12 8.1471369e-12 + 1.4412875e-12 7.9144196e-12 + 1.4123415e-12 7.6968103e-12 + 1.3849967e-12 7.4928256e-12 + 1.3591121e-12 7.3011709e-12 + 1.3345632e-12 7.1207125e-12 + 1.3112398e-12 6.9504555e-12 + 1.2890440e-12 6.7895199e-12 + 1.2678885e-12 6.6371289e-12 + 1.2476952e-12 6.4925887e-12 + 1.2283938e-12 6.3552797e-12 + 1.2099210e-12 6.2246499e-12 + 1.1922195e-12 6.1002015e-12 + 1.1752377e-12 5.9814841e-12 + 1.1589282e-12 5.8680946e-12 + 1.1432483e-12 5.7596639e-12 + 1.1281586e-12 5.6558599e-12 + 1.1136234e-12 5.5563786e-12 + 1.0996098e-12 5.4609427e-12 + 3.8367208e-12 3.0330921e-11 + 3.4105862e-12 2.5852913e-11 + 3.0959503e-12 2.2656948e-11 + 2.8517587e-12 2.0248800e-11 + 2.6553442e-12 1.8361863e-11 + 2.4930548e-12 1.6838939e-11 + 2.3561213e-12 1.5580975e-11 + 2.2386235e-12 1.4522332e-11 + 2.1364036e-12 1.3617663e-11 + 2.0464455e-12 1.2834580e-11 + 1.9665021e-12 1.2149322e-11 + 1.8948607e-12 1.1544015e-11 + 1.8301906e-12 1.1004959e-11 + 1.7714407e-12 1.0521458e-11 + 1.7177678e-12 1.0085038e-11 + 1.6684872e-12 9.6888904e-12 + 1.6230365e-12 9.3274751e-12 + 1.5809484e-12 8.9962479e-12 + 1.5418317e-12 8.6914310e-12 + 1.5053556e-12 8.4098652e-12 + 1.4712385e-12 8.1488805e-12 + 1.4392389e-12 7.9062111e-12 + 1.4091484e-12 7.6799179e-12 + 1.3807860e-12 7.4683268e-12 + 1.3539939e-12 7.2699927e-12 + 1.3286336e-12 7.0836545e-12 + 1.3045829e-12 6.9082104e-12 + 1.2817338e-12 6.7426894e-12 + 1.2599903e-12 6.5862393e-12 + 1.2392667e-12 6.4381006e-12 + 1.2194864e-12 6.2975990e-12 + 1.2005803e-12 6.1641324e-12 + 1.1824866e-12 6.0371639e-12 + 1.1651490e-12 5.9162050e-12 + 1.1485166e-12 5.8008227e-12 + 1.1325434e-12 5.6906206e-12 + 1.1171872e-12 5.5852445e-12 + 1.1024096e-12 5.4843662e-12 + 1.0881754e-12 5.3876912e-12 + 1.0744522e-12 5.2949507e-12 + 3.7598372e-12 2.9502905e-11 + 3.3413848e-12 2.5141284e-11 + 3.0324716e-12 2.2028768e-11 + 2.7927602e-12 1.9683798e-11 + 2.5999791e-12 1.7846580e-11 + 2.4407152e-12 1.6363934e-11 + 2.3063528e-12 1.5139383e-11 + 2.1910759e-12 1.4108958e-11 + 2.0907998e-12 1.3228479e-11 + 2.0025618e-12 1.2466406e-11 + 1.9241547e-12 1.1799585e-11 + 1.8538966e-12 1.1210611e-11 + 1.7904807e-12 1.0686137e-11 + 1.7328748e-12 1.0215751e-11 + 1.6802512e-12 9.7911951e-12 + 1.6319376e-12 9.4058415e-12 + 1.5873819e-12 9.0542973e-12 + 1.5461254e-12 8.7321354e-12 + 1.5077841e-12 8.4356792e-12 + 1.4720332e-12 8.1618497e-12 + 1.4385963e-12 7.9080499e-12 + 1.4072365e-12 7.6720760e-12 + 1.3777492e-12 7.4520355e-12 + 1.3499568e-12 7.2463008e-12 + 1.3237043e-12 7.0534654e-12 + 1.2988560e-12 6.8723013e-12 + 1.2752918e-12 6.7017367e-12 + 1.2529060e-12 6.5408264e-12 + 1.2316042e-12 6.3887411e-12 + 1.2113024e-12 6.2447396e-12 + 1.1919253e-12 6.1081683e-12 + 1.1734055e-12 5.9784405e-12 + 1.1556819e-12 5.8550323e-12 + 1.1386996e-12 5.7374703e-12 + 1.1224087e-12 5.6253324e-12 + 1.1067639e-12 5.5182329e-12 + 1.0917240e-12 5.4158263e-12 + 1.0772511e-12 5.3177944e-12 + 1.0633108e-12 5.2238512e-12 + 1.0498715e-12 5.1337336e-12 + 3.6847695e-12 2.8696973e-11 + 3.2738098e-12 2.4448713e-11 + 2.9704796e-12 2.1417492e-11 + 2.7351398e-12 1.9134059e-11 + 2.5459046e-12 1.7345267e-11 + 2.3895937e-12 1.5901863e-11 + 2.2577412e-12 1.4709856e-11 + 2.1446323e-12 1.3706909e-11 + 2.0462538e-12 1.2849988e-11 + 1.9596949e-12 1.2108373e-11 + 1.8827876e-12 1.1459506e-11 + 1.8138799e-12 1.0886435e-11 + 1.7516885e-12 1.0376160e-11 + 1.6951996e-12 9.9185412e-12 + 1.6436005e-12 9.5055382e-12 + 1.5962312e-12 9.1306956e-12 + 1.5525495e-12 8.7887606e-12 + 1.5121051e-12 8.4754248e-12 + 1.4745209e-12 8.1871033e-12 + 1.4394783e-12 7.9208080e-12 + 1.4067057e-12 7.6740025e-12 + 1.3759707e-12 7.4445430e-12 + 1.3470725e-12 7.2305874e-12 + 1.3198367e-12 7.0305535e-12 + 1.2941113e-12 6.8430709e-12 + 1.2697629e-12 6.6669425e-12 + 1.2466739e-12 6.5011260e-12 + 1.2247405e-12 6.3447031e-12 + 1.2038700e-12 6.1968633e-12 + 1.1839801e-12 6.0568893e-12 + 1.1649969e-12 5.9241424e-12 + 1.1468542e-12 5.7980526e-12 + 1.1294923e-12 5.6781086e-12 + 1.1128570e-12 5.5638524e-12 + 1.0968996e-12 5.4548704e-12 + 1.0815756e-12 5.3507911e-12 + 1.0668445e-12 5.2512731e-12 + 1.0526693e-12 5.1560103e-12 + 1.0390162e-12 5.0647244e-12 + 1.0258541e-12 4.9771587e-12 + 3.6114740e-12 2.7912518e-11 + 3.2078222e-12 2.3774688e-11 + 2.9099387e-12 2.0822658e-11 + 2.6788646e-12 1.8599163e-11 + 2.4930902e-12 1.6857548e-11 + 2.3396617e-12 1.5452375e-11 + 2.2102592e-12 1.4292056e-11 + 2.0992666e-12 1.3315874e-11 + 2.0027404e-12 1.2481899e-11 + 1.9178208e-12 1.1760208e-11 + 1.8423777e-12 1.1128821e-11 + 1.7747884e-12 1.0571237e-11 + 1.7137925e-12 1.0074790e-11 + 1.6583942e-12 9.6296030e-12 + 1.6077955e-12 9.2278455e-12 + 1.5613483e-12 8.8632337e-12 + 1.5185200e-12 8.5306541e-12 + 1.4788687e-12 8.2259091e-12 + 1.4420239e-12 7.9455129e-12 + 1.4076729e-12 7.6865475e-12 + 1.3755491e-12 7.4465521e-12 + 1.3454243e-12 7.2234329e-12 + 1.3171013e-12 7.0154015e-12 + 1.2904090e-12 6.8209154e-12 + 1.2651983e-12 6.6386395e-12 + 1.2413382e-12 6.4674123e-12 + 1.2187133e-12 6.3062169e-12 + 1.1972217e-12 6.1541608e-12 + 1.1767725e-12 6.0104535e-12 + 1.1572848e-12 5.8743978e-12 + 1.1386864e-12 5.7453725e-12 + 1.1209121e-12 5.6228214e-12 + 1.1039032e-12 5.5062498e-12 + 1.0876070e-12 5.3952095e-12 + 1.0719753e-12 5.2892994e-12 + 1.0569646e-12 5.1881559e-12 + 1.0425352e-12 5.0914490e-12 + 1.0286508e-12 4.9988814e-12 + 1.0152781e-12 4.9101802e-12 + 1.0023869e-12 4.8250969e-12 + 3.5399079e-12 2.7148954e-11 + 3.1433839e-12 2.3118693e-11 + 2.8508141e-12 2.0243817e-11 + 2.6239026e-12 1.8078722e-11 + 2.4415058e-12 1.6383057e-11 + 2.2908909e-12 1.5015123e-11 + 2.1638800e-12 1.3885670e-11 + 2.0549533e-12 1.2935556e-11 + 1.9602353e-12 1.2123932e-11 + 1.8769158e-12 1.1421639e-11 + 1.8029022e-12 1.0807280e-11 + 1.7366000e-12 1.0264774e-11 + 1.6767713e-12 9.7817888e-12 + 1.6224380e-12 9.3487062e-12 + 1.5728162e-12 8.9579003e-12 + 1.5272694e-12 8.6032507e-12 + 1.4852746e-12 8.2797792e-12 + 1.4463977e-12 7.9833976e-12 + 1.4102750e-12 7.7107128e-12 + 1.3765994e-12 7.4588825e-12 + 1.3451092e-12 7.2255149e-12 + 1.3155802e-12 7.0085685e-12 + 1.2878190e-12 6.8063030e-12 + 1.2616576e-12 6.6172160e-12 + 1.2369495e-12 6.4400096e-12 + 1.2135662e-12 6.2735519e-12 + 1.1913946e-12 6.1168537e-12 + 1.1703344e-12 5.9690459e-12 + 1.1502966e-12 5.8293610e-12 + 1.1312019e-12 5.6971180e-12 + 1.1129792e-12 5.5717136e-12 + 1.0955646e-12 5.4526073e-12 + 1.0789008e-12 5.3393149e-12 + 1.0629356e-12 5.2314039e-12 + 1.0476221e-12 5.1284818e-12 + 1.0329175e-12 5.0301955e-12 + 1.0187828e-12 4.9362250e-12 + 1.0051824e-12 4.8462780e-12 + 9.9208374e-13 4.7600925e-12 + 9.7945700e-13 4.6774236e-12 + 3.4700293e-12 2.6405706e-11 + 3.0804576e-12 2.2480257e-11 + 2.7930720e-12 1.9680539e-11 + 2.5702224e-12 1.7572339e-11 + 2.3911223e-12 1.5921438e-11 + 2.2432537e-12 1.4589775e-11 + 2.1185773e-12 1.3490395e-11 + 2.0116672e-12 1.2565670e-11 + 1.9187143e-12 1.1775808e-11 + 1.8369570e-12 1.1092410e-11 + 1.7643389e-12 1.0494632e-11 + 1.6992935e-12 9.9668084e-12 + 1.6406044e-12 9.4969304e-12 + 1.5873110e-12 9.0756336e-12 + 1.5386432e-12 8.6954896e-12 + 1.4939756e-12 8.3505387e-12 + 1.4527947e-12 8.0359357e-12 + 1.4146741e-12 7.7476956e-12 + 1.3792566e-12 7.4825169e-12 + 1.3462405e-12 7.2376357e-12 + 1.3153691e-12 7.0107177e-12 + 1.2864220e-12 6.7997789e-12 + 1.2592093e-12 6.6031236e-12 + 1.2335663e-12 6.4192923e-12 + 1.2093491e-12 6.2470197e-12 + 1.1864315e-12 6.0852034e-12 + 1.1647025e-12 5.9328818e-12 + 1.1440637e-12 5.7892088e-12 + 1.1244278e-12 5.6534373e-12 + 1.1057168e-12 5.5249053e-12 + 1.0878611e-12 5.4030236e-12 + 1.0707980e-12 5.2872687e-12 + 1.0544711e-12 5.1771683e-12 + 1.0388294e-12 5.0723014e-12 + 1.0238267e-12 4.9722871e-12 + 1.0094211e-12 4.8767805e-12 + 9.9557420e-13 4.7854714e-12 + 9.8225126e-13 4.6980757e-12 + 9.6942027e-13 4.6143355e-12 + 9.5705194e-13 4.5340166e-12 + 3.4017975e-12 2.5682237e-11 + 3.0190068e-12 2.1858897e-11 + 2.7366791e-12 1.9132412e-11 + 2.5177935e-12 1.7079636e-11 + 2.3419110e-12 1.5472349e-11 + 2.1967231e-12 1.4176016e-11 + 2.0743254e-12 1.3105925e-11 + 1.9693839e-12 1.2205928e-11 + 1.8781541e-12 1.1437266e-11 + 1.7979218e-12 1.0772267e-11 + 1.7266661e-12 1.0190634e-11 + 1.6628477e-12 9.6771083e-12 + 1.6052716e-12 9.2199965e-12 + 1.5529936e-12 8.8101739e-12 + 1.5052573e-12 8.4404118e-12 + 1.4614484e-12 8.1049037e-12 + 1.4210623e-12 7.7989327e-12 + 1.3836802e-12 7.5186172e-12 + 1.3489514e-12 7.2607472e-12 + 1.3165794e-12 7.0226283e-12 + 1.2863122e-12 6.8019886e-12 + 1.2579333e-12 6.5968972e-12 + 1.2312565e-12 6.4057050e-12 + 1.2061197e-12 6.2269880e-12 + 1.1823818e-12 6.0595160e-12 + 1.1599191e-12 5.9022173e-12 + 1.1386224e-12 5.7541544e-12 + 1.1183952e-12 5.6145046e-12 + 1.0991518e-12 5.4825412e-12 + 1.0808157e-12 5.3576194e-12 + 1.0633184e-12 5.2391664e-12 + 1.0465986e-12 5.1266718e-12 + 1.0306008e-12 5.0196780e-12 + 1.0152751e-12 4.9177732e-12 + 1.0005760e-12 4.8205874e-12 + 9.8646235e-13 4.7277855e-12 + 9.7289672e-13 4.6390647e-12 + 9.5984480e-13 4.5541498e-12 + 9.4727527e-13 4.4727903e-12 + 9.3515937e-13 4.3947567e-12 + 3.3351725e-12 2.4978006e-11 + 2.9589958e-12 2.1254163e-11 + 2.6816029e-12 1.8599023e-11 + 2.4665859e-12 1.6600245e-11 + 2.2938439e-12 1.5035441e-11 + 2.1512726e-12 1.3773533e-11 + 2.0310993e-12 1.2731971e-11 + 1.9280793e-12 1.1856060e-11 + 1.8385316e-12 1.1108041e-11 + 1.7597882e-12 1.0460963e-11 + 1.6898627e-12 9.8950532e-12 + 1.6272425e-12 9.3954509e-12 + 1.5707530e-12 8.9507687e-12 + 1.5194666e-12 8.5521203e-12 + 1.4726400e-12 8.1924634e-12 + 1.4296696e-12 7.8661480e-12 + 1.3900597e-12 7.5685800e-12 + 1.3533988e-12 7.2959834e-12 + 1.3193425e-12 7.0452274e-12 + 1.2875995e-12 6.8136903e-12 + 1.2579223e-12 6.5991619e-12 + 1.2300984e-12 6.3997623e-12 + 1.2039448e-12 6.2138850e-12 + 1.1793024e-12 6.0401461e-12 + 1.1560328e-12 5.8773466e-12 + 1.1340143e-12 5.7244438e-12 + 1.1131398e-12 5.5805263e-12 + 1.0933146e-12 5.4447921e-12 + 1.0744546e-12 5.3165342e-12 + 1.0564846e-12 5.1951249e-12 + 1.0393376e-12 5.0800084e-12 + 1.0229531e-12 4.9706861e-12 + 1.0072768e-12 4.8667150e-12 + 9.9225964e-13 4.7676920e-12 + 9.7785711e-13 4.6732575e-12 + 9.6402879e-13 4.5830874e-12 + 9.5073786e-13 4.4968850e-12 + 9.3795071e-13 4.4143850e-12 + 9.2563658e-13 4.3353401e-12 + 9.1376727e-13 4.2595303e-12 + 3.2701150e-12 2.4292499e-11 + 2.9003897e-12 2.0665600e-11 + 2.6278118e-12 1.8079980e-11 + 2.4165703e-12 1.6133815e-11 + 2.2468936e-12 1.4610403e-11 + 2.1068763e-12 1.3382021e-11 + 1.9888742e-12 1.2368251e-11 + 1.8877300e-12 1.1515801e-11 + 1.7998245e-12 1.0787887e-11 + 1.7225346e-12 1.0158261e-11 + 1.6539079e-12 9.6076627e-12 + 1.5924576e-12 9.1216181e-12 + 1.5370293e-12 8.6890396e-12 + 1.4867112e-12 8.3012679e-12 + 1.4407730e-12 7.9514538e-12 + 1.3986215e-12 7.6340898e-12 + 1.3597695e-12 7.3447022e-12 + 1.3238130e-12 7.0796168e-12 + 1.2904133e-12 6.8357854e-12 + 1.2592847e-12 6.6106558e-12 + 1.2301836e-12 6.4020752e-12 + 1.2029017e-12 6.2082167e-12 + 1.1772591e-12 6.0275126e-12 + 1.1530996e-12 5.8586179e-12 + 1.1302873e-12 5.7003645e-12 + 1.1087027e-12 5.5517407e-12 + 1.0882406e-12 5.4118564e-12 + 1.0688081e-12 5.2799328e-12 + 1.0503226e-12 5.1552803e-12 + 1.0327103e-12 5.0372901e-12 + 1.0159053e-12 4.9254192e-12 + 9.9984835e-13 4.8191848e-12 + 9.8448615e-13 4.7181522e-12 + 9.6977047e-13 4.6219338e-12 + 9.5565765e-13 4.5301774e-12 + 9.4210802e-13 4.4425673e-12 + 9.2908544e-13 4.3588159e-12 + 9.1655692e-13 4.2786626e-12 + 9.0449229e-13 4.2018710e-12 + 8.9286386e-13 4.1282241e-12 + 3.2065868e-12 2.3625221e-11 + 2.8431543e-12 2.0092780e-11 + 2.5752747e-12 1.7574899e-11 + 2.3677179e-12 1.5679993e-11 + 2.2010331e-12 1.4196910e-11 + 2.0635088e-12 1.3001190e-11 + 1.9476261e-12 1.2014488e-11 + 1.8483131e-12 1.1184889e-11 + 1.7620106e-12 1.0476559e-11 + 1.6861400e-12 9.8639300e-12 + 1.6187816e-12 9.3282416e-12 + 1.5584737e-12 8.8553984e-12 + 1.5040816e-12 8.4346042e-12 + 1.4547092e-12 8.0574275e-12 + 1.4096384e-12 7.7171935e-12 + 1.3682865e-12 7.4085431e-12 + 1.3301748e-12 7.1271202e-12 + 1.2949061e-12 6.8693471e-12 + 1.2621478e-12 6.6322561e-12 + 1.2316190e-12 6.4133632e-12 + 1.2030807e-12 6.2105730e-12 + 1.1763281e-12 6.0221047e-12 + 1.1511846e-12 5.8464365e-12 + 1.1274968e-12 5.6822562e-12 + 1.1051311e-12 5.5284294e-12 + 1.0839703e-12 5.3839690e-12 + 1.0639111e-12 5.2480094e-12 + 1.0448622e-12 5.1197933e-12 + 1.0267425e-12 4.9986501e-12 + 1.0094795e-12 4.8839858e-12 + 9.9300867e-13 4.7752735e-12 + 9.7727173e-13 4.6720421e-12 + 9.6221633e-13 4.5738717e-12 + 9.4779516e-13 4.4803800e-12 + 9.3396535e-13 4.3912291e-12 + 9.2068795e-13 4.3061088e-12 + 9.0792751e-13 4.2247416e-12 + 8.9565165e-13 4.1468730e-12 + 8.8383074e-13 4.0722726e-12 + 8.7243762e-13 4.0007290e-12 + 3.1445503e-12 2.2975682e-11 + 2.7872563e-12 1.9535289e-11 + 2.5239613e-12 1.7083408e-11 + 2.3200007e-12 1.5238452e-11 + 2.1562362e-12 1.3794651e-11 + 2.0211453e-12 1.2630752e-11 + 1.9073315e-12 1.1670416e-11 + 1.8098060e-12 1.0863073e-11 + 1.7250688e-12 1.0173817e-11 + 1.6505839e-12 9.5777409e-12 + 1.5844638e-12 9.0565720e-12 + 1.5252715e-12 8.5965871e-12 + 1.4718913e-12 8.1872661e-12 + 1.4234424e-12 7.8204056e-12 + 1.3792188e-12 7.4894964e-12 + 1.3386478e-12 7.1893310e-12 + 1.3012590e-12 6.9156621e-12 + 1.2666619e-12 6.6650069e-12 + 1.2345299e-12 6.4344772e-12 + 1.2045870e-12 6.2216543e-12 + 1.1765984e-12 6.0245002e-12 + 1.1503628e-12 5.8412793e-12 + 1.1257067e-12 5.6705117e-12 + 1.1024796e-12 5.5109209e-12 + 1.0805502e-12 5.3614002e-12 + 1.0598034e-12 5.2209915e-12 + 1.0401377e-12 5.0888516e-12 + 1.0214635e-12 4.9642432e-12 + 1.0037011e-12 4.8465136e-12 + 9.8677953e-13 4.7350862e-12 + 9.7063508e-13 4.6294475e-12 + 9.5521072e-13 4.5291390e-12 + 9.4045503e-13 4.4337510e-12 + 9.2632155e-13 4.3429139e-12 + 9.1276821e-13 4.2562968e-12 + 8.9975676e-13 4.1736002e-12 + 8.8725240e-13 4.0945517e-12 + 8.7522335e-13 4.0189054e-12 + 8.6364053e-13 3.9464365e-12 + 8.5247728e-13 3.8769392e-12 + 3.0839688e-12 2.2343419e-11 + 2.7326630e-12 1.8992716e-11 + 2.4738418e-12 1.6605148e-11 + 2.2733911e-12 1.4808852e-11 + 2.1124769e-12 1.3403328e-11 + 1.9797613e-12 1.2270426e-11 + 1.8679671e-12 1.1335777e-11 + 1.7721868e-12 1.0550110e-11 + 1.6889778e-12 9.8794283e-12 + 1.6158460e-12 9.2994707e-12 + 1.5509353e-12 8.7924453e-12 + 1.4928324e-12 8.3449805e-12 + 1.4404405e-12 7.9468340e-12 + 1.3928933e-12 7.5900131e-12 + 1.3494971e-12 7.2681886e-12 + 1.3096887e-12 6.9762809e-12 + 1.2730057e-12 6.7101595e-12 + 1.2390647e-12 6.4664339e-12 + 1.2075443e-12 6.2422910e-12 + 1.1781736e-12 6.0353774e-12 + 1.1507218e-12 5.8437081e-12 + 1.1249912e-12 5.6655959e-12 + 1.1008113e-12 5.4995975e-12 + 1.0780342e-12 5.3444713e-12 + 1.0565310e-12 5.1991427e-12 + 1.0361885e-12 5.0626762e-12 + 1.0169073e-12 4.9342533e-12 + 9.9859918e-13 4.8131556e-12 + 9.8118589e-13 4.6987486e-12 + 9.6459768e-13 4.5904707e-12 + 9.4877211e-13 4.4878219e-12 + 9.3365311e-13 4.3903569e-12 + 9.1919020e-13 4.2976766e-12 + 9.0533778e-13 4.2094224e-12 + 8.9205450e-13 4.1252711e-12 + 8.7930286e-13 4.0449312e-12 + 8.6704867e-13 3.9681379e-12 + 8.5526072e-13 3.8946529e-12 + 8.4391049e-13 3.8242577e-12 + 8.3297180e-13 3.7567522e-12 + 3.0248063e-12 2.1727961e-11 + 2.6793425e-12 1.8464672e-11 + 2.4248872e-12 1.6139770e-11 + 2.2278621e-12 1.4390888e-11 + 2.0697302e-12 1.3022647e-11 + 1.9393331e-12 1.1919943e-11 + 1.8295105e-12 1.1010311e-11 + 1.7354340e-12 1.0245760e-11 + 1.6537173e-12 9.5931721e-12 + 1.5819068e-12 9.0289140e-12 + 1.5181770e-12 8.5356578e-12 + 1.4611381e-12 8.1003863e-12 + 1.4097111e-12 7.7131189e-12 + 1.3630446e-12 7.3660750e-12 + 1.3204563e-12 7.0530927e-12 + 1.2813927e-12 6.7692245e-12 + 1.2453992e-12 6.5104519e-12 + 1.2120988e-12 6.2734718e-12 + 1.1811759e-12 6.0555453e-12 + 1.1523641e-12 5.8543835e-12 + 1.1254366e-12 5.6680521e-12 + 1.1001992e-12 5.4949114e-12 + 1.0764844e-12 5.3335550e-12 + 1.0541469e-12 5.1827753e-12 + 1.0330600e-12 5.0415248e-12 + 1.0131127e-12 4.9088952e-12 + 9.9420699e-13 4.7840903e-12 + 9.7625645e-13 4.6664080e-12 + 9.5918420e-13 4.5552342e-12 + 9.4292170e-13 4.4500201e-12 + 9.2740764e-13 4.3502804e-12 + 9.1258695e-13 4.2555824e-12 + 8.9841007e-13 4.1655366e-12 + 8.8483220e-13 4.0797933e-12 + 8.7181277e-13 3.9980412e-12 + 8.5931492e-13 3.9199945e-12 + 8.4730512e-13 3.8453965e-12 + 8.3575272e-13 3.7740143e-12 + 8.2462972e-13 3.7056351e-12 + 8.1391042e-13 3.6400656e-12 + 2.9670276e-12 2.1128873e-11 + 2.6272634e-12 1.7950758e-11 + 2.3770689e-12 1.5686926e-11 + 2.1833874e-12 1.3984237e-11 + 2.0279711e-12 1.2652329e-11 + 1.8998374e-12 1.1579038e-11 + 1.7919395e-12 1.0693778e-11 + 1.6995267e-12 9.9497926e-12 + 1.6192671e-12 9.3148238e-12 + 1.5487469e-12 8.7658573e-12 + 1.4861704e-12 8.2860123e-12 + 1.4301704e-12 7.8626120e-12 + 1.3796859e-12 7.4859376e-12 + 1.3338795e-12 7.1484139e-12 + 1.2920802e-12 6.8440402e-12 + 1.2537439e-12 6.5680000e-12 + 1.2184237e-12 6.3163803e-12 + 1.1857491e-12 6.0859652e-12 + 1.1554097e-12 5.8740909e-12 + 1.1271438e-12 5.6785273e-12 + 1.1007285e-12 5.4973932e-12 + 1.0759730e-12 5.3290898e-12 + 1.0527126e-12 5.1722499e-12 + 1.0308045e-12 5.0257004e-12 + 1.0101244e-12 4.8884202e-12 + 9.9056293e-13 4.7595248e-12 + 9.7202413e-13 4.6382382e-12 + 9.5442293e-13 4.5238804e-12 + 9.3768384e-13 4.4158520e-12 + 9.2173954e-13 4.3136192e-12 + 9.0652979e-13 4.2167105e-12 + 8.9200054e-13 4.1247040e-12 + 8.7810308e-13 4.0372207e-12 + 8.6479343e-13 3.9539229e-12 + 8.5203175e-13 3.8745032e-12 + 8.3978186e-13 3.7986873e-12 + 8.2801082e-13 3.7262239e-12 + 8.1668854e-13 3.6568869e-12 + 8.0578753e-13 3.5904697e-12 + 7.9528257e-13 3.5267835e-12 + 2.9105982e-12 2.0545716e-11 + 2.5763951e-12 1.7450612e-11 + 2.3303589e-12 1.5246284e-11 + 2.1399410e-12 1.3588607e-11 + 1.9871754e-12 1.2292091e-11 + 1.8612512e-12 1.1247457e-11 + 1.7552326e-12 1.0385935e-11 + 1.6644443e-12 9.6619836e-12 + 1.5856075e-12 9.0441769e-12 + 1.5163475e-12 8.5101004e-12 + 1.4548973e-12 8.0433149e-12 + 1.3999119e-12 7.6314724e-12 + 1.3503478e-12 7.2651134e-12 + 1.3053813e-12 6.9368588e-12 + 1.2643527e-12 6.6408660e-12 + 1.2267267e-12 6.3724460e-12 + 1.1920642e-12 6.1277894e-12 + 1.1600008e-12 5.9037662e-12 + 1.1302314e-12 5.6977831e-12 + 1.1024988e-12 5.5076687e-12 + 1.0765838e-12 5.3315907e-12 + 1.0522990e-12 5.1679969e-12 + 1.0294825e-12 5.0155547e-12 + 1.0079940e-12 4.8731203e-12 + 9.8771113e-13 4.7397034e-12 + 9.6852674e-13 4.6144411e-12 + 9.5034636e-13 4.4965796e-12 + 9.3308645e-13 4.3854560e-12 + 9.1667284e-13 4.2804880e-12 + 9.0103940e-13 4.1811562e-12 + 8.8612696e-13 4.0870018e-12 + 8.7188242e-13 3.9976133e-12 + 8.5825794e-13 3.9126235e-12 + 8.4521034e-13 3.8317023e-12 + 8.3270048e-13 3.7545535e-12 + 8.2069283e-13 3.6809067e-12 + 8.0915505e-13 3.6105208e-12 + 7.9805761e-13 3.5431733e-12 + 7.8737349e-13 3.4786642e-12 + 7.7707795e-13 3.4168101e-12 + 2.8554844e-12 1.9978075e-11 + 2.5267077e-12 1.6963867e-11 + 2.2847299e-12 1.4817519e-11 + 2.0974974e-12 1.3203704e-11 + 1.9473195e-12 1.1941667e-11 + 1.8235523e-12 1.0924947e-11 + 1.7193687e-12 1.0086550e-11 + 1.6301667e-12 9.3821097e-12 + 1.5527195e-12 8.7810173e-12 + 1.4846900e-12 8.2614452e-12 + 1.4243397e-12 7.8073757e-12 + 1.3703453e-12 7.4067904e-12 + 1.3216801e-12 7.0504741e-12 + 1.2775339e-12 6.7312433e-12 + 1.2372579e-12 6.4434099e-12 + 1.2003259e-12 6.1824099e-12 + 1.1663057e-12 5.9445321e-12 + 1.1348393e-12 5.7267298e-12 + 1.1056268e-12 5.5264797e-12 + 1.0784151e-12 5.3416684e-12 + 1.0529890e-12 5.1705145e-12 + 1.0291640e-12 5.0115031e-12 + 1.0067811e-12 4.8633402e-12 + 9.8570245e-13 4.7249116e-12 + 9.6580782e-13 4.5952527e-12 + 9.4699179e-13 4.4735259e-12 + 9.2916157e-13 4.3589976e-12 + 9.1223510e-13 4.2510220e-12 + 8.9613947e-13 4.1490316e-12 + 8.8080973e-13 4.0525217e-12 + 8.6618776e-13 3.9610469e-12 + 8.5222137e-13 3.8742052e-12 + 8.3886360e-13 3.7916418e-12 + 8.2607202e-13 3.7130336e-12 + 8.1380819e-13 3.6380921e-12 + 8.0203723e-13 3.5665566e-12 + 7.9072736e-13 3.4981902e-12 + 7.7984960e-13 3.4327782e-12 + 7.6937741e-13 3.3701251e-12 + 7.5928650e-13 3.3100534e-12 + 2.8016533e-12 1.9425540e-11 + 2.4781716e-12 1.6490165e-11 + 2.2401549e-12 1.4400320e-11 + 2.0560317e-12 1.2829237e-11 + 1.9083799e-12 1.1600794e-11 + 1.7867189e-12 1.0611270e-11 + 1.6843269e-12 9.7953976e-12 + 1.5966741e-12 9.1099635e-12 + 1.5205840e-12 8.5251497e-12 + 1.4537564e-12 8.0196985e-12 + 1.3944803e-12 7.5780140e-12 + 1.3414537e-12 7.1883890e-12 + 1.2936664e-12 6.8418521e-12 + 1.2503214e-12 6.5314072e-12 + 1.2107806e-12 6.2515182e-12 + 1.1745263e-12 5.9977387e-12 + 1.1411337e-12 5.7664594e-12 + 1.1102505e-12 5.5547142e-12 + 1.0815820e-12 5.3600451e-12 + 1.0548793e-12 5.1803963e-12 + 1.0299307e-12 5.0140336e-12 + 1.0065549e-12 4.8594812e-12 + 9.8459573e-13 4.7154829e-12 + 9.6391754e-13 4.5809524e-12 + 9.4440216e-13 4.4549526e-12 + 9.2594603e-13 4.3366660e-12 + 9.0845792e-13 4.2253801e-12 + 8.9185721e-13 4.1204660e-12 + 8.7607226e-13 4.0213730e-12 + 8.6103924e-13 3.9276096e-12 + 8.4670105e-13 3.8387405e-12 + 8.3300644e-13 3.7543783e-12 + 8.1990925e-13 3.6741740e-12 + 8.0736782e-13 3.5978161e-12 + 7.9534439e-13 3.5250229e-12 + 7.8380469e-13 3.4555410e-12 + 7.7271752e-13 3.3891389e-12 + 7.6205442e-13 3.3256099e-12 + 7.5178933e-13 3.2647620e-12 + 7.4189838e-13 3.2064230e-12 + 2.7490724e-12 1.8887713e-11 + 2.4307581e-12 1.6029165e-11 + 2.1966076e-12 1.3994382e-11 + 2.0155196e-12 1.2464931e-11 + 1.8703340e-12 1.1269220e-11 + 1.7507294e-12 1.0306186e-11 + 1.6500872e-12 9.5122543e-12 + 1.5639473e-12 8.8453308e-12 + 1.4891826e-12 8.2763735e-12 + 1.4235288e-12 7.7846753e-12 + 1.3653019e-12 7.3550516e-12 + 1.3132205e-12 6.9760993e-12 + 1.2662907e-12 6.6390828e-12 + 1.2237284e-12 6.3371927e-12 + 1.1849057e-12 6.0650366e-12 + 1.1493135e-12 5.8182879e-12 + 1.1165339e-12 5.5934321e-12 + 1.0862205e-12 5.3875819e-12 + 1.0580835e-12 5.1983450e-12 + 1.0318780e-12 5.0237212e-12 + 1.0073960e-12 4.8620211e-12 + 9.8445917e-13 4.7118097e-12 + 9.6291393e-13 4.5718634e-12 + 9.4262698e-13 4.4411273e-12 + 9.2348216e-13 4.3186862e-12 + 9.0537764e-13 4.2037482e-12 + 8.8822380e-13 4.0956167e-12 + 8.7194136e-13 3.9936825e-12 + 8.5645996e-13 3.8974080e-12 + 8.4171686e-13 3.8063159e-12 + 8.2765595e-13 3.7199836e-12 + 8.1422688e-13 3.6380317e-12 + 8.0138432e-13 3.5601236e-12 + 7.8908731e-13 3.4859540e-12 + 7.7729878e-13 3.4152504e-12 + 7.6598507e-13 3.3477657e-12 + 7.5511553e-13 3.2832756e-12 + 7.4466220e-13 3.2215770e-12 + 7.3459949e-13 3.1624852e-12 + 7.2490397e-13 3.1058324e-12 + 2.6977101e-12 1.8364203e-11 + 2.3844389e-12 1.5580532e-11 + 2.1540622e-12 1.3599402e-11 + 1.9759372e-12 1.2110519e-11 + 1.8331594e-12 1.0946690e-11 + 1.7155629e-12 1.0009465e-11 + 1.6166296e-12 9.2369071e-12 + 1.5319673e-12 8.5880132e-12 + 1.4584971e-12 8.0344958e-12 + 1.3939898e-12 7.5561951e-12 + 1.3367877e-12 7.1383142e-12 + 1.2856296e-12 6.7697531e-12 + 1.2395374e-12 6.4420073e-12 + 1.1977396e-12 6.1484454e-12 + 1.1596184e-12 5.8838183e-12 + 1.1246730e-12 5.6439144e-12 + 1.0924924e-12 5.4253110e-12 + 1.0627357e-12 5.2251992e-12 + 1.0351179e-12 5.0412500e-12 + 1.0093983e-12 4.8715167e-12 + 9.8537216e-13 4.7143538e-12 + 9.6286425e-13 4.5683684e-12 + 9.4172346e-13 4.4323654e-12 + 9.2181880e-13 4.3053207e-12 + 9.0303603e-13 4.1863438e-12 + 8.8527507e-13 4.0746619e-12 + 8.6844783e-13 3.9696003e-12 + 8.5247639e-13 3.8705656e-12 + 8.3729158e-13 3.7770343e-12 + 8.2283176e-13 3.6885414e-12 + 8.0904180e-13 3.6046759e-12 + 7.9587221e-13 3.5250700e-12 + 7.8327846e-13 3.4493945e-12 + 7.7122031e-13 3.3773546e-12 + 7.5966134e-13 3.3086835e-12 + 7.4856848e-13 3.2431410e-12 + 7.3791163e-13 3.1805099e-12 + 7.2766331e-13 3.1205926e-12 + 7.1779839e-13 3.0632093e-12 + 7.0829387e-13 3.0081959e-12 + 2.6475352e-12 1.7854638e-11 + 2.3391860e-12 1.5143940e-11 + 2.1124932e-12 1.3215090e-11 + 1.9372609e-12 1.1765733e-11 + 1.7968343e-12 1.0632970e-11 + 1.6811990e-12 9.7208857e-12 + 1.5839347e-12 8.9691474e-12 + 1.5007157e-12 8.3378147e-12 + 1.4285099e-12 7.7993384e-12 + 1.3651224e-12 7.3340773e-12 + 1.3089212e-12 6.9276323e-12 + 1.2586650e-12 6.5691904e-12 + 1.2133911e-12 6.2504706e-12 + 1.1723401e-12 5.9650169e-12 + 1.1349044e-12 5.7077198e-12 + 1.1005910e-12 5.4744786e-12 + 1.0689955e-12 5.2619618e-12 + 1.0397828e-12 5.0674363e-12 + 1.0126724e-12 4.8886338e-12 + 9.8742748e-13 4.7236590e-12 + 9.6384680e-13 4.5709134e-12 + 9.4175796e-13 4.4290400e-12 + 9.2101238e-13 4.2968744e-12 + 9.0148124e-13 4.1734217e-12 + 8.8305225e-13 4.0578148e-12 + 8.6562700e-13 3.9493037e-12 + 8.4911889e-13 3.8472295e-12 + 8.3345134e-13 3.7510137e-12 + 8.1855636e-13 3.6601508e-12 + 8.0437336e-13 3.5741860e-12 + 7.9084818e-13 3.4927214e-12 + 7.7793217e-13 3.4153975e-12 + 7.6558157e-13 3.3418943e-12 + 7.5375686e-13 3.2719255e-12 + 7.4242225e-13 3.2052319e-12 + 7.3154524e-13 3.1415794e-12 + 7.2109626e-13 3.0807566e-12 + 7.1104832e-13 3.0225717e-12 + 7.0137673e-13 2.9668494e-12 + 6.9205889e-13 2.9134305e-12 + 2.5985173e-12 1.7358655e-11 + 2.2949724e-12 1.4719071e-11 + 2.0718758e-12 1.2841164e-11 + 1.8994679e-12 1.1430317e-11 + 1.7613373e-12 1.0327820e-11 + 1.6476175e-12 9.4402263e-12 + 1.5519834e-12 8.7087698e-12 + 1.4701741e-12 8.0945398e-12 + 1.3992034e-12 7.5707106e-12 + 1.3369098e-12 7.1181541e-12 + 1.2816864e-12 6.7228440e-12 + 1.2323112e-12 6.3742540e-12 + 1.1878367e-12 6.0643226e-12 + 1.1475155e-12 5.7867627e-12 + 1.1107494e-12 5.5366022e-12 + 1.0770535e-12 5.3098460e-12 + 1.0460299e-12 5.1032543e-12 + 1.0173488e-12 4.9141655e-12 + 9.9073413e-13 4.7403725e-12 + 9.6595311e-13 4.5800310e-12 + 9.4280770e-13 4.4315833e-12 + 9.2112836e-13 4.2937103e-12 + 9.0076897e-13 4.1652809e-12 + 8.8160283e-13 4.0453231e-12 + 8.6351954e-13 3.9329955e-12 + 8.4642234e-13 3.8275679e-12 + 8.3022609e-13 3.7283998e-12 + 8.1485551e-13 3.6349297e-12 + 8.0024377e-13 3.5466613e-12 + 7.8633131e-13 3.4631575e-12 + 7.7306489e-13 3.3840271e-12 + 7.6039672e-13 3.3089231e-12 + 7.4828378e-13 3.2375339e-12 + 7.3668723e-13 3.1695797e-12 + 7.2557191e-13 3.1048092e-12 + 7.1490588e-13 3.0429946e-12 + 7.0466008e-13 2.9839310e-12 + 6.9480801e-13 2.9274307e-12 + 6.8532541e-13 2.8733241e-12 + 6.7619006e-13 2.8214566e-12 + 2.5506265e-12 1.6875893e-11 + 2.2517712e-12 1.4305610e-11 + 2.0321855e-12 1.2477348e-11 + 1.8625356e-12 1.1104026e-11 + 1.7266475e-12 1.0031014e-11 + 1.6147987e-12 9.1672814e-12 + 1.5207570e-12 8.4555778e-12 + 1.4403248e-12 7.8580048e-12 + 1.3705605e-12 7.3484430e-12 + 1.3093355e-12 6.9082551e-12 + 1.2550674e-12 6.5237881e-12 + 1.2065531e-12 6.1847918e-12 + 1.1628596e-12 5.8834160e-12 + 1.1232514e-12 5.6135426e-12 + 1.0871398e-12 5.3703278e-12 + 1.0540473e-12 5.1498861e-12 + 1.0235825e-12 4.9490618e-12 + 9.9542082e-13 4.7652651e-12 + 9.6929066e-13 4.5963481e-12 + 9.4496295e-13 4.4405142e-12 + 9.2224290e-13 4.2962500e-12 + 9.0096374e-13 4.1622704e-12 + 8.8098173e-13 4.0374748e-12 + 8.6217230e-13 3.9209180e-12 + 8.4442684e-13 3.8117826e-12 + 8.2765025e-13 3.7093554e-12 + 8.1175878e-13 3.6130150e-12 + 7.9667844e-13 3.5222150e-12 + 7.8234352e-13 3.4364723e-12 + 7.6869548e-13 3.3553614e-12 + 7.5568198e-13 3.2785029e-12 + 7.4325606e-13 3.2055580e-12 + 7.3137542e-13 3.1362243e-12 + 7.2000190e-13 3.0702301e-12 + 7.0910093e-13 3.0073306e-12 + 6.9864115e-13 2.9473043e-12 + 6.8859398e-13 2.8899509e-12 + 6.7893339e-13 2.8350897e-12 + 6.6963553e-13 2.7825548e-12 + 6.6067858e-13 2.7321958e-12 + 2.5038334e-12 1.6406006e-11 + 2.2095562e-12 1.3903263e-11 + 1.9933986e-12 1.2123373e-11 + 1.8264421e-12 1.0786613e-11 + 1.6927444e-12 9.7423270e-12 + 1.5827232e-12 8.9018375e-12 + 1.4902372e-12 8.2093737e-12 + 1.4111503e-12 7.6280284e-12 + 1.3425646e-12 7.1323578e-12 + 1.2823836e-12 6.7042175e-12 + 1.2290489e-12 6.3303092e-12 + 1.1813756e-12 6.0006533e-12 + 1.1384454e-12 5.7076079e-12 + 1.0995340e-12 5.4452177e-12 + 1.0640619e-12 5.2087650e-12 + 1.0315592e-12 4.9944690e-12 + 1.0016405e-12 4.7992596e-12 + 9.7398640e-13 4.6206142e-12 + 9.4832973e-13 4.4564417e-12 + 9.2444504e-13 4.3049956e-12 + 9.0214070e-13 4.1648036e-12 + 8.8125262e-13 4.0346125e-12 + 8.6163944e-13 3.9133531e-12 + 8.4317862e-13 3.8001068e-12 + 8.2576335e-13 3.6940759e-12 + 8.0930010e-13 3.5945687e-12 + 7.9370653e-13 3.5009790e-12 + 7.7890988e-13 3.4127761e-12 + 7.6484554e-13 3.3294911e-12 + 7.5145597e-13 3.2507083e-12 + 7.3868972e-13 3.1760597e-12 + 7.2650059e-13 3.1052158e-12 + 7.1484705e-13 3.0378818e-12 + 7.0369156e-13 2.9737939e-12 + 6.9300015e-13 2.9127134e-12 + 6.8274200e-13 2.8544265e-12 + 6.7288902e-13 2.7987375e-12 + 6.6341562e-13 2.7454704e-12 + 6.5429838e-13 2.6944639e-12 + 6.4551585e-13 2.6455717e-12 + 2.4581090e-12 1.5948651e-11 + 2.1683015e-12 1.3511731e-11 + 1.9554914e-12 1.1778981e-11 + 1.7911657e-12 1.0477844e-11 + 1.6596077e-12 9.4615447e-12 + 1.5513720e-12 8.6436950e-12 + 1.4604058e-12 7.9699758e-12 + 1.3826332e-12 7.4044345e-12 + 1.3151992e-12 6.9222934e-12 + 1.2560383e-12 6.5058821e-12 + 1.2036156e-12 6.1422547e-12 + 1.1567643e-12 5.8216947e-12 + 1.1145800e-12 5.5367613e-12 + 1.0763496e-12 5.2816543e-12 + 1.0415025e-12 5.0517857e-12 + 1.0095762e-12 4.8434732e-12 + 9.8019121e-13 4.6537276e-12 + 9.5303326e-13 4.4800949e-12 + 9.2783935e-13 4.3205417e-12 + 9.0438766e-13 4.1733663e-12 + 8.8248961e-13 4.0371356e-12 + 8.6198378e-13 3.9106325e-12 + 8.4273109e-13 3.7928152e-12 + 8.2461100e-13 3.6827885e-12 + 8.0751848e-13 3.5797787e-12 + 7.9136152e-13 3.4831119e-12 + 7.7605915e-13 3.3921988e-12 + 7.6153981e-13 3.3065234e-12 + 7.4773999e-13 3.2256283e-12 + 7.3460311e-13 3.1491109e-12 + 7.2207856e-13 3.0766118e-12 + 7.1012095e-13 3.0078109e-12 + 6.9868943e-13 2.9424229e-12 + 6.8774710e-13 2.8801889e-12 + 6.7726059e-13 2.8208791e-12 + 6.6719957e-13 2.7642834e-12 + 6.5753645e-13 2.7102132e-12 + 6.4824608e-13 2.6584961e-12 + 6.3930544e-13 2.6089762e-12 + 6.3069344e-13 2.5615110e-12 + 2.4134251e-12 1.5503506e-11 + 2.1279818e-12 1.3130734e-11 + 1.9184410e-12 1.1443915e-11 + 1.7566852e-12 1.0177486e-11 + 1.6272177e-12 9.1884557e-12 + 1.5207265e-12 8.3926618e-12 + 1.4312452e-12 7.7371975e-12 + 1.3547569e-12 7.1870500e-12 + 1.2884482e-12 6.7180830e-12 + 1.2302841e-12 6.3130958e-12 + 1.1787527e-12 5.9594798e-12 + 1.1327048e-12 5.6477750e-12 + 1.0912496e-12 5.3707377e-12 + 1.0536848e-12 5.1227230e-12 + 1.0194486e-12 4.8992624e-12 + 9.8808563e-13 4.6967746e-12 + 9.5922237e-13 4.5123480e-12 + 9.3254936e-13 4.3435966e-12 + 9.0780777e-13 4.1885366e-12 + 8.8477931e-13 4.0455175e-12 + 8.6327839e-13 3.9131425e-12 + 8.4314620e-13 3.7902272e-12 + 8.2424589e-13 3.6757581e-12 + 8.0645890e-13 3.5688659e-12 + 7.8968188e-13 3.4687955e-12 + 7.7382434e-13 3.3748927e-12 + 7.5880666e-13 3.2865840e-12 + 7.4455845e-13 3.2033671e-12 + 7.3101725e-13 3.1247980e-12 + 7.1812741e-13 3.0504835e-12 + 7.0583919e-13 2.9800758e-12 + 6.9410795e-13 2.9132630e-12 + 6.8289352e-13 2.8497670e-12 + 6.7215962e-13 2.7893370e-12 + 6.6187345e-13 2.7317484e-12 + 6.5200519e-13 2.6767981e-12 + 6.4252772e-13 2.6243015e-12 + 6.3341632e-13 2.5740926e-12 + 6.2464835e-13 2.5260186e-12 + 6.1620309e-13 2.4799408e-12 + 2.3697538e-12 1.5070248e-11 + 2.0885723e-12 1.2759988e-11 + 1.8822250e-12 1.1117926e-11 + 1.7229798e-12 9.8853182e-12 + 1.5955549e-12 8.9228518e-12 + 1.4907684e-12 8.1485443e-12 + 1.4027381e-12 7.5108628e-12 + 1.3275048e-12 6.9757055e-12 + 1.2622957e-12 6.5195714e-12 + 1.2051059e-12 6.1257066e-12 + 1.1544458e-12 5.7818385e-12 + 1.1091831e-12 5.4787568e-12 + 1.0684406e-12 5.2094079e-12 + 1.0315264e-12 4.9682974e-12 + 9.9788744e-13 4.7510763e-12 + 9.6707516e-13 4.5542574e-12 + 9.3872186e-13 4.3750084e-12 + 9.1252289e-13 4.2110051e-12 + 8.8822347e-13 4.0603213e-12 + 8.6560873e-13 3.9213454e-12 + 8.4449604e-13 3.7927233e-12 + 8.2472912e-13 3.6732987e-12 + 8.0617331e-13 3.5620891e-12 + 7.8871196e-13 3.4582455e-12 + 7.7224341e-13 3.3610353e-12 + 7.5667864e-13 3.2698216e-12 + 7.4193931e-13 3.1840465e-12 + 7.2795620e-13 3.1032212e-12 + 7.1466788e-13 3.0269139e-12 + 7.0201962e-13 2.9547436e-12 + 6.8996250e-13 2.8863705e-12 + 6.7845261e-13 2.8214909e-12 + 6.6745046e-13 2.7598353e-12 + 6.5692040e-13 2.7011601e-12 + 6.4683013e-13 2.6452459e-12 + 6.3715036e-13 2.5918959e-12 + 6.2785444e-13 2.5409307e-12 + 6.1891804e-13 2.4921875e-12 + 6.1031893e-13 2.4455194e-12 + 6.0203673e-13 2.4007913e-12 + 2.3270676e-12 1.4648558e-11 + 2.0500485e-12 1.2399227e-11 + 1.8468210e-12 1.0800780e-11 + 1.6900292e-12 9.6011238e-12 + 1.5646003e-12 8.6645354e-12 + 1.4614796e-12 7.9111569e-12 + 1.3748674e-12 7.2907953e-12 + 1.3008606e-12 6.7702396e-12 + 1.2367265e-12 6.3266008e-12 + 1.1804890e-12 5.9435694e-12 + 1.1306805e-12 5.6091943e-12 + 1.0861855e-12 5.3145068e-12 + 1.0461397e-12 5.0526434e-12 + 1.0098616e-12 4.8182543e-12 + 9.7680647e-13 4.6071061e-12 + 9.4653256e-13 4.4158063e-12 + 9.1867782e-13 4.2415961e-12 + 8.9294229e-13 4.0822157e-12 + 8.6907515e-13 3.9357893e-12 + 8.4686490e-13 3.8007506e-12 + 8.2613178e-13 3.6757781e-12 + 8.0672199e-13 3.5597515e-12 + 7.8850303e-13 3.4517122e-12 + 7.7136010e-13 3.3508351e-12 + 7.5519318e-13 3.2564084e-12 + 7.3991468e-13 3.1678104e-12 + 7.2544756e-13 3.0845004e-12 + 7.1172370e-13 3.0060026e-12 + 6.9868268e-13 2.9318962e-12 + 6.8627067e-13 2.8618111e-12 + 6.7443955e-13 2.7954164e-12 + 6.6314614e-13 2.7324184e-12 + 6.5235161e-13 2.6725529e-12 + 6.4202087e-13 2.6155840e-12 + 6.3212220e-13 2.5612985e-12 + 6.2262678e-13 2.5095048e-12 + 6.1350840e-13 2.4600287e-12 + 6.0474315e-13 2.4127115e-12 + 5.9630917e-13 2.3674104e-12 + 5.8818644e-13 2.3239945e-12 + 2.2853397e-12 1.4238140e-11 + 2.0123867e-12 1.2048183e-11 + 1.8122075e-12 1.0492237e-11 + 1.6578133e-12 9.3246868e-12 + 1.5343352e-12 8.4133097e-12 + 1.4328426e-12 7.6803202e-12 + 1.3476165e-12 7.0768293e-12 + 1.2748086e-12 6.5704936e-12 + 1.2117252e-12 6.1390248e-12 + 1.1564189e-12 5.7665412e-12 + 1.1074430e-12 5.4414092e-12 + 1.0636986e-12 5.1548947e-12 + 1.0243339e-12 4.9003194e-12 + 9.8867777e-13 4.6724734e-12 + 9.5619344e-13 4.4672376e-12 + 9.2644592e-13 4.2813086e-12 + 8.9907863e-13 4.1120029e-12 + 8.7379623e-13 3.9571220e-12 + 8.5035176e-13 3.8148388e-12 + 8.2853702e-13 3.6836303e-12 + 8.0817507e-13 3.5622111e-12 + 7.8911451e-13 3.4494908e-12 + 7.7122495e-13 3.3445366e-12 + 7.5439341e-13 3.2465468e-12 + 7.3852148e-13 3.1548272e-12 + 7.2352297e-13 3.0687751e-12 + 7.0932206e-13 2.9878633e-12 + 6.9585176e-13 2.9116290e-12 + 6.8305262e-13 2.8396641e-12 + 6.7087168e-13 2.7716070e-12 + 6.5926161e-13 2.7071374e-12 + 6.4817993e-13 2.6459687e-12 + 6.3758845e-13 2.5878442e-12 + 6.2745267e-13 2.5325354e-12 + 6.1774139e-13 2.4798341e-12 + 6.0842627e-13 2.4295540e-12 + 5.9948154e-13 2.3815255e-12 + 5.9088369e-13 2.3355958e-12 + 5.8261123e-13 2.2916241e-12 + 5.7464447e-13 2.2494846e-12 + 2.2445435e-12 1.3838695e-11 + 1.9755631e-12 1.1706598e-11 + 1.7783632e-12 1.0192070e-11 + 1.6263124e-12 9.0557997e-12 + 1.5047412e-12 8.1689859e-12 + 1.4048401e-12 7.4558588e-12 + 1.3209689e-12 6.8687991e-12 + 1.2493331e-12 6.3763119e-12 + 1.1872771e-12 5.9566950e-12 + 1.1328812e-12 5.5944835e-12 + 1.0847195e-12 5.2783501e-12 + 1.0417090e-12 4.9997956e-12 + 1.0030104e-12 4.7523150e-12 + 9.6796246e-13 4.5308380e-12 + 9.3603630e-13 4.3313573e-12 + 9.0680351e-13 4.1506563e-12 + 8.7991289e-13 3.9861254e-12 + 8.5507360e-13 3.8356228e-12 + 8.3204247e-13 3.6973719e-12 + 8.1061452e-13 3.5698906e-12 + 7.9061556e-13 3.4519296e-12 + 7.7189656e-13 3.3424262e-12 + 7.5432918e-13 3.2404739e-12 + 7.3780222e-13 3.1452925e-12 + 7.2221882e-13 3.0562076e-12 + 7.0749418e-13 2.9726317e-12 + 6.9355368e-13 2.8940532e-12 + 6.8033141e-13 2.8200210e-12 + 6.6776886e-13 2.7501386e-12 + 6.5581395e-13 2.6840550e-12 + 6.4442009e-13 2.6214579e-12 + 6.3354553e-13 2.5620691e-12 + 6.2315267e-13 2.5056383e-12 + 6.1320761e-13 2.4519436e-12 + 6.0367962e-13 2.4007832e-12 + 5.9454087e-13 2.3519750e-12 + 5.8576600e-13 2.3053546e-12 + 5.7733189e-13 2.2607732e-12 + 5.6921741e-13 2.2180950e-12 + 5.6140322e-13 2.1771959e-12 + 2.2046532e-12 1.3449932e-11 + 1.9395549e-12 1.1374229e-11 + 1.7452670e-12 9.9000551e-12 + 1.5955071e-12 8.7942645e-12 + 1.4758001e-12 7.9313799e-12 + 1.3774549e-12 7.2375979e-12 + 1.2949085e-12 6.6665434e-12 + 1.2244189e-12 6.1875454e-12 + 1.1633676e-12 5.7794706e-12 + 1.1098620e-12 5.4272610e-12 + 1.0624967e-12 5.1198912e-12 + 1.0202039e-12 4.8490847e-12 + 9.8215674e-13 4.6085106e-12 + 9.4770352e-13 4.3932354e-12 + 9.1632325e-13 4.1993568e-12 + 8.8759386e-13 4.0237448e-12 + 8.6116943e-13 3.8638599e-12 + 8.3676352e-13 3.7176175e-12 + 8.1413668e-13 3.5832921e-12 + 7.9308706e-13 3.4594387e-12 + 7.7344317e-13 3.3448417e-12 + 7.5505828e-13 3.2384687e-12 + 7.3780606e-13 3.1394373e-12 + 7.2157705e-13 3.0469890e-12 + 7.0627592e-13 2.9604669e-12 + 6.9181920e-13 2.8793005e-12 + 6.7813345e-13 2.8029918e-12 + 6.6515382e-13 2.7311022e-12 + 6.5282274e-13 2.6632462e-12 + 6.4108895e-13 2.5990819e-12 + 6.2990662e-13 2.5383060e-12 + 6.1923467e-13 2.4806474e-12 + 6.0903613e-13 2.4258647e-12 + 5.9927762e-13 2.3737398e-12 + 5.8992896e-13 2.3240774e-12 + 5.8096274e-13 2.2767006e-12 + 5.7235404e-13 2.2314501e-12 + 5.6408012e-13 2.1881801e-12 + 5.5612021e-13 2.1467590e-12 + 5.4845527e-13 2.1070667e-12 + 2.1656432e-12 1.3071572e-11 + 1.9043394e-12 1.1050824e-11 + 1.7128985e-12 9.6159808e-12 + 1.5653785e-12 8.5398844e-12 + 1.4474942e-12 7.7003114e-12 + 1.3506705e-12 7.0253751e-12 + 1.2694197e-12 6.4699100e-12 + 1.2000511e-12 6.0040476e-12 + 1.1399825e-12 5.6072109e-12 + 1.0873477e-12 5.2647441e-12 + 1.0407612e-12 4.9659051e-12 + 9.9917052e-13 4.7026438e-12 + 9.6176051e-13 4.4687926e-12 + 9.2788903e-13 4.2595549e-12 + 8.9704271e-13 4.0711287e-12 + 8.6880572e-13 3.9004696e-12 + 8.4283732e-13 3.7451066e-12 + 8.1885535e-13 3.6030123e-12 + 7.9662401e-13 3.4725057e-12 + 7.7594451e-13 3.3521820e-12 + 7.5664799e-13 3.2408595e-12 + 7.3858999e-13 3.1375325e-12 + 7.2164612e-13 3.0413434e-12 + 7.0570863e-13 2.9515540e-12 + 6.9068367e-13 2.8675252e-12 + 6.7648909e-13 2.7887031e-12 + 6.6305261e-13 2.7146021e-12 + 6.5031038e-13 2.6447970e-12 + 6.3820577e-13 2.5789117e-12 + 6.2668832e-13 2.5166141e-12 + 6.1571296e-13 2.4576097e-12 + 6.0523925e-13 2.4016354e-12 + 5.9523083e-13 2.3484544e-12 + 5.8565486e-13 2.2978567e-12 + 5.7648164e-13 2.2496510e-12 + 5.6768423e-13 2.2036668e-12 + 5.5923811e-13 2.1597479e-12 + 5.5112093e-13 2.1177529e-12 + 5.4331224e-13 2.0775546e-12 + 5.3579334e-13 2.0390350e-12 + 2.1274884e-12 1.2703341e-11 + 1.8698943e-12 1.0736153e-11 + 1.6812374e-12 9.3396267e-12 + 1.5359078e-12 8.2924663e-12 + 1.4198061e-12 7.4756048e-12 + 1.3244705e-12 6.8190255e-12 + 1.2444869e-12 6.2787436e-12 + 1.1762149e-12 5.8256752e-12 + 1.1171076e-12 5.4397846e-12 + 1.0653248e-12 5.1068020e-12 + 1.0195002e-12 4.8162711e-12 + 9.7859633e-13 4.5603526e-12 + 9.4180965e-13 4.3330495e-12 + 9.0850728e-13 4.1296869e-12 + 8.7818333e-13 3.9465686e-12 + 8.5042807e-13 3.7807309e-12 + 8.2490583e-13 3.6297700e-12 + 8.0133866e-13 3.4917114e-12 + 7.7949429e-13 3.3649215e-12 + 7.5917695e-13 3.2480335e-12 + 7.4022034e-13 3.1398964e-12 + 7.2248221e-13 3.0395339e-12 + 7.0584008e-13 2.9461099e-12 + 6.9018786e-13 2.8589068e-12 + 6.7543316e-13 2.7773047e-12 + 6.6149510e-13 2.7007630e-12 + 6.4830253e-13 2.6288101e-12 + 6.3579262e-13 2.5610323e-12 + 6.2390962e-13 2.4970643e-12 + 6.1260388e-13 2.4365829e-12 + 6.0183104e-13 2.3793014e-12 + 5.9155132e-13 2.3249643e-12 + 5.8172894e-13 2.2733417e-12 + 5.7233159e-13 2.2242286e-12 + 5.6333006e-13 2.1774404e-12 + 5.5469784e-13 2.1328098e-12 + 5.4641082e-13 2.0901856e-12 + 5.3844701e-13 2.0494310e-12 + 5.3078632e-13 2.0104208e-12 + 5.2341034e-13 1.9730422e-12 + 2.0901642e-12 1.2344971e-11 + 1.8361978e-12 1.0429981e-11 + 1.6502637e-12 9.0707949e-12 + 1.5070767e-12 8.0518272e-12 + 1.3927186e-12 7.2570882e-12 + 1.2988388e-12 6.6183902e-12 + 1.2200950e-12 6.0928985e-12 + 1.1528959e-12 5.6522917e-12 + 1.0947292e-12 5.2770597e-12 + 1.0437800e-12 4.9533107e-12 + 9.9870094e-13 4.6708692e-12 + 9.5846908e-13 4.4221024e-12 + 9.2229230e-13 4.2011725e-12 + 8.8954678e-13 4.0035295e-12 + 8.5973397e-13 3.8255775e-12 + 8.3245011e-13 3.6644324e-12 + 8.0736447e-13 3.5177548e-12 + 7.8420322e-13 3.3836245e-12 + 7.6273756e-13 3.2604516e-12 + 7.4277466e-13 3.1469059e-12 + 7.2415072e-13 3.0418695e-12 + 7.0672565e-13 2.9443904e-12 + 6.9037884e-13 2.8536568e-12 + 6.7500583e-13 2.7689713e-12 + 6.6051563e-13 2.6897296e-12 + 6.4682863e-13 2.6154061e-12 + 6.3387479e-13 2.5455428e-12 + 6.2159225e-13 2.4797370e-12 + 6.0992614e-13 2.4176337e-12 + 5.9882760e-13 2.3589190e-12 + 5.8825297e-13 2.3033135e-12 + 5.7816310e-13 2.2505682e-12 + 5.6852279e-13 2.2004614e-12 + 5.5930026e-13 2.1527928e-12 + 5.5046676e-13 2.1073825e-12 + 5.4199622e-13 2.0640678e-12 + 5.3386492e-13 2.0227033e-12 + 5.2605123e-13 1.9831541e-12 + 5.1853538e-13 1.9453004e-12 + 5.1129929e-13 1.9090308e-12 + 2.0536462e-12 1.1996204e-11 + 1.8032283e-12 1.0132083e-11 + 1.6199580e-12 8.8092862e-12 + 1.4788670e-12 7.8177822e-12 + 1.3662149e-12 7.0445976e-12 + 1.2737596e-12 6.4233190e-12 + 1.1962291e-12 5.9122303e-12 + 1.1300800e-12 5.4837579e-12 + 1.0728338e-12 5.1189072e-12 + 1.0227004e-12 4.8041521e-12 + 9.7835093e-13 4.5295850e-12 + 9.3877673e-13 4.2877806e-12 + 9.0319682e-13 4.0730535e-12 + 8.7099629e-13 3.8809786e-12 + 8.4168372e-13 3.7080553e-12 + 8.1486125e-13 3.5514782e-12 + 7.9020294e-13 3.4089697e-12 + 7.6743902e-13 3.2786623e-12 + 7.4634407e-13 3.1590088e-12 + 7.2672812e-13 3.0487167e-12 + 7.0842983e-13 2.9466967e-12 + 6.9131122e-13 2.8520236e-12 + 6.7525350e-13 2.7639083e-12 + 6.6015379e-13 2.6816712e-12 + 6.4592252e-13 2.6047255e-12 + 6.3248127e-13 2.5325603e-12 + 6.1976111e-13 2.4647301e-12 + 6.0770114e-13 2.4008424e-12 + 5.9624733e-13 2.3405528e-12 + 5.8535160e-13 2.2835561e-12 + 5.7497099e-13 2.2295805e-12 + 5.6506697e-13 2.1783839e-12 + 5.5560488e-13 2.1297508e-12 + 5.4655347e-13 2.0834864e-12 + 5.3788446e-13 2.0394161e-12 + 5.2957219e-13 1.9973822e-12 + 5.2159332e-13 1.9572413e-12 + 5.1392658e-13 1.9188648e-12 + 5.0655254e-13 1.8821352e-12 + 4.9945338e-13 1.8469437e-12 + 2.0179107e-12 1.1656787e-11 + 1.7709647e-12 9.8422434e-12 + 1.5903009e-12 8.5549032e-12 + 1.4512609e-12 7.5901564e-12 + 1.3402785e-12 6.8379704e-12 + 1.2492174e-12 6.2336590e-12 + 1.1728745e-12 5.7366016e-12 + 1.1077532e-12 5.3199471e-12 + 1.0514081e-12 4.9652043e-12 + 1.0020732e-12 4.6592042e-12 + 9.5843789e-13 4.3923059e-12 + 9.1950743e-13 4.1572789e-12 + 8.8451179e-13 3.9485918e-12 + 8.5284474e-13 3.7619370e-12 + 8.2402189e-13 3.5939086e-12 + 7.9765110e-13 3.4417765e-12 + 7.7341117e-13 3.3033257e-12 + 7.5103625e-13 3.1767386e-12 + 7.3030425e-13 3.0605104e-12 + 7.1102799e-13 2.9533834e-12 + 6.9304854e-13 2.8542986e-12 + 6.7622997e-13 2.7623562e-12 + 6.6045529e-13 2.6767880e-12 + 6.4562317e-13 2.5969330e-12 + 6.3164539e-13 2.5222215e-12 + 6.1844476e-13 2.4521557e-12 + 6.0595338e-13 2.3863021e-12 + 5.9411130e-13 2.3242806e-12 + 5.8286534e-13 2.2657556e-12 + 5.7216818e-13 2.2104295e-12 + 5.6197752e-13 2.1580390e-12 + 5.5225544e-13 2.1083492e-12 + 5.4296785e-13 2.0611489e-12 + 5.3408398e-13 2.0162501e-12 + 5.2557601e-13 1.9734830e-12 + 5.1741870e-13 1.9326936e-12 + 5.0958908e-13 1.8937435e-12 + 5.0206623e-13 1.8565074e-12 + 4.9483103e-13 1.8208699e-12 + 4.8786596e-13 1.7867269e-12 + 1.9829341e-12 1.1326475e-11 + 1.7393859e-12 9.5602455e-12 + 1.5612733e-12 8.3074527e-12 + 1.4242411e-12 7.3687807e-12 + 1.3148931e-12 6.6370500e-12 + 1.2251969e-12 6.0492651e-12 + 1.1500168e-12 5.5658736e-12 + 1.0859018e-12 5.1607279e-12 + 1.0304390e-12 4.8158290e-12 + 9.8188585e-13 4.5183550e-12 + 9.3894976e-13 4.2589219e-12 + 9.0064959e-13 4.0304940e-12 + 8.6622600e-13 3.8276848e-12 + 8.3508131e-13 3.6463062e-12 + 8.0673799e-13 3.4830425e-12 + 7.8080949e-13 3.3352371e-12 + 7.5697926e-13 3.2007354e-12 + 7.3498528e-13 3.0777692e-12 + 7.1460870e-13 2.9648746e-12 + 6.9566510e-13 2.8608281e-12 + 6.7799788e-13 2.7645990e-12 + 6.6147314e-13 2.6753127e-12 + 6.4597563e-13 2.5922225e-12 + 6.3140554e-13 2.5146854e-12 + 6.1767600e-13 2.4421467e-12 + 6.0471097e-13 2.3741234e-12 + 5.9244362e-13 2.3101932e-12 + 5.8081491e-13 2.2499868e-12 + 5.6977249e-13 2.1931773e-12 + 5.5926976e-13 2.1394766e-12 + 5.4926511e-13 2.0886280e-12 + 5.3972120e-13 2.0404022e-12 + 5.3060449e-13 1.9945960e-12 + 5.2188470e-13 1.9510252e-12 + 5.1353444e-13 1.9095253e-12 + 5.0552887e-13 1.8699463e-12 + 4.9784542e-13 1.8321539e-12 + 4.9046349e-13 1.7960259e-12 + 4.8336426e-13 1.7614508e-12 + 4.7653050e-13 1.7283274e-12 + 1.9486933e-12 1.1005022e-11 + 1.7084716e-12 9.2858817e-12 + 1.5328566e-12 8.0667569e-12 + 1.3977902e-12 7.1534872e-12 + 1.2900427e-12 6.4416824e-12 + 1.2016832e-12 5.8699963e-12 + 1.1276419e-12 5.3999130e-12 + 1.0645124e-12 5.0059784e-12 + 1.0099135e-12 4.6706639e-12 + 9.6212604e-13 4.3814929e-12 + 9.1987469e-13 4.1293282e-12 + 8.8219177e-13 3.9073232e-12 + 8.4832844e-13 3.7102370e-12 + 8.1769536e-13 3.5339943e-12 + 7.8982171e-13 3.3753679e-12 + 7.6432644e-13 3.2317742e-12 + 7.4089750e-13 3.1011154e-12 + 7.1927666e-13 2.9816730e-12 + 6.9924822e-13 2.8720219e-12 + 6.8063046e-13 2.7709721e-12 + 6.6326907e-13 2.6775222e-12 + 6.4703212e-13 2.5908210e-12 + 6.3180608e-13 2.5101412e-12 + 6.1749264e-13 2.4348591e-12 + 6.0400623e-13 2.3644341e-12 + 5.9127197e-13 2.2983973e-12 + 5.7922403e-13 2.2363378e-12 + 5.6780430e-13 2.1778963e-12 + 5.5696123e-13 2.1227563e-12 + 5.4664895e-13 2.0706358e-12 + 5.3682648e-13 2.0212861e-12 + 5.2745709e-13 1.9744851e-12 + 5.1850775e-13 1.9300345e-12 + 5.0994866e-13 1.8877555e-12 + 5.0175288e-13 1.8474868e-12 + 4.9389596e-13 1.8090849e-12 + 4.8635568e-13 1.7724181e-12 + 4.7911177e-13 1.7373678e-12 + 4.7214573e-13 1.7038256e-12 + 4.6544061e-13 1.6716931e-12 + 1.9151653e-12 1.0692204e-11 + 1.6782012e-12 9.0189527e-12 + 1.5050323e-12 7.8326319e-12 + 1.3718912e-12 6.9441109e-12 + 1.2657115e-12 6.2517183e-12 + 1.1786615e-12 5.6957139e-12 + 1.1057357e-12 5.2385947e-12 + 1.0435716e-12 4.8555759e-12 + 9.8981908e-13 4.5295950e-12 + 9.4278160e-13 4.2485070e-12 + 9.0120102e-13 4.0034190e-12 + 8.6412277e-13 3.7876674e-12 + 8.3080831e-13 3.5961538e-12 + 8.0067645e-13 3.4249092e-12 + 7.7326295e-13 3.2707967e-12 + 7.4819213e-13 3.1313010e-12 + 7.2515636e-13 3.0043830e-12 + 7.0390110e-13 2.8883696e-12 + 6.8421376e-13 2.7818750e-12 + 6.6591522e-13 2.6837416e-12 + 6.4885345e-13 2.5929952e-12 + 6.3289846e-13 2.5088086e-12 + 6.1793837e-13 2.4304744e-12 + 6.0387636e-13 2.3573853e-12 + 5.9062813e-13 2.2890169e-12 + 5.7811994e-13 2.2249121e-12 + 5.6628696e-13 2.1646728e-12 + 5.5507195e-13 2.1079484e-12 + 5.4442418e-13 2.0544309e-12 + 5.3429848e-13 2.0038475e-12 + 5.2465450e-13 1.9559564e-12 + 5.1545608e-13 1.9105408e-12 + 5.0667071e-13 1.8674077e-12 + 4.9826908e-13 1.8263842e-12 + 4.9022464e-13 1.7873138e-12 + 4.8251335e-13 1.7500563e-12 + 4.7511334e-13 1.7144838e-12 + 4.6800467e-13 1.6804812e-12 + 4.6116913e-13 1.6479433e-12 + 4.5459003e-13 1.6167742e-12 + 1.8823277e-12 1.0387784e-11 + 1.6485546e-12 8.7592555e-12 + 1.4777821e-12 7.6049021e-12 + 1.3465275e-12 6.7404945e-12 + 1.2418840e-12 6.0670138e-12 + 1.1561173e-12 5.5262854e-12 + 1.0842846e-12 5.0817903e-12 + 1.0230664e-12 4.7094017e-12 + 9.7014319e-13 4.3925111e-12 + 9.2384061e-13 4.1192929e-12 + 8.8291731e-13 3.8810947e-12 + 8.4643160e-13 3.6714308e-12 + 8.1365501e-13 3.4853410e-12 + 7.8401433e-13 3.3189625e-12 + 7.5705178e-13 3.1692432e-12 + 7.3239693e-13 3.0337368e-12 + 7.0974648e-13 2.9104587e-12 + 6.8884949e-13 2.7977818e-12 + 6.6949641e-13 2.6943584e-12 + 6.5151071e-13 2.5990631e-12 + 6.3474255e-13 2.5109475e-12 + 6.1906384e-13 2.4292069e-12 + 6.0436437e-13 2.3531543e-12 + 5.9054873e-13 2.2821995e-12 + 5.7753389e-13 2.2158315e-12 + 5.6524723e-13 2.1536059e-12 + 5.5362488e-13 2.0951363e-12 + 5.4261050e-13 2.0400821e-12 + 5.3215411e-13 1.9881430e-12 + 5.2221123e-13 1.9390548e-12 + 5.1274216e-13 1.8925814e-12 + 5.0371129e-13 1.8485129e-12 + 4.9508661e-13 1.8066612e-12 + 4.8683927e-13 1.7668588e-12 + 4.7894315e-13 1.7289533e-12 + 4.7137458e-13 1.6928083e-12 + 4.6411203e-13 1.6582998e-12 + 4.5713588e-13 1.6253158e-12 + 4.5042821e-13 1.5937541e-12 + 4.4397261e-13 1.5635214e-12 + 1.8501579e-12 1.0091549e-11 + 1.6195122e-12 8.5066047e-12 + 1.4510882e-12 7.3833970e-12 + 1.3216826e-12 6.5424847e-12 + 1.2185450e-12 5.8874279e-12 + 1.1340360e-12 5.3615772e-12 + 1.0632749e-12 4.9293796e-12 + 1.0029840e-12 4.5673437e-12 + 9.5087357e-13 4.2593027e-12 + 9.0529132e-13 3.9937472e-12 + 8.6501230e-13 3.7622577e-12 + 8.2910743e-13 3.5585208e-12 + 7.9685810e-13 3.3777099e-12 + 7.6769894e-13 3.2160677e-12 + 7.4117847e-13 3.0706244e-12 + 7.1693139e-13 2.9390004e-12 + 6.9465866e-13 2.8192644e-12 + 6.7411287e-13 2.7098349e-12 + 6.5508744e-13 2.6094004e-12 + 6.3740838e-13 2.5168657e-12 + 6.2092802e-13 2.4313096e-12 + 6.0552012e-13 2.3519486e-12 + 5.9107609e-13 2.2781165e-12 + 5.7750194e-13 2.2092365e-12 + 5.6471587e-13 2.1448142e-12 + 5.5264634e-13 2.0844173e-12 + 5.4123045e-13 2.0276686e-12 + 5.3041271e-13 1.9742386e-12 + 5.2014391e-13 1.9238350e-12 + 5.1038025e-13 1.8762004e-12 + 5.0108262e-13 1.8311055e-12 + 4.9221598e-13 1.7883469e-12 + 4.8374882e-13 1.7477417e-12 + 4.7565271e-13 1.7091263e-12 + 4.6790197e-13 1.6723534e-12 + 4.6047329e-13 1.6372902e-12 + 4.5334548e-13 1.6038163e-12 + 4.4649923e-13 1.5718225e-12 + 4.3991691e-13 1.5412097e-12 + 4.3358235e-13 1.5118875e-12 + 1.8186340e-12 9.8032791e-12 + 1.5910541e-12 8.2608106e-12 + 1.4249328e-12 7.1679559e-12 + 1.2973403e-12 6.3499315e-12 + 1.1956793e-12 5.7128210e-12 + 1.1124038e-12 5.2014641e-12 + 1.0426932e-12 4.7812414e-12 + 9.8331152e-13 4.4292884e-12 + 9.3199812e-13 4.1298649e-12 + 8.8712220e-13 3.8717711e-12 + 8.4747494e-13 3.6468117e-12 + 8.1213964e-13 3.4488445e-12 + 7.8040735e-13 3.2731724e-12 + 7.5172038e-13 3.1161408e-12 + 7.2563342e-13 2.9748591e-12 + 7.0178620e-13 2.8470135e-12 + 6.7988385e-13 2.7307251e-12 + 6.5968242e-13 2.6244550e-12 + 6.4097826e-13 2.5269284e-12 + 6.2359986e-13 2.4370802e-12 + 6.0740167e-13 2.3540141e-12 + 5.9225929e-13 2.2769691e-12 + 5.7806571e-13 2.2052955e-12 + 5.6472833e-13 2.1384350e-12 + 5.5216655e-13 2.0759051e-12 + 5.4030991e-13 2.0172861e-12 + 5.2909645e-13 1.9622122e-12 + 5.1847152e-13 1.9103616e-12 + 5.0838664e-13 1.8614505e-12 + 4.9879869e-13 1.8152297e-12 + 4.8966916e-13 1.7714758e-12 + 4.8096354e-13 1.7299908e-12 + 4.7265082e-13 1.6905975e-12 + 4.6470300e-13 1.6531364e-12 + 4.5709480e-13 1.6174647e-12 + 4.4980327e-13 1.5834530e-12 + 4.4280757e-13 1.5509846e-12 + 4.3608867e-13 1.5199536e-12 + 4.2962923e-13 1.4902634e-12 + 4.2341335e-13 1.4618264e-12 + 1.7877341e-12 9.5227646e-12 + 1.5631611e-12 8.0216941e-12 + 1.3992984e-12 6.9584117e-12 + 1.2734844e-12 6.1626883e-12 + 1.1732721e-12 5.5430607e-12 + 1.0912064e-12 5.0458202e-12 + 1.0225265e-12 4.6372631e-12 + 9.6403658e-13 4.2951275e-12 + 9.1350497e-13 4.0040954e-12 + 8.6932189e-13 3.7532653e-12 + 8.3029435e-13 3.5346642e-12 + 7.9551778e-13 3.3423137e-12 + 7.6429270e-13 3.1716444e-12 + 7.3606893e-13 3.0191000e-12 + 7.1040721e-13 2.8818691e-12 + 6.8695222e-13 2.7577002e-12 + 6.6541315e-13 2.6447668e-12 + 6.4554949e-13 2.5415715e-12 + 6.2716044e-13 2.4468738e-12 + 6.1007692e-13 2.3596394e-12 + 5.9415547e-13 2.2789956e-12 + 5.7927350e-13 2.2042031e-12 + 5.6532555e-13 2.1346305e-12 + 5.5222038e-13 2.0697339e-12 + 5.3987858e-13 2.0090447e-12 + 5.2823073e-13 1.9521551e-12 + 5.1721582e-13 1.8987093e-12 + 5.0677998e-13 1.8483946e-12 + 4.9687548e-13 1.8009360e-12 + 4.8745986e-13 1.7560895e-12 + 4.7849520e-13 1.7136395e-12 + 4.6994751e-13 1.6733931e-12 + 4.6178624e-13 1.6351779e-12 + 4.5398386e-13 1.5988392e-12 + 4.4651544e-13 1.5642378e-12 + 4.3935842e-13 1.5312488e-12 + 4.3249227e-13 1.4997580e-12 + 4.2589827e-13 1.4696628e-12 + 4.1955933e-13 1.4408694e-12 + 4.1345983e-13 1.4132925e-12 + 1.7574365e-12 9.2498041e-12 + 1.5358139e-12 7.7890713e-12 + 1.3741677e-12 6.7546082e-12 + 1.2500993e-12 5.9806121e-12 + 1.1513086e-12 5.3780184e-12 + 1.0704303e-12 4.8945270e-12 + 1.0027617e-12 4.4973283e-12 + 9.4514688e-13 4.1647541e-12 + 8.9538242e-13 3.8818923e-12 + 8.5187924e-13 3.6381364e-12 + 8.1345986e-13 3.4257250e-12 + 7.7923160e-13 3.2388424e-12 + 7.4850426e-13 3.0730425e-12 + 7.2073502e-13 2.9248656e-12 + 6.9549057e-13 2.7915774e-12 + 6.7242045e-13 2.6709869e-12 + 6.5123784e-13 2.5613179e-12 + 6.3170557e-13 2.4611141e-12 + 6.1362567e-13 2.3691698e-12 + 5.9683146e-13 2.2844781e-12 + 5.8118153e-13 2.2061912e-12 + 5.6655505e-13 2.1335898e-12 + 5.5284809e-13 2.0660598e-12 + 5.3997073e-13 2.0030737e-12 + 5.2784475e-13 1.9441753e-12 + 5.1640175e-13 1.8889672e-12 + 5.0558161e-13 1.8371052e-12 + 4.9533129e-13 1.7882846e-12 + 4.8560377e-13 1.7422378e-12 + 4.7635722e-13 1.6987283e-12 + 4.6755430e-13 1.6575462e-12 + 4.5916153e-13 1.6185038e-12 + 4.5114885e-13 1.5814341e-12 + 4.4348913e-13 1.5461866e-12 + 4.3615785e-13 1.5126262e-12 + 4.2913277e-13 1.4806308e-12 + 4.2239369e-13 1.4500906e-12 + 4.1592220e-13 1.4209051e-12 + 4.0970148e-13 1.3929834e-12 + 4.0371612e-13 1.3662426e-12 + 1.7277198e-12 8.9841937e-12 + 1.5089938e-12 7.5627773e-12 + 1.3495239e-12 6.5563961e-12 + 1.2271693e-12 5.8035674e-12 + 1.1297744e-12 5.2175638e-12 + 1.0500618e-12 4.7474649e-12 + 9.8338601e-13 4.3613300e-12 + 9.2663029e-13 4.0380663e-12 + 8.7761898e-13 3.7631608e-12 + 8.3478329e-13 3.5262919e-12 + 7.9696097e-13 3.3199062e-12 + 7.6327100e-13 3.1383462e-12 + 7.3303228e-13 2.9772862e-12 + 7.0570925e-13 2.8333606e-12 + 6.8087441e-13 2.7039087e-12 + 6.5818205e-13 2.5868008e-12 + 6.3734931e-13 2.4803085e-12 + 6.1814231e-13 2.3830156e-12 + 6.0036584e-13 2.2937497e-12 + 5.8385557e-13 2.2115322e-12 + 5.6847212e-13 2.1355380e-12 + 5.5409638e-13 2.0650681e-12 + 5.4062593e-13 1.9995254e-12 + 5.2797216e-13 1.9383978e-12 + 5.1605800e-13 1.8812403e-12 + 5.0481603e-13 1.8276688e-12 + 4.9418705e-13 1.7773468e-12 + 4.8411880e-13 1.7299787e-12 + 4.7456495e-13 1.6853049e-12 + 4.6548433e-13 1.6430955e-12 + 4.5684012e-13 1.6031459e-12 + 4.4859940e-13 1.5652745e-12 + 4.4073252e-13 1.5293182e-12 + 4.3321279e-13 1.4951316e-12 + 4.2601607e-13 1.4625829e-12 + 4.1912046e-13 1.4315540e-12 + 4.1250608e-13 1.4019374e-12 + 4.0615479e-13 1.3736362e-12 + 4.0005004e-13 1.3465620e-12 + 3.9417669e-13 1.3206340e-12 + 1.6985627e-12 8.7257422e-12 + 1.4826820e-12 7.3426429e-12 + 1.3253499e-12 6.3636211e-12 + 1.2046790e-12 5.6314167e-12 + 1.1086551e-12 5.0615755e-12 + 1.0300875e-12 4.6045225e-12 + 9.6438684e-13 4.2291611e-12 + 9.0847491e-13 3.9149635e-12 + 8.6020333e-13 3.6478048e-12 + 8.1802324e-13 3.4176411e-12 + 7.8078734e-13 3.2171222e-12 + 7.4762605e-13 3.0407438e-12 + 7.1786722e-13 2.8842974e-12 + 6.9098237e-13 2.7445091e-12 + 6.6654975e-13 2.6187919e-12 + 6.4422834e-13 2.5050722e-12 + 6.2373914e-13 2.4016713e-12 + 6.0485150e-13 2.3072103e-12 + 5.8737295e-13 2.2205510e-12 + 5.7114147e-13 2.1407399e-12 + 5.5601965e-13 2.0669757e-12 + 5.4189010e-13 1.9985795e-12 + 5.2865185e-13 1.9349703e-12 + 5.1621761e-13 1.8756493e-12 + 5.0451139e-13 1.8201862e-12 + 4.9346680e-13 1.7682057e-12 + 4.8302549e-13 1.7193811e-12 + 4.7313598e-13 1.6734257e-12 + 4.6375263e-13 1.6300872e-12 + 4.5483488e-13 1.5891417e-12 + 4.4634649e-13 1.5503908e-12 + 4.3825501e-13 1.5136576e-12 + 4.3053125e-13 1.4787843e-12 + 4.2314894e-13 1.4456289e-12 + 4.1608429e-13 1.4140638e-12 + 4.0931576e-13 1.3839740e-12 + 4.0282376e-13 1.3552555e-12 + 3.9659044e-13 1.3278139e-12 + 3.9059952e-13 1.3015630e-12 + 3.8483609e-13 1.2764252e-12 + 1.6699443e-12 8.4742607e-12 + 1.4568600e-12 7.1285010e-12 + 1.3016292e-12 6.1761421e-12 + 1.1826131e-12 5.4640305e-12 + 1.0879366e-12 4.9099342e-12 + 1.0104942e-12 4.4655855e-12 + 9.4575179e-13 4.1007182e-12 + 8.9066902e-13 3.7953482e-12 + 8.4312435e-13 3.5357332e-12 + 8.0158849e-13 3.3120974e-12 + 7.6492882e-13 3.1172898e-12 + 7.3228699e-13 2.9459552e-12 + 7.0299965e-13 2.7939996e-12 + 6.7654529e-13 2.6582382e-12 + 6.5250781e-13 2.5361549e-12 + 6.3055079e-13 2.4257329e-12 + 6.1039904e-13 2.3253396e-12 + 5.9182511e-13 2.2336350e-12 + 5.7463918e-13 2.1495103e-12 + 5.5868154e-13 2.0720408e-12 + 5.4381670e-13 2.0004467e-12 + 5.2992894e-13 1.9340676e-12 + 5.1691877e-13 1.8723385e-12 + 5.0470013e-13 1.8147754e-12 + 4.9319816e-13 1.7609593e-12 + 4.8234741e-13 1.7105259e-12 + 4.7209041e-13 1.6631578e-12 + 4.6237643e-13 1.6185764e-12 + 4.5316053e-13 1.5765358e-12 + 4.4440272e-13 1.5368193e-12 + 4.3606733e-13 1.4992335e-12 + 4.2812239e-13 1.4636072e-12 + 4.2053917e-13 1.4297866e-12 + 4.1329178e-13 1.3976338e-12 + 4.0635681e-13 1.3670249e-12 + 3.9971304e-13 1.3378482e-12 + 3.9334120e-13 1.3100024e-12 + 3.8722371e-13 1.2833961e-12 + 3.8134455e-13 1.2579457e-12 + 3.7568902e-13 1.2335754e-12 + 1.6418437e-12 8.2295651e-12 + 1.4315096e-12 6.9201949e-12 + 1.2783453e-12 5.9938162e-12 + 1.1609566e-12 5.3012808e-12 + 1.0676051e-12 4.7625206e-12 + 9.9126888e-13 4.3305473e-12 + 9.2746863e-13 3.9758979e-12 + 8.7320110e-13 3.6791260e-12 + 8.2637110e-13 3.4268555e-12 + 7.8546861e-13 3.2095758e-12 + 7.4937541e-13 3.0203281e-12 + 7.1724422e-13 2.8539034e-12 + 6.8842031e-13 2.7063183e-12 + 6.6238907e-13 2.5744764e-12 + 6.3873994e-13 2.4559291e-12 + 6.1714102e-13 2.3487162e-12 + 5.9732090e-13 2.2512492e-12 + 5.7905523e-13 2.1622263e-12 + 5.6215686e-13 2.0805683e-12 + 5.4646830e-13 2.0053762e-12 + 5.3185598e-13 1.9358927e-12 + 5.1820582e-13 1.8714754e-12 + 5.0541975e-13 1.8115754e-12 + 4.9341295e-13 1.7557221e-12 + 4.8211165e-13 1.7035076e-12 + 4.7145135e-13 1.6545793e-12 + 4.6137543e-13 1.6086276e-12 + 4.5183390e-13 1.5653819e-12 + 4.4278248e-13 1.5246036e-12 + 4.3418180e-13 1.4860819e-12 + 4.2599670e-13 1.4496292e-12 + 4.1819571e-13 1.4150788e-12 + 4.1075053e-13 1.3822815e-12 + 4.0363566e-13 1.3511032e-12 + 3.9682805e-13 1.3214237e-12 + 3.9030682e-13 1.2931345e-12 + 3.8405298e-13 1.2661371e-12 + 3.7804925e-13 1.2403426e-12 + 3.7227984e-13 1.2156702e-12 + 3.6673030e-13 1.1920461e-12 + 1.6142402e-12 7.9914774e-12 + 1.4066126e-12 6.7175718e-12 + 1.2554821e-12 5.8165062e-12 + 1.1396945e-12 5.1430428e-12 + 1.0476466e-12 4.6192225e-12 + 9.7239876e-13 4.1993017e-12 + 9.0952535e-13 3.8546053e-12 + 8.5605978e-13 3.5662045e-12 + 8.0993281e-13 3.3210852e-12 + 7.6965333e-13 3.1099923e-12 + 7.3411728e-13 2.9261577e-12 + 7.0248829e-13 2.7645123e-12 + 6.7412012e-13 2.6211823e-12 + 6.4850493e-13 2.4931538e-12 + 6.2523763e-13 2.3780478e-12 + 6.0399081e-13 2.2739579e-12 + 5.8449672e-13 2.1793385e-12 + 5.6653413e-13 2.0929233e-12 + 5.4991846e-13 2.0136655e-12 + 5.3449443e-13 1.9406893e-12 + 5.2013034e-13 1.8732589e-12 + 5.0671375e-13 1.8107497e-12 + 4.9414797e-13 1.7526287e-12 + 4.8234940e-13 1.6984378e-12 + 4.7124534e-13 1.6477815e-12 + 4.6077224e-13 1.6003163e-12 + 4.5087428e-13 1.5557419e-12 + 4.4150223e-13 1.5137952e-12 + 4.3261246e-13 1.4742442e-12 + 4.2416618e-13 1.4368841e-12 + 4.1612877e-13 1.4015330e-12 + 4.0846922e-13 1.3680287e-12 + 4.0115967e-13 1.3362260e-12 + 3.9417501e-13 1.3059950e-12 + 3.8749255e-13 1.2772189e-12 + 3.8109171e-13 1.2497922e-12 + 3.7495382e-13 1.2236194e-12 + 3.6906185e-13 1.1986143e-12 + 3.6340026e-13 1.1746977e-12 + 3.5795483e-13 1.1517986e-12 + 1.5871136e-12 7.7598233e-12 + 1.3821513e-12 6.5204768e-12 + 1.2330234e-12 5.6440793e-12 + 1.1188123e-12 4.9891954e-12 + 1.0280477e-12 4.4799266e-12 + 9.5387116e-13 4.0717462e-12 + 8.9191008e-13 3.7367409e-12 + 8.3923390e-13 3.4564925e-12 + 7.9379888e-13 3.2183370e-12 + 7.5413252e-13 3.0132682e-12 + 7.1914475e-13 2.8347024e-12 + 6.8800989e-13 2.6777089e-12 + 6.6009011e-13 2.5385191e-12 + 6.3488423e-13 2.4142029e-12 + 6.1199255e-13 2.3024458e-12 + 5.9109207e-13 2.2013938e-12 + 5.7191870e-13 2.1095451e-12 + 5.5425421e-13 2.0256684e-12 + 5.3791661e-13 1.9487448e-12 + 5.2275275e-13 1.8779240e-12 + 5.0863281e-13 1.8124906e-12 + 4.9544591e-13 1.7518375e-12 + 4.8309677e-13 1.6954466e-12 + 4.7150297e-13 1.6428729e-12 + 4.6059286e-13 1.5937317e-12 + 4.5030381e-13 1.5476894e-12 + 4.4058084e-13 1.5044541e-12 + 4.3137541e-13 1.4637702e-12 + 4.2264456e-13 1.4254127e-12 + 4.1435007e-13 1.3891821e-12 + 4.0645784e-13 1.3549017e-12 + 3.9893733e-13 1.3224141e-12 + 3.9176110e-13 1.2915784e-12 + 3.8490443e-13 1.2622683e-12 + 3.7834496e-13 1.2343702e-12 + 3.7206246e-13 1.2077818e-12 + 3.6603852e-13 1.1824104e-12 + 3.6025638e-13 1.1581723e-12 + 3.5470076e-13 1.1349904e-12 + 3.4935766e-13 1.1127957e-12 + 1.5604435e-12 7.5344306e-12 + 1.3581079e-12 6.3287673e-12 + 1.2109532e-12 5.4764032e-12 + 1.0982954e-12 4.8396201e-12 + 1.0087948e-12 4.3445267e-12 + 9.3567361e-13 3.9477799e-12 + 8.7461114e-13 3.6222141e-12 + 8.2271243e-13 3.3499040e-12 + 7.7795883e-13 3.1185277e-12 + 7.3889622e-13 2.9193242e-12 + 7.0444827e-13 2.7458872e-12 + 6.7379986e-13 2.5934215e-12 + 6.4632146e-13 2.4582613e-12 + 6.2151846e-13 2.3375579e-12 + 5.9899649e-13 2.2290594e-12 + 5.7843689e-13 2.1309638e-12 + 5.5957914e-13 2.0418107e-12 + 5.4220803e-13 1.9604029e-12 + 5.2614404e-13 1.8857502e-12 + 5.1123620e-13 1.8170265e-12 + 4.9735649e-13 1.7535355e-12 + 4.8439560e-13 1.6946876e-12 + 4.7225959e-13 1.6399794e-12 + 4.6086724e-13 1.5889781e-12 + 4.5014792e-13 1.5413105e-12 + 4.4003993e-13 1.4966516e-12 + 4.3048906e-13 1.4547185e-12 + 4.2144752e-13 1.4152627e-12 + 4.1287297e-13 1.3780651e-12 + 4.0472776e-13 1.3429325e-12 + 3.9697831e-13 1.3096931e-12 + 3.8959453e-13 1.2781939e-12 + 3.8254940e-13 1.2482981e-12 + 3.7581858e-13 1.2198830e-12 + 3.6938006e-13 1.1928386e-12 + 3.6321390e-13 1.1670649e-12 + 3.5730201e-13 1.1424723e-12 + 3.5162787e-13 1.1189792e-12 + 3.4617644e-13 1.0965114e-12 + 3.4093395e-13 1.0750015e-12 + 1.5342098e-12 7.3151368e-12 + 1.3344647e-12 6.1422971e-12 + 1.1892559e-12 5.3133508e-12 + 1.0781292e-12 4.6942046e-12 + 9.8987481e-13 4.2129193e-12 + 9.1779378e-13 3.8273070e-12 + 8.5761700e-13 3.5109326e-12 + 8.0648448e-13 3.2463525e-12 + 7.6240235e-13 3.0215768e-12 + 7.2393458e-13 2.8280828e-12 + 6.9001841e-13 2.6596387e-12 + 6.5984918e-13 2.5115801e-12 + 6.3280549e-13 2.3803426e-12 + 6.0839928e-13 2.2631537e-12 + 5.8624139e-13 2.1578263e-12 + 5.6601745e-13 2.0626075e-12 + 5.4747049e-13 1.9760766e-12 + 5.3038823e-13 1.8970711e-12 + 5.1459366e-13 1.8246281e-12 + 4.9993786e-13 1.7579437e-12 + 4.8629463e-13 1.6963421e-12 + 4.7355621e-13 1.6392500e-12 + 4.6162999e-13 1.5861783e-12 + 4.5043592e-13 1.5367064e-12 + 4.3990438e-13 1.4904715e-12 + 4.2997456e-13 1.4471579e-12 + 4.2059306e-13 1.4064909e-12 + 4.1171278e-13 1.3682288e-12 + 4.0329201e-13 1.3321592e-12 + 3.9529368e-13 1.2980939e-12 + 3.8768469e-13 1.2658663e-12 + 3.8043542e-13 1.2353279e-12 + 3.7351927e-13 1.2063456e-12 + 3.6691225e-13 1.1788006e-12 + 3.6059271e-13 1.1525855e-12 + 3.5454101e-13 1.1276039e-12 + 3.4873933e-13 1.1037682e-12 + 3.4317142e-13 1.0809992e-12 + 3.3782248e-13 1.0592254e-12 + 3.3267894e-13 1.0383806e-12 + 1.5083924e-12 7.1017791e-12 + 1.3112042e-12 5.9609289e-12 + 1.1679155e-12 5.1548007e-12 + 1.0582996e-12 4.5528329e-12 + 9.7127448e-13 4.0849980e-12 + 9.0021948e-13 3.7102324e-12 + 8.4091622e-13 3.4028087e-12 + 7.9053928e-13 3.1457550e-12 + 7.4711922e-13 2.9274064e-12 + 7.0923786e-13 2.7394706e-12 + 6.7584588e-13 2.5758868e-12 + 6.4614891e-13 2.4321174e-12 + 6.1953365e-13 2.3046968e-12 + 5.9551843e-13 2.1909294e-12 + 5.7371929e-13 2.0886871e-12 + 5.5382608e-13 1.9962668e-12 + 5.3558532e-13 1.9122876e-12 + 5.1878762e-13 1.8356192e-12 + 5.0325843e-13 1.7653251e-12 + 4.8885090e-13 1.7006245e-12 + 4.7544060e-13 1.6408607e-12 + 4.6292128e-13 1.5854762e-12 + 4.5120165e-13 1.5339959e-12 + 4.4020281e-13 1.4860111e-12 + 4.2985616e-13 1.4411694e-12 + 4.2010176e-13 1.3991640e-12 + 4.1088699e-13 1.3597278e-12 + 4.0216547e-13 1.3226263e-12 + 3.9389608e-13 1.2876531e-12 + 3.8604232e-13 1.2546255e-12 + 3.7857160e-13 1.2233816e-12 + 3.7145473e-13 1.1937769e-12 + 3.6466551e-13 1.1656827e-12 + 3.5818034e-13 1.1389830e-12 + 3.5197789e-13 1.1135741e-12 + 3.4603882e-13 1.0893619e-12 + 3.4034560e-13 1.0662620e-12 + 3.3488224e-13 1.0441968e-12 + 3.2963415e-13 1.0230971e-12 + 3.2458799e-13 1.0028987e-12 + 1.4829713e-12 6.8942003e-12 + 1.2883090e-12 5.7845262e-12 + 1.1469166e-12 5.0006303e-12 + 1.0387924e-12 4.4153991e-12 + 9.5298079e-13 3.9606651e-12 + 8.8293858e-13 3.5964629e-12 + 8.2449748e-13 3.2977562e-12 + 7.7486615e-13 3.0480316e-12 + 7.3209931e-13 2.8359396e-12 + 6.9479643e-13 2.6534151e-12 + 6.6192147e-13 2.4945610e-12 + 6.3269026e-13 2.3549671e-12 + 6.0649746e-13 2.2312608e-12 + 5.8286777e-13 2.1208222e-12 + 5.6142234e-13 2.0215827e-12 + 5.4185519e-13 1.9318853e-12 + 5.2391627e-13 1.8503889e-12 + 5.0739908e-13 1.7759932e-12 + 4.9213144e-13 1.7077898e-12 + 4.7796859e-13 1.6450189e-12 + 4.6478782e-13 1.5870424e-12 + 4.5248438e-13 1.5333187e-12 + 4.4096831e-13 1.4833859e-12 + 4.3016181e-13 1.4368474e-12 + 4.1999729e-13 1.3933599e-12 + 4.1041568e-13 1.3526265e-12 + 4.0136515e-13 1.3143870e-12 + 3.9279998e-13 1.2784140e-12 + 3.8467969e-13 1.2445065e-12 + 3.7696831e-13 1.2124874e-12 + 3.6963373e-13 1.1821997e-12 + 3.6264724e-13 1.1535029e-12 + 3.5598301e-13 1.1262716e-12 + 3.4961782e-13 1.1003937e-12 + 3.4353066e-13 1.0757683e-12 + 3.3770250e-13 1.0523041e-12 + 3.3211606e-13 1.0299186e-12 + 3.2675562e-13 1.0085375e-12 + 3.2160682e-13 9.8809293e-13 + 3.1665652e-13 9.6852273e-13 + 1.4579265e-12 6.6922496e-12 + 1.2657615e-12 5.6129555e-12 + 1.1262434e-12 4.8507225e-12 + 1.0195932e-12 4.2817961e-12 + 9.3498074e-13 3.8398230e-12 + 8.6593906e-13 3.4859089e-12 + 8.0834950e-13 3.1956913e-12 + 7.5945447e-13 2.9531024e-12 + 7.1733256e-13 2.7471020e-12 + 6.8060072e-13 2.5698442e-12 + 6.4823605e-13 2.4155960e-12 + 6.1946447e-13 2.2800643e-12 + 5.9368856e-13 2.1599732e-12 + 5.7043926e-13 2.0527743e-12 + 5.4934278e-13 1.9564555e-12 + 5.3009728e-13 1.8694082e-12 + 5.1245609e-13 1.7903263e-12 + 4.9621554e-13 1.7181421e-12 + 4.8120586e-13 1.6519721e-12 + 4.6728427e-13 1.5910781e-12 + 4.5432980e-13 1.5348398e-12 + 4.4223921e-13 1.4827312e-12 + 4.3092379e-13 1.4343035e-12 + 4.2030688e-13 1.3891709e-12 + 4.1032187e-13 1.3470006e-12 + 4.0091056e-13 1.3075036e-12 + 3.9202188e-13 1.2704277e-12 + 3.8361078e-13 1.2355514e-12 + 3.7563740e-13 1.2026802e-12 + 3.6806630e-13 1.1716416e-12 + 3.6086587e-13 1.1422832e-12 + 3.5400783e-13 1.1144686e-12 + 3.4746675e-13 1.0880760e-12 + 3.4121975e-13 1.0629968e-12 + 3.3524616e-13 1.0391327e-12 + 3.2952724e-13 1.0163951e-12 + 3.2404600e-13 9.9470432e-13 + 3.1878693e-13 9.7398773e-13 + 3.1373592e-13 9.5417966e-13 + 3.0888004e-13 9.3521994e-13 + 1.4332379e-12 6.4957782e-12 + 1.2435443e-12 5.4460903e-12 + 1.1058804e-12 4.7049641e-12 + 1.0006881e-12 4.1519212e-12 + 9.1726135e-13 3.7223772e-12 + 8.4920887e-13 3.3784838e-12 + 7.9246105e-13 3.0965318e-12 + 7.4429364e-13 2.8608909e-12 + 7.0280894e-13 2.6608215e-12 + 6.6664119e-13 2.4886910e-12 + 6.3478053e-13 2.3389239e-12 + 6.0646287e-13 2.2073471e-12 + 5.8109860e-13 2.0907736e-12 + 5.5822487e-13 1.9867272e-12 + 5.3747290e-13 1.8932510e-12 + 5.1854489e-13 1.8087805e-12 + 5.0119756e-13 1.7320483e-12 + 4.8523003e-13 1.6620155e-12 + 4.7047488e-13 1.5978232e-12 + 4.5679133e-13 1.5387547e-12 + 4.4406012e-13 1.4842071e-12 + 4.3217948e-13 1.4336690e-12 + 4.2106196e-13 1.3867046e-12 + 4.1063204e-13 1.3429393e-12 + 4.0082406e-13 1.3020495e-12 + 3.9158068e-13 1.2637549e-12 + 3.8285157e-13 1.2278099e-12 + 3.7459239e-13 1.1939999e-12 + 3.6676385e-13 1.1621359e-12 + 3.5933105e-13 1.1320503e-12 + 3.5226286e-13 1.1035952e-12 + 3.4553143e-13 1.0766378e-12 + 3.3911173e-13 1.0510608e-12 + 3.3298123e-13 1.0267575e-12 + 3.2711958e-13 1.0036333e-12 + 3.2150834e-13 9.8160184e-13 + 3.1613075e-13 9.6058597e-13 + 3.1097160e-13 9.4051527e-13 + 3.0601695e-13 9.2132563e-13 + 3.0125411e-13 9.0295875e-13 + 1.4088851e-12 6.3046403e-12 + 1.2216396e-12 5.2838027e-12 + 1.0858118e-12 4.5632422e-12 + 9.8206283e-13 4.0256727e-12 + 8.9980962e-13 3.6082371e-12 + 8.3273599e-13 3.2741009e-12 + 7.7682084e-13 3.0001986e-12 + 7.2937307e-13 2.7713228e-12 + 6.8851841e-13 2.5770260e-12 + 6.5290833e-13 2.4098872e-12 + 6.2154585e-13 2.2644823e-12 + 5.9367680e-13 2.1367539e-12 + 5.6871929e-13 2.0236043e-12 + 5.4621665e-13 1.9226245e-12 + 5.2580500e-13 1.8319140e-12 + 5.0719060e-13 1.7499515e-12 + 4.9013349e-13 1.6755046e-12 + 4.7443557e-13 1.6075641e-12 + 4.5993173e-13 1.5452958e-12 + 4.4648319e-13 1.4880025e-12 + 4.3397237e-13 1.4350990e-12 + 4.2229894e-13 1.3860882e-12 + 4.1137675e-13 1.3405469e-12 + 4.0113135e-13 1.2981109e-12 + 3.9149804e-13 1.2584662e-12 + 3.8242035e-13 1.2213401e-12 + 3.7384869e-13 1.1864947e-12 + 3.6573937e-13 1.1537213e-12 + 3.5805370e-13 1.1228361e-12 + 3.5075733e-13 1.0936770e-12 + 3.4381958e-13 1.0660995e-12 + 3.3721303e-13 1.0399758e-12 + 3.3091304e-13 1.0151908e-12 + 3.2489744e-13 9.9164183e-13 + 3.1914617e-13 9.6923655e-13 + 3.1364110e-13 9.4789160e-13 + 3.0836573e-13 9.2753152e-13 + 3.0330508e-13 9.0808802e-13 + 2.9844545e-13 8.8949914e-13 + 2.9377432e-13 8.7170845e-13 + 1.3848475e-12 6.1186933e-12 + 1.2000295e-12 5.1259728e-12 + 1.0660218e-12 4.4254489e-12 + 9.6370302e-13 3.9029538e-12 + 8.8261246e-13 3.4973105e-12 + 8.1650826e-13 3.1726777e-12 + 7.6141755e-13 2.9066138e-12 + 7.1468208e-13 2.6843243e-12 + 6.7445092e-13 2.4956488e-12 + 6.3939259e-13 2.3333682e-12 + 6.0852292e-13 2.1922085e-12 + 5.8109757e-13 2.0682260e-12 + 5.5654233e-13 1.9584074e-12 + 5.3440659e-13 1.8604119e-12 + 5.1433139e-13 1.7723923e-12 + 4.9602699e-13 1.6928694e-12 + 4.7925671e-13 1.6206458e-12 + 4.6382519e-13 1.5547408e-12 + 4.4956965e-13 1.4943434e-12 + 4.3635327e-13 1.4387769e-12 + 4.2406013e-13 1.3874720e-12 + 4.1259137e-13 1.3399464e-12 + 4.0186207e-13 1.2957883e-12 + 3.9179887e-13 1.2546449e-12 + 3.8233803e-13 1.2162107e-12 + 3.7342392e-13 1.1802209e-12 + 3.6500769e-13 1.1464443e-12 + 3.5704631e-13 1.1146785e-12 + 3.4950167e-13 1.0847450e-12 + 3.4233994e-13 1.0564862e-12 + 3.3553093e-13 1.0297619e-12 + 3.2904763e-13 1.0044479e-12 + 3.2286577e-13 9.8043301e-13 + 3.1696354e-13 9.5761702e-13 + 3.1132119e-13 9.3591025e-13 + 3.0592086e-13 9.1523192e-13 + 3.0074634e-13 8.9550919e-13 + 2.9578287e-13 8.7667537e-13 + 2.9101696e-13 8.5867023e-13 + 2.8643630e-13 8.4143920e-13 + 1.3611043e-12 5.9378027e-12 + 1.1786961e-12 4.9724812e-12 + 1.0464943e-12 4.2914783e-12 + 9.4559425e-13 3.7836679e-12 + 8.6565663e-13 3.3895115e-12 + 8.0051344e-13 3.0741341e-12 + 7.4623973e-13 2.8157026e-12 + 7.0020995e-13 2.5998259e-12 + 6.6059633e-13 2.4166213e-12 + 6.2608435e-13 2.2590693e-12 + 5.9570260e-13 2.1220427e-12 + 5.6871646e-13 2.0017048e-12 + 5.4455934e-13 1.8951281e-12 + 5.2278667e-13 1.8000366e-12 + 5.0304434e-13 1.7146343e-12 + 4.8504658e-13 1.6374849e-12 + 4.6855997e-13 1.5674238e-12 + 4.5339190e-13 1.5034986e-12 + 4.3938185e-13 1.4449210e-12 + 4.2639497e-13 1.3910334e-12 + 4.1431700e-13 1.3412833e-12 + 4.0305051e-13 1.2952016e-12 + 3.9251182e-13 1.2523891e-12 + 3.8262866e-13 1.2125023e-12 + 3.7333823e-13 1.1752448e-12 + 3.6458573e-13 1.1403595e-12 + 3.5632304e-13 1.1076222e-12 + 3.4850778e-13 1.0768356e-12 + 3.4110245e-13 1.0478269e-12 + 3.3407370e-13 1.0204430e-12 + 3.2739182e-13 9.9454829e-13 + 3.2103022e-13 9.7002139e-13 + 3.1496501e-13 9.4675448e-13 + 3.0917471e-13 9.2465064e-13 + 3.0363989e-13 9.0362280e-13 + 2.9834298e-13 8.8359255e-13 + 2.9326800e-13 8.6448869e-13 + 2.8840044e-13 8.4624717e-13 + 2.8372703e-13 8.2880929e-13 + 2.7923566e-13 8.1212199e-13 + 1.3376340e-12 5.7618329e-12 + 1.1576208e-12 4.8232101e-12 + 1.0272129e-12 4.1612289e-12 + 9.2772180e-13 3.6677230e-12 + 8.4892868e-13 3.2847547e-12 + 7.8473908e-13 2.9783905e-12 + 7.3127579e-13 2.7273902e-12 + 6.8594578e-13 2.5177569e-12 + 6.4694437e-13 2.3398790e-12 + 6.1297392e-13 2.1869300e-12 + 5.8307566e-13 2.0539250e-12 + 5.5652467e-13 1.9371343e-12 + 5.3276190e-13 1.8337120e-12 + 5.1134878e-13 1.7414458e-12 + 4.9193605e-13 1.6585905e-12 + 4.7424184e-13 1.5837498e-12 + 4.5803600e-13 1.5157923e-12 + 4.4312863e-13 1.4537924e-12 + 4.2936149e-13 1.3969846e-12 + 4.1660165e-13 1.3447301e-12 + 4.0473652e-13 1.2964918e-12 + 3.9367008e-13 1.2518145e-12 + 3.8331990e-13 1.2103097e-12 + 3.7361476e-13 1.1716445e-12 + 3.6449282e-13 1.1355310e-12 + 3.5590008e-13 1.1017195e-12 + 3.4778918e-13 1.0699920e-12 + 3.4011836e-13 1.0401574e-12 + 3.3285070e-13 1.0120477e-12 + 3.2595338e-13 9.8551442e-13 + 3.1939714e-13 9.6042532e-13 + 3.1315579e-13 9.3666341e-13 + 3.0720583e-13 9.1412366e-13 + 3.0152612e-13 8.9271183e-13 + 2.9609752e-13 8.7234362e-13 + 2.9090275e-13 8.5294282e-13 + 2.8592610e-13 8.3444057e-13 + 2.8115327e-13 8.1677431e-13 + 2.7657121e-13 7.9988745e-13 + 2.7216801e-13 7.8372818e-13 + 1.3144148e-12 5.5906525e-12 + 1.1367847e-12 4.6780486e-12 + 1.0081612e-12 4.0345992e-12 + 9.1007070e-13 3.5550281e-12 + 8.3241489e-13 3.1829571e-12 + 7.6917252e-13 2.8853705e-12 + 7.1651392e-13 2.6416066e-12 + 6.7187851e-13 2.4380515e-12 + 6.3348463e-13 2.2653582e-12 + 6.0005144e-13 2.1168895e-12 + 5.7063274e-13 1.9877983e-12 + 5.4451325e-13 1.8744594e-12 + 5.2114145e-13 1.7741066e-12 + 5.0008472e-13 1.6845893e-12 + 4.8099859e-13 1.6042118e-12 + 4.6360513e-13 1.5316168e-12 + 4.4767742e-13 1.4657055e-12 + 4.3302824e-13 1.4055786e-12 + 4.1950163e-13 1.3504921e-12 + 4.0696658e-13 1.2998251e-12 + 3.9531214e-13 1.2530570e-12 + 3.8444372e-13 1.2097448e-12 + 3.7428010e-13 1.1695118e-12 + 3.6475113e-13 1.1320344e-12 + 3.5579590e-13 1.0970330e-12 + 3.4736124e-13 1.0642651e-12 + 3.3940049e-13 1.0335195e-12 + 3.3187256e-13 1.0046102e-12 + 3.2474107e-13 9.7737408e-13 + 3.1797372e-13 9.5166746e-13 + 3.1154172e-13 9.2736143e-13 + 3.0541927e-13 9.0434276e-13 + 2.9958327e-13 8.8250935e-13 + 2.9401287e-13 8.6177011e-13 + 2.8868929e-13 8.4204279e-13 + 2.8359548e-13 8.2325355e-13 + 2.7871600e-13 8.0533566e-13 + 2.7403678e-13 7.8822834e-13 + 2.6954499e-13 7.7187671e-13 + 2.6522891e-13 7.5623051e-13 + 1.2914242e-12 5.4241362e-12 + 1.1161685e-12 4.5368863e-12 + 9.8932188e-13 3.9114923e-12 + 8.9262557e-13 3.4454959e-12 + 8.1610125e-13 3.0840376e-12 + 7.5380080e-13 2.7949990e-12 + 7.0194206e-13 2.5582811e-12 + 6.5799687e-13 2.3606435e-12 + 6.2020650e-13 2.1929969e-12 + 5.8730686e-13 2.0488893e-12 + 5.5836429e-13 1.9236071e-12 + 5.3267310e-13 1.8136276e-12 + 5.0968927e-13 1.7162609e-12 + 4.8898610e-13 1.6294182e-12 + 4.7022392e-13 1.5514511e-12 + 4.5312870e-13 1.4810407e-12 + 4.3747673e-13 1.4171195e-12 + 4.2308347e-13 1.3588138e-12 + 4.0979524e-13 1.3054009e-12 + 3.9748294e-13 1.2562785e-12 + 3.8603726e-13 1.2109396e-12 + 3.7536500e-13 1.1689548e-12 + 3.6538616e-13 1.1299583e-12 + 3.5603167e-13 1.0936355e-12 + 3.4724153e-13 1.0597152e-12 + 3.3896338e-13 1.0279619e-12 + 3.3115129e-13 9.9817038e-13 + 3.2376480e-13 9.7016046e-13 + 3.1676810e-13 9.4377355e-13 + 3.1012940e-13 9.1887001e-13 + 3.0382033e-13 8.9532526e-13 + 2.9781555e-13 8.7302882e-13 + 2.9209228e-13 8.5188181e-13 + 2.8663004e-13 8.3179588e-13 + 2.8141032e-13 8.1269128e-13 + 2.7641638e-13 7.9449627e-13 + 2.7163300e-13 7.7714602e-13 + 2.6704635e-13 7.6058165e-13 + 2.6264382e-13 7.4474993e-13 + 2.5841387e-13 7.2960214e-13 + 1.2686389e-12 5.2621593e-12 + 1.0957523e-12 4.3996155e-12 + 9.7067753e-13 3.7918122e-12 + 8.7537065e-13 3.3390397e-12 + 7.9997335e-13 2.9879184e-12 + 7.3861065e-13 2.7072037e-12 + 6.8754790e-13 2.4773454e-12 + 6.4428933e-13 2.2854687e-12 + 6.0709913e-13 2.1227355e-12 + 5.7472992e-13 1.9828717e-12 + 5.4626057e-13 1.8612969e-12 + 5.2099494e-13 1.7545860e-12 + 4.9839646e-13 1.6601255e-12 + 4.7804440e-13 1.5758846e-12 + 4.5960384e-13 1.5002618e-12 + 4.4280462e-13 1.4319766e-12 + 4.2742628e-13 1.3699913e-12 + 4.1328694e-13 1.3134567e-12 + 4.0023518e-13 1.2616717e-12 + 3.8814380e-13 1.2140506e-12 + 3.7690512e-13 1.1701015e-12 + 3.6642736e-13 1.1294075e-12 + 3.5663172e-13 1.0916128e-12 + 3.4745017e-13 1.0564124e-12 + 3.3882365e-13 1.0235432e-12 + 3.3070060e-13 9.9277607e-13 + 3.2303582e-13 9.6391195e-13 + 3.1578945e-13 9.3677609e-13 + 3.0892627e-13 9.1121454e-13 + 3.0241498e-13 8.8709146e-13 + 2.9622768e-13 8.6428625e-13 + 2.9033940e-13 8.4269174e-13 + 2.8472776e-13 8.2221178e-13 + 2.7937259e-13 8.0276054e-13 + 2.7425569e-13 7.8426097e-13 + 2.6936058e-13 7.6664310e-13 + 2.6467232e-13 7.4984437e-13 + 2.6017728e-13 7.3380751e-13 + 2.5586307e-13 7.1848072e-13 + 2.5171834e-13 7.0381697e-13 + 1.2460349e-12 5.1046008e-12 + 1.0755155e-12 4.2661323e-12 + 9.5221007e-13 3.6754683e-12 + 8.5828972e-13 3.2355760e-12 + 7.8401641e-13 2.8945226e-12 + 7.2358845e-13 2.6219129e-12 + 6.7331878e-13 2.3987339e-12 + 6.3074406e-13 2.2124657e-12 + 5.9415141e-13 2.0545143e-12 + 5.6231013e-13 1.9187817e-12 + 5.3431160e-13 1.8008147e-12 + 5.0946924e-13 1.6972843e-12 + 4.8725395e-13 1.6056509e-12 + 4.6725089e-13 1.5239413e-12 + 4.4912994e-13 1.4505996e-12 + 4.3262482e-13 1.3843813e-12 + 4.1751828e-13 1.3242785e-12 + 4.0363111e-13 1.2694666e-12 + 3.9081414e-13 1.2192647e-12 + 3.7894208e-13 1.1731035e-12 + 3.6790887e-13 1.1305057e-12 + 3.5762413e-13 1.0910665e-12 + 3.4801027e-13 1.0544402e-12 + 3.3900031e-13 1.0203311e-12 + 3.3053610e-13 9.8848337e-13 + 3.2256689e-13 9.5867486e-13 + 3.1504818e-13 9.3071227e-13 + 3.0794076e-13 9.0442584e-13 + 3.0120995e-13 8.7966622e-13 + 2.9482496e-13 8.5630170e-13 + 2.8875834e-13 8.3421519e-13 + 2.8298553e-13 8.1330246e-13 + 2.7748450e-13 7.9347059e-13 + 2.7223541e-13 7.7463621e-13 + 2.6722037e-13 7.5672431e-13 + 2.6242317e-13 7.3966722e-13 + 2.5782911e-13 7.2340408e-13 + 2.5342480e-13 7.0787959e-13 + 2.4919805e-13 6.9304331e-13 + 2.4513769e-13 6.7884968e-13 + 1.2235877e-12 4.9513431e-12 + 1.0554371e-12 4.1363347e-12 + 9.3390092e-13 3.5623685e-12 + 8.4136609e-13 3.1350238e-12 + 7.6821523e-13 2.8037754e-12 + 7.0872021e-13 2.5390581e-12 + 6.5924174e-13 2.3223826e-12 + 6.1734897e-13 2.1415737e-12 + 5.8135195e-13 1.9882775e-12 + 5.5003674e-13 1.8565654e-12 + 5.2250717e-13 1.7421086e-12 + 4.9808628e-13 1.6416734e-12 + 4.7625241e-13 1.5527908e-12 + 4.5659666e-13 1.4735436e-12 + 4.3879366e-13 1.4024209e-12 + 4.2258105e-13 1.3382127e-12 + 4.0774476e-13 1.2799407e-12 + 3.9410829e-13 1.2268044e-12 + 3.8152468e-13 1.1781414e-12 + 3.6987057e-13 1.1333999e-12 + 3.5904152e-13 1.0921160e-12 + 3.4894852e-13 1.0538965e-12 + 3.3951521e-13 1.0184064e-12 + 3.3067564e-13 9.8535811e-13 + 3.2237259e-13 9.5450333e-13 + 3.1455610e-13 9.2562662e-13 + 3.0718238e-13 8.9853997e-13 + 3.0021286e-13 8.7307899e-13 + 2.9361341e-13 8.4909886e-13 + 2.8735373e-13 8.2647142e-13 + 2.8140682e-13 8.0508319e-13 + 2.7574853e-13 7.8483311e-13 + 2.7035719e-13 7.6563084e-13 + 2.6521330e-13 7.4739551e-13 + 2.6029925e-13 7.3005457e-13 + 2.5559911e-13 7.1354226e-13 + 2.5109843e-13 6.9779943e-13 + 2.4678404e-13 6.8277249e-13 + 2.4264396e-13 6.6841269e-13 + 2.3866723e-13 6.5467559e-13 + 1.2012716e-12 4.8022711e-12 + 1.0354953e-12 4.0101252e-12 + 9.1573096e-13 3.4524259e-12 + 8.2458260e-13 3.0373034e-12 + 7.5255421e-13 2.7156036e-12 + 6.9399161e-13 2.4585719e-12 + 6.4530351e-13 2.2482281e-12 + 6.0409165e-13 2.0727336e-12 + 5.6868912e-13 1.9239685e-12 + 5.3789872e-13 1.7961688e-12 + 5.1083685e-13 1.6851290e-12 + 4.8683611e-13 1.5877048e-12 + 4.6538233e-13 1.5014983e-12 + 4.4607258e-13 1.4246470e-12 + 4.2858624e-13 1.3556823e-12 + 4.1266487e-13 1.2934296e-12 + 3.9809761e-13 1.2369383e-12 + 3.8471063e-13 1.1854312e-12 + 3.7235923e-13 1.1382648e-12 + 3.6092193e-13 1.0949039e-12 + 3.5029593e-13 1.0548973e-12 + 3.4039361e-13 1.0178638e-12 + 3.3113980e-13 9.8347805e-13 + 3.2246962e-13 9.5146060e-13 + 3.1432673e-13 9.2157105e-13 + 3.0666200e-13 8.9359977e-13 + 2.9943234e-13 8.6736483e-13 + 2.9259979e-13 8.4270618e-13 + 2.8613080e-13 8.1948327e-13 + 2.7999556e-13 7.9757209e-13 + 2.7416751e-13 7.7686234e-13 + 2.6862292e-13 7.5725599e-13 + 2.6334046e-13 7.3866543e-13 + 2.5830097e-13 7.2101217e-13 + 2.5348714e-13 7.0422575e-13 + 2.4888331e-13 6.8824261e-13 + 2.4447526e-13 6.7300527e-13 + 2.4025008e-13 6.5846159e-13 + 2.3619597e-13 6.4456460e-13 + 2.3230216e-13 6.3127092e-13 + 1.1790606e-12 4.6572748e-12 + 1.0156678e-12 3.8874041e-12 + 8.9768059e-13 3.3455543e-12 + 8.0792171e-13 2.9423365e-12 + 7.3701740e-13 2.6299367e-12 + 6.7938801e-13 2.3803888e-12 + 6.3149051e-13 2.1762089e-12 + 5.9095945e-13 2.0058884e-12 + 5.5615102e-13 1.8615333e-12 + 5.2588487e-13 1.7375418e-12 + 4.9928997e-13 1.6298264e-12 + 4.7570858e-13 1.5353324e-12 + 4.5463405e-13 1.4517296e-12 + 4.3566938e-13 1.3772084e-12 + 4.1849880e-13 1.3103429e-12 + 4.0286774e-13 1.2499920e-12 + 3.8856858e-13 1.1952325e-12 + 3.7543018e-13 1.1453095e-12 + 3.6331007e-13 1.0995987e-12 + 3.5208870e-13 1.0575798e-12 + 3.4166487e-13 1.0188151e-12 + 3.3195236e-13 9.8293455e-13 + 3.2287721e-13 9.4962239e-13 + 3.1437557e-13 9.1860733e-13 + 3.0639203e-13 8.8965577e-13 + 2.9887825e-13 8.6256469e-13 + 2.9179185e-13 8.3715718e-13 + 2.8509550e-13 8.1327813e-13 + 2.7875620e-13 7.9079131e-13 + 2.7274465e-13 7.6957603e-13 + 2.6703474e-13 7.4952546e-13 + 2.6160311e-13 7.3054457e-13 + 2.5642883e-13 7.1254826e-13 + 2.5149305e-13 6.9546043e-13 + 2.4677876e-13 6.7921279e-13 + 2.4227057e-13 6.6374356e-13 + 2.3795452e-13 6.4899702e-13 + 2.3381790e-13 6.3492295e-13 + 2.2984914e-13 6.2147523e-13 + 2.2603765e-13 6.0861214e-13 + 1.1569279e-12 4.5162422e-12 + 9.9593174e-13 3.7680787e-12 + 8.7972982e-13 3.2416703e-12 + 7.9136552e-13 2.8500483e-12 + 7.2158857e-13 2.5467053e-12 + 6.6489453e-13 2.3044441e-12 + 6.1778900e-13 2.1062656e-12 + 5.7793954e-13 1.9409816e-12 + 5.4372561e-13 1.8009189e-12 + 5.1398380e-13 1.6806332e-12 + 4.8785576e-13 1.5761530e-12 + 4.6469344e-13 1.4845097e-12 + 4.4399775e-13 1.4034399e-12 + 4.2537770e-13 1.3311859e-12 + 4.0852232e-13 1.2663623e-12 + 3.9318100e-13 1.2078609e-12 + 3.7914935e-13 1.1547856e-12 + 3.6625889e-13 1.1064031e-12 + 3.5436945e-13 1.0621076e-12 + 3.4336335e-13 1.0213936e-12 + 3.3314104e-13 9.8383647e-13 + 3.2361769e-13 9.4907674e-13 + 3.1472054e-13 9.1680814e-13 + 3.0638679e-13 8.8676728e-13 + 2.9856194e-13 8.5872752e-13 + 2.9119847e-13 8.3249179e-13 + 2.8425468e-13 8.0788845e-13 + 2.7769389e-13 7.8476701e-13 + 2.7148366e-13 7.6299523e-13 + 2.6559517e-13 7.4245619e-13 + 2.6000277e-13 7.2304613e-13 + 2.5468351e-13 7.0467271e-13 + 2.4961681e-13 6.8725378e-13 + 2.4478415e-13 6.7071518e-13 + 2.4016883e-13 6.5499086e-13 + 2.3575571e-13 6.4002088e-13 + 2.3153110e-13 6.2575116e-13 + 2.2748250e-13 6.1213286e-13 + 2.2359855e-13 5.9912153e-13 + 2.1986885e-13 5.8667669e-13 + 1.1348463e-12 4.3790675e-12 + 9.7626417e-13 3.6520565e-12 + 8.6185846e-13 3.1406908e-12 + 7.7489598e-13 2.7603641e-12 + 7.0625139e-13 2.4658411e-12 + 6.5049619e-13 2.2306753e-12 + 6.0418511e-13 2.0383399e-12 + 5.6501899e-13 1.8779586e-12 + 5.3140075e-13 1.7420738e-12 + 5.0218407e-13 1.6253949e-12 + 4.7652337e-13 1.5240623e-12 + 4.5378037e-13 1.4351930e-12 + 4.3346360e-13 1.3565871e-12 + 4.1518812e-13 1.2865384e-12 + 3.9864781e-13 1.2237008e-12 + 3.8359600e-13 1.1669984e-12 + 3.6983157e-13 1.1155610e-12 + 3.5718873e-13 1.0686766e-12 + 3.4552958e-13 1.0257572e-12 + 3.3473835e-13 9.8631166e-13 + 3.2471714e-13 9.4992865e-13 + 3.1538250e-13 9.1625860e-13 + 3.0666288e-13 8.8500415e-13 + 2.9849655e-13 8.5591041e-13 + 2.9082991e-13 8.2875676e-13 + 2.8361625e-13 8.0335233e-13 + 2.7681458e-13 7.7953043e-13 + 2.7038886e-13 7.5714521e-13 + 2.6430719e-13 7.3606831e-13 + 2.5854127e-13 7.1618618e-13 + 2.5306589e-13 6.9739836e-13 + 2.4785851e-13 6.7961533e-13 + 2.4289890e-13 6.6275713e-13 + 2.3816888e-13 6.4675211e-13 + 2.3365204e-13 6.3153612e-13 + 2.2933354e-13 6.1705087e-13 + 2.2519989e-13 6.0324433e-13 + 2.2123885e-13 5.9006878e-13 + 2.1743925e-13 5.7748127e-13 + 2.1379089e-13 5.6544250e-13 + 1.1127887e-12 4.2456455e-12 + 9.5664198e-13 3.5392468e-12 + 8.4404632e-13 3.0425370e-12 + 7.5849509e-13 2.6732116e-12 + 6.9098955e-13 2.3872785e-12 + 6.3617808e-13 2.1590217e-12 + 5.9066505e-13 1.9723744e-12 + 5.5218495e-13 1.8167659e-12 + 5.1916440e-13 1.6849471e-12 + 4.9047432e-13 1.5717781e-12 + 4.6528204e-13 1.4735088e-12 + 4.4295915e-13 1.3873379e-12 + 4.2302186e-13 1.3111294e-12 + 4.0509133e-13 1.2432258e-12 + 3.8886632e-13 1.1823200e-12 + 3.7410416e-13 1.1273671e-12 + 3.6060698e-13 1.0775227e-12 + 3.4821173e-13 1.0320951e-12 + 3.3678276e-13 9.9051360e-13 + 3.2620626e-13 9.5230179e-13 + 3.1638594e-13 9.1705972e-13 + 3.0723977e-13 8.8444906e-13 + 2.9869743e-13 8.5418087e-13 + 2.9069821e-13 8.2600734e-13 + 2.8318947e-13 7.9971499e-13 + 2.7612529e-13 7.7511846e-13 + 2.6946540e-13 7.5205597e-13 + 2.6317438e-13 7.3038614e-13 + 2.5722092e-13 7.0998435e-13 + 2.5157720e-13 6.9074045e-13 + 2.4621846e-13 6.7255721e-13 + 2.4112258e-13 6.5534763e-13 + 2.3626968e-13 6.3903413e-13 + 2.3164193e-13 6.2354739e-13 + 2.2722320e-13 6.0882507e-13 + 2.2299892e-13 5.9481094e-13 + 2.1895586e-13 5.8145401e-13 + 2.1508201e-13 5.6870852e-13 + 2.1136640e-13 5.5653257e-13 + 2.0779901e-13 5.4488824e-13 + 1.0907284e-12 4.1158752e-12 + 9.3704242e-13 3.4295613e-12 + 8.2627351e-13 2.9471291e-12 + 7.4214514e-13 2.5885203e-12 + 6.7578705e-13 2.3109521e-12 + 6.2192556e-13 2.0894228e-12 + 5.7721531e-13 1.9083139e-12 + 5.3942484e-13 1.7573508e-12 + 5.0700475e-13 1.6294901e-12 + 4.7884344e-13 1.5197369e-12 + 4.5412127e-13 1.4244480e-12 + 4.3221980e-13 1.3409028e-12 + 4.1266303e-13 1.2670265e-12 + 3.9507825e-13 1.2012094e-12 + 3.7916917e-13 1.1421825e-12 + 3.6469713e-13 1.0889313e-12 + 3.5146756e-13 1.0406359e-12 + 3.3932013e-13 9.9662497e-13 + 3.2812152e-13 9.5634417e-13 + 3.1775982e-13 9.1933181e-13 + 3.0814041e-13 8.8519938e-13 + 2.9918269e-13 8.5361835e-13 + 2.9081753e-13 8.2430847e-13 + 2.8298532e-13 7.9702964e-13 + 2.7563433e-13 7.7157434e-13 + 2.6871945e-13 7.4776292e-13 + 2.6220114e-13 7.2543838e-13 + 2.5604462e-13 7.0446364e-13 + 2.5021912e-13 6.8471780e-13 + 2.4469736e-13 6.6609408e-13 + 2.3945501e-13 6.4849815e-13 + 2.3447036e-13 6.3184562e-13 + 2.2972392e-13 6.1606143e-13 + 2.2519815e-13 6.0107805e-13 + 2.2087725e-13 5.8683530e-13 + 2.1674691e-13 5.7327846e-13 + 2.1279416e-13 5.6035852e-13 + 2.0900720e-13 5.4803055e-13 + 2.0537528e-13 5.3625421e-13 + 2.0188858e-13 5.2499279e-13 + 1.0686393e-12 3.9896538e-12 + 9.1744348e-13 3.3229129e-12 + 8.0852086e-13 2.8543915e-12 + 7.2582909e-13 2.5062203e-12 + 6.6062852e-13 2.2367987e-12 + 6.0772458e-13 2.0218206e-12 + 5.6382292e-13 1.8461037e-12 + 5.2672658e-13 1.6996629e-12 + 4.9491051e-13 1.5756542e-12 + 4.6728078e-13 1.4692248e-12 + 4.4303099e-13 1.3768362e-12 + 4.2155278e-13 1.2958457e-12 + 4.0237802e-13 1.2242385e-12 + 3.8514022e-13 1.1604509e-12 + 3.6954807e-13 1.1032514e-12 + 3.5536696e-13 1.0516556e-12 + 3.4240564e-13 1.0048664e-12 + 3.3050657e-13 9.6223296e-13 + 3.1953871e-13 9.2321719e-13 + 3.0939213e-13 8.8737090e-13 + 2.9997387e-13 8.5431705e-13 + 2.9120475e-13 8.2373697e-13 + 2.8301689e-13 7.9535876e-13 + 2.7535174e-13 7.6894942e-13 + 2.6815851e-13 7.4430761e-13 + 2.6139290e-13 7.2125909e-13 + 2.5501612e-13 6.9965182e-13 + 2.4899401e-13 6.7935240e-13 + 2.4329638e-13 6.6024397e-13 + 2.3789644e-13 6.4222286e-13 + 2.3277035e-13 6.2519742e-13 + 2.2789678e-13 6.0908600e-13 + 2.2325661e-13 5.9381582e-13 + 2.1883266e-13 5.7932155e-13 + 2.1460940e-13 5.6554449e-13 + 2.1057280e-13 5.5243195e-13 + 2.0671016e-13 5.3993615e-13 + 2.0300988e-13 5.2801371e-13 + 1.9946144e-13 5.1662569e-13 + 1.9605521e-13 5.0573601e-13 + 1.0464968e-12 3.8668845e-12 + 8.9782445e-13 3.2192175e-12 + 7.9077036e-13 2.7642484e-12 + 7.0953097e-13 2.4262446e-12 + 6.4549957e-13 2.1647574e-12 + 5.9356202e-13 1.9561578e-12 + 5.5047577e-13 1.7856903e-12 + 5.1407894e-13 1.6436517e-12 + 4.8287116e-13 1.5233922e-12 + 4.5577647e-13 1.4201978e-12 + 4.3200187e-13 1.3306312e-12 + 4.1094925e-13 1.2521263e-12 + 3.9215844e-13 1.1827262e-12 + 3.7526921e-13 1.1209134e-12 + 3.5999534e-13 1.0654916e-12 + 3.4610628e-13 1.0155052e-12 + 3.3341415e-13 9.7018092e-13 + 3.2176420e-13 9.2888729e-13 + 3.1102774e-13 8.9110141e-13 + 3.0109681e-13 8.5638867e-13 + 2.9188013e-13 8.2438350e-13 + 2.8329996e-13 7.9477640e-13 + 2.7528968e-13 7.6730385e-13 + 2.6779180e-13 7.4173945e-13 + 2.6075649e-13 7.1788842e-13 + 2.5414028e-13 6.9558134e-13 + 2.4790510e-13 6.7467090e-13 + 2.4201744e-13 6.5502774e-13 + 2.3644769e-13 6.3653851e-13 + 2.3116958e-13 6.1910285e-13 + 2.2615970e-13 6.0263168e-13 + 2.2139716e-13 5.8704604e-13 + 2.1686319e-13 5.7227517e-13 + 2.1254096e-13 5.5825590e-13 + 2.0841524e-13 5.4493122e-13 + 2.0447228e-13 5.3225014e-13 + 2.0069961e-13 5.2016635e-13 + 1.9708589e-13 5.0863781e-13 + 1.9362078e-13 4.9762653e-13 + 1.9029486e-13 4.8709798e-13 + 1.0242787e-12 3.7474710e-12 + 8.7816650e-13 3.1183906e-12 + 7.7300569e-13 2.6766253e-12 + 6.9323635e-13 2.3485265e-12 + 6.3038722e-13 2.0947667e-12 + 5.7942604e-13 1.8923785e-12 + 5.3716297e-13 1.7270219e-12 + 5.0147180e-13 1.5892684e-12 + 4.7087726e-13 1.4726583e-12 + 4.4432164e-13 1.3726122e-12 + 4.2102557e-13 1.2857917e-12 + 4.0040131e-13 1.2097051e-12 + 3.8199676e-13 1.1424525e-12 + 3.6545808e-13 1.0825605e-12 + 3.5050413e-13 1.0288677e-12 + 3.3690852e-13 9.8044668e-13 + 3.2448677e-13 9.3654748e-13 + 3.1308696e-13 8.9655616e-13 + 3.0258275e-13 8.5996641e-13 + 2.9286819e-13 8.2635588e-13 + 2.8385370e-13 7.9537013e-13 + 2.7546300e-13 7.6670894e-13 + 2.6763072e-13 7.4011649e-13 + 2.6030047e-13 7.1537351e-13 + 2.5342338e-13 6.9229082e-13 + 2.4695681e-13 6.7070437e-13 + 2.4086343e-13 6.5047097e-13 + 2.3511038e-13 6.3146564e-13 + 2.2966863e-13 6.1357819e-13 + 2.2451242e-13 5.9671121e-13 + 2.1961883e-13 5.8077856e-13 + 2.1496734e-13 5.6570361e-13 + 2.1053960e-13 5.5141770e-13 + 2.0631907e-13 5.3785983e-13 + 2.0229087e-13 5.2497460e-13 + 1.9844150e-13 5.1271264e-13 + 1.9475875e-13 5.0102877e-13 + 1.9123152e-13 4.8988274e-13 + 1.8784967e-13 4.7923759e-13 + 1.8460396e-13 4.6905968e-13 + 1.0019655e-12 3.6313187e-12 + 8.5845331e-13 3.0203527e-12 + 7.5521280e-13 2.5914527e-12 + 6.7693284e-13 2.2730014e-12 + 6.1528036e-13 2.0267674e-12 + 5.6530655e-13 1.8304281e-12 + 5.2387525e-13 1.6700476e-12 + 4.8889657e-13 1.5364659e-12 + 4.5892081e-13 1.4234076e-12 + 4.3290881e-13 1.3264253e-12 + 4.1009504e-13 1.2422773e-12 + 3.8990230e-13 1.1685437e-12 + 3.7188668e-13 1.1033805e-12 + 3.5570080e-13 1.0453568e-12 + 3.4106869e-13 9.9334606e-13 + 3.2776818e-13 9.4644780e-13 + 3.1561822e-13 9.0393408e-13 + 3.0446974e-13 8.6520951e-13 + 2.9419882e-13 8.2978248e-13 + 2.8470152e-13 7.9724376e-13 + 2.7588997e-13 7.6724890e-13 + 2.6768939e-13 7.3950732e-13 + 2.6003568e-13 7.1377047e-13 + 2.5287356e-13 6.8982585e-13 + 2.4615510e-13 6.6748999e-13 + 2.3983852e-13 6.4660369e-13 + 2.3388724e-13 6.2702841e-13 + 2.2826905e-13 6.0864275e-13 + 2.2295551e-13 5.9133981e-13 + 2.1792138e-13 5.7502536e-13 + 2.1314420e-13 5.5961591e-13 + 2.0860389e-13 5.4503709e-13 + 2.0428245e-13 5.3122250e-13 + 2.0016370e-13 5.1811267e-13 + 1.9623304e-13 5.0565428e-13 + 1.9247729e-13 4.9379926e-13 + 1.8888447e-13 4.8250408e-13 + 1.8544370e-13 4.7172943e-13 + 1.8214507e-13 4.6143965e-13 + 1.7897954e-13 4.5160223e-13 + 9.7954133e-13 3.5183358e-12 + 8.3867184e-13 2.9250235e-12 + 7.3738051e-13 2.5086583e-12 + 6.6061065e-13 2.1996063e-12 + 6.0017026e-13 1.9607028e-12 + 5.5119563e-13 1.7702535e-12 + 5.1060536e-13 1.6147182e-12 + 4.7634658e-13 1.4851978e-12 + 4.4699561e-13 1.3755966e-12 + 4.2153218e-13 1.2815963e-12 + 3.9920483e-13 1.2000488e-12 + 3.7944708e-13 1.1286049e-12 + 3.6182333e-13 1.0654742e-12 + 3.4599275e-13 1.0092685e-12 + 3.3168463e-13 9.5889373e-13 + 3.1868103e-13 9.1347641e-13 + 3.0680443e-13 8.7231022e-13 + 2.9590866e-13 8.3481741e-13 + 2.8587219e-13 8.0052122e-13 + 2.7659316e-13 7.6902438e-13 + 2.6798545e-13 7.3999309e-13 + 2.5997576e-13 7.1314527e-13 + 2.5250128e-13 6.8824021e-13 + 2.4550785e-13 6.6507143e-13 + 2.3894853e-13 6.4346144e-13 + 2.3278238e-13 6.2325565e-13 + 2.2697358e-13 6.0431979e-13 + 2.2149058e-13 5.8653626e-13 + 2.1630553e-13 5.6980136e-13 + 2.1139372e-13 5.5402381e-13 + 2.0673316e-13 5.3912273e-13 + 2.0230419e-13 5.2502581e-13 + 1.9808919e-13 5.1166889e-13 + 1.9407232e-13 4.9899448e-13 + 1.9023931e-13 4.8695059e-13 + 1.8657722e-13 4.7549089e-13 + 1.8307437e-13 4.6457305e-13 + 1.7972009e-13 4.5415917e-13 + 1.7650470e-13 4.4421454e-13 + 1.7341934e-13 4.3470773e-13 + 9.5699518e-13 3.4084329e-12 + 8.1881297e-13 2.8323265e-12 + 7.1950111e-13 2.4281755e-12 + 6.4426311e-13 2.1282796e-12 + 5.8505101e-13 1.8965163e-12 + 5.3708797e-13 1.7118032e-12 + 4.9734848e-13 1.5609853e-12 + 4.6381740e-13 1.4354187e-12 + 4.3509757e-13 1.3291831e-12 + 4.1018796e-13 1.2380850e-12 + 3.8835142e-13 1.1590683e-12 + 3.6903235e-13 1.0898523e-12 + 3.5180358e-13 1.0286992e-12 + 3.3633097e-13 9.7426186e-13 + 3.2234911e-13 9.2547880e-13 + 3.0964440e-13 8.8150196e-13 + 2.9804285e-13 8.4164627e-13 + 2.8740123e-13 8.0535133e-13 + 2.7760049e-13 7.7215462e-13 + 2.6854084e-13 7.4167087e-13 + 2.6013792e-13 7.1357638e-13 + 2.5231996e-13 6.8759749e-13 + 2.4502545e-13 6.6350081e-13 + 2.3820136e-13 6.4108642e-13 + 2.3180174e-13 6.2018175e-13 + 2.2578651e-13 6.0063729e-13 + 2.2012061e-13 5.8232300e-13 + 2.1477318e-13 5.6512436e-13 + 2.0971694e-13 5.4894147e-13 + 2.0492773e-13 5.3368562e-13 + 2.0038403e-13 5.1927816e-13 + 1.9606660e-13 5.0564954e-13 + 1.9195821e-13 4.9273722e-13 + 1.8804337e-13 4.8048565e-13 + 1.8430811e-13 4.6884446e-13 + 1.8073979e-13 4.5776866e-13 + 1.7732697e-13 4.4721735e-13 + 1.7405924e-13 4.3715380e-13 + 1.7092712e-13 4.2754431e-13 + 1.6792194e-13 4.1835851e-13 + 9.3432120e-13 3.3015235e-12 + 7.9887218e-13 2.7421874e-12 + 7.0157096e-13 2.3499382e-12 + 6.2788716e-13 2.0589631e-12 + 5.6991998e-13 1.8341545e-12 + 5.2298130e-13 1.6550277e-12 + 4.8410259e-13 1.5088031e-12 + 4.5130723e-13 1.3870855e-12 + 4.2322509e-13 1.2841259e-12 + 3.9887470e-13 1.1958528e-12 + 3.7753347e-13 1.1192991e-12 + 3.5865687e-13 1.0522510e-12 + 3.4182631e-13 9.9302221e-13 + 3.2671440e-13 9.4030537e-13 + 3.1306114e-13 8.9307028e-13 + 3.0065732e-13 8.5049477e-13 + 2.8933256e-13 8.1191362e-13 + 2.7894660e-13 7.7678353e-13 + 2.6938290e-13 7.4465602e-13 + 2.6054376e-13 7.1515727e-13 + 2.5234664e-13 6.8797353e-13 + 2.4472128e-13 6.6283925e-13 + 2.3760750e-13 6.3952843e-13 + 2.3095342e-13 6.1784717e-13 + 2.2471408e-13 5.9762816e-13 + 2.1885029e-13 5.7872650e-13 + 2.1332774e-13 5.6101599e-13 + 2.0811626e-13 5.4438594e-13 + 2.0318918e-13 5.2873938e-13 + 1.9852286e-13 5.1399028e-13 + 1.9409626e-13 5.0006268e-13 + 1.8989059e-13 4.8688887e-13 + 1.8588899e-13 4.7440849e-13 + 1.8207633e-13 4.6256761e-13 + 1.7843894e-13 4.5131758e-13 + 1.7496449e-13 4.4061467e-13 + 1.7164178e-13 4.3041935e-13 + 1.6846065e-13 4.2069595e-13 + 1.6541183e-13 4.1141201e-13 + 1.6248686e-13 4.0253791e-13 + 9.1151966e-13 3.1975242e-12 + 7.7885012e-13 2.6545337e-12 + 6.8359095e-13 2.2738831e-12 + 6.1148380e-13 1.9915984e-12 + 5.5477823e-13 1.7735646e-12 + 5.0887668e-13 1.5998782e-12 + 4.7086880e-13 1.4581268e-12 + 4.3881719e-13 1.3401568e-12 + 4.1137927e-13 1.2403862e-12 + 3.8759350e-13 1.1548624e-12 + 3.6675208e-13 1.0807058e-12 + 3.4832172e-13 1.0157673e-12 + 3.3189256e-13 9.5841118e-13 + 3.1714405e-13 9.0736796e-13 + 3.0382171e-13 8.6163899e-13 + 2.9172078e-13 8.2042613e-13 + 2.8067451e-13 7.8308465e-13 + 2.7054570e-13 7.4908752e-13 + 2.6122032e-13 7.1799959e-13 + 2.5260281e-13 6.8945857e-13 + 2.4461246e-13 6.6316018e-13 + 2.3718055e-13 6.3884715e-13 + 2.3024824e-13 6.1630023e-13 + 2.2376482e-13 5.9533150e-13 + 2.1768633e-13 5.7577901e-13 + 2.1197447e-13 5.5750192e-13 + 2.0659571e-13 5.4037829e-13 + 2.0152055e-13 5.2430080e-13 + 1.9672294e-13 5.0917528e-13 + 1.9217979e-13 4.9491851e-13 + 1.8787054e-13 4.8145710e-13 + 1.8377682e-13 4.6872517e-13 + 1.7988217e-13 4.5666440e-13 + 1.7617182e-13 4.4522252e-13 + 1.7263241e-13 4.3435228e-13 + 1.6925191e-13 4.2401153e-13 + 1.6601937e-13 4.1416191e-13 + 1.6292488e-13 4.0476890e-13 + 1.5995938e-13 3.9580100e-13 + 1.5711463e-13 3.8722963e-13 diff --git a/class/hyrec/Makefile b/class/hyrec/Makefile new file mode 100644 index 00000000..48384e6c --- /dev/null +++ b/class/hyrec/Makefile @@ -0,0 +1,19 @@ +CC = gcc +AR = ar rv +CCFLAG = -O3 +LDFLAG = -O3 + +%.o: %.c + $(CC) $(CCFLAG) -c $*.c -o $*.o + +HYREC_SRC = hyrectools.o helium.o hydrogen.o history.o +HYREC_EXE = hyrec.o + +clean: + rm *.o + +hyrec: $(HYREC_SRC) $(HYREC_EXE) + $(CC) $(LDFLAG) -o hyrec $(HYREC_SRC) $(HYREC_EXE) -lm + +libhyrec.a: $(HYREC_SRC) + $(AR) $@ $(HYREC_SRC) diff --git a/class/hyrec/R_inf.dat b/class/hyrec/R_inf.dat new file mode 100644 index 00000000..220d432d --- /dev/null +++ b/class/hyrec/R_inf.dat @@ -0,0 +1,100 @@ + 1.7280364e-270 + 6.6039762e-258 + 6.7635594e-246 + 1.9708577e-234 + 1.7300431e-223 + 4.8313008e-213 + 4.5215162e-203 + 1.4903791e-193 + 1.8142665e-184 + 8.5341394e-176 + 1.6197268e-167 + 1.2925969e-159 + 4.5115458e-152 + 7.1507716e-145 + 5.3349221e-138 + 1.9387643e-131 + 3.5460250e-125 + 3.3676825e-119 + 1.7109205e-113 + 4.7839499e-108 + 7.5646529e-103 + 6.9420654e-98 + 3.7898850e-93 + 1.2602397e-88 + 2.6106959e-84 + 3.4425222e-80 + 2.9493845e-76 + 1.6742940e-72 + 6.4165620e-69 + 1.6900470e-65 + 3.1118869e-62 + 4.0714008e-59 + 3.8441840e-56 + 2.6585412e-53 + 1.3658643e-50 + 5.2840064e-48 + 1.5592320e-45 + 3.5530007e-43 + 6.3258596e-41 + 8.8992663e-39 + 9.9988163e-37 + 9.0644363e-35 + 6.6952578e-33 + 4.0669811e-31 + 2.0498201e-29 + 8.6453638e-28 + 3.0760453e-26 + 9.3047039e-25 + 2.4105662e-23 + 5.3864587e-22 + 1.0451486e-20 + 1.7722856e-19 + 2.6426216e-18 + 3.4851890e-17 + 4.0882520e-16 + 4.2883440e-15 + 4.0429523e-14 + 3.4425611e-13 + 2.6598731e-12 + 1.8731305e-11 + 1.2073920e-10 + 7.1526105e-10 + 3.9093178e-09 + 1.9786383e-08 + 9.3067478e-08 + 4.0819149e-07 + 1.6748158e-06 + 6.4483254e-06 + 2.3365930e-05 + 7.9909245e-05 + 0.00025861567 + 0.00079408899 + 0.0023190028 + 0.0064559897 + 0.017171875 + 0.043730414 + 0.10683990 + 0.25089798 + 0.56736529 + 1.2375935 + 2.6082657 + 5.3193132 + 10.512952 + 20.163234 + 37.577705 + 68.135235 + 120.33502 + 207.23852 + 348.38577 + 572.25626 + 919.32050 + 1445.6878 + 2227.3000 + 3364.5516 + 4987.1358 + 7258.8380 + 10381.923 + 14600.711 + 20203.910 + 27525.291 diff --git a/class/hyrec/helium.c b/class/hyrec/helium.c new file mode 100644 index 00000000..1153e61f --- /dev/null +++ b/class/hyrec/helium.c @@ -0,0 +1,185 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* helium.c: all functions related to Hydrogen recombination */ +/* */ +/* Units used in these modules: m, s, Kelvin */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: added input variables so the value of xHeIII */ +/* and post-Saha corrections can be monitored from external routines */ +/*************************************************************************************************/ + + +#include +#include +#include + +/************************************************************************************************ +Gets xe in He II + III equilibrium +*************************************************************************************************/ + +double rec_sahaHeII(double nH0, double Tr0, double fHe, double z, double *xHeIII) { + + double Tr, nH, ainv, s; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe*xHeIII/xHeII + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-631462.7/Tr)/nH; + + *xHeIII = 2.*s*fHe/(1.+s+fHe)/(1.+sqrt(1.+4.*s*fHe/(1.+s+fHe)/(1.+s+fHe))); + + return(1. + fHe + *xHeIII); +} + +/************************************************************************************** +Gets xe in He I + II equilibrium +***************************************************************************************/ + +double rec_sahaHeI(double nH0, double Tr0, double fHe, double z) { + + double Tr, nH, ainv, s, q; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe*xHeII/xHeI + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-285325./Tr)/nH * 4.; + + q = 2.*s*fHe/(1.+s)/(1.+sqrt(1.+4.*s*fHe/(1.+s)/(1.+s))); /* q = xHeII */ + + return(1.+q); +} + +/*************************************************************************************** +Saha equilibrium for Hydrogen, needed in the evolution equation for helium +***************************************************************************************/ + +double rec_saha_xe_H(double nH0, double T0, double z) { + + double xeSaha, s, Tr, nH, ainv; + + Tr = T0 * (ainv=1.+z); /* current radiation temperature */ + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe^2/(1-xe) + * Constants: + * reduced mass Rydberg = 157801.37882 Kelvin (no relativistic corrections) + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.4127161187130e21*Tr*sqrt(Tr)*exp(-157801.37882/Tr)/nH; + + xeSaha = 2./(1.+sqrt(1.+4./s)); + return(xeSaha); +} + +/************************************************************************************* + He II->I recombination rate evolution equation. + Incorporates 2(1)P-->1(1)S escape, with H continuum opacity + 2(1)S-->1(1)S 2 photon decay + 2(3)P-->1(1)S Sobolev + Assumes Compton temperature equilibrium, no Thomson opacity. +**************************************************************************************/ + +double rec_helium_dxedt(double xe, double nH0, double Tr0, double fHe, double H, double z) { + double Tr, nH, ainv, s, s0; + double xHeI, xHeII, y2s, y2p, xHII; + double etacinv, g2pinc, dnuline, tau2p, pesc, tauc; + double xdown, xup, ydown, enh; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Saha abundance ratio, and ratio for zero ionization potential */ + s0 = 2.414194e21*Tr*sqrt(Tr)/nH * 4.; + s = s0 * exp(-285325./Tr); + + /* Abundances of excited levels. y is defined as x_i = y_i * xe * xHeII */ + xHII = rec_saha_xe_H(nH0,Tr0,z); + xHeII = xe - xHII; + xHeI = fHe - xHeII; + y2s = exp(46090./Tr)/s0; + y2p = exp(39101./Tr)/s0 * 3.; + + /* Continuum opacity = H/nH^2 * T^3/2 * exp(-chi/kT) * (2 pi m_e k/h^2)^{3/2} nu/(sigma c) */ + /* coef. is 2.205e50 => log = 115.920 */ + etacinv = H/(nH*nH*xe) * Tr*sqrt(Tr) * exp(115.920-157801.37882/Tr); + + /* Incoherent width of 2(1)P incl. ->2s, 3s, 3d, 4s, 4d, 5s, 5d */ + g2pinc = 1.976e6 / (1.-exp(-6989./Tr)) + + 6.03e6 / (exp(19754./Tr)-1.) + + 1.06e8 / (exp(21539./Tr)-1.) + + 2.18e6 / (exp(28496./Tr)-1.) + + 3.37e7 / (exp(29224./Tr)-1.) + + 1.04e6 / (exp(32414./Tr)-1.) + + 1.51e7 / (exp(32781./Tr)-1.); + + + /* Optical depth, escape prob in x2p */ + tau2p = 4.277e-14 * nH/H * xHeI; + dnuline = g2pinc * tau2p / (4.*M_PI*M_PI); + tauc = dnuline/etacinv; + enh = sqrt(1.+M_PI*M_PI*tauc) + 7.74*tauc/(1.+70.*tauc); + pesc = enh / tau2p; + + + /* Effective increase in escape probability via intercombination line + * ratio of optical depth to allowed line = 1.023e-7 + * 1-e^-tau23 = absorption prob. in intercom line + * e^[(E21P-E23P)/T] - e^[-(E21P-E23P)*eta_c] = step in intercom line + * relative to N_line in 21P + * divide by tau2p to get effective increase in escape prob. + * factor of 0.964525 is phase space factor for intercom vs allowed line -- (584/591)^3 + */ + pesc = pesc + (1.-exp(-1.023e-7*tau2p))*(0.964525*exp(2947./Tr)-enh*exp(-6.14e13/etacinv))/tau2p; + + /* Net decay rate */ + ydown = 50.94*y2s + 1.7989e9*y2p*pesc; + + + /* Excitation via detailed balance */ + xdown = ydown * xHeII * xe; + xup = ydown * xHeI * s; + + /* Return recombination rate, including derivative of hydrogen Saha */ + return(xup-xdown + H*(1.+z)*(rec_saha_xe_H(nH0,Tr0,z-0.5)-rec_saha_xe_H(nH0,Tr0,z+0.5)) ); +} + +/****************************************************************************************************** +Post-Saha expansion for beginning of Helium II -> Helium I +*******************************************************************************************************/ + +double xe_PostSahaHe(double nH0, double Tr0, double fHe, double H, double z, double *Delta_xe){ + + double Tr, nH, s, xeSaha, dxeSahadt, Dxe, DxedotDxe, ainv; + + Tr = Tr0 * (ainv=1.+z); /* current radiation temperature */ + nH = nH0*ainv*ainv*ainv; + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-285325./Tr)/nH * 4.; + xeSaha = rec_sahaHeI(nH0, Tr0, fHe, z); + dxeSahadt = - xeSaha*(xeSaha-1.)/(2.*xeSaha +s-1.) * (285325./Tr - 1.5) * H; /* analytic derivative of xeSaha */ + + Dxe = 0.01 * (1.+fHe-xeSaha); + DxedotDxe = (rec_helium_dxedt(xeSaha + Dxe, nH0, Tr0, fHe, H, z) + - rec_helium_dxedt(xeSaha - Dxe, nH0, Tr0, fHe, H, z))/2./Dxe; + + *Delta_xe = dxeSahadt/DxedotDxe; + + return xeSaha + *Delta_xe; + +} + +/********************************************************************************************************/ diff --git a/class/hyrec/helium.h b/class/hyrec/helium.h new file mode 100644 index 00000000..906fe159 --- /dev/null +++ b/class/hyrec/helium.h @@ -0,0 +1,14 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* helium.h: all functions related to helium recombination */ +/* */ +/* Version: January 2011 (first released November 2010) */ +/*************************************************************************************************/ + +double rec_sahaHeII(double nH0, double Tr0, double fHe, double z, double *xHeIII); +double rec_sahaHeI(double nH0, double Tr0, double fHe, double z); +double rec_helium_dxedt(double xe, double nH0, double Tr0, double fHe, double H, double z); +double rec_saha_xe_H(double nH0, double T0, double z); +double xe_PostSahaHe(double nH0, double Tr0, double fHe, double H, double z, double *Delta_xe); diff --git a/class/hyrec/history.c b/class/hyrec/history.c new file mode 100644 index 00000000..eb85692a --- /dev/null +++ b/class/hyrec/history.c @@ -0,0 +1,469 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* history.c: compute reionization history */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: changed various switches (notably for post-Saha expansions) */ +/* so that they remain valid for arbitrary cosmologies */ +/*************************************************************************************************/ + +#include +#include +#include +#include + +#include "hyrectools.h" +#include "helium.h" +#include "hydrogen.h" +#include "history.h" + +/************************************************************************************************* +Cosmological parameters Input/Output +*************************************************************************************************/ + +void rec_get_cosmoparam(FILE *fin, FILE *fout, REC_COSMOPARAMS *param) { + int fscanf_result; + + fscanf_result = 0; + /* Cosmology */ + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter CMB temperature today [Kelvin]: "); + fscanf_result += fscanf(fin, "%lg", &(param->T0)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter baryon density, omega_bh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->obh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter total matter (CDM+baryons) density, omega_mh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->omh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter curvature, omega_kh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->okh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter dark energy density, omega_deh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->odeh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter dark energy equation of state parameters, w wa: "); + fscanf_result += fscanf(fin, "%lg %lg", &(param->w0), &(param->wa)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter primordial helium mass fraction, Y: "); + fscanf_result += fscanf(fin, "%lg", &(param->Y)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter effective number of neutrino species, N_nu_eff: "); + fscanf_result += fscanf(fin, "%lg", &(param->Nnueff)); + if (fscanf_result!=9){printf("Hyrec Warning :: Failed to read cosmological parameters");} + + param->nH0 = 11.223846333047*param->obh2*(1.-param->Y); /* number density of hudrogen today in m-3 */ + param->fHe = param->Y/(1-param->Y)/3.97153; /* abundance of helium by number */ + + + /* Redshift range */ + param->zstart = 8000.; + param->zend = 0.; + param->dlna = 8.49e-5; + param->nz = (long) floor(2+log((1.+param->zstart)/(1.+param->zend))/param->dlna); + + if (fout!=NULL && PROMPT==1) fprintf(fout, "\n"); +} + +/************************************************************************************* +Hubble expansion parameter in sec^-1 +*************************************************************************************/ + +double rec_HubbleConstant(REC_COSMOPARAMS *param, double z) { + + int j; + double rho, rho_i[5], ainv; + double ogh2; + + ainv = 1.+z; /* inverse scale factor */ + + /* Matter */ + rho_i[0] = param->omh2 *ainv*ainv*ainv; + + /* Curvature */ + rho_i[1] = param->okh2 *ainv*ainv; + + /* Dark energy */ + rho_i[2] = param->odeh2 * pow(ainv, 3*(1+param->w0)) * exp(3*param->wa* (log(ainv)-1.+1./ainv)); + + /* Get radiation density. + * Coefficient based on 1 AU = 1.49597870691e11 m (JPL SSD) */ + ogh2 = 4.48162687719e-7 * param->T0 * param->T0 * param->T0 * param->T0; + rho_i[3] = ogh2 *ainv*ainv*ainv*ainv; + + /* Neutrino density -- scaled from photons assuming lower temperature */ + rho_i[4] = 0.227107317660239 * rho_i[3] * param->Nnueff; + + /* Total density, including curvature contribution */ + rho = 0.; for(j=0; j<5; j++) rho += rho_i[j]; + + /* Conversion to Hubble rate */ + return( 3.2407792896393e-18 * sqrt(rho) ); +} + +/***************************************************************************************** +Matter temperature -- 1st order steady state, from Hirata 2008 +******************************************************************************************/ + +double rec_Tmss(double xe, double Tr, double H, double fHe, double nH, double energy_rate) { + + double chi_heat; + + //chi_heat = (1.+2.*xe)/3.; // old approximation from Chen and Kamionkowski + + // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Galli et al. 2013) + if (xe < 1.) { + chi_heat = 0.996857*(1.-pow(1.-pow(xe,0.300134),1.51035)); + if (chi_heat > 1.) chi_heat = 1.; + } + else + chi_heat = 1.; + + return Tr/(1.+H/4.91466895548409e-22/Tr/Tr/Tr/Tr*(1.+xe+fHe)/xe) + +2./3./kBoltz*chi_heat/nH*energy_rate/(4.91466895548409e-22*pow(Tr,4)*xe); + + /* Coefficient = 8 sigma_T a_r / (3 m_e c) */ +} + +/****************************************************************************************** +Matter temperature evolution derivative +******************************************************************************************/ + +double rec_dTmdlna(double xe, double Tm, double Tr, double H, double fHe, double nH, double energy_rate) { + + double chi_heat; + + //chi_heat = (1.+2.*xe)/3.; // old approximation from Chen and Kamionkowski + + // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Galli et al. 2013) + if (xe < 1.) { + chi_heat = 0.996857*(1.-pow(1.-pow(xe,0.300134),1.51035)); + if (chi_heat > 1.) chi_heat = 1.; + } + else + chi_heat = 1.; + + return -2.*Tm + 4.91466895548409e-22*Tr*Tr*Tr*Tr*xe/(1.+xe+fHe)*(Tr-Tm)/H + +2./3./kBoltz*chi_heat/nH*energy_rate/(1.+xe+fHe)/H; +} + +/********************************************************************************************** +Second order integrator using derivative from previous time steps +Evolves xe only, assumes Tm is given by the steady-state solution +***********************************************************************************************/ + +void rec_get_xe_next1(REC_COSMOPARAMS *param, double z1, double xe_in, double *xe_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *z_prev2, double *dxedlna_prev2) { + + double dxedlna, Tr, nH, ainv, H, Tm; + + Tr = param->T0 * (ainv=1.+z1); + nH = param->nH0 * ainv*ainv*ainv; + H = rec_HubbleConstant(param, z1); + Tm = rec_Tmss(xe_in, Tr, H, param->fHe, nH*1e-6, energy_injection_rate(param,z1)); + + #if (MODEL == PEEBLES) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == RECFAST) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HRecFast_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == EMLA2s2p) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #else + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + func_select==FUNC_H2G ? rec_HMLA_2photon_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z1, energy_injection_rate(param,z1)) + :rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #endif + + *xe_out = xe_in + param->dlna * (1.25 * dxedlna - 0.25 * (*dxedlna_prev2)); + + *z_prev2 = *z_prev; + *dxedlna_prev2 = *dxedlna_prev; + *z_prev = z1; + *dxedlna_prev = dxedlna; + +} + +/********************************************************************************************** +Second order integrator using derivative from previous time steps +Evolves xe and Tm simultaneously +***********************************************************************************************/ + +void rec_get_xe_next2(REC_COSMOPARAMS *param, double z1, double xe_in, double Tm_in, double *xe_out, double *Tm_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *dTmdlna_prev, + double *z_prev2, double *dxedlna_prev2, double *dTmdlna_prev2) { + + double dxedlna, dTmdlna, Tr, nH, ainv, H; + + Tr = param->T0 * (ainv=1.+z1); + nH = param->nH0 * ainv*ainv*ainv; + H = rec_HubbleConstant(param, z1); + + #if (MODEL == PEEBLES) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == RECFAST) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HRecFast_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == EMLA2s2p) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #else + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + func_select==FUNC_H2G ? rec_HMLA_2photon_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z1, + energy_injection_rate(param,z1)): + func_select==FUNC_HMLA ? rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table) + :rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); /* used for z < 20 only */ + #endif + + dTmdlna = rec_dTmdlna(xe_in, Tm_in, Tr, H, param->fHe, nH*1e-6, energy_injection_rate(param,z1)); + + *xe_out = xe_in + param->dlna * (1.25 * dxedlna - 0.25 * (*dxedlna_prev2)); + *Tm_out = Tm_in + param->dlna * (1.25 * dTmdlna - 0.25 * (*dTmdlna_prev2)); + + *z_prev2 = *z_prev; + *dxedlna_prev2 = *dxedlna_prev; + *dTmdlna_prev2 = *dTmdlna_prev; + *z_prev = z1; + *dxedlna_prev = dxedlna; + *dTmdlna_prev = dTmdlna; + + +} + +/**************************************************************************************************** +Builds a recombination history +****************************************************************************************************/ + +void rec_build_history(REC_COSMOPARAMS *param, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog_params, + double *xe_output, double *Tm_output) { + + + long iz; + double **logfminus_hist; + double *logfminus_Ly_hist[3]; + double H, z, z_prev, dxedlna_prev, z_prev2, dxedlna_prev2, dTmdlna_prev, dTmdlna_prev2; + double Delta_xe; + + /* history of photon occupation numbers */ + logfminus_hist = create_2D_array(NVIRT, param->nz); + logfminus_Ly_hist[0] = create_1D_array(param->nz); /* Ly-alpha */ + logfminus_Ly_hist[1] = create_1D_array(param->nz); /* Ly-beta */ + logfminus_Ly_hist[2] = create_1D_array(param->nz); /* Ly-gamma */ + + + z = param->zstart; + + + /********* He II + III Saha phase *********/ + Delta_xe = 1.; /* Delta_xe = xHeIII */ + + for(iz=0; iznz && Delta_xe > 1e-9; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + xe_output[iz] = rec_sahaHeII(param->nH0,param->T0,param->fHe,z, &Delta_xe); + Tm_output[iz] = param->T0 * (1.+z); + } + + /******* He I + II post-Saha phase *********/ + Delta_xe = 0.; /* Delta_xe = xe - xe(Saha) */ + + for (; iznz && Delta_xe < 5e-4; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + xe_output[iz] = xe_PostSahaHe(param->nH0,param->T0,param->fHe, rec_HubbleConstant(param,z), z, &Delta_xe); + Tm_output[iz] = param->T0 * (1.+z); + } + + /****** Segment where we follow the helium recombination evolution, Tm fixed to steady state *******/ + + z_prev2 = (1.+param->zstart)*exp(-param->dlna*(iz-3)) - 1.; + dxedlna_prev2 = (xe_output[iz-2] - xe_output[iz-4])/2./param->dlna; + + z_prev = (1.+param->zstart)*exp(-param->dlna*(iz-2)) - 1.; + dxedlna_prev = (xe_output[iz-1] - xe_output[iz-3])/2./param->dlna; + + Delta_xe = 1.; /* Difference between xe and H-Saha value */ + + for(; iznz && (Delta_xe > 1e-4 || z > 1650.); iz++) { + + rec_get_xe_next1(param, z, xe_output[iz-1], xe_output+iz, rate_table, FUNC_HEI, iz-1, twog_params, + logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &z_prev2, &dxedlna_prev2); + + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), rec_HubbleConstant(param, z), param->fHe, param->nH0*cube(1.+z), energy_injection_rate(param,z)); + + /* Starting to populate the photon occupation number with thermal values */ + update_fminus_Saha(logfminus_hist, logfminus_Ly_hist, xe_output[iz], param->T0*(1.+z)*kBoltz, + param->nH0*cube(1.+z)*1e-6, twog_params, param->zstart, param->dlna, iz, z, 0); + + Delta_xe = fabs(xe_output[iz]- rec_saha_xe_H(param->nH0, param->T0, z)); + } + + + /******* Hydrogen post-Saha equilibrium phase *********/ + Delta_xe = 0.; /*Difference between xe and Saha value */ + + for(; iznz && Delta_xe < 5e-5; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + H = rec_HubbleConstant(param,z); + xe_output[iz] = xe_PostSahaH(param->nH0*cube(1.+z)*1e-6, H, kBoltz*param->T0*(1.+z), rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z, &Delta_xe, MODEL, energy_injection_rate(param,z)); + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), H, param->fHe, param->nH0*cube(1.+z), energy_injection_rate(param,z)); + } + + /******* Segment where we follow the hydrogen recombination evolution with two-photon processes + Tm fixed to steady state ******/ + + z_prev2 = (1.+param->zstart)*exp(-param->dlna*(iz-3)) - 1.; + dxedlna_prev2 = (xe_output[iz-2] - xe_output[iz-4])/2./param->dlna; + + z_prev = (1.+param->zstart)*exp(-param->dlna*(iz-2)) - 1.; + dxedlna_prev = (xe_output[iz-1] - xe_output[iz-3])/2./param->dlna; + + for(; iznz && 1.-Tm_output[iz-1]/param->T0/(1.+z) < 5e-4 && z > 700.; iz++) { + + rec_get_xe_next1(param, z, xe_output[iz-1], xe_output+iz, rate_table, FUNC_H2G, iz-1, twog_params, + logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &z_prev2, &dxedlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), rec_HubbleConstant(param, z), param->fHe, param->nH0*cube(1.+z)*1e-6, energy_injection_rate(param,z)); + } + + /******* Segment where we follow the hydrogen recombination evolution with two-photon processes + AND Tm evolution ******/ + + dTmdlna_prev2 = rec_dTmdlna(xe_output[iz-3], Tm_output[iz-3], param->T0*(1.+z_prev2), + rec_HubbleConstant(param, z_prev2), param->fHe, param->nH0*cube(1.+z_prev2), energy_injection_rate(param,z_prev2)); + dTmdlna_prev = rec_dTmdlna(xe_output[iz-2], Tm_output[iz-2], param->T0*(1.+z_prev), + rec_HubbleConstant(param, z_prev), param->fHe, param->nH0*cube(1.+z_prev), energy_injection_rate(param,z_prev)); + + for(; iznz && z > 700.; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_H2G, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /***** Segment where we follow Tm as well as xe *****/ + /* Radiative transfer effects switched off here */ + for(; iznz && z>20.; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_HMLA, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /*** For z < 20 use Peeble's model. The precise model does not metter much here as + 1) the free electron fraction is basically zero (~1e-4) in any case and + 2) the universe is going to be reionized around that epoch + Tm is still evolved explicitly ***/ + for(; iznz; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_PEEBLES, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /* Cleanup */ + free_2D_array(logfminus_hist, NVIRT); + free(logfminus_Ly_hist[0]); + free(logfminus_Ly_hist[1]); + free(logfminus_Ly_hist[2]); + +} + +double onthespot_injection_rate(REC_COSMOPARAMS *param, + double z) { + + double annihilation_at_z; + double rho_cdm_today; + double u_min; + double erfc; + + /*redshift-dependent annihilation parameter*/ + + if (z>param->annihilation_zmax) { + + annihilation_at_z = param->annihilation* + exp(-param->annihilation_variation*pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2)); + } + else if (z>param->annihilation_zmin) { + + annihilation_at_z = param->annihilation* + exp(param->annihilation_variation*(-pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2) + +pow(log((z+1.)/(param->annihilation_zmax+1.)),2))); + } + else { + + annihilation_at_z = param->annihilation* + exp(param->annihilation_variation*(-pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2) + +pow(log((param->annihilation_zmin+1.)/(param->annihilation_zmax+1.)),2))); + } + + rho_cdm_today = param->omh2*1.44729366e-9; /* energy density in Kg/m^3 */ + + u_min = (1+z)/(1+param->annihilation_z_halo); + + erfc = pow(1.+0.278393*u_min+0.230389*u_min*u_min+0.000972*u_min*u_min*u_min+0.078108*u_min*u_min*u_min*u_min,-4); + + return (pow(rho_cdm_today,2)/2.99792458e8/2.99792458e8*pow((1.+z),3)* + (pow((1.+z),3)*annihilation_at_z+param->annihilation_f_halo*erfc) + +rho_cdm_today*pow((1+z),3)*param->decay)/1.e6/1.60217653e-19; + /* energy density rate in eV/cm^3/s (remember that annihilation_at_z is in m^3/s/Kg and decay in s^-1) */ + /* note that the injection rate used by recfast, defined in therodynamics.c, is in J/m^3/s. Here we multiplied by 1/1.e6/1.60217653e-19 to convert to eV and cm. */ + +} + +double energy_injection_rate(REC_COSMOPARAMS *param, + double z) { + + double zp,dz; + double integrand,first_integrand; + double factor,result; + + if (param->annihilation > 0.) { + + if (param->has_on_the_spot == 0) { + + /* factor = c sigma_T n_H(0) / H(0) (dimensionless) */ + factor = 2.99792458e8 * 6.6524616e-29 * param->nH0 / (3.2407792896393e-18 * sqrt(param->omh2)); + + /* integral over z'(=zp) with step dz */ + dz=1.; + + /* first point in trapezoidal integral */ + zp = z; + first_integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot_injection_rate(param,zp); // beware: versions before 2.4.3, there were rwrong exponents: 6 and 5.5 instead of 8 and 7.5 + result = 0.5*dz*first_integrand; + + /* other points in trapezoidal integral */ + do { + + zp += dz; + integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot_injection_rate(param,zp); // beware: versions before 2.4.3, there were rwrong exponents: 6 and 5.5 instead of 8 and 7.5 + result += dz*integrand; + //moment += dz*integrand*(zp-z); + + } while (integrand/first_integrand > 0.02); + + /* test lines for printing energy rate rescaled by (1=z)^6 in J/m^3/s w/o approximation */ + /* fprintf(stdout,"%e %e %e\n", 1.+z, result/pow(1.+z,6)*1.602176487e-19*1.e6, onthespot_injection_rate(param,z)/pow(1.+z,6)*1.602176487e-19*1.e6); */ + + } + else { + result = onthespot_injection_rate(param,z); + } + + /* effective energy density rate in eV/cm^3/s */ + return result; + } + else { + return 0.; + } + +} diff --git a/class/hyrec/history.h b/class/hyrec/history.h new file mode 100644 index 00000000..4b7fff0d --- /dev/null +++ b/class/hyrec/history.h @@ -0,0 +1,98 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* history.h: functions for recombination history */ +/* */ +/*************************************************************************************************/ + +#define PROMPT 1 /* Set to zero to suppress initial prompts */ + +/**** Switch to choose the physical model used for hydrogen ****/ + +/* definitions*/ +#define PEEBLES 0 /* Peebles effective three-level atom */ +#define RECFAST 1 /* Effective three-level atom for hydrogen with fudge factor F = 1.14 */ +#define EMLA2s2p 2 /* Correct EMLA model, with standard decay rates from 2s and 2p only */ +#define FULL 3 /* All radiative transfer effects included. Additional switches in header file hydrogen.h */ + +/** here is the switch **/ +#define MODEL RECFAST /* default setting: FULL */ + +/***** Switches for derivative d(xe)/dt *****/ + +#define FUNC_HEI 1 +#define FUNC_H2G 2 +#define FUNC_HMLA 3 +#define FUNC_PEEBLES 4 + +/**** Cosmological parameters. + Include information on starting and ending redshit and timestep ****/ + +typedef struct { + double T0; /* CMB temperature today in K*/ + double obh2, omh2, okh2; /* cosmological parameters */ + double odeh2, w0, wa; /* dark energy parameters */ + double Y; /* primordial helium abundance */ + double Nnueff; /* effective number of neutrinos */ + + /* Secondary parameters, to avoid recalculating every time */ + double nH0; /* density of hydrogen today in m^{-3} */ + double fHe; /* Helium fraction by number */ + + double zstart, zend, dlna; /* initial and final redshift and step size in log a */ + long nz; /* total number of redshift steps */ + + /** parameters for energy injection */ + + double annihilation; /** parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + + short has_on_the_spot; /** do we want to use the on-the-spot approximation? */ + + double decay; /** parameter descibing CDM decay (f/tau, see e.g. 1109.6322)*/ + + double annihilation_variation; /** if this parameter is non-zero, + the function F(z)=(f / + m_cdm)(z) will be a parabola in + log-log scale between zmin and + zmax, with a curvature given by + annihlation_variation (must ne + negative), and with a maximum in + zmax; it will be constant outside + this range */ + + double annihilation_z; /** if annihilation_variation is non-zero, + this is the value of z at which the + parameter annihilation is defined, i.e. + F(annihilation_z)=annihilation */ + + double annihilation_zmax; /** if annihilation_variation is non-zero, + redhsift above which annihilation rate + is maximal */ + + double annihilation_zmin; /** if annihilation_variation is non-zero, + redhsift below which annihilation rate + is constant */ + + double annihilation_f_halo; /* takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /*characteristic redshift for DM annihilation in halos*/ + +} REC_COSMOPARAMS; + +void rec_get_cosmoparam(FILE *fin, FILE *fout, REC_COSMOPARAMS *param); +double rec_HubbleConstant(REC_COSMOPARAMS *param, double z); +double rec_Tmss(double xe, double Tr, double H, double fHe, double nH, double energy_rate); +double rec_dTmdlna(double xe, double Tm, double Tr, double H, double fHe , double nH, double energy_rate); +void rec_get_xe_next1(REC_COSMOPARAMS *param, double z1, double xe_in, double *xe_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *z_prev2, double *dxedlna_prev2); +void rec_get_xe_next2(REC_COSMOPARAMS *param, double z1, double xe_in, double Tm_in, double *xe_out, double *Tm_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *dTmdlna_prev, + double *z_prev2, double *dxedlna_prev2, double *dTmdlna_prev2); +void rec_build_history(REC_COSMOPARAMS *param, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog_params, + double *xe_output, double *Tm_output); + +double energy_injection_rate(REC_COSMOPARAMS *param, double z); diff --git a/class/hyrec/hydrogen.c b/class/hyrec/hydrogen.c new file mode 100644 index 00000000..3170ef3a --- /dev/null +++ b/class/hyrec/hydrogen.c @@ -0,0 +1,834 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hydrogen.c: all functions related to Hydrogen recombination */ +/* */ +/* Units used: cgs + eV (all temperatures in eV) */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: - changed the post-Saha expansion to use the full derivative */ +/* (including two-photon processes and diffusion) rather than Peebles'ODE */ +/* - post-Saha expansion can now pass the difference from Saha value */ +/* to external routines */ +/* - differential 2s--1s rate is now systematically normalized to */ +/* total 2s--1s rate that can be set by user in hydrogen.h */ +/*************************************************************************************************/ + +#include +#include +#include + +#include "hyrectools.h" +#include "hydrogen.h" + + +/************************************************************************************************** +Case-B recombination coefficient, fit of Pequignot et al 1991, in cm^3 s^{-1} +***************************************************************************************************/ + +double alphaB_PPB(double TM) { + double t4; + t4 = TM/kBoltz/1e4; + return 4.309e-13*pow(t4,-0.6166)/(1.+ 0.6703*pow(t4,0.5300)); +} + +/************************************************************************************************** +Peebles recombination rate +***************************************************************************************************/ + +double rec_HPeebles_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate) { + + double RLya, alphaB, four_betaB, C; + double chi_ion_H; + + RLya = 4.662899067555897e15 * H / nH / (1.-xe); + alphaB = alphaB_PPB(TM); + four_betaB = 3.016103031869581e21 *TR*sqrt(TR) *exp(-0.25*EI/TR) *alphaB; + + C = (3.*RLya + L2s1s)/(3.*RLya + L2s1s + four_betaB); + + // chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (-nH*xe*xe*alphaB + four_betaB*(1.-xe)*exp(-E21/TR))*C/H + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C)/E21)/H; + +} + +/**************************************************************************************************** +RecFast recombination rate (Seager et al 1999, 2000): effective three-level atom +with a fudge factor F = 1.14 +****************************************************************************************************/ + +double rec_HRecFast_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate) { + + double RLya, alphaB, four_betaB, C; + double chi_ion_H; + + RLya = 4.662899067555897e15 * H / nH / (1.-xe); + alphaB = 1.14 * alphaB_PPB(TM); + four_betaB = 3.016103031869581e21 *TR*sqrt(TR) *exp(-0.25*EI/TR) *alphaB; + + C = (3.*RLya + L2s1s)/(3.*RLya + L2s1s + four_betaB); + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (-nH*xe*xe*alphaB + four_betaB*(1.-xe)*exp(-E21/TR))*C/H + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C)/E21)/H; + +} + +/********************************************************************************************** +Store tabulated temperatures and read effective MLA rates from files. +**********************************************************************************************/ + +void read_rates(HRATEEFF *rate_table){ + + FILE *fA = fopen(ALPHA_FILE, "r"); + FILE *fR = fopen(RR_FILE, "r"); + + unsigned i, j, l; + int fscanf_result; + + maketab(log(TR_MIN), log(TR_MAX), NTR, rate_table->logTR_tab); + maketab(TM_TR_MIN, TM_TR_MAX, NTM, rate_table->TM_TR_tab); + rate_table->DlogTR = rate_table->logTR_tab[1] - rate_table->logTR_tab[0]; + rate_table->DTM_TR = rate_table->TM_TR_tab[1] - rate_table->TM_TR_tab[0]; + + for (i = 0; i < NTR; i++) { + for (j = 0; j < NTM; j++) { + for (l = 0; l <= 1; l++) { + fscanf_result = fscanf(fA, "%le", &(rate_table->logAlpha_tab[l][j][i])); + if(fscanf_result != 1){printf("Hyrec Warning :: Could not read log Alpha table (Alpha_inf.dat)");} + rate_table->logAlpha_tab[l][j][i] = log(rate_table->logAlpha_tab[l][j][i]); + } + } + + fscanf_result = fscanf(fR, "%le", &(rate_table->logR2p2s_tab[i])); + if(fscanf_result != 1){printf("Hyrec Warning :: Could not read rate table (R_inf.dat)");} + rate_table->logR2p2s_tab[i] = log(rate_table->logR2p2s_tab[i]); + + } + fclose(fA); + fclose(fR); +} + +/************************************************************************************************ +Interpolation of tabulated effective rates +To be more (slightly) efficient, not using the external interpolation routine. +************************************************************************************************/ + +void interpolate_rates(double Alpha[2], double Beta[2], double *R2p2s, double TR, double TM_TR, HRATEEFF *rate_table) { + double factor; + unsigned l, k; + long iTM, iTR; + double frac1, frac2; + double logTR; + double coeff1[4], coeff2[4], temp[4]; + + logTR = log(TR); + + /* Check if TM/TR is in the range tabulated */ + if (TM_TR < TM_TR_MIN || TM_TR > TM_TR_MAX) { + fprintf(stderr, "Error: TM/TR-value is out of range in interpolate_rates.\n"); + exit(1); + } + + /* Check if log(TR) is in the range tabulated */ + if (TR < TR_MIN || TR > TR_MAX) { + fprintf(stderr,"Error: TR-value is out of range in interpolate_rates.\n"); + exit(1); + } + + /* Identify location to interpolate in TM/TR */ + iTM = (long)floor((TM_TR - TM_TR_MIN)/rate_table->DTM_TR); + if (iTM < 1) iTM = 1; + if (iTM > NTM-3) iTM = NTM-3; + frac1 = (TM_TR - TM_TR_MIN)/rate_table->DTM_TR - iTM; + coeff1[0] = frac1*(frac1-1.)*(2.-frac1)/6.; + coeff1[1] = (1.+frac1)*(1.-frac1)*(2.-frac1)/2.; + coeff1[2] = (1.+frac1)*frac1*(2.-frac1)/2.; + coeff1[3] = (1.+frac1)*frac1*(frac1-1.)/6.; + + /* Identify location to interpolate in log(TR) */ + iTR = (long)floor((logTR - log(TR_MIN))/rate_table->DlogTR); + if (iTR < 1) iTR = 1; + if (iTR > NTR-3) iTR = NTR-3; + frac2 = (logTR - log(TR_MIN))/rate_table->DlogTR - iTR; + coeff2[0] = frac2*(frac2-1.)*(2.-frac2)/6.; + coeff2[1] = (1.+frac2)*(1.-frac2)*(2.-frac2)/2.; + coeff2[2] = (1.+frac2)*frac2*(2.-frac2)/2.; + coeff2[3] = (1.+frac2)*frac2*(frac2-1.)/6.; + + + for (l = 0; l <= 1; l++) { + /* effective recombination coefficient to each level */ + for (k = 0; k < 4; k++) { + temp[k] = rate_table->logAlpha_tab[l][iTM-1+k][iTR-1]*coeff2[0] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR]*coeff2[1] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR+1]*coeff2[2] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR+2]*coeff2[3]; + } + + Alpha[l] = exp(temp[0]*coeff1[0]+temp[1]*coeff1[1] + +temp[2]*coeff1[2]+temp[3]*coeff1[3]); + + /* Alpha evaluated at Tm = Tr, for use in detailed balance */ + Beta[l] = exp(rate_table->logAlpha_tab[l][NTM-1][iTR-1]*coeff2[0] + +rate_table->logAlpha_tab[l][NTM-1][iTR]*coeff2[1] + +rate_table->logAlpha_tab[l][NTM-1][iTR+1]*coeff2[2] + +rate_table->logAlpha_tab[l][NTM-1][iTR+2]*coeff2[3]); + } + + /* Beta obtained by detailed balance */ + /* factor = pow(2.0 * M_PI * mue *TR / hPc / hPc, 1.5)) * exp(-0.25*EI/TR) */ + factor = 3.016103031869581e21 * TR*sqrt(TR) * exp(-3.399571517984581/TR); + Beta[0] *= factor; /* 2s */ + Beta[1] *= factor/3.; /* 2p */ + + /* Effective 2p->2s rate */ + *R2p2s = exp(rate_table->logR2p2s_tab[iTR-1]*coeff2[0] + +rate_table->logR2p2s_tab[iTR]*coeff2[1] + +rate_table->logR2p2s_tab[iTR+1]*coeff2[2] + +rate_table->logR2p2s_tab[iTR+2]*coeff2[3]); + +} + +/************************************************************************************************ +Solves for the populations of the 2s and 2p states in steady-state, and returns dxe/dt. +Uses standard rate for 2s-->1s decay and Sobolev for Lyman alpha (no feedback) +Inputs: xe, nH in cm^{-3}, H in s^{-1}, TM, TR in eV. Output: dxe/dlna +************************************************************************************************/ + +double rec_HMLA_dxedlna(double xe, double nH, double Hubble, double TM, double TR, double energy_rate, HRATEEFF *rate_table){ + + double Alpha[2]; + double Beta[2]; + double R2p2s; + double matrix[2][2]; + double RHS[2]; + double det, RLya; + double x2[2]; + double x1s_db; + double C_2p; + double chi_ion_H; + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + x1s_db = (1.-xe)*exp(-E21/TR); + + /******** 2s *********/ + matrix[0][0] = Beta[0] + 3.*R2p2s + L2s1s; + matrix[0][1] = -R2p2s; + RHS[0] = xe*xe*nH *Alpha[0] + L2s1s *x1s_db; + + /******** 2p *********/ + RLya = 4.662899067555897e15 *Hubble /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + matrix[1][1] = Beta[1] + R2p2s + RLya; + matrix[1][0] = -3.*R2p2s; + RHS[1] = xe*xe*nH *Alpha[1] + 3.*RLya *x1s_db; + + /**** invert the 2 by 2 system matrix_ij * xj = RHSi *****/ + det = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; + x2[0] = (matrix[1][1] * RHS[0] - matrix[0][1] * RHS[1])/det; + x2[1] = (matrix[0][0] * RHS[1] - matrix[1][0] * RHS[0])/det; + + C_2p=(RLya+R2p2s*L2s1s/matrix[0][0])/(matrix[1][1]-R2p2s*3.*R2p2s/matrix[0][0]); + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (x1s_db*(L2s1s + 3.*RLya) -x2[0]*L2s1s -x2[1]*RLya)/Hubble + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C_2p)/E21)/Hubble; + +} + +/********************************************************************************************* +Read two-photon rates from table +**********************************************************************************************/ + +void read_twog_params(TWO_PHOTON_PARAMS *twog){ + + FILE *fA; + unsigned b; + double L2s1s_current; + int fscanf_result; + + fA = fopen(TWOG_FILE, "r"); + + for (b = 0; b < NVIRT; b++) { + fscanf_result = 0; + fscanf_result += fscanf(fA, "%le", &(twog->Eb_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A1s_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A2s_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A3s3d_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A4s4d_tab[b])); + if(fscanf_result!=5){printf("Hyrec Warning :: Could not read Two Photon table (two_photon_tables.dat)");} + } + fclose(fA); + + /* Normalize 2s--1s differential decay rate to L2s1s (can be set by user in hydrogen.h) */ + L2s1s_current = 0.; + for (b = 0; b < NSUBLYA; b++) L2s1s_current += twog->A2s_tab[b]; + for (b = 0; b < NSUBLYA; b++) twog->A2s_tab[b] *= L2s1s/L2s1s_current; + + + /* Switches for the various effects considered in Hirata (2008) and diffusion: + Effect A: correct 2s-->1s rate, with stimulated decays and absorptions of non-thermal photons + Effect B: Sub-Lyman-alpha two-photon decays + Effect C: Super-Lyman-alpha two-photon decays + Effect D: Raman scattering */ + + #if (EFFECT_A == 0) + for (b = 0; b < NSUBLYA; b++) twog->A2s_tab[b] = 0; + #endif + #if (EFFECT_B == 0) + for (b = 0; b < NSUBLYA; b++) twog->A3s3d_tab[b] = twog->A4s4d_tab[b] = 0; + #endif + #if (EFFECT_C == 0) + for (b = NSUBLYA; b < NVIRT; b++) twog->A3s3d_tab[b] = twog->A4s4d_tab[b] = 0; + #endif + #if (EFFECT_D == 0) + for (b = NSUBLYA; b < NVIRT; b++) twog->A2s_tab[b] = 0; + for (b = NSUBLYB; b < NVIRT; b++) twog->A3s3d_tab[b] = 0; + #endif + #if (DIFFUSION == 0) + for (b = 0; b < NVIRT; b++) twog->A1s_tab[b] = 0; + #endif + +} + +/****************************************************************************************************** +Square and cube, used often +******************************************************************************************************/ + +double square(double x) { + return x*x; +} + +double cube(double x) { + return x*x*x; +} + +/******************************************************************************************************** +Compute the A_{b,b+/-1} "Einstein A-"coefficients between virtual states, due to diffusion +(In the notation of the paper, A_{b,b\pm1} = R_{b,b\pm1}) +Aup[b] = A_{b, b+1} Adn[b] = A_{b, b-1} +********************************************************************************************************/ + +void populate_Diffusion(double *Aup, double *Adn, double *A2p_up, double *A2p_dn, + double TM, double Eb_tab[NVIRT], double A1s_tab[NVIRT]) { + + unsigned b; + double DE2; + + DE2 = E21*E21*2.*TM/mH; + + /****** RED WING ******/ + b = NSUBLYA - NDIFF/2; + Aup[b] = DE2 / square(Eb_tab[b+1] - Eb_tab[b]) * A1s_tab[b]; /* A{0,1}. Assume A{0,-1} = 0 */ + + for (b = NSUBLYA - NDIFF/2 + 1; b < NSUBLYA-1; b++) { + Adn[b] = exp((Eb_tab[b] - Eb_tab[b-1])/TM) * Aup[b-1]; /* Detailed balance */ + Aup[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b] - Eb_tab[b-1]) * Adn[b]) + /square(Eb_tab[b+1] - Eb_tab[b]); /* Aup[b] , Adn[b] must add up to correct diffusion rate */ + } + /* Last bin below Lyman alpha */ + b = NSUBLYA - 1; + Adn[b] = exp((Eb_tab[b] - Eb_tab[b-1])/TM) * Aup[b-1]; + + Aup[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b] - Eb_tab[b-1]) * Adn[b]) + /square(E21 - Eb_tab[b]); + *A2p_dn = exp((E21 - Eb_tab[b])/TM)/3.* Aup[b]; /* 2p -> NSUBLYA-1 rate obtained by detailed balance */ + + + /****** BLUE WING ******/ + b = NSUBLYA + NDIFF/2 - 1; + Adn[b] = DE2 / square(Eb_tab[b] - Eb_tab[b-1]) * A1s_tab[b]; + + for (b = NSUBLYA + NDIFF/2 - 2; b > NSUBLYA; b--) { + Aup[b] = exp((Eb_tab[b] - Eb_tab[b+1])/TM) * Adn[b+1]; + Adn[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b+1] - Eb_tab[b]) * Aup[b]) + /square(Eb_tab[b] - Eb_tab[b-1]); + } + /* First bin above Lyman alpha */ + b = NSUBLYA; + Aup[b] = exp((Eb_tab[b] - Eb_tab[b+1])/TM) * Adn[b+1]; + + Adn[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b+1] - Eb_tab[b]) * Aup[b]) + /square(Eb_tab[b] - E21); + *A2p_up = exp((E21 - Eb_tab[b])/TM)/3. * Adn[b]; /* 2p -> NSUBLYA rate obtained by detailed balance */ + + +} + +/********************************************************************************************************* + Populate the real-real, real-virtual, virtual-real and virtual-virtual T-matrices, + as well as the source vectors sr, sv, +WITH DIFFUSION. Tvv[0][b] is the diagonal element Tbb, Tvv[1][b] = T{b,b-1} and Tvv[2][b] = T{b,b+1} +Also, computes and stores the optical depths Delta tau_b for future use +**********************************************************************************************************/ + +void populateTS_2photon(double Trr[2][2], double *Trv[2], double *Tvr[2], double *Tvv[3], + double sr[2], double sv[NVIRT], double Dtau[NVIRT], + double xe, double TM, double TR, double nH, double H, HRATEEFF *rate_table, + TWO_PHOTON_PARAMS *twog, double fplus[NVIRT], double fplus_Ly[], + double Alpha[2], double Beta[2], double z) { + + double R2p2s; + unsigned b; + double RLya, Gammab, Pib, dbfact; + + double *Aup, *Adn; + double A2p_up, A2p_dn; + + Aup = create_1D_array(NVIRT); + Adn = create_1D_array(NVIRT); + + RLya = 4.662899067555897e15 *H /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + /****** 2s row and column ******/ + + Trr[0][0] = Beta[0] + 3.*R2p2s + + 3.* RLya * (1.664786871919931 *exp(-E32/TR) /* Ly-beta escape */ + + 1.953125 *exp(-E42/TR)); /* Ly-gamma escape */ + + Trr[0][1] = -R2p2s; + sr[0] = nH * Alpha[0] * xe*xe + + 3.* RLya * (1.-xe) * (1.664786871919931 *fplus_Ly[1] + + 1.953125 *exp(-E41/TR)); + + #if (EFFECT_A == 0) + /* Standard treatment of 2s-->1s two-photon decays */ + Trr[0][0] += L2s1s; + sr[0] += L2s1s * (1.-xe) * exp(-E21/TR); + #endif + + + /****** 2p row and column ******/ + + Trr[1][1] = Beta[1] + R2p2s + RLya; + Trr[1][0] = -3.*R2p2s; + sr[1] = nH * Alpha[1] * xe*xe + 3.*RLya * (1.-xe) * fplus_Ly[0]; + + + /***** Two-photon transitions: populating Trv, Tvr and updating Trr ******/ + + for (b = 0; b < NVIRT; b++) { + dbfact = exp((twog->Eb_tab[b] - E21)/TR); + + Trr[0][0] -= Tvr[0][b] = -twog->A2s_tab[b]/fabs(exp((twog->Eb_tab[b] - E21)/TR)-1.); + Trv[0][b] = Tvr[0][b] *dbfact; + + Trr[1][1] -= Tvr[1][b] = -exp(-E32/TR)/3. * twog->A3s3d_tab[b]/fabs(exp((twog->Eb_tab[b] - E31)/TR)-1.) + -exp(-E42/TR)/3. * twog->A4s4d_tab[b]/fabs(exp((twog->Eb_tab[b] - E41)/TR)-1.); + Trv[1][b] = Tvr[1][b] *3.*dbfact; + } + + /****** Tvv and sv. Accounting for DIFFUSION ******/ + + populate_Diffusion(Aup, Adn, &A2p_up, &A2p_dn, TM, twog->Eb_tab, twog->A1s_tab); + + /* Updating Tvr, Trv, Trr for diffusion between line center ("2p state") and two neighboring bins */ + + Trr[1][1] += (A2p_dn + A2p_up); + + for (b = 0; b < NVIRT; b++) { + + Gammab = -(Trv[0][b] + Trv[1][b]) + Aup[b] + Adn[b]; /* Inverse lifetime of virtual state b */ + + /*** Diffusion region ***/ + if ( (b >= NSUBLYA - NDIFF/2 && b < NSUBLYA - 1) + ||(b > NSUBLYA && b < NSUBLYA + NDIFF/2)) { + Tvv[1][b] = -Aup[b-1]; + Tvv[2][b] = -Adn[b+1]; + } + /* Bins neighboring Lyman alpha. */ + if (b == NSUBLYA-1) { + Tvv[1][b] = -Aup[b-1]; + Tvv[2][b] = 0.; + Tvr[1][b] -= A2p_dn; + Trv[1][b] -= Aup[b]; + } + if (b == NSUBLYA) { + Tvv[1][b] = 0.; + Tvv[2][b] = -Adn[b+1]; + Tvr[1][b] -= A2p_up; + Trv[1][b] -= Adn[b]; + } + /*********************/ + + Dtau[b] = Gammab * (1.-xe) * cube(hPc/twog->Eb_tab[b]) * nH /8. /M_PI /H; + + if (Dtau[b] > 1e-30) { + Pib = (1.-exp(-Dtau[b]))/Dtau[b]; + Tvv[0][b] = Gammab/(1.-Pib); + sv[b] = Tvv[0][b] * (1.-xe) * fplus[b] * Pib; + } + else { /* Nearly vanishing optical depth: free streaming */ + Tvv[0][b] = 1.; + Trv[0][b] = Trv[1][b] = Tvr[0][b] = Tvr[1][b] = 0; + sv[b] = (1.-xe) * fplus[b]; + } + } + + free(Aup); + free(Adn); +} + +/********************************************************************* +Solves the linear system T*X = B, where T is a DIAGONALLY DOMINANT +tridiagonal matrix, and X and B are both one-column vectors of N elements. +diag[i] = T_{ii}, updiag[i] = T_{i,i+1}, dndiag[i] = T_{i,i-1} +IMPORTANT: This is NOT THE MOST GENERAL ALGORITHM. Only adapted for the +case we will consider, i.e. |T_{ii}| > |T_{i,i+1}| + |T_{i,i-1}|. +**********************************************************************/ + +void solveTXeqB(double *diag, double *updiag, double *dndiag, + double *X, double *B, unsigned N){ + int i; + double denom; + double *alpha = create_1D_array(N); + double *gamma = create_1D_array(N); /* X[i] = gamma[i] - alpha[i] * X[i+1] */ + + alpha[0] = updiag[0] / diag[0]; + gamma[0] = B[0] / diag[0]; + + for (i = 1; i < N; i++) { + denom = diag[i] - dndiag[i] * alpha[i-1]; + alpha[i] = updiag[i] / denom; + gamma[i] = (B[i] - dndiag[i] * gamma[i-1]) / denom; + } + + X[N-1] = gamma[N-1]; + for (i = N-2; i >= 0; i--) X[i] = gamma[i] - alpha[i] * X[i+1]; + + free(alpha); + free(gamma); +} + +/************************************************************************************************************** +Solves for the populations of the real (2s, 2p) and virtual states +***************************************************************************************************************/ + +void solve_real_virt(double xr[2], double xv[NVIRT], double Trr[2][2], double *Trv[2], double *Tvr[2], + double *Tvv[3], double sr[2], double sv[NVIRT]){ + + double *Tvv_inv_Tvr[2]; + double *Tvv_inv_sv; + double Trr_new[2][2]; + double sr_new[2]; + unsigned i, j, b; + double det; + + unsigned NSUBDIFF; + NSUBDIFF = NSUBLYA - NDIFF/2; /* lowest bin of the diffusion region */ + + /** Allocate memory **/ + for (i = 0; i < 2; i++) Tvv_inv_Tvr[i] = create_1D_array(NVIRT); + Tvv_inv_sv = create_1D_array(NVIRT); + + + /*** Computing Tvv^{-1}.Tvr ***/ + + for (i = 0; i < 2; i++) { + for (b = 0; b < NSUBDIFF; b++) Tvv_inv_Tvr[i][b] = Tvr[i][b]/Tvv[0][b]; + for (b = NSUBLYA + NDIFF/2; b < NVIRT; b++) Tvv_inv_Tvr[i][b] = Tvr[i][b]/Tvv[0][b]; + solveTXeqB(Tvv[0]+NSUBDIFF, Tvv[2]+NSUBDIFF, Tvv[1]+NSUBDIFF, Tvv_inv_Tvr[i]+NSUBDIFF, Tvr[i]+NSUBDIFF, NDIFF); + } + + /*** Trr_new = Trr - Trv.Tvv^{-1}.Tvr ***/ + for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) { + Trr_new[i][j] = Trr[i][j]; + for (b = 0; b < NVIRT; b++) Trr_new[i][j] -= Trv[i][b]*Tvv_inv_Tvr[j][b]; + } + + /*** Computing Tvv^{-1}.sv ***/ + for (b = 0; b < NSUBDIFF; b++) Tvv_inv_sv[b] = sv[b]/Tvv[0][b]; + for (b = NSUBLYA + NDIFF/2; b < NVIRT; b++) Tvv_inv_sv[b] = sv[b]/Tvv[0][b]; + solveTXeqB(Tvv[0]+NSUBDIFF, Tvv[2]+NSUBDIFF, Tvv[1]+NSUBDIFF, Tvv_inv_sv+NSUBDIFF, sv+NSUBDIFF, NDIFF); + + /*** sr_new = sr - Trv.Tvv^{-1}sv ***/ + for (i = 0; i < 2; i++) { + sr_new[i] = sr[i]; + for (b = 0; b < NVIRT; b++) sr_new[i] -= Trv[i][b]*Tvv_inv_sv[b]; + } + + /*** Solve 2 by 2 system Trr_new.xr = sr_new ***/ + det = Trr_new[0][0] * Trr_new[1][1] - Trr_new[0][1] * Trr_new[1][0]; + xr[0] = (Trr_new[1][1] * sr_new[0] - Trr_new[0][1] * sr_new[1])/det; + xr[1] = (Trr_new[0][0] * sr_new[1] - Trr_new[1][0] * sr_new[0])/det; + + /*** xv = Tvv^{-1}(sv - Tvr.xr) ***/ + for (b = 0; b < NVIRT; b++) xv[b] = Tvv_inv_sv[b] - Tvv_inv_Tvr[0][b]*xr[0] - Tvv_inv_Tvr[1][b]*xr[1]; + + + /** Free memory **/ + for (i = 0; i < 2; i++) free(Tvv_inv_Tvr[i]); + free(Tvv_inv_sv); + + +} + +/************************************************************************************************************* +Obtain fplus at each bin, given the history of fminus (simple free-streaming). iz is the current time step. +fminus[0..iz-1] is known. +Assume the Lyman lines are optically thick +logfminus_hist is a NVIRT by nz array of previous log(f(nu_b - epsilon)(z)) +logfminus_Ly_hist is a 3 by nz array of previous log(f(nu - epsilon)) redward of Ly alpha, beta and gamma lines +*************************************************************************************************************/ + +void fplus_from_fminus(double fplus[NVIRT], double fplus_Ly[], double **logfminus_hist, double *logfminus_Ly_hist[], + double TR, double zstart, double dlna, unsigned iz, double z, double Eb_tab[NVIRT]) +{ + unsigned b; + double ainv, lna_start, zp1; + + zp1 = 1.+z; + lna_start = -log(1.+zstart); + + /*** Bins below Lyman alpha ***/ + for (b = 0; b < NSUBLYA-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest bin below Ly-alpha: feedback from optically thick Ly-alpha ***/ + b = NSUBLYA-1; + ainv = zp1*E21/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[0], iz, -log(ainv))); + + /*** incoming photon occupation number at Lyman alpha ***/ + b = NSUBLYA; /* next highest bin */ + ainv = zp1*Eb_tab[b]/E21; + fplus_Ly[0] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b], iz, -log(ainv))); + + /*** Bins between Lyman alpha and beta ***/ + for (b = NSUBLYA; b < NSUBLYB-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest bin below Ly-beta: feedback from Ly-beta ***/ + b = NSUBLYB-1; + ainv = zp1*E31/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[1], iz, -log(ainv))); + + /*** incoming photon occupation number at Lyman beta ***/ + b = NSUBLYB; /* next highest bin */ + ainv = zp1*Eb_tab[b]/E31; + fplus_Ly[1] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b], iz, -log(ainv))); + + + /*** Bins between Lyman beta and gamma ***/ + for (b = NSUBLYB; b < NVIRT-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest energy bin: feedback from Ly-gamma ***/ + b = NVIRT-1; + ainv = zp1*E41/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[2], iz, -log(ainv))); + +} + +/****************************************************************************************************************** +d(x_e)/dt when including two-photon processes +This is independent of whether diffusion is present or not. +fminus[0..iz-1] is known. Update fminus[iz] +******************************************************************************************************************/ + +double rec_HMLA_2photon_dxedlna(double xe, double nH, double H, double TM, double TR, + HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double energy_rate){ + + double xr[2]; + double xv[NVIRT]; + double xedot, Pib, feq; + double fplus[NVIRT], fplus_Ly[3]; + unsigned b, i; + + double Trr[2][2]; + double matrix[2][2]; + double *Trv[2]; + double *Tvr[2]; + double *Tvv[3]; + double sr[2]; + double sv[NVIRT]; + double Dtau[NVIRT]; + double Alpha[2], Beta[2]; + + double RLya; + double R2p2s; + double C_2p; + + double chi_ion_H; + + for (i = 0; i < 2; i++) Trv[i] = create_1D_array(NVIRT); + for (i = 0; i < 2; i++) Tvr[i] = create_1D_array(NVIRT); + for (i = 0; i < 3; i++) Tvv[i] = create_1D_array(NVIRT); + + /* Redshift photon occupation number from previous times and higher energy bins */ + fplus_from_fminus(fplus, fplus_Ly, logfminus_hist, logfminus_Ly_hist, TR, + zstart, dlna, iz, z, twog->Eb_tab); + + /* Compute real-real, real-virtual and virtual-virtual transition rates */ + populateTS_2photon(Trr, Trv, Tvr, Tvv, sr, sv, Dtau, xe, TM, TR, nH, H, rate_table, + twog, fplus, fplus_Ly, Alpha, Beta, z); + + /* Solve for the population of the real and virtual states */ + solve_real_virt(xr, xv, Trr, Trv, Tvr, Tvv, sr, sv); + + + /*************************************************************/ + + /* Dark matter annihilation*/ + RLya = 4.662899067555897e15 *H /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + matrix[0][0] = Beta[0] + 3.*R2p2s + L2s1s; + matrix[1][1] = Beta[1] + R2p2s + RLya; + + C_2p=(RLya+R2p2s*L2s1s/matrix[0][0])/(matrix[1][1]-R2p2s*3.*R2p2s/matrix[0][0]); + + + /*************************************************************/ + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + /* Obtain xe_dot */ + xedot = -nH*xe*xe*(Alpha[0]+Alpha[1]) + xr[0]*Beta[0] + xr[1]*Beta[1] + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C_2p)/E21); + + + /* Update fminuses */ + + for (b = 0; b < NVIRT; b++) { + if (Dtau[b] != 0) { + Pib = (1.-exp(-Dtau[b]))/Dtau[b]; + feq = -xr[0]*Tvr[0][b] - xr[1]*Tvr[1][b]; + feq -= (b == 0 ? xv[1]*Tvv[2][0]: + b == NVIRT-1 ? xv[NVIRT-2]*Tvv[1][NVIRT-1]: + xv[b+1]*Tvv[2][b] + xv[b-1]*Tvv[1][b]); + feq /= (1.-xe)*(1.-Pib)*Tvv[0][b]; + + logfminus_hist[b][iz] = log(fplus[b] + (feq - fplus[b])*(1.-exp(-Dtau[b]))); + } + else logfminus_hist[b][iz] = log(fplus[b]); + } + + /* log(xnp/(3 x1s)) , n = 2, 3, 4, assuming 3p and 4p in Boltzmann eq. with 2s */ + logfminus_Ly_hist[0][iz] = log(xr[1]/3./(1.-xe)); + logfminus_Ly_hist[1][iz] = log(xr[0]/(1.-xe)) - E32/TR; + logfminus_Ly_hist[2][iz] = log(xr[0]/(1.-xe)) - E42/TR; + + + for (i = 0; i < 2; i++) free(Trv[i]); + for (i = 0; i < 2; i++) free(Tvr[i]); + for (i = 0; i < 3; i++) free(Tvv[i]); + + return xedot/H; +} + +/****************************************************************************************** +Post-Saha expansion using the full derivative with two-photon processes and diffusion +ADDED JANUARY 2011 +*******************************************************************************************/ + +double xe_PostSahaH(double nH, double H, double T, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double *Dxe, int model, double energy_rate){ + + double s, xeSaha, dxeSaha_dlna, Ddxedlna_Dxe; + + s = 3.016103031869581e21 *T*sqrt(T) *exp(-EI/T)/nH; /* xe^2/(1-xe) in Saha eq.*/ + xeSaha = 2./(1.+sqrt(1.+4./s)); /* Saha equilibrium */ + dxeSaha_dlna = -(EI/T - 1.5)/(2.*xeSaha + s)*xeSaha*xeSaha; /* Analytic derivative of above expression */ + + if (model == 0) { /* Peebles model */ + Ddxedlna_Dxe = (rec_HPeebles_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate) + - rec_HPeebles_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate))/0.02/(1.-xeSaha); + } + else if (model == 1) { /* "Recfast" model */ + Ddxedlna_Dxe = (rec_HRecFast_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate) + - rec_HRecFast_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate))/0.02/(1.-xeSaha); + } + else if (model == 2) { /* EMLA model with 2s and 2p decays only, no radiative transfer */ + Ddxedlna_Dxe = (rec_HMLA_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate, rate_table) + - rec_HMLA_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate, rate_table))/0.02/(1.-xeSaha); + } + else { /* Default mode, with radiative transfer */ + Ddxedlna_Dxe = (rec_HMLA_2photon_dxedlna(xeSaha+0.01*(1.-xeSaha),nH, H, T, T, + rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate) + - rec_HMLA_2photon_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, + rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate))/0.02/(1.-xeSaha); + } + + *Dxe = dxeSaha_dlna/Ddxedlna_Dxe; + + /* Compute derivative again just so the fminuses are properly updated */ + //dxedlna = rec_HMLA_2photon_dxedlna(xeSaha + *Dxe, nH, H, T, T,rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate); + + return xeSaha + *Dxe; + +} + +/***************************************************************************************************** +Update fminus(z) given the history of previous fminus's, assuming: +- thermal radiation field and Boltzmann equilibrium for the excited states if func_select = 0 +- excited states are in Saha eq. with xe, and free-streaming for the radiation field between + optically thick Lyman lines if func_select = 1 +*****************************************************************************************************/ + +void update_fminus_Saha(double **logfminus_hist, double *logfminus_Ly_hist[], + double xe, double TR, double nH, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, unsigned iz, double z, int func_select){ + + double fplus[NVIRT]; + double fplus_Ly[2]; + unsigned b; + double common_fact; + + if (func_select == 0) { + for (b = 0; b < NVIRT; b++) logfminus_hist[b][iz] = -twog->Eb_tab[b]/TR; + logfminus_Ly_hist[0][iz] = -E21/TR; + logfminus_Ly_hist[1][iz] = -E31/TR; + logfminus_Ly_hist[2][iz] = -E41/TR; + } + else { + fplus_from_fminus(fplus, fplus_Ly, logfminus_hist, logfminus_Ly_hist, TR, + zstart, dlna, iz, z, twog->Eb_tab); + + for (b = 0; b < NVIRT; b++) logfminus_hist[b][iz] = log(fplus[b]); /* free streaming */ + + common_fact = log(nH*xe*xe/(1.-xe)/(3.016103031869581e21 *TR*sqrt(TR))); + logfminus_Ly_hist[0][iz] = common_fact + EI/4./TR; /* Saha equilibrium with the continuum */ + logfminus_Ly_hist[1][iz] = common_fact + EI/9./TR; + logfminus_Ly_hist[2][iz] = common_fact + EI/16./TR; + } +} + +/***********************************************************************************************************/ diff --git a/class/hyrec/hydrogen.h b/class/hyrec/hydrogen.h new file mode 100644 index 00000000..948c36e7 --- /dev/null +++ b/class/hyrec/hydrogen.h @@ -0,0 +1,116 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hydrogen.h: all functions related to Hydrogen recombination */ +/* */ +/* Units used: cgs + eV (all temperatures in eV) */ +/* Version: Januray 2011 (updated value of 2s--1s decay rate, */ +/* changed temperature range for effective rates) */ +/*************************************************************************************************/ + +/****** CONSTANTS IN CGS + EV UNIT SYSTEM *******/ + +#define EI 13.598286071938324 /* Hydrogen ionization energy in eV, reduced mass, no relativistic corrections */ + +/* Energy differences between excited levels of hydrogen -- used often */ +#define E21 10.198714553953742 +#define E31 12.087365397278509 +#define E41 12.748393192442178 +#define E32 1.8886508433247664 +#define E42 2.5496786384884356 + +#define hPc 1.239841874331e-04 /* hc in eV cm */ +#define mH 0.93878299831e9 /* Hydrogen atom mass in eV/c^2 */ +#define kBoltz 8.617343e-5 /* Boltzmann constant in eV/K */ +#define L2s1s 8.2206 /* 2s -> 1s two-photon decay rate in s^{-1} (Labzowsky et al 2005) */ + + + +double square(double x); +double cube(double x); + + +/*********** PEEBLES + POST-SAHA + RECFAST ***************/ + +double alphaB_PPB(double TM); +double rec_HPeebles_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate); +double rec_HRecFast_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate); + +/************* EFFECTIVE MULTI LEVEL ATOM *******************/ + +#define ALPHA_FILE "Alpha_inf.dat" /* Contains the effective recombination coefficients to 2s and 2p */ +#define RR_FILE "R_inf.dat" /* Contains the effective transfer rate R_{2p,2s} */ + + +/* Boundaries and number of elements of temperature tables */ +#define TR_MIN 0.004 /* Tr parameters */ +#define TR_MAX 0.4 +#define NTR 100 +#define TM_TR_MIN 0.1 /* Tm/Tr parameters */ +#define TM_TR_MAX 1.0 +#define NTM 40 + +/* Effective rate coefficients structure */ +typedef struct { + double *logTR_tab; + double *TM_TR_tab; + double **logAlpha_tab[2]; + double *logR2p2s_tab; + double DlogTR, DTM_TR; +} +HRATEEFF; + +void read_rates(HRATEEFF *rate_table); +void interpolate_rates(double Alpha[2], double Beta[2], double *R2p2s, double TR, double TM_TR, HRATEEFF *rate_table); +double rec_HMLA_dxedlna(double xe, double nH, double Hubble, double TM, double TR, double energy_rate, HRATEEFF *rate_table); + +/************ TWO-PHOTON PROCESSES AND DIFFUSION ************/ + +#define EFFECT_A 1 /* 2s-->1s stimulated two-photon decays and non-thermal absorptions */ +#define EFFECT_B 1 /* Sub-Lyman alpha two-photon transitions 3s/3d<--> 1s and 4s/4d<-->1s */ +#define EFFECT_C 1 /* Super-Lyman alpha two-photon transitions 3s/3d<--> 1s and 4s/4d<-->1s */ +#define EFFECT_D 1 /* Raman scattering from 2s and 3s/3d */ +#define DIFFUSION 1 /* Lyman alpha frequency diffusion */ + + +#define NSUBLYA 140 +#define NSUBLYB 271 +#define NVIRT 311 +#define NDIFF 80 +#define TWOG_FILE "two_photon_tables.dat" +/* maximum dlna = 8.5e-5 */ + + + +typedef struct { + double Eb_tab[NVIRT]; /* Energies of the virtual levels in eV */ + double A1s_tab[NVIRT]; /* 3*A2p1s*phi(E)*DE */ + double A2s_tab[NVIRT]; /* dLambda_2s/dE * DeltaE if E < Elya dK2s/dE * Delta E if E > Elya */ + double A3s3d_tab[NVIRT]; /* (dLambda_3s/dE + 5*dLambda_3d/dE) * Delta E for E < ELyb, Raman scattering rate for E > ELyb */ + double A4s4d_tab[NVIRT]; /* (dLambda_4s/dE + 5*dLambda_4d/dE) * Delta E */ +} TWO_PHOTON_PARAMS; + +void read_twog_params(TWO_PHOTON_PARAMS *twog); +void populate_Diffusion(double *Aup, double *Adn, double *A2p_up, double *A2p_dn, + double TM, double Eb_tab[NVIRT], double A1s_tab[NVIRT]); +void populateTS_2photon(double Trr[2][2], double *Trv[2], double *Tvr[2], double *Tvv[3], + double sr[2], double sv[NVIRT], double Dtau[NVIRT], + double xe, double TM, double TR, double nH, double H, HRATEEFF *rate_table, + TWO_PHOTON_PARAMS *twog, double fplus[NVIRT], double fplus_Ly[], + double Alpha[], double Beta[], double z); +void solveTXeqB(double *diag, double *updiag, double *dndiag, double *X, double *B, unsigned N); +void solve_real_virt(double xr[2], double xv[NVIRT], double Trr[2][2], double *Trv[2], double *Tvr[2], + double *Tvv[3], double sr[2], double sv[NVIRT]); +void fplus_from_fminus(double fplus[NVIRT], double fplus_Ly[], double **logfminus_hist, double *logfminus_Ly_hist[], + double TR, double zstart, double dlna, unsigned iz, double z, double Eb_tab[NVIRT]); +double rec_HMLA_2photon_dxedlna(double xe, double nH, double H, double TM, double TR, + HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], unsigned iz, double z, + double energy_rate); +double xe_PostSahaH(double nH, double H, double T, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double *Dxe, int model, double energy_rate); +void update_fminus_Saha(double **logfminus_hist, double *logfminus_Ly_hist[], + double xe, double TR, double nH, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, unsigned iz, double z, int func_select); diff --git a/class/hyrec/hyrec.c b/class/hyrec/hyrec.c new file mode 100644 index 00000000..4cf3e3fd --- /dev/null +++ b/class/hyrec/hyrec.c @@ -0,0 +1,76 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hyrec.c: main module */ +/* */ +/* Version: November 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: changed various switches (notably for post-Saha expansions) */ +/* so that they remain valid for arbitrary cosmologies */ +/* - November 2011: extended integration down to z = 0 with Peeble's model for z < 20 */ +/* changed dTm/dlna so it can be used at all times */ +/*************************************************************************************************/ + +#include +#include +#include +#include + +#include "hyrec.h" + +int main(void) { + + REC_COSMOPARAMS param; + HRATEEFF rate_table; + TWO_PHOTON_PARAMS twog_params; + double *xe_output, *Tm_output; + long iz; + + double dz = -1; + unsigned nz = 8001; + double z, xe, Tm; + + + /* Build effective rate table */ + rate_table.logTR_tab = create_1D_array(NTR); + rate_table.TM_TR_tab = create_1D_array(NTM); + rate_table.logAlpha_tab[0] = create_2D_array(NTM, NTR); + rate_table.logAlpha_tab[1] = create_2D_array(NTM, NTR); + rate_table.logR2p2s_tab = create_1D_array(NTR); + read_rates(&rate_table); + + /* Read two-photon rate tables */ + read_twog_params(&twog_params); + + + /* Get cosmological parameters */ + rec_get_cosmoparam(stdin, stderr, ¶m); + + /* Compute the recombination history */ + xe_output = (double*)malloc((size_t)(param.nz*sizeof(double))); + Tm_output = (double*)malloc((size_t)(param.nz*sizeof(double))); + + rec_build_history(¶m, &rate_table, &twog_params, xe_output, Tm_output); + + /* Interpolate at the desired output redshifts */ + for(iz=0; iz +#include +#include + +#include "hyrectools.h" + +/************************************************************************** +Creates a [n1] array. +***************************************************************************/ + +double *create_1D_array(unsigned n1){ + + double *matrix = (double *) calloc(n1, sizeof(double)); + if (matrix == NULL) { + fprintf(stderr, "memory issue in create_1D_array\n"); + exit(1); + } + return matrix; +} + +/************************************************************************** +Creates a [n1][n2] array. +***************************************************************************/ + +double **create_2D_array(unsigned n1, unsigned n2){ + + unsigned i; + double **matrix = (double **) calloc(n1, sizeof(double *)); + if (matrix == NULL){ + fprintf(stderr, "memory issue in create_2D_array\n"); + exit(1); + } + for (i = 0; i < n1; i++) matrix[i] = create_1D_array(n2); + + return matrix; +} + +/******************************************************************************* +Frees the memory of a [n1][] array. +********************************************************************************/ + +void free_2D_array(double **matrix, unsigned n1){ + + unsigned i; + for (i = 0; i < n1; i++) free(matrix[i]); + + free(matrix); +} + +/********************************************************************************* +Creates a [n1][n2][n3] matrix. +**********************************************************************************/ + +double ***create_3D_array(unsigned n1, unsigned n2, unsigned n3){ + + unsigned i; + double ***matrix = (double ***) calloc(n1, sizeof(double **)); + if (matrix == NULL) { + fprintf(stderr, "memory issue in create_3D_array\n"); + exit(1); + } + for (i = 0; i < n1; i++) matrix[i] = create_2D_array(n2, n3); + + return matrix; +} + +/*********************************************************************************** +Frees memory of a [n1][n2][] matrix +***********************************************************************************/ + +void free_3D_array(double ***matrix, unsigned n1, unsigned n2) { + unsigned i; + for (i = 0; i < n1; i++) free_2D_array(matrix[i], n2); + + free(matrix); +} + +/******************************************************************************************** +Making an evenly spaced array. +Input: xmin, xmax, Nx, xtab. +xtab is changed, s.t. xtab[0] = xmin, xtab[Nx-1] = xmax, evenly spaced. +ATTENTION: there will be Nx points, and Nx-1 intervals. +**********************************************************************************************/ + +void maketab(double xmin, double xmax, unsigned Nx, double *xtab){ + unsigned i; + double h = (xmax - xmin)/(Nx - 1.0); + + for (i = 0; i < Nx; i++) xtab[i] = xmin + i * h; +} + +/************************************************************************************ + Interpolation routine for 1-D table. Uses cubic interpolation assuming + uniformly spaced x-values, x0 ... x0+(Nx-1)*dx. +*************************************************************************************/ + +double rec_interp1d(double x0, double dx, double *ytab, unsigned int Nx, double x) { + + long ix; + double frac; + + /* Check if in range */ + if (dx > 0 && (xx0+dx*(Nx-1))) { + fprintf(stderr, "Error: rec_interp1d: x-value out of range in interpolation routine.\n"); + exit(1); + } + if (dx < 0 && (x>x0 || xNx-3) ix=Nx-3; + frac = (x-x0)/dx-ix; + ytab += ix-1; + + /* Return value */ + return( + -ytab[0]*frac*(1.-frac)*(2.-frac)/6. + +ytab[1]*(1.+frac)*(1.-frac)*(2.-frac)/2. + +ytab[2]*(1.+frac)*frac*(2.-frac)/2. + +ytab[3]*(1.+frac)*frac*(frac-1.)/6. + ); +} + +/************************************************************************************ + Interpolation routine for 2-D table. Uses bicubic interpolation assuming + uniformly spaced x1 and x2-values. +*************************************************************************************/ + +double rec_interp2d(double x10, double dx1, double x20, double dx2, double **ytab, + unsigned int Nx1, unsigned int Nx2, double x1, double x2) { + + int j; + long ix1; + double frac1; + double temp[4]; + + /* Check if in range in x1 */ + if (x1x10+dx1*(Nx1-1)) { + fprintf(stderr, "Error: rec_interp2d: x1-value out of range in interpolation routine.\n"); + exit(1); + } + + /* Identify location to interpolate in x1 */ + ix1 = (long)floor((x1-x10)/dx1); + if (ix1<1) ix1=1; + if (ix1>Nx1-3) ix1=Nx1-3; + frac1 = (x1-x10)/dx1-ix1; + ytab += ix1-1; + + /* Get values interpolated over x2 at the 4 neighboring points in x1 */ + for(j=0;j<4;j++) temp[j] = rec_interp1d(x20,dx2,ytab[j],Nx2,x2); + + return( + -temp[0]*frac1*(1.-frac1)*(2.-frac1)/6. + +temp[1]*(1.+frac1)*(1.-frac1)*(2.-frac1)/2. + +temp[2]*(1.+frac1)*frac1*(2.-frac1)/2. + +temp[3]*(1.+frac1)*frac1*(frac1-1.)/6. + ); +} + +/*********************************************************************************************/ diff --git a/class/hyrec/hyrectools.h b/class/hyrec/hyrectools.h new file mode 100644 index 00000000..7616d7b4 --- /dev/null +++ b/class/hyrec/hyrectools.h @@ -0,0 +1,15 @@ +/*************************** HYRECTOOLS.H ******************************** +Multidimensional array creation and freeing functions. +Also, function to make linear arrays and interpolation routines. +Version: January 2011 (identical to November 2010) +**************************************************************************/ + +double *create_1D_array(unsigned n1); +double **create_2D_array(unsigned n1, unsigned n2); +void free_2D_array(double **matrix, unsigned n1); +double ***create_3D_array(unsigned n1, unsigned n2, unsigned n3); +void free_3D_array(double ***matrix, unsigned n1, unsigned n2); +void maketab(double xmin, double xmax, unsigned Nx, double *xtab); +double rec_interp1d(double x0, double dx, double *ytab, unsigned int Nx, double x); +double rec_interp2d(double x10, double dx1, double x20, double dx2, double **ytab, + unsigned int Nx1, unsigned int Nx2, double x1, double x2); diff --git a/class/hyrec/input.dat b/class/hyrec/input.dat new file mode 100644 index 00000000..e739d0b6 --- /dev/null +++ b/class/hyrec/input.dat @@ -0,0 +1,8 @@ +2.728 +.021976 +.13 +0 +.343 +-1 0 +.24 +3.04 diff --git a/class/hyrec/two_photon_tables.dat b/class/hyrec/two_photon_tables.dat new file mode 100644 index 00000000..df04635e --- /dev/null +++ b/class/hyrec/two_photon_tables.dat @@ -0,0 +1,311 @@ + 5.1790432 0.0000000 0.33259349 0.0000000 0.0000000 + 5.3383879 0.0000000 0.33232657 0.0000000 0.0000000 + 5.4977327 0.0000000 0.33179062 0.0000000 0.0000000 + 5.6571046 0.0000000 0.33098159 0.0000000 0.0000000 + 5.8164493 0.0000000 0.32989325 0.0000000 0.0000000 + 5.9758212 0.0000000 0.32851708 0.0000000 0.0000000 + 6.1351659 0.0000000 0.32684231 1.3628747 0.0000000 + 6.2945106 0.0000000 0.32485537 1.3693452 0.0000000 + 6.4538826 0.0000000 0.32254017 1.3820041 0.73480877 + 6.6132273 0.0000000 0.31987727 1.4011732 0.73833172 + 6.7725720 0.0000000 0.31684389 1.4273542 0.74547518 + 6.9319439 0.0000000 0.31341336 1.4612583 0.75644083 + 7.0912886 0.0000000 0.30955451 1.5038534 0.77154767 + 7.2506605 0.0000000 0.30523101 1.5564301 0.79125521 + 7.4100052 0.0000000 0.30040073 1.6206984 0.81619725 + 7.5693500 0.0000000 0.29501454 1.6989265 0.84723252 + 7.7287219 0.0000000 0.28901515 1.7941442 0.88552099 + 7.8880666 0.0000000 0.28233575 1.9104474 0.93263584 + 8.0474113 0.0000000 0.27489786 2.0534603 0.99073481 + 8.2067832 0.0000000 0.26660916 2.2310600 1.0628281 + 8.3195130 0.0000000 0.10739775 0.98390967 0.46420361 + 8.3846760 0.0000000 0.10381181 1.0065348 0.47209379 + 8.4486423 0.0000000 0.10029073 1.0315323 0.48092498 + 8.5114392 0.0000000 0.096832649 1.0591144 0.49077008 + 8.5730938 0.0000000 0.093435794 1.0895259 0.50171471 + 8.6336334 0.0000000 0.090098347 1.1230492 0.51385695 + 8.6930851 0.0000000 0.086818614 1.1600102 0.52731174 + 8.7515034 0.0000000 0.083594818 1.2007873 0.54221173 + 8.8088609 0.0000000 0.080425307 1.2458202 0.55871185 + 8.8651850 0.0000000 0.077308429 1.2956214 0.57699291 + 8.9205573 0.0000000 0.074242571 1.3507925 0.59726594 + 8.9749504 0.0000000 0.071226124 1.4120406 0.61978038 + 9.0283917 0.0000000 0.068257476 1.4802028 0.64482996 + 9.0809082 0.0000000 0.065335180 1.5562745 0.67276414 + 9.1325545 0.0000000 0.062457626 1.6414476 0.70399992 + 9.1833033 0.0000000 0.059623409 1.7371569 0.73903897 + 9.2331818 0.0000000 0.056831042 1.8451449 0.77848856 + 9.2822173 0.0000000 0.054079078 1.9675413 0.82308929 + 9.3304368 0.0000000 0.051366073 2.1069748 0.87375299 + 9.3778676 0.0000000 0.048690703 2.2667167 0.93161140 + 9.4071039 0.0000000 0.011759100 0.59465520 0.24300710 + 9.4187169 0.0000000 0.011594717 0.60658166 0.24730819 + 9.4302754 0.0000000 0.011430875 0.61895856 0.25176745 + 9.4417796 0.0000000 0.011267578 0.63180865 0.25639282 + 9.4532565 0.0000000 0.011104819 0.64515677 0.26119267 + 9.4646791 0.0000000 0.010942592 0.65902882 0.26617621 + 9.4760472 0.0000000 0.010780894 0.67345277 0.27135266 + 9.4873610 0.0000000 0.010619717 0.68845828 0.27673248 + 9.4986476 0.0000000 0.010459051 0.70407730 0.28232636 + 9.5098798 0.0000000 0.010298903 0.72034409 0.28814622 + 9.5210576 0.0000000 0.010139258 0.73729478 0.29420423 + 9.5322082 0.0000000 0.0099801174 0.75496907 0.30051399 + 9.5433044 0.0000000 0.0098214725 0.77340855 0.30708976 + 9.5543462 0.0000000 0.0096633150 0.79265875 0.31394703 + 9.5653608 0.0000000 0.0095056451 0.81276797 0.32110216 + 9.5763210 0.0000000 0.0093484585 0.83378887 0.32857317 + 9.5872268 0.0000000 0.0091917470 0.85577788 0.33637913 + 9.5981055 0.0000000 0.0090355065 0.87879585 0.34454102 + 9.6089297 0.0000000 0.0088797328 0.90290884 0.35308085 + 9.6196995 0.0000000 0.0087244218 0.92818795 0.36202295 + 9.6304422 0.0000000 0.0085695652 0.95471056 0.37139353 + 9.6411304 0.0000000 0.0084151590 0.98256052 0.38122091 + 9.6517915 0.0000000 0.0082611989 1.0118291 0.39153615 + 9.6623982 0.0000000 0.0081076809 1.0426151 0.40237240 + 9.6729776 0.0000000 0.0079546008 1.0750270 0.41376659 + 9.6835027 0.0000000 0.0078019544 1.1091822 0.42575819 + 9.6939734 0.0000000 0.0076497295 1.1452100 0.43839064 + 9.7044169 0.0000000 0.0074979301 1.1832514 0.45171182 + 9.7148059 0.0000000 0.0073465479 1.2234614 0.46577359 + 9.7251678 0.0000000 0.0071955789 1.2660099 0.48063328 + 9.7354753 0.0000000 0.0070450147 1.3110845 0.49635370 + 9.7457556 0.0000000 0.0068948554 1.3588915 0.51300458 + 9.7559816 0.0000000 0.0067450928 1.4096592 0.53066200 + 9.7661803 0.0000000 0.0065957225 1.4636408 0.54941125 + 9.7763246 0.0000000 0.0064467406 1.5211166 0.56934608 + 9.7864417 0.0000000 0.0062981430 1.5823990 0.59057115 + 9.7965044 0.0000000 0.0061499254 1.6478362 0.61320252 + 9.8065400 0.0000000 0.0060020796 1.7178172 0.63737054 + 9.8165211 0.0000000 0.0058546056 1.7927784 0.66322073 + 9.8264751 0.0000000 0.0057074910 1.8732097 0.69091650 + 9.8364018 0.0000000 0.0055607400 1.9596638 0.72064212 + 9.8462742 0.0000000 0.0054143443 2.0527647 0.75260504 + 9.8561193 0.0000000 0.0052682998 2.1532213 0.78704112 + 9.8659101 0.0000000 0.0051225981 2.2618375 0.82421804 + 9.8756737 0.0000000 0.0049772394 2.3795339 0.86444079 + 9.8853828 0.0000000 0.0048322152 2.5073614 0.90805924 + 9.8950648 0.0000000 0.0046875257 2.6465363 0.95547487 + 9.9047196 0.0000000 0.0045431585 2.7984556 1.0071512 + 9.9143200 0.0000000 0.0043991176 2.9647433 1.0636252 + 9.9238932 0.0000000 0.0042553907 3.1472897 1.1255223 + 9.9334120 0.0000000 0.0041119786 3.3483107 1.1935742 + 9.9429036 0.0000000 0.0039688742 3.5704149 1.2686415 + 9.9523680 0.0000000 0.0038260732 3.8166898 1.3517420 + 9.9617780 0.0000000 0.0036835707 4.0908109 1.4440867 + 9.9711608 0.0000000 0.0035413629 4.3971850 1.5471258 + 9.9805165 0.0000000 0.0033994443 4.7411323 1.6626075 + 9.9898449 0.0000000 0.0032578102 5.1291164 1.7926561 + 9.9991189 0.0000000 0.0031164567 5.5690652 1.9398727 + 10.008339 0.0000000 0.0029753784 6.0707791 2.1074710 + 10.017558 0.0000000 0.0028345711 6.6464922 2.2994573 + 10.023854 32.507290 0.0023830786 6.2180801 2.1447811 + 10.031818 34.867503 0.0022341212 6.6442447 2.2850387 + 10.039597 37.462452 0.0020906766 7.1121731 2.4388665 + 10.047192 40.322141 0.0019527378 7.6271724 2.6079798 + 10.054603 43.481310 0.0018202895 8.1953847 2.7943633 + 10.061829 46.980331 0.0016933076 8.8239454 3.0003218 + 10.068871 50.866309 0.0015717599 9.5211766 3.2285425 + 10.075729 55.194433 0.0014556060 10.296825 3.4821717 + 10.082402 60.029646 0.0013447977 11.162355 3.7649091 + 10.088891 65.448727 0.0012392792 12.131318 4.0811257 + 10.095196 71.542893 0.0011389872 13.219806 4.4360114 + 10.101317 78.421085 0.0010438512 14.447031 4.8357603 + 10.107253 86.214134 0.00095379371 15.836061 5.2878068 + 10.113004 95.080096 0.00086873026 17.414751 5.8011271 + 10.118572 105.21113 0.00078856993 19.216962 6.3866275 + 10.123955 116.84245 0.00071321537 21.284122 7.0576510 + 10.129153 130.26406 0.00064256300 23.667304 7.8306401 + 10.134168 145.83639 0.00057650329 26.429957 8.7260180 + 10.138998 164.01114 0.00051492093 29.651581 9.7693683 + 10.143643 185.35967 0.00045769503 33.432710 10.993036 + 10.148105 210.61197 0.00040469936 37.901758 12.438327 + 10.152382 240.71093 0.00035580253 43.224551 14.158568 + 10.156475 276.88915 0.00031086822 49.617819 16.223445 + 10.160383 320.77944 0.00026975536 57.368593 18.725225 + 10.164107 374.57666 0.00023231838 66.862632 21.787894 + 10.167647 441.27993 0.00019840738 78.626942 25.580799 + 10.171002 525.06337 0.00016786835 93.394860 30.339553 + 10.174173 631.85868 0.00014054338 112.20831 36.398860 + 10.177160 770.29809 0.00011627090 136.58333 44.245645 + 10.179962 953.29373 9.4885811e-05 168.78722 54.608029 + 10.182580 1200.7901 7.6219782e-05 212.32161 68.610355 + 10.185014 1544.7904 6.0101397e-05 272.80444 88.056266 + 10.187263 2039.0659 4.6356387e-05 359.67357 115.97542 + 10.189328 2779.2427 3.4807837e-05 489.71101 157.75439 + 10.191209 3948.0937 2.5276392e-05 694.98878 223.68631 + 10.192905 5929.7347 1.7580467e-05 1042.9018 335.39853 + 10.194417 9644.7743 1.1536453e-05 1694.9577 544.71455 + 10.195745 17777.940 6.9589277e-06 3122.1046 1002.7348 + 10.196889 41262.571 3.6608641e-06 7242.0422 2324.6824 + 10.197848 177006.04 1.4538371e-06 31050.311 9962.3846 + 10.199581 177006.04 1.4556978e-06 31026.383 9947.7596 + 10.200541 41262.571 3.6695995e-06 7228.8991 2316.6493 + 10.201684 17777.940 6.9848636e-06 3112.6870 996.97866 + 10.203012 9644.7743 1.1597503e-05 1687.5014 540.15718 + 10.204524 5929.7347 1.7704930e-05 1036.6788 331.59494 + 10.206220 3948.0937 2.5506159e-05 689.62275 220.40653 + 10.208101 2779.2427 3.5202021e-05 484.98002 154.86276 + 10.210166 2039.0659 4.6995370e-05 355.43462 113.38453 + 10.212415 1544.7904 6.1091291e-05 268.95944 85.706161 + 10.214849 1200.7901 7.7697307e-05 208.80005 66.457939 + 10.217467 953.29373 9.7023591e-05 165.53653 52.621170 + 10.220269 770.29809 0.00011928317 133.56315 42.399682 + 10.223256 631.85868 0.00014469214 109.38694 34.674407 + 10.226427 525.06337 0.00017346987 90.746871 28.721073 + 10.229782 441.27993 0.00020583921 76.131614 24.055626 + 10.233322 374.57666 0.00024202669 64.502833 20.345558 + 10.237046 320.77944 0.00028226277 55.129983 17.356961 + 10.240955 276.88915 0.00032678197 47.488265 14.921837 + 10.245047 240.71093 0.00037582317 41.193691 12.917284 + 10.249324 210.61197 0.00042962975 35.960664 11.251908 + 10.253786 185.35967 0.00048844982 31.573634 9.8567484 + 10.258431 164.01114 0.00055253646 27.867753 8.6790726 + 10.263261 145.83639 0.00062214787 24.715423 7.6780755 + 10.268276 130.26406 0.00069754762 22.016800 6.8218335 + 10.273474 116.84245 0.00077900484 19.692970 6.0851208 + 10.278858 105.21113 0.00086679445 17.680984 5.4478205 + 10.284425 95.080096 0.00096119733 15.930202 4.8937534 + 10.290177 86.214134 0.0010625006 14.399566 4.4098050 + 10.296113 78.421085 0.0011709977 13.055543 3.9852672 + 10.302233 71.542893 0.0012869887 11.870560 3.6113374 + 10.308538 65.448727 0.0014107806 10.821801 3.2807339 + 10.315027 60.029646 0.0015426873 9.8902709 2.9873968 + 10.321700 55.194433 0.0016830299 9.0600736 2.7262555 + 10.328558 50.866309 0.0018321372 8.3178323 2.4930450 + 10.335600 46.980331 0.0019903453 7.6522361 2.2841599 + 10.342826 43.481310 0.0021579983 7.0536768 2.0965386 + 10.350237 40.322141 0.0023354486 6.5139566 1.9275698 + 10.357832 37.462452 0.0025230565 6.0260520 1.7750170 + 10.365611 34.867503 0.0027211909 5.5839218 1.6369575 + 10.373575 32.507290 0.0029302297 5.1823506 1.5117316 + 10.375900 0.0000000 0.0029239956 4.9185873 1.4364714 + 10.383733 0.0000000 0.0030576204 4.4757141 1.3009962 + 10.391538 0.0000000 0.0031911861 4.0885991 1.1828494 + 10.399289 0.0000000 0.0033246969 3.7483314 1.0792390 + 10.407040 0.0000000 0.0034581585 3.4476976 0.98791027 + 10.414764 0.0000000 0.0035915755 3.1808230 0.90702639 + 10.422461 0.0000000 0.0037249532 2.9428785 0.83507989 + 10.430103 0.0000000 0.0038582970 2.7298647 0.77082346 + 10.437745 0.0000000 0.0039916120 2.5384437 0.71321906 + 10.445333 0.0000000 0.0041249033 2.3658246 0.66139621 + 10.452921 0.0000000 0.0042581740 2.2096454 0.61462204 + 10.460482 0.0000000 0.0043914357 2.0679026 0.57227475 + 10.467988 0.0000000 0.0045246890 1.9388899 0.53382467 + 10.475494 0.0000000 0.0046579341 1.8211435 0.49881852 + 10.482973 0.0000000 0.0047911875 1.7134034 0.46686642 + 10.490398 0.0000000 0.0049244491 1.6145801 0.43763154 + 10.497822 0.0000000 0.0050577190 1.5237275 0.41082215 + 10.505220 0.0000000 0.0051910136 1.4400217 0.38618401 + 10.512563 0.0000000 0.0053243290 1.3627416 0.36349485 + 10.519906 0.0000000 0.0054576774 1.2912545 0.34256004 + 10.527222 0.0000000 0.0055910588 1.2250029 0.32320844 + 10.534511 0.0000000 0.0057244774 1.1634952 0.30528891 + 10.541772 0.0000000 0.0058579498 1.1062952 0.28866778 + 10.549006 0.0000000 0.0059914676 1.0530158 0.27322652 + 10.556213 0.0000000 0.0061250474 1.0033116 0.25885941 + 10.563393 0.0000000 0.0062586891 0.95687467 0.24547243 + 10.570546 0.0000000 0.0063924011 0.91342933 0.23298139 + 10.577672 0.0000000 0.0065261875 0.87272813 0.22131070 + 10.584770 0.0000000 0.0066600565 0.83454834 0.21039279 + 10.591868 0.0000000 0.0067940081 0.79868934 0.20016654 + 10.598912 0.0000000 0.0069280548 0.76496987 0.19057690 + 10.605929 0.0000000 0.0070622007 0.73322619 0.18157411 + 10.612946 0.0000000 0.0071964498 0.70330919 0.17311311 + 10.619935 0.0000000 0.0073308064 0.67508436 0.16515301 + 10.626897 0.0000000 0.0074652828 0.64842845 0.15765667 + 10.633833 0.0000000 0.0075998831 0.62322942 0.15059026 + 10.640740 0.0000000 0.0077346074 0.59938516 0.14392289 + 10.647621 0.0000000 0.0078694681 0.57680189 0.13762642 + 10.654475 0.0000000 0.0080044734 0.55539424 0.13167505 + 10.661301 0.0000000 0.0081396233 0.53508365 0.12604519 + 10.668127 0.0000000 0.0082749260 0.51579752 0.12071516 + 10.674899 0.0000000 0.0084103900 0.49746998 0.11566505 + 10.681671 0.0000000 0.0085460191 0.48003966 0.11087656 + 10.688416 0.0000000 0.0086818260 0.46345004 0.10633281 + 10.695134 0.0000000 0.0088178064 0.44764908 0.10201828 + 10.701824 0.0000000 0.0089539769 0.43258895 0.097918604 + 10.708514 0.0000000 0.0090903374 0.41822481 0.094020486 + 10.715150 0.0000000 0.0092269004 0.40451541 0.090311651 + 10.721786 0.0000000 0.0093636700 0.39142250 0.086780710 + 10.728395 0.0000000 0.0095006503 0.37891056 0.083417118 + 10.734977 0.0000000 0.0096378538 0.36694640 0.080211050 + 10.741531 0.0000000 0.0097752803 0.35549942 0.077153433 + 10.748058 0.0000000 0.0099129465 0.34454087 0.074235734 + 10.754585 0.0000000 0.010050848 0.33404397 0.071450128 + 10.761058 0.0000000 0.010189002 0.32398380 0.068789205 + 10.767531 0.0000000 0.010327412 0.31433697 0.066246132 + 10.773976 0.0000000 0.010466082 0.30508196 0.063814491 + 10.780395 0.0000000 0.010605025 0.29619834 0.061488297 + 10.786813 0.0000000 0.010744245 0.28766675 0.059261949 + 10.821625 0.0000000 0.11515986 2.4630767 0.48586331 + 10.883334 0.0000000 0.12944318 1.8962622 0.34356818 + 10.942976 0.0000000 0.14414030 1.4927104 0.24624795 + 11.000687 0.0000000 0.15934676 1.1964871 0.17795969 + 11.056549 0.0000000 0.17517102 0.97348725 0.12913361 + 11.110616 0.0000000 0.19173753 0.80200510 0.093783374 + 11.162969 0.0000000 0.20919058 0.66772307 0.068037507 + 11.213691 0.0000000 0.22769908 0.56090602 0.049325331 + 11.262835 0.0000000 0.24746272 0.47475961 0.035906305 + 11.310483 0.0000000 0.26872008 0.40443423 0.026588298 + 11.356690 0.0000000 0.29175924 0.34639807 0.020554503 + 11.401510 0.0000000 0.31693185 0.29803433 0.017255506 + 11.445025 0.0000000 0.34467227 0.25737305 0.016342238 + 11.487234 0.0000000 0.37552370 0.22291076 0.017626143 + 11.528219 0.0000000 0.41017466 0.19348491 0.021059166 + 11.568008 0.0000000 0.44951047 0.16818652 0.026730256 + 11.606681 0.0000000 0.49468811 0.14629725 0.034878225 + 11.644240 0.0000000 0.54724778 0.12724388 0.045924230 + 11.680765 0.0000000 0.60927856 0.11056504 0.060531831 + 11.716256 0.0000000 0.68368269 0.095886223 0.079709526 + 11.750796 0.0000000 0.77459701 0.082901136 0.10498508 + 11.784356 0.0000000 0.88810078 0.071357433 0.13870704 + 11.817047 0.0000000 1.0334535 0.061045825 0.18458571 + 11.848839 0.0000000 1.2253780 0.051791593 0.24871234 + 11.879816 0.0000000 1.4885437 0.043447986 0.34160192 + 11.909950 0.0000000 1.8670952 0.035890996 0.48261725 + 11.939295 0.0000000 2.4470039 0.029015262 0.71055870 + 11.967906 0.0000000 3.4158715 0.022730661 1.1125647 + 11.995755 0.0000000 5.2549629 0.016959733 1.9188541 + 12.022925 0.0000000 9.5520551 0.011635479 3.9125643 + 12.049387 0.0000000 24.609350 0.0066995850 11.325614 + 12.075196 0.0000000 213.21388 0.0021009695 110.55035 + 12.100380 0.0000000 164.30387 0.0022054218 96.356676 + 12.124939 0.0000000 17.241001 0.0062596390 11.496677 + 12.148872 0.0000000 5.5683169 0.010097584 4.2507381 + 12.172261 0.0000000 2.5043677 0.013751749 2.2075845 + 12.195079 0.0000000 1.3147974 0.017251837 1.3529301 + 12.217326 0.0000000 0.75084114 0.020625366 0.91433305 + 12.239083 0.0000000 0.44939023 0.023898134 0.65895417 + 12.260324 0.0000000 0.27521822 0.027094723 0.49689751 + 12.281047 0.0000000 0.16926110 0.030238941 0.38743325 + 12.301309 0.0000000 0.10266384 0.033354264 0.30990278 + 12.321108 0.0000000 0.060110610 0.036464296 0.25290760 + 12.340472 0.0000000 0.032937424 0.039593250 0.20973213 + 12.359373 0.0000000 0.015993084 0.042766487 0.17620809 + 12.377867 0.0000000 0.0060928889 0.046011124 0.14963420 + 12.395926 0.0000000 0.0012084142 0.049356734 0.12819630 + 12.413603 0.0000000 2.0781537e-05 0.052836237 0.11063844 + 12.430900 0.0000000 0.0016640968 0.056486953 0.096068059 + 12.447817 0.0000000 0.0055733826 0.060351966 0.083836418 + 12.464379 0.0000000 0.011392612 0.064481878 0.073462530 + 12.480561 0.0000000 0.018919022 0.068937064 0.064583415 + 12.496417 0.0000000 0.028070495 0.073790875 0.056920905 + 12.511946 0.0000000 0.038868975 0.079133508 0.050258745 + 12.527122 0.0000000 0.051436333 0.085078240 0.044426756 + 12.541998 0.0000000 0.066001524 0.091769128 0.039289420 + 12.556576 0.0000000 0.082920692 0.099393080 0.034737654 + 12.570854 0.0000000 0.10271330 0.10819708 0.030682897 + 12.584806 0.0000000 0.12612250 0.11851432 0.027052541 + 12.598513 0.0000000 0.15421335 0.13080501 0.023786582 + 12.611921 0.0000000 0.18853491 0.14572193 0.020835053 + 12.625084 0.0000000 0.23139472 0.16421970 0.018156043 + 12.637975 0.0000000 0.28634341 0.18774545 0.015714159 + 12.650594 0.0000000 0.35907350 0.21858903 0.013479308 + 12.662996 0.0000000 0.45919437 0.26056909 0.011425761 + 12.675126 0.0000000 0.60402239 0.32048416 0.0095313618 + 12.687038 0.0000000 0.82751863 0.41150574 0.0077769386 + 12.698732 0.0000000 1.2043236 0.56221810 0.0061457820 + 12.710182 0.0000000 1.9273526 0.84552331 0.0046232556 + 12.721414 0.0000000 3.6381356 1.5004252 0.0031964476 + 12.732456 0.0000000 9.7205741 3.7678616 0.0018538961 + 12.743280 0.0000000 87.258719 31.761136 0.00058535601 diff --git a/class/include/arrays.h b/class/include/arrays.h old mode 100644 new mode 100755 index ca3f7112..e995a9b6 --- a/class/include/arrays.h +++ b/class/include/arrays.h @@ -242,6 +242,13 @@ int array_integrate_all_trapzd_or_spline( int result_size, /** from 1 to n_columns */ ErrorMsg errmsg); + int array_search_bisect( + int n_lines, + double * __restrict__ array, + double c, + int * __restrict__ last_index, + ErrorMsg errmsg); + int array_interpolate_linear( double * x_array, int n_lines, diff --git a/class/include/background.h b/class/include/background.h old mode 100644 new mode 100755 index edb30d56..84953f6f --- a/class/include/background.h +++ b/class/include/background.h @@ -10,8 +10,18 @@ #include "dei_rkck.h" #include "parser.h" +//The name for this macro can be at most 30 characters total +#define _class_print_species_(name,type) \ +printf("-> %-30s Omega = %-15g , omega = %-15g\n",name,pba->Omega0_##type,pba->Omega0_##type*pba->h*pba->h); + +/** list of possible types of spatial curvature */ + enum spatial_curvature {flat,open,closed}; +/** list of possible parametrisations of the DE equation of state */ + +enum equation_of_state {CLP,EDE}; + /** * All background parameters and evolution that other modules need to know. * @@ -49,18 +59,34 @@ struct background double Omega0_lambda; /**< \f$ \Omega_{0_\Lambda} \f$: cosmological constant */ - double Omega0_fld; /**< \f$ \Omega_{0 de} \f$: fluid with constant - \f$ w \f$ and \f$ c_s^2 \f$ */ + double Omega0_fld; /**< \f$ \Omega_{0 de} \f$: fluid */ + + enum equation_of_state fluid_equation_of_state; /**< parametrisation scheme for fluid equation of state */ + double w0_fld; /**< \f$ w0_{DE} \f$: current fluid equation of state parameter */ double wa_fld; /**< \f$ wa_{DE} \f$: fluid equation of state parameter derivative */ + double Omega_EDE; /**< \f$ wa_{DE} \f$: Early Dark Energy density parameter */ double cs2_fld; /**< \f$ c^2_{s~DE} \f$: sound speed of the fluid in the frame comoving with the fluid (so, this is not [delta p/delta rho] in the synchronous or - newtonian gauge!!!) */ + newtonian gauge!) */ + + short use_ppf; /**< flag switching on PPF perturbation equations + instead of true fluid equations for + perturbations. It could have been defined inside + perturbation structure, but we leave it here in + such way to have all fld parameters grouped. */ + + double c_gamma_over_c_fld; /**< ppf parameter defined in eq. (16) of 0808.3125 [astro-ph] */ double Omega0_ur; /**< \f$ \Omega_{0 \nu r} \f$: ultra-relativistic neutrinos */ + double Omega0_idr; /**< \f$ \Omega_{0 idr} \f$: interacting dark radiation */ + double T_idr; /**< \f$ T_{idr} \f$: current temperature of interacting dark radiation in Kelvins */ + + double Omega0_idm_dr; /**< \f$ \Omega_{0 idm_dr} \f$: dark matter interacting with dark radiation */ + double Omega0_dcdmdr; /**< \f$ \Omega_{0 dcdm}+\Omega_{0 dr} \f$: decaying cold dark matter (dcdm) decaying to dark radiation (dr) */ double Gamma_dcdm; /**< \f$ \Gamma_{dcdm} \f$: decay constant for decaying cold dark matter */ @@ -128,7 +154,13 @@ struct background double Neff; /**< so-called "effective neutrino number", computed at earliest time in interpolation table */ double Omega0_dcdm; /**< \f$ \Omega_{0 dcdm} \f$: decaying cold dark matter */ double Omega0_dr; /**< \f$ \Omega_{0 dr} \f$: decay radiation */ - + double Omega0_m; /**< total non-relativistic matter today */ + double Omega0_r; /**< total ultra-relativistic radiation today */ + double Omega0_de; /**< total dark energy density today, currently defined as 1 - Omega0_m - Omega0_r - Omega0_k */ + double a_eq; /**< scale factor at radiation/matter equality */ + double H_eq; /**< Hubble rate at radiation/matter equality [Mpc^-1] */ + double z_eq; /**< redshift at radiation/matter equality */ + double tau_eq; /**< conformal time at radiation/matter equality [Mpc] */ //@} @@ -154,8 +186,11 @@ struct background int index_bg_rho_b; /**< baryon density */ int index_bg_rho_cdm; /**< cdm density */ int index_bg_rho_lambda; /**< cosmological constant density */ - int index_bg_rho_fld; /**< fluid with constant w density */ + int index_bg_rho_fld; /**< fluid density */ + int index_bg_w_fld; /**< fluid equation of state */ int index_bg_rho_ur; /**< relativistic neutrinos/relics density */ + int index_bg_rho_idm_dr; /**< density of dark matter interacting with dark radiation */ + int index_bg_rho_idr; /**< density of interacting dark radiation */ int index_bg_rho_dcdm; /**< dcdm density */ int index_bg_rho_dr; /**< dr density */ @@ -166,11 +201,16 @@ struct background int index_bg_ddV_scf; /**< scalar field potential second derivative V'' */ int index_bg_rho_scf; /**< scalar field energy density */ int index_bg_p_scf; /**< scalar field pressure */ + int index_bg_p_prime_scf; /**< scalar field pressure */ int index_bg_rho_ncdm1; /**< density of first ncdm species (others contiguous) */ int index_bg_p_ncdm1; /**< pressure of first ncdm species (others contiguous) */ int index_bg_pseudo_p_ncdm1;/**< another statistical momentum useful in ncdma approximation */ + int index_bg_rho_tot; /**< Total density */ + int index_bg_p_tot; /**< Total pressure */ + int index_bg_p_tot_prime; /**< Conf. time derivative of total pressure */ + int index_bg_Omega_r; /**< relativistic density fraction (\f$ \Omega_{\gamma} + \Omega_{\nu r} \f$) */ /* end of vector in normal format, now quantities in long format */ @@ -183,8 +223,8 @@ struct background int index_bg_time; /**< proper (cosmological) time in Mpc */ int index_bg_rs; /**< comoving sound horizon in Mpc */ - int index_bg_D; /**< density growth factor in dust universe, \f$ D = H \int [da/(aH)^3] \f$ (arbitrary normalization) */ - int index_bg_f; /**< velocity growth factor in dust universe, [dlnD]/[dln a] */ + int index_bg_D; /**< scale independent growth factor D(a) for CDM perturbations */ + int index_bg_f; /**< corresponding velocity growth factor [dlnD]/[dln a] */ int bg_size_short; /**< size of background vector in the "short format" */ int bg_size_normal; /**< size of background vector in the "normal format" */ @@ -229,13 +269,15 @@ struct background int index_bi_a; /**< {B} scale factor */ int index_bi_rho_dcdm;/**< {B} dcdm density */ int index_bi_rho_dr; /**< {B} dr density */ + int index_bi_rho_fld; /**< {B} fluid density */ int index_bi_phi_scf; /**< {B} scalar field value */ int index_bi_phi_prime_scf; /**< {B} scalar field derivative wrt conformal time */ int index_bi_time; /**< {C} proper (cosmological) time in Mpc */ int index_bi_rs; /**< {C} sound horizon */ int index_bi_tau; /**< {C} conformal time in Mpc */ - int index_bi_growth; /**< {C} integral over \f$ [da/(aH)^3]=[d\tau/(aH^2)]\f$, useful for growth factor */ + int index_bi_D; /**< {C} scale independent growth factor D(a) for CDM perturbations. */ + int index_bi_D_prime; /**< {C} D satisfies \f$ [D''(\tau)=-aHD'(\tau)+3/2 a^2 \rho_M D(\tau) \f$ */ int bi_B_size; /**< Number of {B} parameters */ int bi_size; /**< Number of {B}+{C} parameters */ @@ -260,6 +302,8 @@ struct background short has_lambda; /**< presence of cosmological constant? */ short has_fld; /**< presence of fluid with constant w and cs2? */ short has_ur; /**< presence of ultra-relativistic neutrinos/relics? */ + short has_idr; /**< presence of interacting dark radiation? */ + short has_idm_dr; /**< presence of dark matter interacting with dark radiation? */ short has_curvature; /**< presence of global spatial curvature? */ //@} @@ -270,7 +314,9 @@ struct background //@{ - + int * ncdm_quadrature_strategy; /**< Vector of integers according to quadrature strategy. */ + int * ncdm_input_q_size; /**< Vector of numbers of q bins */ + double * ncdm_qmax; /**< Vector of maximum value of q */ double ** q_ncdm_bg; /**< Pointers to vectors of background sampling in q */ double ** w_ncdm_bg; /**< Pointers to vectors of corresponding quadrature weights w */ double ** q_ncdm; /**< Pointers to vectors of perturbation sampling in q */ @@ -367,6 +413,12 @@ extern "C" { double * pvecback ); + int background_tau_of_z( + struct background *pba, + double z, + double * tau + ); + int background_functions( struct background *pba, double * pvecback_B, @@ -374,11 +426,12 @@ extern "C" { double * pvecback ); - int background_tau_of_z( - struct background *pba, - double z, - double * tau - ); + int background_w_fld( + struct background * pba, + double a, + double * w_fld, + double * dw_over_da_fld, + double * integral_fld); int background_init( struct precision *ppr, @@ -393,6 +446,10 @@ extern "C" { struct background *pba ); + int background_free_noinput( + struct background *pba + ); + int background_indices( struct background *pba ); @@ -447,6 +504,11 @@ extern "C" { double * pvecback_integration ); + int background_find_equality( + struct precision *ppr, + struct background *pba + ); + int background_output_titles(struct background * pba, char titles[_MAXTITLESTRINGLENGTH_] ); @@ -487,6 +549,11 @@ extern "C" { double phi_prime ); + /** Budget equation output */ + int background_output_budget( + struct background* pba + ); + #ifdef __cplusplus } #endif @@ -517,19 +584,15 @@ extern "C" { //@} /** - * @name Some numbers useful in numerical algorithms - but not - * affecting precision, otherwise would be in precision structure + * @name Some limits on possible background parameters */ //@{ -#define _H0_BIG_ 1./2997.9 /**< maximal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=1.0) \f$ */ -#define _H0_SMALL_ 0.3/2997.9 /**< minimal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=0.3) \f$ */ -#define _TCMB_BIG_ 2.8 /**< maximal \f$ T_{cmb} \f$ in K */ -#define _TCMB_SMALL_ 2.7 /**< minimal \f$ T_{cmb} \f$ in K */ -#define _TOLERANCE_ON_CURVATURE_ 1.e-5 /**< if \f$ | \Omega_k | \f$ smaller than this, considered as flat */ -#define _OMEGAK_BIG_ 0.5 /**< maximal \f$ Omega_k \f$ */ -#define _OMEGAK_SMALL_ -0.5 /**< minimal \f$ Omega_k \f$ */ +#define _h_BIG_ 1.5 /**< maximal \f$ h \f$ */ +#define _h_SMALL_ 0.3 /**< minimal \f$ h \f$ */ +#define _omegab_BIG_ 0.039 /**< maximal \f$ omega_b \f$ */ +#define _omegab_SMALL_ 0.005 /**< minimal \f$ omega_b \f$ */ //@} diff --git a/class/include/common.h b/class/include/common.h index dcc9e1f0..d1a83f9b 100644 --- a/class/include/common.h +++ b/class/include/common.h @@ -15,7 +15,7 @@ #ifndef __COMMON__ #define __COMMON__ -#define _VERSION_ "v2.5.0" +#define _VERSION_ "v2.9.3" /* @cond INCLUDE_WITH_DOXYGEN */ #define _TRUE_ 1 /**< integer associated to true statement */ @@ -42,6 +42,8 @@ typedef char FileName[_FILENAMESIZE_]; #define _SQRT_PI_ 1.77245385090551602729816748334e0 /**< square root of pi. */ +#define _E_ 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696 /**< exponential of one */ + #define _MAX_IT_ 10000/**< default maximum number of iterations in conditional loops (to avoid infinite loops) */ #define _QUADRATURE_MAX_ 250 /**< maximum allowed number of abssices in quadrature integral estimation */ @@ -52,6 +54,8 @@ typedef char FileName[_FILENAMESIZE_]; #define _HUGE_ 1.e99 +#define _EPSILON_ 1.e-10 + #define _OUTPUTPRECISION_ 12 /**< Number of significant digits in some output files */ #define _COLUMNWIDTH_ 24 /**< Must be at least _OUTPUTPRECISION_+8 for guaranteed fixed width columns */ @@ -60,8 +64,6 @@ typedef char FileName[_FILENAMESIZE_]; #define _DELIMITER_ "\t" /**< character used for delimiting titles in the title strings */ - - #ifndef __CLASSDIR__ #define __CLASSDIR__ "." /**< The directory of CLASS. This is set to the absolute path to the CLASS directory so this is just a failsafe. */ #endif @@ -70,7 +72,7 @@ typedef char FileName[_FILENAMESIZE_]; #define MAX(a,b) (((a)<(b)) ? (b) : (a) ) /**< the usual "max" function */ #define SIGN(a) (((a)>0) ? 1. : -1. ) #define NRSIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) -#define index_symmetric_matrix(i1,i2,N) (((i1)<=(i2)) ? (i2+N*i1-(i1*(i1+1))/2) : (i1+N*i2-(i2*(i2+1))/2)) /**< assigns an index from 0 to [N(N+1)/2-1] to the coefficients M_{i1,i2} of an N*N symmetric matrix; useful for converting a symmetric matrix to a vector, without losing or double-counting any information */ +#define index_symmetric_matrix(i1,i2,N) (((i1)<=(i2)) ? ((i2)+N*(i1)-((i1)*((i1)+1))/2) : ((i1)+N*(i2)-((i2)*((i2)+1))/2)) /**< assigns an index from 0 to [N(N+1)/2-1] to the coefficients M_{i1,i2} of an N*N symmetric matrix; useful for converting a symmetric matrix to a vector, without losing or double-counting any information */ /* @endcond */ // needed because of weird openmp bug on macosx lion... void class_protect_sprintf(char* dest, char* tpl,...); @@ -344,444 +346,14 @@ enum file_format {class_format,camb_format}; */ struct precision { - - /** @name - parameters related to the background */ - //@{ - - /** - * default initial value of scale factor in background integration, in - * units of scale factor today - */ - double a_ini_over_a_today_default; - - /** - * default step d tau in background integration, in units of - * conformal Hubble time (\f$ d \tau \f$ = back_integration_stepsize / aH ) - */ - double back_integration_stepsize; - - /** - * parameter controlling precision of background integration - */ - double tol_background_integration; - - - /** - * parameter controlling how deep inside radiation domination must the - * initial time be chosen - */ - double tol_initial_Omega_r; - - /** - * parameter controlling relative precision of ncdm mass for given - * ncdm current density - */ - double tol_M_ncdm; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * to be applied in Newtonian gauge - */ - double tol_ncdm_newtonian; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * to be applied in synchronous gauge - */ - double tol_ncdm_synchronous; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * actually applied in chosen gauge - */ - double tol_ncdm; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during background evolution - */ - double tol_ncdm_bg; - - /** - * parameter controlling how relativistic must non-cold relics be at - * initial time - */ - double tol_ncdm_initial_w; - - /** - * parameter controlling the initial scalar field in background functions - */ - double safe_phi_scf; - - //@} - - /** @name - parameters related to the thermodynamics */ - - //@{ - - /* - for bbn */ -/* @cond INCLUDE_WITH_DOXYGEN */ - FileName sBBN_file; -/* @endcond */ - /* - for recombination */ - - /* initial and final redshifts in recfast */ - - double recfast_z_initial; /**< initial redshift in recfast */ - - /* parameters governing precision of integration */ - - int recfast_Nz0; /**< number of integration steps */ - double tol_thermo_integration; /**< precision of each integration step */ - - /* He fudge parameters from recfast 1.4 */ - - int recfast_Heswitch; /**< recfast 1.4 parameter */ - double recfast_fudge_He; /**< recfast 1.4 parameter */ - - /* H fudge parameters from recfast 1.5 (Gaussian fits for extra H physics by Adam Moss) */ - - int recfast_Hswitch; /**< recfast 1.5 switching parameter */ - double recfast_fudge_H; /**< H fudge factor when recfast_Hswitch set to false (v1.4 fudging) */ - double recfast_delta_fudge_H; /**< correction to H fudge factor in v1.5 */ - double recfast_AGauss1; /**< Amplitude of 1st Gaussian */ - double recfast_AGauss2; /**< Amplitude of 2nd Gaussian */ - double recfast_zGauss1; /**< ln(1+z) of 1st Gaussian */ - double recfast_zGauss2; /**< ln(1+z) of 2nd Gaussian */ - double recfast_wGauss1; /**< Width of 1st Gaussian */ - double recfast_wGauss2; /**< Width of 2nd Gaussian */ - - /* triggers for switching approximations; ranges for doing it smoothly */ - - double recfast_z_He_1; /**< down to which redshift Helium fully ionized */ - double recfast_delta_z_He_1; /**< z range over which transition is smoothed */ - - double recfast_z_He_2; /**< down to which redshift first Helium recombination not complete */ - double recfast_delta_z_He_2; /**< z range over which transition is smoothed */ - - double recfast_z_He_3; /**< down to which redshift Helium singly ionized */ - double recfast_delta_z_He_3; /**< z range over which transition is smoothed */ - - double recfast_x_He0_trigger; /**< value below which recfast uses the full equation for Helium */ - double recfast_x_He0_trigger2; /**< a second threshold used in derivative routine */ - double recfast_x_He0_trigger_delta; /**< x_He range over which transition is smoothed */ - - double recfast_x_H0_trigger; /**< value below which recfast uses the full equation for Hydrogen */ - double recfast_x_H0_trigger2; /**< a second threshold used in derivative routine */ - double recfast_x_H0_trigger_delta; /**< x_H range over which transition is smoothed */ - - double recfast_H_frac; /**< governs time at which full equation of evolution for Tmat is used */ -/* @cond INCLUDE_WITH_DOXYGEN */ - FileName hyrec_Alpha_inf_file; - FileName hyrec_R_inf_file; - FileName hyrec_two_photon_tables_file; -/* @endcond */ - /* - for reionization */ - - double reionization_z_start_max; /**< maximum redshift at which reionization should start. If not, return an error. */ - double reionization_sampling; /**< control stepsize in z during reionization */ - double reionization_optical_depth_tol; /**< fractional error on optical_depth */ - double reionization_start_factor; /**< parameter for CAMB-like parametrization */ - - /* - general */ - - int thermo_rate_smoothing_radius; /**< plays a minor (almost aesthetic) role in the definition of the variation rate of thermodynamical quantities */ - - //@} - - /** @name - parameters related to the perturbation */ - - //@{ - - enum evolver_type evolver; /**< which type of evolver for integrating perturbations (Runge-Kutta? Stiff?...) */ - - double k_min_tau0; /**< number defining k_min for the computation of Cl's and P(k)'s (dimensionless): (k_min tau_0), usually chosen much smaller than one */ - - double k_max_tau0_over_l_max; /**< number defining k_max for the computation of Cl's (dimensionless): (k_max tau_0)/l_max, usually chosen around two */ - - double k_step_sub; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales inside sound horizon at decoupling */ - double k_step_super; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales above sound horizon at decoupling */ - double k_step_transition; /**< dimensionless number regulating the transition from 'sub' steps to 'super' steps. Decrease for more precision. */ - double k_step_super_reduction; /**< the step k_step_super is reduced by this amount in the k-->0 limit (below scale of Hubble and/or curvature radius) */ - - double k_per_decade_for_pk; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade outside the BAO region*/ - - double k_per_decade_for_bao; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade inside the BAO region (for finer sampling)*/ - - double k_bao_center; /**< in ln(k) space, the central value of the BAO region where sampling is finer is defined as k_rec times this number (recommended: 3, i.e. finest sampling near 3rd BAO peak) */ - - double k_bao_width; /**< in ln(k) space, width of the BAO region where sampling is finer: this number gives roughly the number of BAO oscillations well resolved on both sides of the central value (recommended: 4, i.e. finest sampling from before first up to 3+4=7th peak) */ - - double start_small_k_at_tau_c_over_tau_h; /**< largest wavelengths start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_largek_at_tau_c_over_tau_h equals this ratio. Decrease this value to start integrating the wavenumbers earlier in time. */ - - double start_large_k_at_tau_h_over_tau_k; /**< largest wavelengths start being sampled when mode is sufficiently outside Hubble scale. This is quantified in terms of the ratio of hubble time scale to wavenumber time scale, \f$ \tau_h/\tau_k \f$ which is roughly equal to (k*tau). Start when this ratio equals start_large_k_at_tau_k_over_tau_h. Decrease this value to start integrating the wavenumbers earlier in time. */ - - /** - * when to switch off tight-coupling approximation: first condition: - * \f$ \tau_c/\tau_H \f$ > tight_coupling_trigger_tau_c_over_tau_h. - * Decrease this value to switch off earlier in time. If this - * number is larger than start_sources_at_tau_c_over_tau_h, the code - * returns an error, because the source computation requires - * tight-coupling to be switched off. - */ - double tight_coupling_trigger_tau_c_over_tau_h; - - /** - * when to switch off tight-coupling approximation: - * second condition: \f$ \tau_c/\tau_k \equiv k \tau_c \f$ < - * tight_coupling_trigger_tau_c_over_tau_k. - * Decrease this value to switch off earlier in time. - */ - double tight_coupling_trigger_tau_c_over_tau_k; - - double start_sources_at_tau_c_over_tau_h; /**< sources start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_sources_at_tau_c_over_tau_h equals this ratio. Decrease this value to start sampling the sources earlier in time. */ - - int tight_coupling_approximation; /**< method for tight coupling approximation */ - - int l_max_g; /**< number of momenta in Boltzmann hierarchy for photon temperature (scalar), at least 4 */ - int l_max_pol_g; /**< number of momenta in Boltzmann hierarchy for photon polarization (scalar), at least 4 */ - int l_max_dr; /**< number of momenta in Boltzmann hierarchy for decay radiation, at least 4 */ - int l_max_ur; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ - int l_max_ncdm; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ - int l_max_g_ten; /**< number of momenta in Boltzmann hierarchy for photon temperature (tensor), at least 4 */ - int l_max_pol_g_ten; /**< number of momenta in Boltzmann hierarchy for photon polarization (tensor), at least 4 */ - - double curvature_ini; /**< initial condition for curvature for adiabatic */ - double entropy_ini; /**< initial condition for entropy perturbation for isocurvature */ - double gw_ini; /**< initial condition for tensor metric perturbation h */ - - /** - * default step \f$ d \tau \f$ in perturbation integration, in units of the timescale involved in the equations (usually, the min of \f$ 1/k \f$, \f$ 1/aH \f$, \f$ 1/\dot{\kappa} \f$) - */ - double perturb_integration_stepsize; - - /** - * default step \f$ d \tau \f$ for sampling the source function, in units of the timescale involved in the sources: \f$ (\dot{\kappa}- \ddot{\kappa}/\dot{\kappa})^{-1} \f$ - */ - double perturb_sampling_stepsize; - - /** - * control parameter for the precision of the perturbation integration - */ - double tol_perturb_integration; - - /** - * precision with which the code should determine (by bisection) the - * times at which sources start being sampled, and at which - * approximations must be switched on/off (units of Mpc) - */ - double tol_tau_approx; - - /** - * method for switching off photon perturbations - */ - int radiation_streaming_approximation; - - /** - * when to switch off photon perturbations, ie when to switch - * on photon free-streaming approximation (keep density and thtau, set - * shear and higher momenta to zero): - * first condition: \f$ k \tau \f$ > radiation_streaming_trigger_tau_h_over_tau_k - */ - double radiation_streaming_trigger_tau_over_tau_k; - - /** - * when to switch off photon perturbations, ie when to switch - * on photon free-streaming approximation (keep density and theta, set - * shear and higher momenta to zero): - * second condition: - */ - double radiation_streaming_trigger_tau_c_over_tau; - - int ur_fluid_approximation; /**< method for ultra relativistic fluid approximation */ - - /** - * when to switch off ur (massless neutrinos / ultra-relativistic - * relics) fluid approximation - */ - double ur_fluid_trigger_tau_over_tau_k; - - int ncdm_fluid_approximation; /**< method for non-cold dark matter fluid approximation */ - /** - * when to switch off ncdm (massive neutrinos / non-cold - * relics) fluid approximation + * Define (allocate) all precision parameters + * */ - double ncdm_fluid_trigger_tau_over_tau_k; - - /** - * whether CMB source functions can be approximated as zero when - * visibility function g(tau) is tiny - */ - double neglect_CMB_sources_below_visibility; - - //@} - - /** @name - parameters related to the primordial spectra */ - - //@{ - - double k_per_decade_primordial; /**< logarithmic sampling for primordial spectra (number of points per decade in k space) */ - - double primordial_inflation_ratio_min; /**< for each k, start following wavenumber when aH = k/primordial_inflation_ratio_min */ - double primordial_inflation_ratio_max; /**< for each k, stop following wavenumber, at the latest, when aH = k/primordial_inflation_ratio_max */ - int primordial_inflation_phi_ini_maxit; /**< maximum number of iteration when searching a suitable initial field value phi_ini (value reached when no long-enough slow-roll period before the pivot scale) */ - double primordial_inflation_pt_stepsize; /**< controls the integration timestep for inflaton perturbations */ - double primordial_inflation_bg_stepsize; /**< controls the integration timestep for inflaton background */ - double primordial_inflation_tol_integration; /**< controls the precision of the ODE integration during inflation */ - double primordial_inflation_attractor_precision_pivot; /**< targeted precision when searching attractor solution near phi_pivot */ - double primordial_inflation_attractor_precision_initial; /**< targeted precision when searching attractor solution near phi_ini */ - int primordial_inflation_attractor_maxit; /**< maximum number of iteration when searching attractor solution */ - double primordial_inflation_tol_curvature; /**< for each k, stop following wavenumber, at the latest, when curvature perturbation R is stable up to to this tolerance */ - double primordial_inflation_aH_ini_target; /**< control the step size in the search for a suitable initial field value */ - double primordial_inflation_end_dphi; /**< first bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ - double primordial_inflation_end_logstep; /**< logarithmic step for updating the bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ - double primordial_inflation_small_epsilon; /**< value of slow-roll parameter epsilon used to define a field value phi_end close to the end of inflation (doesn't need to be exactly at the end): epsilon(phi_end)=small_epsilon (should be smaller than one) */ - double primordial_inflation_small_epsilon_tol; /**< tolerance in the search for phi_end */ - double primordial_inflation_extra_efolds; /**< a small number of efolds, irrelevant at the end, used in the search for the pivot scale (backward from the end of inflation) */ - - //@} - - /** @name - parameters related to the transfer function */ - - //@{ - - int l_linstep; /**< factor for logarithmic spacing of values of l over which bessel and transfer functions are sampled */ - - double l_logstep; /**< maximum spacing of values of l over which Bessel and transfer functions are sampled (so, spacing becomes linear instead of logarithmic at some point) */ - - /* parameters relevant for bessel functions */ - double hyper_x_min; /**< flat case: lower bound on the smallest value of x at which we sample \f$ \Phi_l^{\nu}(x)\f$ or \f$ j_l(x)\f$ */ - double hyper_sampling_flat; /**< flat case: number of sampled points x per approximate wavelength \f$ 2\pi \f$*/ - double hyper_sampling_curved_low_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ smaller than hyper_nu_sampling_step */ - double hyper_sampling_curved_high_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ greater than hyper_nu_sampling_step */ - double hyper_nu_sampling_step; /**< open/closed cases: value of nu at which sampling changes */ - double hyper_phi_min_abs; /**< small value of Bessel function used in calculation of first point x (\f$ \Phi_l^{\nu}(x) \f$ equals hyper_phi_min_abs) */ - double hyper_x_tol; /**< tolerance parameter used to determine first value of x */ - double hyper_flat_approximation_nu; /**< value of nu below which the flat approximation is used to compute Bessel function */ - - /* parameters relevant for transfer function */ - - double q_linstep; /**< asymptotic linear sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_rec) \f$ - (comoving angular diameter distance to - recombination) */ - - double q_logstep_spline; /**< initial logarithmic sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_{rec})\f$ - (comoving angular diameter distance to - recombination) */ - - double q_logstep_open; /**< in open models, the value of - q_logstep_spline must be decreased - according to curvature. Increasing - this number will make the calculation - more accurate for large positive - Omega_k */ - - double q_logstep_trapzd; /**< initial logarithmic sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_{rec}) \f$ - (comoving angular diameter distance to - recombination), in the case of small - q's in the closed case, for which one - must used trapezoidal integration - instead of spline (the number of q's - for which this is the case decreases - with curvature and vanishes in the - flat limit) */ - - double q_numstep_transition; /**< number of steps for the transition - from q_logstep_trapzd steps to - q_logstep_spline steps (transition - must be smooth for spline) */ - - double transfer_neglect_delta_k_S_t0; /**< for temperature source function T0 of scalar mode, range of k values (in 1/Mpc) taken into account in transfer function: for l < (k-delta_k)*tau0, ie for k > (l/tau0 + delta_k), the transfer function is set to zero */ - double transfer_neglect_delta_k_S_t1; /**< same for temperature source function T1 of scalar mode */ - double transfer_neglect_delta_k_S_t2; /**< same for temperature source function T2 of scalar mode */ - double transfer_neglect_delta_k_S_e; /**< same for polarization source function E of scalar mode */ - double transfer_neglect_delta_k_V_t1; /**< same for temperature source function T1 of vector mode */ - double transfer_neglect_delta_k_V_t2; /**< same for temperature source function T2 of vector mode */ - double transfer_neglect_delta_k_V_e; /**< same for polarization source function E of vector mode */ - double transfer_neglect_delta_k_V_b; /**< same for polarization source function B of vector mode */ - double transfer_neglect_delta_k_T_t2; /**< same for temperature source function T2 of tensor mode */ - double transfer_neglect_delta_k_T_e; /**< same for polarization source function E of tensor mode */ - double transfer_neglect_delta_k_T_b; /**< same for polarization source function B of tensor mode */ - - double transfer_neglect_late_source; /**< value of l below which the CMB source functions can be neglected at late time, excepted when there is a Late ISW contribution */ - - /** when to use the Limber approximation for project gravitational potential cl's */ - double l_switch_limber; - - /** when to use the Limber approximation for local number count contributions to cl's (relative to central redshift of each bin) */ - double l_switch_limber_for_nc_local_over_z; - - /** when to use the Limber approximation for number count contributions to cl's integrated along the line-of-sight (relative to central redshift of each bin) */ - double l_switch_limber_for_nc_los_over_z; - - /** in sigma units, where to cut gaussian selection functions */ - double selection_cut_at_sigma; - - /** controls sampling of integral over time when selection functions vary quicker than Bessel functions. Increase for better sampling. */ - double selection_sampling; - - /** controls sampling of integral over time when selection functions vary slower than Bessel functions. Increase for better sampling */ - double selection_sampling_bessel; - - /** controls sampling of integral over time when selection functions vary slower than Bessel functions. This parameter is specific to number counts contributions to Cl integrated along the line of sight. Increase for better sampling */ - double selection_sampling_bessel_los; - - /** controls how smooth are the edge of top-hat window function (<<1 for very sharp, 0.1 for sharp) */ - double selection_tophat_edge; - - //@} - - /** @name - parameters related to non-linear computations */ - - //@{ - - /** parameters relevant for HALOFIT computation */ - - double halofit_dz; /**< spacing in redshift space defining values of z - at which HALOFIT will be used. Intermediate - values will be obtained by - interpolation. Decrease for more precise - interpolations, at the expense of increasing - time spent in nonlinear_init() */ - - double halofit_min_k_nonlinear; /**< value of k in 1/Mpc above - which non-linear corrections will - be computed */ - double halofit_sigma_precision; /**< a smaller value will lead to a - more precise halofit result at - the highest requested redshift, - at the expense of requiring a - larger k_max */ - - double halofit_min_k_max; /**< when halofit is used, k_max must be at - least equal to this value (otherwise - halofit could not find the scale of - non-linearity) */ - - double halofit_k_per_decade; /**< halofit needs to evalute integrals - (linear power spectrum times some - kernels). They are sampled using - this logarithmic step size. */ - - //@} - - /** @name - parameters related to lensing */ - - //@{ - - int accurate_lensing; /**< switch between Gauss-Legendre quadrature integration and simple quadrature on a subdomain of angles */ - int num_mu_minus_lmax; /**< difference between num_mu and l_max, increase for more precision */ - int delta_l_max; /**< difference between l_max in unlensed and lensed spectra */ - double tol_gauss_legendre; /**< tolerance with which quadrature points are found: must be very small for an accurate integration (if not entered manually, set automatically to match machine precision) */ - //@} + #define __ALLOCATE_PRECISION_PARAMETER__ + #include "precisions.h" + #undef __ALLOCATE_PRECISION_PARAMETER__ /** @name - general precision parameters */ diff --git a/class/include/dei_rkck.h b/class/include/dei_rkck.h old mode 100644 new mode 100755 diff --git a/class/include/evolver_ndf15.h b/class/include/evolver_ndf15.h old mode 100644 new mode 100755 diff --git a/class/include/evolver_rkck.h b/class/include/evolver_rkck.h old mode 100644 new mode 100755 diff --git a/class/include/growTable.h b/class/include/growTable.h old mode 100644 new mode 100755 diff --git a/class/include/hyperspherical.h b/class/include/hyperspherical.h old mode 100644 new mode 100755 diff --git a/class/include/input.h b/class/include/input.h old mode 100644 new mode 100755 index 74bb1c07..b4586fab --- a/class/include/input.h +++ b/class/include/input.h @@ -134,7 +134,7 @@ * temporary parameters for background fzero function */ -enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm,tn_sigma8}; +enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8}; enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations, cs_primordial, cs_nonlinear, cs_transfer, cs_spectra}; #define _NUM_TARGETS_ 7 //Keep this number as number of target_names @@ -155,7 +155,7 @@ struct fzerofun_workspace { /**************************************************************/ -/* @cond INCLUDE_WITH_DOXYGEN */ +/* @cond INCLUDE_WITH_DOXYGEN */ /* * Boilerplate for C++ */ @@ -209,6 +209,21 @@ extern "C" { ErrorMsg errmsg ); + int input_read_precisions( + struct file_content * pfc, + struct precision * ppr, + struct background * pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear *pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ); + int input_default_params( struct background *pba, struct thermo *pth, @@ -276,6 +291,15 @@ extern "C" { int compare_doubles(const void *a,const void *b); + int input_prepare_pk_eq( + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct nonlinear *pnl, + int input_verbose, + ErrorMsg errmsg + ); + #ifdef __cplusplus } @@ -284,4 +308,4 @@ extern "C" { /**************************************************************/ #endif -/* @endcond */ \ No newline at end of file +/* @endcond */ diff --git a/class/include/lensing.h b/class/include/lensing.h old mode 100644 new mode 100755 diff --git a/class/include/nonlinear.h b/class/include/nonlinear.h old mode 100644 new mode 100755 index aabcb81d..c56fc759 --- a/class/include/nonlinear.h +++ b/class/include/nonlinear.h @@ -1,118 +1,562 @@ -/** @file nonlinear.h Documented includes for trg module */ - -#include "primordial.h" - -#ifndef __NONLINEAR__ -#define __NONLINEAR__ - -#define _M_EV_TOO_BIG_FOR_HALOFIT_ 10. /**< above which value of non-CDM mass (in eV) do we stop trusting halofit? */ - -enum non_linear_method {nl_none,nl_halofit}; - -/** - * Structure containing all information on non-linear spectra. - * - * Once initialized by nonlinear_init(), contains a table for all two points correlation functions - * and for all the ai,bj functions (containing the three points correlation functions), for each - * time and wave-number. - */ - -struct nonlinear { - - /** @name - input parameters initialized by user in input module - (all other quantities are computed in this module, given these - parameters and the content of the 'precision', 'background', - 'thermo', 'primordial' and 'spectra' structures) */ - - //@{ - - enum non_linear_method method; /**< method for computing non-linear corrections (none, Halogit, etc.) */ - - //@} - - /** @name - table non-linear corrections for matter density, sqrt(P_NL(k,z)/P_NL(k,z)) */ - - //@{ - - int k_size; /**< k_size = total number of k values */ - double * k; /**< k[index_k] = list of k values */ - int tau_size; /**< tau_size = number of values */ - double * tau; /**< tau[index_tau] = list of time values */ - - double * nl_corr_density; /**< nl_corr_density[index_tau * ppt->k_size + index_k] */ - double * k_nl; /**< wavenumber at which non-linear corrections become important, defined differently by different non_linear_method's */ - - //@} - - /** @name - technical parameters */ - - //@{ - - short nonlinear_verbose; /**< amount of information written in standard output */ - - ErrorMsg error_message; /**< zone for writing error messages */ - - //@} -}; - -/********************************************************************************/ - -/* @cond INCLUDE_WITH_DOXYGEN */ -/* - * Boilerplate for C++ - */ -#ifdef __cplusplus -extern "C" { -#endif - - int nonlinear_k_nl_at_z( - struct background *pba, - struct nonlinear * pnl, - double z, - double * k_nl - ); - - int nonlinear_init( - struct precision *ppr, - struct background *pba, - struct thermo *pth, - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl - ); - - int nonlinear_free( - struct nonlinear *pnl - ); - - int nonlinear_pk_l(struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl, - int index_tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk); - - int nonlinear_halofit( - struct precision *ppr, - struct background *pba, - struct primordial *ppm, - struct nonlinear *pnl, - double tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk, - double *pk_nl, - double *k_nl - ); - -#ifdef __cplusplus -} -#endif - -/**************************************************************/ - -#endif -/* @endcond */ +/** @file nonlinear.h Documented includes for trg module */ + +#include "primordial.h" +#include "trigonometric_integrals.h" + +#ifndef __NONLINEAR__ +#define __NONLINEAR__ + +#define _M_EV_TOO_BIG_FOR_HALOFIT_ 10. /**< above which value of non-CDM mass (in eV) do we stop trusting halofit? */ + +#define _M_SUN_ 1.98847e30 /**< Solar mass in Kg */ + +#define _MAX_NUM_EXTRAPOLATION_ 100000 + +enum non_linear_method {nl_none,nl_halofit,nl_HMcode}; +enum pk_outputs {pk_linear,pk_nonlinear}; + +enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined}; + +enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three}; + +enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined}; +enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp}; + +/** + * Structure containing all information on non-linear spectra. + * + * Once initialized by nonlinear_init(), contains a table for all two points correlation functions + * and for all the ai,bj functions (containing the three points correlation functions), for each + * time and wave-number. + */ + +struct nonlinear { + + /** @name - input parameters initialized by user in input module + (all other quantities are computed in this module, given these + parameters and the content of the 'precision', 'background', + 'thermo', 'primordial' and 'spectra' structures) */ + + //@{ + + enum non_linear_method method; /**< method for computing non-linear corrections (none, Halogit, etc.) */ + + enum source_extrapolation extrapolation_method; /**< method for analytical extrapolation of sources beyond pre-computed range */ + + enum hmcode_baryonic_feedback_model feedback; /** to choose between different baryonic feedback models + in hmcode (dmonly, gas cooling, Agn or supernova feedback) */ + double c_min; /** for HMcode: minimum concentration in Bullock 2001 mass-concentration relation */ + double eta_0; /** for HMcode: halo bloating parameter */ + double z_infinity; /** for HMcode: z value at which Dark Energy correction is evaluated needs to be at early times (default */ + + //@} + + /** @name - information on number of modes and pairs of initial conditions */ + + //@{ + + int index_md_scalars; /**< set equal to psp->index_md_scalars + (useful since this module only deals with + scalars) */ + int ic_size; /**< for a given mode, ic_size[index_md] = number of initial conditions included in computation */ + int ic_ic_size; /**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)/2 where N = ic_size[index_md] */ + short * is_non_zero; /**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated */ + + //@} + + /** @name - information on the type of power spectra (_cb, _m...) */ + + //@{ + + short has_pk_m; /**< do we want spectra for total matter? */ + short has_pk_cb; /**< do we want spectra for cdm+baryons? */ + + int index_pk_m; /**< index of pk for matter (defined only when has_pk_m is TRUE) */ + int index_pk_cb; /**< index of pk for cold dark matter plus baryons (defined only when has_pk_cb is TRUE */ + + /* and two redundent but useful indices: */ + + int index_pk_total; /**< always equal to index_pk_m + (always defined, useful e.g. for weak lensing spectrum) */ + int index_pk_cluster; /**< equal to index_pk_cb if it exists, otherwise to index_pk_m + (always defined, useful e.g. for galaxy clustering spectrum) */ + + int pk_size; /**< k_size = total number of pk */ + + //@} + + /** @name - arrays for the Fourier power spectra P(k,tau) */ + + //@{ + + short has_pk_matter; /**< do we need matter Fourier spectrum? */ + + int k_size; /**< k_size = total number of k values */ + double * k; /**< k[index_k] = list of k values */ + double * ln_k; /**< ln_k[index_k] = list of log(k) values */ + + double * ln_tau; /**< log(tau) array, only needed if user wants + some output at z>0, instead of only z=0. This + array only covers late times, used for the + output of P(k) or T(k), and matching the + condition z(tau) < z_max_pk */ + + int ln_tau_size; /**< number of values in this array */ + + double ** ln_pk_ic_l; /**< Matter power spectrum (linear). + Depends on indices index_pk, index_ic1_ic2, index_k, index_tau as: + ln_pk_ic_l[index_pk][(index_tau * pnl->k_size + index_k)* pnl->ic_ic_size + index_ic1_ic2] + where index-pk labels P(k) types (_m = total matter, _cb = baryons+CDM), + while index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since + the primordial spectrum is symmetric in (index_ic1, index_ic2)). + - for diagonal elements (index_ic1 = index_ic2) this arrays contains + ln[P(k)] where P(k) is positive by construction. + - for non-diagonal elements this arrays contains the k-dependent + cosine of the correlation angle, namely + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + This choice is convenient since the sign of the non-diagonal cross-correlation + could be negative. For fully correlated or anti-correlated initial conditions, + this non-diagonal element is independent on k, and equal to +1 or -1. + */ + + double ** ddln_pk_ic_l; /**< second derivative of above array with respect to log(tau), for spline interpolation. So: + - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is + good since this function is usually smooth. + - for non-diagonal coefficients, we spline + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + vs. ln(k), which is fine since this quantity is often assumed to be + constant (e.g for fully correlated/anticorrelated initial conditions) + or nearly constant, and with arbitrary sign. + */ + + double ** ln_pk_l; /**< Total matter power spectrum summed over initial conditions (linear). + Only depends on indices index_pk,index_k, index_tau as: + ln_pk[index_pk][index_tau * pnl->k_size + index_k] + */ + + double ** ddln_pk_l; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + double ** ln_pk_nl; /**< Total matter power spectrum summed over initial conditions (nonlinear). + Only depends on indices index_pk,index_k, index_tau as: + ln_pk[index_pk][index_tau * pnl->k_size + index_k] + */ + + double ** ddln_pk_nl; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + double * sigma8; /**< sigma8[index_pk] */ + + //@} + + /** @name - table non-linear corrections for matter density, sqrt(P_NL(k,z)/P_NL(k,z)) */ + + //@{ + + int k_size_extra;/** total number of k values of extrapolated k array (high k)*/ + + int tau_size; /**< tau_size = number of values */ + double * tau; /**< tau[index_tau] = list of time values, covering + all the values of the perturbation module */ + + double ** nl_corr_density; /**< nl_corr_density[index_pk][index_tau * ppt->k_size + index_k] */ + double ** k_nl; /**< wavenumber at which non-linear corrections become important, + defined differently by different non_linear_method's */ + int index_tau_min_nl; /**< index of smallest value of tau at which nonlinear corrections have been computed + (so, for tau=2 for idm_fr-idr */ + double * beta_idr; /**< Angular contribution to collisional term at l>=2 for idr-idr */ + + int idr_nature; /**< Nature of the interacting dark radiation (free streaming or fluid) */ + //@} /** @name - useful flags inferred from the ones above */ @@ -233,32 +229,46 @@ struct perturbs //@{ - short has_source_t; /**< do we need source for CMB temperature? */ - short has_source_p; /**< do we need source for CMB polarization? */ - short has_source_delta_m; /**< do we need source for delta of total matter? */ - short has_source_delta_g; /**< do we need source for delta of gammas? */ - short has_source_delta_b; /**< do we need source for delta of baryons? */ - short has_source_delta_cdm; /**< do we need source for delta of cold dark matter? */ - short has_source_delta_dcdm; /**< do we need source for delta of DCDM? */ - short has_source_delta_fld; /**< do we need source for delta of dark energy? */ - short has_source_delta_scf; /**< do we need source for delta from scalar field? */ - short has_source_delta_dr; /**< do we need source for delta of decay radiation? */ - short has_source_delta_ur; /**< do we need source for delta of ultra-relativistic neutrinos/relics? */ - short has_source_delta_ncdm; /**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? */ - short has_source_theta_m; /**< do we need source for theta of total matter? */ - short has_source_theta_g; /**< do we need source for theta of gammas? */ - short has_source_theta_b; /**< do we need source for theta of baryons? */ - short has_source_theta_cdm; /**< do we need source for theta of cold dark matter? */ - short has_source_theta_dcdm; /**< do we need source for theta of DCDM? */ - short has_source_theta_fld; /**< do we need source for theta of dark energy? */ - short has_source_theta_scf; /**< do we need source for theta of scalar field? */ - short has_source_theta_dr; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ - short has_source_theta_ur; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ - short has_source_theta_ncdm; /**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? */ - short has_source_phi; /**< do we need source for metric fluctuation phi? */ - short has_source_phi_prime; /**< do we need source for metric fluctuation phi'? */ - short has_source_phi_plus_psi; /**< do we need source for metric fluctuation (phi+psi)? */ - short has_source_psi; /**< do we need source for metric fluctuation psi? */ + short has_source_t; /**< do we need source for CMB temperature? */ + short has_source_p; /**< do we need source for CMB polarization? */ + short has_source_delta_m; /**< do we need source for delta of total matter? */ + short has_source_delta_cb; /**< do we ALSO need source for delta of ONLY cdm and baryon? */ + short has_source_delta_tot; /**< do we need source for delta total? */ + short has_source_delta_g; /**< do we need source for delta of gammas? */ + short has_source_delta_b; /**< do we need source for delta of baryons? */ + short has_source_delta_cdm; /**< do we need source for delta of cold dark matter? */ + short has_source_delta_dcdm; /**< do we need source for delta of DCDM? */ + short has_source_delta_fld; /**< do we need source for delta of dark energy? */ + short has_source_delta_scf; /**< do we need source for delta from scalar field? */ + short has_source_delta_dr; /**< do we need source for delta of decay radiation? */ + short has_source_delta_ur; /**< do we need source for delta of ultra-relativistic neutrinos/relics? */ + short has_source_delta_idr; /**< do we need source for delta of interacting dark radiation? */ + short has_source_delta_idm_dr;/**< do we need source for delta of interacting dark matter (with dr)? */ + short has_source_delta_ncdm; /**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_theta_m; /**< do we need source for theta of total matter? */ + short has_source_theta_cb; /**< do we ALSO need source for theta of ONLY cdm and baryon? */ + short has_source_theta_tot; /**< do we need source for theta total? */ + short has_source_theta_g; /**< do we need source for theta of gammas? */ + short has_source_theta_b; /**< do we need source for theta of baryons? */ + short has_source_theta_cdm; /**< do we need source for theta of cold dark matter? */ + short has_source_theta_dcdm; /**< do we need source for theta of DCDM? */ + short has_source_theta_fld; /**< do we need source for theta of dark energy? */ + short has_source_theta_scf; /**< do we need source for theta of scalar field? */ + short has_source_theta_dr; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_ur; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_idr; /**< do we need source for theta of interacting dark radiation? */ + short has_source_theta_idm_dr;/**< do we need source for theta of interacting dark matter (with dr)? */ + short has_source_theta_ncdm; /**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_phi; /**< do we need source for metric fluctuation phi? */ + short has_source_phi_prime; /**< do we need source for metric fluctuation phi'? */ + short has_source_phi_plus_psi;/**< do we need source for metric fluctuation (phi+psi)? */ + short has_source_psi; /**< do we need source for metric fluctuation psi? */ + short has_source_h; /**< do we need source for metric fluctuation h? */ + short has_source_h_prime; /**< do we need source for metric fluctuation h'? */ + short has_source_eta; /**< do we need source for metric fluctuation eta? */ + short has_source_eta_prime; /**< do we need source for metric fluctuation eta'? */ + short has_source_H_T_Nb_prime;/**< do we need source for metric fluctuation H_T_Nb'? */ + short has_source_k2gamma_Nb; /**< do we need source for metric fluctuation gamma in Nbody gauge? */ /* remember that the temperature source function includes three terms that we call 0,1,2 (since the strategy in class v > 1.7 is @@ -268,7 +278,9 @@ struct perturbs int index_tp_t1; /**< index value for temperature (j=1 term) */ int index_tp_t2; /**< index value for temperature (j=2 term) */ int index_tp_p; /**< index value for polarization */ - int index_tp_delta_m; /**< index value for delta tot */ + int index_tp_delta_m; /**< index value for matter density fluctuation */ + int index_tp_delta_cb; /**< index value for delta cb */ + int index_tp_delta_tot; /**< index value for total density fluctuation */ int index_tp_delta_g; /**< index value for delta of gammas */ int index_tp_delta_b; /**< index value for delta of baryons */ int index_tp_delta_cdm; /**< index value for delta of cold dark matter */ @@ -277,25 +289,37 @@ struct perturbs int index_tp_delta_scf; /**< index value for delta of scalar field */ int index_tp_delta_dr; /**< index value for delta of decay radiation */ int index_tp_delta_ur; /**< index value for delta of ultra-relativistic neutrinos/relics */ + int index_tp_delta_idr; /**< index value for delta of interacting dark radiation */ + int index_tp_delta_idm_dr;/**< index value for delta of interacting dark matter (with dr)*/ int index_tp_delta_ncdm1; /**< index value for delta of first non-cold dark matter species (e.g. massive neutrinos) */ int index_tp_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ int index_tp_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ - int index_tp_theta_m; /**< index value for theta tot */ - int index_tp_theta_g; /**< index value for theta of gammas */ - int index_tp_theta_b; /**< index value for theta of baryons */ - int index_tp_theta_cdm; /**< index value for theta of cold dark matter */ - int index_tp_theta_dcdm;/**< index value for theta of DCDM */ - int index_tp_theta_fld; /**< index value for theta of dark energy */ - int index_tp_theta_scf; /**< index value for theta of scalar field */ - int index_tp_theta_ur; /**< index value for theta of ultra-relativistic neutrinos/relics */ - int index_tp_theta_dr; /**< index value for F1 of decay radiation */ + int index_tp_theta_m; /**< index value for matter velocity fluctuation */ + int index_tp_theta_cb; /**< index value for theta cb */ + int index_tp_theta_tot; /**< index value for total velocity fluctuation */ + int index_tp_theta_g; /**< index value for theta of gammas */ + int index_tp_theta_b; /**< index value for theta of baryons */ + int index_tp_theta_cdm; /**< index value for theta of cold dark matter */ + int index_tp_theta_dcdm; /**< index value for theta of DCDM */ + int index_tp_theta_fld; /**< index value for theta of dark energy */ + int index_tp_theta_scf; /**< index value for theta of scalar field */ + int index_tp_theta_ur; /**< index value for theta of ultra-relativistic neutrinos/relics */ + int index_tp_theta_idr; /**< index value for theta of interacting dark radiation */ + int index_tp_theta_idm_dr;/**< index value for theta of interacting dark matter (with dr)*/ + int index_tp_theta_dr; /**< index value for F1 of decay radiation */ int index_tp_theta_ncdm1; /**< index value for theta of first non-cold dark matter species (e.g. massive neutrinos) */ int index_tp_phi; /**< index value for metric fluctuation phi */ int index_tp_phi_prime; /**< index value for metric fluctuation phi' */ int index_tp_phi_plus_psi; /**< index value for metric fluctuation phi+psi */ int index_tp_psi; /**< index value for metric fluctuation psi */ + int index_tp_h; /**< index value for metric fluctuation h */ + int index_tp_h_prime; /**< index value for metric fluctuation h' */ + int index_tp_eta; /**< index value for metric fluctuation eta */ + int index_tp_eta_prime; /**< index value for metric fluctuation eta' */ + int index_tp_H_T_Nb_prime; /**< index value for metric fluctuation H_T_Nb' */ + int index_tp_k2gamma_Nb; /**< index value for metric fluctuation gamma times k^2 in Nbody gauge */ int * tp_size; /**< number of types tp_size[index_md] included in computation for each mode */ @@ -329,9 +353,8 @@ struct perturbs //@{ - int tau_size; /**< tau_size = number of values */ - - double * tau_sampling; /**< tau_sampling[index_tau] = list of tau values */ + double * tau_sampling; /**< array of tau values */ + int tau_size; /**< number of values in this array */ double selection_min_of_tau_min; /**< used in presence of selection functions (for matter density, cosmic shear...) */ double selection_max_of_tau_max; /**< used in presence of selection functions (for matter density, cosmic shear...) */ @@ -351,9 +374,55 @@ struct perturbs double *** sources; /**< Pointer towards the source interpolation table sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_type] + [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size + index_k] */ + //@} + + /** @name - arrays related to the interpolation table for sources at late times, corresponding to z < z_max_pk (used for Fourier transfer function and spectra output) */ + + //@{ + + double * ln_tau; /**< log of the arrau tau_sampling, covering only the final time range required for the output of + Fourier transfer functions (used for interpolations) */ + int ln_tau_size; /**< number of values in this array */ + + double *** late_sources; /**< Pointer towards the source interpolation table + late_sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size + index_k] + Note that this is not a replication of part of the sources table, + it is just poiting towards the same memory zone, at the place where the late_sources actually start */ + + double *** ddlate_sources; /**< Pointer towards the splined source interpolation table with second derivatives with respect to time + ddlate_sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size + index_k] */ + + //@} + + /** @name - arrays storing the evolution of all sources for given k values, passed as k_output_values */ + + //@{ + + int * index_k_output_values; /**< List of indices corresponding to k-values close to k_output_values for each mode. + index_k_output_values[index_md*k_output_values_num+ik]*/ + + char scalar_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for scalar perturbation output files. */ + char vector_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for vector perturbation output files. */ + char tensor_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for tensor perturbation output files. */ + + int number_of_scalar_titles; /**< number of titles/columns in scalar perturbation output files */ + int number_of_vector_titles; /**< number of titles/columns in vector perturbation output files*/ + int number_of_tensor_titles; /**< number of titles/columns in tensor perturbation output files*/ + + double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for scalars */ + double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for vectors */ + double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for tensors */ + + int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of scalar double pointers */ + int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of vector double pointers */ + int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of tensor double pointers */ //@} @@ -392,10 +461,13 @@ struct perturb_vector int index_pt_theta_b; /**< baryon velocity */ int index_pt_delta_cdm; /**< cdm density */ int index_pt_theta_cdm; /**< cdm velocity */ + int index_pt_delta_idm_dr;/**< idm_dr density */ + int index_pt_theta_idm_dr;/**< idm_dr velocity */ int index_pt_delta_dcdm; /**< dcdm density */ int index_pt_theta_dcdm; /**< dcdm velocity */ - int index_pt_delta_fld; /**< dark energy density */ - int index_pt_theta_fld; /**< dark energy velocity */ + int index_pt_delta_fld; /**< dark energy density in true fluid case */ + int index_pt_theta_fld; /**< dark energy velocity in true fluid case */ + int index_pt_Gamma_fld; /**< unique dark energy dynamical variable in PPF case */ int index_pt_phi_scf; /**< scalar field density */ int index_pt_phi_prime_scf; /**< scalar field velocity */ int index_pt_delta_ur; /**< density of ultra-relativistic neutrinos/relics */ @@ -403,6 +475,12 @@ struct perturb_vector int index_pt_shear_ur; /**< shear of ultra-relativistic neutrinos/relics */ int index_pt_l3_ur; /**< l=3 of ultra-relativistic neutrinos/relics */ int l_max_ur; /**< max momentum in Boltzmann hierarchy (at least 3) */ + int index_pt_delta_idr; /**< density of interacting dark radiation */ + int index_pt_theta_idr; /**< velocity of interacting dark radiation */ + int index_pt_shear_idr; /**< shear of interacting dark radiation */ + int index_pt_l3_idr; /**< l=3 of interacting dark radiation */ + int l_max_idr; /**< max momentum in Boltzmann hierarchy (at least 3) for interacting dark radiation */ + /* perturbed recombination */ int index_pt_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ int index_pt_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ @@ -483,16 +561,22 @@ struct perturb_workspace double rho_plus_p_theta; /**< total (rho+p)*theta perturbation (gives delta Toi) */ double rho_plus_p_shear; /**< total (rho+p)*shear (gives delta Tij) */ double delta_p; /**< total pressure perturbation (gives Tii) */ + + double rho_plus_p_tot; /**< total (rho+p) (used to infer theta_tot from rho_plus_p_theta) */ + double gw_source; /**< stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) */ double vector_source_pi; /**< first stress-energy source term in Einstein's vector equations */ double vector_source_v; /**< second stress-energy source term in Einstein's vector equations */ double tca_shear_g; /**< photon shear in tight-coupling approximation */ double tca_slip; /**< photon-baryon slip in tight-coupling approximation */ + double tca_shear_idm_dr;/**< interacting dark radiation shear in tight coupling appproximation */ double rsa_delta_g; /**< photon density in radiation streaming approximation */ double rsa_theta_g; /**< photon velocity in radiation streaming approximation */ double rsa_delta_ur; /**< photon density in radiation streaming approximation */ double rsa_theta_ur; /**< photon velocity in radiation streaming approximation */ + double rsa_delta_idr; /**< interacting dark radiation density in dark radiation streaming approximation */ + double rsa_theta_idr; /**< interacting dark radiation velocity in dark radiation streaming approximation */ double * delta_ncdm; /**< relative density perturbation of each ncdm species */ double * theta_ncdm; /**< velocity divergence theta of each ncdm species */ @@ -501,6 +585,15 @@ struct perturb_workspace double delta_m; /**< relative density perturbation of all non-relativistic species */ double theta_m; /**< velocity divergence theta of all non-relativistic species */ + double delta_cb; /**< relative density perturbation of only cdm and baryon */ + double theta_cb; /**< velocity divergence theta of only cdm and baryon */ + + double delta_rho_fld; /**< density perturbation of fluid, not so trivial in PPF scheme */ + double delta_p_fld; /**< pressure perturbation of fluid, very non-trivial in PPF scheme */ + double rho_plus_p_theta_fld; /**< velocity divergence of fluid, not so trivial in PPF scheme */ + double S_fld; /**< S quantity sourcing Gamma_prime evolution in PPF scheme (equivalent to eq. 15 in 0808.3125) */ + double Gamma_prime_fld; /**< Gamma_prime in PPF scheme (equivalent to eq. 14 in 0808.3125) */ + FILE * perturb_output_file; /**< filepointer to output file*/ int index_ikout; /**< index for output k value (when k_output_values is set) */ @@ -523,6 +616,8 @@ struct perturb_workspace int index_ap_tca; /**< index for tight-coupling approximation */ int index_ap_rsa; /**< index for radiation streaming approximation */ + int index_ap_tca_idm_dr; /**< index for dark tight-coupling approximation (idm-idr) */ + int index_ap_rsa_idr; /**< index for dark radiation streaming approximation */ int index_ap_ufa; /**< index for ur fluid approximation */ int index_ap_ncdmfa; /**< index for ncdm fluid approximation */ int ap_size; /**< number of relevant approximations for a given mode */ @@ -575,11 +670,34 @@ extern "C" { struct perturbs * ppt, int index_md, int index_ic, - int index_type, + int index_tp, double tau, double * pvecsources ); + int perturb_output_data( + struct background * pba, + struct perturbs * ppt, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ); + + int perturb_output_titles( + struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int perturb_output_firstline_and_ic_suffix( + struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix + ); + int perturb_init( struct precision * ppr, struct background * pba, @@ -637,6 +755,11 @@ extern "C" { struct perturb_workspace * ppw ); + int perturb_prepare_k_output( + struct background * pba, + struct perturbs * ppt + ); + int perturb_find_approximation_number( struct precision * ppr, struct background * pba, @@ -780,14 +903,17 @@ extern "C" { struct perturb_workspace * ppw ); - int perturb_prepare_output_file(struct background * pba, + int perturb_rsa_idr_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, struct perturbs * ppt, - struct perturb_workspace * ppw, - int index_ikout, - int index_md); - - int perturb_prepare_output(struct background * pba, - struct perturbs * ppt); + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ); #ifdef __cplusplus } diff --git a/class/include/precision_macros.h b/class/include/precision_macros.h new file mode 100644 index 00000000..d54770db --- /dev/null +++ b/class/include/precision_macros.h @@ -0,0 +1,45 @@ +/** + * This file should not be modified + * */ + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +ppr->NAME = DEF_VALUE; +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +TYPE NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +class_read_ ## TYPE(#NAME,ppr->NAME); +#endif + + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_string_parameter(NAME,DIR,STRING) \ +sprintf(ppr->NAME,__CLASSDIR__); \ +strcat(ppr->NAME,DIR); +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_string_parameter(NAME,DIR,STRING) \ +FileName NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_string_parameter(NAME,DIR,STRING) \ +class_read_string(STRING,ppr->NAME); +#endif + + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +ppr->NAME = DEF_VAL; +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +REAL_TP NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +class_read_ ## READ_TP(#NAME,ppr->NAME); +#endif diff --git a/class/include/precisions.h b/class/include/precisions.h new file mode 100644 index 00000000..3fc78cd1 --- /dev/null +++ b/class/include/precisions.h @@ -0,0 +1,498 @@ +#include "precision_macros.h" + +/* + * Background Quantities + * */ + + +/** + * Default initial value of scale factor used in the integration of background quantities. + * For models like ncdm, the code may decide to start the integration earlier. + */ +class_precision_parameter(a_ini_over_a_today_default,double,1.e-14) +/** + * Default stepsize in conformal time for the background integration, + * in units for the conformal Hubble time. dtau = back_integration_stepsize/aH + */ +class_precision_parameter(back_integration_stepsize,double,7.e-3) +/** + * Tolerance of the background integration, giving the allowed relative integration error. + */ +class_precision_parameter(tol_background_integration,double,1.e-2) +/** + * Tolerance of the deviation of \f$ \Omega_r \f$ from 1 for which to start integration: + * The starting point of integration will be chosen, + * such that the Omega of radiation at that point is close to 1 within tolerance. + * (Class starts background integration during complete radiation domination) + */ +class_precision_parameter(tol_initial_Omega_r,double,1.e-4) +/** + * Tolerance of relative deviation of the used non-cold dark matter mass compared to that which would give the correct density. + * The dark matter mass is estimated from the dark matter density using a Newton-Method. + * In the nonrelativistic limit, this could be estimated using M=density/number density + */ +class_precision_parameter(tol_M_ncdm,double,1.e-7) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions. + */ +class_precision_parameter(tol_ncdm,double,1.e-3) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions in the synchronous gauge. + */ +class_precision_parameter(tol_ncdm_synchronous,double,1.e-3) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions in the newtonian gauge. + */ +class_precision_parameter(tol_ncdm_newtonian,double,1.e-5) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions during the background evolution. + */ +class_precision_parameter(tol_ncdm_bg,double,1.e-5) +/** + * Tolerance on the initial deviation of non-cold dark matter from being fully relativistic. + * Using w = pressure/density, this quantifies the maximum deviation from 1/3. (for relativistic species) + */ +class_precision_parameter(tol_ncdm_initial_w,double,1.e-3) +/** + * Tolerance on the deviation of the conformal time of equality from the true value in 1/Mpc. + */ +class_precision_parameter(tol_tau_eq,double,1.e-6) +/** + * Minimum amount of cdm to allow calculations in synchronous gauge comoving with cdm. + */ +class_precision_parameter(Omega0_cdm_min_synchronous,double,1.e-10) +/* + * Currently unused parameter. + */ +//class_precision_parameter(safe_phi_scf,double,0.0) +/** + * Big Bang Nucleosynthesis file path. The file specifies the predictions for + * \f$ Y_\mathrm{He} \f$ for given \f$ \omega_b \f$ and \f$ N_\mathrm{eff} \f$. + */ +class_string_parameter(sBBN_file,"/bbn/sBBN_2017.dat","sBBN file") + +/* + * Thermodynamical quantities + * */ + + +/** + * The initial z for the recfast calculation of the recombination history, e.g. 10^4 + */ +class_precision_parameter(recfast_z_initial,double,1.0e4) +/** + * Number of recfast integration steps, e.g. if this is 1.10^4 and the previous one is 10^4, the step will be Delta z = 0.5 + */ +class_precision_parameter(recfast_Nz0,int,20000) +/** + * If there is interacting DM, we want the thermodynamics table to + * start at a much larger z, in order to capture the possible + * non-trivial behavior of the dark matter interaction rate at early + * times: + * + * - The new initial redshift will be thermo_z_initial_idm_dr + * + * - the highest redhsift will be sampled with thermo_Nz1_idm_dr values, and the step will be + * Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr + * For instance, if the previous value is 10^9 and this value is 10^4, then Delta z simeq 10^5 + * + * - But the first interval after recfast_z_initial will be better + * sampled with thermo_Nz2_idm_dr values, in order to ensure a smoother + * transition from a small step to a large step. The intermediate + * stepsize will then be + * Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr/thermo_Nz1_idm_dr. + * For instance, if the three values are (10^9, 10^4, 10^2), then the intermediate timestep is Delta z simeq 10^3 +*/ +class_precision_parameter(thermo_z_initial_idm_dr,double,1.0e9) +class_precision_parameter(thermo_Nz1_idm_dr,int,10000) +class_precision_parameter(thermo_Nz2_idm_dr,int,100) +/** + * Tolerance of the relative value of integral during thermodynamical integration + */ +class_precision_parameter(tol_thermo_integration,double,1.0e-2) +/* + * Recfast 1.4 switch parameters + */ +class_precision_parameter(recfast_Heswitch,int,6) /**< from recfast 1.4, specifies how accurate the Helium recombination should be handled */ +class_precision_parameter(recfast_fudge_He,double,0.86) /**< from recfast 1.4, fugde factor for Peeble's equation coefficient of Helium */ + +/* + * Recfast 1.5 parameters + */ +class_precision_parameter(recfast_Hswitch,int,_TRUE_) /**< from recfast 1.5, specifies how accurate the Hydrogen recombination should be handled */ +class_precision_parameter(recfast_fudge_H,double,1.14) /**< from recfast 1.4, fudge factor for Peeble's equation coeffient of Hydrogen */ +class_precision_parameter(recfast_delta_fudge_H,double,-0.015) /**< from recfast 1.5.2, increasing Hydrogen fudge factor if Hswitch is enabled */ +class_precision_parameter(recfast_AGauss1,double,-0.14) /**< from recfast 1.5, Gaussian Peeble prefactor fit, amplitude */ +class_precision_parameter(recfast_AGauss2,double,0.079) /**< from recfast 1.5.2, Gaussian Peeble prefactor fit, amplitude */ +class_precision_parameter(recfast_zGauss1,double,7.28) /**< from recfast 1.5, Gaussian Peeble prefactor fit, center */ +class_precision_parameter(recfast_zGauss2,double,6.73) /**< from recfast 1.5.2, Gaussian Peeble prefactor fit, center */ +class_precision_parameter(recfast_wGauss1,double,0.18) /**< from recfast 1.5, Gaussian Peeble prefactor fit, width */ +class_precision_parameter(recfast_wGauss2,double,0.33) /**< from recfast 1.5, Gaussian Peeble prefactor fit, width */ + +class_precision_parameter(recfast_z_He_1,double,8000.0) /**< from recfast 1.4, Starting value of Helium recombination 1 */ +class_precision_parameter(recfast_delta_z_He_1,double,50.0) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_z_He_2,double,5000.0) /**< from recfast 1.4, Ending value of Helium recombination 1 */ +class_precision_parameter(recfast_delta_z_He_2,double,100.0)/**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_z_He_3,double,3500.0) /**< from recfast 1.4, Starting value of Helium recombination 2 */ +class_precision_parameter(recfast_delta_z_He_3,double,50.0) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_x_He0_trigger,double,0.995) /**< Switch for Helium full calculation during reco, raised from 0.99 to 0.995 for smoother Helium */ +class_precision_parameter(recfast_x_He0_trigger2,double,0.995) /**< Switch for Helium full calculation during reco, for changing Helium flag, raised from 0.985 to same as previous one for smoother Helium */ +class_precision_parameter(recfast_x_He0_trigger_delta,double,0.05) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_x_H0_trigger,double,0.995) /**< Switch for Hydrogen full calculation during reco, raised from 0.99 to 0.995 for smoother Hydrogen */ +class_precision_parameter(recfast_x_H0_trigger2,double,0.995) /**< Switch for Hydrogen full calculation during reco, for changing Hydrogen flag, raised from 0.98 to same as previous one for smoother Hydrogen */ +class_precision_parameter(recfast_x_H0_trigger_delta,double,0.05) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ + +class_precision_parameter(recfast_H_frac,double,1.0e-3) /**< from recfast 1.4, specifies the time at which the temperature evolution is calculated by the more precise equation */ + +class_precision_parameter(reionization_z_start_max,double,50.0) /**< Maximum starting value in z for reionization */ +class_precision_parameter(reionization_sampling,double,5.0e-2) /**< Sampling density in z during reionization */ +class_precision_parameter(reionization_optical_depth_tol,double,1.0e-4) /**< Relative tolerance on finding the user-given optical depth of reionization given a certain redshift of reionization */ +class_precision_parameter(reionization_start_factor,double,8.0) /**< Searching optical depth corresponding to the redshift is started from an initial offset beyond z_reionization_start, multiplied by reionization_width */ + +class_precision_parameter(thermo_rate_smoothing_radius,int,50) /**< Smoothing in redshift of the variation rate of \f$ \exp(-\kappa) \f$, g, and \f$ \frac{dg}{d\tau} \f$ that is used as a timescale afterwards */ + +class_string_parameter(hyrec_Alpha_inf_file,"/hyrec/Alpha_inf.dat","Alpha_inf hyrec file") /**< File containing the alpha parameter of hyrec */ +class_string_parameter(hyrec_R_inf_file,"/hyrec/R_inf.dat","R_inf hyrec file") /**< File containing the R_inf parameter of hyrec */ +class_string_parameter(hyrec_two_photon_tables_file,"/hyrec/two_photon_tables.dat","two_photon_tables hyrec file") /**< File containing the two-photon interaction parameter of hyrec */ + +class_precision_parameter(k_min_tau0,double,0.1) /**< number defining k_min for the computation of Cl's and P(k)'s (dimensionless): (k_min tau_0), usually chosen much smaller than one */ + +class_precision_parameter(k_max_tau0_over_l_max,double,2.4) /**< number defining k_max for the computation of Cl's (dimensionless): (k_max tau_0)/l_max, usually chosen around two */ +class_precision_parameter(k_step_sub,double,0.05) /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales inside sound horizon at decoupling */ +class_precision_parameter(k_step_super,double,0.002) /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales above sound horizon at decoupling */ +class_precision_parameter(k_step_transition,double,0.2) /**< dimensionless number regulating the transition from 'sub' steps to 'super' steps. Decrease for more precision. */ +class_precision_parameter(k_step_super_reduction,double,0.1) /**< the step k_step_super is reduced by this amount in the k-->0 limit (below scale of Hubble and/or curvature radius) */ + +class_precision_parameter(k_per_decade_for_pk,double,10.0) /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade outside the BAO region*/ + +class_precision_parameter(idmdr_boost_k_per_decade_for_pk,double,1.0) /**< boost factor for the case of DAO in idm-idr models */ + +class_precision_parameter(k_per_decade_for_bao,double,70.0) /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade inside the BAO region (for finer sampling)*/ + +class_precision_parameter(k_bao_center,double,3.0) /**< in ln(k) space, the central value of the BAO region where sampling is finer is defined as k_rec times this number (recommended: 3, i.e. finest sampling near 3rd BAO peak) */ + +class_precision_parameter(k_bao_width,double,4.0) /**< in ln(k) space, width of the BAO region where sampling is finer: this number gives roughly the number of BAO oscillations well resolved on both sides of the central value (recommended: 4, i.e. finest sampling from before first up to 3+4=7th peak) */ + +class_precision_parameter(start_small_k_at_tau_c_over_tau_h,double,0.0015) /**< largest wavelengths start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_largek_at_tau_c_over_tau_h equals this ratio. Decrease this value to start integrating the wavenumbers earlier in time. */ + +class_precision_parameter(start_large_k_at_tau_h_over_tau_k,double,0.07) /**< largest wavelengths start being sampled when mode is sufficiently outside Hubble scale. This is quantified in terms of the ratio of hubble time scale to wavenumber time scale, \f$ \tau_h/\tau_k \f$ which is roughly equal to (k*tau). Start when this ratio equals start_large_k_at_tau_k_over_tau_h. Decrease this value to start integrating the wavenumbers earlier in time. */ + +/** + * when to switch off tight-coupling approximation: first condition: + * \f$ \tau_c/\tau_H \f$ > tight_coupling_trigger_tau_c_over_tau_h. + * Decrease this value to switch off earlier in time. If this + * number is larger than start_sources_at_tau_c_over_tau_h, the code + * returns an error, because the source computation requires + * tight-coupling to be switched off. + */ +class_precision_parameter(tight_coupling_trigger_tau_c_over_tau_h,double,0.015) + +/** + * when to switch off tight-coupling approximation: + * second condition: \f$ \tau_c/\tau_k \equiv k \tau_c \f$ < + * tight_coupling_trigger_tau_c_over_tau_k. + * Decrease this value to switch off earlier in time. + */ +class_precision_parameter(tight_coupling_trigger_tau_c_over_tau_k,double,0.01) + +class_precision_parameter(start_sources_at_tau_c_over_tau_h,double,0.008) /**< sources start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_sources_at_tau_c_over_tau_h equals this ratio. Decrease this value to start sampling the sources earlier in time. */ + +class_precision_parameter(tight_coupling_approximation,int,(int)compromise_CLASS) /**< method for tight coupling approximation */ + +class_precision_parameter(idm_dr_tight_coupling_trigger_tau_c_over_tau_k,double,0.01) /**< when to switch off the dark-tight-coupling approximation, first condition (see normal tca for full definition) */ +class_precision_parameter(idm_dr_tight_coupling_trigger_tau_c_over_tau_h,double,0.015) /**< when to switch off the dark-tight-coupling approximation, second condition (see normal tca for full definition) */ + +class_precision_parameter(l_max_g,int,12) /**< number of momenta in Boltzmann hierarchy for photon temperature (scalar), at least 4 */ +class_precision_parameter(l_max_pol_g,int,10) /**< number of momenta in Boltzmann hierarchy for photon polarization (scalar), at least 4 */ +class_precision_parameter(l_max_dr,int,17) /**< number of momenta in Boltzmann hierarchy for decay radiation, at least 4 */ +class_precision_parameter(l_max_ur,int,17) /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ +class_precision_parameter(l_max_idr,int,17) /**< number of momenta in Boltzmann hierarchy for interacting dark radiation */ +class_precision_parameter(l_max_ncdm,int,17) /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ +class_precision_parameter(l_max_g_ten,int,5) /**< number of momenta in Boltzmann hierarchy for photon temperature (tensor), at least 4 */ +class_precision_parameter(l_max_pol_g_ten,int,5) /**< number of momenta in Boltzmann hierarchy for photon polarization (tensor), at least 4 */ + +class_precision_parameter(curvature_ini,double,1.0) /**< initial condition for curvature for adiabatic */ +class_precision_parameter(entropy_ini,double,1.0) /**< initial condition for entropy perturbation for isocurvature */ +class_precision_parameter(gw_ini,double,1.0) /**< initial condition for tensor metric perturbation h */ + +/** + * default step \f$ d \tau \f$ in perturbation integration, in units of the timescale involved in the equations (usually, the min of \f$ 1/k \f$, \f$ 1/aH \f$, \f$ 1/\dot{\kappa} \f$) + */ +class_precision_parameter(perturb_integration_stepsize,double,0.5) + +/** + * default step \f$ d \tau \f$ for sampling the source function, in units of the timescale involved in the sources: \f$ (\dot{\kappa}- \ddot{\kappa}/\dot{\kappa})^{-1} \f$ + */ +class_precision_parameter(perturb_sampling_stepsize,double,0.1) + +/** + * control parameter for the precision of the perturbation integration, + * IMPORTANT FOR SETTING THE STEPSIZE OF NDF15 + */ +class_precision_parameter(tol_perturb_integration,double,1.0e-5) + +/** + * cutoff relevant for controlling stiffness in the PPF scheme. It is + * neccessary for the Runge-Kutta evolver, but not for ndf15. However, + * the approximation is excellent for a cutoff value of 1000, so we + * leave it on for both evolvers. (CAMB uses a cutoff value of 30.) + */ +class_precision_parameter(c_gamma_k_H_square_max,double,1.0e3) + +/** + * precision with which the code should determine (by bisection) the + * times at which sources start being sampled, and at which + * approximations must be switched on/off (units of Mpc) + */ +class_precision_parameter(tol_tau_approx,double,1.0e-10) + +/** + * method for switching off photon perturbations + */ +class_precision_parameter(radiation_streaming_approximation,int,rsa_MD_with_reio) + +/** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and thtau, set + * shear and higher momenta to zero): + * first condition: \f$ k \tau \f$ > radiation_streaming_trigger_tau_h_over_tau_k + */ +class_precision_parameter(radiation_streaming_trigger_tau_over_tau_k,double,45.0) + +/** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and theta, set + * shear and higher momenta to zero): + * second condition: + */ +class_precision_parameter(radiation_streaming_trigger_tau_c_over_tau,double,5.0) + +class_precision_parameter(idr_streaming_approximation,int,rsa_idr_none) /**< method for dark radiation free-streaming approximation */ +class_precision_parameter(idr_streaming_trigger_tau_over_tau_k,double,50.0) /**< when to switch on dark radiation (idr) free-streaming approximation, first condition */ +class_precision_parameter(idr_streaming_trigger_tau_c_over_tau,double,10.0) /**< when to switch on dark radiation (idr) free-streaming approximation, second condition */ + +class_precision_parameter(ur_fluid_approximation,int,ufa_CLASS) /**< method for ultra relativistic fluid approximation */ + +/** + * when to switch off ur (massless neutrinos / ultra-relativistic + * relics) fluid approximation + */ +class_precision_parameter(ur_fluid_trigger_tau_over_tau_k,double,30.0) + +class_precision_parameter(ncdm_fluid_approximation,int,ncdmfa_CLASS) /**< method for non-cold dark matter fluid approximation */ + +/** + * when to switch off ncdm (massive neutrinos / non-cold + * relics) fluid approximation + */ +class_precision_parameter(ncdm_fluid_trigger_tau_over_tau_k,double,31.0) + +/** + * whether CMB source functions can be approximated as zero when + * visibility function g(tau) is tiny + */ +class_precision_parameter(neglect_CMB_sources_below_visibility,double,1.0e-3) + +/** + * The type of evolver to use: options are ndf15 or rk + */ +class_type_parameter(evolver,int,enum evolver_type,ndf15) + +/* + * Primordial parameters + * */ + + +class_precision_parameter(k_per_decade_primordial,double,10.0) /**< logarithmic sampling for primordial spectra (number of points per decade in k space) */ + +class_precision_parameter(primordial_inflation_ratio_min,double,100.0) /**< for each k, start following wavenumber when aH = k/primordial_inflation_ratio_min */ +class_precision_parameter(primordial_inflation_ratio_max,double,1.0/50.0) /**< for each k, stop following wavenumber, at the latest, when aH = k/primordial_inflation_ratio_max */ +class_precision_parameter(primordial_inflation_phi_ini_maxit,int,10000) /**< maximum number of iteration when searching a suitable initial field value phi_ini (value reached when no long-enough slow-roll period before the pivot scale) */ +class_precision_parameter(primordial_inflation_pt_stepsize,double,0.01) /**< controls the integration timestep for inflaton perturbations */ +class_precision_parameter(primordial_inflation_bg_stepsize,double,0.005) /**< controls the integration timestep for inflaton background */ +class_precision_parameter(primordial_inflation_tol_integration,double,1.0e-3) /**< controls the precision of the ODE integration during inflation */ +class_precision_parameter(primordial_inflation_attractor_precision_pivot,double,0.001) /**< targeted precision when searching attractor solution near phi_pivot */ +class_precision_parameter(primordial_inflation_attractor_precision_initial,double,0.1) /**< targeted precision when searching attractor solution near phi_ini */ +class_precision_parameter(primordial_inflation_attractor_maxit,int,10) /**< maximum number of iteration when searching attractor solution */ +class_precision_parameter(primordial_inflation_tol_curvature,double,1.0e-3) /**< for each k, stop following wavenumber, at the latest, when curvature perturbation R is stable up to to this tolerance */ +class_precision_parameter(primordial_inflation_aH_ini_target,double,0.9) /**< control the step size in the search for a suitable initial field value */ +class_precision_parameter(primordial_inflation_end_dphi,double,1.0e-10) /**< first bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ +class_precision_parameter(primordial_inflation_end_logstep,double,10.0) /**< logarithmic step for updating the bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ +class_precision_parameter(primordial_inflation_small_epsilon,double,0.1) /**< value of slow-roll parameter epsilon used to define a field value phi_end close to the end of inflation (doesn't need to be exactly at the end): epsilon(phi_end)=small_epsilon (should be smaller than one) */ +class_precision_parameter(primordial_inflation_small_epsilon_tol,double,0.01) /**< tolerance in the search for phi_end */ +class_precision_parameter(primordial_inflation_extra_efolds,double,2.0) /**< a small number of efolds, irrelevant at the end, used in the search for the pivot scale (backward from the end of inflation) */ + +/* + * Transfer function parameters + * */ + + +class_precision_parameter(l_linstep,int,40) /**< factor for logarithmic spacing of values of l over which bessel and transfer functions are sampled */ + +class_precision_parameter(l_logstep,double,1.12) /**< maximum spacing of values of l over which Bessel and transfer functions are sampled (so, spacing becomes linear instead of logarithmic at some point) */ + +class_precision_parameter(hyper_x_min,double,1.0e-5) /**< flat case: lower bound on the smallest value of x at which we sample \f$ \Phi_l^{\nu}(x)\f$ or \f$ j_l(x)\f$ */ +class_precision_parameter(hyper_sampling_flat,double,8.0) /**< flat case: number of sampled points x per approximate wavelength \f$ 2\pi \f$, should remain >7.5 */ +class_precision_parameter(hyper_sampling_curved_low_nu,double,7.0) /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ smaller than hyper_nu_sampling_step */ +class_precision_parameter(hyper_sampling_curved_high_nu,double,3.0) /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ greater than hyper_nu_sampling_step */ +class_precision_parameter(hyper_nu_sampling_step,double,1000.0) /**< open/closed cases: value of nu at which sampling changes */ +class_precision_parameter(hyper_phi_min_abs,double,1.0e-10) /**< small value of Bessel function used in calculation of first point x (\f$ \Phi_l^{\nu}(x) \f$ equals hyper_phi_min_abs) */ +class_precision_parameter(hyper_x_tol,double,1.0e-4) /**< tolerance parameter used to determine first value of x */ +class_precision_parameter(hyper_flat_approximation_nu,double,4000.0) /**< value of nu below which the flat approximation is used to compute Bessel function */ + +class_precision_parameter(q_linstep,double,0.45) /**< asymptotic linear sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_rec) \f$ + (comoving angular diameter distance to + recombination), very important for CMB */ + +class_precision_parameter(q_logstep_spline,double,170.0) /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec})\f$ + (comoving angular diameter distance to + recombination), very important for CMB and LSS */ + +class_precision_parameter(q_logstep_open,double,6.0) /**< in open models, the value of + q_logstep_spline must be decreased + according to curvature. Increasing + this number will make the calculation + more accurate for large positive + Omega_k */ + +class_precision_parameter(q_logstep_trapzd,double,20.0) /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec}) \f$ + (comoving angular diameter distance to + recombination), in the case of small + q's in the closed case, for which one + must used trapezoidal integration + instead of spline (the number of q's + for which this is the case decreases + with curvature and vanishes in the + flat limit) */ + +class_precision_parameter(q_numstep_transition,double,250.0) /**< number of steps for the transition + from q_logstep_trapzd steps to + q_logstep_spline steps (transition + must be smooth for spline) */ + +class_precision_parameter(transfer_neglect_delta_k_S_t0,double,0.15) /**< for temperature source function T0 of scalar mode, range of k values (in 1/Mpc) taken into account in transfer function: for l < (k-delta_k)*tau0, ie for k > (l/tau0 + delta_k), the transfer function is set to zero */ +class_precision_parameter(transfer_neglect_delta_k_S_t1,double,0.04) /**< same for temperature source function T1 of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_S_t2,double,0.15) /**< same for temperature source function T2 of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_S_e,double,0.11) /**< same for polarization source function E of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_V_t1,double,1.0) /**< same for temperature source function T1 of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_t2,double,1.0) /**< same for temperature source function T2 of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_e,double,1.0) /**< same for polarization source function E of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_b,double,1.0) /**< same for polarization source function B of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_T_t2,double,0.2) /**< same for temperature source function T2 of tensor mode */ +class_precision_parameter(transfer_neglect_delta_k_T_e,double,0.25) /**< same for polarization source function E of tensor mode */ +class_precision_parameter(transfer_neglect_delta_k_T_b,double,0.1) /**< same for polarization source function B of tensor mode */ + +class_precision_parameter(transfer_neglect_late_source,double,400.0) /**< value of l below which the CMB source functions can be neglected at late time, excepted when there is a Late ISW contribution */ + +class_precision_parameter(l_switch_limber,double,10.) /**< when to use the Limber approximation for project gravitational potential cl's */ +// For density Cl, we recommend not to use the Limber approximation +// at all, and hence to put here a very large number (e.g. 10000); but +// if you have wide and smooth selection functions you may wish to +// use it; then 100 might be OK +class_precision_parameter(l_switch_limber_for_nc_local_over_z,double,100.0) /**< when to use the Limber approximation for local number count contributions to cl's (relative to central redshift of each bin) */ +// For terms integrated along the line-of-sight involving spherical +// Bessel functions (but not their derivatives), Limber +// approximation works well. High precision can be reached with 2000 +// only. But if you have wide and smooth selection functions you may +// reduce to e.g. 30. +class_precision_parameter(l_switch_limber_for_nc_los_over_z,double,30.0) /**< when to use the Limber approximation for number count contributions to cl's integrated along the line-of-sight (relative to central redshift of each bin) */ + +class_precision_parameter(selection_cut_at_sigma,double,5.0)/**< in sigma units, where to cut gaussian selection functions */ +class_precision_parameter(selection_sampling,double,50.0) /**< controls sampling of integral over time when selection functions vary quicker than Bessel functions. Increase for better sampling. */ +class_precision_parameter(selection_sampling_bessel,double,20.0)/**< controls sampling of integral over time when selection functions vary slower than Bessel functions. Increase for better sampling. IMPORTANT for lensed contributions. */ +class_precision_parameter(selection_sampling_bessel_los,double,ppr->selection_sampling_bessel)/**< controls sampling of integral over time when selection functions vary slower than Bessel functions. This parameter is specific to number counts contributions to Cl integrated along the line of sight. Increase for better sampling */ +class_precision_parameter(selection_tophat_edge,double,0.1) /**< controls how smooth are the edge of top-hat window function (<<1 for very sharp, 0.1 for sharp) */ + +/* + * Nonlinear module precision parameters + * */ + +class_precision_parameter(sigma_k_per_decade,double,80.) /**< logarithmic stepsize controlling the precision of integrals for sigma(R,k) and similar quantitites */ + +class_precision_parameter(nonlinear_min_k_max,double,20.0) /**< when + using an algorithm to compute nonlinear + corrections, like halofit or hmcode, + k_max must be at least equal to this + value. Calculations are done internally + until this k_max, but the P(k,z) output + is still controlled by P_k_max_1/Mpc or + P_k_max_h/Mpc even if they are + smaller */ + +/** parameters relevant for HALOFIT computation */ + +class_precision_parameter(halofit_min_k_nonlinear,double,1.0e-4)/**< value of k in 1/Mpc below which non-linear corrections will be neglected */ + +class_precision_parameter(halofit_min_k_max,double,5.0) /**< DEPRECATED: should use instead nonlinear_min_k_max */ + +class_precision_parameter(halofit_k_per_decade,double,80.0) /**< halofit needs to evalute integrals + (linear power spectrum times some + kernels). They are sampled using + this logarithmic step size. */ + +class_precision_parameter(halofit_sigma_precision,double,0.05) /**< a smaller value will lead to a + more precise halofit result at the *highest* + redshift at which halofit can make computations, + at the expense of requiring a larger k_max; but + this parameter is not relevant for the + precision on P_nl(k,z) at other redshifts, so + there is normally no need to change it */ + +class_precision_parameter(halofit_tol_sigma,double,1.0e-6) /**< tolerance required on sigma(R) when + matching the condition sigma(R_nl)=1, + whcih defines the wavenumber of + non-linearity, k_nl=1./R_nl */ + +class_precision_parameter(pk_eq_z_max,double,5.0) /**< Maximum z for the pk_eq method */ +class_precision_parameter(pk_eq_tol,double,1.0e-7) /**< Tolerance on the pk_eq method for finding the pk */ + +/** Parameters relevant for HMcode computation */ + +class_precision_parameter(hmcode_max_k_extra,double,1.e6) /**< parameter specifying the maximum k value for + the extrapolation of the linear power spectrum + (needed for the sigma computation) */ + +class_precision_parameter(hmcode_min_k_max,double,5.) /**< DEPRECATED: should use instead nonlinear_min_k_max */ + +class_precision_parameter(hmcode_tol_sigma,double,1.e-6) /**< tolerance required on sigma(R) when matching the + condition sigma(R_nl)=1, which defines the wavenumber + of non-linearity, k_nl=1./R_nl */ + +/** + * parameters controlling stepsize and min/max r & a values for + * sigma(r) & grow table + */ +class_precision_parameter(n_hmcode_tables,int,64) +class_precision_parameter(rmin_for_sigtab,double,1.e-5) +class_precision_parameter(rmax_for_sigtab,double,1.e3) +class_precision_parameter(ainit_for_growtab,double,1.e-3) +class_precision_parameter(amax_for_growtab,double,1.) + +/** + * parameters controlling stepsize and min/max halomass values for the + * 1-halo-power integral + */ +class_precision_parameter(nsteps_for_p1h_integral,int,256) +class_precision_parameter(mmin_for_p1h_integral,double,1.e3) +class_precision_parameter(mmax_for_p1h_integral,double,1.e18) + + +/* + * Lensing precision parameters + * */ + +class_precision_parameter(accurate_lensing,int,_FALSE_) /**< switch between Gauss-Legendre quadrature integration and simple quadrature on a subdomain of angles */ +class_precision_parameter(num_mu_minus_lmax,int,70) /**< difference between num_mu and l_max, increase for more precision */ +class_precision_parameter(delta_l_max,int,500)/**< difference between l_max in unlensed and lensed spectra */ +class_precision_parameter(tol_gauss_legendre,double,ppr->smallest_allowed_variation) /**< tolerance with which quadrature points are found: must be very small for an accurate integration (if not entered manually, set automatically to match machine precision) */ + +#undef class_precision_parameter +#undef class_string_parameter +#undef class_type_parameter diff --git a/class/include/primordial.h b/class/include/primordial.h old mode 100644 new mode 100755 diff --git a/class/include/quadrature.h b/class/include/quadrature.h index 4927d352..19aed33f 100644 --- a/class/include/quadrature.h +++ b/class/include/quadrature.h @@ -10,6 +10,8 @@ /******************************************/ #include "common.h" +enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz}; + /* Structures for QSS */ typedef struct adaptive_integration_tree_node{ @@ -39,6 +41,16 @@ typedef struct adaptive_integration_tree_node{ int (*function)(void * params_for_function, double q, double *f0), void * params_for_function, ErrorMsg errmsg); + int get_qsampling_manual(double *x, + double *w, + int N, + double qmax, + enum ncdm_quadrature_method method, + double *qvec, + int qsiz, + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg); int sort_x_and_w(double *x, double *w, double *workx, double *workw, int startidx, int endidx); int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite); diff --git a/class/include/sparse.h b/class/include/sparse.h old mode 100644 new mode 100755 diff --git a/class/include/spectra.h b/class/include/spectra.h old mode 100644 new mode 100755 index 5b41cda9..e7d4febd --- a/class/include/spectra.h +++ b/class/include/spectra.h @@ -25,7 +25,6 @@ struct spectra { double z_max_pk; /**< maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today */ - int non_diag; /**< sets the number of cross-correlation spectra that you want to calculate: 0 means only auto-correlation, 1 means only adjacent bins, @@ -117,111 +116,22 @@ struct spectra { double ** cl; /**< table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] */ double ** ddcl; /**< second derivatives of previous table with respect to l, in view of spline interpolation */ - double alpha_II_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - double alpha_RI_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - double alpha_RR_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - - double alpha_II_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - double alpha_RI_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - double alpha_RR_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - - double alpha_II_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - double alpha_RI_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - double alpha_RR_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - - double alpha_II_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - double alpha_RI_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - double alpha_RR_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - - double alpha_kp; /**< parameter describing adiabatic versus isocurvature contribution at pivot scale (see Planck parameter papers) */ - double alpha_k1; /**< parameter describing adiabatic versus isocurvature contribution at scale k1 (see Planck parameter papers) */ - double alpha_k2; /**< parameter describing adiabatic versus isocurvature contribution at scale k2 (see Planck parameter papers) */ - - //@} - - /** @name - table of pre-computed matter power spectrum P(k) values, and related quantities */ - - //@{ - - int ln_k_size; /**< number ln(k) values */ - double * ln_k; /**< list of ln(k) values ln_k[index_k] */ - - int ln_tau_size; /**< number ln(tau) values (only one if z_max_pk = 0) */ - double * ln_tau; /**< list of ln(tau) values ln_tau[index_tau] */ - - double * ln_pk; /**< Matter power spectrum. - depends on indices index_md, index_ic1, index_ic2, index_k, index_tau as: - ln_pk[(index_tau * psp->k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] - where index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since - the primordial spectrum is symmetric in (index_ic1, index_ic2)). - - for diagonal elements (index_ic1 = index_ic2) this arrays contains - ln[P(k)] where P(k) is positive by construction. - - for non-diagonal elements this arrays contains the k-dependent - cosine of the correlation angle, namely - P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] - This choice is convenient since the sign of the non-diagonal cross-correlation - is arbitrary. For fully correlated or anti-correlated initial conditions, - this non-diagonal element is independent on k, and equal to +1 or -1. - */ - - double * ddln_pk; /**< second derivative of above array with respect to log(tau), for spline interpolation. So: - - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is - good since this function is usually smooth. - - for non-diagonal coefficients, we spline - P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] - vs. ln(k), which is fine since this quantity is often assumed to be - constant (e.g for fully correlated/anticorrelated initial conditions) - or nearly constant, and with arbitrary sign. - */ - - double sigma8; /**< sigma8 parameter */ - - double * ln_pk_nl; /**< Non-linear matter power spectrum. - depends on indices index_k, index_tau as: - ln_pk_nl[index_tau * psp->k_size + index_k] - */ - double * ddln_pk_nl; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ - - int index_tr_delta_g; /**< index of gamma density transfer function */ - int index_tr_delta_b; /**< index of baryon density transfer function */ - int index_tr_delta_cdm; /**< index of cold dark matter density transfer function */ - int index_tr_delta_dcdm; /**< index of decaying cold dark matter density transfer function */ - int index_tr_delta_scf; /**< index of scalar field phi transfer function */ - int index_tr_delta_fld; /**< index of dark energy fluid density transfer function */ - int index_tr_delta_ur; /**< index of ultra-relativistic neutrinos/relics density transfer function */ - int index_tr_delta_dr; /**< index of decay radiation density transfer function */ - int index_tr_delta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) density transfer function */ - int index_tr_delta_tot; /**< index of total matter density transfer function */ - int index_tr_theta_g; /**< index of gamma velocity transfer function */ - int index_tr_theta_b; /**< index of baryon velocity transfer function */ - int index_tr_theta_cdm; /**< index of cold dark matter velocity transfer function */ - int index_tr_theta_dcdm; /**< index of decaying cold dark matter velocity transfer function */ - int index_tr_theta_scf; /**< index of derivative of scalar field phi transfer function */ - int index_tr_theta_fld; /**< index of dark energy fluid velocity transfer function */ - int index_tr_theta_ur; /**< index of ultra-relativistic neutrinos/relics velocity transfer function */ - int index_tr_theta_dr; /**< index of decay radiation velocity transfer function */ - int index_tr_theta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) velocity transfer function */ - int index_tr_theta_tot; /**< index of total matter velocity transfer function */ - int index_tr_phi; /**< index of Bardeen potential phi */ - int index_tr_psi; /**< index of Bardeen potential psi */ - int tr_size; /**< total number of species in transfer functions */ - - double * matter_transfer; /**< Matter transfer functions. - Depends on indices index_md,index_tau,index_ic,index_k, index_tr as: - matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] - */ - double * ddmatter_transfer; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ - - /* double * LddCl; /\**< density Cl's in the Limber plus thin shell approximation (then, there are no non-diagonal correlations between various shells of different redshifts); depends on index_tau,index_l as: LddCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ - - /* double * LTdCl; /\**< cross (temperature * density) Cl's in the Limber plus thin shell approximation; depends on index_tau,index_l as: LTdCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ - //@} /** @name - technical parameters */ //@{ + struct nonlinear * pnl; /**< a pointer to the nonlinear structure is + stored in the spectra structure. This odd, + unusual and unelegant feature has been + introduced in v2.8 in order to keep in use + some deprecated functions spectra_pk_...() + that are now pointing at new function + nonlinear_pk_...(). In the future, if the + deprecated functions are removed, it will + be possible to remove also this pointer. */ + short spectra_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ ErrorMsg error_message; /**< zone for writing error messages */ @@ -238,14 +148,7 @@ struct spectra { extern "C" { #endif - int spectra_bandpower( - struct spectra * psp, - int l1, - int l2, - double * TT_II, - double * TT_RI, - double * TT_RR - ); + /* external functions (meant to be called from other modules) */ int spectra_cl_at_l( struct spectra * psp, @@ -255,56 +158,7 @@ extern "C" { double ** cl_md_ic ); - int spectra_pk_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot, - double * output_ic - ); - - int spectra_pk_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk, - double * pk_ic - ); - - int spectra_pk_nl_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot - ); - - int spectra_pk_nl_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot - ); - - int spectra_tk_at_z( - struct background * pba, - struct spectra * psp, - double z, - double * output - ); - - int spectra_tk_at_k_and_z( - struct background * pba, - struct spectra * psp, - double k, - double z, - double * output - ); + /* internal functions */ int spectra_init( struct precision * ppr, @@ -356,16 +210,64 @@ extern "C" { int spectra_k_and_tau( struct background * pba, struct perturbs * ppt, + struct nonlinear *pnl, struct spectra * psp ); - int spectra_pk( - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct spectra * psp - ); + /* deprecated functions (since v2.8) */ + + int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, + double * output_ic, + double * output_cb_tot, + double * output_cb_ic + ); + + int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk, + double * pk_ic, + double * pk_cb, + double * pk_cb_ic + ); + + int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, + double * output_cb_tot + ); + + int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, + double * pk_cb_tot + ); + + int spectra_fast_pk_at_kvec_and_zvec( + struct background * pba, + struct spectra * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, + double * pk_cb_tot_out, + int nonlinear); int spectra_sigma( struct background * pba, @@ -376,32 +278,33 @@ extern "C" { double *sigma ); - int spectra_matter_transfers( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ); + int spectra_sigma_cb( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double *sigma_cb + ); - int spectra_output_tk_titles(struct background *pba, - struct perturbs *ppt, - enum file_format output_format, - char titles[_MAXTITLESTRINGLENGTH_] - ); + /* deprecated functions (since v2.1) */ + + int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output + ); + + int spectra_tk_at_k_and_z( + struct background * pba, + struct spectra * psp, + double k, + double z, + double * output + ); - int spectra_output_tk_data( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp, - enum file_format output_format, - double z, - int number_of_titles, - double *data - ); - - int spectra_firstline_and_ic_suffix(struct perturbs *ppt, - int index_ic, - char first_line[_LINE_LENGTH_MAX_], - FileName ic_suffix); + /* end deprecated functions */ #ifdef __cplusplus } diff --git a/class/include/thermodynamics.h b/class/include/thermodynamics.h index e416c78c..13d32cd4 100644 --- a/class/include/thermodynamics.h +++ b/class/include/thermodynamics.h @@ -26,7 +26,8 @@ enum reionization_parametrization { reio_camb, /**< reionization parameterized like in CAMB */ reio_bins_tanh, /**< binned reionization history with tanh inteprolation between bins */ reio_half_tanh, /**< half a tanh, instead of the full tanh */ - reio_many_tanh /**< similar to reio_camb but with more than one tanh */ + reio_many_tanh, /**< similar to reio_camb but with more than one tanh */ + reio_inter /**< linear interpolation between specified points */ }; /** @@ -98,7 +99,7 @@ struct thermo double binned_reio_step_sharpness; /**< sharpness of tanh() step interpolating between binned values */ - /** parameters for reio_many_tanh */ + /** parameters for reio_many_tanh */ int many_tanh_num; /**< with how many jumps do we want to describe reionization? */ @@ -108,15 +109,23 @@ struct thermo double many_tanh_width; /**< sharpness of tanh() steps */ + /** parameters for reio_inter */ + + int reio_inter_num; /**< with how many jumps do we want to describe reionization? */ + + double * reio_inter_z; /**< discrete z values */ + + double * reio_inter_xe; /**< discrete \f$ X_e(z)\f$ values */ + /** parameters for energy injection */ - double annihilation; /** parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + double annihilation; /**< parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ - short has_on_the_spot; /** flag to specify if we want to use the on-the-spot approximation **/ + short has_on_the_spot; /**< flag to specify if we want to use the on-the-spot approximation **/ - double decay; /** parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ + double decay; /**< parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ - double annihilation_variation; /** if this parameter is non-zero, + double annihilation_variation; /**< if this parameter is non-zero, the function F(z)=(f / m_cdm)(z) will be a parabola in log-log scale between zmin and @@ -126,21 +135,26 @@ struct thermo zmax; it will be constant outside this range */ - double annihilation_z; /** if annihilation_variation is non-zero, + double annihilation_z; /**< if annihilation_variation is non-zero, this is the value of z at which the parameter annihilation is defined, i.e. F(annihilation_z)=annihilation */ - double annihilation_zmax; /** if annihilation_variation is non-zero, + double annihilation_zmax; /**< if annihilation_variation is non-zero, redshift above which annihilation rate is maximal */ - double annihilation_zmin; /** if annihilation_variation is non-zero, + double annihilation_zmin; /**< if annihilation_variation is non-zero, redshift below which annihilation rate is constant */ - double annihilation_f_halo; /** takes the contribution of DM annihilation in halos into account*/ - double annihilation_z_halo; /** characteristic redshift for DM annihilation in halos*/ + double annihilation_f_halo; /**< takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /**< characteristic redshift for DM annihilation in halos*/ + + double a_idm_dr; /**< strength of the coupling between interacting dark matter and interacting dark radiation (idm-idr) */ + double b_idr; /**< strength of the self coupling for interacting dark radiation (idr-idr) */ + double nindex_idm_dr; /**< temperature dependence of the interaction between dark matter and dark radiation */ + double m_idm; /**< interacting dark matter mass */ //@} @@ -153,12 +167,22 @@ struct thermo int index_th_tau_d; /**< Baryon drag optical depth */ int index_th_ddkappa; /**< scattering rate derivative \f$ d^2 \kappa / d \tau^2 \f$ */ int index_th_dddkappa; /**< scattering rate second derivative \f$ d^3 \kappa / d \tau^3 \f$ */ - int index_th_exp_m_kappa; /**< \f$ exp^{-\kappa} \f$ */ + int index_th_exp_m_kappa; /**< \f$ exp^{-\kappa} \f$ */ int index_th_g; /**< visibility function \f$ g = (d \kappa / d \tau) * exp^{-\kappa} \f$ */ int index_th_dg; /**< visibility function derivative \f$ (d g / d \tau) \f$ */ int index_th_ddg; /**< visibility function second derivative \f$ (d^2 g / d \tau^2) \f$ */ + int index_th_dmu_idm_dr; /**< scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1/Mpc) */ + int index_th_ddmu_idm_dr; /**< derivative of this scattering rate */ + int index_th_dddmu_idm_dr; /**< second derivative of this scattering rate */ + int index_th_dmu_idr; /**< idr self-interaction rate */ + int index_th_tau_idm_dr; /**< optical depth of idm_dr (due to interactions with idr) */ + int index_th_tau_idr; /**< optical depth of idr (due to self-interactions) */ + int index_th_g_idm_dr; /**< visibility function of idm_idr */ + int index_th_cidm_dr2; /**< interacting dark matter squared sound speed \f$ c_{dm}^2 \f$ */ + int index_th_Tidm_dr; /**< temperature of DM interacting with DR \f$ T_{idm_dr} \f$ */ int index_th_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_th_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_th_wb; /**< baryon equation of state parameter \f$ w_b = k_B T_b / \mu \f$ */ + int index_th_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_th_dcb2; /**< derivative wrt conformal time of squared baryon sound speed \f$ d [c_b^2] / d \tau \f$ (only computed if some non-minimal tight-coupling schemes is requested) */ int index_th_ddcb2; /**< second derivative wrt conformal time of squared baryon sound speed \f$ d^2 [c_b^2] / d \tau^2 \f$ (only computed if some non0-minimal tight-coupling schemes is requested) */ int index_th_rate; /**< maximum variation rate of \f$ exp^{-\kappa}\f$, g and \f$ (d g / d \tau) \f$, used for computing integration step in perturbation module */ @@ -186,7 +210,7 @@ struct thermo //@} - /** @name - redshift, conformal time and sound horizon at recombination */ + /** @name - characteristic quantities like redshift, conformal time and sound horizon at recombination */ //@{ @@ -197,20 +221,24 @@ struct thermo double ra_rec; /**< conformal angular diameter distance to recombination */ double da_rec; /**< physical angular diameter distance to recombination */ double rd_rec; /**< comoving photon damping scale at recombination */ + + double z_star; /**< redshift at which photon optical depth crosses one */ + double tau_star;/**< confirmal time at which photon optical depth crosses one */ + double rs_star; /**< comoving sound horizon at z_star */ + double ds_star; /**< physical sound horizon at z_star */ + double ra_star; /**< conformal angular diameter distance to z_star */ + double da_star; /**< physical angular diameter distance to z_star */ + double rd_star; /**< comoving photon damping scale at z_star */ + double z_d; /**< baryon drag redshift */ double tau_d; /**< baryon drag time */ double ds_d; /**< physical sound horizon at baryon drag */ double rs_d; /**< comoving sound horizon at baryon drag */ + double tau_cut; /**< at at which the visibility goes below a fixed fraction of the maximum visibility, used for an approximation in perturbation module */ double angular_rescaling; /**< [ratio ra_rec / (tau0-tau_rec)]: gives CMB rescaling in angular space relative to flat model (=1 for curvature K=0) */ - - //@} - - /** @name - redshift, conformal time and sound horizon at recombination */ - - //@{ - - double tau_free_streaming; /**< minimum value of tau at which sfree-streaming approximation can be switched on */ + double tau_free_streaming; /**< minimum value of tau at which free-streaming approximation can be switched on */ + double tau_idr_free_streaming; /**< trigger for dark radiation free streaming approximation (idm-idr) */ //@} @@ -269,7 +297,8 @@ struct recombination { int index_re_z; /**< redshift \f$ z \f$ */ int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_wb; /**< baryon equation of state parameter \f$ w_b \f$ */ + int index_re_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau \f$ (units 1/Mpc) */ int re_size; /**< size of this vector */ @@ -363,7 +392,8 @@ struct reionization { int index_re_z; /**< redshift \f$ z \f$ */ int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_wb; /**< baryon equation of state parameter \f$ w_b \f$ */ + int index_re_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau\f$ (units 1/Mpc) */ int index_re_dkappadz; /**< Thomson scattering rate with respect to redshift \f$ d \kappa / d z\f$ (units 1/Mpc) */ int index_re_d3kappadz3; /**< second derivative of previous quantity with respect to redshift */ @@ -403,7 +433,7 @@ struct reionization { int index_helium_fullreio_redshift; /**< helium full reionization redshift */ int index_helium_fullreio_width; /**< a width defining the duration of helium full reionization in the reio_camb scheme */ - /* parameters used by reio_bins_tanh and reio_many_tanh */ + /* parameters used by reio_bins_tanh, reio_many_tanh, reio_inter */ int reio_num_z; /**< number of reionization jumps */ int index_reio_first_z; /**< redshift at which we start to impose reionization function */ @@ -479,10 +509,11 @@ extern "C" { ); int thermodynamics_indices( - struct thermo * pthermo, - struct recombination * preco, - struct reionization * preio - ); + struct background * pba, + struct thermo * pthermo, + struct recombination * preco, + struct reionization * preio + ); int thermodynamics_helium_from_bbn( struct precision * ppr, @@ -574,6 +605,7 @@ extern "C" { int thermodynamics_merge_reco_and_reio( struct precision * ppr, + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio diff --git a/class/include/transfer.h b/class/include/transfer.h old mode 100644 new mode 100755 index cccb4b81..cd59231f --- a/class/include/transfer.h +++ b/class/include/transfer.h @@ -11,7 +11,45 @@ /* macro: test if index_tt is in the range between index and index+num, while the flag is true */ #define _index_tt_in_range_(index,num,flag) (flag == _TRUE_) && (index_tt >= index) && (index_tt < index+num) - +/* macro: test if index_tt corresponds to an integrated nCl/sCl contribution */ +#define _integrated_ncl_ (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) +/* macro: test if index_tt corresponds to an non-integrated nCl/sCl contribution */ +#define _nonintegrated_ncl_ (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || \ + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) +/* macro: bin number associated to particular redshift bin and selection function for non-integrated contributions*/ +#define _get_bin_nonintegrated_ncl_(index_tt) \ + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) \ + bin = index_tt - ptr->index_tt_density; \ + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_rsd; \ + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_d0; \ + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_d1; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g1; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g2; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g3; +/* macro: bin number associated to particular redshift bin and selection function for integrated contributions*/ +#define _get_bin_integrated_ncl_(index_tt) \ + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) \ + bin = index_tt - ptr->index_tt_lensing; \ + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) \ + bin = index_tt - ptr->index_tt_nc_lens; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g4; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g5; /** * Structure containing everything about transfer functions in * harmonic space \f$ \Delta_l^{X} (q) \f$ that other modules need to @@ -193,7 +231,7 @@ struct transfer_workspace { int tau_size; /**< number of discrete time values for a given type */ int tau_size_max; /**< maximum number of discrete time values for all types */ - double * interpolated_sources; /**< interpolated_sources[index_tau]: + double * interpolated_sources; /**< interpolated_sources[index_tau]: sources interpolated from the perturbation module at the right value of k */ @@ -390,6 +428,7 @@ extern "C" { double tau_rec, double *** sources, double *** sources_spline, + double * window, struct transfer_workspace * ptw ); @@ -423,6 +462,8 @@ extern "C" { int index_md, int index_tt, double * sources, + double * window, + int tau_size_max, double * tau0_minus_tau, double * delta_tau, int * tau_size_out @@ -665,6 +706,25 @@ extern "C" { int *index_l_right, ErrorMsg error_message); + int transfer_precompute_selection( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + int tau_size_max, + double ** window + ); + + int transfer_f_evo( + struct background* pba, + struct transfers * ptr, + double* pvecback, + int last_index, + double cotKgen, + double* f_evo + ); + #ifdef __cplusplus } #endif diff --git a/class/include/trigonometric_integrals.h b/class/include/trigonometric_integrals.h new file mode 100644 index 00000000..da82b53a --- /dev/null +++ b/class/include/trigonometric_integrals.h @@ -0,0 +1,33 @@ +/** + * definitions for module trigonometric_integrals.c + */ + +#ifndef __TRIGONOMETRIC_INTEGRALS__ +#define __TRIGONOMETRIC_INTEGRALS__ + +#include "common.h" + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int cosine_integral( + double x, + double *Ci, + ErrorMsg error_message + ); + + int sine_integral( + double x, + double *Si, + ErrorMsg error_message + ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/class/main/class.c b/class/main/class.c old mode 100644 new mode 100755 index aedb3aa6..dfee6647 --- a/class/main/class.c +++ b/class/main/class.c @@ -10,68 +10,16 @@ int main(int argc, char **argv) { struct background ba; /* for cosmological background */ struct thermo th; /* for thermodynamics */ struct perturbs pt; /* for source functions */ - struct transfers tr; /* for transfer functions */ struct primordial pm; /* for primordial spectra */ - struct spectra sp; /* for output spectra */ struct nonlinear nl; /* for non-linear spectra */ + struct transfers tr; /* for transfer functions */ + struct spectra sp; /* for output spectra */ struct lensing le; /* for lensed spectra */ struct output op; /* for output files */ ErrorMsg errmsg; /* for error messages */ - struct file_content fc; - - if (parser_init(&fc,15,"none",errmsg) == _FAILURE_){ - printf("\n\nparser_init\n=>%s\n",errmsg); - return _FAILURE_; - } - strcpy(fc.name[0],"h"); - strcpy(fc.value[0],"0.7"); - - strcpy(fc.name[1],"Omega_cdm"); - strcpy(fc.value[1],"0.25"); - - strcpy(fc.name[2],"Omega_b"); - strcpy(fc.value[2],"0.04"); - - strcpy(fc.name[3],"Omega_k"); - strcpy(fc.value[3],"0.0"); - - // set Omega_Lambda = 0.0 if w !=-1 - strcpy(fc.name[4],"Omega_Lambda"); - strcpy(fc.value[4],"0.0"); - - strcpy(fc.name[5],"w0_fld"); - strcpy(fc.value[5],"-.99"); - - strcpy(fc.name[6],"wa_fld"); - strcpy(fc.value[6],"0.0"); - - strcpy(fc.name[7],"n_s"); - strcpy(fc.value[7],"0.0"); - - strcpy(fc.name[8],"A_s"); - strcpy(fc.value[8],"2.215e-9"); - - strcpy(fc.name[9],"output"); - strcpy(fc.value[9],"mPk"); - - strcpy(fc.name[10],"non linear"); - strcpy(fc.value[10],"Halofit"); - - strcpy(fc.name[11],"P_k_max_1/Mpc"); - strcpy(fc.value[11],"100."); - - strcpy(fc.name[12],"z_max_pk"); - strcpy(fc.value[12],"10."); - - strcpy(fc.name[13],"modes"); - strcpy(fc.value[13],"s"); - - strcpy(fc.name[14],"lensing"); - strcpy(fc.value[14],"no"); - - if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { - printf("\n\nError running input_init\n=>%s\n",errmsg); + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); return _FAILURE_; } @@ -100,47 +48,42 @@ int main(int argc, char **argv) { return _FAILURE_; } - if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { - printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); - return _FAILURE_; - } - - if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { - printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); - return _FAILURE_; - } - double Z, ic; - int i = spectra_pk_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z,&ic); - printf("%e\n",Z); - i = spectra_pk_nl_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z); - printf("%e\n",Z); - - // if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { - // printf("\n\nError in lensing_init \n=>%s\n",le.error_message); - // return _FAILURE_; - // } - - // if (output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) == _FAILURE_) { - // printf("\n\nError in output_init \n=>%s\n",op.error_message); - // return _FAILURE_; - // } - - // /****** all calculations done, now free the structures ******/ - - // if (lensing_free(&le) == _FAILURE_) { - // printf("\n\nError in lensing_free \n=>%s\n",le.error_message); - // return _FAILURE_; - // } - - if (spectra_free(&sp) == _FAILURE_) { - printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); - return _FAILURE_; - } - - if (transfer_free(&tr) == _FAILURE_) { - printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); - return _FAILURE_; - } + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** all calculations done, now free the structures ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } if (nonlinear_free(&nl) == _FAILURE_) { printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); diff --git a/class/myevolution.dat b/class/myevolution.dat new file mode 100644 index 00000000..6f12c114 --- /dev/null +++ b/class/myevolution.dat @@ -0,0 +1,46 @@ +0.1 0.0010000000000000002 +0.2 0.008 +0.3 0.02699999999999939 +0.4 0.0639999999999378 +0.5 0.1249999999977896 +0.6 0.21599999995913313 +0.7 0.34299999951858506 +0.8 0.5119999959225299 +0.9 0.728999973156994 +1. 0.999999855139168 +1.1 1.330999334368509 +1.2 1.7279973217531261 +1.3 2.196990360740088 +1.4 2.743968450165843 +1.5 3.3749048508244637 +1.6 4.095732787627785 +1.7 4.912295140442309 +1.8 5.830241082017937 +1.9 6.854822885825836 +2. 7.990512030628799 +2.1 9.240299830454715 +2.2 10.604466399010644 +2.3 12.078486025087846 +2.4 13.649587865208744 +2.5 15.291333774900915 +2.6 16.955497974925894 +2.7 18.56075979355865 +2.8 19.97872820320106 +2.9 21.02045222024772 +3. 21.431930578229572 +3.1 20.915524906920037 +3.2 19.201919576687313 +3.3 16.190881291907615 +3.4 12.133254618683612 +3.5 7.729006674620789 +3.6 3.942205156623325 +3.7 1.4868118911900279 +3.8 0.3732807590089654 +3.9 0.05436027966326381 +4. 0.003838922724865479 +4.1 0.00010430820255980766 +4.2 8.102007168749191e-7 +4.3 1.2314496393552691e-9 +4.4 2.2644902011221728e-13 +4.5 2.7467569667648903e-18 +4.6 1.0265616267989809e-24 diff --git a/class/myselection.dat b/class/myselection.dat new file mode 100644 index 00000000..77816a57 --- /dev/null +++ b/class/myselection.dat @@ -0,0 +1,11 @@ +0.0 0.0 +0.1 0.030591786603680816 +0.2 0.10619451692325403 +0.30000000000000004 0.19886750367043496 +0.4 0.28446992920441827 +0.5 0.34735619337280493 +0.6 0.38083288182668446 +0.7000000000000001 0.3853875240364537 +0.8 0.3660955463257228 +0.9 0.330122848124979 +1. 0.2848017764321144 diff --git a/class/notebooks/Growth_with_w.ipynb b/class/notebooks/Growth_with_w.ipynb new file mode 100644 index 00000000..793be030 --- /dev/null +++ b/class/notebooks/Growth_with_w.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy import interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "w0vec = [-0.7, -1.0, -1.3]\n", + "wavec = [-0.2,0.0,0.2]\n", + "#w0vec = [-1.0]\n", + "#wavec = [0.0]\n", + "\n", + "cosmo = {}\n", + "for w0 in w0vec:\n", + " for wa in wavec:\n", + " if w0==-1.0 and wa==0.0:\n", + " M='LCDM'\n", + " else:\n", + " M = '('+str(w0)+','+str(wa)+')'\n", + " cosmo[M] = Class()\n", + " cosmo[M].set({'input_verbose':1,'background_verbose':1,'gauge' : 'Newtonian'})\n", + " if M!='LCDM':\n", + " cosmo[M].set({'Omega_Lambda':0.,'w0_fld':w0,'wa_fld':wa})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import scipy\n", + "import scipy.special\n", + "import scipy.integrate\n", + "\n", + "def D_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " D_today = scipy.special.hyp2f1(1./3.,1,11./6.,-Ol/Om)\n", + " return D/D_today\n", + "\n", + "def f_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " f = 1.-6./11.*x*avec/D*scipy.special.hyp2f1(4./3.,2,17./6.,-x)\n", + " return f\n", + "\n", + "def D_integral2(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " Hc = a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) )\n", + " Dintegrand2 = lambda a: (a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) ))**(-3)\n", + " I = scipy.integrate.quad(Dintegrand2, 1e-15,a)\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand2,1e-15,1)[0]\n", + " return D\n", + "\n", + "def D_integral(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " Or = 1-Om-Ol\n", + " def Dintegrand(a):\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " #print a,Hc\n", + " return Hc**(-3)\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " #if a<1e-4:\n", + " # continue\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " I = scipy.integrate.quad(Dintegrand,1e-15,a,args=())\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand,1e-15,1,args=())[0]\n", + " return D\n", + "\n", + "def D_linder(avec,csm):\n", + " bg = csm.get_background()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " \n", + " Om_of_a = (bg['(.)rho_cdm']+bg['(.)rho_b'])/bg['H [1/Mpc]']**2\n", + " gamma = 0.55+0.05*(w0+0.5*wa)\n", + " a_bg = 1./(1.+bg['z'])\n", + " \n", + " integ = (Om_of_a**gamma-1.)/a_bg\n", + " \n", + " integ_interp = interpolate.interp1d(a_bg,integ)\n", + " D = np.zeros(avec.shape)\n", + " amin = min(a_bg)\n", + " amin = 1e-3\n", + " for idx, a in enumerate(avec):\n", + " if a" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "figwidth1 = 4.4 #=0.7*6.3\n", + "figwidth2 = 6.3\n", + "figwidth15 = 0.5*(figwidth1+figwidth2)\n", + "ratio = 8.3/11.7\n", + "figheight1 = figwidth1*ratio\n", + "figheight2 = figwidth2*ratio\n", + "figheight15 = figwidth15*ratio\n", + "\n", + "lw=2\n", + "fs=12\n", + "labelfs=16\n", + "\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(1.2*figwidth1,figheight1/(3./5.)),sharex=True,\n", + " gridspec_kw = {'height_ratios':[3, 2]})\n", + "\n", + "if False:\n", + " aminexp = -13\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp/2.)\n", + " ymax = 10**(-aminexp/2.)\n", + "elif False:\n", + " aminexp = -7\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp)\n", + " ymax = 10**(-aminexp)\n", + "else:\n", + " aminexp = -4\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp-1)\n", + " ymax = 10**(-aminexp+1)\n", + " \n", + "\n", + "bg = cosmo['LCDM'].get_background()\n", + "\n", + "a = 1./(bg['z']+1)\n", + "H = bg['H [1/Mpc]']\n", + "D = bg['gr.fac. D']\n", + "f = bg['gr.fac. f']\n", + "\n", + "ax1.loglog(a,D,lw=lw,label=r'$D_+^\\mathrm{approx}$')\n", + "ax1.loglog(a,D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+^\\mathrm{analytic}$')\n", + "\n", + "ax1.loglog(a,a*ymax,'k--',lw=lw,label=r'$\\propto a$')\n", + "ax1.loglog(a,1./a*ymin,'k:',lw=lw,label=r'$\\propto a^{-1}$')\n", + "\n", + "ax2.semilogx(a,D/D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+/D_+^\\mathrm{analytic}$')\n", + "#ax2.semilogx(a,grow/grow[-1]/D_integral(a,cosmo['CDM']),'--',lw=5)\n", + "ax2.semilogx(a,f/f_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$f/f^{\\,\\mathrm{analytic}}$')\n", + "\n", + "\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=99,label='$z=99$')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=49,label='$z=49$',ls='-')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=99,label=None)\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=49,label=None,ls='-')\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 1.035))\n", + "\n", + "#lgd2 = ax2.legend([r'$D_+/D_+^\\mathrm{analytic}$','$z=99$'],\n", + "# fontsize=fs,ncol=1,loc='upper left',\n", + "# bbox_to_anchor=(1.0, 1.08))\n", + "lgd2 = ax2.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 0.83))\n", + "\n", + "ax1.set_xlim([10**aminexp,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([ymin,ymax])\n", + "ax2.set_ylim([0.9,1.099])\n", + "\n", + "ax2.axhline(1,color='k')\n", + "\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('NewtonianGrowthFactor.pdf',bbox_extra_artists=(lgd1,lgd2), bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAI4CAYAAAA/PH0eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX5+PHPmT37vpCFsIcAIksEARWsCrhbV5Sq7ddK\nbbHa1p+tdvVbrbbVb1uXUmvd6lJXat2oioqIgAsIsiSyJ5CwJCF7JpPZzu+POxkmzGQBQhjC8369\n5jVzz3PuvWeyzDPn3nPPVVprhBBCiGhjOtYNEEIIISKRBCWEECIqSYISQggRlSRBCSGEiEqSoIQQ\nQkQlSVBCCCGiUrcJSimVr5RaopQqUUptVErdGqGOUko9pJTaqpRap5SaEBKbrZTaFIjd0dtvQAgh\nRP/Ukx6UF7hNaz0KOBWYr5QadVCdc4Hhgcc84G8ASikz8NdAfBRwdYR1hRBCiDDdJiit9R6t9ZeB\n101AKZB7ULWLgWe04VMgWSk1AJgEbNVab9dau4EXA3WFEEKILlkOpbJSahAwHvjsoFAusCtkuSJQ\nFql8cifbnofR+yIuLm7iyJEjD6VpQgghoszq1atrtNYZh7t+jxOUUioeWAj8SGvdeLg77IzW+jHg\nMYDi4mK9atWq3t6FEEKIPqSUKj+S9XuUoJRSVozk9LzW+t8RqlQC+SHLeYEyayflQgghRJd6MopP\nAU8ApVrrP3VS7Q3gusBovlOBBq31HuALYLhSarBSygbMCdQVQgghutSTHtQ04FpgvVJqbaDs58BA\nAK31o8Ai4DxgK+AEvhOIeZVSNwPvAmbgSa31xl59B0IIIfqlbhOU1voTQHVTRwPzO4ktwkhgQggh\nRI/JTBJCCCGikiQoIYQQUUkSlBBCiKgkCUoIIURUkgQlhBAiKkmCEkIIEZUkQQkhhIhKkqCEEEJE\nJUlQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJCCBGVJEEJIYSISpKghBBCRCVJ\nUEIIIaKSJCghhBBRSRKUEEKIqCQJSgghRFSSBCWEECIqSYISQggRlSRBCSGEiEqW7ioopZ4ELgCq\ntNZjIsRvB+aGbK8IyNBa1yqlyoAmwAd4tdbFvdVwIYQQ/VtPelBPA7M7C2qt79daj9NajwPuBJZq\nrWtDqpwZiEtyEkII0WPdJiit9cdAbXf1Aq4GXjiiFgkhhBD04jkopVQsRk9rYUixBt5XSq1WSs3r\nZv15SqlVSqlV1dXVvdUsIYQQx6neHCRxIbD8oMN7pwUO/Z0LzFdKndHZylrrx7TWxVrr4oyMjF5s\nlhBCiONRbyaoORx0eE9rXRl4rgJeAyb14v6EEEL0Y72SoJRSScB04PWQsjilVEL7a2AmsKE39ieE\nEKL/68kw8xeAGUC6UqoC+A1gBdBaPxqo9k3gPa11S8iqWcBrSqn2/fxLa/1O7zVdCCFEf9ZtgtJa\nX92DOk9jDEcPLdsOnHy4DRNCCHFii8qZJNxe/7FughBCiGMsKhPUlqpmHl+2Ha9PEpUQQpyoojJB\n+bXmnrdLueiR5azdVX+smyOEEOIYiMoENSgtltzkGEr2NPLNBcv59esbaHR5jnWzhBBC9KGoTFAJ\nDiuLf3IG35s+BJNSPLOynG88sJSXvtiJz6+PdfOEEEL0gahMUACxNgt3nlvEWz88jYkFKdQ0t/Gz\nheu58OFPWLGt5lg3TwghxFEWtQmqXdGARF69aQoPXT2enCQHJXsaueYfnzHvmVXsqGnpfgNCCCGO\nS0rr6DtkVlxcrFetWhVW7vL4+MfH2/nb0m043T7MJsUVE/P44VnDyU2OOQYtFUII0Rml1OojudXS\ncZWg2u1rdPF/723i1dUV+DXYzCaumTyQH5w5lMwERx+2VAghRGdOyATVbnt1M39+fwtvfrUbgBir\nmeumFnDDaYMlUQkhxDF2QieodqV7GvnT4s0sLtkHgM1i4oqJeXzvjKEMTIs9Ws0UQgjRBUlQIb7a\nVc+Cj7by7kYjUZkUXDA2h5umD2VUTmJvN1MIIUQXJEFFsLWqiUeXbuc/ayrxBq6bmjIkjeunDuLs\nokws5qgfvCiEEMc9SVBd2F3fyj+WbeelL3bhdPsAyE2OYe6pA5lzykBS42xHvA8hhBCRSYLqgUaX\nh1dXVfDMyjLK9jsB4zzVhWNzuOqUfE4ZlELgvlVCCCF6iSSoQ+D3a5ZuqeafK8r4aFN1sHxQWixX\nFOdz2YQ8spNk9J8QQvQGSVCHqaymhVdW7+LV1RXsa2wDjEEVZ4zI4Jvjczm7KIs4e7f3cxRCCNEJ\nSVBHyOvzs2xrDa+s2sXikn14fMbPw2E1cdbILC48eQAzCjNxWM190h4hhOgvJEH1otoWN2+sreTN\ndXtYXV4XLI+3W5g5KovZY7I5fXgGMTZJVkII0R1JUEdJZX0rb6/bzZtf7WF9ZUOw3G4xcfrwdM4u\nyuKsoiwyEuzHsJVCCBG9JEH1gR01LSxav4f3SvbxVcgdfpWCcfnJnDUyk9OHZzAmNwmzSUYDCiEE\nSILqc1WNLt4vreL90n18srUGt9cfjCXHWpk2NJ3Thqdz2rB08lNlmiUhxImrXyaoicUT9epVq491\nM7rldHv5eHMNSzdX88nWanbVtnaID06P49QhaUwanMIpg1LJS5GEJYQ4cRz1BKWUehK4AKjSWo+J\nEJ8BvA7sCBT9W2v920BsNvAgYAYe11r/vieNShqWpN/86E3OyDujp+8jKpTvb+HjLTV8sqWaFdv2\n0+TydojnJDk4ZXAqpwxKZdLgVIZlxGOSQ4JCiH6qLxLUGUAz8EwXCer/aa0vOKjcDGwGzgEqgC+A\nq7XWJd01KmZwjB521zCm5kzlxxN/zMjUkT19P1HD6/OzrrKBz3fU8sWOWr4oq6XxoISV6LAwNi+Z\nsXlJjM1LZlx+slwoLIToN/rkEJ9SahDw1iEmqCnAXVrrWYHlOwG01vd1t7/Bowfr7F9k0+xpRqG4\nYMgF3Dz+ZnLic3rwlqKT36/ZtK+JL8pqjaRVVhu8QDhUZoKdsXnJnJyXxKicREYOSCQnySFTMQkh\njjvRkqD+jdFLqsRIVhuVUpcDs7XW3w3UuxaYrLW+uZN9zAPmAQwcOHDi2k1reWzdY7y46UW8fi82\nk42rR17NDSfdQIoj5XDea1TRWrO30cVXuxpYV1HPuooGvqqoDzssCJDgsFCUncjIAQmMzE6kMDuB\nwuwE4mWmCyFEFIuGBJUI+LXWzUqp84AHtdbDDzVBhQodxVfRVMHDax5m0Y5FAMRYYpgzcg7Xj7qe\ntJi0nr7P44Lfrynb38K6igbWVzbw9d5GSvc0Udvijlg/NzmGIRlxDM2IZ0hGHEPS4xmaGUd2ovS4\nhBDH3jFPUBHqlgHFwHAO8xBfpGHmJftLeGTNIyyrXAYYierKEVfy7THfJj0mvdv3cLzSWlPd3MbX\ne5r4em8jX+9ponRvE1urmoLTMh0s1mZmcHocQzLiGZgaQ35KLANTY8lPjWVAkkPuhyWE6BPHPEEp\npbKBfVprrZSaBLwKFGCM3NsMnIVx6O8L4Bqt9cbu9tfVdVAbajbw6FePsrRiKQB2s51vDvsm1426\njvzE/G7fS3/h8fnZVetke3UL22ua2VZlPG+vbmF/Jz0uALNJkZPsID8l1nikxpCTHEN2koMBSTFk\nJzpkKichRK/oi1F8LwAzgHRgH/AbwAqgtX5UKXUz8H3AC7QCP9Farwisex7wF4xk9aTW+nc9aVRP\nLtQt2V/Co189ypJdS4x2ojhr4FlcP/p6xmWO68lu+q16p5tt1S3sqGlhV62TXXVO47m2lX1NLrr7\nTpIUY2VAkoOsREfH5yQHGfF20uJtpMXZsVmkJyaE6Fy/vFD3UGaS2FS7iWdLnuXtHW/j9RsDDMZm\njOXaoms5a+BZWM3Wo9nU406b10dlXSs7a53sqmulotbJngYXextc7GlsZV9DG26fv/sNYQyTT0+w\nkx5nJz3BSFrpgQTW/pwcYyUp1kpSjBW7RXpmQpxITvgE1a7aWc0LX7/AS5teotHdCECqI5VLh1/K\nZcMvIy8h72g0td/RWlPb4g4mrb2NgeTV4KKqyUVNs5ua5jZqW9z4/If2txNrMwcSlpG4kmONR1KM\nzXgdYyXBYSXeYSHebiEh8BzvsBBns8g8h0IcZ/pngpowTq/6cu1hrev0OHlj2xu8tOklttZvBYzD\nf9Nyp3HliCs5Pe90LCYZnn2k/H5NfauH/c1tVDe3sT+QuPY3u9nf0kZ1k5t6p5s6p5uGVg/1Tg/e\nQ0xoB4uzmYPJK95hJcF+IIHF2y3E2MzEWs3E2AIPq5lYmxmH1UyszUJMIBYbiMXYzNgtJhnxKMRR\n0j8TVK5Nr3rhd3DqfLAd3vx1WmvWVq/l5U0v817Ze7j9xsCBNEca5w4+lwuHXkhRapF8OPURrTUt\nbh/1Tjf1Tk8wadW3Hliua3HT3Oaluc1Lk8t4bm5/bgu/Pqw3mBTBZOWwGgnLbjFjt5qwmU3Yg2Um\nbO0xiwm71YS9m7jNbMZmMWE1K6xmU+DR8bXFbOzHalaYTUr+HkW/0j8TVI5Zr5oXj04YgG/aj/GP\nuw4sxn2XTIrgMOnQmcTbhcY9gXMpda463tr+Bv/espDypvJg3aFJQzl/yAWcN+h8suKyAFBKBQ8l\nRTqEpSA4f54/UlwR/JDp7GcrH0KHzu/XtLgPJK2mwHNL24HXrR4frW4fTrePVo835LVR3jFuvO7p\n+ba+YgtJXFazCVvwdedJ7uDXlsB6VrMJq8WI2Q9KlDZLe2I0yoPLIeU2iwrWDa4XWJbDraIn+meC\nOqlQr5qfCXvXAVCp03jEewmv+qZz+aQh3HfpSQAMuuPtsHWvnjSwi7hm9kQPAweW8s6Od6hrM+6a\nq7XC11qAt3EM5w+dxV8un3GY2+9JPJ/7Lh17BPED2x98Z3h8zikH4kMixScN5N5vGvGhP18UYf18\nfheID4sQvyokPvwXkeP3XGLER/ziv2HxK0/JOxD/ZXj8quJ87r7EuJqhMFL8lHx+e7ERH/mrCNsv\nPhAv+tU7EeJ5/G8gPurX73T4EqGBWaOyuPGMobR5/cz9x6cEo1qjgQkFKZwzKhu318+fF29GB2q0\nbyY/NZbCrATavD4+3lwDwRoG49yaFY/PT3VTG9H339czpsAXMYvJ+ELX/jDOM9qIsZlpcnlwWAOH\nU61mYuxmUmJtZCbYibGa0ZrgecZYu3EINt5hnHtMcFhIdFjlEOxx7kgTVHSejLEnwLylzP/1b7nF\n/CqFahf3WZ/gB5Y3WFV3A3gLwWLDag7/ww29BtUS9i1PkWYZxs8nf5PbT7md0fc9iDnxS8zxpVhi\ny7DElvFBy1vMfXss5xScg9lmRntSO25BRX7dc92t1PONdvfdItIpn9B1IvUQQ4sinTMKLYp0oXBo\nhyRS76RDPEIPOHSfbRHioft0ebqOt3p8YXF3SNzpDo/H2q2MyU0yth9h/4PT47nhtMEA/OGdr8Pi\npw5J6/ILyvljc7qMX1mcz68vHIXH62f83YvD4jNHZTHvjCF4fH6u/sdnYfHJg1O58OQc3F4/v30r\nfF7mEVnxTCxIxePz8erqyrB4RrydAckO3F4/X+9tCoubTQqttfF3oHXY31C908PuelfYeodLQbBX\n57CaSIu3MzA1lgSHhSaXJ9DeGPKSY8lJdpCeYCctzkaiwyp3CugHorMHFTqKz++Hkv/AR7+Hmk1G\nWUIOnPp9mPhtcCQe8f6a3c18XPExi8sX80nlJ7h8B/7BhqcM5/Tc0zkj7wxOzjj5qA+w0Fr3+BBh\npEOMcOAQZGej7NoPz3gjJJDQQ5yeSHF6foi1zRueAEzKOGwE4IqQQExKBa+v6i7eGiHBmEwEh7M7\n3eHnrcwmFYy3RDivZTYpHFYjHum8lyUk3uTyhMWtZlMw3hghbguJN7RGjrdfKN3g9KDRaA3+QFKw\nW00kOqxoramoM+4/1h7za02C3UJmogOtNSV7Gjus69eatDgbBWlxaK35dHttMNkYdTQDkmIozE7A\n79e8vX4PXr8fj0/j9Wm8fj/DMuOZOjQdt9fPQx9sps3rp83rx+314/b6GDkgialD02hxe/nz4s24\nPD5cHn+w3vDMOE7OT6G5zcNzK3fi9fs7fOlJi7OR4LDQ6PJ2OsVXT5hNRu8u1hbotSXayUuJZWR2\nAkUDEslOcpCd6CBO5rM8qvrnIb5Iw8z9PtiwEJb9CapLjTJ7IhR/ByZ/HxIH9Mq+nR4nn1R+wvvl\n77O0YilOrzMYS7AlMDVnKmfkncHUnKn9eoolIfqK1po2rx+Xx4fZpEhwWPH6/Hy2o5balsBlDc1t\n1Dk95ATmn6xpdvPk8h00ubw427y4vH58fk2iw4LW0NTDQTVWsyI5xkZ2koMhGXGMH5jMuPwUBqXF\nkhxrO8rvvP87cRJUO61hy2JY/iCUf2KUmaww+ptwynchf9LhHnsL4/a5Wb1vNcsql7GsYhlljWUd\n4sOShzEpexKTBkyiOKuYJHtSr+xXCHHo2rw+fH5NrM1Cg9PD619VsqvWyc7aVvY0tFLT1EZWkgOb\n2cSuOme3hyKtZkVmgp2hmQlMGJjMtGHpjMlJkqnADsGJl6BCVayGFQ9CyRvQfro5+yQ45UY46XKw\nxfVqu3Y27gwmq9X7Vnc4FKhQjEwdyeQBk5mYNZGTM07uF7cFEaI/cnv9bK1uYkNlI+sr6tlS1UxF\nXSuZCXZcHj/bq5sjnoNUQGF2AqNzEslMdDB7dDZjcpNkVGMnTuwE1a6uHFY/BV8+A879Rpk9CcZd\nDeO/ZSStXub2uVlfs57P93zOZ3s/46vqr4JTLbUblDiIkzNOZlzmOMZljGNI8hBMSuavEyLa1Tvd\nvLVuD5/vqOXrvY1U1rfS0ubDpMIHH5kUZCY4OGVQClcU5zNlaFrwPOuJThJUKI8LSl6HL/4BFV8c\nKM86CcZdAyddAfEZvdfQEK3eVtZWreXzvZ+zpmoNG2o20ObreMfcBGsCY9LHUJRWxKi0UYxKHUVe\nQp4MoxXiOODy+HB7/Wze18TLq3bx3/V7I57rirWZGZ2TyKD0OL41uYCxeUkn7P+4JKjO7PkK1jwH\n61+BVuN6J0wWGD4TTp5jPFtjjryxnfD4PWyu3cza6rWsrVrL2uq17G3ZG1YvwZrAyLSRjEodRVFa\nEYUphRQkFsgkt0IcB5pcHpZtruG/G/awqryOWJuZbdUtHerEWE2MH5jC3MkDmTk6+4TqXUmC6o63\nDTa/A2v/ZQyu0IGhybZ4GDEbRl8Cw84+qsmq3d6WvWzcv5HS/aWU7C+hZH8J+137w+pZlIWCxAKG\nJg9lWMowhiUPY2jyUAYmDJR5BIWIclWNLh54bzOLS/ZS5+x4KUFSjJVzx2Rz3kkDmDYsvd+fu5IE\ndSiaq2Ddy7DhVdi95kB5e7IadTEM/QbY43t/352odlYbyaq2hNL9pWyp20Jlc+VB8w8YrCYrBYkF\nFCQWMDBxIAUJgefEAjJiMk7YwwhCRKu9DS7+uWIHizbspaa5jZa2A9fuWc2KyYPT+OE3hjF5SNox\nbOXRIwnqcNXuMM5XbXwN9oTMnG62waDTofBcGDELkgce3XZE0OptZXvDdrbWbWVb/Ta21hvPu1t2\nd7pOjCWGgQkDGZg4kPyEfHLichgQP4CcuBxy4nOItR7epLtCiN6htWZLVTMvf7GLJz7Z0eEraEqs\nlW+dWsAPZgzrV8PYJUH1htrtsPE/sGkRVKyC0D+dzFFGohp6lnGNVWDS2mOhxdNCWUMZ5Y3llDeV\ns6txF+VN5exs3El9W32X6ybZk4ykFTeAnHjjOTsum4zYDDJiMsiIzcBuPnbvTYgTSWOrm8c+3s7C\nLyvZ03DgcpUEh4VLxucypzif0bnH/3WVkqB6W3M1bF1snLfa+iG4Q+Yjs8RAwRQYPB2GzIDsscbc\nOlGgoa2BnY07KW8qp6Kpgj0te9jdvJs9LXvY07wneLuRriTaEsmMzSQ9Jp3M2Mxg4sqIySDVkUqq\nI5UURwqJtkTMpv7zLU+IY2nLvibuXVRKdVMbG3Y3BsuHZMTxq/OLOHNk1jFs3ZGRBHU0ed1QvtwY\nXLH9I6ja2DEek2IcDiyYCvmTjYRljr5BDH7tp9ZVy+7m3exu2c2eZiN5VTmrqGmtoaq1ihpnDV7d\ns+lhTMpEki2JFEcKyfbkYOIKfZ1kTyLBlkCiLTH4bDPL1DFCdGXj7gZ+9OJatlQ1B8syEuz8bHYh\nl004/i5JkQTVl5qrYMfHRrLa/hE07OoYt8ZB3kQYOMVIWHmn9Mpktn3Br/3Ut9VT7aymurWaamc1\nVc6q4OtaVy11bXXUuepodDd2v8EIHGYHCbaEDonr4CQWa40l1hpLnCXOeG2JJc4aFyyPtcTKSEbR\n7y0u2cvv3i6lbP+BuUAnDU7l9lmFnDIotYs1o4skqGNFa+PcVdknsOsz2Pkp1G47qJKCjEIYMA5y\nxhuP7JMO+y7B0cLj99DQ1kCdy0hYtW211LvqjdeBRNbY1kiTu4kmTxNN7iYa2xp73EPrjt1sJ9YS\nG5bMHGYHdoudGEsMdrM9uNz+2mFxGK/bnwPxDjGzA5vZhtVkxWKyHHffWEX/sq6inp+/tp6tVc3B\n28sUpMZyzyVjOH3E0Zl0oDdJgoomzVUHktXOT42Lhf0H3VJBmSBjZCBpjTMGYWSNhtjj51vR4dBa\n0+ptNZKVO5C8Aq9Dl51eJy2eFlo9rbR4W3B6jGWn14nT48TpdeLXfXcXXKvJGkxYHV6bA8smG1Zz\n4DmkPLSuzWzDYrJgVmbMJjMWZQlbNpvMmJUZi+kQY4Hy0LomZcKkTJiV2bh9ijpQZlImTBjPknyP\nH40uD08s28GjS7cF75N2Um4SC+ZOID81er/w9tsE9buHf8KyrxeSEpPJbXP+BsAvn74MgGun/5LC\nweP559u/Y0v1lwzPmMD15/+CTTvW8NzSewG4+9uvAPCnl35AXWs1pxdeyswpV/Peyhf4ZPO/SXZk\n8pOr/grAr/95BQBzz/g5hYPH88yie9lavYZhGeO57ryfs7l8Lc99ZGz3t9e/HNjufOpd1ZxeeBnn\nnHoViz99iU82/ZskRwY/ueoRAO56+gqsPiffyptMgauKD8s+Yoe/gZFuN9NaXdSYTbwRb0xo+z++\nWMgcxTOtdexTJiYPPo8zpv+A99csYvmmhSQ5MvnRlQ8B8L/PzAHg6ul3MKJgHM+/80e2Vq1hWOZ4\n5s7+KZvL1/LC0j8A8JvrXgDgwVdupb61immFl3L25Cv48PNX+eTrf5MUk8GtVzxovLdnrgFgzvQ7\nGFEwln+9ez9bq9YyLHMc18y6nc3l63jxY2O7v772eQAefuXH1LuqmVZ4Cd+YdDkffv4qyzf9h2RH\nBj+84s/G7+LZbwFw1Rk/DWz3/9hetZYhmeO4ZtZtbC5fx8sf32/8jq99FoBHFv4/6p1VTBt5MWee\nchlLvljI8q9fJykmgxsv+R0tnhYeeHU+HnxMH3cVKanZvL/qZSobtpOakMfYkadTWVPGlzs+woef\nCYVn4/K5WLdjJS5vKwnx6cTFJVPVuIeG1v1opXA4Emj1teJ0N+OPeCVa/2PChMVkQWuN1j5MmHDY\nYjErM862JkwoYm0J2Kx2Wl3NeH1u7GYHifGp+LweGp21KGBA6iBMmKiur8Tv95IUk0pKYiYNTbU0\nOWuwmu0UZBViVma2Va5DAfkZhSTGJlNZtY0WVz1JMWkMzR1Dc0sDZXs3YMJE8YizsFqslGz/HI/X\nRX7aCPKzh1K9v5K9+3cQa0tg3PDTMJlMrNv0CWaTmRH5E0hNSKdy33aaW+pIS8pmaM4o/B4v9fVV\nJMQkkZcxmBhrLFazFbvZjs1sw2ayRX3SXlVWy09e/oqdtcahPwVcMt64CabDGn2Hvo96glJKPQlc\nAFRprcdEiM8Ffobxs2oCvq+1/ioQKwuU+QBvTxtaXFysr7xtAs+6V4IGU2CkXPs35/uH38HsqXM5\n6emTjL1qMJvM+PWBj5X1169n/DPjjQlclVHNrCwMVmls8e9jiBt2OoxfaPskr2ZMXDbicvZueJ+P\nbbUoDRazFb/fjw/jArurCq/il6f+kov/cRLbbWBCYTZZ8Pm9+NEk+mD5/6wH4KR/GpPUWjBjMpnx\n+NxoBd9wxfHg+BsYX/IQ3sD/g91vvLdYrakzm/l1zX7+mJqCF4XXpFBaYzdZuSRrMi/uXR7YrgWL\n2YLb68KvwKThypFzmOgfxO1bfg8Y10cBuDytaAWFpmxevXYxf3xhHs+6V6I0OAKzaLR6Wzv8fE9+\n+qTgdh3WWLw+D27tCf58Jz8/mVaPE63AggmbxUG+P5FN/r0MccO+OCP5tniMqV/sysZlhZdTse4d\nPrbVYtYQY4vH63Xj0sYow7lFc7lj0h3Bn68VMw5rLC6PEw++iD9fh7JjtdhwupvwKTjDncpfb1zK\nKc8W4/Ib8yEm2BIAMLU20WCGa21TeJ2NuNwtuPFh0hBvT+SioRfxXOlzge06sFlttLQ14lNg1nDh\nsEsY5k3ngfLHAYizGu/R6W5BK8hVydx82s94Y8XjrPRtQ2mwWxzG7yAw+/2ZKacyKKeIpzc8hVag\nNFjNNvx+H97A39k5Befw0a6P8Pg8gb9foydk0QoXHmx+8JnNaHSHHmWMJQavx4VHadDGDShDU60K\n3LH5xEi/h06hQPsxo0iOTSfWEktNQwUWFENTiyhIH0bl7s20ttaRkziIaaNnY/OZ2VdVxtCMkZxc\ncApJMclHfVLoV1fv4jevb6QlcNPOQWmx/P6ysZwaZRf89sUt358GHgGe6SS+A5iuta5TSp0LPAZM\nDomfqbWuOdSGjck/DbatBEWHf8B8fzz5WYXGQvuXHQW+wBRG+f44xviNX5JXe4N1dGA5OT6T2XV2\nkmMy2O5b3WGfPvz4tI+TM08jtmYt71h24jnoEF17MpsUM5HtvtX40fhD6qRbwv9AvPiMGy4qyPPH\nMSrzTJh0I97Sh4J12gJJeLDXxsxmN4MsabhC/sa1Uri0F8/md/m2348G/pmciNd34D36FXia95Gf\ncyozPTnoVYZbAAAgAElEQVS8Z90dTDrtdRLijJssFuZMgrKVaHUgMQHk+mPJyRga3F77c/uNG3P9\nsRT5jOsznF5ncLte/Hi9ThLiB3N2nSLFns4rnvUdfg5t2k2br43RaZOx1q7hA+temj3NHeq4vMaH\n+AT7aLbrjXjw4fEcGOqfZg6/hYlLt+HytIGCHF8Mo9ImGeX+A5P1NgUuFxhkTmai28aIgRNp3Lky\nGPcraHQ30upt5Uy3cWx/ia0al9sVfI8+ZXwRGp9zCmdueZ0ltupg8m2vkx2bwwVDLsBTXsHKnX9F\nKzrclmWAz853R36HsSOm8tTGpwDQiuBlAAN8dkb4EvjTjD8ZCTj496vxai9j44pIqKsmxZrOf3T4\nLefPG3weqZX1bK5fy1Lb/rBEdOnwS7lr6l388unLeF1tDls/XyfwrzmL8ONn+kvTw+IZPivT4ybw\nrVl3csnrl4TFs3UcWR4T43Nn8HT1m2HxKQOmUL9zHRr42toSFh+fMZ7RscNZvu0NdljC79eUZUnh\nvJGX8NXW5XzpCm+/1Q/jUseRkpTJe+XvhcWV1iggL7GAnU07w+LayOp4gZrWwMdW4P9wTf0G1tRv\nCNbd0LCH91Yc+BtiB/A5xqFVv/F5lGZJZlz+ZMxOLy0N+yhMH835xdcwIH5A8Mvj4bh8Yj6XjMvl\n7rdKeHfjPsr2O5nz2KcUF6Tw92snkhbfP65p7NEhPqXUIOCtSD2og+qlABu01rmB5TKg+FATVPs5\nKJ8//JbeQPAanINvbwGBb5qB+MHJpT3ePgrM44sQVwfibl/4tUNKKawma4/iB89mDsYhlfaJYNs/\njDu8N2UOxlvbGqGhAvZvMwZg1G7HXLsd2/4d0FhBa4TDEWatsQHYE3Em5UFSPiTnQVIexGdjScrF\nlpQPCQNwRvgWbTaZgxfsBj98Q1hMli7jZmXGEegxNLubw+IWkyUYbwq9xiwk3v6PG2m0oNVk7XG8\noa0hYrx9Vo3u4vWu8IufbWZbj+N1rrqI8fZeV62rNixuN9uD8f2t4fM02s124m3xPYoHP2APirf3\nJruLVzurw+MWO4m2xB7Fq5xVYXGHxRGM72vZFzGeZE9Ca83ult3G0Qvtw6+N5wRbAtlx2WitWVez\nzij3H4hnxmYyNHkoWmuW7FoSLPf5fXj8HgoSCxiXOQ6v38uTG57E2dZCc1sjGtAmRb49h1x/El7l\n5+Wa/9LkamJvUwUevwdlsjIuexy+6mr2uCrZaXaGtd9qskb83IlEaU2MNjEpexpTB52Bv6mZ8TmT\nGZU3tkfrt2vz+liwZBsPf7gFvzZud3/7rEJumj70kLZzNPTJOahDSFD/Dxiptf5uYHkH0IBxiO/v\nWuvHulh3HjAPYODAgRPLy8t7+BZOUG6nMYpw/1ao32kMea/faTzqyiFC8gjjSIaEAZCQDYk5xnPC\nAIjPgrh0iMuA2DSjXpRckCxENPBrP1XOKpweJw3uBmpdxkjWIclDGJM2hjdX/Ysntj9Pm8lPk7cp\neAQiRptJT8yhsqkSP5EH+zi0hWkF00khHkuzi2smzWNw1ohu2/TS5zv51RsbcQcGURRlJ/D8jZNJ\njTt2vamoSVBKqTOBBcBpWuv9gbJcrXWlUioTWAz8UGv9cXf7O25H8UULrY1bjNSXB5LWLiOBNe6G\npr2Bx57wEYadMVmMRBWbHkhc7ckrHeLSjAuWHcnGc0yy8dqeKElNiIA2XxtVLVU4LA4yYjPYVrOF\nX318JztbKmjFc2CmF20cYuxAa3IScpmWMw1TTQPXnvoDCjIi946aXR5ufGY1K7cbvesYq5lnbph0\nzK6diooEpZQaC7wGnKu1Dj8wbNS5C2jWWj/Q3f4kQfUBvx9aa41E1bjHeG7aC027jemenDXQUg0t\n+yHCobDuKXAkHUhYBz/bEw48bPHGDPK2hMBzyHIUzswhRG/SWrPftZ8dDTtItSbjdLfwXuUHPL3x\n6c5WYGTCcM4vvJhT04sZmR3+sfzqqgrufG0dHp/GpOCm6UP58dnDsVr6doqyY56glFIDgQ+B67TW\nK0LK4wCT1rop8Hox8Fut9Tvd7U8SVJTxtoFzfyBh1XR83VINrnporQ88NxjPbYc320QYiyM8idli\njft3WWKMZ2tgOfTRaax9XYcxc73FbvQQo3x4sTjxOD1ONtVt4rPKz1hauZSS/SVY/H7cqmMvy6Jh\nWuJEfj37j2TGZgbLm11eFny0lb8t3YbWkBZnY+H3pzIoPa7P3kNfDDN/AZgBpAP7gN8AVgCt9aNK\nqceBy4D2k0ZerXWxUmoIRq8KjNGC/9Ja/64njZIE1Q/4vEaSaq0LJK+6kCRWD21N4G6GtubA88HL\nzcZEvX1yUa46kKwiPXcas4PFdqCO2WYkO7PFeDZZA89mMFtDyo5k2WJc7K1MRrkygTIftCzJtj/y\n+r2YlZmK2nL+uPb/+Kjio7A6ueZURlkLuOuCh0iMSwbgvY17+d6zq9EYAyjuv3wsl07I65M299sL\ndSVBCbQGjzM8iXlajXJPa8gjsOx1hcQOrhMo87qM1z630TvUkUeLHr9UIFkdnLgOSmqdlUdcJ0J5\n2LoRHh1iZiN5RiwPJNaI5e3bMkWOmUK2G1bek3Z11d5I7eqmzWbrgV78UTwPW+2s5o3N/+FfG56l\nytdxxKhVm7hq1DXccNINpMek89n2Gq5/6ovgdEmXjMvhz1eNO+oXJvfvBLXo9vBg/mQ46XLjdbfx\nn0aITzoQ/+/PwuN5p4TE74iw/ikw5rKexd+5M8L2i0PiP+8kfmnP4u/+InJ89DePIH4KjA5c3/Le\nL8PjucUh8V9FiE/sOp5XbNy5GGDxryOvH4z/ppP4Rcbr9+8Kj+dM6DqeOxGKLgzE/9d41n7jOjXt\nM6adGjzdSF7LHwyUewPPfuMGlgNONma63/DqgfX8XiOhxmdC6hDweYyZ8P1+Y732hyMJErKMeFVp\nx5j2Gx9stjhju017Am1rj/sOJAvtB2+rsU+tAd1HvU1xSMz2joeXbbEHDjPbEzoOLopJOTDgKC4d\nEnKMKdB6kERqWmtYu/tLnlv+F9b5duEJyYspfit3nPxzpo28iMv+tpKt1cblH2cVZfLXaybgsB69\n81J9caHusfN5hFHp3rYDCaTb+N8jxF0H4p89Gh73tIbE/xYh7jyQYLqLf7ogPD7h+pD4XzuJX9qz\n+MpHIsfbE9BhxwMJZsXD3cQfOrx4ewJa/mA38b90Eg8koE/+fHjx9gT1yZ8ix8cbUzPx5T8jx9t/\nfq/Nixw/K5B474pww7kJ18NFDx29+Pjr4MK/GAnungiTiZ50Fcy820h2fyoKjxddDDN+Zqz/99PD\n48NnwZT5RjJ8NvxCXQbPgOLvGNt/9X/C4wOnwNgrjfXfvi08njMBii4wkvKSe8LjWWOMe7FpHfn/\nI2248SVV++CrF8LjSfnGhM3ab9zz7WDxWcYXDL8PKj4PjzuSjTraD/u3hMfbe07tPXlfm/GIcM1c\nj5htxpeexDzjUpCUQZA+HNKGGY/AHJ7pMemcPXQmZw+dSXVzFb9Y8UtW7jEuIq4zefjZuv/l9NoP\nefx/bufvHzax8MtKPiitYs5jn/LotyaSneQ4vPYdZdGdoM79Y3hZxsiex2f/ITyeGRr/fYR4yD/t\nrPuOMH5vhPioA69nRjgll3Uo8Qj/wKHbP+fuCOuP7iYeuv5vu17/7P8Nj4eOKIoUzwqN3xUhftKB\n12dF6EFlh8Yj9MCyx3YdD93+NyL08ELX/0aEHmT2yd3EQ9Y/M0J8QGg8Qg82+xDiMyL0sAeMNXpZ\nJjPMiNCDH3Cy0YMDmB7hCEDOuAO/40jxASfDkMAME9MjHIEYMA5Gnme8rgqf6YKccTDyfON1U/iF\nuh3iES50Z8A4I4GBkQzC1h9/IJ6Y23X8gwh/3znjjS8wfr9xBKG9d9z+KJgG464x4q9cH+jhhsSH\nzzQSuNcNC6YYvdzgoWeX8eXr1JvAWQsvXh2+/5TBxkX1LdVQ/bXRk2+oMB6R2BON/6ncCcE7JmSk\nDuGxmY9R01rD3R/+kiXVy9EKllUuY1nFMnL9Mfzl8v/jd+96WLurntP+8CH/uG5iVN4YMboP8Qkh\nRH/i9xvnpfw+qCs7MIDI1WC8zhgJg6YZg4tevcG4drFx94FLPQqmGRfTV38N+zZE3kdsOgw+3biZ\n6uDpOBMH8OzXz7G5+mve27UYlDEj49WF3+HZRSNwuo1DiD8/byTzzujd2Sf69zkoIYQQRu+rea9x\nU9T4DKNH9fbtUF1qzBzTPiuFLd4YSBQqMc84LVB0EU9vW86fyp5AB05r2TCTXjOFTdVGr/LbUwdx\n10Wj6S2SoIQQ4kTmaYV9JbBnLRScZvTQVjwEX0aY3zshm+qxV/ILTzkrq9cYZVqT5M6hYsdNoO3M\nnTyQey4Z0ysj/CRBCSGE6MhZCzs+hu0fQembxswwHShW5o7hZmsD7vbelE5DVUylpnka3546iF9f\nMAqT6ciSlCQoIYQQndMadq+BbR8al4mseRY2/hu0Hy/wQkYeb6YPoNS1D7QmxR1DxfY7GZqZxls/\nPA37EQxDlwQlhBDi0LxxK6x9PjhhtAeYmzOAUpsx7Zffk4Cz7Htkx+XxwW3TibUd3oDvI01QMt20\nEEKcaC56EH66zbiUw5GMFfjX7j1MbXUZdzG3NhE/7AEctseZcf9HNLl6eOeDXiY9KCGEOJF53cZF\nzU174IsnWOZr4EdZGbhNJtCa9MZc6htuY8ltM0iOtR3SpqUHJYQQ4vBZbDDxephxB9yyhtPjB/HO\nrt3E+3ygFDVJu2lNepZvP7WC5rbwu5gfTZKghBBCGOzx8N3FZIy6lE92VnJ3VQ0xfj/WpLWUx/6Q\n7zz2L+qd7j5rjiQoIYQQBziS4PInMH/3fS4xJfHkHmN0n9cEmxLu54w/P0dTa9+ck5IEJYQQIlze\nKfCj9YwZ/11+2axAa2MGity/MP2Rv+Psg8N9kqCEEEJEZrbCub/nqu99zov2UTj8frTSeDIe5ZsL\nbsLlObr3UpMEJYQQomvWGEZf8hhvO2Nx+P2gFLtTPuWCB3+Hz3/0RoJLghJCCNG9mGQyv/8Z/40r\nZoDHC0pRl/YyN7xwN0frciVJUEIIIXrGZCL9yn/y9qj5XNTUjNukWO15mWsej3Dzyt7Y3VHZqhBC\niH7LOvVmfnPmg6R5jcN9G6zb+NbfI9yA8QhJghJCCHHIbKMv4t0rPiQ2cE7qK/t6fvRchLswHwFJ\nUEIIIQ6LPTGLD897lazAOakPvG/xiye+02vblwQlhBDisMVlFfHGha+S7jWS1JvmL3j4hZ/1yra7\nTVBKqSeVUlVKqQ2dxJVS6iGl1Fal1Dql1ISQ2Gyl1KZArHf7fkIIIaJCbNZo/j3zZVK9PrRS/Kv1\nLRZ/9fYRb7cnPaingdldxM8Fhgce84C/ASilzMBfA/FRwNVKqVFH0lghhBDRKSX/JP45/XGyPV6a\nzSZu//LIe1HdJiit9cdAbRdVLgae0YZPgWSl1ABgErBVa71da+0GXgzUFUII0Q8NGjaVR2Y9h8Wv\n8R3h7eKhd85B5QK7QpYrAmWdlUeklJqnlFqllFpVXV3dC80SQgjR1wrzJ/LDnO+ieuHi3agZJKG1\nfkxrXay1Ls7IyDjWzRFCCHGY/mfWj1gw7o9HvJ3Du9F8R5VAfshyXqDM2km5EEKIfu60cecd8TZ6\nowf1BnBdYDTfqUCD1noP8AUwXCk1WCllA+YE6gohhBDd6rYHpZR6AZgBpCulKoDfYPSO0Fo/CiwC\nzgO2Ak7gO4GYVyl1M/AuYAae1FpvPArvQQghRD/UbYLSWnc5wZI2prGd30lsEUYCE0IIIQ5J1AyS\nEEIIIUJJghJCCBGVJEEJIYSISpKghBBCRCVJUEIIIaKSJCghhBBRSRKUEEKIqCQJSgghRFSSBCWE\nECIqSYISQggRlSRBCSGEiEqSoIQQQkQlSVBCCCGikiQoIYQQUUkSlBBCiKgkCUoIIURUkgQlhBAi\nKkmCEkIIEZUkQQkhhIhKkqCEEEJEJUlQQgghopIkKCGEEFFJEpQQQoio1KMEpZSarZTapJTaqpS6\nI0L8dqXU2sBjg1LKp5RKDcTKlFLrA7FVvf0GhBBC9E+W7ioopczAX4FzgArgC6XUG1rrkvY6Wuv7\ngfsD9S8Efqy1rg3ZzJla65pebbkQQoh+rSc9qEnAVq31dq21G3gRuLiL+lcDL/RG44QQQpy4epKg\ncoFdIcsVgbIwSqlYYDawMKRYA+8rpVYrpeZ1thOl1Dyl1Cql1Krq6uoeNEsIIUR/1tuDJC4Elh90\neO80rfU44FxgvlLqjEgraq0f01oXa62LMzIyerlZQgghjjc9SVCVQH7Icl6gLJI5HHR4T2tdGXiu\nAl7DOGQohBBCdKknCeoLYLhSarBSyoaRhN44uJJSKgmYDrweUhanlEpofw3MBDb0RsOFEEL0b92O\n4tNae5VSNwPvAmbgSa31RqXUTYH4o4Gq3wTe01q3hKyeBbymlGrf17+01u/05hsQQgjRPymt9bFu\nQ5ji4mK9apVcMiWEEMczpdRqrXXx4a4vM0kIIYSISpKghBBCRCVJUEIIIaKSJCghhBBRSRKUEEKI\nqCQJSgghRFSSBCWEECIqSYISQggRlSRBCSGEiEqSoIQQQkQlSVBCCCGikiQoIYQQUUkSlBBCiKgk\nCUoIIURUkgQlhBAiKkmCEkIIEZW6vaNutPH7/VRUVNDS0tJ9ZRGVrFYrmZmZJCYmHuumCCGi2HGX\noGpqalBKUVhYiMkkHcDjjdaa1tZWKisrASRJCSE6ddx9wtfX15OVlSXJ6TillCI2Npbc3FyqqqqO\ndXOEEFHsuPuU9/l8WK3WY90McYRiYmLweDzHuhlCiCh23CUoML6Fi+Ob/A6FEN05LhOUEEKI/k8S\nVB+qq6sjKyuLbdu2HeumHDVvv/0248aNw+/3H+umCCGOcz1KUEqp2UqpTUqprUqpOyLEZyilGpRS\nawOPX/d03RPJvffey3nnncfQoUM7rbN+/XqmT59OTEwMubm5/Pa3v0Vr3Wn9srIylFIRH/fff3+X\n7Vm4cCGjRo3CbrczatQoXnvttW7fw86dO7nwwguJi4sjPT2dW265BbfbHYyff/75mM1mnn/++W63\nJYQQXdJad/kAzMA2YAhgA74CRh1UZwbw1uGsG+kxceJE3ZmSkpJOY9GspaVFJycn62XLlnVap6Gh\nQWdlZekrrrhCr1+/Xr/yyis6Pj5eP/DAA52u4/V69Z49ezo8FixYoJVSevv27Z2ut2LFCm02m/U9\n99yjS0pK9D333KPNZrP+9NNPu9zXmDFj9PTp0/Xq1av1e++9pwcMGKBvvvnmDvUefvhhXVxc3MVP\nw3C8/i6FED0DrNLdfN539ehJgpoCvBuyfCdw50F1OktQ3a4b6dEfE9Qrr7yiU1JStN/v77TOggUL\ndEJCgnY6ncGyu+++W+fk5HS53sHOPvtsfc4553RZ58orr9Rnn312h7KzzjpLz5kzp9N1Fi1apJVS\neufOncGyZ599Vtvtdt3Q0BAsKy8v14DesmVLl204Xn+XQoieOdIE1ZNDfLnArpDlikDZwaYqpdYp\npf6rlBp9iOuilJqnlFqllFpVXV3dg2YdX5YtW8bEiRO7HL22cuVKTj/9dGJiYoJls2bNYvfu3ZSV\nlfVoP9u3b+eDDz5g3rx5XdZbuXIlM2fO7FA2a9YsVqxY0eU6RUVF5Ofnd1inra2N1atXB8sGDhxI\nVlYWS5cu7VGbhRAikt6aSeJLYKDWulkpdR7wH2D4oWxAa/0Y8BhAcXFx5yddIhh0x9thZVdPyue+\nS8celXjZ788/lOYBUF5eTk5OTpd19u7dS15eXoeyrKysYGzw4MHd7ufxxx8nIyODiy++uNt9tW87\ndF979+49pHXS09Mxm81h6+Xk5PQ4qQohRCQ96UFVAvkhy3mBsiCtdaPWujnwehFgVUql92TdE0Vr\naysOhyO4PHr0aOLj44mPj+fcc8/tlX14vV6eeuoprr/++mN+MXNMTAytra3HtA1CiONbT3pQXwDD\nlVKDMZLLHOCa0ApKqWxgn9ZaK6UmYSS+/UB9d+v2hu56NEc73hPp6enU1dUFlxctWhScSaH9kF52\ndjb79u3rsF77cnZ2drf7ePPNN9m7dy/f/e53u63b2b662k92djbLly/vUFZTU4PP5wtbr7a2loyM\njG7bIYQQnem2B6W19gI3A+8CpcDLWuuNSqmblFI3BapdDmxQSn0FPAS0n2mPuO7ReCPRbvz48ZSU\nlASXCwoKGDZsGMOGDSM31zgtN2XKFJYtW4bL5QrWW7x4MTk5OQwaNKjbffzjH/9g+vTpjBgxotu6\nU6ZMYfHixR3KFi9ezNSpU7tcp7S0lIqKig7r2O12Jk6cGCxzuVxs27aNCRMmdNsOIYTo1JGMsDha\nj/44im/dunXaZDLpmpqaTuvU19frrKwsfdVVV+n169frhQsX6oSEhA7DzD/77DNdWFioP/vssw7r\nlpeXa5PJpJ977rketWf58uXabDbr++67T5eWlup7771XWyyWDsPMH374YV1YWBhcbh9mfuaZZ+ov\nv/xSL168WOfk5IQNM1+yZImOj4/XLS0tXbbheP1dCiF6hj4YxSd6wUknncSkSZN48cUXO62TlJTE\n4sWL2b17N8XFxcyfP5/bbruNn/zkJ8E6TqeTTZs24XQ6O6z7xBNPkJSUxGWXXRZx2zNmzGDGjBnB\n5alTp/Liiy/y9NNPM3bsWJ555hleeuklJk+eHKxTU1PDpk2bgstms5m3336b2NhYpk2bxlVXXcVl\nl13GAw880GFfL7zwAnPnziU2NrZHPxshhIhEGUkuuhQXF+tVq1ZFjJWWllJUVNTHLeod77zzDrfe\neislJSWYzeY+3XdBQQE33XQTd95551HdT1VVFUVFRaxatarbUYfH8+9SCNE9pdRqrXXx4a4vPag+\nNHv2bObPn9/hHE5f2LhxI3a7ndtuu+2o76usrIwFCxb0aEi8EEJ05bi7o+7x7pZbbunzfY4ePZrN\nmzf3yb4mTZrEpEmT+mRfQoj+TXpQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJC\nCBGVJEEJIYSISpKg+lBdXR1ZWVls27btWDflqHn77bcZN24cfr//WDdFCHGckwTVh+69917OO+88\nhg4dGjHucrn49re/zdixY7FarR3mzuvKjTfeyNChQ4mJiQnerLC0tLTb9RYuXMioUaOw2+2MGjWK\n1157rdt1du7cyYUXXkhcXBzp6enccsstuN3uYPz888/HbDbz/PPP96jtQgjRGUlQfcTpdPL4449z\nww03dFrH5/PhcDi4+eabOf/8nt+Dqri4mKeffprS0lLeffddtNacffbZwftNRbJy5Uquuuoq5s6d\ny9q1a5k7dy5XXHEFn332WZftO//882lqamLZsmW88MILvPrqq2FTKH3nO9/hoYce6nH7hRAioiOZ\nCv1oPfrj7TZeeeUVnZKSov1+f4/qz58/X0+fPv2w9vXVV19pQH/99ded1rnyyiv12Wef3aHsrLPO\n0nPmzOlkDa0XLVqklVJ6586dwbJnn31W2+123dDQECwrLy/XgN6yZUuX7Txef5dCiJ5BbrdxfFi2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "lw=2\n", + "fs=14\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(6,8),sharex=True,)\n", + "# gridspec_kw = {'height_ratios':[2, 1]})\n", + "for M, csm in cosmo.iteritems():\n", + " if M!='LCDM':\n", + " w0, wa = M.strip('()').split(',')\n", + " if float(wa)!=0.0:\n", + " continue\n", + " bg = csm.get_background()\n", + " a = 1./(bg['z']+1)\n", + " H = bg['H [1/Mpc]']\n", + " #grow = bg['grow']\n", + " #grow_prime = bg['grow_prime']\n", + " D = bg['gr.fac. D']\n", + " f = bg['gr.fac. f']\n", + " #grow_interp = interpolate.interp1d(a,grow)\n", + " #p = ax1.semilogx(a,grow/grow[-1]/a,lw=lw,label=M)\n", + " #colour = p[0].get_color()\n", + " \n", + " p=ax1.semilogx(a,D_linder2(a,csm)/a,lw=lw,ls='--',label=M)\n", + " colour = p[0].get_color()\n", + " ax1.semilogx(a,D/a,lw=lw,ls='-',color=colour)\n", + " ax1.semilogx(a,D_hypergeom(a,csm)/a,lw=lw,ls=':',color=colour)\n", + " \n", + " ax2.semilogx(a,D/D_integral2(a,csm),lw=lw,ls='-',color=colour)\n", + " ax2.semilogx(a,D/D_hypergeom(a,csm),lw=lw,ls=':',color=colour)\n", + " ax2.semilogx(a,D/D_linder2(a,csm),lw=lw,ls='--',color=colour)\n", + "\n", + "ax1.set_xlim([1e-3,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([0,2])\n", + "ax2.set_ylim([0.9,1.3])\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='lower left')\n", + "# bbox_to_anchor=(1.0, 1.035))\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('Growthrate_w0.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/Thomas_PPF.ipynb b/class/notebooks/Thomas_PPF.ipynb new file mode 100644 index 00000000..47850661 --- /dev/null +++ b/class/notebooks/Thomas_PPF.ipynb @@ -0,0 +1,432 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "k_out = [5e-5, 5e-4, 5e-3]\n", + "models = ['PPF1','PPF2','FLD1','FLD1S']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64,'FLD1S':0.64}\n", + "cosmo = {}\n", + "\n", + "for M in models:\n", + " use_ppf = 'yes'\n", + " gauge = 'Newtonian'\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " if 'S' in M:\n", + " gauge = 'Synchronous'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(6e-11, 1e-09)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAECCAYAAAD+VKAWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdclvX+x/HXlz1FRAERlaU4cAGuTEEzxW2llZhm2tKs\ntDq/OnWydU6ao6XnVJYezZkjc6BouU0cqLgXIjIcIArIhpvr94fEaVgi3HBxw+f5eNwP5eK6rvt9\nw+399lrfS2mahhBCCGGmdwAhhBDVgxSCEEIIQApBCCFECSkEIYQQgBSCEEKIElIIQgghACkEIYQQ\nJaQQhBBCADoXglKqlVJqhVLqC6XUMD2zCCFEbVfuQlBKzVdKpSilTvxuephS6qxSKlYp9cZdVtMP\nmK1p2nhgdHmzCCGEqDhV3qErlFI9gCzgW03TAkqmmQPngAeBJOAgMAIwB6b+bhVjS/58B8gB7tM0\nrVu5wgghhKgwi/IuqGnaLqWU1+8mdwJiNU2LA1BKLQeGaJo2FRj4J6t6oaRIvi9vFiGEEBVX7kL4\nE42AxF99nQR0/rOZSwrlTcAemPEn8zwLPAtgb28f1KJFCyNFFUKI2uHQoUPXNU1rcLf5jF0I90TT\ntHhKPuz/Yp65wFyA4OBgLTo6ugqSCSFEzaGUulSW+Yx9llEy0PhXX3uWTBNCCFHNGbsQDgLNlFLe\nSikr4HFgnZGfQwghRCWoyGmny4AowF8plaSUGqdpWhEwEdgMnAZWaJp20jhRhRBCVKaKnGU04k+m\nbwQ2ljvRPSosLCQpKYm8vLyqespqy8bGBk9PTywtLfWOIoQwQboeVDaGpKQkHB0d8fLyQimldxzd\naJpGWloaSUlJeHt76x1HCGGCTH4so7y8PFxcXGp1GQAopXBxcZEtJSFEuZlEISilBiml5mZkZPzZ\n96s4UfUkPwchREWYRCFomrZe07RnnZyc9I5yR+bm5rRv356AgACGDx9OTk5Omab/8oiPjyctLY2e\nPXvi4ODAxIkT9Xw5QohayiQKobqztbUlJiaGEydOYGVlxZdfflmm6b88vLy8sLGx4YMPPmDmzJl6\nvhQhRC0mhWBk3bt3JzY2tszTf2Fvb8/999+PjY1NZcYTQog/ZfJnGf3GpEkQE2PcdbZvD59+WqZZ\ni4qK2LRpE2FhYX85PTc3l/bt2wPg7e3NmjVrjJtZCCHKoWYVgk5+/QHfvXt3xo0b95fTf9llJIQQ\n1UnNKoQy/k/e2P7sA14++IUQpkSOIQghRDVRbDBQbDDo9vw1awvBxHl5eZGZmUlBQQE//PADW7Zs\noVWrVnrHEkJUgsKcXLb/cz4Jm69jleyOS3ojbApsMZgZSHdIJdM9gXpdFH0/ehp7t/pVkskkCkEp\nNQgY5Ofnp3eUO8rKyjLK9Pj4eGNFEkJUUzfjElg/fj72Ua1wudUaT4s8rrif50qrw5jbF1NcBFqa\nLS5JzXFe6MK2734mvecRhi97BRunOpWazSQKQdO09cD64ODgZ/TOIoQQ5VGUl8/qJ2dgvaEVTXJC\nueh5DKvRifR6+0ns3cL+MH+xwcCOf35D6n9z8NkUyve+qwmY3YC2I/7sbsQVJ8cQhBCikp3buJMl\nvt/gtuJ+MpyuYv15Mk8lvsSgOa/+6e4gM3Nzer3zHGPjJ5P7ylHsc+ty+Ulztrwxp9JymsQWghBC\nmKo1T3+E9aI21FdNuf7EXkYteB0zc/PS7xsMBi5dukR8fDyFhYU4ODjQrFkzXF1dS+fpN+tlEocd\nZueQI7jPaMHajBkM+eJvRs8qhSCEEJWgKC+fbx+Yis/eUOI9TnL/gnb4PfgmcPs+LuvWrWPp0qVs\n3bqVOw3c2bJlS4YPH86ECRNwc3OjcddA+u+tx7qQCBrNbc8297n0eucvb0l/z2SXkRBCGFlm0lUW\ntp6Nz95QYtvt5vFTo/B78H4KCgqYM2cOXl5eDBs2jH379jF8+HDmzZvHtm3b2Lt3Lxs3bmTGjBk0\nbNiQDz74gKZNmzJlyhTy8vKo5+fFwO39SHVOJneqB8eXRxg3uKZpJvMICgrSfu/UqVN/mFabyc9D\nCH2lnr2gLWj4b+0n9ZO2dOh7pdO3bNmi+fn5aYAWEhKirV27VisqKvrLdZ07d04LDw/XAC0gIEA7\nf/68pmmaduHHn7W1tmu0xfXnaVlXU++aCYjWyvAZK1sIRmCM4a9//PFHgoKCaNOmDUFBQWzbtk3P\nlySEKIcrR04Sef82PK41I/u5I4xYM4WsrCwmTJhAnz59MDc3Z8OGDWzfvp3Bgwdj/qtjCXfSrFkz\nlixZwqZNm7h8+TIdO3Zk//79+PS+D6uJiTS67sOy/v8x3gsoS2tUl0d13UKwt7cv/Xt4eLg2a9as\nMk//xeHDh7Xk5GRN0zTt+PHjmoeHR7myVIefhxC10dVjp7UlLvO1TRabtM2vz9Y0TdNiY2O11q1b\na0op7ZVXXtFycnLKvf64uDjN19dXc3R01Pbu3atpmqZ9E/yutp3t2s6p8/5yWWQLQR/lHf66Q4cO\neHh4ANC6dWtyc3PJz8+vtJxCCOO5GZfA5gd3UT+9EVb/SKDPtIn89NNPdOzYkcuXL7N582ZmzZqF\nra1tuZ/D29ubnTt34u7uzsCBA4mNjWX4mue4XucqyTPMyb2RXuHXYRJnGZX1SuVJkyYZfTC59u3b\n82kVD3+9evVqAgMDsba2NsIrEEJUpuxr11nbYx2eqS0oePkkfd55mUWLFvHUU0/RsmVL1q5di4+P\nj1Geq1GjRmzatIlOnToxePBg9u3bh+PzqVhPb8OqkZ8yatO7FVq/SWwhaNX8Fpq/fMAHBwfTpEmT\nPwx//fvpv75j2u/L4OTJk7z++ut89dVXVf46hBD3pjAnl+VdF9IkuRVZYw/T/+OXmT17NqNHjyY0\nNJS9e/carQx+4evry6pVqzh37hwvvvgifT96kQteh3HeHkTKyXMVW3lZ9itVl4cpHEOoyPTExESt\nWbNm2p49e8qdpTr8PISoDQxFRdrX7d/XtrNdW/bI+5qmadqHH36oAdrQoUO13NzcSn3+KVOmaIC2\ncuVK7dB/v9e2slX7pvM7d5wXOYZgWtLT0xkwYADTpk2jW7duescRQtzF0sH/xC+mO3Fdd/D4qrf5\n5JNPePPNNxk5ciQrV66s9Nvh/uMf/6Bjx46MHz8er8EhxLWOonH0fSTsiS73OqUQqok5c+YQGxvL\n+++/X3o6akpKit6xhBB3EPHSJ3hs7E6s3wGe3PkW33zzDa+88gqPPPIICxYswMKi8g/PWlpa8vXX\nX3Pjxg3efvttenzUDfNic358bUO516lub02YhuDgYC06+rftd/r0aVq2bKlToupHfh5CVK7or1dy\nfYIjKS6XeOjIQ0Ts3EZ4eDh9+/Zl7dq1WFlZVWmel1++fdzi0KFDRIdH0iiuHR1jmtOg5f9OwlFK\nHdI0Lfhu65ItBCGEKKNrx88Q/5qBbNtMHljXlegzJxk1ahTdu3dn9erVVV4GAO+99x7Ozs689dZb\nBL3eArsCOyJeWFyudUkhCCFEGRTl5RMxMJI62fXw+Gcht+pY8fDDD9O8eXPWrl2LnZ2dLrnq1q3L\n66+/zqZNm8ht5soFr8M4HWhDXkbmPa9LCkEIIcrg2wem4pPQnvThB/Eb0Yf+/ftjZWVFREQEdevW\n1TXbxIkTcXd356233qLRcEucs13Y/H/3fuq6FIIQQtzF+gmz8Nkbyvl2uxj831cZMmQIV65cYd26\ndXh5eekdDzs7O95880127tyJbb82pDpd4cbGez/LSQpBCCH+wrFlGzCf15IE9zOM3Poi48ePJyoq\nikWLFtG5c2e945UaN24cLi4ufPr5Z+R2Pot3UhuOLbu3M46kEIQQ4k/cupLCyYlpFFjmEbIikAXf\nLWPBggVMmTKFYcOG6R3vN+zs7JgwYQJr166l2QudKTAv4MCsQ/e0DpMoBKXUIKXU3DvdVag6uNNw\n1jt27GDgwD/eDDs0NBR/f3/atm1LixYtmDhxIunp/xuUauzYsbi6uhIQEFCVL0EIcQff9fsKtxuN\ncXw1hSSzQl5++WUGDBjAO++8o3e0O3rhhRewsrLi203rSPA9guupduTfyirz8iZRCFo1H8vo12MT\nxcTE3HWf4pIlSzh27BjHjh3D2tqaIUOGlH5vzJgxREZGVnJiIcTdrJ84C7+j3YnvuouWzw1m2LBh\neHl5sXjxYszMqudHp5ubG+Hh4SxatIj6fc2pk1uXre/MK/Py1fNV1RJWVlZMnz6dhIQEjh49CkCP\nHj2oV6+ezsmEqN0ubouCec1IdDvHsLUTGT58OLdu3WLNmjW6n1F0N8899xzZ2dlcaWZDht1NLm/I\nK/OyJjH8dVlNipxEzFUjD3/t3p5Pw/56+Ou7DWf9V8zNzWnXrh1nzpyhXbt2FcoqhKi4orx8do4+\nhGuxD8FfevP+R9PYu3cv3333nUnsyu3UqRNt2rRh/rcLea7lQJrEdC3zsrKFYAR/NZx1WZjS8CFC\n1HRLBk7FKzmAnMdiSLAtZtasWUyYMIFHH31U72hlopTi2WefJTo6Gse+jlgZyn71dI3aQrjb/+Sr\nI4PBwPHjx2X8ISGqgZ8//hbPbd2J9Y9iwLQxdAgMJCAggJkzZ+od7Z6MHDmSv/3tb+xIO0dPJ3co\n4/k4NaoQTE1hYSFvvfUWjRs3pm3btnrHEaJWuxEbz+X3LMExhaHrHmfUuHFkZGTw008/VejWl3pw\ndnZm6NChrFy1iqAW7rC/bMvJLqNKtHXrVjw9PUsfUVFRwO32btu2LQEBAWRnZ7N27drSZUaMGEHX\nrl05e/Ysnp6ezJtX9jMEhBDlU2ww8P3AZdS75YrHO4UsiviByMhIZs2aZRLHDe4kPDyctLQ0iu46\nxun/yBaCEWRl/fE839DQUHJzc/8wfceOHX+5rmXLlhkrlhCijNY8NR2/s1251GsHbUIH83qXLgwZ\nMoTx48frHa3c+vbti7OzM7tvlP22mlIIQoha7czardh+146LjU7w0Hcv0rnbfbi6ujJv3jyUUnrH\nKzcrKyuGDRvG0qVLy7yM7DISQtRaeRmZHHzuAgazIkK/DeLV1/+P8+fPs2jRIlxcXPSOV2Hh4eFk\nZ2eXeX4pBCFErbW038c0vtYcxp3n4PVE5s+fz5tvvknPnj31jmYUPXr0wM3NrczzSyEIIWqlre98\niVdUD2Lb7qbNa4/w7LPP0qVLl2o7TlF5mJmZ/WZonLvOX4lZhBCiWrpy5CSZs+pzrV4iwzaMIzw8\nHE3TWLp0KZaWlnrHM6qhQ4eWeV6TKITqPtqpEMJ0FBsMbBy2Cfu8OjSf4cjHX39JVFQUX375Jd7e\n3nrHM7pevXqVeV6TKITqPtppVQx/vW/fPjp37kz79u1p2bIl7777bmW/LCFqpO+G/QvfuGBS+0eR\n7Veff/3rX4wZM4YRI0boHa1SWFtbl3lekyiE6q4qhr9+8sknmTt3LjExMZw4ccJkxlURojo5svAH\nXNZ34YLXYfrOm8DIkSPx9fVl9uzZekerFqQQdHQvw1+npKTQsGFD4PYWSatWrao0qxCmLvvadU6/\nmk6OTRZhK3vz7HPPce3aNZYtW4aDg4Pe8aqFGnVh2vlJ58mKKfvdgcrCob0DzT5t9pfzVMXw15Mn\nT8bf35/Q0FDCwsJ48sknsbG595toC1FbLev3H/zSelD45ik2HEplzZo1zJw5k6CgIL2jVRs1qhD0\n8ssuo/Iqy/DXU6ZMYeTIkWzZsoWlS5eybNmyuw6DIYS4LWLSJ/gd6cGFzjvoEj6cwcHB9OnTh8mT\nJ+sdrVqpUYVwt//JV0f3Mvy1r68v48eP55lnnqFBgwakpaXViKsphahMl3YfoPgrHxJdz/PI2gn0\neLA3derUYeHChdX2Vph6kZ+GjgoLC/n73/9epuGvIyIiSrckzp8/j7m5ebW/lZ8QeivKy2db+H4s\nDVYE/rsxb//zA44fP86CBQtwd3fXO161I4VQiYw5/PWiRYvw9/enffv2jBo1iiVLlmBubq7L6xLC\nVCwdPBXvpDbcGnaYOOtC5syZw+TJk+nXr5/e0aolZUq3bwwODtaio6N/M+306dNyt7FfkZ+HELdF\nfb6E7MluxPsdIuyncNp36ECTJk2Iioq6p3PzawKl1CFN0+56Z4QadQxBCCEAbsYlkDhFYWafxuAf\nHmHEmDHk5uaybNmyWlcG90J2GQkhapzVAxfjkumG29u5zF+7im3btjF79mz8/f31jlatyRaCEKJG\nWT16Kn6n7yM+dAetQvrzdrdnePTRR3nqqaf0jlbt1YhC0DTNpO9sZCymdDxIiMpwavUW7Ja3J77R\nCQZ/9wIdu3ahUaNGfPXVV/IZUQYmXwg2Njal5+PX5l+4pmmkpaXJ1cui1sq9kc7h8Qk4mTcgdElH\nXnplMvHx8ezatUtO0S4jky8ET09PkpKSSE1N1TuK7mxsbPD09NQ7hhC6WNr3M3xTQ8iZFMOuSxks\nWbKE9957j27duukdzWSYfCFYWlrWyDHMhRBlt+nVz/CNDiE2aCfdn3+cR4OCCAkJ4a233tI7mkkx\niUJQSg0CBvn5+ekdRQhRzVzafYDCL7y4Uf8CD//wDA8MGoCNjY1cvFkOJnHaaXW/QY4QQh+/DE1h\nVWRF+y8a8e70acTExLBw4UIaNWqkdzyTYxKFIIQQd7JkQMnQFMMPE2uZz+zZs5k8eTIDBgzQO5pJ\nMoldRkII8Xu7ZyzAc3t3Yv2jePBfIwkMCiIwMJCpU6fqHc1kSSEIIUzO1aOnSfnADkOdawxZ/xiP\njB5NQUEBy5cvl6EpKkAKQQhhUory8tk4eDOeOa1wnpPOnMUL2b17N4sXL6ZZM9O7J0p1IscQhBAm\nZXG/qfgktOfGQ/vJbuHKBx98wJgxYxg5cqTe0UyebCEIIUzG1ilf0mRHD2Jb7mXg508TFBxM8+bN\nmT17tt7RagQpBCGESbi0+wBZs9zIqZfII5FPMnzUKG7cuMHGjRtxcHDQO16NIIUghKj28m9lseOx\naFwLvfGZZ8Un33zF1q1bmT9/Pu3atdM7Xo0hxxCEENXe4gdn0vRKK/JGHyPJyYwPPviAsWPHypDW\nRiZbCEKIam3Dix/juz+U2A67ePDtJwkMDKRt27bMmTNH72g1jhSCEKLaOr3mR9TXzUl0O8ewiOfo\nO3QwRUVFrFq1CltbW73j1ThSCEKIaik9PomYpy9jb1aXLgtb8vaH/+TAgQOsXr1arjeoJHIMQQhR\n7RgKC1nVexmuNz1xeP0a0TeSmDNnDq+88goPP/yw3vFqLNlCEEJUO4v6/Au/C6EkD9xJ6yFDGHjf\nfXTr1o1p06bpHa1Gk0IQQlQrGyd/iteOUGJb7mXwN8/TqXNn6tWrx6pVq7C0tNQ7Xo0mhSCEqDZO\nrNgE/2lGout5hv84lodGjODq1avs3r0bd3d3vePVeFIIQohq4UZsPCeev46thQPdlrTmnRnT2L59\nOwsXLqRjx456x6sV5KCyEEJ3hTm5rHnwexqke+D0Zhq7k8/z2Wef8fLLLzN69Gi949UasoUghNDd\nwh7T8YsP4eqw3fj2CeO57t3p2bMnM2bM0DtarSKFIITQ1bKH3sfvUAgXOu4k7NOn6dy5M+7u7qxY\nsUIOIlcxKQQhhG62vPlvXNd244L3IYZtepGeD/YmIyODn3/+mfr16+sdr9YxiWMISqlBSqm5GRkZ\nekcRQhjJ0cXrKfy4KVddLvHQ1uGMeXocR48eZfny5bRt21bveLWSSRSCpmnrNU171snJSe8oQggj\nuBx9nHMvZFFgkc9937Vk2hdz+OGHH/jkk08YMGCA3vFqLZMoBCFEzZGZdJWfBu6lTk493D/MY2vc\nSWbMmMGECRN48cUX9Y5Xq8kxBCFElSnMyWVljyV4pbQnb+IxcgPaMb5vX8LCwvjss89QSukdsVaT\nQhBCVIlig4GFXWbhd/F+rj6ym1ZPD6F79+74+/uzfPlyLCzk40hv8hsQQlSJb3t/gN/xUC5238ED\nH4+la9euODo6snHjRuT4YPUghSCEqHQrHv/n7QHrWv/MkFUT6BESQnZ2Nnv27KFJkyZ6xxMlpBCE\nEJUq8rXPcVnRlbimRxi+7Tn6PzSEuLg4tmzZQkBAgN7xxK9IIQghKs2uafPhs+ZcbhDHkO2PMPqZ\ncURFRbFixQpCQkL0jid+RwpBCFEpDnzxHVnvuJFRJ4VeGzvz5rR/sW7dOj7//HOGDRumdzxxB1II\nQgijO7ZsA1dftaHA5hZdVjfn8xVLmDt3Lm+88YZca1CNSSEIIYzqXMQOYp/NQ5kpAr5twJI9PzF9\n+nSef/55PvzwQ73jib8ghSCEMJpLuw9wdOQVbIrsaDwXIi8e5+2332bUqFH8+9//lgvPqjkpBCGE\nUSTtj2Hv0DM45bpQb1YmhwpymDx5Mg8//DDz58/HzExGyqnupBCEEBWWtD+G3f2PUfdWA+zeu0x8\nfXueCX+GsLAwli5dKlchmwipbCFEhdwug6OlZXDF254nnniC7t27s3r1aqytrfWOKMpICkEIUW7J\nB46VlIErdu9dJrmpLSNHjqRbt25ERERgZ2end0RxD6QQhBDlknzgGLv6HcH5liu2714msbE1o0aN\nokePHmzcuBEHBwe9I4p7JIUghLhnCXuiS8vA5t3LJHhaMnr0aEJDQ4mIiMDe3l7viKIc5EiPEOKe\nnNu4k5jwZJxyG2Dz7mXiPcwZO2YMvXr1Yt26dbKbyITJFoIQosyOLdvAicdSsc23x3nGTY475vDU\nU0/Ru3dv1q9fL2Vg4qQQhBBlcuCL74gfZ0BpCs+v4KeMOF566SWGDh3KunXrsLW11TuiqCApBCHE\nXe2cOo/rkxzIt8yhxdK6LD66iylTpjB69GhWrlyJjY2N3hGFEUghCCH+0ubXZ5M3xZMMhzQC13gx\nc+1SPv74Y1588UX++9//ykVnNYgUghDiT60M/xcWM1qR6pzIfRvb8MYXHzN//nymTJnCZ599JsNR\n1DBS7UKIPyg2GPj2gQ/w2hlKXJMYev3wAE+9+jLbt2/nk08+YdKkSXpHFJVACkEI8Rv5t7JYdN9n\n+J24fQ/knisfYeDwYZw7d45FixbxxBNP6B1RVBIpBCFEqfT4JL4PXYnfpW5c7LGDoE8G06P3A2Rl\nZREZGUmvXr30jigqkRSCEAKAuJ/2EjXiNE3T2pLy2B48x3UjJDQUJycn9uzZQ5s2bfSOKCqZHBES\nQvDzx99ybOhV6t5yw/B/p0kLcaF///54e3sTFRUlZVBLSCEIUct9P2Ya2f/nToFFHg2/MfB9+gkm\nTJhAnz592LVrF56ennpHFFXEJApBKTVIKTU3IyND7yhC1BiGwkLmd3uXegu7kNzwLAFrvXj5q5l8\n9dVXvPHGG6xbtw4nJye9Y4oqZBLHEDRNWw+sDw4OfkbvLELUBDfjEvj+we/wjQsltu1u2szpSdjI\nx0lNTWXp0qWMGDFC74hCByZRCEII4zm6eD2nX0rHKz2Q5MG7sH/Uj559++Di4sKePXsICgrSO6LQ\niUnsMhJCGMcPT3/ElbEW2BTYY/Z+HMdb5hD+xEgCAwOJjo6WMqjlpBCEqAXyMjL5Jvg96s7rzLUG\nF2m6vA7vb13KRx99xHPPPce2bdtwc3PTO6bQmewyEqKGS9h9kO2PReN3JYQLHXfi+89uDBgzmvT0\ndBYuXMjo0aP1jiiqCSkEIWqwzf83m7x/e+Ja6EX6MwfIaOFI7/5heHt7ExkZSdu2bfWOKKoR2WUk\nRA2UeyOdeZ3exXpGG7Ls0qn7ZRaLbxzg1VdfZfDgwURHR0sZiD+QLQQhapiTKyM58kISvqmhxAbu\nwvefnQmf8DyJiYnMnDmTV155BaWU3jFFNSSFIEQNUWwwsDJ8Kk5rgqhj0YCsl4+Q7Kzx/KABNGnS\nhN27d9O1a1e9Y4pqzKR2GeWmppF98DBkZekdRYhqJWFPNP/1+wy3Ffdzxe08DRaaMS16Ne+++y7h\n4eHExMRIGYi7MqkthKIEKw52yuSm/WZu2V+jwOE6ZnWysHMxUK+RDY383fEO9MeuuR94eoKVld6R\nhahUxQYDa5+bicWSljQqakXy4F0U9XMj7Onb9yxYsmQJ4eHhOqcUpsKkCsHQIJdLnfZReFVhnmZP\nnRt+OMc3wLLYEoDUksdN+yPcsttEgV0qZg4Z2DvnU8/Nkka+9fEK8MGumS80bgzu7mBurutrEqK8\nrsacYsOj6/E735kE9zM0eb8ui1bvZfP4zYSGhjJ//ny8vb31jilMiNI0Te8MZRYcHKxFR0f/ZlpR\nYRFJsUkkHoklNSaBW7EZFCYXY55qi326M84Z9UsL4xc37a+TaX+VQutrmNnewL5OLvVcFI2a1sWr\nRRPsfL3BywtatQK5gbioZooNBn4YNx2LFS2xzbfn8gM/k/+QO39743WKioqYPn0648ePl/sdi1JK\nqUOapgXfdT5TL4S7KS2MkwmkHk/m1pk0ChOLME+xxv5GXeplNMCi+Lcf+jftr5PhcBmD/Rkaed6i\nU2hz6oX1hqAg2Q0ldHUuYgd7JsTgk9CeBPczNHzDlo8jlxMZGUlISAjz58/Hx8dH75iimpFCKKOi\nwiISzyWSeCqR1LMp3Dpzg6JLBVgm2uCR2BTLYksMysBllwsUOB7DveFNOt7vg2u/B6BzZ7C1NWoe\nIe6kMDuH5Y9Mp8HWLhSbGUjvH01239tbBYWFhUybNo0XXnhBtgrEHdXIQnB2dtZeffVVAgMDCQoK\nqvSxV7Iysji44SCXIs7DfvC45IWVwYpiirniEkeu4zHcXFPp2K0p7mG94L77wMGhUjOJ2mf39P9y\naWYxnqm+XPCJxvvdprwz93P27NlDjx49mD9/Pr6+vnrHFNVYjSwEGxsbLT8/v/RrDw8PgoKCCAwM\nLC0JDw+PSrvoJicrh+iN0VzccI7ifcU0vNgEmyIbAC7Xu0iO41Ea1L9KUCcPPPv3gvvvh7p1KyWL\nqPnid+zjp+e343e2KzccUlEjL3KwXjozZ87E0dGRGTNmMGbMGNkqEHdVIwshODhY27ZtGzExMRw+\nfJhDhw7TEw8wAAASHUlEQVRx+PBhzpw5Q3FxMQCurq6lJfHLn02aNKmUksjLzeNQ5CEubDhL0d5C\n3OMaY1dgB8DVuglk1TlKvXrJBAbWx2vYAOjZE2xsjJ5D1CzZ166zcsRs3Pd0wazYnOT79uIyvhWT\n//F34uLiGD16NDNnzqRBgwZ6RxUmosYWwp2OIWRnZ3P06NHSgjh06BCnTp3CYDAA4OLi8putiMDA\nQHx8fIxeEoUFhRzacojzEWcp2J2Le2xj7PPtgdtbEHlO+2neLIsuw3tiMXgQuLoa9fmFaSs2GNgw\n8RMKlnpSP9Od2GYH8HvLm0/XLGHt2rU0b96cL774gl69eukdVZiYWlUId5Kbm8uxY8c4fPhwaUmc\nOHGCwsJCAJycnP5QEs2aNTPq5ndRYREx22I4s+4khVvyaXLBF3PNnEzbdFLq78fVPZ7uYS1xfvRh\naN0aZHyZWmv7e1+R+AU0ueZPcv046o3PY3tePJ9++ilWVla8+eabvPrqq1hbW+sdVZigWl8Id5Kf\nn8+JEyd+s7vp2LFj/HJcwsHBgQ4dOhAYGEhwcDC9evXCw8PDWPG5fvU6exbt4frqZNyONsExz5FC\ns0ISXY9i7XyUjl2caB4+FHr0kNNba4kD/1nGiY+u4ZPQnjTHFIoGnCO9uwtT3nuXlJQUxowZw4cf\nfkjDhg31jipMmBRCGRUWFnLq1Knf7G46evQoubm5AAQEBNC3b1/69OlD9+7dsTXSaaaFBYVE/RDF\n+WWnsP/ZEffURgBccY4n13k/zZrn0PXxB7AYNBDq1TPKc4rq4+CX33F0ZgJ+FzqSaZtBRs8Y6oxu\nxbvTPiQmJoZu3brx6aefEhx813/DQtyVFEIFFBUVcfz4cX788Ue2bNnC7t27KSgowNramh49epQW\nREBAgNGOQ5yJPsOhhfsp2JxH4wu+WBRbkGmbQUqD/bh5JNDjoQ44PT4cmjQxyvMJfUR9sohTn6fg\nGx9ElvUtrnc5hNuEtnw4+xP27NmDl5cXU6dO5bHHHpMhqoXRSCEYUXZ2Nrt27WLLli1s2bKFU6dO\nAdCwYUP69OlDnz596N27N65GOkh849oNdi/aRerqpNu7lnLrUGBeQKLbIRxcT9PtwaZ4Pvn47aE1\n5EOj2is2GNg25SsSFhfgk9CeWzYZ3Oh2hKYvBjP1P7PZsmULDRs25B//+AdPP/00VrK7UBiZFEIl\nSkxMLN16+PHHH7lx4wYAgYGBpQXRrVs3o/zDLiwo5Ofvf+bCopPUiapPg5tuFFNMouspVP0jBHV1\novW44bevmpbz0auV3LSbRLz8H/I3e9Doujfp9jfIvP8YzV7twYwv5rBmzRpcXFx44403mDBhAnZ2\ndnpHFjWUFEIVMRgMHD58uHTrYe/evRQVFWFvb09oaCh9+vShb9++NG/evMK7AIqLizm66yhHvzmI\n+XZLGl++PZLl1boJ5NTfj3+7YrqMHYz5A71AzkbRTVLUYba+tZY6B9rinO1Ccv2LWIddpd6IDnz8\nnzlERETg6OjIa6+9xqRJk6hTp47ekUUNJ4Wgk8zMTHbs2FFaEOfPnwfA29ubgQMHMmDAAEJCQrAx\nwgVqcSfi2Pf1LvI25tEkzg+LYgtu2qeRVv8A7r7Xuf/hTtQd/pBc71AFDAUFbHv3ay6tzMYrLhCL\nYgvimsbgOcqa3MCGTJ85g71791K/fn1eeuklXnjhBerJyQKiikghVBMXL15k8+bNREREsHXrVnJz\nc7G3t6d3794MHDiQ/v37G+XU1utXr7N73nbSVl2l4Wkf7PPt/3dKa8NzBIa40XLsoxAQIMcdjOjS\njn3s/NcmbA7645rhQaZtOqntjhL8SidiclKYPn06p06domnTprz22muMHTtWdg2JKieFUA3l5uay\nfft2IiIi2LBhAwkJCcDtYw8DBgxg4MCBBAcHV/jiuPy8fKLW7OXC4hPYHXCm4XVPAK7VTSSrwWG8\n2hTRbXQfbPo+KENplMP1MxfY9s5Ssvc60TQpADPMiG90Aqd+uQT97SEWrfyOL7/8kqSkJNq0acPr\nr7/Oo48+iqWl5d1XLkQlkEKo5jRN4+TJk2zYsIGIiAj27t1LcXExrq6u9O/fnwEDBtCnTx+j7F8+\nd+Qc0fN2k/djPp4X/LAyWJFjlcMV1yPYNkwi4H43AkYOwqxDBzkw/ScyLiay66NlXPtJo0l8B6wM\nVlyrm0xu+1g6vtyNW+4OzJkzh5UrV1JQUEDv3r2ZNGkS/fv3l9NHhe6kEExMWloamzdvZsOGDURG\nRnLz5k0sLCzo0aMH/fr1o1+/frRq1arCHy6ZNzPZs3gHl1fE4XTCnQbp7gCk293geoOj1GmSSvve\nvjR/4iGozTda0TTOrdtK9Dd7yDvmhGdya6wMVqTb3yCt1Qlaj/Gn+WO9WblqFV9//TWHDh3C0dGR\nMWPGMGHCBFq0aKH3KxCilBSCCSsqKiIqKqp019LJkycB8PT0JCwsjLCwMB544AHqGmFo7XMx5zi6\nJIqMrTdxOd8E56zbBzpT61wmo8EJnL1u0bJbU1o8/CBmAQE1+h7U6bEXOfjNBhK2X8cu1oeGN5oC\ncNU5kezmF/EZ2Iiukx5n5897WLBgAWvWrCE/P5+AgAAmTJjAE088gaOjo86vQog/kkKoQZKSkti8\neTORkZH8+OOPZGRkYG5uTteuXUsLokOHDhU+9lBcXMzJn09wfHEUuXvycYvzxiHv9gfcLZtMUuud\nxcz1Mg1bWtG+fxBu/Xub7rAamkbynoMcXrSdlMM5WCV64pHqg7lmfvtgvOcprNtnEvhMd1oMCOHY\nsWMsX76cRYsWkZycTL169QgPD2fMmDEEBgbKbiFRrUkh1FBFRUXs27ePyMhIIiMjOXToEAANGjSg\nb9++pVsP7u7uFX+uwiJO/nyCsz9Ek7kvA9uL9WmY0hgzbhfPNackbtW9iLlLOs5NFE3be9Kid2ds\nO7SD6nQmTXExVw8c4eTan7l8OJX8SzY4XmuKW/rtg+15FnlccY8F3zQahzak4zODqePhxpEjR1i5\nciWrVq0iNjYWc3NzwsLCGDNmDIMGDZKRR4XJkEKoJVJSUtiyZQuRkZFs3ryZ69evA+Dv709ISAih\noaGEhIQYbdTW9OvpHFm/j8SNpyk4oahzzZX6N91LS8KgDKQ6JZPllIRyysS6bhF1GlrSwLs+Hm28\naBTUBguvpsa9cE7TyL98lcT9R7lyIp60C9fJTMqj4Ko1ljfrUTfDA6cc59LZbzikctM1AasWOfj2\nb07gkwOxcbCnsLCQ/fv3s379elatWkVcXBzm5ub06tWL4cOHM3ToULkpjTBJUgi1UHFxMYcPH2bH\njh3s2LGD3bt3k5mZCYCfn19pOYSEhNC4cWOjPW92ZjZn9p0gYdtJ0o9dxxBvgX1KfepluGFd9NsP\nfoMykGF/gzyrWxRYZ2OwykGzzkPZFmBmXYwyA8xAmYMyA2WmKC7k9qPIDK3QDAotUHk2WOTZY5Xn\ngF1+HRxznEpL6Rc37dPIqHuVogYZ2HhqNOzckNYPh+De6n/3H75w4ULpRYTbtm0jMzMTCwsLevfu\nzbBhwxg6dCguLi5G+1kJoQcpBIHBYCAmJoadO3eyc+dOdu3aRXp6OgA+Pj7cf//9BAcHExwcTLt2\n7Yx+wVRxcTGpyakknYgjJSaOjHOp5CTlUZxmBtmWWORaY5lni02+PbZ5DtgU2PzhQ730tSgDhRYF\nFJoXUmhRQJ7NLfJtszHY5YJ9AeZ1NewbWVPXrx5ubbxo0qUtzg1/+795TdO4dOkS+/fvZ+fOnWzZ\nsoULFy4A0LRp09JRbHv16oWzs/OdYghhkqQQxB8YDAaOHz/Ojh072LlzJ1FRUVy7dg0Ac3NzWrdu\nTVBQUGlJtG3b1ihDbNyL4uJiDEUGigqLKCoqothQjJ2DHZZW935RV3p6OgcPHmT//v3s37+fAwcO\nkJKSAoC9vT09e/YsHWuqWbNmcmBY1FhSCOKuNE3j8uXLREdH/+bxy3EICwsL/P398ff3p3nz5r/5\ne3XajVJYWEhsbCynTp3i5MmTnDp1iqNHj3LmzJnSefz9/encuXPpo23btnLlsKg1pBBEuWiaRmJi\nYmk5nDx5krNnz3LhwgWKiopK53NxcaF58+Z4eXnh4eGBh4cHDRs2LP27h4cH9vb2Fc5TUFBAamoq\n165dIyUlhWvXrnH58mUuXrzIhQsXiIuLIyEhgeLi4tJlvL29CQgIoFOnTnTu3Jng4GDZBSRqNSkE\nYVRFRUVcvHiRc+fOcfbs2dI/ExMTSU5OJi8v7w/LWFpa4uDggL29/W8eNjY2aJqGpmkUFxeXPgoK\nCsjKyiIrK4vs7GyysrLuuF64fZqtr68vPj4++Pr60qxZM1q3bo2/v79RikiImkQKQVQZTdPIyMjg\n8uXLv3mkp6eXfrBnZ2eXPvLz8zEzM0MphZmZWenfrayscHBwKC0RBwcHHB0dcXV1xdXVFTc3t9KH\ng4OD3i9bCJNR1kKwqIowomZTSlG3bl3q1q1Lq1at9I4jhCgnGdpSCCEEIIUghBCihBSCEEIIQApB\nCCFECSkEIYQQgBSCEEKIElVWCEopH6XUPKXUql9Ns1dKLVRKfa2UGllVWYQQQvxRmQpBKTVfKZWi\nlDrxu+lhSqmzSqlYpdQbf7UOTdPiNE0b97vJDwOrNE17Bhh8T8mFEEIYVVkvTFsAzAG+/WWCUsoc\n+DfwIJAEHFRKrQPMgam/W36spmkpd1ivJ3C85O+GsscWQghhbGUqBE3TdimlvH43uRMQq2laHIBS\najkwRNO0qcDAMj5/ErdLIQY5niGEELqqyIdwIyDxV18nlUy7I6WUi1LqS6CDUurvJZO/Bx5RSn0B\nrP+T5Z5VSkUrpaJTU1MrEFcIIcRfqbKxjDRNSwOe/920bOCpuyw3F5gLtwe3q7SAQghRy1VkCyEZ\n+PWNeT1LpgkhhDBBFSmEg0AzpZS3UsoKeBxYZ5xYQgghqlpZTztdBkQB/kqpJKXUOE3TioCJwGbg\nNLBC07STlRdVCCFEZSrrWUYj/mT6RmCjURMJIYTQhZzqKYQQApBCEEIIUcIkCkEpNUgpNTcjI0Pv\nKEIIUWOZRCFomrZe07RnnZyc9I4ihBA1lkkUghBCiMonhSCEEAKQQhBCCFFCCkEIIQQghSCEEKKE\nFIIQQghACkEIIUQJkygEuTBNCCEqn0kUglyYJoQQlc8kCkEIIUTlk0IQQggBSCEIIYQoIYUghBAC\nkEIQQghRQgpBCCEEIIUghBCihBSCEEIIwEQKQa5UFkKIymcShSBXKgshROUziUIQQghR+aQQhBBC\nAFIIQgghSkghCCGEAKQQhBBClJBCEEIIAUghCCGEKCGFIIQQApBCEEIIUUIKQQghBAAWegcoC6XU\nIGAQkKOUOl1FT+sEGHPwpIqs716XLev8ZZnvbvP81ffrA9fLkKO6Mfbvviqfq7zrK89y8j6rmKp8\nnzUr01yappnMA5hrqs9VkfXd67Jlnb8s891tnr/6PhBd1e8RvX9Xej9XeddXnuXkfVa9fvfGeC5T\n22W03oSfqyLru9dlyzp/Wea72zxV+TupKrXxfVae5eR9VjHV7n2mStpDCKNTSkVrmhasdw5Rs8n7\nzHhMbQtBmJa5egcQtYK8z4xEthCEEEIAsoUghBCihBSCEEIIQApBCCFECSkEUWWUUj5KqXlKqVV6\nZxE1k1JqqFLqa6XUd0qpPnrnMTVSCKJClFLzlVIpSqkTv5seppQ6q5SKVUq9AaBpWpymaeP0SSpM\n1T2+x37QNO0Z4HngMT3ymjIpBFFRC4CwX09QSpkD/wb6Aa2AEUqpVlUfTdQQC7j399g/Sr4v7oEU\ngqgQTdN2ATd+N7kTEFuyRVAALAeGVHk4USPcy3tM3fYRsEnTtMNVndXUSSGIytAISPzV10lAI6WU\ni1LqS6CDUurv+kQTNcQd32PAi0BvYJhS6nk9gpkykxjtVNQMmqalcXvfrhCVQtO0z4HP9c5hqmQL\nQVSGZKDxr772LJkmhLHIe6wSSCGIynAQaKaU8lZKWQGPA+t0ziRqFnmPVQIpBFEhSqllQBTgr5RK\nUkqN0zStCJgIbAZOAys0TTupZ05huuQ9VnVkcDshhBCAbCEIIYQoIYUghBACkEIQQghRQgpBCCEE\nIIUghBCihBSCEEIIQApBCCFECSkEIYQQgBSCEEKIEv8PfxoOi5AoSfsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "colours = ['r','k','g','m']\n", + "for i,M in enumerate(models):\n", + " cl = cosmo[M].raw_cl()\n", + " l = cl['ell']\n", + " \n", + " plt.loglog(l,cl['tt']*l*(l+1)/(2.*np.pi),label=M,color=colours[i])\n", + "plt.legend(loc='upper left')\n", + "\n", + "plt.xlim([2,300])\n", + "#plt.xlim([20,300])\n", + "\n", + "plt.ylim([6e-11,1e-9])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3, 0.63)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEACAYAAABRQBpkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VFX6xz9nenoPCQkkdBLA0KuASBEVZakC9op9XcuK\nZe3s6qK/dW0rWNa2lrWhi4qigIqiIELoJYSWAOl9Jpm5c8/vjwmTTO4AobfzeZ55zJz7veeeG8P9\n3vO+pwgpJQqFQqE4szGd6AYoFAqF4sSjzEChUCgUygwUCoVCocxAoVAoFCgzUCgUCgXKDBQKhUKB\nMgOFQqFQoMxAoVAoFCgzUCgUCgXKDBQKhUIBWE50A4IRHx8v09PTT3QzFAqF4pRhxYoVxVLKhMM9\n/6Q0g/T0dH777bcT3QyFQqE4ZRBC7DiS81WYSKFQKBTKDBQKhUKhzEChUCgUKDNQKBQKBcoMFAqF\nQoEyA4VCoVCgzEChUCgUKDNQKBQKBcoMFAqFQoEyA4VCoVCgzEChUCgUnKRrE+lOZ9By58qVCIsV\nYbdhstsRdjvmiAhMYWHHuYUKhUJxenFSmoG7oiZo+cYb7sJU58SkuzF7PQipEX/dtSTefbdBu2XY\nuSBAWK2YbDawWomZNImYqVMN2t0PPogwmRFWK8JmQ1ithPXvR9jAgQZt5ZdfgsXi15psNqwpKVhb\ntjRovRUVCIsFrFaExYIwqY6YQqE4OWmWGQghRgP/BMzAq1LKJ4NozgGeBaxAsZRyaHPPbYpTM/H+\nsp3YrSbsFjN2iwm72cSa7n9GN9sahFKnfUkRZ9dp2C0mLGZTfbHO73EXI6SOSfdg8roxu9202VZH\nTJNrSSnJWbwFoXsx625MuoZJ95CM3WAGUkry77zL0N74m28i4fbbDdrN/foHCk0m4m+9hYSbbzZo\nc8+/ACxmX8/HYkFYLERPmkT0hPEG7Z4ZM3yG1EgbNngw4WcPMmjL3nuvXmNFWH1ae8eO2Nu1M2hr\n168P0AmLBVNkFOZw1fNSKE53DmoGQggz8CIwEsgDlgshPpdSrm+kiQZeAkZLKXcKIRKbe27Qa+oa\n3jWfUCStOHUb1boNZ50gxZzaRGhi1e5K7njiW+o0L0II7BYTIVLnmvizDPXuyM1l5uyl2CwmbGYT\nVrMJB146dJ1u0EZu20XlohzsFp/OZjFh1TWKBv8fJunF5PX4jEbXSN6rkZpf0VCvxYTFq7Gh07R6\nc9HqtR5whmFYcNzjYW+5vV5Tg0lqmHQvtj1FRDfVahoVn31uaK8pKtJgBmgaBY89btDG336bwZDw\netk+YWKztNLrZWP3Hgiz2W8aWC3EX3cdsVdeGajVdXZcfoVft08bNeYiIkefZ9AWznrap7Na/IYX\n2qc3oT16BGqlpOrrb/zGtU9ra5Vq6KVJKdH27vX15urDi8JqRQhhuF+F4kylOT2DvkCOlDIXQAjx\nPjAWaPxAnwZ8IqXcCSClLDyEcw1YTV4ujVgJHhd4nOBxUau5eY1HDdpBpmzujZyFtIaAJRTd4qDW\nE8obRfcYtBmOQv6QmI/HZMMj7LiFjdoaWE6mQWvBhaliJ5XSistrwSUtuKs9pJnt6D6Bn41FuTz3\n0WrcXh2PV8et6ZhcLqYlDzLUu3L1Zt59aD4WswmrWWAxmQjzuhnf/XaDVs/O5ZdXf8FqNmEx+fQO\nr5uOg/8Pk+7FJDVEvdFYNlVT+PUmLGaBtb5ua10d4ZlXY9K9Pp30GdPO3RYsGwp8bTAJLGYTZk8d\nlS36IHSvz7ykr15Ra8Fc4/bVazJhMQuE241HWjC5NUy1dQikr721dYZ7kB4PrhUrDOUh3YxmLTWN\n0n//21CecMcdBjPA4yH/jjuCauNvnG7Q5gw716CNv+1WEm65JbANUrJj6jRfuNBu9+WnbHYizh9N\n5MiRhjrKPvwQk92OKTQUU2goIiQEa8sUrC0SDVqF4mSmOWaQAuxq9D0P6NdE0xGwCiEWAxHAP6WU\nbzXzXAOm0EiY/GZAmZZfDI+vNmitXUfB9EcQ9aZh9jiReYWwzlhveIiZ1pFe8FSCVgtaHTXOuqBm\nkFa3nqnbXvTr0Gpx1Zh5nf8YtH1M67gj7H2wOOo/dlwuB68XXmrQDkmo4q5RuXhNdrxmG5qw4ayS\nfPah8eHRNtZM7z6ReISFOmnFjRWtvIq8pS50c6A22qxhs5jQvDrVmoZH0xGVVUQn9jbUK0q2sfyX\nHWi6xOPV0bwSi9PJ4IyrDNqq1Vt4/5nFaN56rS4JqXVx09lPN9QnfWZTuXQ7X1QsCjCOMI+bi3vc\n6e8hCd2DSWqUZrtZ995Kv3FZzAKHu5Y+qcMCelJmXWPz9jpKf9oWYF5Wt4s0W5RfZ9I1BJK8Kje7\ndpb5DLTebK1uo0kBCIvVUCY9HlyrVhnK7R07+vq3jbW6zt6/PGTQ7i9smDP0HITdjik83DfwITKC\nyNHnEzXmQkMdzt9+wxQWhikiEktMNCI0VPVkFMeUo5VAtgC9gOFACLBUCPHLoVQghLgBuAGgdWq6\n8Xh4BJHxDjS3jubR0dxedK8kon9fCA98kEqHEzBePvzcP8DwToHawkpYZtxVzTHsMpj6XECZdz+G\nZOvYD0ZNCTAObU8F/Gq8Tyu1OCoLfb2eeq2txAtcZ9DGlixjwDczQXODtw60OqprI3mTNwzatjXL\nuTTnVbDYwWwDi53qmlDe5GqDtnvoXm5OLwSLDcx2sNipKZe8saW9QTuktYUZ18bX12sHi43qIidv\nPrO74XcozEizmd6t4rnkmr5ouo7HK9G8EldBCcu3GB9iSVF7GdY5wa/TdB1vqU5Oe2OoKsS1ix3F\nNXh0iVZvXubKSvIG/jVAJ3QN95adLPp8na/e+nbYaqq5vPuf6s3F4zeb7B8r+WzvN76cVH1+Kkqr\n5faEHr48k+7G7K3D7HXzy4Zyts5d05DDspgJ190YhxhAiddMbamTUJuZMLsFu8WEdLvRCgsNWkfn\nDEPZvtAaUjbcm91O3PXXk3DrLQZ9+SefYo6KxJKY6PvExflCZwrFIdCcv5h8oFWj76n1ZY3JA0qk\nlDVAjRDiByCrvvxg5wIgpZwDzAHo3bu3bHo8LMrO5U8E/tPzevWgDQ6JsDPm1iw0t9dvHJpbp2Xn\npuljMIc4aJMVj1fT8Xp8RuPVdKI7tzG2MSQ86PXC+g+B1k1GEyXVwoc/G7QRY6+GIYG5D1lUA6uN\nzhH6hz/CmH81Ekrk3lJ4NNugdfQ9H0Zf2cg43MiCSlhpbK8tOgxwQm0leN2g1aGXeACjGVhK18C8\nNwPrrbABzxh/Dzvmk/7v+wMMqao6kuXca9CmuDbQP2+ZT2uxg8VBtdvEm/Q1aDOjXFzTrdjX6zLb\nfNrCEN5cURX4ezRZ6Nc2jjtuPTugvCa/kDceX2uod0RaJXf+8RzqNJ06j47b66Umr4AluUZjjg8p\npFNSJHUeb73eS2lROUv7PozF68Ki1WLRXJg1F1vWeZn3yi843V5q6jQ8Xp0Wei3PRqRh9vp0Vo8T\nk9SYl1tJ3rz1RIVYiXRYiAq1EuWtI1kG/hOQdXUIa5CejKax5/77AwtNJuJvnG7onQC4Vq3CHJ+A\nNamFMgxFAM35a1gOdBBCtMH3IJ+CL0fQmM+AF4QQFsCGLxT0D2BjM849bMzm4EM1LTYzaV3jmlVH\nSISNC24yxq+DER5jZ/pzQ/2G4fXoaG6d0CibQWsPtTDs8s4NBuPR0TxeEtIiDVqTzUJKpxi/xqtJ\nvJpOWHJsoFAIpDU0aNscGVmQ0iRxGucClhq0oedOhkFNzKu0FpYazSt86p8NWlniggeM9YZPuhMG\nzfT1eOpNhsIqeMllbEPnTpBUV6/1/Vf3uoPem927HX78or4nVa+tsEKQHJJt6yfw5B314TqfcWjO\nGGCGQesoWUn097+ANQRsoWANpbJQZwldDNr0aJ1+GWawRoA1FCx2KjfZePtHYwhqSMdaZtzZkKPw\n6pLSLdv5b8WfA3RmrZaY0BqSIh1U1nrILa6h0uVB37uXi5PPxqrVYPVUY3VXY3eXM+uXvaxz/0hc\nmJ24cBvx4XaSvDUMaNoAXccUZnxxkbrOjiuuRLrdYLFgbdkSW2oqURPGE3WhMVSlOLM4qBlIKTUh\nxK3A1/iGh74upVwnhLix/vjLUsoNQoj5wGpAxzeEdC1AsHOP0b0cc4QQWGxmLDbzQbU2h4XMpg/c\n/RAWZecPf+pxcCEQEevg+meHoNcbxr5PSITRkBxhVkZd2yVA5/VIWqQbDclsMdGxb4t6nfSbXVi0\n3dgICTaH2a/bhzU6FiKSAqS6OXjIztZ9OPRJDqy2yAnfGrWhF/0R+jfVuuAvRkMKu+wJ6BVRb0a+\nsJ0oqoHnyg3aiB6ZEF1SP0jBCc5S9CoNgphBaMViePXxBq2u4a1LJ1gPyVG2HL7+CewRYI/EbI/A\nsqMOaBug81octEm103dIYHnlmg28vdE4H2Z4e41Lx3WjpNpNcXUdJTVuqrfsYE+LvtjdldjrynDU\nlmLWPTzycwHbnD+SHBVCcpSD5KgQUr3VtHfXG66m4dm5E8/OnYQNHmy4lpSSvJtvwZqSgr19O+zt\n22Nr1w5LjLF3rTg9aFY/UUr5JfBlk7KXm3yfBcxqzrmKw0eYBDZH87r3NoeFDn1aNEsbGmlj5DXG\nh2AwIuNDuP7ZoYDvoaF7faYQrKcWFmVn3F09Aw1J00lqE2XQWu0Wss5thabpeD1ef68qIs5h0Epd\nEhppw6s19LzAF/YjNLBHpWk1BEvgWDsPg16B+SZvfjUsWWbQOiY8Dr0b/S69GnJXETy5waCN6NoZ\nwgugrgrKd0BdFbIEmpoBQHjuK/DcPRAS42t3SAx1BZHABQZtXLyDs1IDBxuXimLeywgczmtzVzK5\nfwyRo7uxp8LFnopa9lTUUrpmPe0Q/tFf+/ggz4vp+62kxYbSOi6UtLgw7OWlVC9aZGhD4r33Enf1\nVYZyxamPChoqjgghBGaLwGzZf8iuZQfDbImghEbaOHtyh2Zpo1uEcvXfG3IDUkp0TQZdbSsi1sEf\n7uwRkBPS3DqJ6RFB29u2RwJanReP24unzpdvCglvEq83W9BE8Ml4tq4joEtgmNK9rQJ+Mw6xDbvk\nb5CmgasMnKXgKkO3OsGYFiJ601Pw12m+ARPhLSA8EXdBAk2Nw22LJDIhhqxW0WS1avjdl9Ru4r+D\n/w9HXSmhzkLfx1VAbKs25FTVsWJHGTtLnOwsddKvLCdIpgdsrVsZyrzV1eTddDOOLl1wdOlCSPcs\nrKmpavTTKYYyA8VpgRACszX4w8dqN5PSsXnhjaiEEM6f3q1Z2tiWYUx7pB91Lg23S8Pt8uJ2acSn\nGOP1JpMgoXWEX1tX40FKCImPg/jAsF2ttYRgbhB2/X+gpYDqQqgugOpCPJaqoMOoo1c/DMXVEJUK\nMWkQ2w5nUQ26uSPO0CScoQ3hvMEt05kyqqHXIqUkd/Zuyn5OIsRViEk2hAIv+7aQqB3LyEiK4KzU\naM5KjSJ2y3qcy5fjXL7cr7MkJpL06CNEDBvWrN+l4sSjzEChOEwsVjMxSc1bqiMxLZLJ9/fxf5e6\npM6lYXUY80+hETYyBiVTW+2httpDTaUbZ3kdYdEOcDjAEQXxvh6Us2YvweZwRk2dBbYiqNgFZTtg\nx094qsz4pgQFEutdDQUuiGsPFjtCCPSdBfza9y+YdA/h1flEVm4jypnHrOvPY2eth/V7Kvl0ZT6P\n/m8dI9d9x2VN6tQKC7HEGQdx6E4nnt27sbVrp3oOJxnKDBSKE4AwCRxhxqGiAAmtIzj38sD5B1Ia\nRlsDEBZtp33vRGrK66gqqaWmvA4pITy9DVjbQ6OxRuVf74CcrYY6Yoq/gg//6stvRKdBYmf0lB5Q\nCrrJSmVkOpWR6eQBqWUaI3q1YERmQ/4k5/Yv8DSps85i48G1bvrU7qRPm1jaxochhKDm55/Ju/U2\nLMnJhA0aSPjZZxM2YADmKGMOSXF8UWagUJwC7O8tOrVTDKmdGkJgXk2nprwOi9XY46guMw6DtdrN\nhF72MgjhG7ZbkgOFGyjfWx30ei3kKqjuAeENK2xVbytm/Vm3ElO+mZjyzURU7cSRlUWvdon8uq2U\n577bgtur069tHFOXzCcO0PbsoeKjj6n46GMwmWg773/Y2xoT7IrjhzIDheI0wmwxERkfEvTYkCkd\n6XtRG8oLnZQXOCnf60T3ygajsdihRRdo0YWSJauB4oDzQx11hK/9FyxYBWHxkDYQ0gbinXQtZT/r\nlMX6ejMWzUVyrIcx7ROY1q81AHllTn7OKcb6nHGkljkxEVsb4yRP3eXCFBL8XhRHH2UGCsUZhCPM\nSlKbqKBDextjC7HgCLNSW9MQAErqnIq46nPQdShcDzt+hi3fsDc7C9+CAz40Swh51SHYQxoeL6kx\nofwhQWdreZHhWv+L6Mjmd1YwIqMF53ZOJC7cN7dl94z7cO/YQdRFFxE5Zoxa/O8YI/YXizyR9O7d\nW/72m3G9IIVCcfyQUlJVWkvBtkoKtleS2DqCjn2bTCrUJa/d9SNulxZQ3jJsG+PO3wXthkPrAWC2\n4Fq7jlVPf0BZgZPEvcsJc/nWaoqZ/So/haexYH0BP+UUk9kykosy4uj1xyngqp+9LgRhA/oTPXVq\n0NVjFSCEWCGlNK5M2UxUz0ChUARFCEFkXAiRcSF06B188mJJXrXBCADS+nYA0x745kEo3wmdzick\n4yL2ZF7EHkcV29IuIMpSTVLFWlIys5iQEM6EXqnUerz8sLmI1R/OazACACmp+Xkp9owMZQbHCLUP\no0KhOGziU8O55MG+nD2pA+lnxfuHyqYP6QXnPgjTv4fpP0BSN6oWvcGe3IbFBSu0cDaF9Wf+Kw2z\nuB1WM6O6JDHNvS3o9XKzBqPrTRbx03X0uuDLlCuaj+oZKBSKw0aYBPGp4cSnhpM1vBVeTadgWwUx\nSY0WVIxuBf1vYmv1hbAqx1BHRobbt1x3oxFT3pISg64mtQ1PbPRQ/vsiJvRKZWrfViRHheD85Rfy\n/3QnURMmEHvF5ViTkgznKg6O6hkoFIqjhtliomWHmKBDYbf8ZtzPwWLW6bj9HnihN/zwNFT4VrhP\neu5Ftt34Bt4r7sHSyrcERpupE/ji9sG8ckVvKpxuRj/7Ize9s4KcV9/CW1FB6euvkzNyFLvvu5+6\nrcb5FIoDoxLICoXiuFBVWkvOb4XkrCigcIcvXNS5fxLDr8yAvOWw6l1Y9ym0PYc1luv44RvfSKa4\nlDAyOkg6D2uHvUWj+Q11GvMWrqbrnZdjloF7m5hjYujw/WKEzbia7+mKSiArFIpTgohYBz1GtabH\nqNZUFDnZvKyA1l3ifOGhVn19n5GPIVe9R/a7uwHfg78kv4Yl+bAqezMTZ0QSFuUbehputzA8dynF\n0rjJlWPSJWeUERwNVJhIoVAcd6ISQulzYRvj3hqOSLaHjKfCnWA4JyLaQmhk4ANeulyGh75mtTGt\nuBWP/W89u8sbRiRJKandtPno3cRphjIDhUJxUhEstwDQ2/kY4tuHfau21pN49920/34x8bfc4l/f\nKOGSyXx07wVYzIILnvuR+z9dw54KFzU//MC2sWPZdeut1G3Zclzu5VRC5QwUCsVJha5LtmUXkf3t\nLvZsrQAgMS2CiTcmIn5+HtZ8CD0ug7PvpFZGMu/FbHqMak16xzAqPv6Y8HOHY0tNAaC0xs3sH7by\n32U7eHHxP4nZs913ESGIuvgi4m+7DVtqavCGnGIcac5AmYFCoThp2butgt/n7yBzUEvSz4r3FVbu\ngR9mwbpP+ck2k1WbfENJk9tHMWRKR+JTjZsW7fp4LtUP3GcotyQm0v7bBadFfkGZgUKhOCOpyt3M\nO7N2oMuGFVqFgC6DUxh8SQdM9duwSo+HrWPG4Nmx01BHwkMPET/NuN/0qciRmoHKGSgUilOSZT9q\nAUYAvrlr1eV1fiMAQAjir78eS5PJaHsSWzNtdxKLNwXPUZxpKDNQKBSnHLpXp6rUuASFSWicHfoy\nlO/ylwmLheiJE2n39XwSZ9yLOdq3L3S/f/yVu8/P4JHP13Hl68vYUuCb+1D+6VwK/vY39Jqa43Mz\nJwkqTKRQKE5JpJTsWFvCTx/lUF7gBKDXqBT6x86FX1+GIfdAv+lgMuOu1TBbTZjNJrzV1dT88AOR\nF1wAgFvTeWvpdl5avJUrusZy/qzb0UtLsaakkPzE44QNGHCAVpw8qJyBQqE4o/FqOqsX5rHh591M\nuq8PVrsZinNg3h3groaL/sl331gp3V3DyGu6EN0iNGg9BZW1LLzlXrov/yagPHryZBL/fA/m8PDj\ncTuHjTIDhUKhwDck1WRqtCaSlLDqP+z67H0+33snABabiUETO9BlcEvD+km1mzazbfx48HoNdac8\n+yyRo887pu0/Uo5LAlkIMVoIsUkIkSOEmBHk+DlCiAohxKr6z0ONjm0XQqypL1dPeIVCcUwIMAIA\nIfB0mcpi973+Is2t8/27m/jipdU4K90B8rotWxBWq6Heqt6DCB91+u+hcFAzEEKYgReB84FMYKoQ\nIjOI9EcpZff6z2NNjg2rLz9s11IoFIpDZdn/tlFZ6jGU79pQSnVZbUBZ1JgLafv5Z4T26eMvkxER\nPNPlD1z31gqKqk7vPROa0zPoC+RIKXOllG7gfWDssW2WQqFQHDnteiYQlRBiKB/c6lsS42oN5bbW\nrWn95hu0eOgviNBQUh58gLfvuYDM5EgueO5HFqwvAMBbXU3xK68gPUajOVVpjhmkALsafc+rL2vK\nQCHEaiHEV0KILo3KJfCtEGKFEOKGI2irQqFQHBJJbaKY/EAfMge39Jd17JNIl94hMHsIbPvRcI4w\nmYidNo12878i8uKLsVlM3H1eJ/51aU8em7eOGR9lk/fgQxQ983/suPwKPPn5x/OWjhlHa57B70Br\nKeVZwPPA3EbHzpZSdscXZrpFCDEkWAVCiBuEEL8JIX4rKio6Ss1SKBRnOjaHhWGXduaCm7qR0jGa\noZd2Rgx/EMa+CB9fC9/PAt1LeYGT4ryGbTmtiYkBSebe6bF8eftg2v62EOf8rwBwrVpF7rjxVH79\njeG6pxoHHU0khBgAPCKlPK/++30AUsq/HeCc7UBvKWVxk/JHgGop5dMHuqYaTaRQKI4FUsrAUUSV\ne+Dja6klko9zb6O6UmPk1Zm07W5cQhugLieHbRMnIWuNIaakRx4hZsolx6rpB+V4jCZaDnQQQrQR\nQtiAKcDnTRqRJOp/w0KIvvX1lgghwoQQEfXlYcAoYO3hNlahUCiOBMN2nJHJ6Jd+xte5EygvqkOr\n8/LVy2tYMX87wV6UXdnZQfMEIiGBiFN8xNFBzUBKqQG3Al8DG4D/SinXCSFuFELcWC+bCKwVQmQD\nzwFTpO832QJYUl++DPhCSjn/WNyIQqFQHA5LPt1GXlFcQNkvc3NZ8Pp6NE/gnIPoCRNIe/stLMnJ\n/jIpBH/rMZXfK45Lc48Zzdr2Ukr5JfBlk7KXG/38AvBCkPNygawjbKNCoVAcE9y1GvmbyoIeKy9w\nonslNJl6ENqzJ20//YTdDz5I9bffkXDTTVx93gRu/s8KbhjSlusHtzX2QE4B1EJ1CoXijMXmsDDh\nz70a9kqoJ9JWypj272OzBs+pmqOjSX3+eVKe/QfxN9/EOZ0SmXvLIL5YvYfpb6+gstZD5YIF5P3p\nT6fMgnfKDBQKxRmNzWHh/Bu70WNUawBCIqxcfO85hLq3w3tToa466HlCCCJHj0ZYfAGW1JhQ/nvj\nAFpEOrjhsf+S9+cZVH01n+1Tp+HetStoHScTam0ihUKhqGfjL3uITQ4jMS0SvB6Y9yfYuxqmfQgR\nLXBWugmNPPCuaN7yctaOnYCtYLe/zBwVRco//o+wgQOPWdvV5jYKhUJxlOjcP9lnBABmK1z8PHS6\nEF4byaYF2bzzl6X7zTGAb+hq/t33BBgBgLeigp3XXY9r7bpj2fwjQpmBQqFQ7A8h4Jx72dHmARZ+\nXIinzsu8F7LZtaF0P3JB9PhxCIfDcCxiwgQcXYIt63ZyoMxAoVAoDkDB9krmL0xCx7fFpubR+eLF\n1exYWxJUH3nBBaS/9y7Wlg1LYGxrl8WdSSMprXEHPedkQJmBQqFQHIBfP89Fqwucb+DVdL58ebV/\nh7WmODIySP/4I0L79cORmcmo91+lT/sE/vDST2wuqAp6zolGmYFCoVAcgFHXdiExLcJQ3rOP3O+u\naQCWmBhav/oKrV57FUtEOPec15k7R3Zk6pxfWLSpEKlp7H3s8ZNmpJEyA4VCoTgAjjArF9/RgxZt\nIv1lPftb6Lv3esj59oDnCqsVS0yM//u4HqnMuaI3936YzY+3/Jmyd99l+5SpuNasOWbtby7KDBQK\nheIg2EMsXHx7d5LbR5E1vBX9rxyMmPof+OQGyP3+kOrqlRbDu2GbSPjet/Kpt6SEHZdfQdXChcei\n6c1GmYFCoVA0A1uIhYv/2J1BE9v7lpto3R8mvwUfXQM7fkbqkspi10HrqZj3BZ7ZLwaUydpa8m69\njYr//e9YNf+gKDNQKBSKZmKxmgPXHUo/Gya8iv7+lXz70o98+LffKNkdfMbyPhydOgYsdLcPYbdj\na936aDe52SgzUCgUiiPA23oo803/YvNajdoaD5//c9UBewj2Dh1If/997BkZ/jLNbOX1C2/F3fHE\nzUNQZqBQKBSHicft5Yt/rWbb1oZHqbPCzf+ez6a2Zv/7I1tbJJL29tuEDRoEFgtpzz1LaN9+XDJ7\nKYWVxo1zjgfKDBQKheIwcbs0KgqNcw3KC5zMn7Mm6AY5+zCHh5H6r5do/fprRA4/l4cvyuSirJZM\nePlnthX7Vjr15Ocjvd791nE0UWagUCgUh0lYlJ2xd/QgLNoeUG4z1dJ7ePxB9zUw2WyE9e0L+Jay\nuGVYe245pz2TZy9l7a9r2HbJFHb/+d6gu6sdbZQZKBQKxREQGR/CRbdlYQvxLWUdFm1n/NCVpC6/\nHjwHH13UlCl9WzNzQDxlN0/HW1xM5RdfkHfrbehB9l0+migzUCgUiiMkLiWc82/sRkLrCCbe24u4\nSfdBTBqKyJQzAAAgAElEQVR8eDV4tUOqSysupt3f7yO+pmF11Orvv2fX9BvRncGXvzgaKDNQKBSK\no0BqpxgmzehNeIwDTCYY+yJ43fDVn0HKA+YPGlPz00+4t283lDt//ZXil146yq1uQJmBQqFQHCWE\nqVGOwGyFSW/AzqVUfvsqnz7zO6V7Dr4FZtTYsSQ9/phv+exG1HXrQfzNNx/lFjegzEChUCiOFY5I\ndvd/gw8/TWRPTgVfvrT6gENO9xEzaRIpzzwN9Vtqes/qyc2Z01iwrfKYNdVyzGpWKBSKM5x1P+bz\nw3u70XXfqqcVRS6+fmUtF92Whcl84HfxyAsuQNjtlL37HqnPP8fsUg9Xv7Ect6ZzUVbLA557OKie\ngUKhUBwDNLeXVd/uQtcDcwV5G8v46aOcZtURMXw4rV59BVNoKN1So3j72r48Pm89H63IA6Diiy/Q\naw4eemoOygwUCoXiGGCxmbngpm7+IaeNKdxejuZp3mSyxnMVMpIjeff6/jz99SYWPvYPdt91Nzun\nTz8qhtCsMJEQYjTwT8AMvCqlfLLJ8XOAz4Bt9UWfSCkfa865zeWL52ZR56whKrEFUQktiExIJK5V\nGnEprQ6nOoVCoTjmxCSFcd51XZj3Qjb7BhN1TtnGOa2/x2x+47DqbJ8YzluRW/G+MAcA128r2HnD\n9CNu60HNQAhhBl4ERgJ5wHIhxOdSyvVNpD9KKccc5rkBFLuKmb99PqnhqaSEpxBtj2bn2mycFeUB\nuqyRFzDiOmN2ffFbr2Kx2QiNiiYkPIKQiEhiU1oRmZB4sNtVKBSKo0rrLnEMnNCenz/OYdDEDpw1\nZCDizfdgyTMw5J5Drq/0rbfwvvCPgDLXihVH3M7m9Az6AjlSylwAIcT7wFjggA/0IznXq3uZv20+\n+dX55Fflg8fLhIoEg67a5mZvzV7iQuKwmqwASF1n5fz/oTdZz2PAxGkMnDQtoEzqOh8+8SD20LD6\nTyi20FDa9uhDcodOBm1VaTG2kFBsISGYTOZm3L5CoVBA1vBWtMqIJS4l3Fcw+W14ZRgkZUHHUYdU\nl7VVK4TVGrBERdHFU2DWI0fURnGwiRBCiInAaCnldfXfLwf6SSlvbaQ5B/gE39t/PnC3lHJdc84N\nRu/eveVvv/3m/749dz2fP/4omReOJzyhhT+GptkFHrOOLnWEEJiFGTMmLDXGWJw1LASbIxQhBCbh\nS5VIXaeqpNigdYSHYwsJ3NvUoBUCIQSOsHCsDodBW1tTjajX7NOarTbMlkD/lVIidd2vOdhaJoqj\nj8PhIDU1FavVeqKbojiT2PkLvH8pXPsNFXpLohJCmn1q1eLF5N92O9LjwXTplcyIPZu5tw5eIaXs\nfbjNOVpDS38HWkspq4UQFwBzgQ6HUoEQ4gbgBoDWTTZ48JZVk3nheNI7ZxLmsPsfmDHJLbGHhiGl\nRJMamq7hrnXhKigx1F8XLqiz6mhSQyIxCzNWaSXWYRyiZY4OwxzmwCzMmIQJszCDV6fSYTNooxJb\nEBIRGVCmeTwU79xu1Ca0ICQyUOv1eChqohUmQWRCC0LCAzfh9moalUWFCNM+4zD5DCkiAqs90JB0\nXcftcvl0pgatyWLBZFLjBvYhpaSkpIS8vDzatGlzopujOJNo3R996P0s/+frrCgezphbs2idGdes\nUyPOOYfUF57HuWoVCbffzieA6YCv2AenOWaQDzTO0qbWl/mRUlY2+vlLIcRLQoj45pzb6Lw5wBzw\n9QwaH2vVpRsuq4OWaWnomoauaXg1DbPF9yYnhMAqrFhNVkwmnWBLQyVFtMQe6nvb16WOV/dSV+uk\nmkKD1ouOW3OhS1+vwyu94NEJNShhr7MA3Vvke9Bi8pmH15ctb4rT68RdJzEJn86ECakZezFSlwTr\nH0hdp85pHDVgcTiMZqBplO/dbdBGJSYREhFoMprHTdnu/Ea9E59xhMXE+n9n+/B6NZzl5X6ToV5r\nCwnF0uTNWuo6Xk0L6PU07imdDAghiIuLo6io6EQ3RXGG4ax0s+DnnuQV+l5CFry2nskP9CEi1nGQ\nM32EDx1K+NChR609zTGD5UAHIUQbfA/yKUBA8F0IkQQUSCmlEKIvviGrJUD5wc5tDjZHCGarldAm\nb+DBsFhtRCYk+kzD60XXveheb0B4xiRMmMwm9P3cfkxoLPYmYSK3y0VpRZ5BmxCWiNlhQ5c6Ukp0\nqaO563BTZ9DW6W6cbo/fZHSpI/ZjMvk1u/G6hT+sJYTAogmMfROodFdS7az160yYIIjJAOjoaLrm\n0+KrX+rS99BuQqiuG8/XvNSUlxnKo1skG8xA83goydsZRJuEI9xoSBUFe/3mss9sQqNisDUJw3m9\nGrXV1U0MxoTVbt9vGO5AJnSyGJPizKGy2MUnT/9OTXnDc6K2xsPXr6xl3F09MVuOf+/9oGYgpdSE\nELcCX+N74X29Ph9wY/3xl4GJwE1CCA1wAVOkLxkR9NxjdC8APtOwRjVLa3U4iEluidR1dF1H1n8s\nlmCxY4nZYvHr9mEz27BZAmN9dboTN+VNKyA+NN6Qi3C7nJRWGjtLyeEtsTjsPoPBZxxabR0ujCEw\nIYTvuNT8hoTHG/R/7l5nAR63jo7PvIQQWL0mIoL0ZYpqi5B6aYBxmLTgOSZfr0f3m5EQAl3bz7R7\nYfxDl7qOp85ooE1NA3y9nqpi45t8dFIyZkt4QJnmdgcY0j6TiUpMwh4aFqAt37uHRW/OwWKzY7Fa\nff+12cgcOpwWbdoF1uvxUL4nH9u+gQeOEIQKvymaSXisg5ik0AAzACjYVsnST7Zy9uRDirIfFZqV\nM5BSfgl82aTs5UY/vwC80NxzTxZMZrPhgbA/bCGhJKT5unP73jal1IOOKrJYrUTGJyJlvcHU601B\nTQbMFku9tmFlQ4vZgs0c2A+o84igIbBoRwy2kCaG5HRSFiQi1yoy1W9IUkokkjqXk4qqPQZtpD0S\nYbMikf6ej1dzE6zP4dJceOtqkUi/IQmPTrCU2M6qnXhr6x/M+Ho+Fk0E1ZbWloKs9BuSSZhgP5N1\n6rx16B5TgHl5vYGGJKVEeoMbmquqktzflxvKUzO6GsygfE8+b94TGKS1hYRw/i130b5P/4Dy2upq\nshd8iSM8HEd4JCERETjCI4hukWR4OVCcGZhMglHXduGDmcsDDMEsPERGuE9Im9TaRIeBEAJhNhM8\nMwBmi5XQqOb1ThqbDNQ/rKSOCPL2bLHZiE5K9hmG7tNJKTEHGQVjMpvqk+v7zKi+3kbm5X8Yy+Bh\nkhBrKDZ7E5ORNZRRZdAmhCViczQ1pBrKKo15i7SoNCx2e4DJuGtd1FQa3/btVgeYzQEmI/Xg68OX\nuyvw6hX+Xo8udfJzdvHqrNlUVlXx6ovP+7V51fnodcLfkyl2FTNnzWukBqn3mz3f8ev6XMJt4YRb\nwwm3hePZa+yhuV0uQ5gKoLK4kCXvv2UoH3PHDDoNODugzFVVyc8fvktYdAxhMTG+/0bHEpOUrIzj\nNCMkwsZ513dl7jO/o+uSmOQwRmUtI37Ps+D9H5iP7+NZmcEhYjab6datG5qmkZGRwZtvvkloaOhB\ny/cxd+5cHnvsMebNm0diYiJr164NqN8XA/c9sL/77jveeOMN3n77bd+1LRZDGGR/WO2+EBhAeno6\nERERmM1mLBYLjYftgu+NNiEt3d8zkVKC1LFYjRkKs9VKeGycf332fT2aBd9+x5133YXX6+W6665j\nxowZCCHoe84wwsPCMZlMmM1mvvnsU0wmE6++8io33ngjixYt4pxzzkEKD/9++x3uf/Qx3n/j3ww9\nexAAkbZIw9DdOmooC9JHSg5vacgvpHdNJfPJNK675bYm2mTMNpvfOCptlZybMozNfGio12OBXVW7\nqPZUU+2upsZTg2l7GZ0MSpix7EG8u8KJsEUQbY8myh5F1F5j7gXAY5NouobF1PDPsLKokFVfzzNo\nL/rTDDr2DzSOOqeTTUt/IDI+kciERCLiE7Da7IZzFScvye2iGDC+HeWFLgZNbI/V0hve+Q4WzYQR\nDx/XtigzOERCQkJYtWoVAJdeeikvv/wyd955Z7PK93HVVVdx6623csUVVxzwWtnZ2fTo0eOotHvR\nokXEx8cHPSZMJszNjHdbrDbCY2IDyrxeL7f/8Y8sWLCA1NRU+vTpw8UXX0xmZiYms4UfliwxXHvN\nmjVkZWWxceNGzjnnHDRd8sHcz0hISGDAkCFEJybuv9djsRAaFdWohyRZt349197+x4Ae1euvv05U\nWJgvlt+k82M127BaGh6cdrOdzpEd2Bzkni/vcZVh2ZNNS39k3sKnDNq/DH0Ec0IUVe4qyuvKKa8r\np3jX+qDhvXuXP0j+ugrCbeHEO+KJD42nZYGdoH3KcLs/x7OP0t27WDAnMDobHhvHiOtupl2vfsFq\nUZyEZA1vFTiIYfwrMGcopA2EDiOPWzuUGRwBgwcPZvXq1c0u38eQIUPYHmQno6ZkZ2dz1VVXUVdX\nx/Tp02nZsiUzZ848aqNftm3bxh133EF+fj4mk4m3336bTp2Cve8emGXLltG+fXvatm0LwJQpU/js\ns8/IzMzc7zmrV69mypQpbNy4EYAXXnyRyZMn89xzz9G6ja+eqVOnous627Zto6CggJdeeokLL7yQ\nopISbrvtNnJzc3G5XLz11lsMOnc4X5w7POi1WrRphyMsnBZt29f3emTQZG9yh86MvftBNI8bze3G\n63Hjqa0lPMY49ttssRLbMhW3y0mdy4Wn1ve4bx3flsi4wGVPsnd+ybf8ZqjjvYkfERYbS4W7gmJX\nMcXOYraWLaGQHQbtjT/fTnW2l+SwZJLDk2kZ1pKEXcbcR3VpSdBwUuH2XOY9+yRxqWkkpKWT0LoN\n8WnpRCcmqcT3Ccbw7zk8ASa8Cv+9ktrLvsUl4olJal5u80hQZnCYaJrGV199xejRow9Y7nK56N69\nOwBt2rTh008/bfY1Vq9eTWJiIueddx7XXXcdl112WcDxwYMHU1VljN8//fTTjBgxwv9dCMGIESMw\nm81Mnz6dG264AY/Hw3XXXcecOXNo164dX375JU8++ST//ve/m92+feTn59OqVcObc2pqKr/++ut+\nrw2wYcMG3njjDW6++WbKy8v54IMP+Mc//sHChQv99WRnZzN27Fg++OADlixZwp133sl5553H+eef\nz8yZMxkzZgxOpxOvd/+rP5aUlPDAAw+wcuVKnnzySe677779asNjYg3J3/3Rvk//AK2ue3G7XIZE\nPkBCWht6XzSe2uoqXFVV1FZX4qqqIiQiArPJTKwjllhHLB1jOmKy7Awy8wW+vmIRtSYPu6t3s6dm\nD3tq9rB71a9B2/bM1pdo5WxPemQ6aZFppEelU5qfR9me3ZTt2U3O8qV+7fj7HqVN917NumfFcSRt\nIPlt7mHBX1dijW3B5Pv7YrUf2yVwlBkcIo0f7oMHD+baa689YHmwMFFz8Hg85ObmMnXqVGbPns2A\nAQMMmh9//LFZdS1ZsoSUlBQKCwsZOXIknTt3pqCggHXr1jFhwgTAZ2KDBw8OOG/EiBHs3bvXUN/M\nmTMZO3bsYV+7TZs2xMXF0bZtWwoLC5k1axa33XYbmzdv9udXamtrKSoq4uGHfXHTzMxMysrKmDt3\nLhkZGYwZ41sTMTT0wEnVuLg4Xn755QNqjgYmkxlHWPB8TsuOGbTsmNGsetKzemK22agpL6OmrBRn\nRRl1ThdWhwMrDjrFdqJTrK/3tnBpJSsJXBffbLdzYbfx7KjawcrClczNmcuOyh2022CmK8a3y8aD\nF/aRv2kDP777b5LadyK5fSeSO3QiMt64Npji2OD16iyft40V37UHCRS4WPLhFoZd1vmYXleZwSGy\nv4f74T7098eGDRvo06cPpaWlmM3B3wia2zNISUkBIDExkXHjxrFs2TLKy8uZOXOm37SC8e233zar\nrSkpKezatcv/PS8vz3/NYNeurq72P/QjIiKYP38+y5Yt44477qBnz54ArF27lg4dOuCoTwj//vvv\nZGVlsWrVKvr3b97b+6lIUvuOJLXv2Dxtuw50HjSUyuIiKosLqS4tIa5lKiPTjXHmz/75N3L4KaCs\nzqYzdsEkOsZ2pGNMR7rFd6NbfDfyN64jf+N68jc2rCcZldiC8fc9SmzLYOOtFEeT7/+ziQ0/Bw71\nXr9kN2ld42jb/diZ8ilrBukzvjjqdW5/8sKjXufhkp2dzcCBA7nssssYN24cCxcupEWLFgGa5vQM\nampq0HWdiIgIampq+Oabb3jooYfYunUrX3/9NVdffTUmk4k1a9bQtWvXw8pH9OnThy1btrBt2zZS\nUlJ4//33effdd/d77VWrVvnN4J577iEuLg6z2cyaNWu48sor/fe/c+dOamtr8Xq9PPzww/z9739n\n5cqVZGdn+69dVFREQsKZ+daaOeRcMoec6/+uud24qoPvkVtdaBy2275Dd6684BY2l25mY9lGPs35\nlMeWPkbfZWEkNxk2XV1WSmS8cQl4Z2UFZoul2fN1FAen+4jWbFlegOYJHIW2+J0NJLeLIiQi2DoE\nR84pawYn04P7UJk6dSqLFy+muLiY1NRUHn30UcMbenZ2Nn379qVjx4489dRTTJ48mW+//faQV9Ys\nKChg3LhxgC8UNG3aNEaPHo3L5WLRokVkZGQQEhJC165deeeddw7rfiwWCy+88ALnnXceXq+Xa665\nhi5dupCbmxv02m+//bY/PLUv3AOwfv16unTp4r//8ePH069fPzweD/fffz+DBg0iKyuLadOm0aVL\nF6xWK4899hgXX3zxYbX7dMNisxERG3zE2MQHHqckbyfFO3dQtHMbRTu2k9I5k5TwFFLCUxjWehjg\nm+fyr8VX4CJwyZGKOMm/1s2mT1Ifuid0x2Gp77F9+RnLP/+YlE6ZtOnZh7Y9ehOb0kot8XEExLYM\nY9CkDnz/7qaA8gRrLlI/dqPEDrqE9Ymg6RLW4AubZGQ0L+6qOPUZOnQoc+bMOazRTYeD+vvyUV1a\nwuybrjSUp543mILuISzfu5xNZZvIiM1gQMsBmN76naq8wImFcamtuWLW82rPjyNASsmXL61m+5oS\nrHYzZ09oQ8aGKxDdp0G/G4KeI4Q4KZawViiOKlu3bqVDh+O/PsuZTlhMLNf8cw57t2xiT85mdm/e\nSOH2rQzqfyGpmV0BcHqcrCxcyU+bFmLOM84wj0lOUUZwhAghOOeyzvzw3mYGTWxPZHwIdHkNXhvp\nm3+Q1PWoX1OZgeKkJC/PuEKs4tgjhCAmqSUxSS3JGOwLHdU5nVhsDXHqUGsog1IGEbGxigUYh7cu\nidiMzJnLsFbDiLI3TKH76sX/Iy61NZmDh/lmsSsOSFiUnfNvbFi9gLh2MOoJ+PhauGExWJu/GU5z\nUGagUCgOSNM9LfxIiIhLoKqkITlttloZOmQ8C3Yu5MllT9IzsSej0kfR09KJ9T/45pAsee8t0rv3\npOuwkbTr1de/L4miGWRNhZzvkPMfoLL/E0QlHL31qlTOQKFA/X0dLlJKSnbtIHflb+T+vpyw6Bgu\n+tMMAKrd1Xyf9z1fb/8a13fr6JxjfJM99+rp9Bh90fFu9imNs6iYxU+9Q15dN6Y8PNAXQkLlDBQK\nxQlECEF863TiW6fTd+zEgL0+wm3hXNj2Qs5PG83sD67E2WSPD7PN5g9FKZrH1t8LWfzuJmqrzwLg\nu9ez+cPd/Xy7Dh4halEShUJx1Ai2ztGenM04y42bPeW0rOaeX+7j5/yfaRyh2Lk2m22rVnAyRi1O\nJOuX7Gb+nLXUVjfs0bE718naH4LuJHzIqJ6BQqE4pqR0yuDaf77Cuh++Y93i7/w5hhnTn+NXbR3P\nrHgG9zI3UztPZWy7sSx++zWKtueSkN6WvmMn0rHfIEz7mYV/JtG+VyLLv9xGdWng7mhLP95IWrcj\nT8irnIFCgfr7Ol7oupeda1eze9MGBk7ybYcupWRFwQre2fAOeWtWM+CnwKRodFIyQy67hg59jOtz\nnWns2ljK588GLnsTai5n9LWdaNmrq8oZKBSKUwOTyUz6WT1IP6thnw4hBL2TetM7qTdvLryD4iaL\n75Xv3UN1qXFnuTORVp1jyTy7JeuX+OZ3ZAxKZlDnUuzJwXf/OxSUGSgUipOCgtwcijfnGMpllIPU\nQX1PQItOTgZOaE/Znhp6X5hO68w44Oj0aFUCWaFQnBQkprdl7N0Pktw+cAkSz4BUxs0bz/Mrn6fS\n3bAQ396czVQWB9v94fTGHmJh/D296o3g6KF6BorTktzcXGbOnElFRQUfffTRiW6OohkIk4n2ffrT\nrnc/8jas5ddP/0tNWSmXX/kMVzj38nL2y1z06UVMP2s649r+gS+en0V1aSn9xk2m95hxAbOkFYeO\n6hkcImazme7du9O1a1cmTZqE0+lsVvm+z/bt27nmmmtITEyka9cDry/y3Xffcfnllx9xm+fPn0+n\nTp1o3749Tz755CFr9nfsQOekp6fTrVs3unfvTu/eDTmt2bNnI4Rg8eLF/rIXX3wRIQQLFiw44nvd\nR9u2bXnttdeOWn2K44cQglaZ3Zj4wONc8uhTmExmUsJTeHzQ47wy6hUW71rM3U9PpnzvHjR3HT99\n8DZv3H0zW1csO9FNP6VRZnCI7NvEZu3atdhsNv8uWgcr3/dJT0/nqquuYv78+Qe9VnZ2Nj169Dio\n7kB4vV5uueUWvvrqK9avX897773H+vXrm63Z37Hm1Lto0SJWrVpF45Fha9asISsry7/3sdPp5NVX\nXyUhIYGzzjrrkO9vzZo1jBkzJuBTWHjmhQ5OV5ruHtcxpiNP95xJ+42BS1hUFOxl7t8fY8uyn49n\n804rmmUGQojRQohNQogcIcSMA+j6CCE0IcTERmXbhRBrhBCrhBDGXcFPYQYPHkxOjjHhtb/yfQwZ\nMoTY2NiD1r/PDOrq6rjqqqu4//77D3kiTuPN6m02m3+z+uZq9nesOfUGY/Xq1UyZMsVvBs899xyT\nJk3CZDL5N++ZOnUql1xyCX379iUtLY0vvvBtZLR7924mTJhAjx496Ny5M8uWLaNbt27Mmzcv4JOY\naNyERXH68OsnH6C7PYbyFu060K73sVvv/3TnoGYghDADLwLnA5nAVCFE5n50TwHfBKlmmJSy+5GM\ngT3Z2Lfx/b4du/ZXvm9v5O7du/s3emkuq1evJjExkfPOO48RI0bw17/+NWDTkMGDBweEoPZ9Gm9X\nGWyz+vz8wBmLB9Ls79jB6hVCMGLECHr16sWcOXP85Rs2bGDy5Mls3LiR8vJyPvjgAwYOHBgQMsvO\nzqZt27YsW7aM//znPzz66KNomsb555/P1VdfzcqVK/n9998POC+gpKSEG2+8kZUrV/K3v/3twL9o\nxSnFkMuupteFYwNmO0sT/K/jFrKLV5/Alp3aNCeB3BfIkVLmAggh3gfGAuub6G4DPgb6HNUWnmTs\nb+P7/ZUf7t7IHo+H3Nxcpk6dyuzZsxkwwDjhpjnbXp4olixZQkpKCoWFhYwcOZLOnTvTpk0b4uLi\naNu2LYWFhcyaNYvbbruNzZs3+82ztraWoqIiHn74YQAyMzMpKytj7ty5ZGRk+HdGC93fSpr1xMXF\n+UN1itMLe2gY51xxPV2HjWLRG7PZuXY1gyZeSlbveO5afBcj00byx55/JNQailfT2LF6JW17ntaP\npaNCc8wgBdjV6HseENAXE0KkAOOAYRjNQALfCiG8wGwp5RyOBo9EHVxzyHVWHFSyv4f74T7098eG\nDRvo06cPpaWlmPczFX/w4MFUVVUZyp9++mlGjBgBHHiz+n0cbEP7YMcOVu++nxMTExk3bhzLli2j\nurra/9CPiIhg/vz5LFu2jDvuuIOePXsCsHbtWjp06IDDUb+t4u+/k5WVxapVq+jfv//Bfm2KM4j4\nVmlMfHAmub8vIz2rF2aLhb5JfZm1fBbjPx/PE4OewLVwLcs++4jMIecy/JobsYUcvSWfTzeO1tDS\nZ4F7pZR6kL1Pz5ZS5gshEoEFQoiNUsofmoqEEDcANwC0bt364FdsxoP7VCY7O5uBAwdy2WWXMW7c\nOBYuXOiPqe+jOT2D/W1W31zN/o516tRpv+fU1NSg6zoRERHU1NTwzTff8NBDD7Fq1Sq/Gdxzzz3E\nxcVhNptZs2YNV155pf++d+7cSW1tLV6vl4cffpi///3vrFy5kuzsbH+bi4qKSEhIOPxfsOK0QAhB\nu14N76ZR9iieOPsJvt/1PU99NIP+P/peKtb/sJDdmzdw4e1/Jqmd2kEvGM1JIOcDrRp9T60va0xv\n4H0hxHZgIvCSEOIPAFLK/Pr/FgKf4gs7GZBSzpFS9pZS9j7d/5FPnTqVAQMGsGnTJlJTU4MOgczO\nzqZr16507NiRp556ismTJ+PxGJNmB6PxZvUZGRlMnjzZv+n8BRdcwO7duw+o2d+xA51TUFDA2Wef\nTVZWFn379uXCCy9k9OjRrFmzxp8bGDNmjD/0tX79ev+52dnZjB8/nn79+tGnTx9uuukmBg0axFVX\nXUVBQQFdunShe/fuLF269NB/8Yozhj5R3Rm2JimgrHzvHt77y91s+HHRCWrVyc1BF6oTQliAzcBw\nfCawHJgmpVy3H/0bwDwp5UdCiDDAJKWsqv95AfCYlPKA4yrVQnVnLkOHDmXOnDl06tTp4OKjiPr7\nOr1Y8cVcFr/1qqHcandw+VP/JCY5JchZpzbHfHMbKaUmhLgV+BowA69LKdcJIW6sP36gLF0L4NP6\n0JEFePdgRqA4s9m6dSsdOqhuvOLI6HnBWBzhEXz32r/w1NX6y8sGJ2CPjzmBLTt5aVbOQEr5JfBl\nk7KgJiClvKrRz7lA1hG0T3GGkZeXd6KboDgNEELQZehwkjt05ovn/s7/t3fn8VHV9/7HXx/CEtmE\nAAFlEInsAyZAghJJlJIStoJpKBAFZbEWFSxc9FJQwd6WVcLjYmMFrpeqv2qx7f2hVi2URWmhVgxL\niEXdxUQAABoLSURBVBBQiVwJ1CQFFWQJWb73jyRDJpk1M8nMJJ/n43EeMt/5fs/5Bk/mw1nmvAu+\nOEmv+OF81PcC9793P+tHrOeWth5cm2xE9BvISqkGK+LmrqT9Yi13TZ5G8o8f55fDlzOlzxSm/3k6\ne8/sBeCfn51g75ZX7SI7GyN9UJ1SqkFr2qwZd6ZOtb2e2ncqvdv35sk9TzKlWwrm1Y/57vw5vj57\nhtFz/41mzVsEcLaBo0cGSqlGZ3Dnwfw2+VXOvr7DFpzz6Uf7+MPPl3D525p5zY2BFgOlVKOUs/Ud\n2hSU2rX98/MTvPbUQi78qzBAswocLQZKqUbHGMMNbdo6fK/9TTfTql3ju+NIi4FSqtEREYalpjF2\n3hOENb1+6fRC21JuTvu+XVtjocVAKdVo9Rt+D5OeWU54m7a0atee7y1YwOKPn+Evpxw9fLlha3zl\nTymlqrD0tXLfL9dy7fJlOkf1ZGOXW3h056NcuHaBSb3Lo1kKTuUSeWtUgGdat7QYKKUavfZdbrb9\nuW9EX34z+jf8ZMdP+LboW+IKurJjUwbDpz7A0Ht/hIOHcTYIeppIhazc3Fxmz57NpEmT3HdWygvd\n23bnldGv8OH7b7FjUwYAe7e8Wv7lNC/TBkOFFgMvuQu+d9ZeuZw6dYpZs2YRGRlpl+7lyK5du5g+\nfbrPc3YVXO9JH2fvOQu9h/oJvtfQe1WXLn+Wh/Uf9kcB+9/8A/ve+G2DLAhaDLzkLvjeWXvlcuut\ntzJjxgy2bXP/vL7KDGRfeBJc76qPu/GOQu9Bg+9V6DuZ+Q/KSktrtH+09Q3OnKge9Bj6tBj4wFnw\nvbP2SomJiURERLhdf2UxKCoqYsaMGSxZssTrf5F4Elzvqk9dBd87C70HDb5XwWHkrEcYNOYHNdoT\n7p+Jpa81ADOqW1oMaql68L2z9sps5JiYGFJSUrzaxpEjR4iMjCQ5OZmkpCRWrFhhd/EqISHB7hRU\n5bJz505bH3fB9e76uHrPWeg9uA++dxR6X/n352nwvYbeq7okTZow4sGHGTJuoq3tTGw42zodpcw0\nvIfa6d1EXnIWfO+svbbZyMXFxeTm5pKWlsbGjRttqWBVeRJ7WZcchd4nJiZy+vRpl8H3zkLvAa+C\n7zX0XtU1EeHu6Q8B0DqiI/2SR/GTHT9hzcdrWBS3qEHdWRSyxWDgKwPdd/JS9oPZbvs4+3Cv7Ye+\nMzk5OcTFxXH+/HnCwsIc9klISODixYs12teuXUtSUhLgOuy+kqs+7t4D+9D7xMREsrOzXQbfOwu9\nBzT4XgUdEeGeB35se/3rpF/z0PaH+NWhX/H44McpLSnh7Kc5dOvv/8+k+hSyxcCTD+5QlpWVRXx8\nPNOmTSMlJYXdu3fTuXNnuz6eHBm4Crv3pI+z95yF3kP56S1XwffOQu8BunTposH3Kqi1bd6WDd/f\nwMxtM2lJOB12fsUXBzP5wb/9jF5D4wM9vVrTawYBkJaWxrBhwzhx4gQWi8Xh7ZFZWVkMGDCA3r17\ns3r1aiZPnkxxcbHX23IVXD927FjOnj3rso+z95yF3gNug++dhd4DGnyvQkJEeAQZw9dzavNb5B7Y\njzFlvLt+Df97xH9nB+qbBOP9srGxsab6rYoaWN5wBCr03hXdv5Q3rnx3kf9Z/gz5ufZ3DTZrEc6U\nZ1fROapnvc9JRA4YY2Ld93RMjwxUvdPQexXqmrUIJ7x1mxrtxUVXeWf9aoffTwh2WgxUvcvLy6NJ\nE931VOhq2qwZExc+xc297Y8mW7Rtw/ifLqKJk5s+gpn+RiqlVC00Cw8nZdEyOnbrDkCLTu3ZFl9I\ncafwAM+sdrQYKKVULYW3bk3Kz56lT3wiD616kbQ7Z/LIzkf45mro5ShrMVBKKR+07diJ8T/9d8Jb\nt+b+fvczotsI5n8wn+LS8rv/iouuBniGnvGoGIjIaBE5ISKfi8jPXPSLE5ESEZnk7VillGoI5g+Z\nz43Nb+Q//vEfFJzK5eWFj5Lzt/cDPS233BYDEQkDXgDGAP2BNBHp76TfauAv3o5VSqmGook0YWXC\nSgoOH+X/Pb2AC4UFbN/4PP/8/ESgp+aSJ0cGQ4HPjTG5xphrwBZgooN+84D/AQpqMVYppRoEYwxZ\nb79F779eg+LyW0xLi4t5a+1yvjt/LsCzc86TYtAVOF3ldV5Fm42IdAVSgBe9HauUUg3NubzTNdou\nfX2et9b+kuJrRQGYkXv+uoD8n8AiY2r/XFcReVhEMkUks7Cw0E/TUkqp+iUiJM953OG3kFu2a48J\n0i+keVIMzgDdqry2VLRVFQtsEZFTwCTg1yJyr4djATDGbDLGxBpjYvXBZEqpUNasRTgTn3iaVu3a\n29ryB4YzbsEimt/g/LHsgeRJMfgY6CUiPUSkOTAVeLtqB2NMD2PMrcaYW4E/Ao8aY970ZKxSdS03\nN5fZs2czadIk952V8pM2HToyYeFTtGjVijHzFnJl2E2sOfBcoKfllNtiYIwpAeYC24Ec4PfGmKMi\nMkdE5tRmrO/TDhxHAfetW7d22ddqtRIdHU16ejplZdfPpM2aNYvIyEjbEz4d2bVrF9OnT/d53q7C\n6/1l27Zt9OnTh549e7Jq1SqPtr1x40ZEhA8++MDW9sILLyAi7Nixwy/zioqKcvhkWKXq2s29+/Lj\njM30Hz6CFQkr+OifH7H1s62BnpZDHuUZGGPeA96r1uYwYsoYM8Pd2FDmTYhN1b4FBQXcd999XLhw\nwRbxOGPGDObOncsDDzzgdB2VOcj+8P7779OxY0e/rKu60tJSHnvsMXbs2IHFYiEuLo4JEybQv39/\nl9vOzs4mOjqa48ePc88993D58mVeeuklOnXqxO233+71PLKzs1m8eLFd2+bNmzUvWQVMi5atAGjT\nvA3rR6xn5vaZ9GrfC2sHK5/t/zu3DRlKWNNmAZ6lfgO53kRGRrJp0yYyMjJsofaJiYlERES4HFdZ\nDIqKipgxYwZLlizBn48d/+KLL5g4cSKxsbEMHTqUEydqdy/0/v376dmzJ1FRUTRv3pypU6fy1ltv\nuR135MgRpk6dyvHjxwF4/vnn+dGPfkSTJk3o3LkzaWlpTJkyhaFDh9K9e3feffdd29izZ8+SmprK\noEGD6Nu3L/v372fgwIG88847dosWAhUsotpFsfTOpSzctYC3X1jDn9at5INXXwr0tIAQLgaFv8og\np2+/Gouvfd3xJeA+KiqK0tJSCgoK3HeucOTIESIjI0lOTiYpKYkVK1bY5a4mJCTYnbaqXHbu3Gm3\nHkfh9cXFxTz00EOsW7eOzMxMnn32WbvTO944c+YM3bpdv1fAYrFw5swZp9uulJOTw+TJkzl+/Djf\nfPMNb7zxBvHx8bZTZ1lZWURFRbF//35ee+0121FVSUkJY8aMYebMmRw6dIiDBw86zSM4d+4cc+bM\n4dChQ6xcubJWP59S/jIk3Ery3o58XpFUeHj7u0HxDeWQjb0MFH9nHbtSXFxMbm4uaWlpbNy40ZYY\nVpUn0ZfgOLw+Pz+fo0ePkpqaCpR/wCYkJNQYm5SUxFdffVWjffny5Uyc6P47hI62nZiYyOnTp+nQ\noQNRUVEUFBTw3HPPMW/ePD799FMGDhzI1atXKSwsZNmyZQD079+fr7/+GoA333yTfv36MX78eABa\ntnR+h0aHDh3YsMHhWU2l6tW1q1f43TNPYL61zy7/y6YMOnbvQadbbg3MxNBiUK9yc3MJCwvz+LRF\nTk4OcXFxnD9/njAnz0dPSEjg4sWLNdrXrl1LUlKS7bWj8PpvvvmG5cuXM3v2bJfzqH6U4UjXrl05\nffr6F23y8vJs23S07cTERLKzs21ZyW3atGHbtm3s37+f+fPnM3jwYD755BN69epFeHj5I4EPHjxI\ndHQ0AIcPH+bOO+90Oy+lgknz8Bu4I2UK77+80a695FoRf1q3kgeey6Bps8BcPwjZ00ShprCwkDlz\n5jB37ly70zyuZGVlER8fz5YtW5g5cyb5+fk1+vztb3/j8OHDNZaqheDSpUu2glEZXj9gwABuuukm\ntm/fbrvDKTs7u9bXI+Li4vjss8/44osvuHbtGlu2bGHChAlOtw3lp8Aqi8GTTz5JRkYGYWFhtiKR\nlZXFl19+ydWrV7l06RLLli1jwYIFAHTp0oWjR6/fmKZfVFShYtDo8fS96267tuatWpF4/8yAFQLQ\nYuAXly9fxmKx2JZ169YB168vWK1WkpKSGDVqlO2UB0BaWhrDhg3jxIkTWCyWGrc/ZmVlMWDAAHr3\n7s3q1auZPHkyxcXFXs/PWXj9rFmzKCsro1+/fsTExLB69WqPC1V1TZs2JSMjg+TkZPr168fkyZOx\nWq1Otw3lxaeyMIwfP952GuzYsWNYrVaysrL44Q9/yB133EFcXByPPPIId911F1B+J1Z+fj5Wq5WY\nmBg+/PDDWs1bqfomIox6eB4dLLcAEHZLBw6NaUr3IUMCOy9/3pniL7GxsSYzM9OuTQPLG5+7776b\nTZs20adPnzrflu5fqr6dP5vHpx/uJfbeVB5//6fc1u42FsYurPX6ROSAMabWXyLSIwMVtE6ePEmv\nXr0CPQ2l6kTEzRbuTJ1K07BmrBi+gu2ntvP+l4G7q0iLgQpaeXl5NGmiu6hq+NqFt2NN4hp+/uHP\nyb+Uzzf5X3Hwz/X75B69m0gppYJATGQMU/tOZdUrC4jaX8y1K1e4MbIztw25o162r//sUkqpIFB8\n9Srd913BsucC165cAWDbi+u5eP5f9bJ9LQZKKRUEcvbt4dieXXZtVy9e4L1fraWsrO4zELQYKKVU\nEBj4vVH0GFTzZqC8Y59weHvdP+tTi4FSSgUBEWH0owto1d7+4ZUxyeMZ+L3v1/n2tRgopVSQaNn2\nRsbOfQJEaNmuPdn3NOHy3V1p1iK8zretdxMppVQQuWXA7Yx7/Em6D4zhnmtnmLNzDrGdY7mp9U11\nul09MlBKqSDTNz6RG9q0pV+HfkzvP52n9z1NmSlzP9AHWgxUg6XZx6ohmGmdybXSa/z22G8pLSnh\no62/58rFC37fjhYDL4VqBrKzfGJP+3nbDs6zj+sj9xg0+1g1DGFNwlgxfAVb9m3mN4vnsXfLq+z8\nrxf8mngIgDEm6JYhQ4aY6o4dO1ajLRBatWrlUVv19vz8fDNy5EizdOlSW9uePXvMgQMHjNVqdbq9\n9PR0k56e7sOMjSkpKTFRUVHm5MmTpqioyNx+++3m6NGjHvfztr1S9+7dTWFhYY3tPPbYYyY6Otq8\n+OKLxhhjLl26ZGJiYkynTp3MV1995fXPd+TIETNu3Di7JT8/3/Z+amqq23UEy/6lVHVlpaXm4J/f\nNun3TTBrJ4+zLUf37LLrB2QaHz539cigngQyA9nTfGJn/bxtd8dd7jHgNPtYc49VY3Pl4gX+/vvX\nMCX2Xzzb/ZuNXDznv28nazHwUihmILvKJ67KWT9v2ys5yz52l3sMjrOPvck9Bs0+Vg1DyxvbMfKh\nR2u0F12+xM7//rXfthOyt5bu/1MuH797qkb7Yxu+51Nfd0I1AzkQHGUf9+jRw2XuMeA0+9ib3GPQ\n7GPVcPSNT+Rk5kcc37fH1tapRxQJaQ/6bRshWwxCUaAykF3lE1flrJ+37VXXB/bZx999953L3GPA\nafax5h6rxmzkrEc4fSybKxe+5cLgCEqH30zHbt39tn6PioGIjAbWA2HAS8aYVdXenwj8AigDSoD5\nxpi9Fe+dAi4CpUCJ8SGJJ5T5koE8bdo0UlJS2L17t+2ceiVPjgyq5hN37dqVLVu28Prrr3vcr0+f\nPl61Q3necVlZGW3atLFlHy9dupTDhw/b5R536NDBlnv84IMP2n7uyuzj0tJSli1bxpo1azh06BBZ\nWVl2f6edOnXy6O9SqVAX3ro14+Y9QfOWrWh+UwSpb6eS1GMUgzsP9sv63V4zEJEw4AVgDNAfSBOR\n/tW67QKijTExwCzgpWrvjzDGxDTUQhDsGcjO8okBxo4dy9mzZ13287YdnOcuu8s9rvy5HWUfa+6x\nauy6WW+nc4/baB/enqfueIpn9j3DlZIrflm32wxkERkGPGuMSa54vRjAGOPwilxF/83GmH4Vr08B\nscYYjy97e5KBHKhrBqru1Wf2cSXNQFahaNFfFxERHsGioYt8zkD25DRRV+B0ldd5QI3oHRFJAVYC\nkcC4Km8ZYKeIlAIbjTGbqo+tjaE/iGLoD6L83lcFnmYfK+WZxUMXk/p2KiNvGenzuvx2a6kxZqsx\npi9wL+XXDyoNrzh9NAZ4TEQSHY0XkYdFJFNEMgsLC/01LRWCNPtYKc+0C2/H03c+zTP7nvF5XZ78\nxp0BulV5baloc8gY81cgSkQ6Vrw+U/HfAmArMNTJuE3GmFhjTKxeFFRKKc+MuGUEY3qM8Xk9nhSD\nj4FeItJDRJoDU4G3q3YQkZ5ScYuMiAwGWgDnRKSViLSpaG8FjAI+8XnWSimlbB4f/LjP63B7zcAY\nUyIic4HtlN9autkYc1RE5lS8vwFIBR4QkWLgCjDFGGNEpDOwtaJONAVeN8Zs83nWSiml/Mqj7xkY\nY94D3qvWtqHKn1cDqx2MywWifZyjUkqpOqZX6ZRSSmkxUEoppcVAKaUUWgyUUkqhxUAppRRaDFQD\noMH3SvlOi4GXKkPuK5dTp07RunVrl32tVivR0dGkp6dTVlZme3/WrFlERkbaJXxVt2vXLqZPn+7z\nvF0F13vSz1m7s9B70OB7pUKKLwHKdbUMGTKkRih0sASWVw25d9VWvT0/P9+MHDnSLF261Na2Z88e\nc+DAAWO1Wp1uLz093aSnp/swY+dB9572czXeWei9McEZfO9MsOxfStUWkGl8+NzVI4N6EhkZyaZN\nm8jIyLAF2icmJhIREeFyXFZWFoMGDaKoqIgZM2awZMkS23hPeRpcX9/B985C70GD75Wqb1oMvFQZ\nWBMTE0NKSopXY6OioigtLaWgoMDjMUeOHCEyMpLk5GSSkpJYsWKFXVJaQkKC3WmrymXnzp22Pu6C\n6931czXeWeg9uA++dxR6D2jwvVIBELIZyH//w2t8+Mff1Whf+MY7PvV154YbbuDw4cNej6uN4uJi\ncnNzSUtLY+PGjbZUsKo8ib2sS45C7xMTEzl9+rTL4HtnofeABt8rFQAhWwxCUW5uLmFhYR6f2sjJ\nySEuLo7z588TFhbmsE9CQgIXL16s0b527VqSkpIA50H31dUm+N5R6H1iYiLZ2dkug++dhd4DGnyv\nVABoMagnhYWFzJkzh7lz59qd5nElKyuL+Ph4pk2bRkpKCrt376Zz5852fTw5MnAWdO9pP2fB985C\n76H89Jar4HtnofcAXbp00eB7peqZXjPwg8uXL2OxWGzLunXrgOvXF6xWK0lJSYwaNcp2WgQgLS2N\nYcOGceLECSwWS43bI7OyshgwYAC9e/dm9erVTJ48meLiYq/n5yq4fuzYsZw9e9ZlP2ftzkLvAbfB\n985C7wENvlcqAMTbO1PqQ2xsrMnMzLRrqx5YHqhrBso/AhF670r1/UupUCMiB4wxse57OhkfqsVA\nhTaLxcKXX34ZNFnHun+pUOdrMdBrBiog8vLyAj0FpVQVwfHPMqWUUgGlxUAppZQWA6WUUloMlFJK\nEWLFIBjvfFKhT/crpUKoGISHh3Pu3Dn9xVV+ZYzh3LlztsdiKNVYhcytpRaLhby8PAoLCwM9FdXA\nhIeHY7FYAj0NpQLKo2IgIqOB9UAY8JIxZlW19ycCvwDKgBJgvjFmrydjPdWsWTN69OhRm6FKKaXc\ncHuaSETCgBeAMUB/IE1E+lfrtguINsbEALOAl7wYq5RSKsA8uWYwFPjcGJNrjLkGbAEmVu1gjPnO\nXD+Z3wowno5VSikVeJ4Ug67A6Sqv8yra7IhIiogcB96l/OjA47FKKaUCy28XkI0xW4GtIpJI+fWD\nJG/Gi8jDwMMVL4tE5BN/zS2AbgS+bQDb9Mc6a7MOb8Z42tddP3fvdwT+5eGcglkg9s262q6v6wyV\nfdNdH98eAWyMcbkAw4DtVV4vBha7GZNL+S+N12Mr+mW66xMKC7CpIWzTH+uszTq8GeNpX3f9PHhf\n980g266v6wyVfdNdH1/3TU9OE30M9BKRHiLSHJgKvF21g4j0lIr4LhEZDLQAznkytoH7UwPZpj/W\nWZt1eDPG077u+gXi/1kgBOrnDMb9M1T2TW+36xWP8gxEZCzwn5TfHrrZGLNcROYAGGM2iMgi4AGg\nGLgCPGmu31paY6wH28s0PjyXW6m6ovumCla+7ptBGW4jIg8bYzYFeh5KVaf7pgpWvu6bQVkMlFJK\n1a+QeTaRUkqpuqPFQCmllBYDpZRSIVYMROReEfkvEXlDREYFej5KVSUiUSLy3yLyx0DPRSkRaSUi\nr1R8Zt7vrn+9FQMR2SwiBdW/WSwio0XkhIh8LiI/c7UOY8ybxpgfA3OAKXU5X9W4+Gn/zDXGzK7b\nmarGzMv99IfAHys+Mye4W3d9Hhm8DIyu2uDsqaYiMlBE3qm2RFYZ+nTFOKX85WX8t38qVVdexsP9\nFLBw/dlwpe5WXG/hNsaYv4rIrdWabU81BRCRLcBEY8xKYHz1dVR8y3kV8GdjzMG6nbFqTPyxfypV\n17zZTyl/MKgFOIwH//AP9DUDb59qOo/yB+BNqvwGtFJ1yKv9U0Q6iMgGYJCILK7rySlVwdl++v+B\nVBF5EQ8eYxEysZcAxpjngecDPQ+lHDHGnKP8epZSAWeMuQTM9LR/oI8MzgDdqry2VLQpFQx0/1Sh\nwC/7aaCLQWN/qqkKbrp/qlDgl/20Pm8t/R3wIdBHRPJEZLYxpgSYC2wHcoDfG2OO1teclKqk+6cK\nBXW5n+qD6pRSSgX8NJFSSqkgoMVAKaWUFgOllFJaDJRSSqHFQCmlFFoMlFJKocVAKaUUWgyUUkqh\nxUAppRTwf2aQmjpMi6dzAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for M in ['PPF1','FLD1']:\n", + " csm = cosmo[M]\n", + " pt = csm.get_perturbations()\n", + " pts = pt['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptk = pts[i]\n", + " a = ptk['a']\n", + " phi = ptk['phi']\n", + " psi = ptk['psi']\n", + " if 'FLD' in M:\n", + " ls = ':'\n", + " lw=5\n", + " else:\n", + " ls = '-'\n", + " lw=1\n", + " plt.semilogx(a,0.5*(phi+psi),label=M+' '+'$k='+str(k)+'Mpc^{-1}$',ls=ls,lw=lw)\n", + "plt.legend(loc='lower left')\n", + "plt.xlim([1e-2,1])\n", + "plt.ylim([0.3,0.63])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "515 514\n", + "512 512\n", + "541 540\n", + "562 569\n", + "537 544\n", + "550 551\n" + ] + }, + { + "data": { + "image/png": "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\nIUkrAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#kminclosed = sqrt(-8*Omega_k)*(70/3e5) Mpc^(-1)\n", + "\n", + "k_out = [1e-3] #[1e-4, 1e-3, 1e-2]\n", + "#models = ['PPF1','PPF2','FLD1']\n", + "models = ['PPF1','FLD1']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64}\n", + "\n", + "fig, axes = plt.subplots(1,2,figsize=(8,5))\n", + "for Omega_K in [-0.1, 0.0, 0.15]:\n", + " for gauge in ['Synchronous','Newtonian']:\n", + " cosmo = {}\n", + " for M in models:\n", + " use_ppf = 'yes'\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],'Omega_k':Omega_K,\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf,'hyper_sampling_curved_low_nu':10.0})\n", + " cosmo[M].compute()\n", + " \n", + " label = r'$\\Omega_k='+str(Omega_K)+'$, '+gauge[0]\n", + " clfld = cosmo['FLD1'].raw_cl()\n", + " clppf = cosmo['PPF1'].raw_cl()\n", + " \n", + " axes[0].semilogx(clfld['ell'][2:],clppf['tt'][2:]/clfld['tt'][2:],label=label)\n", + " \n", + " ptfld = cosmo['FLD1'].get_perturbations()['scalar']\n", + " ptppf = cosmo['PPF1'].get_perturbations()['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptkfld = ptfld[i]\n", + " a = ptkfld['a']\n", + " phi_plus_phi_fld = ptkfld['phi']+ptkfld['psi']\n", + " ptkppf = ptppf[i]\n", + " phi_plus_phi_ppf = ptkppf['phi']+ptkppf['psi']\n", + " axes[1].semilogx(ptkppf['a'],phi_plus_phi_ppf,label=label+'_ppf')\n", + " axes[1].semilogx(ptkfld['a'],phi_plus_phi_fld,label=label+'_fld')\n", + " print len(ptkppf['a']),len(ptkfld['a'])\n", + " \n", + " axes[0].legend(loc='lower left',ncol=2)\n", + " axes[0].set_xlim([2,300])\n", + " axes[0].set_ylim([0.98,1.02])\n", + "\n", + " axes[1].legend(loc='upper left',ncol=2)\n", + " axes[1].set_xlim([1e-2,1])\n", + " axes[1].autoscale()\n", + "# axes[1].set_ylim([0.0,0.2])\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n8s7BZwrS5vvOPeg81RV3bQu9OuvWraNPnz58++23JCYmVjnPwIED+fHHH38xferUqQwePBiAFi1a\nsG3bT6dY5OTk0KLFL06xqFZWVlb50YnGjRuzYMECli5dyo033sgJJ5zA6tWradeuHcnJyQCsXLmS\nHj16ALBq1Sr69esX8Lak/qnoRQSo+roYpQVf9uf7gfurWC4b6BGOTIGUcjTLyMhgwIABXHbZZQwb\nNoyPPvqII4888mfzBDKi79OnD1988QVffvklLVq0YM6cOcyePTvgHJmZmeVF//vf/56mTZuSmJhI\nVlYWY8aMISMjg61bt5Kfn09xcTGTJ0/mgQceAOCoo44iIyOjfF25ublEy/kX8SIqPqMXEYk2o0eP\npn///mzYsIG0tLQqv1KWkZFB165dad++Pffffz8jRoygsLAw6G0lJSUxbdo0zjzzTDp16sSIESPo\n0qULAOeccw47duyoMVNWVlb5Z/FDhgwp/whh7dq1dOnShYyMDC688EJOPPFE+vTpw1VXXcVJJ50E\nHDiT/+uvv6ZLly707NmTJUuWBL+zJKws2LM7vdS7d2+3fPlyr2OIRDwzWxHpF66p6ud53bp1NZ7I\nJd445ZRTmDFjBh06dKi3berfwk/q+vOsEb2IiNRo06ZNtGvXzusYUkv6jF5ERGqUk5PjdQSpA43o\nRUREYpiKXkREJIap6EVERGJYVBS9LoErIiJSO1FR9M65t5xzE5s0aeJ1FBERkagSFUUvIiIitaOi\nFxERiWEqehERkRimohcREYlhKnoREalX2dnZTJgwgeHDh3sdJS6o6EVEKklMTKRnz57lj82bN9Oo\nUaMa5+3SpQs9evTgoYceoqSkpPz18ePH07x58/K7w1Vl4cKFXH755XXOvWDBAjp06EDbtm257777\nqp2vukxPPfUUZsaiRYvKp02fPh0z44MPPqhzvjLp6elV3s1PwkNFLyJSSYMGDVi1alX5o3Xr1ged\nd82aNXzwwQfMnz+fKVOmlL8+duxYFixYUOP2MjIyOP744+uUubi4mGuuuYb58+ezdu1aXnzxRdau\nXVvlvNVlysrKokePHqxfvx6AvLw8Zs6cSWpqKt27dw86U1ZWFkOGDPnZY+fOnUGvR+pGRS8iEiLN\nmzdnxowZTJs2jbJbgA8aNIgjjjiixuXKin7//v2MHTuW2267jWBvIb506VLatm1Leno6fr+fUaNG\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nJcOHDy8t+scee4yLL76YuLg4jjjiCODAPe2HDRtGr169aNmyJe+//z4A27dvZ/DgwRx33HF06NCB\nxYsX07VrV957773fPJo1a1atv5fUnopeRMLXZ/fCHY1//6jtvAexb9++0sP2gwYNqtayqampFBYW\nVmvkunLlSpo1a0b//v0588wzueeeezCz0tf79u37m1MJJY+PP/64dJ5t27bRokWL0ucpKSls27at\nWtnXrFnD0KFDWbt2Lb/88guvvfYaJ5100m8O8aenp5OamsrixYuZPn06kydPpqCggHPPPZcxY8bw\nzTffsHz58irvJb9z504mTJjAN998w7333lutjFJ9uk2tiEg5JYfj60J+fj6ZmZmMGDGCp59+mj59\n+vxunoULF4Y8x9atW2nSpAmpqans2LGDBx98kGuuuYbvvvuOrl27ApCbm0t2djaTJk0CoFOnTvz8\n88/MmjWLjh07MmDAAAAaNGhQ5baaNGnCU089Fdq/kJRS0YuIBFFmZibx8fEBH6Jes2YNPXv25Kef\nfiI+Pr7Cefr27cvu3bt/N/2hhx7izDPPBKB58+Zs3bq19LWsrCyaN28ecO6MjIzSQm/UqBHz5s1j\n8eLFXH/99Rx//PEArFq1irZt25KYmAjA8uXL6d69OytWrODEE08MeFtStyKi6M3sAuCCNm3aeB1F\nRKRS2dnZTJgwgYkTJ/7m0HtV0tPTOemkk7j00ksZNGgQn376aen58BKBjOh79uzJ+vXr+f7772ne\nvDkzZ87k1VdfDTj7ypUrS4v+xhtvpEmTJsTHx5ORkcGoUaNKs27ZsoXc3FwKCwuZNGkSDzzwAN98\n8w3p6eml68rOziY5OTngbUtoRcQ5et3URkS8lpOTQ0pKSunjkUceAf5zPr9z586ceeaZnH322aWH\ntuHAh9f69OnDunXrSElJ+d3XytLT0+nSpQvt2rXj/vvvZ+jQoeTn51c7X0JCAlOmTKF///507NiR\noUOH0rlzZwDOO+88tm/fXmWmjIyM0nPxAwYMKD2FsHr16tL1pKenc9FFF9G7d2969uzJlVdeyckn\nn8zo0aP597//TefOnenRoweLFi2qdn4JHavuJzu9lJaW5pYuXep1DJGwZ2bLnHNpXueoSkU/z2vW\nrKnyQ1zirdNOO41p06bRvn37kG9L/xb+o7Y/zxExohcREe9t3LiRtm3beh1DqikiztGLiIj3srKy\nvI4gNaARvYiISBRT0YuIiEQxFb2IiEgUU9GLSFiJpG8CSWjo30BwqehFJGwkJiayc+dO/aKPYc45\ndu7cWXr1Pak9fepeRMJGSkoKWVlZZGdnex1FPJSYmEhKSorXMaKGil5EwobP56N169ZexxCJKjp0\nLyIAmNk5ZrbOzDaY2c0VvD7QzFaa2QozW2pmpwS6rIh4R0UvIphZPDAVOBfoBIwws07lZvsE6O6c\n6wGMBZ6txrIi4hEVvYgA9AI2OOcynXN5wExgYNkZnHN73H8+JZcEuECXFRHvRMQ5+pLb1AI5Zram\nlqtrDOwK4rwHm6ey1yuaHui0psCPB8kVTNXZZ8FYvrb7vTr7vLLp5adF2j6v7gXJmwNbyzzPAnqX\nn8nMBgH3As2A86uzbPHy44HxxU/3m9mqauYMhtru29qsJ9Blavp7pbLXAv23X9f/zqvKUlfr8eo9\nqWx6RdNqdxch51zEPIBpdbmOQOY92DyVvV7R9GpMWxpJ+726y9d2v1dnnwe632Ngnw8Bni3z/DJg\nShXznwp8XJNlvdqnwdq3tVlPoMvU9PdKZa8F+m/fq/fEy/fFq/ekOu9Vbd+XSDt0/24dryOQeQ82\nT2WvVzQ90Gl1rbYZqrt8bfd7dfZ5ZdO93u91vc+3AS3KPE8pnlYh59wXQKqZNa3usmEgWO9tTdYT\n6DI1/b1S2WvV/Znwglfvi1fvSWXTg/6eRNT96OUAM1vqwvxe49Em2ve5mSUA3wFncKCklwAjnXPf\nlpmnDbDROefM7HgO/EJKAeIPtmwl24zqfRqJ9J6Ep9q+LxFxjl5+Z5rXAWJQVO9z51yBmU0EPuRA\ncT/vnPvWzCYUv/4UMBi43MzygX3AMHdgpFDhsgFsNqr3aYTSexKeavW+aEQvIiISxSLtHL2IiIhU\ng4peREQkiqnoRUREopiKXkREJIqp6COcmaWa2XNm9qbXWWKJmf3BzJ4xs9fM7Gyv80Qb7d/wo981\n4cHMkszspeKfj0sCWUZFH4bM7Hkz21H+8qAV3SHMHbi++DhvkkaXau73Wc65K4AJwDAv8oar6uzH\nymj/BleQ3hP9rgmRar4/FwFvFv98XBjI+lX04elF4JyyE3SHsDrxItXf738tfl3+40UC3I9m1tXM\n3iv3aFZmUe3f4HiR4L0nEnwvEvjvnhT+c2+JwkBWrgvmhCHn3Bdm1qrc5NI7hAGYWckdwlbXbbro\nVZ39XnxzpfuAuc655XUaNMxVZz865+4FBpRfh5kZ2r9BE4z3REKnmr/zszhQ9isIcLCuEX3kqOgO\nYc3NrImZPQUcZ2a3eBMtqlW434FrgDOBISVXj5MqVbYfK6P9G3rVek/0u6bOVfb+vA0MNrMnCfC6\n+BrRRzjn3E4OnMeUOuScewx4zOsc0Ur7N/zod014cM7tBcZUZxmN6CNHpN0hLFpovweH9mP40XsS\n3oL2/qjoI8cSoK2ZtTYzPzAcmONxplig/R4c2o/hR+9JeAva+6OiD0NmNgNYBLQ3sywzG+ecKwBK\n7hC2Bng9wDuESYC034ND+zH86D0Jb6F+f3T3OhERkSimEb2IiEgUU9GLiIhEMRW9iIhIFFPRi4iI\nRDEVvYiISBRT0YuIiEQxFb2IiEgUU9GLiIhEsf8P0HF1v9LS7skAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nIiIh7P8BJJGMD7Xz0moAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\njwnRq3w/AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nA9bp9lYmHoCEAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\niEgY+/95f/Y1B7A/iQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "colours = ['r','k','g','m']\n", + "\n", + "k_out = [1e-1] #[1e-4, 1e-3, 1e-2]\n", + "#models = ['PPF1','PPF2','FLD1']\n", + "models = ['PPF1','FLD1']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64}\n", + "\n", + "\n", + "for Omega_K in [-0.1, 0.0, 0.15]:\n", + " for ppfgauge in ['Synchronous','Newtonian']:\n", + " cosmo = {}\n", + " for M in models:\n", + " use_ppf = 'yes'\n", + " gauge = ppfgauge\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],'Omega_k':Omega_K,\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf,'hyper_sampling_curved_low_nu':6.1})\n", + " cosmo[M].compute()\n", + " \n", + " fig, axes = plt.subplots(1,2,figsize=(8,5))\n", + " for j,M in enumerate(models):\n", + " cl = cosmo[M].raw_cl()\n", + " l = cl['ell']\n", + " axes[0].loglog(l,cl['tt']*l*(l+1)/(2.*np.pi),label=M,color=colours[j])\n", + " \n", + " csm = cosmo[M]\n", + " pt = csm.get_perturbations()\n", + " pts = pt['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptk = pts[i]\n", + " a = ptk['a']\n", + " phi = ptk['phi']\n", + " psi = ptk['psi']\n", + " if 'FLD' in M:\n", + " ls = ':'\n", + " lw=5\n", + " else:\n", + " ls = '-'\n", + " lw=1\n", + " axes[1].semilogx(a,0.5*(phi+psi),label=M+' '+'$k='+str(k)+'Mpc^{-1}$',ls=ls,lw=lw)\n", + "\n", + " axes[0].legend(loc='upper left')\n", + " axes[0].set_xlim([2,300])\n", + " axes[0].set_ylim([6e-11,1e-9])\n", + "\n", + " axes[1].legend(loc='lower left')\n", + " axes[1].set_xlim([1e-2,1])\n", + " axes[1].set_ylim([0.3,0.63])\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.104976\n", + "0.120376\n" + ] + } + ], + "source": [ + "print 0.31*0.64**2-0.022\n", + "print 0.26*0.74**2-0.022" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/cl_ST.ipynb b/class/notebooks/cl_ST.ipynb new file mode 100644 index 00000000..c85450c4 --- /dev/null +++ b/class/notebooks/cl_ST.ipynb @@ -0,0 +1,215 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246}\n", + " # other output and precision parameters\n", + " #'l_max_scalars':3000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "#\n", + "# scalars only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000})\n", + "M.compute()\n", + "cls = M.raw_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# tensors only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "l_max_tensors = 600\n", + "M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors})\n", + "# for l_max=600 we can keep default precision\n", + "# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre\n", + "#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000})\n", + "#M.set({\n", + "#'recfast_Nz0':100000,\n", + "#'tol_thermo_integration':1.e-5,\n", + "#'recfast_x_He0_trigger_delta':0.01,\n", + "#'recfast_x_H0_trigger_delta':0.01,\n", + "#'evolver':0,\n", + "#'k_min_tau0':0.002,\n", + "#'k_max_tau0_over_l_max':3.,\n", + "#'k_step_sub':0.015,\n", + "#'k_step_super':0.0001,\n", + "#'k_step_super_reduction':0.1,\n", + "#'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + "#'start_large_k_at_tau_h_over_tau_k':0.05,\n", + "#'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + "#'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + "#'start_sources_at_tau_c_over_tau_h':0.006,\n", + "#'l_max_g':50,\n", + "#'l_max_pol_g':25,\n", + "#'l_max_ur':50,\n", + "#'tol_perturb_integration':1.e-6,\n", + "#'perturb_sampling_stepsize':0.01,\n", + "#'radiation_streaming_approximation':2,\n", + "#'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + "#'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + "#'ur_fluid_approximation':2,\n", + "#'ur_fluid_trigger_tau_over_tau_k':50.,\n", + "#'l_logstep':1.026,\n", + "#'l_linstep':25,\n", + "#'hyper_sampling_flat':12.,\n", + "#'hyper_nu_sampling_step':10.,\n", + "#'hyper_phi_min_abs':1.e-10,\n", + "#'hyper_x_tol':1.e-4,\n", + "#'hyper_flat_approximation_nu':1.e6,\n", + "#'q_linstep':0.20,\n", + "#'q_logstep_spline':20.,\n", + "#'q_logstep_trapzd':0.5,\n", + "#'q_numstep_transition':250,\n", + "#'transfer_neglect_delta_k_T_t2':100.,\n", + "#'transfer_neglect_delta_k_T_e':100.,\n", + "#'transfer_neglect_delta_k_T_b':100.,\n", + "#'neglect_CMB_sources_below_visibility':1.e-30,\n", + "#'transfer_neglect_late_source':3000.\n", + "#})\n", + "M.compute()\n", + "clt = M.raw_cl(l_max_tensors)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# scalars + tensors (only in this case we can get the correct lensed ClBB)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors})\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.ylim([1.e-8,10])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{XY} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.title(r\"$r=0.1$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "ellt = clt['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "factort = 1.e10*ellt*(ellt+1.)/2./math.pi\n", + "#\n", + "plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\\mathrm{TT(s)}$')\n", + "plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\\mathrm{TT(t)}$')\n", + "plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\\mathrm{EE(s)}$')\n", + "plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\\mathrm{EE(t)}$')\n", + "plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\\mathrm{BB(t)}$')\n", + "plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\\mathrm{BB(lensing)}$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('cl_ST.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/cltt_terms.ipynb b/class/notebooks/cltt_terms.ipynb new file mode 100644 index 00000000..7d7f807d --- /dev/null +++ b/class/notebooks/cltt_terms.ipynb @@ -0,0 +1,167 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'}) \n", + "M.compute()\n", + "cl_tsw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl_eisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl_lisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl_dop = M.raw_cl(3000) \n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\\mathrm{T+SW}$')\n", + "plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\\mathrm{early-ISW}$')\n", + "plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\\mathrm{late-ISW}$')\n", + "plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\\mathrm{Doppler}$')\n", + "plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\\mathrm{total}$')\n", + "plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\\mathrm{lensed}$')\n", + "#\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('cltt_terms.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/distances.ipynb b/class/notebooks/distances.ipynb new file mode 100644 index 00000000..84f66065 --- /dev/null +++ b/class/notebooks/distances.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "font = {'size' : 20, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Lambda CDM\n", + "LCDM = Class()\n", + "LCDM.set({'Omega_cdm':0.25,'Omega_b':0.05})\n", + "LCDM.compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Einstein-de Sitter\n", + "CDM = Class()\n", + "CDM.set({'Omega_cdm':0.95,'Omega_b':0.05})\n", + "CDM.compute()\n", + "\n", + "# Just to cross-check that Omega_Lambda is negligible \n", + "# (but not exactly zero because we neglected radiation)\n", + "derived = CDM.get_current_derived_parameters(['Omega0_lambda'])\n", + "print derived\n", + "print \"Omega_Lambda =\",derived['Omega0_lambda']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Get background quantities and recover their names:\n", + "baLCDM = LCDM.get_background()\n", + "baCDM = CDM.get_background()\n", + "baCDM.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Get H_0 in order to plot the distances in this unit\n", + "fLCDM = LCDM.Hubble(0)\n", + "fCDM = CDM.Hubble(0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "namelist = ['lum. dist.','comov. dist.','ang.diam.dist.']\n", + "colours = ['b','g','r']\n", + "for name in namelist:\n", + " idx = namelist.index(name)\n", + " plt.loglog(baLCDM['z'],fLCDM*baLCDM[name],colours[idx]+'-')\n", + "plt.legend(namelist,loc='upper left')\n", + "for name in namelist:\n", + " idx = namelist.index(name)\n", + " plt.loglog(baCDM['z'],fCDM*baCDM[name],colours[idx]+'--')\n", + "plt.xlim([0.07, 10])\n", + "plt.ylim([0.08, 20])\n", + "\n", + "plt.xlabel(r\"$z$\")\n", + "plt.ylabel(r\"$\\mathrm{Distance}\\times H_0$\")\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('distances.pdf')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/many_times.ipynb b/class/notebooks/many_times.ipynb new file mode 100644 index 00000000..e8b61653 --- /dev/null +++ b/class/notebooks/many_times.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "in a next run with the same values of tau, you may decrease z_max_pk from 46000 to 45512.80656212521\n", + "grid size: 1021 2199 (2199, 1021)\n", + "> Plotting Theta_0\n", + "> Done\n", + "> Plotting phi\n", + "> Done\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABBwAAAIHCAYAAAA8Wk9nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOydd5gkVdlHz63Q3ZPjRjYDy5IzktOSJSMIH0kQBRMgooBKEFBQgoAiOasgIBIEBQmiKFGQBZa0ZNkAuzupc4X7/VGhq3p64s7szM7e8zxjd1fdqq4exu3bp9/7e4WUEoVCoVAoFAqFQqFQKBSKoUQb6QtQKBQKhUKhUCgUCoVCMfZQwkGhUCgUCoVCoVAoFArFkKOEg0KhUCgUCoVCoVAoFIohRwkHhUKhUCgUCoVCoVAoFEOOEg4KhUKhUCgUCoVCoVAohhwlHBQKhUKhUCgUCoVCoVAMOUo4KBQKhUKhUCgUCoVCoRhylHBQKBQKhUKhUCgUCoVCMeQo4aBQrEIIIXYTQtwjhPhUCFEQQiwVQjwlhPi6EMIY6etTKBQKhUKhEEL8VwixaKSvQ6FQjDxCSjnS16BQKPrAlwm/Ab4GdAEPAx8ALcBewDTgJWBfKeWSkbpOhUKhUCgUqzdCiASQBh6XUu4z0tejUChGFvWNqEKxanARnmz4N3BwVCr4b+yXAt8B7hdC7CiltEbmMhUKhUKhUKzmbACYwCsjfSEKhWLkUUsqFIpRjhBiNnAasBQ4oLyCQUpZlFKeDDwJbA0cu/KvUqFQKBQKhQKATf1bJRwUCoUSDgrFKsCxeP9fvUFKubSXcRf7t8cN/yUpFAqFQqFQeAghaoQQ5wshFgDX+ZvvEEL8SwjxhZG8NoVCMbKoDAeFYpQjhHgK2BnYDZgKzKgwrB24Fi/fQQJVUkpnJV2iQqFQKBSK1RQhxDi8Ksv1gQeA7YEE8BfgMLw8h42klB+O1DUqFIqRQ2U4KBSjn4n+7f+As4GdKoz5SEp5hRBiGTABL0zys5V0fQqFQqFQKFZDhBACuBtPNhwCPIj35cdzUsrDhRAfAT8ATgLOHLELVSgUI4ZaUqFQrEJIKXeWUooKPzNG+toUCoVCoVCsduyPV4V5rZTyT8A6QBWl/IY/+LcbrPxLUygUowElHBSK0c9i/3ZKb4OEECm8yoYisMzfJoQQPxFCLBRCZIQQzwghNh7ey1UoFAqFQrGaEORG/ca/LQ+MLPi37kq7IoVCMapQwkGhGP3827+d28e4HfGWSb0YyW84HTgB2BtoBf4OPCaEaBiG61QoFAqFQrF6sROwSEr5uv+4XDgEX5a8t1KvSqFQjBqUcFAoRj+34X0z8DUhREsv44K1kbdEtn0TuFxK+aqUMgecixcqediwXKlCoVAoFIrVAj8sshFYFNm8KZAD3vIf7+Xf/n3lXZlCoRhNKOGgUIxypJTvAJfjVSg8IISYEN0vhEgIIX4N7AI8B9zub2/A62jxQuRcDvAypW8gFAqFQqFQKAaD7t+mIts2AV6TUjpCiEbgCGAJXscKhUKxGqK6VCgUqwZn4X2LcALwrhDiz8AHeJkN++C1y/wPcKCU0vKPqfdv28vO1RbZp1AoFAqFQjEYluBlRq0nhFgPyADNwCtCiARwPV7nrOOklMWRu0yFQjGSjJkKByFEsxBizZG+DoViOJBS2lLKrwF7AH/DS4T+Pt7SiPfx2k1tI6VcEjms079tLDtdU2SfQqFQKIYQNR9RrC5IKSVwmf/wceAq//4GeF+CHAr8Qkp568q/OoVCMVoYE8JBCLEO8AReSblCMWaRUv5NSnmIlHKylDIhpWz2W2VeF6lsCMZ2AB8CWwbbhBA63nKKV1AoFArFkKLmI4rVkIuBHwI2sJ+/bTO86soDpZRnjNSFKRSK0cGYEA5SyreBV0f6OhSKUchvgNOEEBv5bTPPxVtzec/IXpZCoQgQQkwa6WtQDA1qPqJY3ZAeF0kppwGPAhbQKKXcQUr5wAhfnkKhGAWMugwHIcQkKeWivkcqFIp+cClQhzcJaMALjNxDSlme66BQKFYyQoht8brLTMH7RrCncbXAhcACoBYvs+UHUspMf/YrBoeajygUA2Zj4G2V16BQKKKMmgoHIcS2QogHgYcr7KsVQlwhhPi2EOJMIcTVQoiaEbhMhWKVwv/m4Rwp5SQpZbWUcnsp5X9H+roUitUdIUQdXl96g77fi+8Glkkpfy2lvBhYihfG1t/9igGg5iMKxcDxW2ROAuaN9LUoFIrRxagQDv2YeKnJlEKhUCjGDFLKLj/k9bPexgkhtgf2Bu6NbL4DOFwIsU5f+4f4ssc8aj6iUAyajf1bJRwUCkWMUSEcept4qcmUQqFQKFZjdgGKUso3gw1SygVAEdirH/sVA0DNRxSKwSGlfFxKKaSUPx/pa1EoFKOLUSEc+qDPyZQQYm1gI2Bbv6RLoVAoFIqxwBpAW4Xty4EZ/divGDrUfEShUCgUigEy6kIjK9DnZEpK+S69BG4BCCG+DnwdIFVVs/ka0+cM7VUqFMOEXNnPN0RP2O00PZy316eTvY/p7Vor7SvfJuP/Q/nDsl3IshPISvtkcIgsnSdyovg5ZekcUsZfpwRZ4Rcg4w+6I4IbEdsmvP/xtgqBEP4oUXoshPB//PsaaP7jZL6LhoXvIqSkWN9MbvIMf79EQyKEi4aLQCKkiyYdhOuC6yCkBNdB+o+l43qv13GRrvfjOtLb5krvdylLv9+3MpmlUsph+fC2uVYjO6Uz5OddQOENIB/ZdL2UcjCl9wW81PdyNLz/nH3tVwwdQz8fQWw+hcTQXqVi9WYY/l8vxCBO2tchg9hf8TrKN4leHvb0QPS2W/jP3dPziPi+XreXnUtUOLf3ptzLOFE6V+S9PRgQ/o5E9EUJ73E4vnyMCH8k0fEivC/9cTJ87O2T/jnCx3hjJcKfx/jbZDDGe2+X0h/nT5WkjP+UxsnIdu9+dWYZLcs/BqC9dgJtdRP8OYM/j/DnT8FcAiTS9edPwSQsOscaAJmOd1ap+cgCCo9KKUe82nFVEA5DMpnyJ3rXA6y17hby0tufH5qrW0kM1YdAxfAg+/+n2G/cQfw378/fSW9jXFn5dfT14b38WmXZeXoaG31TKd8fbHPdymNL42TFsW70TcuVsfO6bukNzJXeG1FwLtf1byX+h99gvDfOldIfJ3Ed6R8vw+cIPjAHx7i2WxoTbHclruP41yxxHdc/3g2vtzQ+si24UP9xOUILJiVaeF/TNDTde6zrOkITGKaBpmsYpo5h6ui6hmFomEmDhKmTSOmYhiCR0EgmNdZ6/W/sc/4BGFLywb7H8cY511CVkpiaQ7VRJKUXSIkcSTdHws6RKKYxCmn0XBdaLg2FPDLThZvJ4GSy2OkMdq6Alc5hZfIUMwXsvIVdcLALNq7tIB1/2qMLtvzHcx91e7FDRKd0uMKYPuTn3dd+Jy+l3GIITvUJ0FhhezPwEV6b2972K4aOIZ+PrC1Scjj+/hSrH8IcHr+oGQM7rzD7Lp7u7Zw9vY5Kx5SPLR8j9NJjLXI/eH/0xmg97g+2BecRmhbuD/dppX3R44QmYtu8x9624FjN0MPtpceaJw4ix4fjdD3cJgzde6+P7EPTvDG6DsF4XQddR+hGeB9dB8P0hIJhho+lpiM1HTQdaZi4uonUDaTQvfuajqOZOHoCV+g4moEjDO9WGjjoOFLHljq2a+BKDcvVsaWG5ejYrsB1BUVHw3IEtiOwbIHjQtEC2wHLkti2xLIltiOxii62LSkWHRzHZYtnbuWIu09GA+7b9Uwe2O4UbMvBtmwcy8FxHFzHxbYsXNvFcRz/Sw0Hx3ZwHcefY5XmUwPhX3/eeZWaj+xrv9M6pCccJKuCcOhrsrXKoiTC2GAsy4b+VAmMJtkQ3T/csqF0/MBlQ3A/fA2+bAgkQiXZEPud9kM2aFowiSrJBk3X0A09JhsMQ0fXRSgbzIRGwtQwDEEyqbH2vEfZ+4IDMawC7x9wAvN/fDWphCSl2yR0m5ReICkKJN0cKSuNbhcwihn0fAYtn4FsBgr5mGywurLY+aInHXJWKBtc2+kmG4IJ3rAhhmmibg/ZmR4BLhFCTJNSfgwghJgDJPx9eh/7FUPHmJ2PKFZthuPfsIGKBu86Vm/ZEN0efe8qlw2VJER4zBDIhqhw6FE26LonHHRfMGg6UvckRLlskJoRygZXMyrKBlsauGihbLClhis1bKlhuxq2K7xbR3j3fdlgO2DZcdlQtCSOW5INtuVi2y5f+OdNHHHPqQDcs9uPeWjrb+JUkA2O7YSywbUdpHSHRDYMO8MxHxm6ucgKsSpkODwC1AohpgUbRstkqrz8Z6A/ilWfVUU29PU3N1jZ0H3/qiUbStczcNng+FUJ5bLBcdw+ZYNjO/71B+NK5+pJNkhZWT5AZdkghOiXbDBMLSYbkkmdZNKrbJj930fY54IDPNlwyEm88SNPNlQZFim/siEpCqTcDCkrjVlIYxa60HNptFwXZNLIbAY3G6lsyOSwsgXsXIFipujd9ysbHMuNyQbN0KlZa8yvCtDLNwghThZCfAtASjkfeAw4MjLkMOAvUsq3+9o/fJe9WjJq5yOK1RNhitVONlR6zaNVNpSEQlw2CE2LVDdUlg2aoYdj0LQByQZh9FLZEPxovnjwqxmk5m0PZAOaHlY2uLoRygZHMytXNuBVNngVDhqOq3vVDa6G5XjSwbI92eCJBk82lFc2FP1bO7x1sWyHbf5+XSgb/rDHeTy09TfDygbX8eSCbdmhWAhkgzNElQ0Am26wYNDHru6MNuHQbeI1XJOpFZUFShis3gRr0oaagcqG/vwt9rV/RWRDXCL0LRui1ztcsiF8/kAEBIKhgmyQgWTop2xwnN5lQ7hcoj+yITzejUmESssoBiMbgklOVDYEyye8JRS+bEjo3WVDQjDnlYfY+8KD0K0iCw77Nm+ddSVVyZJsqNLypESepJslaWUxi1mvsiGQDbkMMpvBSXfhpDM4mRx2JkcxnfeXURS7LaNwLW+ZSSAbatcRrHVpodtrHkqEEGjG0P/043mrhBCHAnOBtYUQRwohxvu7d/W3B3wZmCGEOEMIcSYwFfi/AexXDJyVNh9RKAbKcIkGGP2yoc8xwyAbgvfTcqkQXTIR3V66X1k29FXZEFtqoWlo/nLISrKh249RkgqhbDCMeHVDJdngi4ZANriaET7uSzbY0ghlg+Xq/ZINlh1UNvhiIVhGYUts28Wy3FA2bPfkb/jyfacD8Pu9LuDhrb6ObQUiwQ2lg+t4YsG27FA2eDlRcoVlw5abvs2l590w6OP7w3DMR0YLo2JJhRCiCtgXb4LVIIQ4EviblDJoS/Vl4OdCiDPw1kmqyZRixBgO0QCDkw0rMmaweQ2l46P7+ycbyvdXqnoYysqGQBwE51lh2eD2ntlQymKQ3bYD3WRD7He2gpkN4TZREg3eBKkkGzRfNpgJoyQbEjqG4ckG0xSebHjxfva46DA0x+bdw0/h3dN/QVXCIaE7XmWDViCp5TGdAikr42c2eJUNopj3ZEM67S2jSGdxC0WsdIZiOu8voyjiFB1vOUWFzAbN0KlbXzDrp3n0umG2u6J/k+WhRkqZA+7xf8r3HVj2uB04sZdz9bpf0X/UfEQx2hlLosE7R98Sob/j+pINgWiI7o8Kg55kQ/n4qFQI9q0U2RBdVhEVDEKLyQahl7Z5osEATZRkg789zGwIllD4+Q1R2VBaQlGSDbYwcaUey2xwXB3Xr2wIllG4Mr6MwstrKMkGTzAQygavysGNVTbs8PivOPiBHwLw230u4rHNjsWxvSUSlTIbvC9xvC9qguyGFZUN2245nwvPupWEOfQB0zFGaD6yMhgVwqG3iZe/X02mFKOC0VDVACMrG/qb2VBJJvT1HIMJiAz2V5IN0fMHsmEwmQ29yQbHlwm9yYbgja68siG43oHKhtg3KpGAyEAylMsGTdfCpRS6rsVkg5nwAiJN08tsWPf5e9n94iPQXIe3j/we7333Z1QlHFKG5WU2aAVSWo6knSVh5+OyIZ+BfNZbRpHJ4GQy2NkcTqEYyoa+AiI1Q6d+I8HMC/PoNZLca1Xd/2AUimFCzUcUo5XhEg0wuqsaehobHRcVDTBysqGngMjByIaKmQ39lQ26N75bXoOmdw+IjNyPBkQGssHRzIqZDS6aV9EgjVAyOGUBkYFsCAIibccLiIzKhqLlzbG8Sod4QOROj/2SAx86B4Dbv/gLntjs6D4zG4YyIBJgp23n8ZPv34FhuPzxz9sB/xn0uVZnRoVwUChWBZRsGFrZMJBlFEHLyYFUNnjjugdEBufqSzY4/gWFyyR6kA1xiVBhGYXrRs7be0BkeV5DsL8nelpGUS4bumU2RGRDMqlh6J5s2PDZPzD3kqPQXIe3jjmDBSdfQFXCIWnYpIwiCWGRFHmSdpaklcGw8+hFLxxS5DOQ6UIW8rhdaZxMBiudxc7kwoDIQDZYOQvHckPZEIRDCk1Qv5lg5vk59CrIvlJD1z1TgWd6/B2sMGJwk22FQqFYGYw20QCjNxwSKsuE3mRDTE5UCCruSTZ0X15RHgbZf9kQdKfoVTaEFQ6l3IYeZYNf4RDKhiCzISobdDOscggCIl3NDB9Hl1C4Qg9lgy1NHKmHAZGligYDR4pQNliO5lUzOJUDIoPKBtuuHBC566OXsP/D5+MKwW37XspTGx/RTTbYlu3NxSx7WAIid9/pZX703TsxdJc7/7QTV9+8H3DVoM/XJ2N4PqKEg0LRB6NlCQWMXtnQ03OORtngRiscepENwVKM3lpf9iUbXMfpUTaU5MLAZEN/MxsM00BoIiYbzKRX4WAaJdmQTHgdKTZ85nfMvfxYNNflreN/xIJvnktVwvEyG3RvGYVJkZSTIWllSBS60OxCqfVlpsurbMjnw8oGO+O1vbTzxVhlg2OVXm8wwdNNjfrNJTPOzaGlIPtiLZmHZpCoq678x6VQKBRjmOEUDaBkQ/RxcK7yzhIVz7eyZENQ7dCDbIhXOQiCjhMikAuaNijZIDUdV+ixqobwvjRwwqUUWtiNwnYNbFfDkSJW2eDIuGwoWngVDmUBkY5TCogsWg67Pfwz9n30IlwhuGX/K3h6w0NjmQ1BZUMgFaIBkUOV2bDP3Bc48+S70TTJrXftxo2/2wuG6fPA6oASDgpFLyjZEBxbvr9n2TCUmQ3DIRvCCodellGEx/eS2RAPjoyGQgZLLEZONuiGjm6UllEEsiGR0NE1jURKJ2F67S+TCcH6f7+dub88DiEl8792Hh9944dUGSXZUKXnSZLHdAsk7SxmMYNezKIVsmHrS5n1llC4+QJ2NofVlcXK5P0uFHa3ZRSl1+TJhsZtYdoP82gJyDxbS+bh6SQb6tBrarr9HoYUMfwTe4VCoegvq7Jo6Ov8I9X2Mjqmt3DIivv7UdkQfe6VLhv85RJhQKTmZzaUd6MQIiYbgsyGUutLv7JB6KXqBhEsqdC6daMIWl46fjhktPVlEBBpO+XdKCSOQ7eAyDCzwbLZ86EL2Ptvl+AKjRsP/BXPrH9QxYDInjIbgi97VkQ2HLDXv/n+t/4IwA137MVtd+8+6HMNiDE8H1HCQaHoASUbgmPL949e2VApILJSOGRwXHCM6wQSIlgmUVk2hOGPvcgGTzD0vIxiOGRDpYBIw9DRDC2UDYahYZo6ui480eB3o9j4yZvZ6cqvIaTkjZMu4OOvn0GVaWNqTljZkCRPys5gOnnMQhqjkEbPdXkBkZk0MtOF4wdEOvl82PrSynrLKJyi3bts2EEy/aw8woD0P+vIPjqNZEM9RmMDem1dt9/FUBKkQisUCsVIsjI+aIxUVYN3jrErGwaa2dCtJaah++/nZR0oArkQPO4tINI0epYN0YBIvVTVgNC6ZTbEAiI1Ewc9DIgMu1G4lVtfOlLEulFEAyK9jIbuAZHFoovrSCzLZq8Hf8Kej1+GKzRuOPhq/rXuARUDIoczs+HQ/f/BKV97AIBf37Qfd92/86DPNVDG8nxECQeFoozhEg0wdmVDX5kNlUTEisqG4EN5VDZEz1We2RCOjUiJQDYEnSv6kg3dJcKKyYbS72lgAZHlskEzvMdR2aBHAiINQyOR0EkkNL8jhScbNn3iBna6ysu/e/1bF/HJV79Hys9rMDXHC4gUOZJOloSVwbByXuvLfAaRy0A+F1Y2OOksdjoTBkRamTxWzmt96Vhuj7KheVfJ1NM92dD1ZD25J6aSbPRlQ2MT1AyvcFAoFIqRZGV9oznaZMNwdaLwxowR2RCtfAgEg1/10C0gMiobDCOW4SB1EylErBuF1PS+AyLRcSgFRAaywXJLFQ6l1peeYIi2vgwyG8oDImPdKHyhsM/9Z7P7k1fiaDrXH3wNz627X48BkZUyG4ZiGcWRhzzJN77yMACXX3MQ9z2y/aDPpYijhINCEWE0yYb+iIa+xq1OsiH6vD1lNsiIlAikQNCJoq9lFD3JhqBLxXBUNvRXNui6l14dtr70cxt0XYQBkcmkjpkoLaPY7LFr2PHqbwEw7+RL+N+xp1Bl2KT8ZRQJYZHU/IDIYppEMY1m5b1uFNkuPyCyELa+tLOlvIag9aW3jMKOZTZ4r8uTDS17SqZ8N4/QoOtvjeT+vkZcNjS24FYPs3AYwyWMCoVi9DIWRENf5x/KThQwMNlQaX9/ZENJJAx9QGSvsqF8WUV5ZUNPsqHSMgrdCDMdulU2+Mso+hMQGWQ2uGhhNwrL9VphRgMiw+UTkWUURRtv+YQfEBnmNbjxZRS25bD/n37Irn//NbZmcN2XruP52XuHsiHIbAgCIl3HqSgbVmwZheS4wx/jq0c+husKLrn6Szz02NaDPNcKMIbnI0o4KBQ+q9oSir7GjSXZED1PT7KhX5kNsfF+u8t+yIaeulGESytWsmzQDA3N36brXp/uWGaDqccqG8yEJxuSCY2EKdjiL79i+2tPAWDeaZfzvyO/TZXpywbDD4gURVJ2hmQx7WU2FDJohVwoG9xsBpkvhAGRVlcWO1eIBUQG3Sii3zoITcNI6rR80WGNbxUQGnT+pYnis1NJ1Fdj1NejNzRCQzN2fQtWqh6FQqEYK6zMDxRKNgyNbIhuL8mE0raBygbN8M/f2zKKQEYEyyj6KxsMMwyJDDIbpF/xEJUNgXyIyoZoQGTQjSIIiAyXUch4ZoPllFpfOm4pINK24wGRdoXMhmLR5oB7v88u/7wOWzf5zaE38NJae1TMbIgGRAaZDUMlG0485hGOPvRJHEfwsysP59GnthjkuRQ9oYSDQsGqJxsGIxp6Om64ZUPs3CMgG4LjXadUpQD0KRscJ7rMYsVkQ6kV59BUNgSyQasgG8yEgWF6osEwtFg3imRCsMWfr2C7608D4L+nX8XiI0+kSo/LhiR5TDtPwvICIo1CGi3XhSgWIJfBzWZwM1ncfL7U+jJXoJjOxQIig9aXpdflyYbxB7lMOrEAQMeDzVgvTSXR6AVE6k1eZYPd0Eq+ppVcsqH7H9JQIsZuGyqFQjE6WNnfWq7Iv2lKNvRPNgTj+pINwXXFlmKE7+dlAZE9yYaeWl/2IBtCwRB2ozC6yQbX3xaVDbGASFkKiIy2vozmNQTdKCynckBkkNlQtLrLBrtocfAfvseO/74RS0/wm8Nu4j9rzu0zINL1sxqGJrNB8p0THuTLB/wD29E4/9IjefKZTSqOLG+XOiyM4fmIEg6K1ZrRtIQCRjavwTu+fMyKy4ZKSyOC7SWZEM1VqHzewcqG8LhQCJSeszfZUNq/cmVDlL4yGwzTQPeDIYOAyEA2mH6VQ1Q2fOHBS9n6xh8A8MoZV7Pk8BNKAZG+bEiRI2WlMZwCiUJXSTZk01DIe60vM1mvsiFXCFtfWtmCV9HQS0CkkdSZcJjDxOM92dB+bwv2vCkkGuswGhvQaus82VDfQr6mla6qcWTl8HapEMQnswqFQjFUjER59EhWNXjnGZ5wSFg5sqG37dHKhuiY3mRD7HF/AyIHIhsMw2uBqUXaX/oyIRoQ6VUzRPIbtHjry2hApO13pLClju0aOFKUdaOIB0R6SygErlsKiCxa3hc90W4UQUCkXbQ4+K5T2f7ZW7CMJL8+7GZembVLLCDSlW6vAZErmtkghMtpJ93HQfs8i2XpnPOLo/nncxtWHlvWjWS4GMvzkZWgaxSK0clwy4an/nwrh26ts+iTBd32O7bNoVvr3H3DT0rX00/ZcM+NP+HL2+o4tl32nPHXc+9N53HEdhq2FR9X/lx/vPk8jtxBWyHZEHzoj+6PbRukbOgtsyE4f1+yoTSu1PbSCSVBD8soepANbrTaYQVlQ3SpRUCsTLOPzIaobNDLWl+aphcQmUyWMhu2vu9itr7xB0ghePmH17H4y18jZTgkdSvWjSJpZ0lEW18GAZFB68uutCcbMrmYbAiWUQSyoVJmw8SjSrKh7a5WrP9Oxqyv9WRDYzM0NGHXt1CobSWdaqHDbaDDqkWhUChWJYQpRqSqoScZ8Dernb273mKhW+y2z5GSvbve4o7sZ/16jii3pz9jj8/ewPHf63p6zXekP2PuR6+F4yqN1QzBLZ8vZue3XvX2j2LZ0J9lFL3JBs3QY7JBK2t9GRUM/apsiHaj8JdKlMuGWOvLcBmFWepK4QdERltfBpKhvBtFGAzZS0BkeTeKsMKhaPGl33+b7Z+9haKR4qrDb+e/a+6KY7uxgEjHKlUxBJkNUdmwIssoNM3lzO/czUH7PEuhaHDWT4/rl2wQQn1sHiyqwkGx2jGcogFGV2XD4J9rYLKhfH+lzIbo9oHKhuh5o7LBG9e7bIhWNvQnILKnbhTh9iGqbChnIAGRwTKKUDaY8coGTzboGIYglRRse88FbHnHuUgh+M+Pb+Tzg472MxuKpYBIv/Vl0kpjFrrQrILX+jLbBZm0t4win8fJlkSDnS+WyQa7W2aDZuhoOqxxgsO4w4pIFzrunoD9+ngSjfWYTZ5skI3NuFV1FGpb6Uq10ikbaS/Uki6aPf7OhgQRn6gqFArFYBjJsLfRsIRCiNWjsqE32aAZenhdvckGgm1+ZQNCqywbNK132WAY3v0gsyEIhTQMbxlFWWVDjwGRgSBPnaIAACAASURBVGwoW0YRDYiMyQZH8/IZ7FJApB1pfdlTQKRTtDj8d9/kCy/+noJZxVVH3M5r07brFhAZVjb4siHIbAjmYCsiG3TN4UffvZM9dn6FfMHkjPOP5z/zZlccWy4bhr3KYQzPR5RwUKxWjLYlFDDyyyjKtw2VbCgXDb3JhmKhgGEmK2Y2VJINpeccGtkQ5DUMlWwIr2+AmQ2BPa8UEBmVDYbf8jKQDYmEjqaLmGxIJgSGDtvddS5b/P4CXE3j5XNv4fP9jojJhiotj4kXEJmwMt0DIrNBZkMGJ1fATme8qoZMzg+GLPrLKCrLBt0UrHGiQ+tBRaQD7b+fgPvBGiQaq3zZ0ORVNtR5AZHpVAudspG2Yi1t2QRdOR2FQqEYrazyoqGPSchgn6On4/qSDbF9ZR++VoZssKQkQblM6F9lA6JcVPgBkeH7uScbNF2HsBKiLLMhkA26LyYGIxt0E+mHRPYVEGkLs1fZEA2ILHWhwGuB6ZQCIi1bel0pegiItPMFjrjjRLZ6+W4KZjVX/N9veWPq1thWsFQintkQBESWVzZI6Q5aNhiGzbmn/45dtptHNpvk9J+cwLz5syqOXemyYYyjhINitWFUyobI/asvOI75Lz/N1X96PzbmvG/uCsC5Vz8Z2/7pR29yy+WnsmD+81TXNrDrfidwyFfPQ9O02Pzh04/e5PYrTvHG1TSwy34ncPDx50FZaVhUNHy84FXuvels3pn3T6xinulrb8ahX7+Y2Rvt0Gv2g5TwyXuv8uDt57HgtX9QLGRpGjeNrXf/Cnt9+SxcCQ//9jz+8vufcNbV8/jTjafz/pv/YvZGc/nqj+7HlfDWy3/lsbvO59MP/4thJJi1/s7sfeTFtEyaHT735wvf4dHfn8XH7/ybfK6TmrrxrDFrSw486Q6E0Fm66F2euveHfPrecxRynVTXjWPijC3Y+9hbEJrRTTYEImFlVDYMhWwI2l8GssFMeC0wo7IhmYDtfnc2m931M1xN4z8/uZ22/Q4lpdnxZRQyh+kWSFgZEsU0er4LPeflNZDN4GbSuJkMdjqLUyiGssHKFsKAyErdKDRDR08Ipn7bofmLRaQNbXdMRH40kURTHXptjScbGluw6lvJ1Ywnl6ijE082LM8kWdalk84M8v9c/UaoiYRCoRgQI926bkWD5fqqarg0/Snz7Cy/bY1/83t62wfe/qaZ3nl8H/yxXeDq9kW8ZWWpETr71DVzbMN4tLKqh49lgV9/upA381lqNJ19G1v4SuuEcFx0WhJIgwW5LDcuXsSr2QxF12Wd6mpOWmMKm9TVxdpVlh8ndME76Qw3fPwpr7R3knddJqaS7Dd5PCesOQ2Aa9/7mGsXfMQfd9yCy958j1eWd7L1+Cau3mYThCZ4Zskyrp7/Hm+2d2FqGltPaOGMLeawZlN9KBs+6Mxw8Qtv8NLi5aSLFi3VKTab2MI1+21PwtB4r62LC556mRf/9xldRYvWmio2nzqem47YEzOQDf5yilhlQyXZYJreLylofRkNiIxWNgQZDQMMiLRcA1dqsW4UQUBktBtFpYBIy/YyGyoFRDqFAv932wls8d8/kk/U8Msjf8+ba2wZZjZEZUOQ2VAeEBnIhmg21EBImBYXnHk72201n650itPP+zpvvD294thQGIl44OfwM3bnI0o4KMY8I72EwnWd7nkLbv/+wezti4dLzjiYnfc9jgOOPpNXX3iU+269EKFpHHL8ebFxl591EDt98Tj2O+pM5r3wKH+67UIQmicdKvDhOy9z4Xd2YPpam3L86TdgJKv5+0PXcsnpu/HDX/2bGbM3j11bVDZ88NYLXHr6zoyfvBZfOvGXNLZO4bNP3+XTD+ZFfk/enesvOJCtdzueXQ/+AUJooWy48cJ9WWuDXTjqtDvJ59L87a7zuObsHfn2z/9DQ/MaSAm3/3x/qmoa+eJXfkWqppXO5Z+y4NW/4joOmq5zz1UHkqxuZLfDryRV00xX+0I+eP1RXNdFo3+ywXFc/7/VwGSD65YyGrzfS/+6UQSP+1PZUBIOWqQjhcBMaJimJxt2uP0sNrnnF7i6zkvn/5bl+xxMlWGT0OxSQKTMkrSzmHYuLhtyGchlw8oGO9KJws4VugVE9iQbpp1m07S7hbRg+W2T4H8TMBvr0Rsb0KprPNlQ5wdEpprJujW0FWppyyZpS+u0d7h0pQc3uVAoFIqhZKQlQ8CKyAbXELiaiE0uHCpPNPp6FmEKyHn3z132EXvWNHF4XSv/KWb4bcdnaMCxjRP8i/Zuzl70EXvXN3FE03j+k0tz+7IlCOC4cRMrdqJ4O5vl2++/y9pVVZwxdRopQ+f+zz/n1Hff4fr11mVOTU2PsuGNzjQnzpvP1KoUp609k4nVST7O5ng3nfXGaFr4Ik956XUOmT6ZE9aZiSYIZcOJz7zM1hNauHKHTcnaNle8+i5f/suzPHzQTkyqq0ZoGsf99Vkakgl+tsvmtFSnWJzJ8eSHi0AXoGkcec+TNKYSXLLf9rTWVrOoK8Pj736CDEIj/WWT6HrYqaLHZRSaV/UQ60YRCIboMgrdy2YIZIOrmbha5YDIWGVDuHzCiCyh8DtSRGRDEBAZyIai5VU2OE73gEinkOfIW45ns1fvJ5es5Yqj7uStyVuEyyi6BUQ6Tkw2RJdRDJZkssjPfngLX9jsHTo6qzntnK/z9ntTK/9dj5hsGNso4aAY04y0bAA49cvrDercfS212HX/Ezjg6DMB2OgLe5DLdPLwnZez16GnUlPXGI7bZb8T2P8of9xW3ri//OFy9vTHlf+O7rrm+7SMn8aZv3wSzUgAsOGWe/Lj4zfgoTsu4Nvn3x+OLV9Gcc91p1Nb18IPfvkciVQ1UsI6G+/abRkFwI77foed9j8ltoziL787m5bxs/jqjx/xKhEkTFlray4/dV3+9efL2fvoy+jq+JzlSxZw+Hf/yOxN9guXUay31ZeREtIdn9P22XscdNLdzNroi6FMmL3Zod0yG3qTDeH2AVY2QHfZUKkTRW+ZDZVkg+7f9wIivX1BZoNpahim8LpRmLDjrT9g4z9ehqsbvHjh72nb6wCqTJsq3cLULaq0fBgQmbTS6FbeW0aRz3iyIdOFm8973SjCzIYcTsEKZYOd96oagoBI6brhG7WeFEz/vk3jLhZuUdB28yRYPB6zsb4UEFld68mG2nF0plrpsBtIWymWZ1Ms79JZ3u7S1m6RzVq9/x9hRRGl0lyFQqGIMlokAwxNu7yvdbzXr3F9fcta/nvZp6aZw+vGoRmCragnKx3u6VzKIfWt1CVLHzW+2NDM/zWNRzMEX6ivJ+M63N32OYeOG0ddhY8k1yxeyATT5Ko11yZhevu/UN/A0fPf4JZPF/KLOV4FRmxZhX//yg8+ptE0uHWLjahJ+Me2NvmvL14if9SaUzlm7enhaxea4IrXFzC1ppqb526J6WczbD6xlbl/fJIbX3+fc3fYmOW5Ah92ZLh5303Yc62p4YfTQzdeCzSN5bkCHyzv5I4j9uCL688CzVtWcdiW63dfRiG0vrtRlFc2+IIBTYvLBl8wBJUOjmZ4wiEiG8qXUQSSwZVarBtFuIzCjVc2OE689WW3ZRS2iywWOOrmr7DpvAfJJuu4/Ki7eHfyZth9ZDa4QTCkK737K7CMoipV4Odn38RmG71HW3stp559Iu99OLnbuOiym0qyQVsZlQdjeD6ihINiTDIaREPA93/+R1rGTwGi+QYOPzph2x6P6U02BLu23vWw2PZt5h7OUw/dxCfvv86cjbcPt0fHuRK2nns4f//zTfzvg9eZveEOsecsFnK89d+n2e+oHyKFhuPY4b71NtuNZ5/4Xexc0WvNZ7O8N/9f7P6l74eyIT4uHva40TYHxWRDPpfh0/dfZpeDzwplg+tKmsbNZNrsbfngzX/iSklVTQtN42fx+B9+RFfbEqatsyNN49cKx6dqmmloncnT959DV+cS1lhzexrHrVVaImF7b1o9tb5cEdnQUzeKcvoKiIzKBt000DQRBkQmEqWQSNPUvSUUSQ3DECRN2Pm277PxfZfjGCYv/uwu2nffN5QNKb2AqfkBkVbaD4hMo1n5UutLv6rBzRdwMhmsrqy3hCKTxynaPQZEhrIhJZhxlk3D9hZuXtB+yxTkomYSzb5saGpBNrRgV9d7lQ3JFjqdetoKNWQKJm1pnbZOSVu7RUd7nnxueIWDYOyGNCkUisEx1kQD/oeYc2qn0KrFg3hdJKd2fti/5+ph905VDbFjd6lu5JF0Gx+6BTaMfNTYuTY+btf6Rh7uWM4H+Twb1dTGgieLSP6b7uLoCRPRDB3bf5/VdMGW9fU8tmxZ+Di8PP9+QUpe7ejk6GlrhLIh+uGxtJTRu91tjQmRMYKc6zC/rZNvbLAmpqGHx01rqGHzic08v3gZQtNorqlien0NF/37NZbli2w3YxJrtjaEmQ2tddXMaKrjgsdfYGm+wI5rTWXN8c2VMxvKKxsM08uEqCAbwtaXuoHU9e6VDeGSCn/pRB+yIexGEclsGGhApGW5pQoHy0Xm8xxzy7Fs/NqfyabqueyoP/DuxI1jAZGxZRRl3SiismGwyyhqqnNccu6NbLTehyxdVs8pPz6Jj/43odu4USEbGNvzESUcFGOO0SQbAKbO2oBJU9eKSYTyJRZR+hsQ2dBc+kdTytLjtqWfxo6pb5rgHxt/vPzzhd3On+5cjus6PHD7BTxw+wWVr8F1w4WW0YDITLoN6bo0tU7pUTZEj6lrnBSTFtmu5UgpqWuc1K0bRW3DRP639AWC1QlHff8R/v6nC3jy3rPJpZfR2DqDrfb4Lpvs9DWQgi+d/BD//vNPeeaBc8lnllPfMoNNd/kO63/h+Eio5MjKhv5mNuh6qbIhkA1mwqtySCa9kMiEKTAN2OXW77HRn67AMUxeuvhu2ufuQ8pwQtmQ1AokKIStLw0/IFIU82HrSzfdhZPJ4ubzYWVDsIwiyGzoSTaYNTrTf1Sg/gs2bk7QdtNURPs4Eo1VfmVDE7K+CauumUKqka5UKx1uA+35Gi8gMquxvMOTDZ2dBdKdeYr5Ya5wUCgUqz2jSTBEGbKsBq8bMTP0FJP1RGxM2NJygFUNUZoTcYnRpHsfL5ba8X+/W5KlcUIX4XFLbatb+GNn0cIBbl2ymFuXLK78xFrpXKVjNbqsIi4wsSoZnq9icKR/2LhUIhYQ2VX0FpqMr0nFwwM1wfiaKv67ZDkIgaYJ7jxkFy5/7nUu+tc8lj/+ItMaa/nW1hvw1S+sD5rGfcftx8+feokLHn2e5X96munN9Zwydyu+ttOmvQdE6nokryEIi/SrGYKAyGhYpKbHllGUZzbYWgIXLZQNtjRw0GIBkV5eQykg0sttKAVEBrKhUkCkZUtcx5MNbj7HMTcfw8avP0wm1cBlR9/NggkbVgyI7Es2VJpH9Ye62iyX/eR61pv9CUs+b+TkH32DTxe1dhvXUzhkJdmg2mIOHiUcFGOK0SYbAvrTicJMpLDt7j2yuzqWUdfQ0q0bRcfyJaTWmBWeu2P5EgCaWteIPV9n2xISqVmxx8E47+JKY6tqGhGaxtwDvsU2exwTeQGRJ64gGwCqa5oQmhYKj0qyIVoR5yLQgjGuJFXdhBCCrvbFMdngSkm6YzFVNU1hN4rGcTPZ/2s34zouSz6ex0tPXsNjvz+FuqZpzFh/DxpaZrDn0dfjupIln7zKa/+8nqfv/R419VOZOnu3brIhyGsYjGzoKbNhMLJB94OjegqIDGRDkNmQSGgkE4JUEna88TQ2uv9KTzb8/G465+5NSnf8bhSebEjJLKZTCFtfGvk0WrYLivmw9aWTyWKnM7h+QGQ0s8G1nZ5lQ53OzHMK1G5m42QEbTdMRUuPw2yoR6+p9mRDgxcQma0ZT86so9Otpz1fw7JskmUdGplcqbIh05Enl85jFVfCkooxGtKkUCh6ZrRKBhiaqob+trusRAKBFXnjD35Xna5DvVbqHBT829nm2FRpiXBsu+V9qdJqmPFxtk1VQg8FQZv/5cv4ZFyCANTqOhpw8Ljx7NXSEn7wCz7zedWAoptsEJqgzjDQgM8KxZ5lQ6SrhBaRDULTaEwlEMDSfDHcHpz/82ze2++PndFUx6/32x4EvLG0g5tfeosz/voc01sb2WPODGa0NnDdEXsgEbz+2XJueGYep93zONPHN7HnxrNLkiFa4WCYJeEQ6UYhg8qGaDeKCgGRlTMbDE84RCobygMig7yGICDSdogtowgqGyoGRFpeZoObz3HMTcew0esPk6lq5NKj7+b9CRviWE4YENnTMopKsmEwSyka69Ncfv51zF5zIQsXN3Pyj77B4s+au43rr2xYaaJhDM9HlKpRjAkkYtTKhh7ymOJDJLROnE778iV0tn0ebl/8v/dY+PHbFU/x3JN3x8TCs0/cRaqqlqmzNoyNe/aJu+OPH/9DxXGuhGRVDbM33IGP33uV6Wtvxsx1tmDG7C2YsY73M232FuH1QkkgSAmJVDVrrrc9Lzz5W/L5nL89Lhui1ysjssGVkEjVsMaszZn37L1e32V/f/vnH/HJO88yY92durW+BMG4KRuxy5cuBuDzhW/EWl8ioXXShmy3/08BWLZofkXZ4AUSDbwbxVDKBs1/syuXDUak9WUgG5LJeDeKnW881ZMNZoKXfnEPHXP3IWmUWl8m/W4UQWaDWeiKZzZEW1+GmQ2lbhTFTLFbQKT3GnzZUK8z63xfNnRpLL+2JBuMpia0xmavsqG+lVx1K11ms1fZUKilLZekrUujvdOlvd2iq6NApiNPpitHMV/EKqgKB4VCseIIU8R+RiOaIYakqqG/sqGn5xuvm7S7Nu2uHf6uFtoF/hf5UiR63NPZdv+5vW1PpjuoEhozE6nYuKe62mOC4ImONqo0jVmpKv/iS9dQnTDZuLaWBbks69bVsG5tDevV17JubS3rN9SxXl1trO1l9MNjTcJgk8Z6Hln8GYVIBYemi3hby7A7RmmbpguqTYMNWhp45MNFuJHzL8zm+c/iZWwzZXwpXDC41XU2mjyOC/feGoC3Pm8PMxsQGpppsPG0SVx0yC4AvLl4WaSiwSjLbPBvo7KhPCAyrHIwu8kGRzO6BUQ66LFuFF6Vg9YtILK8G0XRjnejCAIiLTseEGnbLm4uy7E3HlWSDcfey/t+ZUM0s6EkHzzZEM6xhkA2NDd2ctXPrmH2mgv55NNWvnXmt1YN2TDGURUOilWe4RYNsAKyoR8EH6y32fVL3H3DOfzqJ0fzxcO/S1fHUu6//efUNXQvAQN48sEbcV2XNdfdknnPP8pTD93EwcefS3VtQ2zc3/98I1K6zJyzJa+98BhPP3wjBx13HlU1DRUrLw7/xuVcfOqOXH7Gnmy/11dpbJlEV8dSPnr3ZVzH4eATvA/3UdkQ3B58wqX88oyduOx727DrQafR0DKFZYvf53/v/ZeDv/6r2HgoyYZg+26HncdtF+/P7T/fny/sfhL5fJqn7j2fZHUDW+95KlJKFn38Go/97jTW3fJQGltn4bo2r/37t2iawdTZO7Hkk9d4+t4fsPamB1PXPBPXsXnrxd+jaQaT19wB15UsfP8Z/nLLIWy3/y+ZteGhI17ZECyjMEwDIURcNhharLLBNDVM01tGkUzArjeczPoPXo1jJnjhF/fStcuepAyLKsPC1Kyw9WXK9tpeGrYXEKnn0pDp8iobCvmwG4XVlfHyGgrFsm4Udkw2BK8j0agz64IC1evZOB0ay6+bipZvwWzyMhtEYxOyuha7fhy56lY6E6102PV+QGSSZZ2aFxDZViSXtehqz5HL5EPZEO3yMTyIMbtmUqFYnRmtUqEnVnZVQ2/Pt2Oyntsyn/Hzrk85RLbQ6Trc1fV5WN1QfuzD6TakJlgnVcWL2S4e6VzOsc0TqE/GP2Y83L4cKQRzqqp5KdPFw+3LOX7CRGqDtpDB6/AzJ06ZPo1vvPkWp779DvuPH0dLwqTTcXgrk8EV8J2Z0ypWLwCcNmcWJ7wwj2OefYVjZk1lUk2KTzI53u7M8ONN58SfLyIbgu2nbTaHrz7+PMc/9jzHbDCLrO1w+QvzqUskOHHzddEMnfmft3H2U//hwPVmMqulARe489UFGJrGjmtNYf7nbZz14DMctOls1pzQgislv3vhDQxNY+f1ZoGu88w7n7DPxTdz3Ulf4sidt/JaX2p6jwGRYWZDVDb4eQ1R2eAKPZQNNiaO1HHRwm4U5ZkNYQtMl8EFROZyfOWmo9hw/l9JVzVx6TH38MG49WOywba8kOlKAZHh/RWQDeNa2rnywmuZNuVzPvh4Aqf++CSWtdV3G1dJNkQ7UYycbBi78xElHBSrLKNZNPRnCYU3sHR34pS1OO3Cu7nr+nO49MyDmTRtNkd/5zLuv+Oiiuf+3sX3c9svT+ZPt15IdW0DBx77Iw469uxu40792f3cceXJ3H+bN27/Y37M/kdHxpWde/rszTj7mhd54LafcOfVJ5PLdFDbMI7pa2/Gjl88CagsGwCmzd6S0y79Fw/fcQ73XnsytlWgadx0tpr7Fe+4ctmglY53XcnaG+/F0T94kKfuu4C7rjwC3UgwY90dmXvYRdT6mQ81deOpb57KC49dSVfbpxhmitbJ63PgN+5l3JRNyHR+Tm3TFF5+6tdkOhaiG0maJ67HnsfeScukjSMSwfFyF3qQDa5TEgi9yYbe2l5Cz60vNV3rFhCp+XkNUdlgJg10XYSywatu0EgYkl2v/w7rP/QbnESS539xL+md9whlQ0ovYAqLlMx6ssHKYBYzaMVspPWlX9mQz3drfekU7bAbRSXZoJsaRoPGrAvzVK/jYLfptN84HS3fSKKhzpMNDU249S041fVeZUOimU6njrZ8NemCwfIujbYOl44Oi64OLyAyl8mTzxZC2TDcb/hCxNf/KhSKVZNVTTAEjMTyib6ec0pVinOap3Fr5xLOW/YxU4wkJzZM5K700orjL5w0g18t/ZQ72pZQo+kc1TSeY8d1D+f76bSZXLnoU27/fDG1us6x4ydw7PiJsYyE8Bp1wTo1Ndy8/nrctHAhl3/4EWnHock0WKe2lkMmj+9RNghNsGFTA7duvQm/WfARF7+xgKLrMrk6xUHTJ5eeJ7iJyIbgnLvMmMgte23LlS+/xTcfe56ErrHNGuP50Q6bMKm+GqEJJtRXM6WhlmtfmM+izgxJ02C9Cc3ceczebDZ9IkuzBaY01XH106+wsL2LlGmw3hrjufeUw9l01hTvuTSB47q4iHgoZG+yIdqNQjeQQgu7UThBUKTQ4wGRUsehVNFQKSDSdsXgAiJzOY678Ug2ePNR0lVNXHLMvXwwbl2v5aUTX0bhum7FZRTSdVdINkwcv5yrfnoNkycu5933J/Pds0+kvbO227jeZMNI5zWM5fmIkP3+ZDR2WGvdLeQltz0/0pehGCQrQzTA8MuG/oZD9ueY8u3l1y4j54uOjQmACvcr7e9JNvSW2RB0oyhfRlEaF89s8MYEmQrxZRSlQEmJdL3xgTRwHe/YcJlEhYDIUpeK3mVD8OF6KGRDeWVDJdmgm0YYEGkmjVA2JMKOFCXZkDRcdrnuO6z/52twEklevPSPtO+we9iNosrIkxQFTIqxbhR6rgth5b1uFJkubwlFVxq3WIx1o+gpIDJANzUSLTozL8xRtaaDvUyn/cYZ6G4LRnUVut+Nwm1ooVg/nmKyns5kCx1OA235GpZnTNI5jaVt3jKKjracHxBZjMkGLzRT54Fr1vmPlHKLbr/gIWC9ulp5+2Yb9j1wgGz5j+eG7ZoVY4e1RUpeYUwf6ctY5VhV5UKUIek+wdBVNZTOV3lMT8eWj680Lvohqvwb3PB9MtIOMCoOum2LLKOIjokeE91Xvj0qN8orG6L7NUMvnUvE9wf70LwlkEITfucJLVxGEQ2CFJqIB0RGMxu65TVUCIgMZEN0GUUPAZG2lsARRreAyCCzoTwgMtqNIgiItOzKAZGBcCj6eQ2ebMhw7A1HssGbj9FV3cylx9zLB61zcGxPLNiWE1tGIaUfGBmpbJC+hBisbFhj0lKu+uk1TBjXzvx3pvK9c79OV7q6+99hsPylj04UvcmGJ+7acpWaj4yWuYiqcFCsUijZ0Pe2VV02SLd0roHKhpKs6Fk2uFLGt/ewjMKNLJHoaRlF+PsZhGyIBkQGsiEMiPSXURiGhpnQ/I4UJdkw97pvse6fr/Nkw2X30bXDXKqMUuvLpCiQcjORgEhPNmi5tBcQGeQ1ZLLY2RxOrhDrRlEpIDJANzUS4zRm/SxHarqD9ZlB+00zMNwmzKZ6tJrqUDZYda1kq1vJmbV02vWhbFjeqZHOeJUNnR15MukCuUweq2B5JZe+bDCTJmZZ+vlwEC2lVCgUo4uxIBeijIRo6O/zDrVsKP+2trwTRWnc6JEN8fs9ywah66Vr0DTv2/JARAitJBt0HfzxscwGTZRkQzS7wZcNsYDIQDboJlKImGzoFhApjFhAZCAbossogrwGR4rI8omBB0TKXIbjrj+C9d56nK7qFi79yr182DIn1vrSq2QoBUSGc6qIbChtG7hsmDZlCVddeC2tLZ3Mmz+D7//kBDLZqm7j+iMb+qpqGP4lnmN3PqKEg2KVQcmGvreNlGwIKqUqBUQOVDaU2kz2XzaUjpfdZEPQgaI32eD4PZ6llDiW7YmLyDUPZWZDIBs0XUPTREw2lGc2BG0vQ+FguOx2zTeY88gN2IkUL152H+kddqXKtEloNim9QErLhwGRhlMIW1+GAZGFfNj60k5nsDM5nIIVkw1O0RMN8YBIb/KWnOjJhuQUF2uRLxtEE2ZTA3pjA6KmDlnfHMqGLqOJjF1NW6GGtqwnG5a3O2QyNh3tedKdebJdOYq5ol9y6YSyoaqmilR19/RyhUIx9hhrYqGcoRINMPSyobff/aogG8oD/3qSDXHhMHjZQDSkUSuopQAAIABJREFUMqhyiMgGYZSqGaLCIZANwbbeZIPUTRwXtPJuFGWywdEMTzhEulE4eNUMQTcKR3qtL12pxTIbAtkQDYh03e4BkeHyiUhmg8hnOe76w1nvrSfoqm7hF8fey8ctc7oFRLp20AKzFBDp2s6QVDbMmr6IKy64luamNC/PW5MzLvgquXwy/ncY+ZtYkXDIlSEbxjJKOChGPaNdNED/ZENfY5RsGLxsCJZQVKxsCLf3LBvC1+BKnnngeNo/e41Js3Zn8qy9aZm0BQgj3O+91hVrfanpGrqhI4SIyQYzoXtLKvyAyERCI5HQMA3hyYbfnMScv9yIk0zxwmX3k9l+Z6pMm5ReJKFZYTeKlJUmUUyj2/lS68ts2qtsKORxMtlYN4pKAZHB7y14DbqpkZwomHVRjsQkl+KnJu03Tsc0mjAb6zzZ0NiCrK7zWl9Wt9JpttBh1dNlJVmeSbC8U6Otw6Gjo0g2a5Hu9FpfFnPFbpUNqeoUtQ1VVNcOs3AQ3XM2FArF0DPWhUJPDKVogJW3hKKn4yuNH42yIbq9JBNK2wYiG0rLK+LLKMplQ2wZRSAVKskGXfcW7JfLhkjrSzSdTY48mbxlcdDcHThg953YbKMNEUb3bhTRgMigG4WLVupG4QsGV8a7UUQDIoNuFH0FRBaLDiKb4fgbDmfdt5+ks6aVS465l49aZnfPbLDd8IuEaECkl9WwYrJh7Vn/45cXXEdjfZbnX57ND392HIVCfL4wVJ0oVppsGMPzESUcFKOWlSUaYGzJBll2rlVFNoTX2E/Z4JTlNVSSDW6Y5dDzMopgCUVwndmuhRTz7Xw0/x4+mn8Pmp6gdfLWTF7zi7RO2Y5EsiEcW05/llEEsqE8INJMlCocgtaXiYRX2WBqLrtf/XXW+evN2MkqXrziftLb7EzKsEjq8YDIpJ3FtLIYxQyale/e+jKfx8nmwm4Udq6AnS/2GBAZyIaqqRozLsySmOBS/CRBx+2zMPQaTzY0NXkBkQ0t2FX1XmWD2UyHVc/yfJUXEOlXNrS3F+nsKFDIFsml8xSyhVA2COF16khVp6hrrKaxuYrauuFeUjF2U6EVipXB6ioS+mIkRUN/n39Fl1BUGjtaZUPpGoZGNkQzGwLZEBUOlZZRhLKhvLLBMEFosYDInCNZ2t5JZybL1Xfez9V33k9tdRW77bgtB+yzFztstx3J2lSvAZGBbLBcHcf1MhvCyoaygMjoMopoQGSsssFy0XJpjr/uy8x59+901ozzKhua166Y2eDGpIIMZYNjR7cN/MP8nLU/5pfnX09dbY5/vbguZ190LEUrPlfoTTYMJBwykA3uinxQ6Ddjdz6ihINiVKJkQ/9kQ29VDeXjh0o2RPMaysf2JRuCf7CjsqH0nP3PbHCcsqqFQcqGqKzwrttl7hEP07b4NRa+/yifLniEXHohn33yDz775B+AoL5lDpNn7sP46btSUz81vP5Kb2zlAZFCE6FsMEy9JBz8ZRRBQGQyGQmJNCS7/eprrPPoLb5seIDMtjuS0r1uFFW6HxApCyTtLIliGrPQhZ5Lo1n5UuvLbAYnncHJF8LKhmAZRU8BkaFsmK4x88Is5jiX4ocJOm6biZlqxKitRm9oDLtRFGpbKSTrvcoGu572QhVtGZN0TtDeGWQ2FMh05ijkihTz8coGwzSoqq2ipr6KhsYqWlqSNNSNzfWMCsVoQ4mDoWGkRUN/r2FVlQ3l42NBj73IhsEso+iPbIgGRBIusxigbIhUNgQBkcmEyQd/u5N/z3ubPz3xDA8+8Q+WLm/n/r8+wf1/fQJd19ls00054IAD2HnX3WidsAa2DEIiS8snHOnJhugyiiAg0nbi3SiiAZHBTzQgkmwXX732MNZ592k6asdzyVf+yCdNa4WZDd78rJTZIKVbqnKILKOQrvRFxMBlwwZzPuDS826ktibP0//ekHMvOQrbjn+cHWrZED4exPUqPJRwUIwqVqZogJHNa/Cef+RkQ6X9sW0rKBtKH+J7lg2DCYjsTTaEeQ29yAbX8fIa4pURkSUSUtA4fkPqW9dnzlanken4hMUfPsHC9x6mY+l8Ope9SeeyN3nrpctI1Uxk4ow9mDRzdxrHbYimm2FVA1AxIFKLVDXofkBk0I0iCIgMZENKd9ntVycw+9FbsZNVvHDlg2S32YEqwyKh22FAZNLNknDynmwoZtDzfmZDMR+2vnTSGex01ls+URYQ2VNmg25qVM8SzLgwg9ksKbyXpPOOGZhVTZiNDWg1NYhGTzYU68aRqWohp9fRaXutL5elTZZ3CtIZl7a2Il0deTKdOXLpPLZlx7pRJFNJzKRBTX0VTc3VtLQmGd+i0VjjMJyIMVzCqBh7KCkwehlq0QArt6qht+OHQzZU2h/bNopkg/C7SkRlQ2/LKPotG8qWUcS6Uegmhqmz/Vabs+02W3Px2Wfw5gef8PATT/Onhx/l3ffe58WXXuLFl16Cs89mxsw12Wvfg9h5t/2YOXvDsNIhtoRCDj4g0pMNh7LOu//wZMNx9/FJ45rYvSyjCIIhXV8+hAGR/v2BsvH673HJOTdRXV3giX9uzPmXHYnj6PG/w37Ihv60vIzKhqBt53AzlucjSjgoRg1jqaqhP+OUbOh/ZoPjlkraeqtskLHtlWVDeC0R2RBdUhEERAbbqmonM3ODo5m5wdEUcx18/um/WPT+Iyxd+Bz5zGI+fON2PnzjdgyzhnFTd2SNtfZhwrTtMZM1sWUUQUBkSTTo6LqIyYZkUscwBMmkRpXhsttVxzP7b7djp6p54YoHyW6zPVWGRcrwMxt82ZCyMhhO3pMNQTeKbJcXEJnJeHkN2RxWNoeTL4atL6OywbVLH+wD2VCzlmDGhVmMRklhQYrOO6ZjVjdhNHiZDdTUlWRDdQtduh8Qma/2u1EI2ju8gMiuDi8gMmh7Ga1sSKaSpGpTpKoTNDRVhbJhYmORxlQOhWLMIpREWNUZDaKhv9cxHOGQEJcNPbW99MaNftngiYbImAHIhh4DIstlg2F6FRERwUB5N4qygEipmaw9ex1OnrMe3/r2d1i0rIPHn3qaBx98gJdfepEPP3iPa391Kdf+6lIamlrYce5+7LTHl1h30x0ResqrdnAZVECk7suG2Qv+SXvteH5x7H18GpENwTKK3mSDE8tvGPgkfPON3uHis2+hKlXk0ac242dXHI7jlmRDeThk9L899D+vIUppvthzbpeifyjhoBhxVpWqBhga2dCTaOjpuJUpG6ICN5AD8XNXlg3R8wxENrjRCodeZENwjqD1ZU/dKCrJBscOqh6cWNvLqGwohUHGZUPUcEtXYibrmTxrbybP2hvXtWj77BUWvf8oSz56nGK+jUXv/4VF7/8FIXSaJ23KtDkHMmXt3altnBxmNhSynzP/uWvZdt9zMJPVoWxIJDRMU5BIaKR0h92vPJ61H78Du6qG5698iOxW21Jl2KSMIinNz2xwM35mQwbDynmywc9skNkMMp+PdaOw0jlcyw4zG6IBka5TqmwwkgbVa0lmXJDFaJDk36mi685ZGKkajIY6jKYmaGzBraqjWNdKprqFTr2Z9mId6WKSZZkEbb5saPt/9s47PpKC/P/vmdnZku27aXeXu1zjqEeV3kFB+hdRQFApgqKIiPjDAihgQTpIU0Cq0gUBQURARIr0Jr3d5e5yyd0lm+11Zn5/TNnZlnbJ5e7Y5/XKK8nM7MxsdpPMvvd53p9Ynmy6oAsi0w0EkT7d2eD1OYlGXbRFRDpDRdpbkgQdcSa71tcYqmY1q1mTV5MBGmByuhr0/a7ZEQqwwYE6IxT29dUjFPo6sXb9GGDDeASRDWGDCRhGgA2CoyyDHBY2GF/XhQ1mGoURd9lIEBlpm8Zhhx/N/33lG6SzOZ579jkeffgBnnnqUeKxAR6692YeuvdmZKebLbbbi132+Sqbb78frpaI1dmw+IM3eO35B9n7sDMtSaSiVjkb0km++QcDNvg7dNgQnouiqA1hg/m17smqhQ1j7RbYbqv3OP/Mm3C5Sjz8+LZccOXhqGr5OTVe2GA+R2qiziuu/dYsbFhfr0eawKFZU1rrCmwYLWgYadvJTKKovs1EwgYdHowdNlTvrxo2WB0ONthgjkWYYxSWYHKYzobhYEO5i2J0sKF8zpWwobokh5PW6dvTNmNHtF1+QSr+MSsWP8HSjx4mFfuYgd6XGeh9mdeePAt/ZB5zNvs/5m52IMs/fZq3nrmWVb2v8uVTHkR2+q00CpdLxCUq7HvFscx/4s+UPF5euvIhMp/byUqjcIt5XEIOWStYzgZHPoVkCiIzKbR0EjWdRs3ly7DBcDYohVIFbFCK5fspSvoFl29j6D4ng+TXyL3jIXn3XJy+EJKvBUcwBMEISiBK0W0IIqUwQwU/sayHVF4ilhD0NIqhAqlEnly2UAEb9GOVoy99AQ/hiAefz0FHq0RnqEiHN0Gb0I8vubLmZz+htR63MDarWc2a2JosyABrd1dDvW3XJthQ8YJTrFw2Emywui6G62yoAxtqgMNoYIPt6wrY4CiDBk2Sddgg6XDBDhsqBZGSNTYhu/3svOcBbL/7QeRLAu+8+SpP/fMB/v3YX1ixvIeXn3mEl595BEEQ6N5gK7bd82gWbn8I/7zvcl584laWL/6AQ0/6I6oqVsAGIR3nhN9/mQ0+flaHDcfdz7LgHKuzQakzRmF3NmiaanNnjQ827LTtO/zqpzfjlBUeeHQHLr7mMDRt9WCD/X9+I9hgH6Mwz3/Saz2+HmkCh2ZNSa1p0ADrtq9Bv331NhMPG6q3rTdGUb1tvX2PprPB7GqAqs4G1dyPARIawAbVABONYEMZMKhjgg3V/1hGSqMQRAEBgVDrhkQ6NmbjHU6hmBtk+aInWfLeA6xc9jLJwY958+lLePPpSwAB0FjR8xp3XboPx531T5zOEC6XSItD4fOXHsP8J2+n2OLjxd89RG67HfBIBmyQdNjgVtLISr4MG3JpxHymnEaRTqOkM6j5QgVsMMWQ5mf7fbNgw2Ya3T/PIPk0sm+1kPrLHJy+EHI4iNjihXAUJRAh72sl5wyQcEQYKvoZynkYTDtIZXTYMBQrkIjnSCWyFHKFCtggOSQkWcLj9VhpFNGok6BfoD1UosOXpFVYQSjegyMxycChWc1qVrNGqMkEDbDmuxqG28dkyyHt24wmicL+/UTDBr2zQaxc7pAqjiUYUkjr+zqwAVEYHWxwlAEDgjgsbFBEGU2QKmCDIjhQESvSKErmZ0MQqSGywWY7MGeTnfj6KReypGcRLzz1IP/5x+0s+uBV6+OeP5yun7Om8dZ/7yOTTvCl79yOhsOCDSdecxjzP3mOWKCTi469n2XB2RWwoVQsDdvZoKqazd8wdtiw2w5vce4ZtyHLCvc+tDOXX3coYH8eVcIG+/MERoYN1dUINljrmyMV464mcGjWGq11CTTAZxM21G7XGDaYcKHeGEWl/6E+bCi/4MdIltCs5IrhYIOmanUgQiVs0MWRjWFD+We0erChniBSDnSwYOuvsdG23wDy9C9+lk//91d63nsMpZRDVYqUijlW9b7DjefuyvfOf5pgS4gvXPoN5j15hw4brvwbuW231wWRol0QmcVVyiCV8jhMQWRW9zWYaRRqJouSzhqCyFyFIFItKZYc0hyjMGGDf3ONWT/PILVoZN9oIXXfHJy+AI6gHzGgOxt02NBGyh0lK/pIFP3Esi0MpBzEEpBKK8TjOmzIGLGXprMBdNjgdDtxup34gh5CEQ+tUSftEYGQt0SnN0mruJJQvAd5RQ/a4Kqax2Bia/2NoWpWs5o1/ppsyACT19Wg73v9hA325asLG8piSHsnQyV80P/X14cNiMLIzgaHrL+wd1R2M1hdDmJ5lMIaoxAkNEFCFaUK2KBgAIcGsKGeILK1cy77fuU09jz0hyTjMV5//lFe/NftvPfa42iaglIqUixk+Pitf3L7pYdw6En34MznOPGaw5j36fPEAtO48Lj76Q10V4xRaKpWAxtUQwapKgqK4YUaL2zYa5fX+fmP/oxDUrnz/t256saDqIYNjeSQoMOGRiMUZlVeCzaGDeP1Toy91t/rkSZwaNYaqyZsGPl2Y4UNw/kdJruzYSJgQ/k8DFCgaRXHHC6Noh5sqEypGB421BNEjgc2CEL5QscURNqjLx2yn3kLD2DBlgfy8Zt/4cm7vo+qFI3jKazsfZ+7rvg6D/qDzH3qLootfl686m9kt9kej1TELZUFkW41jbuYQi5kkIoZPfoym9Q7G/K5ijQKUxBZL41CLSk1sCGwlcass9OIbsi+6iN5fzeuQABHKIgUMpwNLX7yPj2NIimESBdbGMx5iKUdDCUhNqSQTuvRl5lUjmwqRyFXsC48TNjg8bnxeF1l2BAV6QzmCbmztEkrCCd6cK5cgrp8KcXBWM3j0KxmNatZk1VrK2iAqR2hgM8AbGgkiDSSpqzoy9EKIg3IoN+uDBhwyGiCYAkiVdGBJog1zgYTPpiwQcGIu9QcFmwoquUITPtHtSCypIDTE2ar3Y5k4U5H8uAtZ/Hvv15oPTaKorDonSd45t6fcMeSN5n36X8ZDE7nwm/cR19oNkpRQSmWrDEKSwpZ1dlg+bJWY4ziC7u/wlmn3YEkadx6995cd9t+1IMN9hEKc/louxoawQb7enN5+bqxGYs53vpMAQdBEA4CDursmjfVp/KZqqkADfDZhQ3DjTrYl40XNtj3Mx7YAJUjFOaxFMU+CjE+2GClVYxhjGIyYINDtgEHh4RD1r/uW/RfSqUC4bY5dM5eyOwF29M9dxOOe+ImCza8cNXD5LbZzkqjMAWRLjWDq5hBLmRw5JOIhVytIDKVttIoRiOINGFD8HMaM89MI7og87Kf7CNzcQVayrAhGKFkOBvSnigJQXc2JAtOBlMygwkYjCnE43ky6aIVfVkNG2SnjMfnxh/04PW5iEbLaRQdLXECwhChxBKcK3tQe5eQXdZHbmBypZHrcwxVs9beMq9HpgnyVJ9Ks1gzkAEmFzTo+18zsGE0SRT27ezrxwIbGqVUjBs2SJJx/4aBDdWCSBtsGLMgUpTqOxvEys4GzYQLDQSRJmxQNAkVsaKzoaSKqJpY0d1QUgUUtX70ZakEhaLGp+8+gyCKRNsX0Na1OZ3d29AWmsXP/nkp83peYTA4gwuPu4/l/lkVsGG4MQoTNqzOGMV+e7/IT79/N6KocePt+3DjHfswEmwY6wjFcLBBU6u6YNcgbFifr0c+U8BB07SHgIfmb/y5E6f6XD4LtS6CBmjCBv37yYEN9tubQAAYETYoin3Mov4YxWhhQ1kiOT7YYC0TyqBBvxiqhA1m9KVDFpGdErJDYr+vX84hJ1xJS4sTl1PAJZTY9+KjmfvcgxS9AV66+mFyW21bARtcYg5ZyeMupg1nQxIpm0Io5CzYYAkiM1mKqQylTL6uILIebAjtCF0/TiM6IfNCgOyjc5CDQSSPB8kQRJaCreS8reScfpJCiKGCn8Gsm1ROIpYUiMVLxON5EkM5CrliDWwQRAHZaaRRBD2EW1vw+xy0R0XagwXaW+K0qn20ZFbhWqV3NuR6+0j3riIXz9Q8Hs1q1rpe5vXIBqK7eT0yhbW2gwZY/a6G4fYxkXJIfdu1GzbUCCOtTgahPmywwYgaQaSkA4cxp1E4ZFRJH7OwxijGIIhUjJGKkipSVCUUVUSxOhwE/UMpw4ZCSYcNxZKGomBEXWp8/cd/B03Sty2qiMkY37rmUOb2vMJAqIsLj72PPv9MfXzCcGqpJdUGGOzXV/bOBnXcIwgH7/s8Z3zvXgD+cOt+3HbP523Ps9WTQ5o1njGKZmfD6tdnCjg0a83UVIEGWDNdDaPZdk3BhnojFI22mWzYYD/2SM4Ge+ylecxhOxus9fVhg5lGMdmwwfzahAyNYIO9s0F2SjidEg6HiMslI8sCLqeARyyxz4VfZc5//kLRG+DFqx+hsPXWuKVy9KVb1H0NspJHLqaRCmnEXBohp49QmGkUSjqDks1RSmcpZfIU09kKQWQjZ0N4V40ZP0ojypB+LkD2H7NxBv04An5Enx9CUUqBKDlvKyl3lAw+hop+Yjk3sZSDZAYGh0pWGkUmmaNYKFLMFy3Y4JAdOGSHFX0ZinhojcgE/YLe2eBN0Kb14Y8vQR5agdrbQ25pL+neVaRXJimk8zWPyUTX+hpD1axmNau21hRkMGsquxqG289E+hr0bcWG21QsGwY2VM/h14MN5W3KQKHeNnXhwmhgQx1BpN7NIFbABkEqL6vxNdjTKOzOBvvXNtgwXkGkUjFGIejdDQoUSgKqWtnZUCzp0eJFAziAQ4/ALKpIyUG+dfWhzFn8kg4bjrufPl+X5WwwYUOpWLI6G6yRipJSCRvM660xvkj/0gHP8MOT7gfg6hsP5I7797Q9jyp9DfbHGsYuh4TGYxTmuqkSRK6v1yNN4NCsCaupBA3QhA3DbbM2dDZUJFEY25jOhuFgg6rUgwhaOaVilLDB+pnUgQ2N/rEMN0ZRDRtESbRgg+x0IEmCBRv0DgdBhw0uEY9YYt8Lj2T2f+6j4Avy0tWPkNtq67Ig0oi+dJUyuIppHKWcnkaRTSJmU5AxnA0GbCil0ii5QkUahV0QWc/ZENlDY8YP0wgOSP07SO6Jbpwh3dkghiLg9VEKRMn7dNiQ0EKkS24Gsx5iKQeDcY10RiU+VCAZz5FO6oLIUrFUKYj06IJIf6iFsJFG0RGFUEvRgg2B+BLkFT2oAyvJL+sj0zdIqj9BdiiLaoCLSav1uIWxWc1qll5rGjLA5Hc16MeYel+Dvu3UwoZq14Mg6v/nrGWSTfxYBRtEh9G9MArYYKVRmKMUgljZ2WB0PdQVRJppFKazQXRYsEG1xifGLoi0OhuUys4GVYVCUYcNhaLe2aAoGsWiZkVfKoqKnI5xwtX/x5zFL7MqNJOLjruP/sDMijEKs6uhWhCplgx5pB02jCM+8ohD/s0pJzwIwOXX/R/3PrSr7XnUWA4p2p6H1T6HelV97VdvjGJKOxvW4+uRJnBo1mrXugwaYOJgQyPQ0Oh2I8GGsSZRNNpmLLCh3rbVsKF2LMK+rzUHG8pSotVzNowHNlgXNJKIQ3YgiIIhiLQ5GxyiBRtcLhGHpMMGr1hk3wuOZPYz91Pwh3jhmr9T2GJLfYzCEkTmrDQKuZBGKuX0NIqcHnupZdJo+ZyVRlFKZ/WxiWEEkfZW08jeGjN+kEaQIP3vCLknuipggxaKoHr8FLwRUu4oSYLECj7SedmCDbGhEtlMiVQiTzqZI5fSuxtqBJFeXRAZjnhobXXSGYXOQI6gK0MrKwgaaRTKsqUUBmOkl68i1R8nn8yhlpT1lvY3q1nNmtyaCsgAUw8ahtvPVMsh9XUTDxtqxyzE8rJhYINgSiDtsEEqdzogihWwoUYQaQcOpiCyurPBFERWwwZ7GoWRSDEeQWRRqS+IVJSys8Eco1DUMmwoFVXk1CAnXnkIs3teYVV4Fhceex8rAl1G9KVaARvUigjy8tdWDKY6Pknk1778BCcd8wgAF119GA88ulPFc2Uk2DDqyMtRwoZmTU41gUOzxl1TDRpg3fQ11Fs+XFdD9fYjwYZ669cl2GD6GhrBhjJNX31nw3hhgymIdMgOJEe5s8HhkJBdeleDJBrjFLKIUxaRZQGPUOSLvz2c7uce0GHDtY9S2HwLCzaUBZFZPY0in8KRT+mCSCONouxsyFlpFMVMHiVfrBBE1oMNokMi8gWF6adkEERIPR4h/1w3cqAFRzCAGAxBMEzJrwsik542EoSI5X3EMi5SOZHBuMZQvEQikSebLpJKZBvChha/h0CkBa/XSTTqpD0CHcE87Z4h/NqQFX2p9C7VBZGxJKn+OLl4llK+hOiQkD2TLdUThr1IaVazmrVu1FQBBrNWBzTAZw82NEqiqLjtKGFD5XpR71oQKtfryw3AUM/ZUAc2DCuINNMn6sEGexpFPUFkHWfDeASRprNhOEGkCRvMDgcTNjgSq/j2VYcwa8lrrAx3650N3ukoBmww5ZClYskYXVWM8QrF6mzQDH/D+GCDxrFH/pMTjv4HqipwwZVf4eHHt695nsCahQ1T621Yf69HmsChWeOqJmywn8f6Cxus26zBzgYTEjSCDWNJoxjJ2VCvxjJGITl0MaRofJZduqtBlvUuB6cs4nKJuiCSIvtf8BW6n3uQQiDMS9c+Sn6zLazoS7eYxy1kkdV8OY2ikEbKpcuCyFTKGKNIo+QLVhpFtSDShA1ABWxo3V+l8yQdNiT/EaXwwiycwQCSz4toRF8WA7ogMiv7SRIkXvAxmHETS0mkMjpsGBrKk4zrgsh8Jt8QNvhDHsJhNwG/g/aIQGcwT4dniGipj5b0Cn2Moq+X3LI+0n0D5OLZCtjgCXlwBz3DPl7NalazPps11YDBrDUFGvRjjX2EotHtJjqJwr5NIzmkuc1Ew4aKF6NjhQ0NOhtGFkQ69BELexqFLe7S8jTYvx7G2TAeQaTpbBgONhQt4KDqwKGoIiUGKmDDhcfdz0p/GTYoJVv6xDCwQakAD2ODDSd+7VGOOeJxFEXg15d/lcee2qbiuTJaOeSIroaqi+y1Fzas39UEDs0ada0NkAHWnhEK/VzWXdhg9zWY21auN26zBmFDZVqFfbnha5hA2DAaQWQ1bBAd+vemINLhkJBkSU+ksI1ROJ2iIYnUYUOLWGTf8w+3YMOL1zxKceFCHTbY0ihcpQxyKV+ZRpFLQy5jdTYoaT36UskVrDSKakGk3Xtgwoa2gxQ6v60nPiQebqX4yiycQT9SKKgLIgNhiv4ouZYoSVeUjObV0ygM2DAY10inFRIJmyAyX6xIo3DIDmSXEX0Z8hCJemhrlQn5DdjQosMGf2wxUnwV6nK9syHdN0h6ZZJitmjBBnfAha8jgDsSqHmcJrrW13cUmtWs9anWFsBg1toCaVWUAAAgAElEQVQCGobbV6PbTXQShX2bqYAN1ovRCYANoxJEmgkUpq/B7GwwPirSKOrAhnrOhtEKIhVNqOtsKCmVzgZTEFnjbEgN8q2rD6F7yWusjMzmwuP/ykpvJyXD2aCqmu5vUGzwwYAN9jEKYNyw4bvH/Y2jvvQUJUXkvIuP4slntqp4rkwGbNA0tQI22Jfbt51q2LC+Xo80gUOzRqy1BTRAEzZUL58s2GDtqwFsKJ/XmoEN1vIpGqMwYYNkzIJa0ZeGt8EuiHS5JGSn0d1gpFHse8GR+hiFCRs2X4jbUcQplSpgg7OYQS5mK9Mo0knd15BOo2SzlDK6s6GUKzYURNrvk+iQaD9UoeObBmx4sJXi6zbYEIpAi49isI2ct5Wku5W4GiRTdBPLuhhMScQSGrGhItlMkcRQjkwyRy6T0y9KbLDB1eLC5XHiD3oIRTxEIzIdEU0XRLbEiSr9+Id6kFYsRR1YqcMGI40il8ijlhQLNvinhfDN7MDV3lr38Zqo0nOv1z9PhCAIszVNWzTV59GsZo231jbAYNbqggaYOtgw1hEKmBjYUA8omOsbuRwqOxfqCSJrRypGgg11BZHVsMGQQVbAhuEEkSOkUdQTROodDeKoBZEltVYQaXc2qCoUqzobFEUzvrc5G9IxTrzyELp7Xq2BDaazwUqfsMEG6zqrpKz2GMWpJz7AVw7+D6WSyM8v/DpPP795zXNhImBDxVGrYMN4Oxsm+1phfb0egSZwaNYI9VmEDaPZbl2GDfW2rR2zWDOdDWrJ7FwYZoxiLYAN+mcRUZIqnQ1yrSBSdoq4nCJO2YANF32VbkMQ+eI1f7dgg9tRwCkUK9IonPkkYilfkUahZXRfg5LOWILIQiqHWizVCCLt/yxF4x2cjq+UaD8mC0DigQ6Kr01DDvmQggFdEBmMonh85Ft0QWRCDTCU85IqyAwkdUHk0FCRZDxPJl0gY6RRVMMGp8eJ1+/B43USbm2hLSrTEYWOQI6gM01U6ycwtBhHfw8lQxCZ6RsgvTJppVGUOxuC+Ga04+6eidDaWfcxW9dLEAQf8CvgI8AHzATO0DQtXbWdH1gKVLd6FIBWTdOSxnbnAz+xrb8GOHlyzr5ZzZr4WlsBg1kTARpg8l0NjW47UUkU9u3s26wp2FApiCyDhWrYYKZUjAgbTIGk2dlQDzZUCyIl2xhFtSDS5mxQRQeqJKMJYqUgsgo2mIJIBamuINJ0NpiCyHKHQ1kQqY9OVAkii2Vng5jU0yjsgsiV3k7dl2Ubo1A1tW5ngwkbzOsxaHxNVa8EQeWHJ93Hofs/T6Eocfb5x/DsS5vWPE+qfQ36Q1jueKj33KxX9Ttb117YsL5XEzg0q6bWJsgAqw8aYOpgQ71lUw0bqp0Nw41RlLcrwwbV7I6YANhQvk192DDWNIrJgg1iHdggOx26p8FpeBuMNAqX03A2iAr7XHQ0s5/+CwVfkBeufsQSRLqkoi6IpIBbSZfTKAoZXRBpS6NQ0mm0fAElnbUJIgs1zgb7P1LRISHJIu1HFGk7yoAN93WivDsTOeQx0ijCaIEwRX+EgksXRMbVIEN5H7Gsi1RWZCihw4b4UJ5UIkcuU6hxNpiwwXQ2+PxOWiMy7RE9jaLdHSOgDBIY6tFhw/JlZHv7yQ0mSK9MWmkUDpcDp9epw4auNtzdM9G65pENT6/7uE1kVb+jt4bqbuB5TdOuAhAE4VzgOuDoqu2+ig4OngPMK6K9gINtsCEKdAPbGus14O1JPftmNWuctbaDhepa06BBP+baCRsabbMmYUPttvVhgyAKNbBBNNMmGsEGuyBSf7t53IJIs7NBE6UaQWTZ2VApiCyqjhpBZEVngyGILJbM7gbd2aCo1DgbFMX0NqiIqSG+dc2XmLP4JT368vj7Wembbsgh9TcPzDEKTdVqOhs0VbXBBrXmRfxIJYoqZ5x8Dwfu8yL5goOf/fo4Xnh1oxFhw1jlkOVzKl//re4YxZoGDVN0PTLp1QQOzbJqbQMNsHbBhomOvdS3Wfdgg6aW97U6YxSNYIPpaxgPbFDVqn8iEwQbzDQKuyDShA2mINIOG9ySwhcu/jpz/n0PRW+Al695hMKWW1lpFB4ph4ucLogsZaw0Cimb1AWR6VQ5jSKTRcnmKwSRhXRBH6FoCBsEOr5WpPUrWTQVEn+ZhvpBF3LIj+jVBZFaUBdEZlsMQaQaIF7wEss4GUyKpNJ69KXubMiRSWYp5ksWbDB/RiZsCIZbiETd+P0OOqJl2NCaX4Y7vUpPo1jeS3ap7mywCyIdLgfuoAdPuAVfVxue7ploM+cSb19AzNFe97Fbl0sQhF2A/YDTbYtvA94XBOE8TdPety1/RNO0pVW33wO4w7boh0AWCAH/1jStOCkn3qxmjaHWNbBQXWsjaBhuf5Pha9C3bwwbKpatIdgwUmeDtf/xwoZqQaRoE0TaYcMIgkj7GEW1ILLsbKgviDSdDYqVSFEWRCpqrSBSUWywQbEJIksqYirBCdcextxFLzAQ6uLi4++n3zeDUtEOF8rRl6oBFKzRiorOBtubOaMcpZBEhZ+eehdf3OsVcnmZn/zyeF5+Y0FD2DDaEQpzu+pzaNTZYJ3zOGHD+upWWFPVBA7NWitBA6wbvoZGtx0rbBhu5KIaHtjXVyybQEHkcJ0N+n7GBxvK8ketIWyoWD6FsMEURNphgymINKMvZbksiDSdDW5J5fOXHsPcf91JscXPy1c/TGGrrSrSKFzkcCkZnKVsZRpFNg2FXIUgspjKoOQrBZFKoWQ5G+rBhs5jS0QP1WFD/K5pqB9Pxxn2IwVDCC1etIAefZnzREk6I2RUL7GCj8G0i1hKYiiukkwpxON6Z0M2nSefK1hjFIIoWIJIs7MhEnXTGpUJ+zXaA3r0ZWuhF29sCeLQSpRluiAysyJGZiBFIV1AKaoWbPB1hvC0hXDPnAEz55Ho2JBecRYrkv66j9+ElTAlMVR7AgVN0941F2ia9pEgCAXgi8D7tuXVsKEF+AJwkm3xBsCWwPHAKkEQTtY07e5JPP9mNQtY96FCvZoo0ADrNmwYra/Bvt+1ATaYzgZRso1UiAKYYxbmC1sTNtRzNtgFkZKj7Guww4bVEETWczaY3QyKJlkjFMMJIqudDRZsKGqWIFJMJfjm1V9i3ifPMxiczkXH30+fv6tyjMIGGxQTLpgJFdWdDerYvA2SpHD2abfz+d1fJ5N1csZ5J/D6/+ZVjsWMw9cwWtig2s6zHmwYrqYENkzN9cgaqSZw+AzX+goaYP2ADfW6Ghqtn+g0Cn27iR2jMGHCcGMUaxNsMAWRdthgdzaYsMHlknA4hDJsuPxY5j1xO8UWHy9f/TdyW2+Dx1FAFpUKQaSrkMJRypfTKDJJPfqyShCpZHM1gsjqzgbzH7UkC0w7oUjkoByaAvE7pqMumoYcDOiwIRRGa/FRCrSRbWkl4YoSV4Kkiy5iGR02DA6pxIaKZDJFo7NBF0QW80Xr5+mQHbhbXDjdTh02RDy0RmU6IirhlgIdniFai714h3oQ+3pQBgfILe8nbTgbcok8mqohyaIFG/yzOpDb2xBmzSPRsYBecRaLh0L0D05+O+MktUy2CoLwsu376zRNu874egYQq3ObQWD2CPs9BHhS07SMuUDTtMMBBEHYCLgMuEMQhBWapj01znNvVrPWS5jQqCYSMsDYf3ZTPUIBkwsb6q2rBxsq2unHABtMX0NlGoVQ4WyogA1VCRSCMS5RI4g0EyiqnQ1VsGGsgkjL2TBKQWS1s6FYqnQ2VMIGVY++zCY5/povM/+T54gFpnHRsfexIjALtaRYYxQWbCiVOxtMj4OmqqiKMm7Y4HCUOOf//Yk9dnqLdMbFj845kf+9Pw9BHL+vYbj/1eOBDY3uRyPYYD+vyap1xRUhCIIbfeRzGvqbJH/VNE1ptH0TOHzGam2FDGatK7Ch0e2G61QobzNxsMH+t3KyOxsmGzaMN41CrfMPxfy+Xo0WNpjOBjtscDolREmwoi9lY4TC4RDwOFT2vuJ45v3zT5Q8Xl7+3UPkttkWt+FscApFXGIOdymtp1EU0kjFbDmNImsTRGazlFLpEQWR1bBh+klFwvvl0EoQv6MLdXEHcjCAIxRECARRA7ogMtcSIemOkCgFGMq3kMzJxIw0iqFEiUQiT9YQRFbDBtkl43TrYxQer5Nw2E1bq4P2sEqnP0vQmaK1tBzf0BKkviUUe3spDMSs6EsTNgiigMvvNpwN7bi6u9FaO0h2bEivo5vFsRCLlgusWpWv+ziuA7VK07TPNViXB+qNPYgw4h/prwHX1luhadp7giAcADwNnAg8NbpTbdZnoT5LAGG0tbaDhuH2OdquBlg7YUOl/LEq3nLMnQ02wFBHEGnBBvsYhdnZUA0bJkEQqQpSBWwwnQ31YIPZ3WCHDXZng6JQHqeoBxtKKmIuxXHXfoUNPn6GocA0Ljr+fpYHZ+udkSW1BjboHQ42aWTJEEXWgQ2jKdlR4pc/uYVdtn+HZMrN6b/4Fu9+NKfiebC6sKHCyTACbKjervr29ppK2DBVNVqJtW377YA/AVcC52vayK+8msDhM1KfBdAA6y5sqDdC0WibkWBDebsybKjugGgEGyy5zgTABlXRjGM1djaUUyrGH31p3oeKn/MYYYPoEBEFsQI2OGTD4eAQy50NRneDGX3pcoq4XAIOQWOv353A/MdupeTx8spVD5LbdnsrjcIt5nEKeSv60plP4sinEAq5ijQKJZ1GzeWtNAq7ILKUL9WkUZgXXA63yPTv5Al9IY9WhPjtM9F6pyEHvTpsCIZRg1GKvggFd4CEu5V4KUgs72Uw7SSVFRmM69GX8aEc6XiOfK5YARssZ4PbiS/YQiDswe930tYq0x7W6PBnaXMNEigO6LDBLoiMpUivTFJIF9BUDYdLwuktR1+6Z89CmTmfTHA6vXI3i4fCLO4TWbYsw9BApu5jOVGle8HW+N/HJei+heqKAIsb3UgQhDbgc8A/Gm2jaZoqCMJdwP6re5LNmvpqQoLJqXUZNAx3+8lIorBvVy2H1NdNLWwYjSCyBjYMl0ZhF0SOATaMRRBZ7WywJ1KYsMFKpFAqnQ26IFJrCBvIpDnu2sNZ8OHTDPk7uei4++gNzjZGJlRKxdKoYEN1/KVZI3U3OJ1FfvOzm9lhm/eIJ1o47eff5sNPZ1U8D0aCDSN1NYwEG+zrRtvZUH2cqYANU3Q9AqOXWCMIwlbAv4DvaZp202gP0AQO63Gt7ZDBrHWlq2G4244EG1ZHDmnfpho2VG8/Fthg/vEdDjasjiDShBWN0ij05WvHGIVom+k0OxskSQcQ9jQKUxBpwQangFPS2PPKb7HBP26m5G7hld/9ldz2O+ASSxZscJNFLuVwFdPlNIpcWhdE2mCDksqg5gtWGkUjQaRZokNCcgnMOCVPcI88WkEg/qeZaP2dyOEgosdjwYaSP0rGEEQmlADxfIsuiEyIpLMa8bgefZmO58imcxTzJRRDKiWIArJLRnbKeG3OhoBPoiOi0RnI0u6OEc0uxZ1epadR9PaS6V1Bun+IXDxLPpkznA0SnnALnrAX74w23LNmosycTyw6n0GhnZ54hMV9IkuWZli5PEE2lav7eK7j9QhwkSAIszRN6wFrHMJprGtURwAPjEIKGQDempAzbdaklv4Cad34X72u10RDBhgfEFpTsKEaNEBj2GAHDY22a5REUb1N9QtJQRQaQog1ARtGEkRWOBtGEkTaYMPqCCKrOxtMQaSZRGHFXVrdDWVng9nhYIcNiqqVYcPvD2fDD54i7mvn4uPvY3l4rjVGoY9J1MIG8xrLDhvK12S2LtIRYIPLVeCCs27kc1t+SCzu5bSzTuLjnq7y410FFOolUYx2hMI8J6iFDXa3Ve1tRg8b1ueuBrPGIrEWBEEAbgJeGwtsAL19s1nrUWkI1se6UGsTbDj35L045+S9hr3tvX88h6N2EVFKpYb7nCjY8MAt5/DNvYXVgg3V+x4rbNAsiDA22GCNUAwTfbm2wAZzjKI6jUKSpZo0CperMvrSLWvscdVJLHjkj5RcHl654q9kd9hZj720CyJLGSv60kqjyNrGKIw0ilImW5FGYQoih4MNXafpsEEtCAzdasCGYABHMIQYiqAFIhZsSMoRPfoy52Ug4yKWFBlKqBXRl9l0jpwt+tKEDe4WN16/h0CkhUjETVtET6PoMNIoorlltAwuqYi+TC8fJDOQqoANurMhjG9GO+7umahdcxlq3YBedSaLExEW94ssWZplVV+SZCxFLjP5wKHywndiPoYrTdPeAR6j8t2Dw4G/a5r2viAI3xcE4eQ6Nz2aynQKBEHYWhCE0wRBCBrftwEHo7scmtWsz3QJsmh9THSNp6thNK4G0SHww75P+GHfJ3X3YdbNA33s9dGbqNLo5JBjhQ32v2U3LFvGds++UHeEYnVhg/2444UNojk2YYMNokOqhQ2SVAsb7J0NpiBSlCphg9HJUC+NoloQWQ0b9M4GR0PYUN3VMKKzwUikqHY2CLksx/7hSDZ6/18kfG1c/M2/0hueR8k2RqFUwYbySKtSBzaMPKJqL487z8W/uIHPbfkhAzE/3z/zZD7u6So/llVyyOFgg7m+XtUblYDyGEVFkobt2rFRVYOzqYYNa/JaxKg9qSOxBkyJtb22B7YA0oIgXCsIwmuCIDwnCEKj8VGrmh0O60mtK4DBrLVxhGK41VPR2bDzfiewyee+WLFsNLGX1dtXwoha2GA/bjVsUO0dDmOEDfXGKFQrpaJxGoWZZLGmBZH1nA122OB0ikYihS6IdMmw+7Uns+HD16O43Lx6+f1kd9pF72qQCrqzAdPZkMZRzFamUaSTaPm8lUZhF0Qq+WKFIFJVNNSSYtwf/X5IboGZp+fw71hAzQvEb54Fg7qzQQoFIRhGa/FT9EfItLSSkKPESwFdEJnVYUMsrhKP2wWRWXKZPKViyeps0AWRbrwBDy1eJ5GIm/ZWBx1hhXBLQYcN+V68g7ogsjQ4YEVfZgZS5FPlMQp30IN/egRf9zTk1la0rnkMtW9IrzaTRTE/K2ICS5bkWNWfJDmUolQsIZmm8fWvjgAuEAThx+jehpnAUca6vQAVuNrcWBCEecAs4N9V++kAfgCcKgjCTehuiC9pmrZ8ck+/Wc1aO2sy4IK91qauhrrbjtPXYN+2GgQc0tHGTtGQsa72nejVgQ3jEURatzcAg/3rijSKerChobPBscYEkfYRiopEiipng6KanQ1lZ4M1UmEfo8jlOOYPX2Xj954g4W3louPvZ1l4ng4YbGMU5htB9s4GO3holEgBw49StHhyXHzO9Wy+ySJWDgQ49eyTWbKsveb6y/78aORrGF4MWZVK0WCMwr6u0e3XhhGKNVTDCaxhbBLrbY3Pv9I07T9Gx8MfgUcEQVigadpQo5NoAod1tNY1wGCvtRE2jCeJYrJgQ7GQR5JdRNq6iLR1TTpsqBZEmrChfE4jwwbF8DUMBxuK+Syi6By5s8H65zb1gkiHXJlGYQoiXTLs/vvvsdGDv0dxunjlsvvI7LKbBRvcYh5ZKBjOhjTOQgqxmKtIo1AzabRCwUqjqBZElvLl6Mvy/dHvh8Mr0XV6Bv92BdSsSPzW2bAqihzWYYMQDKP6w5RaAmSNzoZEyc9QzkMq72DQgA1DQ0US8RzZdMGKvqyFDS5a/G6CYQ9+v0xbVBdEdvgzhOQk0fxyPfqyr4fi8uXkB4as6EsTNtjTKHwzO3DO6kaNdhBvX0AvM1kUC7CoFwYGcqzoS5AYTFLMF5FdMh6vp+5jO3ElDHuBM1ll/GP+doN1/1dn2cfoFwbVy/8OdE/4CTarWetYraugYaR9N9pHvXcvJ1oOWVBVnAh0trjpxF0DG0aKvTTXTdQYRSPYoIMFcdSwoaBquJyr52xYHUFkSRVrnA2KWtvZoDscKp0NqooFGkolFS2b5Zjrj2KTdx4j6Y1y8fH3sSyyAYqiUioafgbF1tFg6x61rtfMOMxxwAa/N8Ml517PJhv20L8yxKlnfZdlfW2jhg2jHaGo7rgYboxiJG/D2gsbJuV6ZDiBNYxNYu0Fcpqm/QdA0zRNEISLgePQOyXub3SQJnBYx2pdAg29PR9w21U/4b03nyObThAIt7PBptvxg/NuR3LoT73Xnn+Ue/74SxZ9+DoOh5PNttmDo0/+LTO6N7T2c9V5x/HOq//mmr/q7YXma+FzvquPP5xzzZMA3H3Dudz7x/O44u73uPny03jntafxB6PseeDxfOnYMxFtv8TP/vNO7v3jeaxY/ikdM+ZzxLd+Wfc+NAIVK5d/ym2/O4133/g3vkCU3Q84nkO+cZZ1DE0TePOFR7n/5nPp+eh1HLKTjbfck8O/fQEdM8v37f6bzuHBW8/lvD++xV3Xns5H/3uWjbbam+/98gEevOUcHrrtXK77p8a7rz3FZWfsWfdctv/8MXzttJus8337pUd59M7z6P30dSSHk3mb7ckB3/gt7TP04/7jznN5/J7z+OHl7/LwLT/k03eexuOPsvUex7HbwT+z7sNwYxT9PW/y7N9+zdKPnqVYyOAPdbHxdkez9V6noakaL/zjt7zy+AV8+dRneP7hs+nveYFpc3ZlryNvYekHT/DG05cS638bUZJpn7UjW+z2E3yhuRaBT8Y+5a1nL2Bg+SuUCilcniihtoVstffFCEgkhz7h/ZcuI9b/OqViCqc7QqhtIVvsfgGiqD+3GsGGRoJISRIrYIPslJAkoQI2uFwCsgS7X/d9Nn7gGhSni9cvv5f0Lnvgto1RuLUMspIvp1HkdV9DRRpFNjtGQaR+P2SfRNcZGXxbF1AzIvFb5iCm2pFCnjJsCEQp+NvIu/wknRHipQCxXAuxjEwqKzJkdDYk4jlSiRyFKkGk5JAQJRF3iwtvsIVg2EM06iLgl+iIqHT607Q7V+EvDFrRl0XD2ZCLJSvSKGSPjNPrxNsexDezE2d3N8Wu+aQD0+kVZ7EoFmRxL/T2ZkgMZkjF0hZsCET8hKLe+r+EE1VTJ2lqVrOatZo1WsiwVMlzY2YFb5cyZDSVkCixoeThp74uJEH//X+5kOJP2ZV8ouRwCAJbOLwc39JOt8tt7eeixDLeLKS5rXVBxf5/FPsUgIvDcwC4NbWCP2VWclPHBlw7tJw3CxkCosQXW8Ic7W9DNI4pOgSeTA9xa/8K+koFpstOjg912O5fHQ9DFZzoKxa4akUvb2RSBCSJ/UNRvtHWgcNR/tm8kExwU38fH2YzyILA1v4A3+nqotvttsDADUuX8cfeXv68+Wb8rmcJbyaSbBsKcMlmG3HdoiVc37OMl/fYiVfiCb792v/q/pwP7urgV1tsbO3zmZWDXPv+It4bSiKLItu3h/nRlhsyL+RHlASueOMDrnzzI5740p786sW3eaFvgLDbyREbz+bUbTex3iAYDjb8b0WMi556lecWLSdbLNEV9nPUdpvyo313RBAFfvP35zj/4Wd58dxv89O7H+e/Hy1hj03nce8Zx/LYmx/y63v/yZuLenE6JHbbfEN+fcLhLJg13YINH/au5Kzf/5n/vvUeyXSGtnCIbRZuwnUXnoMoO/iwp5fzLr2al157g2QqRTQaZYsttuSiy69BkGoFkQ2dDXXGKMrjE2Vng6ro4EFRNLRcjq9f/zU2ffsfpFoiXHL8fSyNbkippBhdpZVjFJqmGQkViq2zQa0LG8waDjYE/GkuO+86Npy/lN7+CKeedTL9q6IIYv0xidXxNZTPp3xhPlrYMNwx1h7YwFRdj4xFYr0UcAuCINtcUubsV+twB2kCh7W81iXAUF2/Pu0gfIEwJ/6/q/GHWhlcuYzXnvs7qqYiocOG808/iM222ZPTfnkHuWyKu64/h7O/vRsX3foq0faaN/NG1dVw8U8OY48DjuWAI37AK8/8jXtuOIdoexd7HngcAG++9DhXnvM1ttppf44+5WKSsZXccsUPUEpFps0qw4DhjnXZmV9it/2PZb8jfsArzzzEfTeeQ7R9Jrvtf5wFGy75yQFsstVefPcXd5HPprjvxp/zq1N24bzrXyfcNqNi/1eedQi77vdN9j3ix4jGHzxztarCrPlb8/8uex77ivfeeJKHbjmTjq6NrPN9+6VHue6XB7LBwr34xo/uJJdN8egdv+Dqn+3KaRe/ij8yw9rvny7+MtvscQw77ncq773yN/5177kEwl1stdsxw8KG3k9e4s5Lv0iobS67HXo+3sB0Yis/YtWyt63OBvPO/eO2r7Fg66PYbKeTQRBY+sETPHnn1+no3pmdD7mGYiHFW/+5hCdu/zJf+NrDuDztqJrKsw9+E9kVYItdz0F2h8im+ljR8zSaooAo8PJjJyM7A2y645nI7jD5dD8rlz5jHXd1YYM5SuFwCMhOEVnWYYPTAbtcdxob338ViuzktUvvIb3bXrjFchqF6WxwKHkrjULMpRHy2REFkaVcsQo2mPfHgA1+iZk/yeDdooCSFonfPAcp044jEED0ehECIVR/hIIvSrolSlbyEVeCDOV12DCYEEmlVSuNIpXIkU3lKBaKFWkUslNGdjlssMFNW1Qi5FPp8GVocw4SySzDlVxhRV9m+1aS7o+RT+atNArZI+Nt9eIKevHP6sDVPYtS13wGI/MZUFtZPBRi8XKBZb1pVvUlyKVy5HN5CzZ0zgjS3u4a+Ze+Wc1q1memxtPJ8PPkEnyCyCneaQQEiQG1xIvFFCogocOGn6d62MLh5ae+LnKaym25lfwosYhrI/NoleQxnJ+AYEyCnTvQwz4tYQ7ztfJ8LsmtyRW0STJf9IYRHQKvZFP8ZtUStvf4OSncyZCqcPXgckpozJRr//bV64Q4e9ki9gtF+Eq0jeeScW5a2UeHy8kBkSigw4YzPv2YrX1+zps9hywaN/T28t333+OWzTalXXIaJ65/OuODDzm4vY1vzJiGZHY+CDRkv6MAACAASURBVOVuhY38Xm7ZdnPre4CXYnGu/GARc33eCtjw3effYPv2CJfusJCMonLl2x9x1BMv8NCBuzLN50Ew9vudJ1/mKxvO4oQtNuDxnj4ufeldpvu9HLnZ3BrYIBhjdoIo8GrvKg65+WHmRAP85uBdmR7y88lggreXD+jnJknWHTviqrs5ZvdtOP2QPZAkicfe/JBDf/tH9li4gNvO+CapfJFf/ulB9j79tzz/h18yvbMDHDKHnXE+wYCPy37yPSLhMMtWxXjs2RcpCg5kUebo75xGIBjkV+f+gmCkleX9K3jqqacpKQKiqI9RmN0M9g4HRavvbNB9DZWwoVQtiCyqOmy44essfPvvpFrCXHL8ffREN7LGKEzYoJbUitEJ1T5CYbxQt8MGs0byNoSCSS7/5R+YP2c5S5e3cupZ32XlYMR4uoweNowGNFR7G0xAYq5bU7Ch3pjGelBjkVj/C1CATYHXjWUtxucPhjtIEzishbUuQwazEkOr6Fv6EWdceD/b7nawtXzXfY+yvr7zDz+nY/pczrzsEavjYcHCHTn1Kxvx0O2XcuwPLqnY52hHKA786mnscYAOFxZu+3n+98q/eO6fd1rA4Z4bzmV690ac/tsHrHfzp3dvxM+/vRPTZm04Kl/D/kf8kN0POA5Vg022+TzvvPovnn/8Tnbd73gA7v3jWbRPm8vpF/zdum9zN9mRn359AY/efQlHfvfSin3vfej32ftLpza8r+6WAHM33sFavnzJBzzxl4vZcufD+PyXzzCAADzy57OJdszlW794BEF0oGkwa4MduOCUjXjqwUs58JhLrHGJXQ48ja13PxZV05izyd588va/eOu5u9hil2OGHaP4170/xe2NcMTpTyJJHlRNY/q8XSvHKIzz3mSHE9hkuxOtMYq/3bAvvtAs9jj8NgRBQikphDu24u837sl7L13Pwl1/Si49QDq+mO2+eA2ds/dCNf6ZTJ97AJqmUsjFyCR62HrvK+iYVe76mD7vAGD4MYpq2GCmUdidDeYYhSyLOGShnEbhgF3/eDqb3HeFDhsuuZv0HnvjkYrIUrECNjhLGaRirpxGkUlCPq93NmSyliBSyRcqBJHFbNEaozAvBizYEJCY9bM0LZsVUZISQzfNQcq24ggZzgav3+hsaNUFkVKYjOKpgA2xuEI6o5BI5Mkk82RTOQq5gtVZIoi6INLV4sLd4sQfdOuCyKhER6hE2JOnzTVIJLsMz8AShKGVZUFk/xDZWEb3ThRVZI+MJ9yCtyOMpz2Mq7ub0swNGIzMZ1lxOv3JFhYtF1i6NM1Af5J0PI2qqDhkB/6Qj47pAeZ0u5keLQtaJ6emZqSiWc1q1uhqdUcl4mqJXrXAL3wz2dHpt5bv6QpaX9+SXUGn6ORX/lnIxvE2cbdw/MCH3JsZ4CR/5yhOtLYj4TBfK1/0hgHY2u3j9XyKp3Jx9g/qL8xuifczU3bxy7Zuq+uh2+Pie0s/rgEOjcYuDo+2sX9Yhwuf8/l5LZPiiaEYB0SiCKLA9X3Lme50cfG8+cgO/cX6Zl4fR779P+5Y3sep3bMqXngdMa2TI6d31k2jAAi4ZDZ3yVbnwaJ0hls+XcrnO1v55gblfV357id0+Txct8tWyAYw2Lojwr4PPc2N737KmdtuYoGMEzafxxEbz0EQBXabPY3nlq3kwQ+XcNSWG1SMWmDIBM2vf/HYi4RbXDz+va/Q4nIhOCT2tI9RCGX54Hf32ZGT99/FGqPY+adXMKejlQfO/R4O2QmSxA6bb8zCY3/MFX95jAtOOZaViTQfL13OnRf/gv323NkSRP7fwQehig5WDCX4tGcJ1//+p+z1+X1Q0BMpvnjQ4ZQ0hzVGoWhCOQKzgbNBUet3NpjjFKazQVE01Hyeo2/4Bgvfepi0J8Slx/2FnvZNUIqKNUZhwgbFGKmwj0no8MG+rFa0CI27GyKhBFf8+vfMmdXP4qXtnHr2dxkcMhwfVXJIYFJhg7XdCD4ve42nq2HNwIY1fz2iado7giCYEuvzjcUVEmtA0TTtak3Tlhmx298ETjG23Qd4BXh6uOM0r7LWgrInS6wPsAHAH4zSMWMuf77mZzz+1+tZ3vNhxfpcNs2n77/KTp8/3HpBDtAxfQ4bbr4z77w27PN22NpqxwMqvp85d1NW9S8BQFUUPn73Jbbf47CKEYsNNtuBtmmzG5ojqwHA5jseUOFh6Jq7GQMregDIZ9Ms/uBVttvzCOu+qRq0TZvD/M125v03qp1vsOXOh9Ycq9HnVCLGH849iNbp8/naD28FBFQV8rk0Sz9+lS13OdyCDZqqEemYw+wNd+bTt5+uEOss2HL/CmdD24xNiQ/0DAsb8vk0vZ/8l40+d7gFG+o5G8w/+LMW7GdtU8inGVz+FrM2PtiCDZqm4Q10EZ22DauWvYCmajjdYVoCM3nnhUv49O27SMUXGfdf/2Mvu0J4/F28//IVLHn/XtLxcsfXeJ0N9q4GM43CaYu+dDthl5vOYJN7LkN1yLx+8Z2k9tzHSKPIV6ZRFFPIRmeDlUaRKadRVAgiM3lLEGl3Ntg7GyRZxBmU6P65ARsSEslbN0DKtiKHgoYgMoLqD1P06YLIpCNMougnlvcymHZasGFoqEB8KGdFXxYMZ4M9jcLj9eALegiEPbS2emhvlegIKXT6UjbY0IPQv6Qi+tJ0Nthhg396BO+sabhmzUTpmkssOp9lpRksGvCxuE9k2bIMA/16GoWqqIiSiD/so2N6kDndHhZMyzI/1F//l7JZzWrWeln2ZImJ8DIEBIlposxNmX7+nouxTMlXrM9pKh8pOXZ3ByzYADBNcrKp3MKbxfQoTrr+4u3d/orv5zjdrCjpnciKpvF+PstuLUFEQbBSLDZxe+l0lDsqzOSKmkMap7qjP6BvZyRRzHG56S8WEESBrKLwQTbDXuGwBRtESaCrxc3mPh+vpZK2F3/65z3bIrVpFOYISJWXIVEs8v1X/sesFg+/3WYTRMMLkVU13hlKsl9XpwUbBFGkO+hlm/YwL/QN6ODAuFt7z55e4WzYqDXIslSmBjbYBZE5ReWFnj4O32pDvB534zQK434dvN1mFmxIFxVe+2QpX951Gws2IEp0z+hkx80W8Mwb76I5ZCLhELNndPKLq2/ipr/+gw+XLreiL1VBIhSJMmvmTC646BJuv/MePl7UY4xQSFXOBofN1yA2HKOwPqphQ0m1oi/VfJ6jbjiGLd58iIwnyKXH/YXFHZtRKhqQoQ5sMMco9OQwtQI2VAgXR/GiujUS56rfXsOcWf18sriT7591CoNDIf26S6j0cEDZ12BfZ39uDVf1YIN9nV12ad9uuFp7YcOU1hHAbEEQfiwIwk+olVjvbdv2JPSxikuNbfcBDtG04d8W/kx1OAiCcBBwUGfXvCk9j/UFKjQq/fdd4Ozf/YO7bziX2689k2R8gPbpczj46NPZ97DvkE7G0DSNcOu0mtuHoh2s7NNfRI5FDGmWLxCp+F52uigW9Gi9oaEBlFKRYKSj5nbBcO2yRufg81cewyGXj5FK6PctFNXvm/3vXzDSyUB/7X0LGttWCyKrz6FYLHLDb75MsZDj+799CqfLY22bMX6m/vC0GkGkL9RBbKXxwtzYl8sbtmCDqoLkcFEq5ocVRGaSg2iaii80oyFsMG8D4Pa1W8vzmRig4fa2GTODZTDhbmllMLnMOr8dD7yR9166kvdevIxifgiPfwZzFx5H98ZHgAbb7XsdH752De+/8jt9vW8GczfX149mjKIWNlQKIp0GaJBlXRC5080/YdO7LkZ1yLx20Z0k9/qiJYh0iXlkClYahelsEAt5K/pSzaTRcvm6gshSrlB3jAJAkkXkkMjMM1N4FpRQhhzEb5mPQ2lFDHos2KAEIpTcAQs2xIsBBk1BZEKPvozHi6QSeUMQmatJozCjL31BD6GIB59fpjUi0RbUYUOrYxW+3AAtg7ogsrCsl/xgnEx/WRAJGGkUbnydIbxdHcjds1GjncRaF7BMmcGiQT+Le1UGBvKs6kuSMjobZKdMS8BD+/Qg3d0e5k/LM8ezhMjQp3V+Kye4hPX7b3Kz1r4yr0emCaNv1V9fa7Jlj4Ig8Bt/N3/KruSm7AoSGYVOUebL7igHuiOkRRUNiIq1l8Rh0UF/Mdt43yNIIQOi8SLfAAayIFAwXrzE1RIlNMKSo2Y/YWOEoy5oqBJB+iVHhfRRFkUKxv+RpKKgAa1OfWzCvl3UKdOXytcsb3Xqx66XRmF/sVhUVU5/7R0KqspV2y/EIzusdclCHg1o97jKDgbjGK0eF8vSWX1fxt/esMepwwUDWLgcDvKKOqwgciiT0zssQ36986EaNkiGDNJ4UTktGrKiL2OJDJqm0RkNgUMGQbCcDR2tYXre+UiXRUoyf73mQs6//k+cd+UNDA5dwqyu6Xzn+GP42tFHoQoSt95yM5f97mouueRChmIxZnTN4hsnfI9DjzyxbvRlI9igp0/Uhw3FkjFGUShy1I3HseUbD5BxB7j02Hv5tH0zQwqplj9XwQaza0HV1Lrxl6N90d7RFuOKX/+ermmr+PCT6fzw3O8ST/hWa4TCXF593EawoSayc5JhQ+U5jeNFyVhrCq5HxiKx1jQtCZw41mN8poCDpmkPAQ/N3/hzY/5BjfuY6zlcsFf172HHjLmc8otb0DSNRR++waP3XM0NF32P9mmz2Xir3RAEgaGBvpr9DA304wtErBfZstNNqVSo2S4ZH8Af1NsINY2G3Qnl8xMIBFuRHDLxwcp3TTUN4rF+Wju6a5YP972+TKhY7/WHEQSB+GBfTRpFfLAPr79838r7E2phQ9U2qgZ3XXMyPR+8xA8ueoZAuLMiucLl1Y+bjPVVwAZNg+RQHx6fflzzkJoKmqhZvgbzoHbYoCrmfjQURcXp0Sl2IrasIWxQFbXq3PXlDjkACGRTKyrSLABymZXIrqC1H49vBlvt+VtURSUx8C6L3rmDt5/7FR7vNNq6dqXF38UWu/0GTdNIDr7P4vfu5O3nfkWLv4uO7t3G5GxwyLog0uEQ6woid7rtTBbeeSGq5OCNC/9M8vP7VaRRuLQsspq30iikfFofoyjkawSRpVS6RhBpRl9Wdjbo71TJYZFZZ6dwzytRGnSQuGU+Dq0VRzCA2OK1YEPe10be6S+nUeQ9xNIyqazAUEIlFiuQtASRhYo0CskAL2b0ZTDkIRJxEfSLdIQVOv0pWuVVhJNLcSZX6rBheR+Z5avIxZJkBlIUs/o7drJHxuV34esM45s1DXn2HAoz5pP0T6dXncmiwQA9yzV6e9MkBjMkh1IoRQXZKRNs9ROKtjC728OC6XnmeZfQ3vsG4vJqZ9HEltCURjZrCsq8HlkgedbY9cjaUpMNGOrVNMnJ//PNQNM0PlHyPFQY5KpMH52yk4VOLwIwqNaOb8XUEn6xHM3rRKCIVgMIEqpiwYXqajQKERQdOBAY0uocVynSITtrllfDBqiTRGH7OuCUEYCBYrEmiWKgUCTgKMMK63WOINTABvtrM3Pd+e98xNvxJLftsjVtLW5rnSAK1nFX5QsVsEEQBVblCoRcTh0eCOUXoYJkG5ewOSMapVFE/C2IgsDyZMZIoBAq0yhE0YAOxr4kyYq+DAf9CIJAfzwFki360iHTNxgnHPBbaRTds2ZyzW/ORkHkrQ8+5YY77uWn551P56w57L7HnsyYNYcLLr6coirxzjvvccefbuT8c86gtXMu2+36xQrYUM/ZYI5RqCq6p6EBbFDzBY686Xi2fO1+sm4/lx13L59O2wLF6mww4i9L5UQK1RRCWp0N9eMvzRruBfX0zhiX/+oapncM8t5HMzn93JNIprwTAhuqq178ZfUYRbXccqQaDjY0hB6jSEObyFqfr0eaIxUTXOvjeMRoarjfQ0EQmLNgS44xnAw9n7yN2+Nl7kbb8PyT96IoirXtyuWLef+t59h0692tZW2d3QwN9pOIrbSW9S39mN6e94HRdUGYm4iSxLyNt+WFp/5SjljU4KO3X2Dl8kWVt6nab737WBF9aXYOeLzMXrANLz51D6px3zQNVvUt5qO3n2PDLfZouL/q6Ev7sZ+8/zL++9iNHPvjO5g+e2HFtqoGLreXGfO24Y1n79Vb5wzYMNC/iJ73n2fOJrthj/M0OxusEQpbrKbZpaAaH5qmQwiHw8O0uTvywct3U8xnLNigKKoFG3SHg2Y7hma8sHUT7ljIkvceRi2VLNqeii9hYPlrtE7fjuroS9AIRDdio21/BEAy9lHFz0UQBIJtG7Px9v8PgNTQhyPCBocs1aRROJ1SDWxwO2HHP5/N5refjypJvHnBn0jus78xRlFOo9CjL8tpFGLVGIUpiFTSuqvBLojUnQ1qXdjgjIp0n2PAhgEHiZs3QFKiOmwIBMGIvix4o6Q9UZJyOY1iICUzmBCIGWkUJmzIpnPkc4WKNArZKZdhQ9hDtNVFe1SHDR2+NG3OAcKppbgHeqzoy8yyFaSNzoZCuoCqlAWRvs4wvu5pyN3dFGfMZ1VoPr3aTBbF/DpsWJZmsD9ZAxumzQwyu7uFBTOKzPUvo73/Tfjwf6TfG9ZD1KxmNWstrurxiKmADfaSZJEN3B6+7dOdDItKeTyCyAYON0/nEyi2f779SoF3ilm2kMtJOR1OJ0NqiSGlDAl6S3mW1nlTBIaPu3Q4RTZ0e3g6FUe1Hfe9Yob/z955x0lSl/n/XaFznO7JccPswgLLggsI6IlKFMWIinqY5c5wenKcAQMiKngeqHgmFA9MKMqJoj9zBhUQBJawOU3OnXNV/f6oruqqnu6Znt2ZTfTzeu1rZ6qrq6tnare//e7neX/GS/NT6qphg1D1Sai1XV3fX8QjSRzn9fL72Jz53ARRYCyfZ0sqxeZQcN6xq1vfRckKAPTf37f3DnP38Bif2Xwix4UD5m3G/XxOmRMjQX4xPIEmVM5tNJPj4clZzuxuLY9PmA9qub++XUCHBNWwQZAlRFnC63Jx1ppu7nxoK7lSye5sMDocytsAEzYgSfi8Xk4dHOD//vwQJU0wYcO+iRnu37KNZ2/eVIYQMqok62MUkpMNJ57IR65+v/572rFLj71ELkdfygxu2MR7PvBJAHbu2GpxNgg6dKgBGwpFY5RC0/0N1jEKpQIbXn3bW3nGw3eRdQX43Jt+yO6uUyxjFOVOhrKfwYjBtI5R6J0N9kQKo+q9cRfKzoze7hm+cP3/0N0xyxPbBrjymrebsMEeZdoYbKi+VutVvcSMRqPRaz3WkQobjvV6WnU4LGc9nWDCQlXv3+C+HY/xv599L2ef90o6ewdRVYU//Ox2JEnmpNN00d+rr7iW6//jEm74j0u48BVvJ5dNcefXrsXrD/Gi11xpHuus51/K97/2Ub5w7eW88LL3koxPc/c3P00wvGACi1k2KABc+paPcf17L+TGD7yMc19yBYnYFHfd+jHC0c7y/os/T00TasIGo1725uv47AdfyGevfhHPf/E7yGVT/Pi2a/D4Qlzwyv8wj2e9WzVsMG5TNdj95F/40a1XccbzX4/HH2H3k38z9/EG2mjtWoumwYWXXcs3PnUJt37qEs688O3ksyl+c+e1uLwhnnXxlfqixji+CoiVDgXjeAZsUJTKaISiGN0MGme/6Dru/tILuesLF3DyP70TT6CTxMxeZsYe58wXfKoMKIznpKM3VdEjmk46+0r+fPebuffHb2H1xtdSymd46oGbcTj9rD35jaiqSnxqK0/87Xq6Vl+EL9iHqiqM7PgxgiAT7XomidntPHX/p+lafSG+UD+appq3t/WeZcKGmZEH+fOPLueMiz7D2k2vMmGD7NAjH+3eBl0QaaZROATO+M41bPr2J1EliUev/xaJiy6pKYh0FVNIxVwljSKbhnQKrVBASadtgsj5zoZKeyNYYEOrSP81KVz9JUpTDhK3DyIRwdES0mFDOIrqDZD3t+qwQQiTKXmI5TzMph3EkgKxuEI6XSIRz5FO5cll8hTzRVtng8PpwO134/Y6zejLtohIR6hI2JMrw4YR3DP70caGKc3MkBmdJDMVIzObQSmU7LChK4K7LYKzf4Bi91qmWwYZznUymfKwf0yPvpweT5BJZlAVFckhEYz46ewJsqbfSVdLkTX+ETonHkPYvoXktt2kxmZr/Kte3mpKI5vVrIOrww0SFqrdpRxfzY5zjjtEt+pE1eBXuTkk4BSnDhPe4GvnI/H9fCS+n0s8EXKayjfTk/gEkUu9eiel4BB4jhDktsQEN8wN8wp/lISq8L3k1LzuhsXeTBkdEm+MdPC+0T18ZGwvl4SixDWF26bHiUj25Xk1bJjX1VD9eJZvr+jt5art27lq+w5e0dlOVlH52vAwfknidd1dlWNbuwqw+xqs9WgswY1P7eLFfZ2EXQ4enY2bkCDqcTEQ1H+m/37yeq7449952x/+zuXHryJdUvjcP7YRcDq4YtM6PXnCjAeVLG9aBf30hQrE0EcmdNigd0DoX3/ipc/l4pu/z7k3fZd3n/dMelrD7J2J89jQBDe96SU6dDDATBk26GMVEte86RW87MM38fIP3cQVL7uAZL7EJ2/9HkG/l3e9/pWoooMtu/bywU9/gRe/4AIGBgYoagJ3/ugnyLLMM896Nk9u3cEnrvsYF178Urr7BymWNH76ozuQZJlNpz/X7G545O9/5sNvv4C3X/11nnXhG8qSSLuzQR+psHc2qIqGVizxqtuvYPNDPyDn9HPzm37Azq5Ty3GXqsXRUNXZYHah2jtKrbChkVGK/p4JPv+JL9EaSfDYU6t533X/QjbntX0aX+1rqL5uao3nWMveZTH/3KrPud59q6v68erBhoXqUMOGY3U90gQOC1QTKixcC/0bDEc7ae3s46d3fI6ZyWEcLjf9azfygRt/wtrjNwNw6lkX8cEb7+EHt17HTR++DFl2cuIzzuGf3/lpIm3d5rE6+wa58pN38v1bPspn3v9yuvvX8/p3/zc/uv2GBs5x/u9w4+nn8c5rvs1dt17LZz/0Cjp6Brn83Z/lFz+4ecnPE2p3I2w84yL+/VM/4yffvJYvf/xVyA4nx216Lq+84r8IRbvn3U9V9dfB+aMWek0Mb0NTVe7/zW3c/5vbbLed9rw3cNm7/xdN1Vh/ykW86YP38Js7r+O7N12GJDtZfcI5XPjaG/C3dOljFJbuA8P1UN35YMAGVa3sYzgb2ntP5aXv+AUP/PJT3PeT96OUCvjDvQyecpm5j3Ew/diKCTE6Bp7Dsy75Ok8+cDMP/Pw9iJKD1u4zOOHMq3B62tBUDZe3FY+viz2Pf5NcegJJcuJvWcfm879AqPUE8tkZPL5O9jzxLf122Ukgsp5nXvxlWto3YqRRCJKApikIEmYahSiJyLLe9WBNo3C5RGRZ0NMoHALPvONaNt3+cTRR5LFP3k7i4pfgKQsiHWLRlkYhF9KIxXwljSKTRs1m0HL5CmzI5nTIkM3bnA2aZWxFEAXd2dAqMPCxJM4ehdKEk8R31iMRQg4Fyp0NEUqBsrPBEyEptRAv+JnLekjlJeYSAnNxhXisQCZTMKMvC1VjFAZs8Ac9+AJOIhEXbVGJ9nCJDn+SoJQkktEFkYwPUxgbIz8bJz0xZ6ZRgD5G4Y148XdF8A70ILe1U+pZw0xkHSP5LvZO+5ia0xgeSdeADQE6e0OsHnAx2JGm0z1D5/TjiDsfJ7ltF3O7J8gncwv/A2xWs5p1yOpIBgu1SpQFoqKDtoKDuzIzTCtFnILIKtnFdaEB1js8AJzuCnBdqJ9vp6f4ZHwIWRDY5PDx1lAHre7KaEOP7OKjkX5uS0zwsZn99Mou/iXUyR3JKfPxFi3LLpu9Aa7u6OP22QmuGd9Hj8PJuzp6+OGsfryGRiiq3zRZvhclgbPCIf57/Xq+MTrCh7fvRBZFNocC/NtAP+1eV/kY9t9rNWwQLDBiXzqDCtw9NM7dQ/ax2Jeu6ubTZ25EEEWe29fO1889nS88upN3/eEhnKLIM7tbufrMk+gK+csgwC6hrDgb9NuqxyjMWMxyJ+Npq7v59X/+M5/86b1c9f1fkS8p9LeGufyczaYgEuO5SZLpa0CUOP/MU7nr+vdx/Td/xOXXfA6nQ+bZm0/m2vdcQUdHJ6ok09raRk9XF1+9/buMTkzicjk5bv1xfPWWW9lw0ilMTc/S2d3LN//3q0yMj+F0uli7/kQ+9T93sXbDaaazQVH0D170kYnazgZFqeFsKJa49LYrOO3v3yfn9PG5N36fnb2bLWkUdthQcTdUuh3M+MuqLoZG3kiv7h/jsx//MtGWJA9vGeSDn3obubzHfm0soauhVtWDDUbVgg2NeBsa6WqodQ6NHr9ZSythEankMVmDG07TPnP7/UATKhxILfe/v6Vego3sXws0LHb/Rjsb6t2n2tew0D7VsMG6zeps0L+3dgxU9lGtkKDsUjBvUzXb8axpFNYxCgBVqYgejdcjRVVrwoZqZ4PVxWDuo2koJbXSHVFOo6hH240xiqW+kFhf2OqNUUgOWf+77GyoFkQaaRRut4gsgdslcMb3P8Gp3/iIDhs+cRtzl1yKWy7glfI2QaSrmNLHKHJJXRCZSUI6iZpJo6YzqLmcKYgsmp0NBdPZYIUNoLf6ujoF+q5J4uxUKI45SX73OGSpBcnnRQqFIRylFIyS97eScwZISBFihQBzWQ+zaZlURmA2phCPF0jE8+QzBdLJrAkbAERRxOHUoy8DYS/hiIdg0EF7q0RnS4lOX5I2aVIXRE7vQxjbT35klPTIJPl42uZsEGXJ7GzwDfQgD6yiFO1mpvU4hgs97JnxsW9EZXo6a0ujcHldeAMeOntCrB5wc3xPhrWO3YRi+5C3P0ryqe3M7RwjO5cB4NRf3/uQpmmn1b0gDqI2dUa1X7zuwmU/bvdNd6zYOTfr2Kn1kke72bfqcJ+GWUcbUKhVDb3pb6AWE0Iu+MdpGQAAIABJREFU9TEXOl4jckhYGDYYwsVa+1Z3LViPX/3p8zzYYLm9OqWi8rV9uygJ8yEClrELqaqjwfjbSJqwfa/DBlGWbLChliDSHKMwOxlke2dDlSCS8t+aKJnOBk2UUUUJVZRRRQeKKKOIMqogoYgOPYECR3mMQtTTKFSJolqJwCwqkjlGUSwJ+raSfYzCcDYUiuUOBwtwKBRUlEKJS7/1rzzz/u+Qd/q4+Y3fZ2vvGRZfg1ITNuhrCytwsCdSVEdgQu311tpVI3zu418mHErz4CPr+dANV5AvOGt2NcDywoaFOhsON2y49yfPOarWI0fKWuRp2+HQBA1Lr5UAfU3YYN9mhQ1Wp0L1vssBG2ztdVoliaJeZ4PxOKqin0g92FA5nmr5emmwYaGqNmZbYYNUXsSYaRSSWDVCYRdEGmkULifIksBpP7jehA1brvuGCRuMNAqrINKEDbk0Qi6rCyJzWdR0BiWTRcnlTNhQyuZRCiVzjKImbOgW6L8miaNdoTji0mGDI4wcDpUFkS0ogRYKvggpd5Ss4CNe9JfHKGTmEpBKV2BDOpGlmC/aYIMRDWqFDa1RJ6GgSEe4RIcvRas0RTgxhCM5jTAxRH5klMzYFOnJOIVUztbZ4PS7ddjQ34XcP0Cuez0JfxcjxW72zfrYP6oyOpwkGc+aaRROt5NQNECk1cuqfjfru7Ksdu4jOrIFRveS2rqD2O5xsnMZRFnC0+Jd9Jo42DpWWxib1SxrHQswoV4tF2SApYGGRh+73jHr3XepIxT1YIN1P3ObDUQcGthg23+JsME6RmFABZsgcimwoUoQqYkSquQAAzqUnQ2qINlggyI6dOBQdjaomliOvxRRVImSVkmjUDTBBhtKqoCizo++VFW7s0EHDiqlkoZWVHjFt9+hwwaHly+88Xs22KCU5o9RGGstAzbUir9sxNsAcNzgMDd97MsEAxn+9tAGPvJfb6VQdCwIG5YyQlFd9TobKrc3tkY82BGKI6Gz4VhdjzxtgUOzllaHu6uh0fscrbChet9asMEOI8r3PQjYYB2hWApsmA8R7LBBF0fWhw2Vn8+BdTZA5cWturPBChuqnQ0GbHA6JXY9dg/tPYP0r92Iy6WPUpz6g0+z+etXowkCj3/868Recqkuh7SkUbhLaeRSriKIzKURMinI5yqCSIuzwSqIVIoKSkFBLSkmbDAWZu5egb5rEjhaVQr7XaTuWIfsCiMHA4jBMPj8KOXOhpQ7SpIQmaLubJhLy8SSMBdTyGRKJOJ5MsmczdkA5c4GlwOn24k/5CHU4iYScdIeFQn7FDp8aVrlacKJYVzTQxCboVCGDZmpOLl4FqWgH8vhceBrC+BuCeDt7UTuG6DQPchUcC3ThRb2zfrZN6oyOpJibjpFLpNDKSo6bGgN0N0bpLPdwbruHGs8+2kd3YK67XGyI+PM7RojM5NGlCWC3SECvW11r4dmNevpWscyPFhKHa2god79D2SEwgobanU1WLcfLthg7ncQsEGQrYDBABdiY7Ch/LUJG8p/W2GDKjoqgkhBssEGRZBREU1BpIJESZNQNVGHDWol+lLV5gsi7b6GirOhWFR5+I930LX6DILRVfr2fImXfvudnPm3b1FwePjiG7/H1v4zUcwRClX3Ylk6G/TOUvsoBVATNtRaY1mvlQ3r9vLf13yFgC/HvQ+cxMf++00US3bYcDBdDUaZa78aHQzWRIpasGGx52A9t4XOxb4mbTzxollLryZwaNaCdSR0NTR6n6MFNljTfg4ENpj3rQMbKvsuDBuW2tmgi4hqwwal3PWwGGw42DEKqA8bdC+DjCAINtggy3bYUMzNcufNrwI0QtEezr7gDbxRzXPa929EEwSeuPZrzL701XjlArJYsgkincV0RRBpTaPI52yCyFJaf3Ou5Iu2zoaasKFfoP+jCeSoSmGfh9R3B5E9LTpsCEf0zgaPn7wvSsodJSG0ECsESBUczKUdzCZgLq6QSBTIpgtkknoaRSFbMBcdoijidDvx+N14fC5CYV0Q2R4VaQ8VCLuzZvSle3o/6tgQpbkYmbFpMlNxMrO6s0GUBN3ZEPXj727FFQ3j6B+g0DPIZGiQ4Uw7E0m3GX05O5kkU847t8KGtQMOusJ51niHaRvV0ygS2/eQGo/ZYEPkhNU4BwbqXhPLVY1+CtOsZi17CU14sNRaTsgASwcNjZzDYsc8GmBDrduqYYPtTegCsMF+P3H+fgZsMOSRFthg7WAw/A410ygWgg3G6IRUGakwYIM5RlHubNAEqTxSIemdDkK5qwHRBhuM8QljnMKIvlSNbgZLGoUJHEqV6EtF0di3/UHu/J/LAYh0rOOkMy/n3SNbOOvvP6Agu/niG+7gyYGz9PWDBTZYO0zN9VR5nWV0NoD9zTss3imwccNu/uvDX8XnzfOHv27ius++AUV1IIiNj1AsRcR4JMKGw+1tOFbXI03g0KyatVL/3lZihAKWBzbUes4rDRvm77c4bKgAAet+FdhgxGstN2xQFLUubKi08y0MG4zntxywQZTKX9uiL0XT2WDABodLRpIEM43CIXt5xjn/zOP3/x/xmRF+fsen+DlwFXDRsy/iWZtOYYNUxCUWTEGku5iaL4gsw4ZagshiJo9aLJnOhlqwQZQl3AMqfR9JILeoFPZ4SP9wA7LLq8OGUBhCLRQDUYruoJlGoQsiXaRyErMJgXhCF0Qm4zlymcKCsCEQ8uDzu4i2VtIoOnwJglJChw0z+9HGh8mPjlOIJW1pFHbYEMXT14XU1k6xZ5CplnUMZzrZO+1halY1oy+zqSwADqejkkYx4GSwPUmnc9KMvkxs3U1s7xSFdB5BFAh0Bmk5rh/niRvJdK2ve100q1nNenrUckMGo46ErgZYGV+DdXu1r8G631Jgg72joQISFoUNwvxtolx+g1ruVGgINhhjFI3ABosg0uxsqOpyUEUZVXKgCaJtjEIVJRRBNp0NCno3gwkbyoDB6HAwYEO96EtTEGmJvlQUDY+/k/WnvIhdj/+K2Ykd/OnHH+VPwHEIrDv1lfjCA3hLKqWSYoMNFTlkOQ7TBhu0eesp65v3enXKiTu44UNfw+sp8Js/beZTN/8zavlt4nLChuqqBxvM2xfoPDjQEYojFTYcy9UEDs2y1Ur+WzvUvoZ6x2ikq0HfT7B8XX//pcKG6v0bhQ3VYxSHAjYo5TfI9WCDZvt75WBDLUFkNWyoFkQasMHpkPQ3y+U0CpcryOv/43Yc8jdQv/Jv/O0nX+FuYAj42p9/ztf+/HM6u3t4+ctewUtf/EJOHOjEWcrgyCf1MYp8tgIbDEFkoVAliCzM62wwyoANnjUavR9OIodUCju9pO5aj8MbQvJ6dNgQ1GFDzqcLIpNCmHjRz1zOzVxKJpmBWDmNIpXIk07mKOaLFPNFG2xwOB14/G58QQ/hiAe/X7bBhlYm8aVmzOjL/Og4mfEZ8vE02bmMOUbhCrhxBVz4uiJ4+7qR+ldTjHTpsCGrw4ah0RKzszlmJpNkkhk0VcPldeELeMzoy3XtKVYLuwhO7jWjL2N7J8knczbY4Nq4iZnVZzCq9dW9NpajrNFezWpWs46cOlIgAzR+Lod6hKJ6/6MFNuidCqJ9jMJ4rTe+rgcbGnU2iJLZzbCQIFIzOhnqCCJNZ4MVNhgOB2N8oiZsqIxRKMp82FAqafhC3bziXT8km0rRdstr+OuTv+ZXwDY0tj34LXjwW4Ra17F646vpW/9C3L5OG2ywdjZYEymg8gbe+ua9Xm0+eRvXX/113K4iv/j9GXz6i69FQ7JdN7V8DUsZoTDK2t1Qu4OhPhyxbj8csGGl1wrH8nqkCRyaZdaR0tXQ6H0OxwhF9f5HEmwwj7uMsMEugayfRrHSnQ3G1/UEkQZsqBZEyrKIwylWJJEOXRDpkAU2/fTLnPmTr/Au4NEPfp5frVrNr3/yTf78258xPjrCl754M1/64s30dXfy2heey6uf90w2tIcgn6sIIrNZlEwWNV+glM3XdTYYZcAG7zqN3g8lkAIq+e0+0v+3HocvjBQMIPoDEGzR0yi8ZUGk5iVWDDCb9TCXkplLaKQzKvFYgUQ8RyaVI5/JUyqWbIJI2SHjLsOGloiHaNRJOCDQGS7S4U/SKkwSSgzhSEyb0ZeZ8Rky00mbINIVcOvOhmgQb18X0sBqsp2DxH1dDOc62TftZf9IibHRFMlYhnQ8bcKGlrYgkVavGX25St5Dy9BjaKP7SW7bRWzvJLl4Fskp42v10XJcP+6TTmJu1Wlsza9j/7S77vXRrGY169iqlYIMcGCgAY6crgb9Po2PUFgfo9Yn0PVGJYzbakGI5YINizkbbLDB6mwwIIO1w+EgBZG1nA1WQaRtjMKADWpFEKmU3Q3zYYNgjlEoql0QaUAHRdHdCy+7+yM858lfU5ScfP61t/LzUpHtf/8uo7v+SHx6B4/8/hM88vtPEIyso/+ES+lefRFOT5vpbKj8sUsijVponXXmM7Zy3fu/jstZ4qe/Posbb7kMDfGAuxpEyxt/tU4UZ60OhlpwpFZ3Q6035I2MUFgfv/rYRwJsONarCRyadUR1NTR6n6MZNswfkVgabDAfpwo2LLuzoQ5sMFMqDhFsqOVskCQdLIiiYEujqCWIdJaBg8sp4HbrgsiN93yRM7/wbgCe/NAXiL/mTfyTVOL8552JpKR4+C+/5Ud3/ZBf/e4PDI2O8+mvfYdPf+07rOqI8s/nnMYrNx/PmqAHJZWpCCLTOfZMxeh2OijlS7ZPGowSZQnv8Sq9VyeQfBq5p3xk7l6PwxvUYUM4Al4/paDe2ZByR0mqQdIlN7Gs3tkwG9eIxUtkMiWSyTyZVI5sKmfrbJAkCafHqQsigx5CYTfRqJP2CIR9Jdp9KVrFKcKJYZxTQzA3Q350nPToNOlJuyDS6XPiawvg627F1R5F7l9NrnOQCf9aZvJh9s34GBpTmBhLEZtKkM8VzOjLcGuAnv4AnW0y6zozrHHsITLyGKVtT5IZGWdu9wTZuQySUybcH8Hf045n40bia05nW+k4Ht/rYnQsW/caWZ4SKjntzWpWsw5prSRgMOpwgYaFjnE4YUP1fY8q2CBWuRuWSRA539kwHzbYBJGaRRCpVDsb7LChpGgoih5BXgEOqt7lUFS4+Pvv4zl/+DJFyclXL/8W29ady0BRoXfwBeSzKYZ3/JZdj97BxP77SMzu4PF7r+fxe6/H3zJI7+DL6Bw4H6e3zQYbSqUihdwMLndt6bLxBv3s07dw7VXfwOlQuPsXz+bzt74STTsw2CAKC7+O1vI2NBJ/aTvvA+xqmHcuRyxsOHbXI03g8DSuoxE0wOGXQ1bfVg0QbNtWADZU4MHywwZjhKJeGoW5vcExCvPntxJpFOVFy0KCSJdLxOEodzaU0yg2/uIWzrz5XQA89YHPMf2aN+GRizjEIm4xj1socsHZp3HJ6cejZN7Dvff9hW//5Ff8v7/+g70TM3zizl/yiTt/yapIkMs2reMl63rp93r4485hLv/ZfXzmrJN5QVe7rS3QWGz5TlDp/WAC0auRfzJA5seDOmwIhxBDYbRgC4onQN4XJe2OkCRErOAjXXAym5aJJTXiCV0QmUkXSSeyZhpFNWzw+HRBpBF92R4R6AjmdUFkOfrSObUfdXyE0uwcmbEpsjOJurDB09+D2NZBrmuQicBahlJtTCWdDI0pjA4nmZtOkU3lAMzOhp6+IGv7JLrDlehLZdvjxLftMcGG5JQJ9bYQ3rAGR/8AyTWb2aYez+P73ezclWRuKlX3OlmuEoTmJxfNatahqEMBGIxaSdCw2PEXOsaRABvqvXE8pLBhMWfDgaZR1BBEWp0NWtnRYAgiazkbVKR5nQ1qFWwwBZHGSEUd2FAs6bChWNJQ1Er0pVJSuOiHH+Kc33+RkuTglstv59F155bTJ/Q/ouSmZ/AiulZfQD6XZGzX79j31A+ZHvkbqbmdbH3wM2x98DP4w+voXvNi2vvOxemOMrb7x+x89PNs+qebCUY21rwOn3PmI1xz5W3IssoPf/pc/ue2lyOIEsbLoWgZZ61cA7U7CWrBBrXGm/qDgQ3VteTIy5rjG0cSbCg/3jG6HmkCh6dhrSRogKcPbKi3z4HAhup9Gx2jWE5ng6JYjce1xyiWAhsOlSDSChscLrk8PlEWRJa9DU4HOB0CG357O2fe+C8APPWfNzL5z2/DIxVxS3kcQrGSRlEWRDq1IhedejwvOK6HfPzl/PbBLXzrj3/n51t2snc2wQ2/f4gbfv8QA0EfPllCBT70wOOop27gBd3t5vMRZQnviQq9H0ggujVyjwXJ/nw9Dq8PKRTUYUMoSikQpeAO6mkUhJnL+4ll3aRyohl9GY/nScRyFHJFcpm8TRApSRIOlwOPz00g7MHnd+qwISrSESrQ4Y0TEBNm9KU6PkJ+ZJx8LGmmUSiFEoIomNGX/jJsEPrXkA93MRkcZCjdzr5pF1Mzihl9aQoiXQ5C0QDdvQHW9EsMtibokMf16MsdT5DYtpfE8CyFdN5Mo2jZsBr5xJNJdqxnOyewZb+PHTuSTA7PUSwU614rzWpWs47sOpSAwajDCRoWOs6h8DVYH+dAYy+N22rBhlpeh0ZggyiLdmdDHdhQ6WIQ5nc2NAIb6ggirc4G1ZBFLuRsQERFtI1RWAWRxhiFDhwWhg2ms0HRKBWNUQqV8358Hc/7zedQRJlbXncbjx13AWpRoVQsiyHLQkgj/lIU3HSuvpCOgQsoFlJM7P0Dwzt+xOz4g6RiO9j+8I1sf/hGfKFBSsUUmlrgsXv/nY3P+iyh6Mm26+jcZz/E1e/5FrKk8t27z+OWb78YQdSdDcvZ1WCtWrGchxo2LLZtKcds1tKqCRyeRnUkgoZG73cgcsh621cKNti2LQNsMP4zNL437b0W2KCpleOtNGxYahqFWudF5EA6G6phg1UQKVcJImULaHC5RNPZsOHeOzj7v94MwNb3Xs/kG/7VhA0uIY+DggkbagkiHcU8F6zr5byBdtKxBL95cg/ffXgbv9s7xr5E2nwOOUXlIw8/haBpvKCvE1GWCDxDo+vKBKJLI/dIkOwvjsMRDCF6PYjhFrRgCyV/CzlvhKwjQJIQ8YIOG2ZTEqmMZkZfphJ5suk8hVzB1tkgO2Rkh4w34CEQ1gWRwYBMa0SPvmz3xolqE/iSM7in96NNjOhjFOMzFJIZs7NBEAVcATfukAdfZ1TvbOhbTap9kJink5FMG/unXQyNFJmdzTI3pcMGTdV0OWXIS3dvkNV9Dgbb4qxSd+Af22OmUcT3T5NP5vSfS2eQluNX4ThhI5N9pzFS6mHLfj87dqaYHNFhg8vtrHu9LEsJdvFVs5rVrAOrwwEXjDpQyGDUkQ4bFtr3QGMvje/rwQY7cBBrdj8cFGww0iksnQ0mbLAKIht1NiwgiLQ6G6oFkbWcDdWwQVErgkjF8DUoQnmkgpqwoVSqjFEoqg4b9O4GlXN+egPn//wGFFHi1tfdyj+OuxC1DBpqwQa1ZBF3ayqi4KZj1QW0959PMZ9kavjPjO7+MXOTD5OO7zSvA1XJseW+97LxWZ8jFNU7HS587gO8/53fQZI0vvnDC/nG91647LBBrVrv1Yu/rAUhFqtGfQ1G1fI2HLGw4RhejzSBw9OgVho0wJEHGxoBDfp+jcGGRn0NsDKwwfrYywUbFMXS2lYHNhj7HEj0pXFs/RwP3tkgiLUFkcYYhVUQaYUNbpfA4H138exPXY6oqux85zWMv/k9uKWCDhvEPC4ti0PJ4yymcRTSSPk0UjZVVxApFUuc29POOZEQ6XSWLz2yk//duod0WRCZU1U+8PBTSA6JV72snc5/jyE6IftQiNyv1+MIBJCCQQSvT4cN5TSKpEsXRBrRl7MpiVhCI5muRF+mk/MFkbJDxul24vI48Qfd+hhFxEEoIFTSKLQJgnFdEKlNjJppFJnpBMWMHt9pwAZ/Rwh3JIh3QIcN6Y5Bxt2rmc6GymkURcZHk6TiWTONwuN3E2kPEm3zsrrfwWB7klXsJji8BXV0vwkbCuk8Tp8Tb9RPy/GrcJ60ialVZ7A1s5Z9U0627UgxMTRLPlcgEPYTaffXvWaa1axmHZ46nHDBWkcjaIDlgQ21uhr0249O2FBXECnJ5rYFnQ2CMN/ZUN5mdTYgCPOcDaogomgVZ4NSTqGwOhtUVajABnOkAqzxl1bYUCpVxihUpTJO8exffJaL7/k4qiBw26u/woPHv9Aco1CrYIN1XVU7/lJFkrx0DlxIR//5FPIpdvzjJqaGf4Oq5AEdOjx277s55ZwvctmlCa761zsQRY1bv/dCvv1/FyOI80GD9Xc/77pbpKuhWhRpVDVsqN5u3FavDsTXcFTBhmO8msDhGK6jHTTAyo1Q6PsdHthQa+TCeqxasKF6jGK5OhuAumkURhTm4RqjaEQQaXU2uFwVQaSRRuFyCqx94B6e8/HLEBWFXW/7IKNv/88ybCiYsMFVyiCXcjgLKb2zIZeGbBryObRMGiWdRs1kTUFkyUyjKCCVNIaSafKKil+WKKoaiqbR7nExHEjR9V4nggOyD4TJ/XoQRziAFAojhFvA46Pkj5DzRkm6oiTUIOmih9myIDKW0JiLlchmSmb0Zb7K2WDABl/Ag8fnNGFDewTC3kr0ZSgxjGNqGC02Y0ujyCfzqCXFhA2+tgC+rlac7VHE3gEynTpsGEpGmYg7GBotMTaSIjadpJArYKRRhNuC9PQF6GqXzOjL8NCjFLc9SWZ4nPj+KfLJHLJLJtgbJdDfgeukjcysOo1t2bVs2eNgbCzDxHCMfK6AP+Sjb02Egd4V7nBAaC4wmtWsOnWkgAVrHSxkgJUHDdBYVwMsH2w42NjLytfLDxtEWaocU9ClhGbc5WKCyMVgg6WbAVGyORtM2GBxNqhiOZHC6mwodzVYBZGKKtkFkcbohMXZUAEOdkGkARvMMQpVo1RUOfO3X+aSH30IgG+98n944OSXm50NOmhQ9XVWubNBU7V58ZfWroHqN/Gyw0cmsQtNU5FkH6paQEDA6Wlnff+veN87dgPw1e+8hO/9+AL9OlixEYr652lst+1/CGDDYnX41wLH7nrkaQUcBEG4BLiks3ft4T6VFa1DARqgCRvmbTuKYINaUi33qTNGcZCwoVExz0KwYSFBpMOpwwdrGoXTKeKQK4LI1Y/+iudccymiUmLv69/LyLuvtgkiDdjgLKaRijkdNmST5hiFViigZrIV2JDN6ZGX+QJKoUQpX0Itqby4r4vTIyH6/V4G/D7a/W5CZyt0viuOIEP2bxFyv12DIxzUOxuCIdSALog00igSapBY3k+q4CCW1qMv44kSiUSebLpoRl/OE0S6nXj8FWdDNOqktQU6QnnCrkwl+nJ6GHV8hOJsbF4ahRU2+HvacQ/0IbS2k+laz4RXhw17JxxMz+nRl/GZJPmM/umJy+si0hGity/AYL9AZ1CPvgwPb6G0/Uni2/eZjyW7ZEJ9UcInrkXuG2Bu1Wlszw/y+F4nu3fGic2kyWVyeANeeldFOPk4mTWRubrXzrKUwDFrhW7WkVvGeqRLdBzuUwGOTLBQXYcSNDTyeCvZ1VC9f6O+Buu+hws2GHDB2tlgjErYnA31YMNSBJGiVBM2mM4GQZznbKgWRBrOBr2joSKILFU5GxSbIFIfo1DV+Z0Niqr/MWCDkUix+Q+38rI7/wOA77z8Jv5y6mVVIxQqqqJUOkqNdZaq2uIvjXWXUdVvpvuOuxxVKeDx9+Lx9SA7Q1z6wj/yb2++C4Av3v4Kfviz55ugAZYPNtQbpTDOsxo2NOJtWE7Y0MhatNHjrkgdw+uRpxVw0DTtHuCewQ2nve1wn8tK1KECDXDswIbq+6z0GEX1vgvBhlrOhsr5rAxsMEYolppGcTCwwfpCV0sQKTvkmoJI42+rINLp1AWRbpfAwBN/4HlXvwSpWGD/ZW9n339eh0cuzRNEuoop5EIasZhHzKVN2KBmM2i5PEo6TSmTpZTOUszkUYslSrmiCRs0VePM1jC0hs1PdcLPUWj/1ziCBJn7ohT/sg456NFhQ6gFLRjRBZFOvxl9GS/4mMs4SeUkM/oyFsuTSuTJZwu2NAoDyjg9FdgQbnETDMq0R6AzVKDdEydITI++LMOG3Og4+bmkmUahlhREWcLhceCN+vF1t+Lu74He1eTCXUz6VjOUamPfpJPh0Tyx2SzxmRS5TB5BFHC6nbS0Benu9bOmT2RtdI52YZzI8GMoZdiQGJ6hmC1WYMMJaxE3bCLevk6PvtzvZufOBNPjcYqFogkbNh7vZFP7MF2xJ+teP81q1tFaxnpkvexZ8fXI0QAT6tVyQAY4NKABDi9sqOl1OEjYUDmHxmGDCRIOhSDS6mwoj0/YnA0NCCKtzgYDNKiWrgZjjEJ3OFjlkHqHQ7EMGYwxCv3ryhiFomicct+3ecUd/wbAnS++nj+d/gYdNJTmwwa1VOluUCygoXqUwrrWso4otPU8z3YtvfrFv+Htr/8xAJ+/9VXc/ctzFu1qsG5rtKuhFmxYqLNhqbDhQD75P6pgwzFeTyvgcKzW0QAaGr3v4ZJDVu9/KJwNS4UNB9PZYPU1LAQbbNuXABuqBZHmz67B/+CtnQ1W2GCkUcgOCdHocFhAEOl2CcgS9G69j+d98EVIhRzDL38ze67+LxM2VAsi5bKzwSqIVDNp1HQGtVBAyRrjE0WUfNHsbFAKJfOFX38OIpJTInROkfYr4ggiZP7URuGva5BDASSfDyEYRgtGKAYiZD1lQaQaJFbwMZdxMZeSSGcr0ZepRJ5MMkexULSlUYiSiMPlMAWRkYiHtlaZkF+Pvmz3xIkqE/jSkyZsyI+Mk5mYIx9Pm7BBEEXcITfukFeHDX06bEi2r2PO1aHDhiknQ6MFJsdTpBNZM43CG/DiD3no7g2wtk9iXWuM/uIOfNN7ULc/aaZHElNQAAAgAElEQVRRGLAh2NNC6LhVSCdsYqz3dIZznTy+3832HUmmRmMoRQWPz0PPQAsnHe/ilM5R+ofuRdu9te41tFx1rLYwNuvYrqMZJCxUywUZYHlBw0LHaxQ0wIGNUFhvW8jXYNuvCigsdNtydTbUhQ1VzgYbbFhOQaR1jKIsiNQMX0OVs0HVpHnOBmOMQtEEM4nCGKPQuxbszgbFEEaWNHOMQlWhVFL1kYqiyol/u5NXffNfEDWNH138MX571hUWsFCBDWrV+sqEDTW8DY3W5Zf+krdc9lNUVeCmr72Gn/32WQc1QmG9zbq+q/Y2VHc2VG9f1KNwAF0N1cdtBDYcyHFXuo7V9UgTOBzFdahh2+HsaljoOIcLNlj/zz8UsKHSRbD0zgabr2GFYcNKCCJN8GCBDbUEkS4ndO14gPPe/wIc2TSjL3ote6/9HB5ZOWBBZDGTNZ0NlTEKxXzhN16kJadE+PlF2t6iw4b079ooPrgGORREDoWhLIgsBiJkva0knRGympdYwcdsxs1cSmIuoZFO69GXRhpFPpNHURSbs8HtdeF064LIlhY3rVGZ9haNsLdImzdBVJsgEB/CEZ+ypVEYgshSvoQgirgCLnztIdzRkB59WU6jGHf0M5UJsm/axdBIgYnRJPGZJMW8HlHp8XuIdARobfWwuk9msDXOgLKDwL5HUceGSWzfQ2J4piyIdOFrCxA+bhXyiScz0buZrfF+9k062LkrxXQZNgQjflo7Apx4nIdTu8YYGP0LxYfvJ7FntO511KxmHfUlHLvgYCm1nJABlv4zPRxdDfp9lz+JwthW6/Zaby7twKECG+bvs7CzoVHYYKZRLKMg0h5/aXE2iOVuBouzwRREYu9sMH0NmhF3KVr+CGXgYBdEGt0MJUX/WlX1dVax3OGw4aG7ee1tb0bUVH56wQf55XPejVLSoy+NtZd1jKJWIkWlY0CzvWGv1d1Q+d1qvOlVP+P1l/4cVRX4ry+/jl//+Wz0X918sDDvWlmks6DW+q56jKL6HGvBhlrdDY3ABkEUFwQvRytsOJarCRyOwjpaQMNS7nskw4ZatzcKG5bqbFgINlSOsfQ0ioU6G+zw4PDDBkMQaU2jqB6jcJR9DdWCyM49/+D8912II5Nk/MJXsvMTX8LjUHCIxcUFkYWCTRCp5HIouYL+x+Zs0BcE+nMxPtkRabmgQOsbEnpnw+86KT64Su9sCAYhGELzBvQ0Ck+UlKuFRClIpuQmlnUTS+uwIR4vkqkSRJaKpXmwwWsRREYjDtpaoD2QJ+RKV9IopobQZqfNNIrsbMoiiKzABl93G862qBl9Oe5axb54hKm4zNBIkYmxFInZFIVsAUEUdNjQHqCvz09nq8i69jgD2k4CQ1sobN9KZmTSjL50+lyEV7Xh6+s0oy+3plbx+B6JsbEUkyMxivkS/hYfA2tbGOh1cGrPBKsm/4ry8N+YeXw32bl03WtpOUpAmLfAaVazmrXytdyQAZYfNCx2zOUQQ1bfZ7ERCn2fxpMojNuXChuqux5qwQbD1zBPEGntZqgjiLQCh4MVRBpjFKog2cYo6gki9a6GGs4G1SKINHwN5TEKRa3AhmIVbDA6HAxfg6poDD78M1739dcjqQq/PPdKfvq8qyiV1w8V2FAZX610NNgTKYy1l1GLvwHWeNtrf8xrX/prFFXghi++kd/dd7r+u1xiV0Mjb8prpVLUAyILrg1rvA7P+3ezgN9gIQiy2HGXcsyVrGN5PdIEDkdJHS7Adrhhw0LHONywYaH9VwI2mB0OywQbjDfNB5pGodag2Mb39aoWbLA6GwSxIoi0woZGBJGdw49z/lXn40zGmHjei9lxwy143FrF2VBLEGk4G7IZtHzeJogspXWhojFOYe1ssD4fySnTclGW1suTAKR/2UVpyxrkQMXZoAYiKN4gOW+EpDtCQgkSz3tJFRxm9GU8XiKRKJBNFxZMo/D4dGeDP+A00yg6Ajna3XMEtJiZRqGOj1KcnTPTKKxjFK6AC19bEH9vO+7+PmjtMKMvhxIR9k/KTM/osCE2rQsiRVnE5XbS0uqnp9fPml7oDurRl6Ghxyhu30pi5xDpqYQJG0L9rYROGETsW830wGlsy6zhib0Odu+MkZhLU8gW8IW89K9uYeN6iTUtU6yevh/tH39jZstOUpNJHJ4VluoJwDHawtisZh1JtRKAAQ6sQ2QlQAMcHbDBDhLqw4b5IxXzYYO5Xy3YsEgaBcYxD1QQKUnzYUNZFmk4GzRBNMcoagoiNTtsUKphg1JxNijlLodiqTJGoZQ7GgzYYHQ2rH7s11x+y2uRlSK/fc47+dF5H9LjMY0xiqr4y4USKaq9DVC7M0AvjXe8/v945Yt+R6kk8skvvJk/3f+Mmi6EpXY1mI9QY5Rise6LhboRGgEN1vOtdbxGfBALHbtWHZbOhmN4PdIEDkd4PV1Bw0LHaQQ06PsdO7DBes6LwQZVMcYnFoYNRjTmkQIbGhVEulwVb4ND1gWR7WNbOf/Kc3HFZ5h69kVsu/E2PB7qOhvmCSIzaV0Qmc3anA1qsVSzs8F4PpJTJvKiHNHX6LAh9f+6UZ5cjRwKIJadDWogQtEfoeAO6tGXSpBYzsdc1kUqK5rRl/oYRY5CrmiDDcbPyYi+1J0NboIBifYItAfztHtiRItjeDLTZhpFbmzCFEQWUjlTEOn0OfG1BfH1tOHq60HtXUMu3MWEexVDySj7Jh2MjOaZm80Sn9GjL0VZxB/yEQh56CmnUQxGZmhXx/Q0ih1P6YLIkVlKeQWHx0GwN0Lo+DVoG05hpnUdW3Pr2FJOo5idjKOWVLxBD31rIpx8vMym1r20Tz8Fj/yVmUe3k55K4o14Cfa3172mmtWsZh3ZtVKQAVYONCx27APtatDvu/JJFNW3LydssMVbLgYbLEDCJoOs9jgsBhtqORsEwSKHrERfVr6vOBv07ga5En1pgQ3W2EulaoRCdzcI5hhFxeFgGaMowwZF0czOhv6n/sgbvvwqHKU8fzr7rfzgBR/XYYNihw2aqlLdaWqKt6vWXo2UIKj825t+wMsu+hPFksR1n3sL9/39lGUZoahV1ZLI6q/rSSLt53xwXQ31jltr+1LcCM0xiuWvJnA4QutoBA1Luf+xABus99PBgTZv//kwojZssB6z2tmgb29sjEJVNDPNYqExiuWGDYsKgOqMUeiuhoqzwRBEmsChhiDSlEQ6dUFkdHIX5195Lu65SWae+Xye+vx3cHtEfYRCsDgbShkc+aTe2VDIlzsbKs4GNZdHSWdNZ4MxRqEU6nc2RF+aJfLKMmy4pwdlW3mMouxsUAMtFP0RMt5Wso4ACTVIPK/DhtmkSDpTib5MJXJkU3mKhaINNkgOCYfTUYENUTfRiEzIr9EeLNDhiREtjeOPDSElZsw0isz4LPlEhlw8SylfQpQl3CEP7pAHX1cr7r5etJ7VJNoGmXO0sz/Zyr5JB8OjeSbHk2SSOTONwhvwEi07G9b0iayNzNKf24Znag+lbXoaRXJ0jlJeQXZJBHujhDasQTjhFEY6NjOcaeeJfU5279LTKDRV02HDaj36clPrED177kXZuY2ZR7aRmkjgDnloPXkQ1/r1wG0LXl8HW4staJrVrGY1VisJGIw6kkADHHxXQ/X+hxs2VB6nVmdD+dg1BJHzxiiqwYLR1bAUQeQSnA1aeZTC6mzQEylk09lgdDRUwwZVqw8bFHOkQvc2qGpljMLa3VAqafRs/Qtv+sLLcRaz/OWMy7njRTfUhA36yIRmS6SwehvAPqpg7W6oLlEUEASVf3/r93jRufdRKMh87LNv44FHNiEI9mtmoRGKRt6QV9avB5ZIsVg1AhtsQkor7Fjgw6+lwIbDXcfqeqQJHI6gOtxA7VB0NUATNli/Xwg2HIizQbWBgtqwYSFBpDXNYqVhQz1nw1IEkS3T+7jwyufjnR5lbvOz2fbF7+H2SjZBpOFsMASRYi6NUMjrsMHqbMgXKGVzprOhlCuilhSUYiWWylhwibJE66VZWl6WRFMh9ZNe1J0DyAF/2dkQRvX4KQWiZL1RUo4W0qrXjL6MpURicZV0RjGjL7MpuyDSgA1urxun24Ev5CbcosOG9haVFm+RDq8FNkwOo87NmGkUmZmkKYg0YIMuiAya0ZfJ9nWMSX1MpYJ69OVYgYmxJInZVEUQ6fPQ2hmkr89HVyusa52jv7Ad774tKCPDJHbsM9MojFGN8IY1iBs2Mdazmadme9k/KbJzl55GoSoqwYifts4AJx3n5OT2EXqH/kL+4QdJ7BklORbD6XcTPXE1jtPPYqr75AWvr2Y1q1mHrw4FYICDE2se7PgEHJoRinm3HSbYUM/ZoEMGSwfEoRBE1nM2GLDB4mxYTBBpdDaoRuylpbNB0eywQdEEmyCyWNLXdSVF0/0N5Y4GI/ZSUTQ6dz3Im//npbgKaR7Y/Cq+/fLPUlIwYYOqWEYjzE7T2okUtUSRRlWPDYiCylX/+m0uPOdv5AsOPvrfb+ehLSfUvD5s18hBRk6a57MMsKHRroZGYMNCx22kmt0NK1NN4HCY60i4rg9VVwOsrK9B368+bKgHGqzfLwU2WEcoqvdfDtjQiLPBBARaZYSiFmxQFYuvYaHOBsuL3KGCDZIsLThGUU8QGY6NcOGVz8c3sZ/YyWfy5Jd+gNPvwCEWbLDBWUwjF7N2Z0M+j5bN2pwNSq6gJ1GUoy8N2FARRBqLLpHWyzK0XJIqw4YB1B3dyEE/UjgEoQhqoIWSJ0jG20rSESFeCpIuuczoy7mERixRIpspmtGXhiBS0zQTNrjcTrwBNx6fk0jEY6ZRdASyhJ1posoE/sQI8uQQyvgYhdk5MpOzZKYT5JN5NFVDlKWKILKnHUdbtAIb5H72xVqYikuMjOlpFMm5tAkbvAGvCRsGe1S6Akn6izvw799CYfs20iOTJIZnTNgQXtWOt7cTacNGxntP46lYP0/shvExPY3CgA1r1kUY6BHZ1DFG/4ieRjHzxB5y8SxOv5vWk1bhOuMsdvecw/bZlR+pOJo+/WhWsw5XHSq4YK2VBg2LPcZSQAOsvK/Bum8toLDQbZUxCNHcd0HYIFXGJ+rBhhUVRC7kbBAEm7PBdDgI86MvazobVPsYhaIJts4GxeZvsMOGiiDS6HBQadvzCG/9/Ivx5BI8vOml3H7pF1E0wUygUC3xl0YkpqqpNRMpao1S1O9uUHj/O77Jec9+kGzOyUf++x088sTxC45PwMJdDca26se0djdYOxvM2w8g/rLWORwsbDBuO1phw7G6HmkCh8NQR8D1bNbROEKhH696v4PrarDuY9t2kLDBvN8BwAbVct96nQ3GMRaDDY2MURj76ee+MrChliCyGjY0IogMJ8e58Mrn4x/dTfyEzTzx1btwhtw1BZGOfAqxmLM5G7R8HjWdtjkb1EIJJV+klCuPUhTnj1HILonoZRnCF6fQFEjdvQptqB856NFhQyCMGmih4IuSdwVIOcIklACxvJdUXjZhQzxeJBnPk8sWyabzFHIFM43CDhs8BEJuAgEnrVGZthboCOZoc8cIKrMEEsM4JvejTIyRG5sgN5ckM613NhgdGVbY4OrvQ2vtMKMvhxItDE2KpiAyMZuikCsgSRJOj5NIR4C+Ph9re1TWhidpK4yYaRTxnUNkZlIU0gWcPieh/jYCJ6xD6FvNRN/pbE0M8OQekb27YyRjGYr5EsGIn4E1LZy8TmN1aIJVE39F+cf95TSKDA6vk+iGPjxnnMme/ufywP4udu0rLHidNatZzVreOhxgwVoHGxO6HKABDu8Ihb7PwrChEXlkLdhQfYyazgYDGsBBw4YDFkQazgYDNlidDWXYYHyvdzNYEyn0MQoDNljHKBRNmA8etOoxCquvQYcNigKqYh+jUDWIDj3JWz/3IryZOR498WL+9zW3UNJE2wiFvsaqxF+aa6zy+sq6rqoepZh3rQkimqYiSQpXv+t/ee5ZD5PJurj60+/i8W3rFoQNC3U1LPRGt3qUwnputSSRjdaBwAbb9lqxmgs8D8MZUet+RwJsOJarCRwOUR1p1/GR0tWw0LGe7rCh0qJWGzYoSnXb3cE7G+zG4ZWDDVZBZLWzYTFBZCgzxQVXnUdg/3aS6zfy+NfuxhH24ZZyNQWRUj6NUMjpsCGX1QWRhYIOG9JZyxhFEaVQNGGDVRApyiKSQ6Tt9RmC55Vhw12r0Ub7kIMBRI/XBhvS3ihZya8LIvNeYlkHqaxowoZEokAqkSNfRxBpwIZgi+5sCPol2lqgM5ijzRUjmi8LIif3o06MkRubJDM5RyGVo5DKoRRVJIeIw+vE1x7C39uOq68HpXcN2WAX465V7E9E2DchMTySIz6Xs8EGX8hLIOyht5xGsbZlmp7kU7in9lHcsY3EziGSYzFKeaUMG1oJbliLetwpzEbXsT29iif2SOzZnWBuKoFaUs3oy5PXC2wM7aJt6knUR+5nZstOMjMpvFE/wf52vKefwf5Vz+XB4R4eeyLFzERywWvtoEsQ4BiNoWpWsxaqww0WqutoBA1w5Pgaqm+3g4SFYYM9KlOs2rYIbKhKozgoQaRk72aoN0ZRkUNWnA1WQaQxRmGAhpIljcLuaxDNjgbrGIWiVpwNRmeDqmgUS1oZPuh/Wka389abXoA/Nc2Tx5/H11/3DYrIKIq+hjA6G6xrL3N8Qq1IIqHqU/saoxTWcjoUPvzur/Os0x8lnXHzgRvezdZda82XsqV0NdR6g16ru2KpiRQLrRMbBQ21yjq+sZQ6KmDDMbweaQKHFawj5fq11sGChqUeowkbDhw2VI5dAQzGYxuwYTFnw0JpFEpJMY9nnSU0zvtQCSJN4NCAIDKQneX8qy4gtPsJUms2sOXr9+CIBMw0Cpsg0uJsIJ8znQ1qNouWL6Bkc5SyOcsYRbFmZ4Moi0hOkfY3pQk8N41WguQP18BoN3LIjxgImoLIgj9KxhMhKbWQUTzE817mMk7mDEFkOfoylciRTeugoZgvmmMUDqcDh0s2oy9bWty0tsiEAxodAb2zIVocwxfbj5SYLcOGCbKTc2RmUpRyRRM2eFq8OANefN1tuHp7UXvXEo8OMie1MZSIsG9CZngkx/REikwyWxFEBj20dQWJRl2s7YPBlml601tx73uc0siwLogci6EU1XIaRZTQCYNoG05luO0ZDKfbeHyvgz2748xOxAF02LAmwsb1EidH9tC56z5Ku7cza4ENrZvW4Vh3HMODz+fvY308+kSayZH4gtfactWx2sLYrGYdaVChug4VZGjk8eqBBlj+FIp5tx1m2GC7ryTaoIMVNojWDoZqZ4NtZEI4MEGkJYGirrPBiMEUZbOzwfZHk2yCSGOUwgAMqtXXUMfZYMAG3dFgEUQqGqWi3t0QGt/NW2+8iGBigm3rzuGW13+TguDQOxrK8ZeqZb2lWjtRFfvaqt4oRa1yOIpc8++3cOYztpBMefnADe9h+55V9a+fOl0Njbzu1RqrqAUUGom/rPe4i6dQzB+lWApsqJWEYT/+kfVm7VhdjzytgIMgCJcAl3T2rl2xxzjCrltbHcquBlheX4N+vOr9jk7YUNl3YdhQicqs7Kc/3sKwwfA6LAYbzOdhbe+zPKaNvK+gIFKWJSRJWFQQ6cvFOf/9F9Gy4xHS/YM88Y17ENvCpiDSqeVqCiLJZeY5G5R8wRylMMYodGdD5edgLKAkp0j7W9ME/imNVhRIfn81THYjh4KIwbKzwePXYYO3laTcQqIYIF10Mpd1EUuJzMVV0mnFlkZRyBZMZwOAw+nA5XXhcjvKsMFFW1SmI6IS8hRo88TtgsjYHPmxSVMQWUjrYxSSQ8Qd8uBtC+OKBPXoy57VxKNrGaWP6ZTPjL6cnkyRjOnOBkEU8Id8tHUF6ev10NWqsTYyS29uO569W8ht2056dKqcRlHSH6M1QOj4NXD8Jkban8FTM13sGxcraRSaRktbkLZOPyetlzg5uo/uvfeR+8dDJPeNkZqI4w55iJ60BvH0ZzHWcTJ/n1jFI4/nGB+KITskWjsDC15zzWrW0VjGeqRbch74MY5wmFCrDhYwGLWcoAGWv6uh+r71YMOB+Bqs39cbsVgqbDDf9An2bQ3DhuouhgOBDYavQRAXdDZU+xpsiRRUOhuqYYN9jEIoOxyszgbMUQpF0TsbSqUKbFDV8kiFquGf3Mdbb7yIcGyUnWvO5itv/A450a2vrVStZiKFtbvB/DCnau21WLmcBa698iuctulJ4kkf77/+veza11f/+qkZibnIB4E1zqWeU6KWJLLeMWr7IpYOG5ZS1bChnu9hwWPUcVo0a2n1tAIOmqbdA9wzuOG0ty3XMY+G6+9o6Wqod1utn/GRABuq960FG+xdCkuDDRUgAIpa+U/diL6sBxsq2+uPURgvfsa52gU8KwcbJFlCEAS7INIhVjoc6ggifcUU533wYqJPPUimZxVbvvEzpM4oDrGAUyzYnA1SMWcXRNZwNuiJFJXOBgM2qOWuD0HUW0ZFGTr+JYX/7AxaQSD1g3Uw2V6BDcEwSqCFkstP1hMhJYdJlALE8h5SeZnZpJ5GEY8XyZQFkUYahRU2SA7dmeANuPH6nESiblqjDtpaVNr9WULOlA02lMbHKM7FSY/PkJ1Nmc6GCmwI4e1px9Haqkdftq9jTOxjKBZkMiYxPJpnaiJlplEIYiX6sq/Xy9oehS5/gv68nkaR37GDxJ5RvYsiX8IVcBFa1Y63rwthwyZGO5/B1rkentwN4+NJZsqwIRQNsGYwzEC3wMltw/Ts/wv5fzzE7FN7ycWzuAJ6GoV82tnsbHs226ZaeeSJPKNDc0iyyKrBKOtWH4KXqWM0hqpZR24Z65H1Do+5HjkaAUKjdbSBBlierobq+xysHNL6/bLCBsHqa1gCbLBsr/Y22ASRy+BssI5R6KDBYXM2WDsbbGMUZdhQ6XDQYcN8Z4NgwgZznKJUGaMwRio8U8O87aYXEJndz56B0/nyW75PVvJaZJCVMVXresvqbYD5a6p6Mkbjd+dy5LjuP7/EqSduYy4e4H2fei97h3sa7mpY6ifn9bwNi8GGWnUgIxRLTaSY95hHK2w4RtcjTyvgsFx1NEAGWB7QsNTjNGHDgcOGyrErvgaowAZNww4Sao1RNAAbrFBCPx9ra9/ywYZGBZFWZ0MtQaRPzXDuhy6hbctfyHb26bCht70iiETvbHAVU8iFNGIxb4MNNZ0NphzSGKNQbS9uoiwhuQQ6/iWB75lZ1LxA6s51CLNdSAGPPkYRDKMEo+R9UQpOP0lHRIcNOQ+xjEwqq8OGWKJEIpEnlymSSeZMQaQVNri9brwBN8GwG7/faUZftvuztLlmCZTm9DSK6RGU8THy41Pk5pJkZ1Oms8HhceD0OfG2hfD1deLs60OLdpJqG2RM6mN/LMy+cZHp2QKT4xXYIDtkXF6XmUaxtkdhbWiC1twwvv2PU9i+jcTuYVITcZSiaqZRBDasR+tbw3jPZp6K9fHEbti/N04ylkEpp1GsXhvm5LUKq4KT9A3fR/EfDzL75B4bbHCefja7up/D/Xvb2bMvz+j+OURRYNVglDM3wvrQngWvvWY166gu4dgEDcsFGIxabtAARz9sqHXbgcKG6m3VzgYreDAEkEsWRApiY84GSUIrJ09YnQ1GIkVljEKsOUZhTaRQNKHK2SCgqvMFkWq5w8EqiDQ8DmZng6LhnR3nLTddTOvUboZ6T+FLb/sBaclX6WZQ1HIX6fxEiuo1VvUoxULlcef4xH9+gZOP38nMXIj3feq9DI33UHE2HFxXg1HVPolqCNLISIN1vXggXQ3GY9U6XiOwYbERiupj1j3OMTracLiqCRwaqKMFMFjrUHc1wMr7GvR9j03YYP7nboENqnWEogHYsFAaharon9zbOyBqCyKXq7PBgA16h0PF2VAtiKx2NjidIk6HLoj0qDme/9GX0v7wH8i1drHl1p8i9PfosZd1BJFiIa/DhmwaLZet7WwolPSxCgtsqIxRiEhugc53JPBuzqLmRFLfW4cQ70QKBRG9PrOzoeBtIeNuISsFyp0NXuYyDmYTIumsHn2ZjOfJJPPkc0UKuYLpbDC6PwzYEGrxEIm4CQZE2ls02svOhkh+DHd6GsfUEMrYCLmJKZsgUlU0HB4H7pAHV8iHr6cdZ08Ppf/P3puHR5aXdd+fc2rfU5V96+y9L9Mz3T09CyiKLIOoiA8+Li+gXujDNiDMDIq4Ic4MsgkCPoCovFwKjCgivoggODjMDLN3z3Qnvac7SWdPat/rnPP+cZY6VamqVNZO9+S+rlxJTp1z6lS6OvnVp+778+0cIO1vY9LWw3hUTaOYnMwQjaSXCCIDQTddnW76O2T6A3N0Roexz14hd+4MsUtXDWdDMY1iJ4VdN7EQHORMdAfDoyJXRqOE52IosqKlUTRwcEhhv/c8jdMjSCdU2JAOJ/E0+/D3tOM4eiuXu1/KU2NtnDodJzyfQJYVdvQ3cnS/yBHHs/iGn6n5/FtrCYKAIGwvLLZru9ZS6w0Y9NoKoAE2xteg7le5a8G8bS2woZLXoV7YoMdi6oLISrBhRYJIrdOhImzQnQ06bLBYl6RRlEdeSqJN7W4wj1FQOkahiyKN2EtZRJYFtcvBiL0UkOXSMQq1w6GYRpEvKDgjc/zGx+6idfosk+37+PRv/wsJewClCmyQTWstY91VATYsV25Xmvvv+xT7dl5idiHIfQ+8l8mZ1iXPk3pdDdXkiZU6Loq3LY2/rNbdUO2F+krEkJWuaS2wYUXOh7Lr38zuhht5PbINHMrqeoQL5roRuhrUc1batzpsKN+/EmyoBCPMvydrwYby/RVlKbhY6xiFcV+mJIrlYIPha1gGNhT/MCwVE20EbNDHKARRHZ8ocTZosKGWs8FmFXCR46c++Eu0PfE9csFmXvjiv0N/j+FsMASR+WSJs4ir53AAACAASURBVEHIZSGTruhskLJ5pKw6QiEX5Oqw4e0x3DersCH+lSHEmAYb/A3g9iD5Q2oahavREETqsCEcF4nGZZLJAol4ZUGkIAhYbVZNEOnAF3DSEHTQFLIQ8Cq0+LJGGoUnPI4YXUCeniQzNUt6Nkw6nKSQySNLxTEKT2sDjsYg9q4upK4BIqF+wmIz49EgY7OiJoiMk05mDNjgDXpoafPT1OxgoEthMDhHZ3wE++gp8pOTxC5OEJ+KoMgKniYP7uYGfHsGKew6zFjwMOOJRoYvW7g8qqZRCIKAt8FNT3+QQ0MCB/wXaL7wGIWL51g8fZF0OIWn2UfjTbuxDu3mSk8xjWJ+OoYgCnT1hjh6wMpRz/N4n/ou8bMXaz4H16Vu0BbG7dqujaqNAgywuo6PrQIaKh1Ty9dg3r+8q8G8Xz2wwbx9rbBBH4Uwj1EgVgASKxFEikJF2IBorTxGIdpKYUOlRAoNNkiKxYAN5jEKSdFdDaIxRqHCBnU9Zx6jMI9TSKYkCklSsMfDvPkTP0v75GlmWnfyqd/5V2LOoAEair6GYiKFWRJZMkpR5kOQa6y33K40D/7eJ9kzOMrMfIh777+H6bnmJc+Teroa6nnnX7+OlSZSLFcrS6GokCKxjrCh1rr2WsIGo27Q9ciLHjhc74BBr2sBGuDawIZaXQ3lt282bDCuaYWwofjLu37YoJTMCdaGDaX7rU4Qqb8o16seZ4NZEGk4G0zRl7qzoZhGoXY2OCjwE/f/Gh2P/n/kAiFOffFbSDsHcFpyBmyoJIgU0klVEJlKVnQ26GMUckH1Neh/2EpgwztjuG9KI6dF4v+4EzHRqsIGnx98AWS3j7w7RMoVImFpIJr3ksw7iKRtRBIikZjZ2aDChlw6p8qiTLDB4XbgdNuNNIrmkJWWBokGV64kjUKcu4q8uKCmUcxFSC3EyadyBmxwBT14Whtwd7VhbWpC7uwj0jjAlNLFXMzD2GwxjSIRS1HIF4zOhqZWHzt2OGlrVBgILtCZPIvzyinS586Tml4gMR1BLkg4Ay4CvW24dnQi7z7MRONNDM+1Mj4jMHopSmQuBkCoNUBbu4cDQwL7g5dpvfgY6WeeIT4+Q2ohiSvoJnRgCG65g/Gmgzw12cXzwynmpmI4nDaa230cOWjn1sApAs98h4Unnye9mGC7tmu7rm1tJGDQa6NAA1wb2LBcV4N5/2qwodrtpckS6w8blnM21OxsqOZsEISKsEGxWCvChmrOBqPLAbFkjEJCRJItJdGXkiKosEHSRilkwQQatK/NHQ3mRAqtu0FMxHnTJ36OrrETzDUP8Km3/htRd5MBG+SC9oaPXCrlVt8Ukiq+qQPLvfAV8bhTPHDfJ9k9MMr0XCP33n8PM/NNFUFD6XNj5aChfJRC/7pWIkW9tRrYsFGdDVseNtzA9aIEDgrboGE9zrXVfA3m26t1P1SCB0tuW8fOBn0soh5B5EphQz2CyFqwoZh6sXLYoFcl2GB2NpQLIm12daTCZrcsdTZogkiHReaOj7yF7h98nbzXz6nPfxNp7y6cYg6nCTYYgshcSoUNmbQqiMznkNMp5EzGGKOQ8wU1iSJfMGCDLBUfo8VmQXSItL4jgvuQChsSX92NEG/C4teiL/1BCv5GCg4fSbfa2RDLq86GRNZKOK6mUcRieWLRDJl0fkkahRk2eAMuXB47oZCT5sais6FEEDk3qQoiFyKkZsKGINLc2eBuDuDqaMXatQM51EqkaYgppYsrET9zYXFJGoUBG9p89OxwMdBeoM0bpSt9FteVU4YgMh1OIeUKBmzw7N2N1NXP1ebDjCy0c2ZUZmYqyeJsDFlW0ygGBvz0dsIBUxpF+Pw42XgWZ8BFaP8A4i23cTZ4O+dmQjx/OsP0hJpG0bczxFCPhVtDI4Se+y4LT5wgvZjAFfIued6td23Pam7XdhVrM+CCXqv1V6wHaIDVuxrKj13pCIX5mNXGXurbNhs2mAWRmG4vGaMQxKXOBkFYOkYhiEucDQpCibPBPEahdzaosMFqjFGYYYPx2QQbiv4GSuIv8wXd06CUdjbI6mchk+bX/+qX6Bl9ksVgN3/11m8S8bQWYy8L5R0OKmxYztugVzV3g9ed5IH3fYJd/VeYmm3i3vvvYS7chP66up7xiZV0NJg/15NIoW5fThRZ4f+M6frKwUW93RIl91HjMdYLGyr9f7+WsOFGXY+8KIHDjVBbGTQsd86NgA2VwEG1fZaDDZViL/XvzbCh+MuZ0i4FE2xQjGM3Dzbo+c5myl6ps0F9bLVhg/51vZ0NurPBarMuEUSaOxvsdgsOR7GzwWZVYYPTpnD803fT/+2/R3K6OPXZf6Zw8AAuS6ZEEKk7G8R8Fove2aA5G5RcDjmVppBKF8cocnnkfAEpVzBggyLLxgLN4rbQ+rZFXAczyCkLia/uRky3IvpdiIEG8DVQ8IXIuYNk7H4SlgYVNmRdRFI2EmmBqNbZEIuVOhsqwQa3z4kv4MTns9EYshppFM2ORXz5RbzRCSxzqiAyMzlLNprQYEPWcDaogsgG3B0t2Lq7yXf0k/S1MyV0MRYJMDYtsLCgplHEw0kK+QI2hw2n20FTm48d3W4G2gv0+6dpSo/jHjtF9tw5ohevkpyLo8gKdq8T/44WvPt2kRm6mTn/ACOLHZwZVRgbjZKMpZFlhYYmH/2DAQ4N5OnxzhhpFOGzY+SSOSP60nrLbZxrfglPjTYyeiXD9FUVNvQPNXJ8r8SQ5xLNz3+PyFMnyIQTNPS14t27Ez79T2xXaQmC0KsoyuVrfR3bdX3XZsIFvdYiydxI0ADrO0JRfh1rTaLQb98s2FC3s8Hc0VAiiLSUOhvEYtxlyRhFmbPBnEyhdzaUOxtktJEJNEGkrI5S6LBBH6OQ5CJs0H0NkqyKIvMFih0NJc4GFTYomQy/8plfYfDsw0T9rXzmbf/Ggq9TgxL1JVIARgSmuWq9oPV5kjz4vo8z1DfG5Ewz9z14D3PhxuJzZpnxibo6Gqq8GK+VSFG6/9pgQ81rq7O7YaNgw3ZtTG0Dh+us1hM0rOZ8a+lqqHb7tYQN5fuvFjaY78fc2aBuWx/YYICEZWCDYqRarG2MotIv6HpgQzVBpO5sMAsi1TEKAasFHDY48sXfZ+jrn0G22Tn9qa+RP3oUpyWLXcgZgkhbIV0co8hlETLJUmdDLoeUySKls8YYRS3YYHVbaHlHGNf+Uthg8fsRnC4VNvgbyXlCJJyNZEQPsYKPaNbJYtJGOCaQTBXTKFLxLOlkhkJeWuJs0KMvVUGkQxNEFmFDMKMKIq1zE0gzU+oYxXyEXCJDPpU10ihcQTeOgFeNvuzeQb5jgMXgAItKI+MabJicTBOPZtQ0ipza2eBr8OAPuujsdNPfIdEXmKU9Mox95oqRRpGciwNg9zoJ9Lbg3buT3NBhLnsPMB4JMjIKV0ajxBYT6NGXvf0BDvRL7HWdIzhxmvzJZwifUaMvfe0N+HrasN5ynEvtL+HpK82cGo4RXUgiCAI9/SGO7lW42fIMntPPEnn8KeKTiwR2NOG78w7CvUeA9y95Lq5bCQLU+U7Q+t6t4AU+BFwAvEA3cJ+iKMkq+z8A/J5p02eBt2u3tQF/BDwPtAN24AOKokgb9gC267qqawEWyut6Aw3q+bYGbCi/bb1hg9HFUA9sKHc21BJEmscotG6GkjEKvbOhbIxCEm0lzgYFwRijqAQb9DGKEmeDJGhdDhiwoRiBqaVPaJ0Ncllng1wo8Etf+A32vPAfJDwhPvN//pWZUB9Svpj0VSmRosTZYOokrdTdsOS5Jgr4PAkefN/HGOwZ12DDvcwthtTnwzqNT5irvNui2O2wdH1Yj7ehXtBQrVNiPWBDea0UNlzTUYprtB7ZjNoGDtdJbXXQsNw5q912o8CGzRijWCp+XBlsKP486ocNK3E2COJSQaRoEZcVRDrsYLfC4a/8OXu+/GFki4XTH/0yqZe8FLdZECmXCSKzaYRcRh2jSCWR0ymkdBpZS6SQsjnTGIXqa9DHKEphw6IKG5IWEl/dg5BqRvR7EXx+cPuMNIqkM0RCCJAquIhkXIRTNiJxgUhMIpmSjDQKVRBZKOlssDls2Bw2I/oyGHTQ3Ggh4JFL0ig8i2OIsQXkmSlVEDkfNQSRilxMo3C3BHE0BbF3d1Po6CMc7Gcy385c0mOkUSzOJkgnMyWwobnNR3Ozg8FOmYHArJpGcUkTRF66SmImhiLLhhfCt2cnhZ2HueI/yMhME+PTCldGo0Tm44iigCfgobe/gQODWhrFuUfJX7pIePgSmWgab6uf4IGdiEO7udz1EjWNYjhBeC6BxSLS3R/iyD6BI45ncT31X8TOXSI5E8bf1Yj/jtu4PPQqhhc62PC6Nu9yPAQ8rijKpwEEQfhT4PPAr5XvKAhCI9ADHNU2KcBp7TYb8J/ARxVF+bK27UvAB4E/2ODHsF1bqLYCVDDXesR9ruQxrcbTAKsboSg/biUjFOb91wIb9O06bFgqkVwH2GDap+40Cl0QKZZ2OBiwYUn0pRXFHH0pWFDKxihkQYu9xGoIIiXFlEIhW4wRimLspajCBVnvatAEkXIx/jJfMDkbJIVCXkHKFXjd3/0Oh57+Z9JOP3/9f77B1ebdGpQoTaSQTWuwJW/wlI1S6FXtBa3fG+fB+z7OQM84E9Ot3PfgPSyEg+s6PgFL13z6NRevr3oiRa0qhw31djQU73d52LCa7o2K59mKsEGvG7TrYhs4bPFab9CwmnNuFmwoBw2Vjl1v2FAECVsbNuh/3Go6Gzaws0Gvms4Gi7pQWU4QabWK2G0mZ4MN9v3LX3Lgcx9AEQTOPvAFkq94JU5LDruYKwoipawKG3RnQzoJuQxKJqU6G1JppHQG2SSI1DsbFFlNpIDi4sziElXYsE+DDf+4GyHTjMXvQww0oPiDyC4fWU8jKWeQuFAqiNTTKKLRPJlMgWQiawgiy2GDIYg0pVE0BzRBpJZG4Y5MIM5NIkcWDUGkGTaIVosKG1qDuLrasDY2IXX0EW4cZFLq4ErYx3wErk5mWZhbKohsbvfR0+2kLSTR3zBHR/wM9svDpC9cVAWRM1EDNjQMdOLoaqew8xBjDYcYmWvmzMUC87NJogsqbGhsC9Da7uHAIBzwX6T5wmOkT5wkPj5DOpzC3egleHAn8i0vYSK4j6evdnJqJMnibByn205ru48j+ywcc5/A+8x/sfjsabLRJN72EIHbb2Vsz2t4ZLSLi6OZqs/H67UEQbgTeDXwXtPmLwNnBUH4oKIoZ8sOeQ+QBhqAHyqKkjfd9svAXuCbZef6hiAIH1UUJbzuD2C7Nr22GkyoVusBGWD9QAOsP2xYD1+Dedt6wYbSfVYHG4zuhSpjFIIJRtR0Nui+BqttKWywWo0xCgRRhQumNApFsCCJVu3DVuJs0DsbJEXrctBGKQqKBhpksywSbZSi6GyQZD2JQkGSip0NstHlIHPXP76HWx77Mlm7m8//9j9xpeOQmmilFEdazYkU5vHV8jd4zFVrbRXwxXnwvo/Rv2OC8alW7nvwXiLRkPHas17QsJyPoBJsMO9XK5GiWq10fGIlHoiS+1nDqIhxjhrXtSVgww1cLyrgIAjCa4HXtnUNXOtLWba2AmiA6xc2lGzbINhQydkA6wcbJO3d+FqwQSrosZi10yjqFUSavy7/A7ecs0EdG7DUJ4h0CKqzwQ67v/MFbv7k7wJw/o//isTPvQ6HmFcFkSZngy6INDsbyOXUUYpM1hijkPP5JZ0N+uMyw4bWuxdx7skgJ6wk/2kfQiZkwAZ8DRS8IQoOrwobLEFieY8miLSwGCumUSTi2WUFkR6fE7fXTqixmEbR4k0RsCXUNIroBJbZCVUQGY6aBJFZAza4gm7crUHcnW1Yu3YghVrVNAqpk/GIj4lphcVw3hBEmmFDS5ufHd0uBtpztLkjRhpFRhNEZqJpI43C39uGa/dOCp0DTDTexMh8K2cuyVwdj5KMpgBoaPbTP+Cnr10uplE89yzh8+PkkjktjWIQDt/OGd9xzk8FOHk6xczVKA6njYGhIEM9Asf8pwg8+18sPHWSTDiBq9FP4NjNTO5/NY+O7eD5UzGS0Y0HDittQ12HehmQUxRlRN+gKMoFQRBywKuAcuAwBNwE/CYwLwjC2xVFech0rlFFUWKm/V9AHdN4KaUgYru2SOnrkQ6r/bqBCdXqWkAG2HzQUOm4jYANlW4rhwnmfVcLGypFXy4niDRgg9nZYPY1iIIJOFiXwAbKxijUzgZryRiFrAEHcxqFTHGcQo++NPsaZFlA0r42IIPR1aD7G/RECkXtcCgo5AtqZ4MsqV+//Ot/yO3//X8pWO188S1f5XzPrYazQZdB6h2n6nprqbehVnfDkueXIOLzRvjw+z5GX/dVxqfaeN+D9xGJNlR8zlWDDfW4CGp5G8phQ9VzmABBtfSJlcKG8vsrv8665Zc3CGy4BuuRTakXFXBQFOVbwLcG9hx5y7W+lmq1EaBhNeddK2iodns9IxSVjt1M2LB0n/pgw3oKIiWpWspEKWzQ/+CtBjbU6moonw8shw2CKCxxNtQSROrOBrtdxG7Toi9tMPTDf+TIg78DwIX3fZjIL/86TjGLTcxjJ1vibBDzGRU2mJwNSi6LlEqrH9oYhZQrlDgbymGD1at2Njh3a7DhoX0IuRZEnxPRF9BgQ5CsO0TW7jWiLyMZF5GUVRVExotpFJUEkerPw2LAhkCDC6/PRlOwmEbRbFcFkZ7oVQM2ZKbnyEYTZKNJAzZYnTbsHgfu5gDujhasXd3k2vtJeNuZUroYi/oYmxaYmk4RDaeLgki7Johs9dHd7aS/LU+fd4rG1HhJGkVqIYkiy8U0ij27SA/ezKy3nzMLbYxckhm/EiUeTiKKAg3NfgaHAhzqz9LjnqL9ymNkTz5L5PwE+XRehQ37BhBuvp2zwdt5+lIDV8YzRvRl/1CIY3vyDDlHCZ34HpFnXyAXT9Mw2Iln905mDt3FY5P9PH86QSaVp6nVx3VaTYIgPG36/vOKonxe+7oTqNR5sAj0lm9UFOUNAIIg7AY+AXxFEIRZRVEe1s61WOE8VDrXdm2N0tcjuxzuLbseqVbrBRj0utagQT3n+sOGlYxQ6PtsCmywWrRzrEIQWWmMogQ4VBZE6rBB72QojlFYkS1qJ4MxRiEWZZH6GIXubdBhg97VYPga9K4GpQgbdF+D8WHqbNC3FTsbFF7ybw/yk9/+CJJo4e/f/CVGBn8CKa92M+iwQU+kKOkqLf8o6ySF6i9oG/xRHrjvY/R2XWXsaju/9xf3EY4Gljw3VgsaKt2vueu1ViIFLO1uqBVxudwIxWo6G1YLG0rOsYqf0Xatf72ogMNWrq0CGuDa+hrKj1/aCVF7v42CDebvq8GG4gv7dRij2AKwwfh+GUGk2dlQTRBpdjbYrCps6H/iXzn2p29CUBRG3/lHzL/5dwxng40cDilV4mwQchmEbAoyKWOMQsnlTPGX6hiFImmxlybYACBaLVjc0HL3Is6dGeS4lcTX9iLm1DEKwe0BX0CFDZ5Gks4QacFDLO8jlnURTqrOhmSqNI2iXBApWkTV2WC3GWkUwZAdv89ipFE0OcIE05OqIHJ2HGl6iuz0nCGIzCVzBmxwBT04Ah4j+jLf3sdCwwCLUshIo5iaSrMwmyCdUJ0NVpsVX9BDIOiiu8tlpFG0LZ7GNjtG7oIKG3RBpMPnxL+jFc+enWQGDzPq2s9EuIGRUZi4EiO2mFDP2eCmr9/Pwb4ce21naBgfIX9CT6PI4m1rwNfXieXI7ZxruoOnRhsZPhMjtpjCYhHpHQxybE+Bm+UncL1wgujTJ0jNRdT7vu125nqP8ej0Tp57IUUilqW7J8CegQ2m/QIbNTM5ryjKkSq3ZYF8he2idkUVS1GUM4IgvAb4H+AtwMNVzqX/0K7vt863a0vUegMGvdYbNMDGdDWUH1sNNKj7rU8Shf79RnQ2qG8arFIQWZ5KYRZEmp0NOoQwjVEgiCp40Dobqo1RlMMG3dlQUCzGGIWkCEXwYAIORVFkqSBSdzYUCpQlUshIksKx//w0r/zGHyMLAv/w/3yBk/vuMroZKiVSlHeV6g4ERSldT9V6IRwMRHnwvr9gR+cUV6528HsfvpdILLCm8YlqVamjdblEinq8DXqt1NdQvN/KP6/VOCkqnfe6gw0btx655rUNHK5xbRRoWO25t6ocsvz2Gxk2yFIliFDmbNgE2LDcGEW5s0EXRJqdDWqHQxE2OB1qIsWOk9/ltg/8MqJUYOy33sPMW3+3xNmgCiJTpc6GXEaNvkwlSxIpCulsSWeDChvk0schiiWwQYpbSX51H2K+WU2j8AfA5aHgC6mwwREkToB0wUkk62JRgw3hqEQqLZGI50jFs2TSOfLZApIklcAGp9uBw2U30igMQaQGG0KZSdzhCcTYgppGMTNHej5KJprWnA2yARvcLUEcjQ1q9GV7HwvBQSazbcwlXYzPCExPqYLIVDxNIV/QwICHljYfLc32kjQK2+gwOU0QqcMGd6N6H949xTSK4ekQV2cUxi6raRQWq4WmNj9t7e5iGsW5x8lfvED4zGWy8QyelgDBQ7thYA+XWu/g2bFmRs6qgkirzUJ3X5AjuxUOW57F8eQPiJ0fJTkTxtvZhPf4rVzqewWn59s4cSpDNJymo8vP7Qck9jqGuQFrHNXHUF4h4EqtAxVFkQVB+Bpwl+lc5XOCeoZazXNt13ZVqo0CDLA6F8VGgAb1vFtjhKL89iUdhusJG9YqiBRVV4PhbFgCG6wGhFA0oGAeo0C0IItW43u1o0FNotA7GwxZpFIco9DhgjmRogQ06OMTcqmvQTY6G8yflZKPQw//HT/7FVWn89Avf4qnbnq91s1QjCCXFaVkbVYOG0q6BuTqHge9goEID77vI+zomGJ0vJP3f/Q+ogk/+uvs9QAN1cZnSwCJXBylMO9bb9ULGiolXFT6Ga04ZaOaXPIGfdF+Pdc2cLhGdaOBhlq3X2+wwTiuTthgvt/Vwgbd11ALNkiSbOyzUthQjxxyOdiwdIzCUuJs0KMwzc4Gq1WNvbTbioLI9uEfcef7Xocln+Pqr/w2M/d8AIelUOJsMAsiLZkkQjYN2Qyk1VEKKZVWnQ3ZnJZGkS+BDTqtF0QB0WpBdCm03r2IY0jtbCiBDT4/iq8ByeUj5wmpsEFoIJb3kMzZiaSsRhpFLJYnncqTiGWWCCLVx2/F6Xbg8btwe2xGGkVLQCLgytLsjNCYncSjCyLDC2Rn5gxBZD6VBcBitxppFK7ONizNLRTa1TSKqXwbY2EP8xGYnMqUCCJ12NDc5qOn20F7SKI/MEdHdEQVRJ6/SGp2keRcDEVWcDd6CAx04ejsID90yEijOHcpz9xsilg4iSCKNLcHGBry0tsmsc97gcbzj5M6cYLk5DyZaBpPs5/QTbsp3HQnVwN7eXq8jdNnkoTnEnh8TlrbvRzdL3CL4wSeZ77P4skz5JMZvJ1N+G8/zuVdd/HoaAcXRzNEIypsuPMmOFb4H2ynnmZjq7iY38T6NvARQRB2KIoyBsa4hF27bbnyo3oa9HP9liAIdkVRctq2g0AG+O/1veztutFqI+GCXqt1VKwVNMD6dTWU77PZsKFcJFna/bB+gshyZ4N+zBJBpMVSOkZhgg2KHoFZNkaB7m0wjVEgCCpoEC1IgrpNFkQkxarJIYtjFJJS7GzQYUNB1tMoBGRFQC6JwFQhg9rhoBifJUkxPu99/CFe96W3AvCNX3yQR299o9bNQEkihb4209df5rVX+SiFXtVeDDeGIjx431/Q1TbN6HgXv//Re4nF/RWfc8uNT4im555c48X8crChfP/luhtW0tFQ6VxbobNgK1zD0rom65FNqW3gsIm1kZBhLeffyrBhOdCwZPs6wgbz+TfS2SBJlboXlsIGxbjt2sAGi8VSFTbonQ06bDCcDTZVEKk7G9pGn+Yn7nkN1kyK6Z//Na5+4EGclvwSZ4O1kMWaSyJmU6qzIZWEfFZNo8hkjDEKKV9AMtIo8gZs0B+HaLVg9Yk0v2MOx0AGKWYj9dABxHwIi0+NvlT8QQreIHmHz4i+jOa9RNJOEllLSRqFLojMpHIGbABKBJFur5NAgxOfz2akUTR7kgRsCUK5aS2N4qohiEzPRchG1TQKKIUNzo4WLN09FEJthEMDTEodjEe8jE8rLC7mmJ9JkIimkAsyDqcdl8dJU6uXnm4nA21Z2txhOhNncYwNk7lwUUuQSCIXZFxBN/6edpy7dpLvGDDSKM6NFpiciJGKq7LGUIuPwUEvB3tS7HBcpeXiY6RPniB6aYpcMou70UvD/kGkQ7cz7D7G+asBTo2kmJ+OY3faGBhqYOcOhSPu5/E9+z3Cz54mn8zgavTjP3aE8d2v5keXu3j+VIx0Mkdru4/jBwSOyY8gPPIdImNTbHgJm/tuiKIow4IgfBc1AvMBbfMbgP9QFOWsIAh3A5KiKJ8RBOFm4CeAv1UUJSoIQjPwc8AvaMd9F7gEvB74iulcf6coSmSTHtJ2XQe1GXBBr7WIMDcKNKjnXltXQ/n11TNCUWm/lcKGpXChPAZz5bChkiCyJImifHyimrPBDBusVnWMQkup0OWQOmyQRRuyxVqMvhS1UQoNNkhYkI0kCosxRqFDBkmxGF0NsqKlUmjOBhU2CMja15KkORpkpbSzQVt3DT79Lf7XF34DUVH49mv+kIdf+jYUSTYcWiVrLAMslHob5BV2BDQ2hHnwvg/T2TbDxbFu/uCj9xJL+FYEGsQVvCCtFsdZCTbU292wWtiwkkSKemql3Rglx25J2KDVJq9HNqu2gcMm1EaDhrXcx0aNUKjnrrT/xsAG8++x9YIN+jYdEujHrvcYRTXYoHc0rBQ2yKY/IiuOvawDNlhsVkRRWOJssFgEAzbozga7DRU62KBl4gVeZ3ot9AAAIABJREFU+q5XYUvGmHvF67j8oU/ituUrOhvEQhYxk0TMJA1ng5LLIWvdDeYxCl0OaYYNoDobrH4NNvRnkKI2Uv90AFFqRvS5EPwNKJqzIeNuJGP3GdGX0YyTSMpKPCWUpFGUCyL1n5kOG7x+F4Ggk1DIjt8rGmkUTfZwURA5N0lheors7DzZaJJMOKE5G9QxCofPiau5QY2+7NpBrq2PuLfNSKMYm4KpqRTxaIZENIWUl7A5rPhDXgINLiONotczSSg5gVMTRMavTJFaSKDISjGNYs9uUgM3M+vuZWS+lbOXZSbGYiSjKQRRJNjkZXDQz4GeDHuE0/iunCH7/AmiF6+ST+fU6Mv9Q3D4ds76buWZSwHGxtPMz6iwoX+wgVt3ZxiwXaLhxPeJPHeaXDxFoK8D1+6dTO1/FY9P9HB6JEEuU6CpxcvRA1ZutT+B7dHvE7k0gc3tqPp8vc7rl4EPC4LwPtTJzW7gV7XbfgqQgc8ArcC7gXcJgvB3qL6GX1QUZQpAUZSCIAivBD4kCEIb6qhGBHj/Zj6Y7do6tZlgwVxrTduoBzTA+o1PVDpXvV0N6r5rhw3VYi/142rBhpLOiWUEkat2NpQLIis6G6zFr0vSKNTuBvMYhVw2RqEIYuUxCqX0QxVCWozOBlnzNchaZ4P6dbGzIV9QOxtkWVG/NpwN6jqp59T3+d9//atY5ALff/nv8t1X3ItUKMIG3dtQIomsMUpRvvaqVI3BRRU2tM5y8coO3v/Re0mkfZinCNYDNFQapSiua2tLIqF6d8NKPQ3VYMN6vNi/YWHDDVzbwGGDajMgw1rupx7QsNz519LVUOn4rQIbZNM5asGGYjfFBqVR6Ne8wbChZKGj/bFbztmggofSNAqrtZhEUSKItEPT7Dl+8t2vxBFdYOElr+TSRz6H0yFXdzbkMojZNGTSxhiFnM0hpcvGKAqSMUpRfDzqosnqF2l+5yyOvqwKGx46gCirYxS4XBpsCJF1BUk6gpog0kM0q8KGsCaIjMXyxOOlgkgzbLA5bNiddjw+J/6Ak1DIQVNQpMGrORvsFQSRswuk56PkEukS2OBu9GEPeNToy44ucu39zAf6WSyEGIv6GJ9R0yjC80myqSxSXsJis+Bt8NDa7qW5yUZ/W55e7zStC8OqIPLiBeJXpg1ngw4b3Lt2kh64iVHHXsYWApwdVZi4EiMRSWLRBJH9gwEO9GXZYxnGd/bH5C5dInJ+nHw6j68jhLe3E+Hwcc6FbuPpS0HOnYsTDaew2iz0DTRwfE+OQ/kncZ49Sey558lGE/h723Deficz3Ud4fGqA54dTpJN5evsD7O6FO9xP4/rxd4ieG8Xd1ohrz27gy0uet+tWAuoCepNL6z74nSq3/YLp6/8AepY51wTw5vW8vu3a+nWtwIK5NgsywMZ2NVQ6fiUjFOb9y0cozNs2GzasWBCpgYUS2FCPs8HczVChs8GADbq7QTSlUQiqLFIfo9DHJ/TuBhUwmFIoZBU0FCMwNVeDLJSmT8hqIoVc1tnQefZRfv2Tr8dWyPKjl/42//aaP9H2VYwRCvM6zLwGK4cN5VXtxWxz4yIP3PthOlpmuXClhz/4+L0k0t7i82ONoEEu6x5YiSRyuaoFGvTrrgUAVgsbBFGo/DO+kWHDNVqPbEZtA4d1rq0OGmBrj1CU314vbKh0zEbDBqPDYYWwQRca1oINhsthnWBDtV+y5bChXmeDaIrA1McorFZBhQ0mZ4PNCqHwGD9598/gnJ8icuylXPjkl7C7BJxiBgcZ7FIGm5RRYUM+rTobNEEkqWRxjCKbQ8qoaRT6GIUiyyVpFGbY0PLOWex9WaSoneRDB7DITYg+L/j8qiDSGyLrDpFwNqqCyLyTSKaYRhGNSSSTBSONokQQKSsGbHB5nDjddgINLoIhO41BkeZAgaArq6ZRZKZUQWR0HmlmiuzcvOFskHIquNAFkS5NEGnt7CLfMcBCw4AqiEw4mZgRmJxME55LkoqnkQsyFpsFX9BDa4ePHV122oIF+vwztIeHsV0eUQWRo5Mk52IAeJp9uFuCeHYNkhk8zGX3PoanQkxMS4xfiRGPpLDYrDS3+2lvd3OgL88e+zkCZ39M8sTzJKcXycYzeNuCBA7uhv49XGi6nWfGmjhzLkFkIYnVZmFHbwNHdksc4hnsz/43sYtXSM1F8XU14z52nPPdL+f0bIshiOzuCXDb3hy7rWfwPPZtIqfO4wh4cB6/g6s9twHvqvj83a7tulFrK8CEarVWyADXDjRUOt9qRijMx9XyNejbyvdZC2wouZbVwgbTqEVNZ4NQ7HCoNkZRDTbo0khZtCGLxe2S1t0gCaYOB3NnAyIS5vEJiwYa1AhMWdaTKMy+hqWJFPmCChvyBcWIv2y59Cxv/MTPY8+leOrWX+Off/EjxbFW0+iE2dtQsgYzdQtA8Q2hWtUcWuCBex6kvWWO85d7+cDH7yWR8qj/hjWEkCsZnTBfT6VtZkBSPtpQ7QV8PaChWtUriax47hr3e0PDhhu8XlTAQRCE1wKvbesqF3qvrTYLMqz1/tajq6HW7VsdNpTvv1bYIJuOXQlsKAKKrQ0bajkbRIuojk+YnA06bDA7G3yxaV727p/BPT1G7NAxLnz2H7B7LTjFrOFssOeTRWdDJqlGX2YzoEVf6mMUck7zNZjGKMyUXl9AWXwCLXfPYu/JIkXspP7lJkQpgOj3IvgbkH1lzgb8xHIeknk7kVQxjSIazZFJF7TOhmyps0GDDU63A7fPicdrpyFopymkCiJbPUn8tjih7FRREBlZJDe7QGomXOZssBhpFK7ONsTGJi36sp+pXCtji27mwjA1nSE8nyQRS5XChnYfPV12BlrStLrCdERHsF0ZKQoiZ6MosoK70Yu/rwNHVxe5ocOMefdzZraR86M5QxApWkSa2vzsHPTS25pnr+scofOPkX7hFLGxWQrZAp6WAA2HdpM7eCenHLdy4aqHkbNJIgtJ3D4nbe0eju5VOGx9DtezDxN+4Rz5ZBpvRxOe48cZHXgFj11s5cp4llg0Q9cONY3i5uz/YHv+WWJnL+EI+vDcdjunO1/N6fFQxefv+pVww85MbtfWLX090mGzb2m4AOsDGGBlkAE2HjRUOsdqRyjM21cbe6nfthZng2jV9qmjs2GJIFLQUijMzoZlBJElsMFqK45RCIIphcLU2SAs/ZAoCiIlxaLCBlP0paSoHQ2S4WsQVbigJVOYOxvUJApTZ4PW7VAoyITGhnnzx16DMx3j5OHX8ZX//WkK2npMT6Qol0SWeBsqjFLoVd5hoP4biDSHZnjgng/T1jzP2dE+/vDj95DK+Er+5NTb0SBoB5UDjvJRDqUELpR6JurxNqwFNKjXs7oXKeU/h/K161pgw/VTN+565EUFHBRF+RbwrYE9R96yPudbj7Nszv1t5AiFev5K+28ebKi0/0bBhpJrXuEYxXKwoUROVCdsKL2WlcMGvWrBBovxtTo6IVpFrDaxxNlgtQrYbILhbPBlF3nZe1+Fb+wciV0HOPu5h7D5HdiFnJpGIamCSMPZkE2rzoZ0EjRfg5zJFscoMjmkbJ5CJociVYYN1oBI8ztnsO/QYMM/34SFJgS/C8HrR/E2qM4GVyMZm0eFDXkP4YyTVFYsSaNIxLJks4WlgkgTbPD4XYYgsjGoCiJbvAka7Qv4MoulgshojNTsItlokny6CBucATeupgacnW2InTsoBFtNaRReJmaWCiLtLjsuj4OWNh/dnQ76WzP0uq8SjI1hv1wURGaiKRRZUQWRfR04du1WBZH+AwzPFgWR6UQWQRBobPExOODh4I4EXfarNF34Mennnyc6OolckHCFvAQP7qJw8HZGnEd45oKbq1fTLMwmcLrsDO0MMNQlcbPzJN7nfkDkxDCFdFaN3bz1KFeGXsmjlzsZOZsgk8rT2u7ltgMKRwuPIDz2X8QmprG6HHiO38ZI78/yw+Eg01Ppis/h9awb1Qq9XVu39PXILqd7XdYj613rBRlg80CDel/r39Wg7n+dwAbj73ipw6ESbFhWELkS2CBWEEQKKnwwwwZzd4MkWksEkeZEioIpArOgdzWYOxuM+EtB63LQEykUtcOhUCqK9E2P8qaP3IUnscDIvlfy5Tf+DZJgQc5LtSWRZWu18qrV3dDaNMf97/0wrU3znLk0wB//5T2kMp6y51XtjgZhhS8+N0ISWbyWyv+3qp1nJd0Ny8GGtdb11N1wPa5HBEHoVRTlcq19XlTAYa212YBhPe63XtCw3P2spauh0vHXM2zYiDSKjRBE1gsbBEHEorVfVnQ2WEWsVgsWmzY6YbNgtYnYbMXOBrtNhQ1Oh+pscElJXnrfa2k4f5JU7xBnvvgv2EJunGIWm5DDXkgvdTZkkoazQc5li2kUmUxJEoUiSWVjFGoahcUPLe+cwdadRQqrnQ0WmhB9fnC6UPwhCt4gWVeQhCNIWnEbaRSRpIVkWiAal4nHCyTiWdLJnCGIlCTVEaH+XCzYnXYjjWKJINK2SDA5iSMxv0QQqcMGRVawe+zY3I5i9GXnDrItvcR8HUxraRQT00plQWTQQyDopLvTwUBbll7PJM2zw1hnxshevED8yhTpcLIENjh37STZf5gZZy9nFlo4f0ViYkxNoxAEgVCrj/5+Lwd60uxUTuMbHSH7wklio5NIuQK+zkY8vd1IB49z1nOUZy/5uXAxRjKaweG00T8Y4MhgikHrRQIn/5voyWHyyYxx31f3vIInxrsZOZskmynQ2OzmyD6BI+ITWB7/PvHLV1XYcOQWLva/ikfPNTI+nsTlslV8Hm/Xdm3X+tV6AgZYf8gA6wMaKp1npSMU5mPqlUOW3146SiEa+y+FC/U5GyrBBvV7ceWCSN3ZsBLYoHU3GGMUQjEOUx+jMMSQendDhTGKclGkPkYhyUIRMpR3NRidDabPcjEC07UwxRs/chf+yCQXB+/k737zy+QFm9rJoKhrOrMkspq3oVp3Q6VqbZrlgXseoKVxgTMXB/ijT95LKu2u/Pwre4G5EshQSVRpvr5qromVVD1dDeq1mK+hPthQ6/+0ubZHKTa2BEHwAh8CLgBeVIn1fYqiJKvs/wDwe6ZNnwXeXus+toFDHXU9ggbYGiMUlY7fCNhQuq9ScX+57JhqsKF4zrXDhiJIqA0bjO0rhA3lpHqlYxTFr4vOBrXDoThGYQgiTc4Gq1UDDaYxCl0Q6RayvPQDr6fx5GNkWjsZ+ZtvYGlpwCFmcZDBVsio8Ze5pBF9KebUEQpjjCKXQ06l1e4GrbNBLkgoUqmzAbQ0igA0v3MGW1cWadFB6usHEYUQot8LXj+Ky6OlUYRIOEIkZB/JgtNIo4jEIZlS0yhi0cwSQaQiK4hWEZvdhs1hM9IogkE7zSGRgMcsiJzCuTiBGF1Amp02BJH5VJZcMgeozgZHwKN6CjpasHR1k2vrY76hn8V8dUGknkahCiKt9LXl6PVO0zI/gnV0hNzUFPEr06QWEoAmiOxpx7VrF6n+w4za9jC+6DcEkclYGpvdiq/BxUC/j4O9GfYIw/jO/Jjc5VGiF69SyOTxtofw37SfQu8ezgWO88xoA+cvJIhH0hpsaODYriwHc0/gPPsCsZOnyMVT+Ps6sB+/k+nOm3liso9TI2mymQJ9/X529yjc5ngS55PfIz46gbu9GcfOnVze81p+dLGd8Yk0bW1uhnZUfCqvXwmoMrTt2q4XSa03XNBrpZBBr60CG6p1NZQft96xl/r+tWCDcS0m2CAaCRRCRdhQtyBSG61AEJY6GwRx+TEKbXxCMXU2GF+L1pIUCkm0qd0NmASRaIJIraPBiMBc0tlQhA6SKZFCdzZIRqeDYnzYYov8+kdfQ9PsRSa6b+Jvfvur5GwuJK2zoZIkstzbAJXXVJW6GwRRoLVxmvvf+wAtjYsMXxjijz95D5mce8mfmbWABqg9SgFLJZHl+y5X9YCGSudZK2xYz1GK6w42XLv1yEPA44qifBpAEIQ/BT6PGt1dUoIgNKKKrI9qmxTg9HJ3sA0cKtS1AgzrdQ3r1dVQ6/bNgg0l2zYANhT3rQ0bViOILP4Rqz5GsRbYUHzMqx+j0McnzGMUgiBUhA1mZ4PVKuBwWAzYYLepokinWOD2D72R1sf/k1ywiZEvfhOhu80kiExjK2Sx5VJY8uli9GU2A5m0MUYh53JGGkWxs0EuS6NQF1LWADTfPYOt0wwbGtU0Cl8DsrcByeUl4wqScISIy34iOQ+pvM1Io4jGJFKpAnGts6GiINKujlE43Xb8AScNDSpsaA4UaHAWBZGu8FXE+SnkSJjszBzpuQjZWIpCVh3JsNitqrOhNYg9FFTTKNr6mA/0czXdynzSxcSMwNRUURCpyAo2h9VIo+jpstHWkKfPN0NbeATb5RFSFy+RmgmTWlDTKDzNflwtQVw7B8n0H+Kycy8j00FDEJmIprHaLJog0sX+3hy7bWfxn3uC5KnTpKYXyKeyeFqD+A/sIbX3dsacu3j2Soiz51VBpK/BRXu7h1t25jkoP439uR8SvzRGZiGGr7sVx9FbOd/xUwzPNnNyOEM8nqV7h4/ju9PsFkZwP/ldYiMXcYT82I7dwXjnrfzwYhfnL6YINNi5dXeWveKyf8e2a7u2q0ptFFww12pAQz2QAa5NV4O6/+pGKMz71QMbqqVWLIENQtlxVkvxXHUKIpd1NlQSRBrJFDXGKASxBDbI5i4H0xiFgqBuQyztbFAqxGBq8Zd6EoUOG/TOBllWYzCXdDZIijZOoSCmEvzqx3+B9vEXmG3dyeff/g1Sdj+yVFxPmUWQpd+XrsOgvm6B9uYZ7n/v/TQFwwxf2MmffOoeMjlX6XNvDaChHHJUAghmb0OlUYrlqt6OhnqiNCuev8b/6c2CDYJYOQHjxViCINwJvBp4r2nzl4GzgiB8UFGUs2WHvAdIo0Zw/1BRlHw997MNHLTaCpABtn5Xg3oflfavDRvqBQ3mfVcCGyolUejfrwdskE3HrhdsKDluFbBhPcYo9G3VnA3FzgbV2aBHX1q1EQrd2eBygM0ic+vH307X9x6i4PFx9gtfRxnqVQWRgi6ITGEtZLDkklgyyWL0ZTZTTKPIZFTYoLsbcgVTZ4NsXLNotWAJQPM7p7B15JAWnKS/eTOi4Fdhg9ePrDkbcnYvSUeQhOJToy8zDhIZi5FGEYstFUSWp1E43Q68ficuj51gyE5zo4XmQIEW91JBZGFmhnw4SnouQi6eMjkbrEYahbOjDbGxmXx7H4uBPqayrUyESwWRSQ02WPXoSy2Nor8lTatrkfboGVUQefESiYk5svEMiqzgafbj7+/E3tlBduAQlz37ODMT4vxojoW5lJpGYRVpbvczNOCmpyXHHuc5gud/TPqFU8THZpByBdzNAfz7d5I5cAfDlsOcn/Bw9nyK6EIKr9/Jrp0+BjvyHLKcwPXsD4mcPk8hncXT0YTr6DEu7fhpHr/UwthElkQsS0eXl9v25jicfgTrueeInx/F0eDDeettDLe9nNMTIUavZPD77dy6V+bm7P9gP3ei4nN6/UptK96u7breazPggl4b2c0A6wcaKp1rLSMU5u3LwYZKSRTm21YCGyp7HZZ2NqjwYekYxRJngyCqfodasEG0aJDCUhk2mBMptDSKEvBgdDeIJkGkJok03A1aCoXZ16CI2vZiZ4OsmH0NKmzIF9AiMTU5pCn+kmyWN3zqDfRceJxIsIvPveObxNxNqgyyIC+RRCrmdZe2LgNK1mF6VVtndbRMcf97HqAxGObU+V188K/eSzpbhA31gIZ6XQbV3nQqhw3Lnaf0eup/Z70abFiuu6HeEYqNKv3+ty5suCbrkZcBOUVRRvQNiqJcEAQhB7wKKAcOQ8BNwG8C84IgvF1RlIeWu5MXLXDYKoBBr80CDfXc10q6GtT9y35BbsAIhXnbamFDkVKvHDYUKXJ12CBLiukc1WGDPmaxHmkU9fxBKf8FrydS1BJE6s4GHTaockgLDocFu13EZhPU7ga7OkZhtykc/tz76fvG55EcTs5+9qtIB/fiEHI4RHWEwq4JIi2FDJZsCjGbMsYolDJJpJzPI+fzahpFvlACG0AbowhC0zumsLVrsOFfbkK0BBG97hLYkHaFyNi8RhpFJOMgkrSSTFNREJnP5ivCBrfPSSDowuu1GmkUzZ7kUkHk7PQSZ4MOSHTY4NIEkflgG4vBASbz7YyFPYxPK4TDORb06EtJxu604/I6aGnz0t1hp68lQ4+rVBCZGJ8hHVZH7dyNXny9Hdh37SbX1seY/wBnZps4f7nA1NU46WQWi1WksdXHYL+HA91xuqwTNF58gsypU8SuTKHICq5GP4EDu8gfuJ0R+82GIDI8n8TlsTM05OdIf4x++TzeEz8gduqsCinaGvEcO8blgZ/hx1c6OHdBdTa0dXq5bZ/ELfkfITz5MInJGWxuF67jtzHcdRc/OhtkZjaLx2vl1r0yx6UfIj71MJlovOLzer1KYGULre3armtZmwkVymu1kAHWBzSo17D6roZK+60XbKjla9A/l8shi9uXhw3mfYzuhpXCBrOzQetsKBmjEAXje2OMwuRyWAIbTI4GRRujkC2qq0ExuhusxhiFIghFb0NZZ0OJr0FRuxoKRiqFChhkc2eD8b0af1ko6G8GgZIv8IuffRM7T32PhK+Zz939LRYbupAKcjEpTClda5WPUkD1boJK1d0+zZ+9+34aGyK8cHY3H/zMe8nl3VTy/5WDhvo9BtWvp9wrUXwTan1GJ+q6vhr3Vc9j3OjuhmsNO+qpDVqPNAmC8LTp+88rivJ50/edQLjCcYtAb/lGRVHeACAIwm7gE8BXBEGYVRTl4VoX8aIFDlul1gN8bMOGjYcNpceo+0nanennkfWxixrRl2aSvlZnw0rotbmzwTxGoX9UczbY7RZEi4DNZilxNlitKmxwOsBpV9j/lQ+z6//9MLLFwrlPfIncbcdUQSQ57JLubFDHKCz5TDGNQhujULI5DTZktDGKfEn0ZfFxqNdvDUHzO6axtuWQ5p2kv3EY0RJSBZEutwEbMk5NECm7iea8hDOqIDISV0gkVWdDuSDS7Gyw2qwlaRShoA2fV6RZgw26INKeXMQyN4k0M6M6GxZi5JMZo7PB5rJhcztwNQVwtrcgdu4g0zpAzNPKVKGNiYiHqzMK09MpErEsyWiKQl7C5rDhD3kINFQRRF66ZMAG0WrB4XPi62nHsXMniZ5DqiByvpnzVyQmJ+KqIFIUCDZ5Gej3sK87yU7pFN6Js2RPvUBsdBK5IOPtaMTT1420/1bOuo/y3KiPS5fiJGIZ7LogciDJ3uSPsV98gdgLI6ogsr8T+85dTAz9ND8e72L4bEoVRDa5uWWXws08ieWph0lcUQWRrsOHudDzCh47F2J8Io3TZeXQkMBRHkd88gfkFyI4utprPre3a7tupLqWQKG81gIYoH7IANcWNKjHbIwcUv+8VtiwZDxjNYJIs7NBUOGCYLEWOxsEQR2d0I7BYlW3lSdQWCwoWvKEDhtKxij0zgZzDCZiSSJFQUulMHwN2tcqhBA0sCBoX7N8/KWkrtukgsxdf/t29j/1z2Scfv7mnd9kumkQWSq+EVTV2yBXX4vVqq62q/zZu+8nFIjw/Nm9fOiz7yWXd5Y+v+roZqi3aq0FzWMftUYp1vKitlJ3QyXYsJLHt5Gwod6ukRu45hVFOVLj9ixQaSxCRGUgFUtRlDOCILwG+B/gLcDDtS7iRQUc9Nzr1s6Ba30pWw401Nqn0v/NzZJDmrddS9hg/FI1dTYUt5nSJZbpbNhs2FCySNJggyiWQgexPPrSKi4Zo7DbRWx6Z4NDwGpROxscNoVd//559n/691EEgQv3/1/SP/3TOAVVEGmVczjyKaz5dHGMIp8BbZRCH6NQsjlk/UODDeoohTmNQp1btTTINL9zCmtrDmnOSfpfTbDBF0B2eY3oy4QjSFzykSo4iWYcGmxQOxvSKYlEPEsqntWcDfklgkiHS02j8AcchEJ2GoOqILLZk6bRHqEhPY0zPIkY0wSRc/PGGIXubLC5dEGkF2d7q5FGMe/rYTEfYjxSFERGF1Jk0rkibAh6aGv30NRoo78tR4+nXBCpplEIooinJaCOauzaSarvkCGIPH9F4epYnEQ0jc2hCiL7+73s35FhtzCC9/xT5C5fJnZpAilXwNMewndwH/nePZzzH+O5ywEuXEwYsGFgwM+RoTT7sk9iPfEo8dFxcokMvt4OrEfvYKrjME9O9XLmfIZ8TqKv38/Obolj9qdwPv0DkuOTuNqbsQ/t5PKuu3h8tI3JqSxtrU4GuxVucz2N89lHyKfSuG46RKzvCPDHVZ/jay6B7ZGK7dr00tcjnTb7DQUZYHNAQ7X72ciuBvP+9cCGpaMUS2FD+ZhFNdhgyCWrpFHUdDbosMHkbFgCG8q6GYwxCkEwRidKYIPFaoxRoDkcJNFmdDbIokWLvrQZYxQKwlJXgyKoAMLka5D17ga5OEIhycX4y0JBhQ3q52K3gyQp/NRXfp8jP/xb8jYnX3zb1xnvPIiijU/okkh9/WVAB9NaS68lL4CrrLO62yb4s3ffTzAQ5eSZfRpscBSfL+sEGgyPWNkohXmctpIkcjVlvr5aIKAWbFhJrRQ2CIJYdZ/rHjZcm/XIOKqPobxCwJVaByqKIguC8DXgruXu5EUFHPTc64E9R65Z7vV6jXJsRleDej+V9r9xYIPelVDN2VDcv7ifrOiyR/X2emDDkra9NcCGkp9rHbBBMORQKmwQLWKJINJiLR2jsFjEkjEKq02FDQ6tu8FuE7BZVdgw8MOvcdODbwXg0vs/SvwXfhGXmMEhZtQRCimLLa+mURhjFLkMpFMo2UxREpnNGd0NemcDimKCDepCyhLUYENLDmnORfobNyFaQ4henwobfEEkh8eIvkzIPmKbrx7tAAAgAElEQVQ5N8mcnUjKSjShOhvi0TzpTN4QRJqdDTpscHmdOF12AkEnoZCDpuBSQaQ7rI5RyJEwudmFJc4GHTa42xqxBQMlaRST6Rbmky6uzgrMTGcIz6nOBlmSsTls+BrctLZ72dGpCiJ7vEVBZPrSZVKzi6QX1TQKd5MPX38Xto4O0n2HGHXs5cx0gyqIHIuTiKmwoaXNT1u7k/29WXZbz+A/9wSpU6dJTS9SyOTxtDbg37+HxN47GHcM8dxYiHMXksTCaU0Q6eaWoSwHpGewn3yE6PAFpGweb3cr9iPHOdv2k5yZaeLU2RzJZI7ubi/HdyYZ4gzup75H4vwojmAAy7E7udJ6lEdGu7g4miEYtHN8d5pdnMbz5HfIzszh3LOH0d2v5fT8dofDdt14pa9Hdrnc12w9AusDGGBlkAHWHzRUOudauxrKt28EbFjqZigKIsv3Ve+0vjSKkjEKHTYs52zQgYNY3KYIAojW0jEKXRJpTqPQxijUEQoriuFtEEviL83dDUVfg+pq0DsbVG+DDhOqdzaYoy8lSeG2f/sL7vz2x5BEK19+yz9waeB2w9VgrK/K12VK5fUYLP/idEfHVf7sXX9Ogz/GiZH9/Plfv4d8wUklB2RNJ4lYWWBYvq2Sv6t8v3pBSbXrqLdWIolcr1pJV8b1MD6xherbwEcEQdihKMoYGOMSdu225coPvLDcTi8q4HAtayuChlr7VPtdslLYUH7bRsGGpfsshQ3mjoR6YIPe3aB3Najn0v4wmc5fCzbIBT0Ws3Yahb5fvZ0NdY9QVIAN5jEKQdS6Gao4G+x2rcPBJpY6G6wKO579Dkf++I0IisLY3R8g8sY3G4JIfYzCUshq3Q3p4hhFPoeSSSOn0sYYhZwvIOULxTEKScYsiBQsFiwNUhE2zLpJf+tmRItfhQ3+BmRPgJw7SN7hNaIvIzkPkbSTZFY00ihisRzJRJZMOk86mS1xNuiwwel24PGqHw0NamdDRUHkwpQqiIzGSM9HyMXTFLIF9edrs2D3uXG3hHC0tyKGmsi39rIQ6GMqUyqIXJhLkE5mUBRVEKnDhu5OG/0tKVqcYUMQmRm9TOLqLLlEBgBXyIuvrxPbzt1kWvq44t7L2ZkgFy7nWZjXBJEWkaZWH0ODLnqac+x2nKfh/BOkT58mMTFnCCJ9+3aT2nc7w8JBLl31cO58mmg4jdfvZGjQy1BHjgPCCVwnHyE2cgFFVvC0N+E8coyLXT/JU5ebuTKRIx7P0t7uUaMyUz/Cdv4kiYtXcDT4sB85zunGlzE8EeTyWBafz6amXKR/hP3cCbJz8zj7+5je+zM8fbWTydm1vXuyfGkzy9u1XTd4rRdcMNd6gwZY2fhEtXOuJ2yotO9qYMNSuFAZNpRuL+1YKHc2qBdTP2woOhqEUmdDOWzQRyh0uGAao0AQK4xR2NQRipJ0CiuSYjXGKBQEJEyxl4qlxN2g+hpEFSTIuiRS7WxQ4UIx/lJPpNAlkTf91xf4mYf+AFkQ+Npv/A2n973SiCPXJZFmb4N5lMJc5Z6EauMUPR1j/Om77qfBF+O54QM88Ln3ki/Yl+xX6blZa1tF8FCl88Lsbag0SlFv1e+QKI4RF69h47sbykFDrQ6IWo9ly3c3ANdiPaIoyrAgCN9FjcB8QNv8BuA/FEU5KwjC3YCkKMpnBEG4GfgJ4G8VRYkKgtAM/BzwC8vdzzZw2OD673//e/76z3/L+N5itdHU0s1tL38Dr/+NP8TucC45Jjw/xVt/vps/+ezDTE9cMI7/+FfO0L5jZ8m+w8/9kD97x8sAeP9ffpcDR18ObA5sqHT8jQAbFNO+KiAw7a8oxT9iJV0JlWGDsc8ysKE0wmhjYEOJJNI0RiFWcDboYxQOh8XwNeiwwWFTaBt+lOPv+yXEQp7JN72d+be9C4eYwy7kcMjp4hhFIYMlq0dfqmMUSi5npFHoYxRSvoBcAzbYmhQa3zaFtdkEG6whRJcmiPQEyHuCZFxBMlZPSRpFJGkhmUaDDaogMpnIks8WjDEKoAQ2eP3VBZHebBh3dBJxfkp1NswvkosmtM6GHAA2lx2bx4m7NYijvQWxYwf5YCsLDf1M5VoZD7uZmFFYXCwKIiVdEOlx0NTiobvTzkBLmh3OSVUQOTZiOBsy0TQArqAHf18H9p27iXUfYsbebQgipyc1QaRFpKnNx2C/m32dmiDy0pNkh0+TGJ9BkWVcjX58e4fI7jvOGdtNnLzk5upkhvBiCpfHzuCgl6N9UXrl83hfeITYyDmkXAH/YDfWoT1c7v0pnhxr5/yFNNlsgfZ2D7fuzXM49yjiM4+QnJnD5nNjP3KckY5X8OMLDczO5fB6rRzZVeBo4RGsJx4lF0/gGBhk+uCreWx6iJl5mYBvGwZs13atpspfZP9HeIEHJ8eN762CQIvVxssCDbypuQ1HBcPdQj7P68+d5lO9g1zNZY3j/2HXHnaUrV+eS8S5+9IFAD7RN8ARn794LWvoaIDVj0+o5648QlF+jo2IvdT3r7Sv+ftKgkhdDlkNNtTlbNBhQ7mzQRQ0uGAtHaOwmEcnil0P5c4G/XtZl0WKGmAQrEVvg6mzQVZEJEQjjULvbNBdDZK5s0Ep62ooi78sSGgjESps2PPo1/jZL70dgG/+yid49pb/VeZp0Ndupjd05MprMvj/2XvvMEnO8lz/rth5uifntDuzszlLQlkWSSCODdiGA9gcbBNMFMlgH3MQItiYZGPjAAaBDRjsH9EmGhsjJJRXK2mlzWFyzp0r/v6oqu7qnp7Zmd3Z1bLse11zdU/VV6Fnu7e/uut9nqf0Qr5SdbYO8sG3fYR4LMmBp3fx0c++owQ2LPdePx9Pg7P5NpxLne18SuBGhWM8E7BhvY51pZbUy4G/EAThvTjCjnbgle66WwEL+FugEXg7cIcgCF/E8X54qW3bY2c7wBXgcIGq/GL7HR/+V2oa2shlkjx8z3f4zj9/lGwmye+/86+XbPvovd+lKlHPph3XMT7sfHmHwjHu/dGXednrP1Qy9uc//CdC4RjZTNHJfb0lFM425w4bVtMBcSnBhlLpRZGEF5atAjaUjDmLjMIqgwkXsrPBgw2yIhdgg1wp+lKVCp4NqlKEDUHVpuHMQW5454uQcxkmXvI7jP/JBwhKGoqgE7DcNApXRiHqOQQvjcKVUTjAIY+laY6Ewg8bLNsHG5wJmFJvU/umEeQ6DWMiTO4/9iEq1U5nQyjiGERGEuRC1aSUBDk7VJJGsZByDCIXF30GkZk8hm4WYIMnMQmEVMKxILH4UoPIWmWeRGacQGoaaWqk4NmQm1lAT+fQ0nnAgQ3B6iiq69kgtnaQa+h2DCL1okHkxESWxfkcmWQO07RQVIV4dZh4dYj21gDdDXk6ImOOQeTkENrp0yQHXYNISSBQFXbSKDb1kezcxWmxl6HpGCcGTMZGUqSTOSRJpKYhyobuCNt9BpHa04dIDoxjagaxtnpCHa0Y26/heGgfB8/EOHU6RTqZJxCU2bghxr4NKTanH0Q9/RTJQ0fQU1mqNrQh7L2OoYY9PDzcxtETWTTdpLYuxN4+k73WQygHf056aBQ5FCSway8n2p/DAydqGR7JEQ7L7Oix2c+DyAd+hr6QRG1pYnr7s3lgopdTQyatjTJbWxZWfM+vS60hB/1KXalLrdbauXBXWxf1ikLGsrh3cZ6vTk+SsSze3ty2ZOx9yQUSkszOWJTROQeohkWR/5yb5bVNLSVjfzQ3S1gUyfiA8erO//zlE5XGXmgJhTfmXGDD2TwbimOWwoYlBpEreTZ4sEGSljeIrAAbPBkFoljoZLAluQAbrPLOBqG0s8FvEOlEYPrAgz8Cs8SvwUmkMK3S+EvTLCZSeJ0NztwOug/+iJf8w2sQbZsfvfgufnHD69y4y1I5q+V/7pvT+VMpVlNdrf3c9daPUBVN8ehTu/nY59+BYanL3pQ+H8jgnV+lCExvfHkE5tliKdd6TuXHvFC+DeW1HGg4FzPJXzrY8AzMR2zbngfesMy6F/ue/xDoPJdjXAEO61zLXcx3bdpNU1sPADuvfi7jwyf42fe+yGve/ldLsnkf+fl32XvDi0CQChf6V938Uu77z6/y26/7YMGERstnefh/vsnVt/wm9/zgS4UL6nM5Pzh3v4bybVcDG0q6Hayly1aCDeXjLd/rruTZ4I1dLWzwG0R6bXjeMstcHWxYySDSi8Us8XbwHdODDfaSL5L1gQ1+zwbRfSz3bAgEip4NToeD09lQM36CG97+QpTUAjPP+V8Mf/iTBCUdVcij2E4ihVIwicwiaDmEnNvZkM87BpFuh4OZd4CDBxs834bCpFAQUBpsat80jFyrY4yHyX1vH6KccD0bEljBSCH6smAQqRcNIhdS9jIGkUbhi1qSJJSAjBJQimkUrkFkImIWDCKrs6OEZocRF2ewpibQJmfIzSwWZBRQhA2hhhqUmkQBNkzFupnTEwwvRBmaEBifyDI3lXYNIg0U1UmjaGyOUl8rlxpEDhxFGxsnOTBGfsGBDeH6OKGGGgK9vaS7dtEv93F0LM7ohMnocIpMKoeqylTVhNnQHWFbe5ZNHCF68hH0gQEWz4xiajrRljoi27agd23hROwqDvbHOX0mXYAN3Ruq2Lsxw9bcI8hP3E96cAQ9nSPW3Yq0/zqO1N7E8fFqjp3Ko2kmXZ0RetpM9ikHCT52LxnXIFLeuIn+jc/lkYFGJiY1GhoC9LRaXBM8QPDx+zEyWQLbd7DYsZtHF7YwOgVtTTLXtI/SPv/kiu/7dalK2WVX6kpdgrUesoieYIi2gGNsd1U0xrCW54dzs7ytqRVRKL0Qvy+5wHVV8ZLlN8UT/OfcHH/Q2FyYj+Qti58tzHNzPMEP52ZXZXx2oUCDs+9z72rwb7MaCUX54/nChpVkFBUNIr2uhhVkFIIkl8ooKsEGQSzABk9G4Ukq8HU2ONIJudDZUJBPeN0N/s4Gip0Nli1ilHc22EKxo8F99Mdf6obT0WBZpYkUtg0tR+7jZZ9+GZJpcM/z3s5Pn/fuguTVKszFKkgpfADCK//8bbnqbjvDXW/9M2KRFI8c2svHvvB2DENZ+t47T/8A/3zQv8wu64RdMr4MAvi9IdYMGSr8HS6Gb8NKHQ2/ErABLtv5yBXgsE61GgmDv7o37eXQI/9Ncn6aeE1DYXkmvcjTj/2Md3zkGyXjb7ztd7j3R//MsSfuY/PuGwF45J5vY9kWV9/yUu75wZdWdY4DJ5/gG59/P0efuBddy9G1aS8vf8Of07frxpKxD/z31/n2F+9iauwMja09/OYffJj//OanwYY/+fTPCuPKP8uXGmxYrUGkHzbYS8YVPRtWgg2W6fNrWKmzwQcQSrobzgM2eHU2GYUkO90MnozCM4iUZXGJZ4PX2aAqoCo2iflhbnzr8wjMTDD/rFvo/+RnCahWQUahmHlUPY2sZ4oyCl1zYEPWS6RwDSLzGmZOw3ZBg+1vV3HPWa61nM6GWh1jPEL23/cgqQknjSJahRmNYwYi5ILVpNUESdM1iMwrzGdk5pOwsGgtMYjU83rh7+55LQTCAYIhlap4gOpqtbJBpCujsOZnyU9Ok52eJ7+Qxsgb2JaFElIJxCMOCGhpQqhtQGvoZCbexVi2rtQgcjpNNl3sbIglwjQ0RmhvkUsNIgeOkj3dT849FuDIHza0ITe3kuneRb+6maPjCU4PaMxMZUgvZpFlifrmGM1NQbZ25OmTj1F18hGyR46SGZ/BzGuEG6qJbusjteU6hgK9PDFUw6nTTtdFVSJIY2OIvRtzbDcfQ33yPlInzjjGkq0NyHuu5njDTZyaTvD0CZ1MRqetLcLVvSl67GNEH/tvMqf6UavjCHuvY6BhHw8MttE/pBGPK1zT6xhJRh//b4ypaZTePvp7b+PobDMnhwRqqwWu7Rim6+SPsSfP2ql3pa7UZVUXwmthpdoUDHMgnSKJSbVUvIBKmyYH0yk+1NldMv75iRp+PDfLk5k0uyJRAH6eXMAGbklUO8BhhfJAw4lMhn8cHeHJVIq8ZdEXDvOmjnZ2x2Il438yM8PnR0YZy+dpCwZ5Q3sr/zo2AcBnd24t2/fyXQ3O7xcGNpSvW6tnwznBhkqeDYK4VEYhut0QBbggF8GDr7PB6ZBwfRpcGUVpLKaMJckF00hTVIrGkF53A45ngyOhcAwi/YkUxediwb/BMIvxl8UIzGL6hAcb/Mvqzxzkf3/iN1C1LI/c8Bq+/+KPYNp2wSTS79tQEoHpn+OVSSm8qjTf6m4f4K63OLDh4Sf38fG77yiBDctd0IsrXEBb9vLdCP5UiuVMIVcjpTgX+FFJSrFW3wZBFJcdt2znxTrDhit1adWvFHBY71jMtUIGf02N9xOOxonFa0uWP3b/D5Flle37n1OyvK6pk827b+LeH3+5ABx+/qMvc9VNLyEQjK7qPM8ce4wPveUmOnv38Nr3fI5AMMx/feezfPSdz+X9f/cLuvv2AfDUo//F33/wVex61u284k2fJDk/xVf+5g5MQ6e5va+w39XChuW6H8rhQaVtzhU2VJJR2FZxnyvBBm+cWZA+rA42rEZG4Y1zzvXcYINlW0u+xLwJSjlsEGWxBDY43g1FGYUkCSiq493gpVGUG0Qqsk1VZoob3/Z8wmMDJHfu59TffplAWCAg5AsyCtnMu2kU6aKMQtewc24iRc7pcLA0V0LhmkTa/i9UQXCjLw0XNmgY4xFyP7gKSY0hRqKOZ0M0gR6uQVOjJWkUC9kAqZxjELmYLDWIzGW0Es8GQRQKaRTRqiDhsLrEIDKmpKjOTxBeGEGcGsGYHMdYSJKbLo++9GBDNWpTA0JLB1qiken4hiUGkbMzjmeDZdnIikw0HqKhKUJnW5lB5OAx8v39pEem0FJZbMsmWB114id7+sg1dDMY2szxyWpOD+pMjKXIZTRkWaKuMUbPBscgsi9wkuqTD5M/cpjU0ASWYRKqTxDduonMlms5Ku7k5EiEYyezzM1miMQC9GyI0NOcZ7v4JKEn7iN5/DSWYRFuqkXdu5/TrTfz6EA9QyM6qaRGc3OY/b1ZtmfuRz11iPTpfpSqKNLuqzhcczNHRxOcGdQIhSR2b8yzI/sL1FOH0MYnULu6Geu7lUdHWxmfsgmFRHa1ztA5dC/W8ABiOMIFLc807UpdqYtYhVhMVb3ogMFfoiQwYWhERYkqqXRK+EByEVkQ2B8tBQBNqsquSJQfz80W4MCPZme5KZ4gtMLdOX9Hw7FMmjcdO8amUJj3dnYSEEW+Oz3N244e43Nbt7A54nzuH15Y4M5Tp7kukeCOzg7mdJ2/7B/EsG06Q8Gy/a9OQuG97vJ1azWH9B6Xgw3lRpKlv68NNqzZINIno1gCG6TiegcylHUzSMX0CQ82+KUTtlgmn/DkFIilnQ1lEgrPLLIgoXAlFZZdlFA4EZhOV0N5IoVnEhkfOc4rP3o7ocwCT+17Cd981d9gLpFNUDoPs5bOzfxVbhbpr66WAe56y4cd2HBoH5/44jswLXnFr42VQMNKVdp1cfYIzPW+g3822LBSlcO9s+3/QtcvZXfDZTwf+aV+VYIghARB+KwgCAcFQXhSEITdK423bfs/bNt+fSRWKW509bUa6UJ5WaaJaRikFuf4n+/dzUM/+xYvf/2HHFqNkz5h2QKP/vy77Lzm+RXNJG+87Xd56H++gZbPMTc9xlOP/hc33va7Zz1Xr772d++htrGDP/30f3PNr/0WO5/1Qt7+kW/R0LyB7/zThwvjvnX3B2ju2Mzb/+y77L72dm58wWt4853/xsLsePH1XCTYUAAGZ4ENlr1+sMGyHXCwWtiwWs+GIpSwlk2jWAk2eNuV11pgQ8GvQfY8GxzYoKhSQUahKKUGkRFtkZvedTuxM0dI92zh1Oe+hlqloAoaqu2kUSh6BkVLO2kU+WxBRkE2i+0ziCzIKHS90NlQDhvkGovaNzueDaYHG5SEAxuqEljRBFq4mmwwQTqQKKRRFGUUwhKDyFxGQ8s50Zfe38yfRlEVD5KoVksMImuUWWq0cSILw0jTY5hTk2jTswXY4EVfqhEVNRYiVJdw0ihaOsjUdzMb72ZcaygYRE5MasxOZ8gkc1iWXYi+rG+K0t6q0l3vGEQ2Lx5DHTrmGEQOT5JfzBRhQ3crSt8WFtt3MRTbxvHpWk70O54N2XQeQRRcz4YQ21qTbA6foq7/EbSjh0kOOncEQ7VVxDb3kN96LUeV3TzeH+b4qTwLczkisQC9PVH2dS2wU32K2NP3kj56EksziG5sJ7h3PwOdv8Yjw82c7s+TSrmwoU9jl/Yg8hP3kz11GqUqirL3Go61PIdH+6s5M2wSjcpctdlgn/kg8lMPYUxNom7sYWLnbTwyuYHpOUjERa7dOMPmqZ8hjA0idvWwsPs5S97zV+pKXWp1rvORqChdrFMslgiWCGnb5PuzM9yzMM9rm5qRyrTD9y7Mc3WsaomZpCDCbTU1/M/CPHnLYlrXOZBc5LaamiWHEiSx8OOvvx0eplFV+etNm3h2XS031FTz0d4eWgIBvjgyWhj3+ZFROkNBPt7Xy/XVCV7UUM+fbe5hRtfLjlPuq7C8X0NpPOWlDxs8zwYHLFQaV4QNRcnECrCh8FOMuyztbHASKAqwQXCkE/4ITKe7wd/Z4HY3uN4NlTobyuMvLWvl+MtKiRThqSF+56MvILo4yYmtz+Zffu9uB2Z4czn/XK1sfgZUnJt5VekCtbNlgA+4sOGRQ/v4xN3vwDCX3qsVBbHkZy1VCX6sNQJzLZ4K5Z+PtZ1r5eNcSNjwKyOluMzrkupwEASheTVOl776deCPbNteFAThLuAu4DcuzNmdX0fDO15R2vb3vJe+kdt+6834Yy4NXePxB3/I773rMxX38axf+22+9Km3cuC+/2B6fIBETRPb9j2bo4///Kznq+WzHHniHn7jd/4EGxHdvcsLsG3/s7n/J/8CgGlYnD76CC965R8jimJhHz3bnkVdUxdwfkkUsDxsKB3vN29cOq4cNnjr1wM2rFZG4XkxrJRGYRpm8fVYKxtEng02eOX/MittAy2FDaIglsgoBEEowAYlIDkyCtmBDY6EwpFROMDBMYgM21lu+OMXk3j6UXJtXZz8wjeQa6MofthgZJH1DKKed2CDl0bhN4h00ygszcAyTSyjCFy8cxdEEaXWpvoNQw5smIiQ/f5+JDWBEKuCYBgrXIUWrnYNIqvJ2UFfGkVlg0gt53Q1eNGXkuREgPrTKPwGkXWRDLXKPNXZMQLpGaSZsRLPBiObx8g5k10lpBCIR1HjkUIaRbahm6lIF7NavMQgMrWYdwwiDRMl4BhEJmpCtLeoRYPIqSPIU8NoZ06THpl0PBtkCSUSJNbZjNq7iWT7Dk6LvQzPxDgxYDM26no2BBXi1SG6u8Jsb0/Tax0mNngM7fAhFs+MYukGkZY6Qh2t6Nuu4XhwD08OxDjTnyad1BzPhq4Ie7qSbM48jNp/mPThoxjZPNGuFth9LUP1u3h0tJXjrmdDTU2QPb0Ge+xHUJ+4l+zwGHIogLpjNyfabuXh03WMjmsEgxI7Npjs5WHUx+/BTKZQmpqY3nILD0310j8KzfUCfQ0LbJ74KZw6DPWNDHXdzLGFVi54nafm9kpdfnWpz0dWW5Xu5L/q+JGSMS+preM36+pLlumWxUPJRd7R2l7c3gckbk1U85fDQ/xicYFxTaNGUdgXjfF4KuUeaylk8CpvWTyeTPLqlhYkWcTwTRCuqqrixzMzCKKAadscSad5dUszolAEBTtiMZpdD4oLIaHwj60EG5b6NohlEGN9YcNZPRvKZRQumCjABkF0Oxl8Mgq3swE/bBCEpZ0Ngg80+LsZBBFTVDAFGVsQir4N/s4GWyrEXzqPQkn8pWF53QzFzobyRAo/bAjMT/OqP38BiekBBjdcw5f/8OsYUsABB66/VqUITCjOtyrVcss7mge58y0fpiqa5NGn9vDxL769ABtWAxW890dFP4SKqQ+l51gOF/zdsWuttQKB1XY3LLff8zWVLD+PX6m6TOcjlwRwEAThOuCPgTZgb9m6KPBh4CQQxYnqeI9t22ng27Zta+7Qh4FSy+R1qPOBDP56959/k5qGNhbnp/j+1/+S//zW37Nx6zXc9IJXF8Y8deCnaLkMe697UcV9hCIx9t/4Yu778VeYGu/n+ue+conh5HLnnFqcxTJNvv1PH+bbvm4Gf5mmTXJhGtPQidc0LtlPVXUj/kW/6rChuHx52FDQ4RmlXQ3Fc1obbPBXycRHEJfCBrlURiFJRYNIJ/ZSKvg1ON0NTmeD4no2BASdZ73vFdQ9+jO0ukaO3/0tpJYaAkIexc77YEPWkVHoWlFKkc85nQ0+g0hL193OBqvQ3eCfsDmwYdCJvpyIkP3efiS1GiESg0gVVjBSiL5MKQmSZpSsEWA+F2AhU2oQmU5rJZ4NftjgGUR6aRSJhEJttUg8YlEfyVKnzpHIjROaG3EMIifHyU9Ok5tdQEtmMDVPRqEQrI4RaqxFqY4jtrSTq+9kOup4NkylAgxPCkxO5pifyZDLuAaRLmzwDCK7G12DyJmjyAPH0CcmSA+Nk19II4giodoqQo21qD29pDt30i/3cXw8zsiE6cCGpAMbGptjNDWqbGvP0iscJXbyUYyhAVIDY9imSaSpxjGI7OjjRHQfTw7FOX0mW4ANnV1R9mzIsEV7DPnQA2SHx9DTOSJtjYi7r+FozfWcnKzm+GkdTTNpbwvR22qwR3mc0OP3kRsZJ9BQi9zdQ3/XrRwYamR8Uqe2RqG72WJf4AnChx7AyGRR3BjPg8nNjE4JNNQK7G0Zo33hScTRM1DXwHTvDRyZa2MmeRHuAF+mLYxXau11Kc9HzlbLGS2W10c6u2lQVOYNnX+dnuLbM9NsDYe5rboo8XwsnSJnWVwfjy+RIwCEJYkb4wl+PDvLuJbnuVm0Uo4AACAASURBVNU1iIKwKnlI0jYxgS+OjvLF0dGKYyzbZl43MGybGkVZ8tpqVQXKDrVWCYV/m/KuBm9Z+T4vSdggSUXY4N29lqRiZ4P7exEwFGFDATBIErYPOJREXkqKT0KhOIDBL6PwJVJ4XQ0VOxvK4y/L/Bo8GYU/kcIziZRTi7z8o7dTP3qU8bbtfOmO75BTIpiWAxgKZpAVpBQlc7sVwIP/37mtcYA733IX8WiSA0/v4RN3vxvLVFa8FlzOL2El8FBxzreKCMzVdjecSyfDSrDh3Dsj1n4xda6w4Ze+u+EynY8848BBEIQYcMo9l0p/5X8DHrBt+zPu+LuAzwGv8n25A9wEfGS9zmu9QINX7Ru3F1Iqtu59Nu999S6++rfv4epbfpNgyNEqPvrz77Blz80sJ/mwbUdW8bH3vAjbsnjrnf+y6vMORxMIoshzXvImbnj+q8u2cb9oRZFYvA5JVliYnSgZY9mwODdBbWNnxeOsB2yoFHtZPm4tsKF4DusLG5Z8kS0jo7BLti+VUDivb2XYUAk0eFS9HDY4koqijMIxiiz3axBdn4aijEKRnY4Gv4xCkSEgmVz9Z39A0z3/jl6V4PgXvonQ3YIq5FHtHIqZRzGyjowin3Y6G1yDSPwGkW70peXFXxqWK6MoRl8KooCccDsb6jXMqQjZ7+0rwoZYHDOacAwiQ9Wk1XjBIDKjycynpYJBZCrpGBhmkvmCZ0M5bFjJILI2ME91ftzxbJgZw5qfQ5uaIT+7WAIbJFX2eTY0ItTUkW/oKhhEDs8FmZ6DiQnHsyGbzmMaJrIiOwaRTRE6WmUa445BZOO869kwMEB2co7cnHOXMFgdJdrdhtzSQqZrJwNqH8cm4pwa0JmdzZJazCErEnUNUXq6A3TU5diknCB+8hFyR46QnZzFzGuE6hJEtm4m1fcshgM9PDlcw8nTORYXckSrAjQ1BtmzIcd26yDBp+8ndeIMlm4Qbm1A2nMNJxtu5MBALaPjOpmMQVtriKt6UmzkOLEnf0Z2YAilOg67r2WwfjcPD7cxOGKQiMvs35imRzhG1aGfYczMIm/sZaDneZxYaOb0qERNXOCqthG6Bn6KMDUGsQQTm27m4FwPixmJpoS+5HNwpa7UhahLdT5SqVYLFyrVBl9Kxd5ojNccP8rfjY1yczxBSHS+P+5dXGB3NEZMXn6aeFtNDe85fQoL+MCGjSumTvjPOYaECPxmYwMvqK0Dls6xRUEgocjIgsCcYZSsEySBWU2nKai62557V4N/+XJdDd6yiw0bnMezezaUyCjKYUMhnaJURrEENojSEthgSQp4cKHQ3SCWSir8iRS2iOHFYNpCSfylaYlO3KW1fCKFI6PAvanjwgYLxFyW3/7kS2g9c4DZ+m6+8LZ/Jx2MO10NvvnYclKKyhf6S80ivWprGuIDb/og8WiSxw7v4RN3vwvDXP80iuK5lN6EKixfJgJz6XmUGjSeE2TwAY7zrXIAcgU2XCm4BDwcbNtO2rY9AUyWrxME4QbgBYA/suHLwP8WBKHPN+7ZwDdt2+4/v3Mp/lyI8nwaFDXAK9/8MRbnJvnJt/7OPbbNgfv+g/03Vu7A9M5px1XP5Vm/9jKe/eI30LZh26qPrQYj9O28kcGTT9K1aS8bNu9nw+b9dPddVXgOIEoS3Zuv4pF7vlH4j8+y4dThh5ge7y85F+/52WCD5zzsX7besMH/b+d1NqwmjeJcYMNqDCJLOyCW+jWcL2zwyoMNHmQoyCgkEUmRXcjgejbIznO/jEIp6W5wZBRBxWTf37yD9u9/BTMU5sQ//BvWlt5SzwYXNoieZ0M+63Q25DJYfoPIvOaYQ+oGdplnQwE21ED1Hw4i1+cxpyLkfnA1opxwYEO0CtP1bMgFqwvRl4tamMWcynxGZiElsJi0WFzUSC06MopyzwY/bIhWBR3PBp9BZF047cAGbYLwwmjBs0GfmibvdjYYOd35WxdgQw1qUyO0tKM1djIT7y4YRI5M2IxP5AueDX7YUN8Qpr1FoasuS2dsiqYF17PhTD+p4Ulyc0nAhQ1drY5BZNdOBkObOTZVw+lBk4mxFMn5LJIkUtcYpWdDkC3NC/QFTlLT/wj5I0dIDU9iZPMEa6qIbtlEZvM1HBN3cGisnhOn88zPZonEVHo2hNm1UWe7dIjw4fvJHD+FbZoE62tQdu6hv+UGDgw3cGYgTzKpO3BiY5Zt2YeIH/452dP9yOEQ4va9HKu5gQPj7fQPG4RDIju7cmzPPUj8yH3oExPIrW2M9dzMY+NtnByWCAYEdrRM0zl8L/bQGZAVFrr38eTCRibmJBriGpviQ0s+C+terpv7uv5cqV+6upTmI155ngPlP+tVqijypuZW5gyD78w6UgbbtrlvYYGb4vEVt70qVsWt1TW8uK6eDaHQWV+DVyFJYlcsxolMls2xCFuromyJlv6IkoAii2yNRvjpzAyWbSNITgfFU4tJRvN54MLDhiI8KAULq4ENJeBhjQaRXjfDajwbBNeToQAbBLFURrESbBArwAZRKe1yqGQQKYiYtlzsbHDjL8s7G4peDUXIYFiCK6OgREpRKZHCzmu8+K9eQdfhe1hMNPOFd/6AxXhTMY2iQndDuW/DWrob2hqHuPNNdxGPLfL4kV184ovvxrACJe8D//vhXKpil0KZlGK5CMzy7bzy3pOrhQ1+KFAJNqxXBObFBACXDWy4TOciz3iHw1nq1wDNtu2C4NC27ZOCIGjAbcAxQRBuAqZs235SEIQgUGvb9shqD3Ch4EJ5+b0aAPbf+Ots3HIV3//6p3j+b72FgRNPMD8zxv6bXlxybuWnJ0oSb72rtLNhpZfg//y96s2f5MNvu5mPvfs2br7990nUtJBcmKb/+GNYlsnL3/BRbBte+pq7+PgfPY9Pv+/F3PKiN5BcmOI7X7qTeE1Tyb6PPn4Pn3j3s/m9P7qb65736hIIUDi+77r5XGBD+T6Xgw3F8XYBNHj7Wg/YUPBrWAE2WO7F7dlgg/c6lvtCWQk2eOV0NDiSiZLoS7m4zIMNhehLRUJVpGISRUBElp3Yy4DqyChUxWb7Fz/Mhq9/BktWOPmZr6Dt301QzKNSlFFIeg5JzyLmM0UZhSufsFwphZnXsE0TS9N98ZdF2OCkUVhUv86DDWEHNig1CIFgIfpSDyXIBqvJyRHSZrSQRjGflkhnKRhEplOOjELTDHRNL4ENoiQS8BlERqMydTUSdVUmdeEMdcosUX2eyOJoiWeDnko70Zc5zYEjQRU5FCBYlyikUWTqu1kMNTCuNTA8H2Z00mZysujZYFsWgZBKKBKgrjFCe6tKZ32OjtAo1alhAsPH0Pr7SY9MoiWzAATiEaIdzSi9fSy27WBCbefEdC2nhywnjSKrIUkitfVRNnSF2NqSpMc4THTiBPrRw6RHnOulYE0V0c295LZcw3F1J0/2Rxmb0FiYc2DDhu4IezsX6OA0scMPkDlxClM3iGzoQOrqYaDzFh4bbebUgIZl2TQ0BNnTq7HTeAT16QfJT0whRyNIO/dxsvkWDg7WMDVjEolI7Nqgsct+lMCxA5iLiyidXUxuuZXHZ7qZWYB4TGBn6yy9sw8gTo9ht3ez2LSFp4xtJLMSPc05tipHqRo/veTzcKWu1DNQF2w+sp4AYbXlv2C6sTrBlqkwX5+c4Dfr6jmRzTJj6NwYr9xt6fkzyMBdGzYse4yVXtcdHe288chR7jh6jF+vr6dWVZjXDY6l09gCvKWrA4DXd7Tx1qeP8kdHT/DS5gbmdJ3PDQw7kgqfpuKxhUXe+PhTvH9zL7/e1rjsa12rX0P5o98c0r9sKZDwyTHOwSCyooxCcNMqyj0b/DIKQSw1hixIKpaBDeXdDYK0FDaIUiGhwhQVbHyeDW4ihWFLhY4G05J80KFUUuGPv7Ssct8Gt7PBdiS+lmHyws++jr6D3yMTqeGL7/w+M7VdmIZVkN56vg3eXM3f8QBruwhtaxrhzjfeRSK2wONHd/Gxu9+Dbqhn3a4SfDjbcSt5S5xvBOalUJVAxpr38UvyWq/U2upSBw6twFyF5bNAlyAILwH+Fph1zYwEyjSXXgmC8Hrg9QB1jR0XDTTY9vJfuC973Yf483fexn99+x9YmJugu28ftQ1t7nar3f/y68o/6119e7nrsw/z7S99kC9/+g6y6QViiXq6evdy62/8YWFf2/Y/hze876t850sf4DN3vpSGlh5e8ea/4iff/HTJcZ0LaNO5Y78CbCjviPCf27nAhuLY5WFDcT/rAxtK5RGVYYPl/wKpABsKf4NzhA0lExqfjKIENvj9GlwphaJ6yRRu7KWbRKEoHmwQCChOIsWm7/49mz/7AWxR5PQn/hHtpusICBoBfAaRWgbRcAwiRdcgEtcg0s7lsT2DSK+rwTRLXqM34ZKqofq1g8gNOczpMLkfXOPAhkgMgiEfbEiQluNkrVDBINLzbEilLVIpg1Qy78goso5Pghd9KQoiSkBBUWUi0UCJQWRdlUlDNEOtOk8iO04gM4s8PVLwbMjPJ9HTWYyc0yktB53oS7Uq6qRRNLeTretkOtzBrO4aRE7C+ITj2ZDP6VimYxBZVR0mngjS1qzSVZ+nMzxG/cxRlKkh9IF+0kPjaMkMgiigxsJEO5tRenpJtu+gX+xleDbGyUHHIDKdyqOosmsQGWJLa5pe+wjRUwcwhgdJDY45BpHNdQTamtG3XsWJ0G4ODcU5058lncqjBmW6OsPs7kyxKXuA4OBhskeOYqSzhDtbsXdczXD9Dh4bb+P4aR1dM+loD9HborFbeIzgoV+QGx5FCgWRt+3kVOstPDrYwOi4QTAosq1LZ494gNCT92EmU0j1DUxvvplH5/oYHBdorIWeunk2z/wc8cwRqGtiuPMmTiWbGZ1VaavV2Ck9SezUY85E+UKWO2G/UlfqLHVB5iONytJW7QtVnuljJYnw65paeOfpk3xneopZw6AvFKZBLbvYWsNd3ZVkyIIosDkW5e4d2/jC8Aif6h8gZZpUKzJ9kQgvbSoCg2tqE3xocw+fGxjmPYeP0xYK8q6ebr42PFayPxswbZb07S4njyi8pAsEG4oHuzCeDUUDSLHY4eAZRPphg7fMlVwshQ1yGWyQl8CG8s4Gz7OhPP6y3LvBH39pmA5sqJRIYRilJpHOvMvm177yXnbd+xXygQj/9PbvMNa0BcusJG0tXrgXLt4rzNO8quR50NIwwp1v/ACJqgWeOLaTj9/9RxVhw2o7GwRRqAgPlgMHK0Vg+ms97uJfqO6G9TCK/JWXUlzG85FLHTjkgUoCXhEQbNv+NvDt1ezItu3P4Wgt2bhl/wV/Z3odDTff/hpuvv01FcfsvOZ5fO0XzofrXa/YwvXPf9USgHDzC1/DzS9cur1/3NY9t/DVe0s/pMt99lo6t/LmO7++7L68uubWV3DNra8oGeMBB2/85t238I//ZZeMKRz/GYQNxeOtj4xiOdhgGlbxOFb5uNV5NpztS6i8/LCh6NVQhA2ejKIopSh2NsiKBxuKMgpVgaAKQdWi++ffYMdH3wpA/52fIvPCFzgGkWioZrZoEKl5iRRFg0gr5yZSeD+67nQ2FBIprOL5iyJSAqpf2+/Ahpkwue9fjShVF2QUVjCCHkoU0ihWMohMumkU+Zxe8GwADzbIBEMqgbBaYhBZ8GxQPc+GUcTkHNb0JPrMLNp8ssSzwYMNwfoalJoEYnNb0SAyV8dUKsjolGsQOZshm85jWxaSIhOLh2hojFBfK9PVqNEZnaBh/jjK0HGM8TEyw45BJDiRlcH6GtQNG0l37mRA3sSxiThjUxajo2kySQc2NDRFaW5S2dKWZZN0nNipx8gfP0Z2cg5TMwg31RDashm9vZdTsT08NZzg1JmcAysCMp0dEXZ2ZdliHCRw5CFyQyPomSzhtibEHfs5XnstJ93ITU2zaGsNsq97gW77JJFD95MfG0Otq8HadS1DtTt4fLSRsUmTmmqJzkaT3cGniTz9EGY6jdTdw2LbDg6l+xidFqhNCOxsHKNt8Wmk0TOQqGW66ypOLLQwk1KoqzLpjQ4SHTwBwTC5mrZVfTbOqy6htsMrdcnWBZmPbA6HL9h8pPzi6IW1tbywtrbi2Kurqrhvt8NHXnnkaZ5X7URc+n0Zbq+r4/a6umWPJ0oC+xNxHrj6qlWdT3coxId7e5bthPAMKJ/fUMfzG+pKoMHXhsfcyHpnzP7qOAefe0PFY60kofAvW0vspbdsOdiwrgaRnozCBxuWlVGUwwZJxkum8EwhV4INXieDJSrF54KEKbjQwdfZ4I+/9Hc1FKFDUVLhwYaSNAofZPBMIm338ervfoJnff8vMSSFf3nT1xnqvhrbdBLBKkVglkOISrWcnKK5foQ733gniap5njy+k4/d/V50M7AiNDufKu9uOFsE5np2N1ws2PBMAQD/5/6XFkJcpvORSx04DAGVevpqgIGLfC6rqnLpxGrrk187si5dDc45LLddhbavsrGVtl3ueP6x6wEblo7x/4e7ethw0dIo3ON5aRSrhQ2r8Wvwqtwk0oMNolgOHZzJigcaRMlJolACckFGIctF2FCQUcgQUCxaHv8pe9/3uwi2zdDb/pSFV7yyIKNQzByq69kga2nEfAbR0CDvdjbkc05ng6EXoy81o0Jng3vuVXYJbMj/6FpEKY4QjUK0CiOSwFTDhTSKlBVZ1iAylzUKng1+GYUHG0KRIJF4kHBYKRhE1lUZNITTxJQU1XnHs0GcGcdemEOfmil4NpiagW1ZyEEVNRZ2QEBLE0JNPfn6zoJB5NBsiJl5Cp4N2ZQPNrgGke0tjkFkV2ySxoXjBc+G/MxcwbMhVFtFpLO1xCDyxFSCM0MGs7M50gs5JEWivtExiGyvzdOrniRx+gDasaOkR6exDJNQfYJw3yZSm65mNLCRQ6N1nDyTJ5XME60K0NAQZFd3jm32E4SPPED65BnHWLKpHnHHfk43Xs/BoXpGJ0wyGYPmpgB7u9NsTT+IOnCU/OAQclUV9o6rORq/npPjcYbGLOJVInu60mwQT5I4ei/W/BxSVw+DG27ldLKJ/gmFmiqb3U2jdI3ehzg7DrEEk93P4qlkDwtZmfoqjW2Rk9QOP4ktq4y37GFca1j283GlrtRFrEt+PrJeJnZf275jTePPJglZ6bwqbVsp6WKJV0PZkHOJvPQvL+9MuNiwwXn0LXM9GPwyCrwxHogQxYK8okRG4fk3CG4ahSBgu/GX5bCBctjgdTi4nQ02xUQKE8ezwUZY0tngyCYkt6tBdAFD5UQKwyyaRPp9GzyTyK0//See/S9/jCUIfOu1X+DEtudimlbBt8G2i9JVq9BtW7m74WzVXDfK+9/4Aaqr5jl0YrsDG4zAWbcTyt6AKx2r0lxvpc6Fc71QXou041K8GD8fKUX5a78UX9+vel3qwOEHwMcFQeiwbXsQQBCEzYDqrrtk6lxBA6xePnG2sSt9vs4FNqz2WBcDNhT3f+Fhg+X6NawEGxwvB+usnQ3l5Hq9YIMjm3A6GwRBQJSkgoSiABwKHQ5OZ4MTgemYQ3oyCkW2qT/1GNe8+6WIusbEq17H9JvvIChqBc8G2dRQtIzr2eDKKPS8G32ZLXg22LoLHHRHSuC/0+B4NoiIMZvEH/QjN/pgg1gDoRBEHNighavRlTBpNU7K9WyYz6pk8qJrEGmSTOqkFvPk80YBNpTKKByDyHAsQFVVgGhUprZaLHg21LieDWGfZ4OxsEh+bsH1bHBuZHqwwUujoKkNLd7AbLyL8VwDI65nw/y8ztyM09lgmSZq0PFsaGiM0Nqs0F2fpT44T1PyZMGzITM2hZ7OYVs2weoYkY5mxyCyvpPhUB8np6t9ng06oixSWx+huzPA5qZFWuURavsPoB87QnpkEtuyHGjRu5Hspv0cl7bTPxHlZL/GwnyOcFiluzPEhiaNrfJhoocfJHvyDLbhGETK23bS33o9B0eaODOokc+bRTihPYpy+BHyE1NI4RDC1t0cr72OxwcSTM+aBAIi29qdccHBpzEnJpBa2xjvvo4nptqYmBUIB2FzwyxdEw8gjpyBcISF9p08nephYkGhrSbPhtgIdf0HELQ88137OJlq58BjF6Hl/DKNobpS61qX1HxkveBCYX9nSZgor9X4TqwVNDjnUbq8kgnecvCgfN25+DV4zy82bCgxiKzk2eDvbPDLKJbzbCjIKYqwwa4EG8QibChJqCj/QVzi2bBs/GWZOWTFRArXx8HzbfCgRPfD/8Htn30dAD985Sd54uqXOZ4N7tzODxtKvBrs0t+9KpdT+KupbpT3v/FOauJzPHVyOx+7+/+iG4FzusEsCMKqAEf5OS8XgbncHPF8PveVJA+XSnfDevo2/NLDhst0PnIpAYclYeu2bR8WBOE/gVcBf+4ufhnwQ9u2j13Mk1uuzgc0wOphw4Xsaqi0ffkY24b3fOpnS8ZeLNhQBAf+8RfGs2GpF8O5w4a1fJH462ywQRAFn2eDhCQvlVEU4i/dNApVEQgEhAJsCKoWidETXHfH7cjpJDMveCkT/++DBEQdVSgaRMpGDknPIOUzjoxCyzmwIZt1fBs0rQgadB3LcG5bFGGD8xrEqA82zIbJ/9iFDbEqCIQwown0UJxcIE5OjhTSKBayARYzjkHkYtIxiEy5MgpNM9ByWgE2SC548RtEVieKng11kTLPhtlxrOlJtOlZ9GQabSHtk1EoKJGQaxDZiNDcRqaui8VwI+NaAyMLYUanYHIyR2oxTzqZwzIt1KBKVY3r2dCi0N2Qoz08RnVqhODIUfSBfjIjk2jJDOAYREY6mpE3bmKxbQeTahvHZ+o4NeR4NmTTGqIsUlMboasjyNaWFD3WEaLDJzGOHyY9PIFt2URa6gm0t5LbfBUnArt5ejjG6LjO3FyOYEihszPEro5FOsV+4kcfIHfyFGZeI9zZitixgaHOm3h8vIUzQwaWDQ0NQXZvzLODgwSPPIQ2NY0UDSNu2cXp5ht5YriO2XmLcEhkW6fGDuFxgqcOYiUXkdramdp0E4cWNjCzIFIVga1Nc/QuPuIYRDZ3kGrYyFFrCwtZmY66HJsDJ4hP9WNLCsmOLTwxt5G//pTMD795ebYXXqlLui6Z+ch6g4WSfa8RMsDFAw3OfpZPoPjc3h3nlELhX7aSX4O3vhKgqAQbztUgUpSkkv2uCBtEcXnYUJJMUYQPfthABdhQkE6IMnZ55GWhs0HCogw62GKho2GlRArTFoodDWcxiWw+fB8v+fQrEC2Te/7XH3P/rW/CNIvzt/IIzJLuhrIOgbNd/DfVjfL/3nAnNfFZnj65jY/d/Sdo+tk7G1ZbleZ7JefouyHl/H7+ZovLnYPzfGUpxUoluu/3SkDimfRtuFK/XPWMAwdBEELAi4BnA3FBEF4F/MS2bS+W6uXAXwiC8F5AANqBVz4jJ+uriwUaVjP2YsCGSmPPBzZUir30fl9JRrEcbCi20p0fbFiNQeTFhA1ARdggufIJDzbIsoTkgw2yUiqhCAREZAkHOriwoWp+jOvveCGB2Unmr72F4Y9/moBsoAgaASPjyCj0LJKRQ9KyiFrWgQ3ZDLauYWv+6EsdSzecJAq3u8E/KZOqBOK/dwa5MYs5GyL/o2chCjUQiWJHip4N2WA1KTlBzgqS0sMlBpGZrE0yaZBOawXPBkM3sFwvDSf6smgQ6fdsiEcs6iPZgmdDaHEMaXEWa2q8EH2pZ/IYOQ3bspGDCoF4BKUq6qRRNLY6BpGRTscgciHK8GTRs0HL6VimhaLKxBIhGhrD1NfIdNZrdIQnaJg9jjI9jDHQT3Z0wjWIFFEiQSLtTSgbNpJq28aA1MPIXIzTwzA+liGb1lACMrF4kM7OEFvaMvQIx4idOYgxNEB6cMyRUTRUE9y8Ga2tl1OR3Tw1HHdjLPOoqkRnR4hdnWk2awcJDR8hf/wYRjpLqLUJa9t+xuu38fhUOycHTfJ5k7aWABubHePGyFP3o42NIddUI3RsoL/tRg6ONDE2aVIdl+hq1NglPU706INYC/OItfXM9F7P44ubGJyUqU9YdNcs0rf4AMrgMUjUMtpxDf3pFkbngjTF82xTjpAYeAJEkZmmHXzy69v4/F8rJBcEZNnCMJb9uJx/XcYmTVdqbfVMzkcuJFgoOc4Fggxw4UBDpX0/k7Bh6e9iQeNxPp4NfhlFURJRJqOQiikVXgcDlbwbKsKG0ihMyzWFXNrZILrQodQk0vT8GirEX5qWWJBTVEqkcEwjS30bCv4Npk31mUP89sd+A0XL8ujNf8BPXvKB4hzP9vy0inIJ/w2iwtzSKkZhwvJ37Btrx3jf699PTXyWI6e38hd3/1/yWrDi2PWocinFSibiy223XrVamCGe4/9H5fu/2J4Kv/zdDZfvfOQZBw62bWeB/8/9qbR+HnjDeh5zdOAYd7351nPadl3eyuv0eVjzbipssJZ9VIIV9rK/LLPIrrys0r7ssl+WXV+yvb1knbe8cP52hbE22P4Nvd+953Zhi8IfwvYdpLhvu7C/8ldlV1hWuYTSlj5BcMK/BKHoMi44LXyCIIDgTnIEAdG7uyLgPne+OETRmR27N0iosnS+dPwJwtk0T4ejvFHLkvv930bEQsBGtE0Ey0SwLbAtBMsVW3qiS9s1gix4U7g0yC5+mQo45xZLiHz6q3XUNqkMnjZ426uHmZ39RsHQypZk1w1bxhS8XG+x4GxtmGAYzsTCMJwOE8sDQ4U/tuC+ThFBEhzwIjteFYpsIwsWimig2BqikUfQ82CY2LrrOWGa7mtw/paiJCGqMoIsgxrAUkPoUpC8pWJYIjkNNM1C100s03ndgiAgySKqKhEICKiyTVDSCJgZhFzG7QTJY+muz4QiISoyQiiEFYySE8NkNIW8Dvm8iWlYCILgdKooAuGgRUTIIucWsTMZLF3HNi1ERUaMhDFDD6KJIVJ59y5lcQAAIABJREFUhUzOxjAsRBECAYlo0CJCCimz4KSIGAaiqiBEYmTV/yFrKGSyzh0nVRWJBU2CZJEzC9i5HIIsYYdjaEqEpP4F8nlnXhsNmoTIIWfnQdchEMQMREhZ/0ZWF5FFiKjO30DMpUEU0UNVZMwvoJsCkmQTkXKoWgpsi4Xcfk4OXU0m47iDV8UepqftIzx2hCt1pS54PRPzkcF8nreeOrGeuyyp8/IfWwfzshV3UXFdmUSifIyw7C+Vj+V9Z1bcTKj04H7BVlhWMlaouB+hbGzJuMJyYck453u/uN6/TdEvQCiuEwT/Ab1JgW97obgcsP2/CwI23nKxZH3hEd+YwnMnDcS7mWUjOF/7vuXOo3Matu2tL725ZNu48ypnXXM+xzf6DxIyNH4creVNY8cx/uK5xXHeHMs3T1sybytM13zzNu+fxzd57ey0+fi/GtQm4IGHBF75f46TzryGc6pl7gYuXWyXLlvVPLF0+drPreTo5727kv1UOMa573T9AMEvOWq47OsZBw6/LHUpgYZz2tUzDRuW+//umYYN/i+pSw42+CZKglA2lxBKgYP3u+ilZflggzvHcG+UELRN/ubU02zOphkIBLmjbws5SUQQLAS77McycVpELPCeF2CD28Zo+3/cCZZ74h5s6NuuMnTG4I7XLDI7KxRhg+j8eC7YJhKGJTkaUBc2mIYTkWWZLmywinc7PNhQ6ACRRSRJQJYFFBkUyUYRTWTBQrZ1REND0DXQdWzDdLoyzFL5hyhJCIqMoKogK1hqEF0OolkKmiGim6BrFoZuLYENigsbgoqFKhqoZhYhn8HO5YpyE0CUJcSAiqAGsAIRcmKYrK6QzTugoAAbFJFQUCAgW4TFHHIuiZ3NYGoaWLYDG8IhrFCMjBAhr0lk806CiiQJqIpIJGgREdJImUWsbA7bshAVBzbk1DgpTSWvubBBEYkGTcJWEjGfxs4XYUNWqSKrK+Q1558vEjSJWElHZmMYEAiRD8XJmSo5H2wI6ovO31yS0YNRMmYIwxJQJJuQlEPR0+SNWs6Mv5up6V8HQFEn6G7/FPXxHzl35C50Xaau0FfqV6/O+628jp+FZXe1CtBQcftlYMPyx1kjbFgCFcp2/kzABnzLvf2VbbsENpRsszxsKN+mBDYIArgAwdvfSrABr6PWdsYXQAPF6UFxJ8V11brOPw0+SZOh8VAoztuat2AILAMbyh9LJ4dLLojLqrPD5ltfN2htgQcfFnjl/5FIZ87j/S4InP2CeRnY4Ft/Ietsf5Nz3s+Vq/sLV5fpfORXEji0dPZx59/+dFVjz1c6AWsDeKsZeylJKPzLy+URzjJ7yXbrJaPw9n8+MoqzGUSahiexODcZhb+962ztceW+DaIkOXfsBc+vwTGDlGTXHNKVUUiSiBLw/BokAgEJWREIqE70ZTAguIkUNiFJ59r3vZym1AJafROLX/8hn+5oJCDkCFhZAnoG2cwha2mkfBoxl3YuFrNpyGaxshmsXN4xiNQ0zLzmXLi7SR3eP4wgSUhRm6pXn0ZuyWDNh6h76Dq+9pZ6CASxY3HMSAItlCATrCYnRUhajmfDXCZQMIicWyh6NuRzBtl0Hi2nYRkWlm2VGERGq4LEE0EiEZn6Won6uElDNEOdOkdMnyW6OIIyPYI1OYY+NY2ezJCbS2LmNefvL0vFNIqmRmhpR483MJPYyJjWyOBclJFJmJvXmZ5Ik0nlMHQTNagQigSobwjT0abS3ZCjKzJKdWqE8NDTGP2nSQ+OoadzWIZZ9Gzo6SNf38lQ1XaOzjRwYsBmdDRNLuMYVtbWR9jYHWRba5IWZYzGoUcwjxwiMzSKqRmo8SiRvh5yfVdzPLiHJ4bjjE0YzExnCYZkujtDjtwheJjq478gf+woRjaPWh1H3raTwc5beGy8jRP9joyivk5lV3eOXRwgfPh+9MkpRFVF2LqbU803cWC4kZl5G1WBrR159vAo4aMPYaVTiA3NTGy6mYNzPUwtSCgy7GyZYdPc/cgjpyEQYLF7P08aOxhfUGlO5OkIT9A4+Aif/2YHd/3zXhaTMrJs8/LX6HzwD0dpyuwnX/VCpqLd9PV0rvjZOe+6TE2artSlXx2BIJ/p3XTO25+LRKJSrVY2AZxV/rEW+YSzv+W9Girt73wkFKXLio9+c8jyZcvKKIBzMogURARZKno2QKlkwmciiSQVZBRFaYUbd+lJKrz4S0l2ZBSC6IBaWXEjL0Wnk9D1bCiRUIgKpi8O0xRk53dXRrFc/GWlRArPJNKwiiaRXpeibjhzOcN0fBsME8RUkpd/4Nm0aFnGO3bw3+/9L34rGMe2WTaVwvF08M/tKktgoSipsC2b+uoJ/vR1f0p99RTH+rfwue+9n2tfHCp5X/n9CPzvl5V8CgrH8Mk6vEfLJ5UoPa/Kklv/9oX9V5g3ir7vq0rrK3k3lPpHrF2qYVXY51pq2bQM37kIgnhO57bS/i9E3ffvN13YA1ym85FfSeCwmloP0ADrCxtW+jxd6rBhvT0bvP2fL2xY6QuruG59YYP/brpXlUwiK8EGWZFdGOHczZcVyb2jL6IoEqrqJVIIbiKFAxuCqo0qWez72Jtp+ul3MGJxTn3+XxE6mlCFPKrlRl/qaSRTczwb8lmEXBZ0DfI5rLwvjUJ3oy/9sAEKEywpJjiwoTmDtRAi/6NrEcR6iEQhGMYMx9FCCbLBBGkpTtYKktRCJQaR84smqVTRs0HXDPS8XoANKxlE1laVejYEM7Moc+PYM5Po07Pk55PoqSyWZzYZUFHCAccgsrG+YBCZDDcwodczshApMYjMpHKYhoUaVIglQsQTQVqbVTrr8kXPhpkRjKEBMqOOQaRt2QTiEcJtTcjdPSTbtjMVaOfEbD2nh2FiIks2rSEIAjV1Ybo6gvQ1p9nIcWKjp7COHyYzMo5lWISbalFbW8j37uVUeCdPj8QZGNZIpzSCIZmO9hA7O5K0y0NUn3gY7bRjEBlqa0Zs72ak63oOTbVyZtiZ1NXWqmzv0tguHSJ89ADG9DRiMICwaTsDLddxaKyBmXmbgAp9rRo7pKcIn3wCW9cQG5qZ6bmWI6luZpMSoYBNX8MCG1MHkWfGsGobSdd1c4LNLOYUWhM5eoJnePp/krz0o8/hqVNO0uBV11u8808zXNs7Qjw5R7a6lelQOykzwpW6UlfKqfUCDLC+kOFs+1tvr4by7dcCG5YmUlwc2FAwiHRhQ7lnQyXY4Hk0eOtKYEMBOMjFdAoPNvi8GWx3mRN/WQobLDcCsySRwpZKEim8+EsPNiyXSOE3iyw3ibTtUt8GO5fnNz7+W7ScepS5+m6+/K7vkQknsE3PL6s4hyz3wFoONixXdYkJ/vR173Nhw2b+4u73k9NCS8ZVej+WL/dfbC/nEbHEwNI/FyybKy63nVfiWS4+RUFc9mbWhYAN51IrwQDhMr24vlJL6wpw8NV6QQa4eF0NzvaXFmyolERRPq6w7Vlgg/clst4GkSvBBtPtelhrGoVdRrOdczy783Al2CDJkjtZERAFsdDZIMmiL/KyaA6pqs5zRRVRlFLYEFBsArLFtn+8k45vfR4zEOTUP3wVa2svqqCh2jlUM4eiZ5D1LIKhObAh75pEahpWLoed1xz9v6ZhGWYx+tL3BhElCTFiU/W7p5Cb01gLQQc2CHWuQWQcMxgppFGkpTgpM0LWCCwxiEylDJJuGkUu4yRRmK7/gd8gMhQpGkTWJESqIhZ1kSw1gQUS2iShxXHkxRnsqQn0mVm0+UW0xQyWbmBbFlJAdQwiYxGUhnqExlZytR3MRDqY0xOMLsYYnRKYnMwzP5sll9EwDQtZkYhWBWloDFNXLdPZoNERnaRx4TjK8HHMiQmyw+NoC2nXIDJAuKUBZcNG0h3bGVR6GV2o4vSoyNhYmnQy75hOxgJ0tIfoa8nSI58i3v841sggmaFRLM0gWJcgsKkPvbWHM7FdPD1aw5lBjVRSQ1Uk2lqD7OhI02ceIjJ0DP3EMYxUmkBjPfaWPYzXb+XQTCcnBmzyeYvmRoWuRo3t6mFiRx/EGBtBqqqC1k4G267niYkWxqahKirQXqexI3CYquMPYS8uQFs3c01bOJTpY2haJRG16Ewk2ZR+lMDoCexIFRNt+xnKNTM6H6YuqhFf6Oc97wrz9Z9sBaC51eK177J4ye1zNFkjxGaGyEXqGAr0spgLE5HzFT8361e+duQrdaUuoVpPuABrAwyFc7gEQEP5+kqgoXybtZhDettW2ma9DCIFz/zRZxApuN/zFWGDK38QJLkUNogF3WQpbCg3hZSKoAFBdGGDXIANdhloMAU3pQIPMkgliRRFyCAtm0jhN4lcmkhRnNtZuskLP/N7bHjyJ6Sr6vnKe75HMt5UhA22XZJKUW4UuZaqTUzyvte+j/rqSU4M9vHxL91JXg+znpqA8u4GWH0qxfnemS+HDUU4sz6Gk+WwYa37vdyMItfr77p8Xb7zkSvAgWcONKxm/FpBw3L7XAk2lI8/G2yotO16wIZia9rKsMHybb8W2GCa7vHOAhvswroLBxuW3qkpjb/0OhtEwfUlkJ0OBz9s8GQUkuh5B4gFGYUs+2CDYrPpm59h0+c/gi1JnPnLz2NcvZeAkEO2dVQji6qnkfUMopZB0DWEfAbybvylF32paaVJFIaJbVlFI0tRRIzgwIaWNNai29lAHf8/e+8dJdtal/l/3h0rV3V1VedwcriBSwYFREVHQUEGFUfUAZ1lGCOioIAgQSU5II46ZsEEOOLgMrB0lJ86hhlJF27i3BM6nA7Voaq6cu38+2PXrtpVpzqddM+9t79r9eqqvd8dqru6692f/TzPl3gSL5bEjqWw9QStyAgNxYcNVSNKw1K7sKFac2k2beo1swsbLNPqU4aoukokqqHHNFJpnZERjWzGb32Zjhrk9Aoj1ibx6hpKcQ2qFexiEbNUwaw1+5QNWiqGnhtByaSRJqZp5+cppubYaOfYbkRY2xZsbpnslFq0GkYXNvjdKOLMTCiMpy3mEtuM1y6jrV3CunoVs1jGqDQA0DMJ9Gwa9fgJmrN3s6yf4fJ2hrUtwfp6i3rVQJYlRvMxxvMqZ6cNTkUWyC7fj33pAsZWCcew0LMpIqdP0zj5dNYjJ3i4kGPhqkWtZhKPq+RzGnfNGZwTjxC/+BnstTXsehM9n0Ocu4/F/LO5Uh3j0lVBu+0wlle5d7bOvLJI5uL/w15bQ0okcE4/hc383TxUnKawDfGo4PxUg3l1icyVz+HVq4jJGdZmn81ya4r1skYi6nF2dJsp4zL65iLoUcpT97LYnKbY1IkrNp/6aJ1f+eApak0VXXN59fe1ecl3KOTTBuPeOvHGBq4aoRIbp9GOossWSaXOUR3VE7luNlgI162CDPvt+6D2iWHHuxHYMGzsjcCG/udSV9UQjD2wjaIDErqwofM53wcjhNSnbBCy0gtfCmBDuBPFXrChAxe6wCFkmxjsSNF9jNTX/jKwUQx2pHBd0e1GEe5IYTsBaBAdwODDhmCe5jh++8uv/NBPcNe/fBQjmuSPXv+XbI+dDt1o6tgmOuqG8M0iuFbdEK7B56PpLd78X95EfmSTS8tneM/v/iwtI+b/7va5qNuvreau2w05p8GuFLeqhu37RtUNt7Ou5/we910pnkT1pAUONxMywM0HDXBrVA2D4x6PsMELjT2MsqF7zNsIG4b9Mxy0UgzCBlmWe8oGReq0vwzaXfqZDYGyodeNIfgSHeAAmuqhqR7HPvVR7nrfjwOw+I4P0P7aF6F3bBSKa6HZvrJBsgwk00CY7S5scNttsG0fOlhWpzOCDxvCJSkyIuqR+s5LPdjwt89DkPVhQzyFHc9gxkYwlRgNJU3NSVA1Y1TaWjezoVpzqNUs2m2bZgAbOjaK4GcXwIZYUicW08hkerAhF2+SUhtknG3itXWU8gbu9iZOtYZZ9mGDY/gZCZKqoKViREYzaOPjMDKKmZ+jlJqn0B5jZSdGsSIobJqUiv2wIZGKMJqLMTWhcCzXIh+tMNG8TGTtUezlJVqFLax6CzwPLR0nOjOBMjFJe/Y8q7EzXC5mWViF4nabWqXdhQ3HZjVmRk1OxZbIXf089sVHaK1v4Vo2eiZJ9NRJmqeezkXlbpa3kly+6lCtmsRiKsfmdI7lDe5Sv0Tq0qcxFxdxGi3U0Qzi3L1cnXouX9yYZG0LGk2bfE7hnrkm5537iV29gLNyFSkewzvzFK6MPpfF8iirW4JoRHB+usFdzueJrV6C0jZifJr1Y1/Ow5V5SjWFeMTlXG6b4zufQS1v4OlRStNP4aJ5ip2WxsIDNr/1Hrh4aRSAr31RjR9+o018LMqIXmPKXSbSLGPqKbajs9SsBBmtxoi7hWrcYoWD4AnbhuqoHgd1C25mXQ9kgDsbNAzu40byGsJjbgts6ICEPtgwmNnQUTx0YYM0JLOha6kIwQbhBzwOgw0ENgoh9bW/dCQVD9Hf/rIDG4LchvCXHYYOrsAJPXbDSobQY7fvuw8bXA+e+afv5pl/9cvYisbHXvtxVueehuP6odD+HCwEFbp363dXN+xmpxhNb/LG73kTY9lNLl09w3s+9PYubDhIBUDioOBhcP43zErRHXuT1A27n8uTR91wO+vWqxt4Qs9HnpTA4TrB5U3b151ooRgcf6thQ2+72wMbAmK+V2bD7YAN4RoGGySpBx0C2CCrShc2BDYKVeuERGoyqiJQVf8rsFEosp/bMPO5/81T3/IahOdx9XVvpf7KV/qwoWOjkB0TxWwiWW0ko+krGzqZDV6gbrBsX9lg2SFlQ6A26Jx3XCL5qkdRphu41YgPG7w8xGN48RROLIUVTdPSUrTlOHU3Ts2KUm1r3cyGaq2X2dBuWhgtHzYENgohCRRV7oQ0aqTSERIJhWxG7mY2ZLUKSadMor6OWlrH297ELpaw6s0ObDD981UV1JiOPpJGHRvDG5/CSo9RSs2zYeZZq8ZY24KdHZPydpNmrY3juKi6b+EYzceYmVKZzxnMxDYZaa0RW38U5+oSrbUNzGrThw3JKLFpP7PBzM+xljzH5XKOxVUoFJq0GhZCCDLZKHMzOucmG0xGNhhbuR/vygXaa5t4joOajBE9cYz2qadxRb+HR9bSrG867JQNVFVmdlrn7ulOZsPlz2BdvoTTaqNmkiinz7My8xwe2J5mac2j3XbIpBXOzxrcJR4kdvGzOMUthKrA8XMs5Z/NQxt5tnf8LicnJwzOi4eILXzBVzZk82zPPp0vVefZ3FHQVI8T2QrHal9A3VwGRaU+fprL1gkeuazzsf/h8Y9/47e5PDFV4x1vKXDsKyaptBPossmEt0pi5ypmbISd6AQb7Sy6bDHibpGsF7C0W5vh4EEnnf2ojurxWdcLGODgkGG/49wIaBi2791UDeF1NwIbBhURXSDAsAyHG4QNocyGPWFDyEbRhQ2dnId+lUNI2SAESIqvYhiEDVLneQdIhHMaPCH6VQ6DuQ0Ddgo/HDLIcwipHFy6lgp/XtaxVXh0IUPw/a6/+W1e+MdvxhOC//WDv8/lc1/ZnWcFuQ1uaB4XzM/CFczN9qqR1DY//T1vZiy7weWV07z3Q2+jZcQZjAs4yAWxEGLo8cJhkbvldQXrA9iw3/GEJA51kT5MRRu+KL6ZF/y3GjYcqRv8eiLPR56UwOFm1Z2gathtv4eBDXuNvd2woXuMXWwU4e1uBmzodqm4jm4U1wMbuhOl0CdfGDZIstQHGyTZVzTIstTLbFBlVMWHDZrqB0T6doqejUJVPMYe/Xee+ZPfgmRbbLz6Byh//w+iB5kNdgvVbiHbJpJtIBl+SCRGGywTzzC6sMGzLP8rBBq6567ISBFIfvtFlOk6bi2C8bfP78CGJF4kihNL+QGRncyGICCy2tZ2zWww25avbOj8foKfRxAQGWQ2JOMSo+leZsOIuUG0VUIrreMVN30bxU4Nu2X0KRv0dAI1legGRLZG56jFxti0x1mvJVjbEmxvm1QrbRp1A8fp2SjSmQhTExqzOZPZxBZjlYvo5TXclSXa6xuYtaavxIhFiE6Noxw7QX36Lrajs1zeGfMzGwpNmnU/IDI9EmF+NsLZqRYn5MukC5fgyiO0Vgu4loU+OoI2NYF55qksJu7lkfURllctGnXbhw0zEe6aaXDGeZDEygXsK5dw2gb65DjS1ByF+efycHmOxVUwLZd0SuH8nMVd6pdIXurABllGnDjH1enn8vD2BNs7oMiCk5Mmd+kXSC4+AEYbMTpGef4ZXDBOsV1TySYdppJ1ThgPohVXcVOjNEdmuGCf5bd/M8r//F1BuyURjTi8/j9f4L/8QIvt+DGqpsxItMWEtkm0XqadyFOKTtNwYyTUNmm5gmKaNGJ52mpi6N/SUR3Vk7VuBDAEdTPUDLA7aPCPcWtUDYPb7ZbX0L/uxmBD+HwOY6PoHkf01g3aKLqZDEF+Q7BcSL1wyG5+Qw9MBLDB69oq+mGDHwzpj/cfK13A4HWtFBKOp/TBhmFWit7jcG4DHaXDtbkNPYWDh+PC8X/7BP/hN34AgE++5pd5+Fmv8DMbvGD+53XnchC+gA6Hg+8/iU4nSrzxu9/MeLbAlZVTvO/D76DZHg6th/0NHOYidtAqsVtXir7Xc8A54mHOaz8rRXffnS4Q4aDG3S70bzQo8jB1p1s94DapG57gdQQcrqPuFFXDbvu9GbBhr3DI8Ha3Q9nQPY+Aeh8ANgQS/P1ggxv6YDgsbAh/IPqv9XCwoSfbFN2OFEISfcoGOWSlUNQAPPjhkJraCYjUJDQVv/Vlx0Yxsvooz/2xl6E06xRf+q1svumtaLKFhuEHRNotX9ngmMhGE8lo+gGRRhvPMvFMA7cTENnrROF2f8HBxEnSIfltl1Bmarh1PaRsSOLGU7h6rK8bxbCAyGGZDY5lY1s+4PCVDUo3IDKR6mU2pOMuubjBqF4lY20RqxVQ6iUo+cqGwEYRBER2YUMyhpof7QVEJubYsTOsVhPdzIZyqYXRNLEtp2ujyOdjjGYV5vJ+ZsNE7RL6+iXcrQ1aqwXa5RoAejqBPprxMxtmznNVP02hmubKmkxhvU2jZqIoEvGEzuxMhNNTBif1BUaufgHWrtJaWcNptdGzafRTJ7GmTrKcvo9HNnIsrtrUahaKIjE9pXPXTItz4hESlz6Lvb6KXauj5bJ4Z+5lK3+Oh6vHubQq0TIc8p1zvyv6KCOX/h1nfRUpHoeJGdbmnsND29Osb/s2iumsPy678GmolHHHZ6iNneZL1llWSxFiEZfxRINT5heJrT+KG4mzPXEPf/aPc7zvnTHWlv33+zd95Srv+aHPM3LXBIvSaSqtCLlYjbxXILWziqmnKESOUzESRBSTcdaINco0oqMUyeM48tC/p5tX/sXAUR3VnVq3EzAc9Jg3ChqGHeMgqobwdnvlNYQfhyHC9cKGfshwgzYKqQMXwsqGYW0ww7AhvKxjneiHDUFeg+iqF7pdKhB4ogcgrrsjxUBIZAAbwrkNAWwI5m+OA1MP/TPf+IFXIbku//TNb+EzL/oBXKcHEsJdKfZSN4Rr2LpkfIefes2bmcitsbR+gvd++J0024muQv0gF9EHURn0t4jsH3utIuPWXKgOb4e5/7EGu0IcpBXlnWqlCP5un1hKhyfufOQIOByibhVogNuT1zD4/E6DDZ7b2++NBkSGz3E3G8XNgg0H6UQR1G7tLyW5Z6W4Rtmgyn5WQ+e7pvntL1XVVzaoCr66QfXVDcnKOl/2Yy9BK2+x8/wXsfau96PJNiommuMrGxSrhWQbyFYbyWwNwAaz2/7SCwIinZC6IZi4aYLEKy+hzFdxGx3Y4I51YYMTS2Fr8W43ipqTGAiIvDazIaxsCGBDkNmgRVSSSb0vsyEdMclFKmTcbRL1Amq5ANWdXWGDloyhj2aQ0ymkiWmM3Cyl5CwbRp5iM0qhJPcFRPbBhrEYM5MK+bTNXKrIROsKkcIl7KtLWMUdjBBsiE5PIE9M0p7xMxsWSlnWixLrhTa1moEsC0ZyMfKjKqemLE7Flhhd/SLu5QuY2yXsloGWSaGfOEHzxNPYiJ/gka0xFlZcahWLSFQhl1U5N2NyVrtI6vLnsJaXcNtt1GwGTt/DyvizWK6PcXldodF0yI0o3DXTYE5fJbfwGdzCKlI0hnv8PNv58zyyM8daUSaiw+mJJnORNUaXvwDVHbzcOFvTT2PFnGa9EiGqu5zMlpiyl4huL+JpER6y7+Unf/A0//R3/sfK8RMWH3jd/XzN01cx4qOsarPUWjoJzSDHJvFWEVdSqUbHqFtRNNkmITfQ2w0cWaMtxXEcGUkc3Vk4qidP3Qy4EK6bZZno7u8Wg4Zh+9nLQhEef5C8hmD5sG1ui40iWBaGDVIvLLKrbOi0wySwVBwUNgxpf+kFoGEQNnTCIV1PwkHGu0bN0J/VEARFBiGRntdTNfjzs459IpTbkFl+mJf/wstQzTaf+5rv5x9f8ZYBG2tP3QB053Jwrbph0E4Rnm8lYhV+6tU/w/TYVa4WjnVhQ9/7buB9thuA2A069NkVQkAkPF8Mnu+lbriZdVB1w2HqRtQNt8NKcVSPzzoCDgeo6wENB93uVqkaho3bDTYMs1CElw9aKPxlu8MGd2C7YbAhvO+9YMNBMxuCVpZdC8XAB9QgbNgrINJxnO6+DgobDuLNCz8OJiXh9peyHHSikLuqBilQNOgKWkfloHa+tKAjhUwHNrjEzBpf9uMvI7ayQP3up7L8338LLQIaBqrTsVJYLWS7jWw0EbbZCYg0oNONwjM6VgrHuTYgMphQqYLEt1xGPV7Ba2qYf/8ChJOHWBwvluzaKIKAyLoTp2ZGuwGRtYboy2ww2zZGy8RomdfABi2i9gIiR7RuZkMu3vYDIt1tkrU11HIBr7iJU61ilStYtSaO6Xej6MKG3Ajq2BikRzBzM5RTc93MhmJForCKo5ggAAAgAElEQVRpUSq2aNQNXMdFln0Vgh8QqTI7apCPVZloLxBbv4hzdRGjsIVZa+K5LloyRmRqDPn4KYzcLGuJM1wu51hYExSLBrVKG4BMNsr8jMZ01uJ0aoWx9Qdg4QLt9U1c00JLJYgcP0b7xH0sRO5muZjmygpUKiZaRGZ2SmMub3EudpnswmexF6/gGiZKKoV06jyr08/i4eIUa0WZas0hm1E4N93ivHiIxNWLuGvLCE3HPeFnNizXc6xsKeganBpvcV48TGLlEqK0iTc6xtbsM3m0cYxiQ0NTPU5mSxyvfxG9skHL1nn3X76AD/7mBKYhiEQ9fuRHdnjDKz6LLgzKmVOUxBhlI8GI3vAVDM0SthKhHJmk5iRIKC3SXgnNbNHWkjSkFK4nkVF2UJ1b3RaTJ+wdhaO680twcyHDYZUMHPD4hwUNu53LrbBQ9C+7ftjQt40YHhx5PbChz0YhetkNfcqGDoToqhp2UzhIUj9sCCBD8DXY/nKYqmFIRwrHk/wgyUHY0Mlt6Fc59IdEhpf5EMKfl0U3V3jF219MpLHDhWd9E3/9mg92oETPSnGNuiE0TztoxSI1Xv9dP8Ps+CJrWzO858M/R72ZRoh+lexghQHEfhfZAWy4Nkhx9+d3mrphWA1e8D/erBRPLHVDp56g85Ej4LBH3UrQAEew4SCwoXeMvZUNwT+dvWBDACX260YxSKlvFmwYFhIZtL8MYIOsyMhKT9kg9Skc/LwG30IhOhYKUDsdKXRMnvPGbyX18Odozx5n4bf+CDWpodFGc1oojolsGz5sMFsIq40wDV/dYBm4puHDBtvqdKSwfYWD1wMAQkgITRB/+SXUk2W8torxqReAPQkxHS+exu7AhqaewZCi1wRENttQrbs+bKj7NgrLsK9RNgQBkfGETiKpE08ojKTlXmaDViHhVUjWC2g7G10bhV1vYFbr2G0TPA9ZV1Giut+WciwPY5NY6TF2UnPdzIZCUVDesSmVWjRrPmxQFBk9pjGSizE5rnYzG7JGgfjmJdyVRdrrmxiVBp7roiaincyGk9SnzrEdneVKZYzFdYmNgp8F4XqQzkSYndY5PdFiKrrF+OaDiCuP0F4t4JoWSjxKZG4W8+S9LCbu5cLGCOvbUC4bvo1iQuP8dIPZyDq5pc/iLFzCabZQ86N+ZsPss3hkZ5aFdYlWyyGVlDgzZXBOvUDyyv14xU3/fTt7gtXxZ/Kl4gRbO/4H3HzO4Ix6kdTSA1DbgWSGnal7udg+TqGio8gec+ka861HiGwv89f/Psvrfv15LK1EAPjqF9v8zJu2eUbsAZRWlfrIPOveDJV2lKhikRObJKtr2FqcemSUoplBFh5JqUKiuYUjazS1MWp2grjcJG5WkB1zz7+vm1FP1JCmo3py1K2CDHDrQMOwcU8E2EAwJgQbRKfzVFfB0Kd4kHoQYi/Y0Mlw8KGC6CkbhHQNbOhrf9mFDde2vxzWkSKscHBcCRfRDYnsgoWOpcLtwAbX689t8DxQKjv8x3e8hNT2Va6e/XI+8cN/6AOOkGohmHu5A3PKoMLqhnCF51xRvcFPfNdbmZ+8QqE4xXs+/C5qjUzvvRH6374ffBh2sT1sm2FBkX1zR2//oMjrtQPcyqDIG4UNT8iL/8egnqjzkSPgMKSuFzQcdNv9/iZvVV7D4PjDwoY+idh1wobw9m7f/obDhv4k4OGwIQAIwTF3gw1hgr4bbHBC1oHrgQ2e6w6dCO3W/nIQNgSdKOQOZJA6oEHT5D5Vg64LVMW3UaiKR0RxeOY7v5fcv/5vrGyOy7/zMeR8Bk34qgbNbvkdKawmktlEmG1Eu+V3pAiUDaYPG7rdKEJviu55qxLxl11GPV3CMxSMv38BmFMQT+BpEexQN4qmlLwmILLa8AMiq1WLes3str4MZzYEGRZaROvLbEh0AyINsnqNjLNNrFVCq2xAsdONolLFbrR82ADIuoqWjKEk4qj5HCI/SXt0jlp8jE13grWan9mwsdU5n5qBbTsoikw8HSGV0pkc99UEs4ki4/XLRMpreFcXMNY3MSt1H47EokQn8ijzx2hOn2NFP8V6NcPCukxhw+jChlTaz2w4NWlwQl9kpLSAsvAI7bUCjmF2oMgY1ql7WU7fx6Nboyyu+nBGlgWTExrnZ1qclb5EcuUi3uIlnEYDNT+Kd+YpbOXO8KX6MRYLMobhkohLnJqyORe7zMji/bhbBX+SPH+atdlnc6E8xdaOhCTBbM7kbOwKIysPQKsByQyV2adw2T3NVk0nHXMYS9Q57l5g7cEKb/i1r+OT/zIJwPxJj9e+2eBlX7FKprmOaFvUR+YpqHMYlkpKa5NTt4m3yhjREXb0cVpulIhikpRqaFaLZjSLKUdxPJmE0kCnjSXrmHKEozp8CSGOeZ63+Fifx1Hd/LoewBDU4wk0hLc/TF5DeMxebS+DZcNgQ3i/h4ENkiL32yiCcwoUDGHY0IEKfcGRAWzoBEN27RRSDywghZQNHdtFGDaE7RSDsMFB7ikbhnSk6A+JlHq2Ca8DFjq5DYN2isBK4XketA2+8V2vIL/8INtT5/iTn/wEhhzx51oDVord1A0HuXiNaE1e+6q3cmL6UTbL47znw++iUs8ipOEXvweFD4O1l7phWFeKofvY5W7+4Pv9oBaJm3Fxf1CFQfjvczclxWNhpbhdgOMoMPLm1BFwCNWtBg1w81QNw/b1WMCGa8f1/gkMgw1eIKMLiPYurS/DFopgXAAbHKd34R/AhjAJH2qjOARsCI55GNhwoLCeEGwI2l9KQurCBt9OIfmwIRQUqao92BC0v+wpHDx0xeWe3/gZpv/yD3GiMa78xh/B8RkfNjhtNLuNbBsoHWWDZBoIs92BDUYPNgStL4NuFJ3X151IqRLRb7iCenYbz1QwPvV8aE9CPI4bTeLqUaxIipaepimnugGRVUPvwAb8gMiWQ6Nh0WyY3daXwc/cByx+QGQsGenLbEjGPEYTJqORaiezYR2lXkaUNrFLxT4bhed6yJpvo9BGR5BTST8gMjdHKTnLjpNhvZ5kvdjLbGi3LCzTRlFkYkmdXC5KdkRhbsxmNlVior1AtHAJr7iJWdjE2PEzG7RkDG0kjTp/jPb0OVajp7lSGmWjJLFe8G0UQhIkYxoz0xFOTpqcjF8lt/oAUmEZY2UFu9Hyu2YcO449dZyV7H08WhxjYRWqVQtJEozlNc5Om5zWLpFeuB93fQW7WkPJpOHEeVbGnsHVxhiX1zXqDYdsRmZq1OZ8coHc8mfxCitImg5jkxRmnsGFnVnWigqaCuNpi3OJRfIr9yMqRdyRMRq541zyzrKyE0NXXI5ntklVrvL+D0b5wMdejGHKxBMu3/79Ht/yKovT6VXypQtItkkzPcWKcpxKO0Zab5KVimSqK9hqlG19moqVQJUcctIW8VYJQ0tQlvKYjkpcbpKyiriSTE0ewfZu8cdUMMm/zSWESAA/B1wCEsAs8AbP8xpDxp4HPgg8B6gDHwHe6HmeFRrzLuCnQ5v9GvBDt+wFHNVtqxsBDHA4y8ZeoME/l8dO1RAePwgY+pfdOGy4nsyGzobddcNsFCJY3lEydGGDJPvtLrsqB9Hf/jIMG4KOFELqa3/pXgMaBpQNw9pfetfChq59IgQZHDdQOvR3o/C8fiuFY7l8/QdezeyD/0BtZIqPvvGvaMZH/I4Ubi/bK9wGE/afQw9e7Gtqmx/79rdxeu4RtnfyvPfD76JczV3zXthVYbBLu8vwNuH1g20w++d/A4qHA7bBHHpeu+RHwM21Ulyz7yN1wp1Rj9F85HbUEXDgsQcN/n5unYVicJthsMEbsn4QNgxudyOw4SA2Ci80bhAadJcdADbs1Y0i6GbRlcQNSOG8AancYWBDABSCx2FlQ5/CQZH77RNq0P5S6oREhvIaFIGuCb8rheoRUV1OffzXOPW778GTZRY++Ds4T70HVViononqGChO21c2WD5oEJ2ASIy2b58wDdxQ60s8t/81Sb7tI/riBbTzm3iWjPmp50Fz2g+IjPkBkVYoIDLIbGiaCtWm3JfZ0GpZQ1tf+jYKpS8gMp3RfBtFyiUVsRiN1Mh4xZ6NoraDE8CGeqMDG1xkTUGNR30QMJaHdBYzN8NOcoYNM0+5FWWtqLC5bVEut2nW/NaXkiwRjWvdzIZ82mE2VWbCXCK+cQl3dRmrtINRqtDNbJgcRx4fx5g5y1riDAs7ORbXBaWy31ZTSIJMNkouq3Jy0uZUcpWxjS8ilh7F3NruwgZ9fo728XvZSp3kYnmChTVBpWKi6zIjGYUzMzZnY1cYXf48zvICbrOFkkwgTpxjbfoZXChNsV6SqTdcMimZM5MtZmMFxlbvh8IKQlFx5k9Tzp3hYmOetbKKpsLxfIvp6Cb5jQcR1RJeepTS5D2sezOs78TQFI/ZdIXP/UWJt7znPFc3/BZjL/kmk+/6EcjlPWbi22RrV8HzMBI5tvVpmkaEuGqSlYok2kVcWaUeGaXlRFAlh7jcRLeauJJKW4njOhKKcFDx1SmOUPB4YkoLO/UnwL95nvcrAEKItwO/CXxHeJAQIg28o/NVBV4F/BQ+eHhbZ8woMA88q7OZBzx0y1/BUd2SulHAALcHMvjrbhw0DK4/rIVicNywThTB81sBG/a0UYRhQ0fZEFxUdLMcui0vA5XDLrBBSD3YMKT9ZV9uwyE6UuwWEul6hB6Lbm6D11kewIaulcL1eMHv/ARn/+VPMGIpPvbGv6SSm+/ChmBuFrZSBPM26M3pwvO6YaUqBj/yyrdzdv5BytVR3vf776ZUmUAS/crZ8HtgN8XDoZQOA2PDQZHD1t+qGmalOPQ+bmJY45G64agOUk9q4HCj/xtupapht/0fFjbspYK4XbAhrJoIYENPRdAPG3rH6H0ABefhul6nlVJnne3uChuCvIb9YEMAEFw7sFyE1Az7wIZh/4h2k3oGX4GyoWenkHrKBllCUeSQhaKjcBiibIhoPmyY+6c/4+73/hgAS+/8AMZXvRBdtFE8yw+I7HSk8DMbTCSz3etIYQZ5DXY3JJLwB2h3wgXRr1tCu3sDz5Yw//EFeI0ObIgmcKIJjEgaU433AiI7mQ0NQ6LaEH2ZDUbbpt00Mdt+y8ngZ6SoClpEJRrXiMY1kmnVD4hMu4zG2yTVFiOiRLK+2bVRuLUq9k4Fq97Eblt4roukyD5syKZR8jm8/CR2Kk85lNlQqklsFm1KxR5sEJLwAyLzvcyGfKzOpL1MYuMi7soixsYWVr2Jazuo8Sj6RB55/jhWboZC+iyLlTxLGxKbmwaNhn/hnM5EmJnUmBp1OJkuMLH9INLiBYyOjUKJR9FnpzFPPoXlxD2sVEa4siZRKpkoimBqQmU6Z3M2tUz+6v24S5dxmy3kRBxx/DQbHbXC0oZEq+2SSkicnjI4q10kvXEJaX0RhIQ7d4rV8Wey2syzUtKRJZjLtX3FxNYCcmkDL5mhNP0ULlsnKDYiyMLDLdV4w48L/r9/PQ/APeea/OhbXGbv0tBlh6nYNuO1y8h2m2pmjh0px46RJKoYjIkC8VYJR1IpxueoOQk0ySLlldGsNrak0lBz2K5CXK6jOgaeJ1FXR/AQ6LSRCIWW3qq6zZ5JIcTzgRcDPxFa/AfABSHEOzzPuxBa/g3Aaz3PW+08/6IQ4gXAi+gAB+B1QAvIAP8YVj4c1R1e4uYABjh8+OTNBg3DzmHYuOu1UISXD4cONwYbrjezIWyj6I3t3KmURJ+yASEQstJd3oUN4bwGWemCBy+44xmM62Q2hGHDYTtSuFyb1zAsJNLttsCkk9PQ35lisAXmfX/2fp7+Fx/EUVT+7Cc/zubcU3rzsmCeF8wHB5S1u11ADl7EK7LJD33rz3HXifup1Ed43x++m63yZO/9I8Q10CH8fjj0xXFnzth7HgCR4bkJuwVFHqT95PDj736za+hxruN1Hqkb7rA6ynB4YtXtUDXA7YUNN2KhCD/eDTYMa3sZPA/Dht74w8GG/u0Gx3qhfeyvbOhbvgds6B/bs1DAtR8s+6kaBidng7kNQfvLMGyQVaWravCDIn1VQ6BsUBQJTQ1CInvKBl31mHjg/3Dfm74L4Xms/tibqH/rt6IJs6tsUO0WitlEsnxVg2SbA+0vjU4XCqvb9jJ4jb3+4YLIixbRnrLegQ3Pw6vPQTTiw4ZOQGRLT3cDIutWpJvZEARE1up210ZhmTaWaXehkA9gpA5s8DMb4nGVbEbpy2xIiBqpegGtUkCUNnHKZexaHbNSxwkyGzQ/IFLLplFzOd9GkZ2lFh9jyxljrZZgvSixU3EoFf0gx6D1pRZRyWSjjI9pzORtZhIlss4mya3LsLqEWdjEqtZxbRc1HiUykUeZnac5fY5SbJql+jgLGyrrBYN6ze+skEpHmJrUOTVpMBkrMbnzMMpSDzbIuoY2PYV14h6upu7h0WKOQlGwXbKQZcH4mMaZyRYzsU0mCvfjLV3EaTRRsiOI8Wm2Z57GxcY8S5sqrbZLLCo4Nm5xJnqFkatfQGxv+L/b6eMUJp7Kpcok2zUVx4W5nMmp6BIjqw8h1cqgR6lOnGPRPs5mLUK7CX/7EZuPfSiFZUtkkiZv/JEVvuo702y3U0QUm1ykQr65hGLUaCXH2RIT1M0YknAZkcsk6lu4skpTz1B1knieICYaRI0qCEFdzdB0o2jCQrebqI5BW01gehoCj4jXQPbsa/7WbnrtcWF1i+qrANPzvEeCBZ7nXRJCmMDXAxdCy/94yPZrQNh6cRp4KvA9wLYQ4oc8z/uTW3LmR3VH1c2GDHBzQMOwsYdVNQxusxtsGBYOGV4+DDZ093vDAZHStbAhABBhG0XHJiGkcI5DBy50LRVyT9kgRH/7y3CGQye/YVfYsE9HCr8N5l7QIQwbRDe3IWyn8LxeboPrwclPfYSv+L3XA/BXP/whFu/+Kn8O5/bG7KVuOEjJksUPvOLnuffkZ6g1UvziH76LjeIMvqCrV1Lngm038LDXxXjYTrFbG8zBscH6/eog0GHQqnG9tRd4uF6FwZ1yt/8JH055++cjt6WetMDheupmgQZ/X3deXkN4u1sFG8LnsV9ApBMiy/6Hm8tBYMNuAZHh1pnXCxsOmtUwCBuC9pf9ygYfMgTKBlnudGbQZFRNRtUkFNlXNuhaT9mgKh7Z5Qd55utegWwabH7bayj+4I+iCxPN80MiFcdAsVpItoFktHxlg2X2t78MwiFtp2ulCL8GIUtEvnIZ7WlreI6E+X++DK92HGJJPC2CE036mQ2DAZGhzIZWy1c21Gt+Nwqj5asabMvPWRCSQNVUFFUmGtd9G0VaI5mQyKY8svGejSLeKqFXNpDKm76NYqeC3WjhGFY3s0GJR1ETMdTRLGJsknZ2pi+zoVCS2S5abG+3aDctbMtBliViSf/YE+Mas3mHuWSJcWOJ+M4K0voiRmEDs1r3j6Or6Pksysws7elzrEVPUWiMsLChsb5hUqsZyLJENKYyOaFxctLkRHyFbHUJbelLmGtrOO02aiqBmsvhnLibtey9XCyNsbQuqFZtJAFjeZUzUwan9ctktq4glh7FqddRMmm8E+fZGT3JReMkVzZ0Gk2XbEZiYsRXQuRWH0Bsrft/lJNzbE0/jcv1GTYqKgAzoyanElfJbTyE1KhCNE5t8hxL4hQb1Sif+QeP3/slwdaGDsB/fukSP/GmBozm2GwliGsmU5FNRuvLyI5JMznJljZNy9LRZYusWiLZLmKpcar6KG0viipsYnID3WnS1pJYko6NSkxqoWLiSCq2pGELFRULCQdbaDio+/7NPQ5rGigPWV4Cju21oRBCAp4GfHOwzPO8V3bWnQM+AHxECLHped4/3KTzPao7pK63heaNggZ//fXZJwb3vZuqYXDdYcMhB5eHxw4CBf/JjcOGrnWiM7YX8iiuhQ0duBDkN/RsFFJvu0DZEIYNIVuFt4uyASH27EgRVjXsHhIZdKIQuPRyGwJVg69yoGul8Od2MPW5v+M/fPA1AHzq1b/IQ1/2bR3I0FM39NllA6tsd161f1ikJBy+9+Xv5qln/h/1ZpL/9sfvZm1rvu93PrjtXuBhsPpDzfvVtn0ZZqH54+Axw+qG3bMjpM4xDn7xfr25YcPqsWyDGdT1qj2O6vFdR8DhgHUz7BO9fT22eQ3h5bcbNhwmILJvPyHlwjDYEGQx7NmNonOuTuhu/s2CDcNbbV3b/jK4my/J4WDIILNBRut0p/BVDVIfbAiUDcniVZ7zI9+AWi1TftFLWHvbu4jIFhoGmtNG7XSkkO02stVGsjo2CtsGy+i2vfQcp/vVex09H6r+gqtoT7+K5wrMf34OXuUkROO+skGP+d0oBgIi64bWl9nQajnUOrCh3fQDIgNwFNgo9IjaaX+pkc5oZDMyqbhHLmEyGq2RFmWStQJas4y0s4VbKvo2ilrDD7nsZDYoncwGOZVEjE12Mxs2rRylZoxCWWFz27dRtBo++JCEIJbUyWb9gMiZvMtMaocJa5nE5iXEdgFzvYC5U8WzHf8Y6STq7CzGzFnWk6dZrOQolBXWCha1ioEkBOmMTnZE5fikw4lkgbGth1A2r2KtrmDXGyixKNrsLO7EHIX8vVysTLK4LlGp+Er40U7ew+n4EqMrDyA2rmLvVJDicby5UxQmnspKe4LLm1FqdZdkQuLkWE8JIRWW/btkuTzF6fu41JpntezbKLJJm5PJdcY3H0Aub+ImMrRG51iST/Nvn0/w278o8eBn/ffx08+V+cDrPs/pF2RZ4ji1ZgRFcpmIFMnVlpDtNu3oCJvaDCUjSVw1yCg7jDTWcIXMTnScHTvdVTwkjSKWHKEupzFcDV0ySTg7CDyacgrLU5FxiLp1ANpSHJdbTfvFrWpDlRNCfCb0/Dc9z/vNzmMDGGZ7kGDf4IrvA37J87wvDK7wPO9LQohvAP4J+F7gHw591kd1R9X1AgY4GGSAm6doGDZ+L1VDeD/7qRrCj+8Y2DAwthsG2YEKgV2jDzZ0ukr0tb2UpL72l14HSPS1vwy3wBRy11oRLDtwSOQQ2BCERHqd790ch1Bug2+fuDa3IXvpfl7y869Ati0+89If59Pf+ON+ZoPXscAOBkWG1A1wsHmvEA7f89L38oxz/0yzHef9H/kFVjZPMNiNYjf1wqDNYrdxe13QD4Mhw8IlD1r7gYfbcRf/MLBh7/nv9dlVjmpY3bL5yGNeR8Bhn7odqobdjvNEgg172SjCFgp/fwEVJwQJ9u5G0aXju8AGt7v9rVU2AL2gyJCyIdz+UpJl5I7KQekAhuC7qg12o6DbjUJTPWKtMs997UuJFlaoP/VZrLz/V9FVpwMbOpkNtoFs+6BBGE1f2RC0v7RsX90Qgg2e/0MNXgRCkdGfexX9WUs+bPiX5+CVT3dgQxI7lsJWY7QGAiJblkKlpfRlNrTbNq2GhdG2ujaKMGwIMhsiMZV0RiOTlsmmXFJRm2y0QUba8W0U1U2kWhm3tN2BDc2OssHPbAhgg5rLQXoEa3SaneQMW84Y69UE5brM5rZDudyzUUhCEI1rZEejTI6r5DIus+kqk+5VEttXYH0Zq1jCLFXwHB82RMbzyPkxrJkzbKTPsFgdY2lDoViyqVZ9G0UyrTM1EWQ2bDBZfhhl+VHs7e0ebJiZwTx2F8XMSS7VplksyJR3/NaX6ZTCyWmH06kVxta+ACsL2PUaUiyKmD/F5vTTuFSfpbCjUa17JOISJycMTkUWGNm+jLSx4t/tmjpGdfQEV6zjrO/oSAKms22mYkUmyo8gV4u4iQyV8XNcbs3wi+9O8xcfFbiOIJuxeNt/fYRXv/gS7dE5VuUZ6q0IquwyFimTba0iuRaNxDhVdZS6FSWmmIzIZeLGDo7k2yjaXgRVsohI/vvTljQ/INKTUIXdDYi0JQ0PgRAeEq6fvg4IPASP20nMtud5z9xl3VX8vIXBygJLu+1QCPEVQMTzvF/abYznea4Q4mPASw5zskd1Z9SNAAY4OGSA61M0wPWpGgbHXI+Fon/ZjcOG8D6vBzYEyoSwjSKACrvaKLptL3vtLgfbXyIp/kVH0P4yyG0YaH/p2yikg8OGfUIiPUQfVOiqGFx//jq4LFFY4KVvewl6q8Yjz/s2/v4734vjBHM3/2c7aEUYzG7YrwQur37Jf+PZd/8DLSPGL330F1gunO773Q1CB/84B//c2E/d0KdiGAiK3PW897FuDKth4w+a3XCg/T/OrRS3u56sr/tW1RFw2KVuJmjw93djFophY4cBg6HrbjNs6I3vwQY39OGzG2wIB0Q6zgBI2AM2dK0WjxFsCE+QAiuF1JFZBuFRAWxQOpkNctD+UpFQdcVXNnTyG1RVQtelUGaDr26Iui2e/fpvJvnoA7SOn2bhN/4ANa6gCqOT2dBpfWk1kWzTb39pmX5HiiAg0jR8+0SgbHBDoKEzIdKetYL+3AU8F6z/+xy84pkubHBiKUw9hanGacopGm6MmhWlZqg0DLkLG4LMBqNt0275HSnCNooebOhlNoykZUbTfuvLlNYmo+yQbhTQq5tI5U28ICCyWscx/AtVSZH9zIZ0EmU0C2OTWKkcldQMW9446zXfRrFTdSiV2tSrvcwGXVf6MhtysQYTYpX09mWk9UXMwoaf2WBZyNEI+tgo8uw8Vm6ajZGzLNXHWdpU2dg0aTQsXMcjkdSYHNc4OWEwGS8zVXkEdfkC1vo6drPVy2w4fhermXtYbeRYKGgUSxaSBON5lYmsw+n0OpObX0BaueLDBk1Dmp5nu6NWWNrSaDQ9YhHBsXGTU7ElRle/iFTeBMfGnZhjY+I+1s1xVsoxXFcwNWJwMrpMtrKEWlrH02Ps5M/y639+ll95X4Ry0b/gf/V/2uQdr/40oymDZmaGVfUYxVaSmGqSUWuMtZdQzQaNWJ4teYqGGUGTbUalbRKtIp4kU43mqTlJZOGSEWU0u/jiIf0AACAASURBVI0rJGpqFstT0UUb1TMRrktbjuOgoAgLzW3jCQlTRBC4KENFADe5hP/+v83118D7hBBznuctQ9cOoXXWXVOdoMmzYdgghNA9zzOGDE8BD9z80z6qm1/icQEZ4OarGgbXHSYcMtjPsLyG4PutVDYEcH7QRtFtkRkoGzrgoatsCEIgd1E4eB3I0Nf+MtylQkjdjhSeJOMhHagjRQAaAhXDYEikRy+vIfg+zErh21tBrRR52VtfTKK0zvI9X8Vf//Dv4SJ6N5q84eoGoDtXg347xTXvK1xe9fUf5Mvu/TvaZoRf/tg7WVg7BwMQetjF/eCysMphP2XCYFBkeJvB53upG64HOoT3PawNZnB+h9kPXD9sOKrbXI/NfOS21BFwGKjDKqNutqph2D6HjXssYEPY3jC47GbAhr6AyBuEDY7t2wSuBzYMAw3DPswGn/flNki9vIZguaz0lA2SEmqB2VE2KEoHNOhST9mggK666JLD09/63WQ//Y+YuXGu/M5HUUYTaLRRHNPPbbBbPWWDZfbaX5pGryNFoGqwnWtei5BltGeso3/5ZTwPrE8/G3f7fCcgsgMbIqluQGTDjVEzo9QMPyCyZQhqoW4UrYaJZdhYho1jO13YIMsSqqYMyWyA0bhJNlInKdVINzeIVP3MBrdUxGk0sesNHMPEcz1fNaJrqJkUyugoIu9nNjTiebbEBOu1FOslma2iTb1mUa8aOJ3Mhmhc62Y2TOccppM7jLJFpngFaW0Rq7CBuVPDdRxkXUPPZVFm5mhPnaGcnOFqc4KlbZ2NLYtq1T+feEJjYlzjxITF8cQao/Vl9JUL2OurOG0DSVVRJ8ax58+xnr2HSzvjFMoK22U/FDE3qnJywmA6XmSq9ADyymWcahU5lUKMjrEzex9XrOMsb0doND10TTCT99ts5jceRNpeB9fFy09RnLibxeY0W3Ud2xGMpU2OxdfIbV9AqRbxVI1/WHsKb3jtWR78gv8xcPd9Dr/4s1d4/tSXwPMw4mNsaHPstOJosk1OK5M2t9DMOkYkTVkZo25FkYRLSq4Rb5fxhERbTdB0fRVDXGoSsRoIz8XQ0t0wSMWzUFwTRyjYqHgIJM9F9mwcFFwhIRAonvV4VjjsWp7nPSyE+Fv8Fpjv6ix+JfBJz/MuCCF+FHA8z/tVACHEVwNfC3y4AyYA7vZXiSvAC4Hf9TyvIoTIAy8DXn4bX9JR3eY6DGSA/UGDP+bm2icGx+zVweIweQ3Bvm4ENgwqIg5lo5Dlzu4GbBRh2NC1VEj+9gFg6CocRE/ZMNj+shsS2Wt/SUe9EM5t6CocdutIsUdIpBtABi+wTvRsFeHcBn+uFlI9OCC1W3zD21/GyMoFtubv5RNv+Di2onetFEFQZFgdMHhjaVj1z7M8vu1rf4UXPPWTmJbOr/7pO7m0ck/v507/xf5BoMOwCoOPQXhwveqGg55DGALstd9rX5e0L3S4WfaG64Eb+449gh9PyjoCDp262aDB3+djZ6GA2wMbwqGOw2BD7/j7w4ZuK0xnb9jgOqG8hl2UDb08iL1hQzj453pgQzABGdaRIljuwwXFVzgoMnK4I0WnBWbQlULr2igEugqq4qEpHvf+8uuZ/Jv/iR1Pcvm3P4qYnUDFQHWNXkcKu41stjrKBgMsAyzT70hhW11Vg+c4/s8neI2dCZP6lDX05z8KgP2ZZ+Ju3O0rG7QITjThw4ZQQGTdilE19G5mQ7PtUas7NBpWz0Zh2L6ywespGwLYEE/4rS9H0jLJuEc2YXVtFAmjRLS24Wc2lIvY1RpOo4XdMrqwQYlHURJxPyAyP47ZsVFUvQyFetq/mC/5NopWwz8XIfUyG0YyCtN5j9l0hUnnKvHqGkphEXtzA7Nc8WGDqvgBkdMzmFOnKCRPsdkeYXE7yvqmTbXqKy2iMZWxvMaxCYfjqQ3GS4+gbq1gr63gNFvIsSjKyAje/Bk2xu7hcmWSpQ2Zas3BdTyyIwonJixOJlbIVa6gXr2IW+1kNsycpJ47xhXvFIvbcap1j1RCkEv5SoiJ7QeRt9ZAUfFSI5Sm7mHBnKdQjWA7gnzK4kSywHj5Akq9zNWdDG/68PP407/KAzCS8/ivP97m+755gWx1Ec+TqGVm2ZFzlIwkmuyQ10tkW6sotkErmqWkTdCwY8SUNgmpTsLawZE1GlqathtF4JGSq0ScBqYcwZJ1LE/zu6hgggeGHMNFQsFCCA/PE1iSjicECpZ/J05SEIf953wd5T02dxS+DXiPEOKn8O9rzAKv6qz7asAFfrUDG/4SiAI/Hdp+Bz988oXAa4EfE0L8Hn42xCs8z1u/La/iqG5bHRYywO1RNAw7zo2oGsKPbwVsCB/7RmwUdMf2xtFdHlI2BMvDjwc7UgTrhdTNcCBQOuzSkaLfTtEfEunRC4N0GQiGHLBSuB6hwEi6uQ2DCgfXBWyHr3n3tzP5yL9Szc/x8Tf/Fe1YGjdkpejePArdkBqssFL22vL4lq/6H3zl0/8Cy1b5tY+/jUeX70OS+vclhNgXOhykBrMbdguKvPY1HOxYhzmv/dQNvX3uDx26+9xlX5Ikjlpi7lKPpZ3iMZqP3PI6Ag488WDDQdte+stuLWzYLyAyDBv697G3siE4n926UQwqFnaDDeF/7geBDeEanCgFkxNZka9pfyl18hp6ygYfNKiqjKoO5jYI1I6yQZU9zn70/Rz/ww/iKioLv/ohnLvPoQsDzfU7UsiO2Q2HFGa7Axs6HSk6AZEEqoawjSI0aVLvLRB5od+Jz/rs03HW7oFYHDeWxNGiWJEUbS3p2yicGC1bp9rWqLV6Nop22+m0vrS6NgrHdrq/68BGoUdU4kmNVEpjJC0zkvJIR21Go01G5DLpph8QKVe28colnJ2Kr2xom3i2gwhsFCNppEQCkZ/oZjZsO3nK7RiFHZXNbd9G0az7AZFC8jMbRkYiTIz5mQ0zqRoTrJIqXkEqFrAL6z5ssB3UWBQllUCZnMaaPsVG+gzL9TE2Khrrmw6VHRPX9UilNDIZlWOTLifSW0xWvoS6eglnaxOnVkfSNNSJCdzxWbbG72GhPs3Spkq5YuM6Hpm0wrEJh5OpTpDj1iruTgmhaTA9T3HyHgruFItbCSp1j1hUMDtqMBUvMVV+CGVjGTwXZ2yGWvY4S84x1ioxHBcycZv55BYTlQtYG0Xe+/Gn8/6PnKfZllE1j5d/h8cP/VCF+fQW2Z1lhGPTTE2xIU1RNWIAZPUdsq1VVLOBpcUpa+NUrASq5JARZWJGFeE51CI5qk4KzxMk5AZxq4InJJpyCtPVkHCJ0kBxTdpKHMvTANBpIzsWphTBQUHyXFTPwBMStnc7OlR0LgBuc3metwN8/y7rXh56/CkgtseuPgnM39yzO6o7oa4HMMCNqRngxkDD4LiDqBrCyw+b1zC47Y3aKPwDHcxGISTRhQpdZUOgeAiUDZLotb+Ue+qHLmyQAwtFryMFQgoFRYp9O1J4iOEdKTohkd41FoogIHI4eAjuR/TCInuA4Pm/9sOc+L9/Tjsxwsff8kmq2enuHNAdmPd5oXndsJtLw8vj5V/x27zomX+G7Sj8xv/6WR5ZfMauow8LHXazQgy2wQzG9sMIr+/7YWrwvIapG4bBhv3moMMujA9zfntBhztR3XCzlBt3bj0285HbUU9q4HAngIbd9vtYw4ae+qHzvXPx311/g7Chv2tFLyByP9jg2u7QgEi302nhZsGG3f6pDZvodNUNoY4UQhLXtL/07RO9rIauqkHz8xoURYRyG3xlw/zffYTz738DAEvv/u+Yz/sytE77S9UxUBzDhw22gWS2kWyz15HCtvBMswsbugGR0DdhUs5voL/wEQCs+5+Gs/IUX9kQiWNHEthavK8bRc2K0jRVqm2lL7Oh3fKtFEbT7NkoBmBDNK4TiSo+bMjIjKZ9G0VSbzOilEm1NtFrm8j1CpSLOJUd7HoTu2WA63Zhg5pOoWRHOwGRU1RSM2x7YxQaSUo1hc2iy07ZpFHzYQNAJKqSyUYZy6tM5xzy8QYT8hrp4gJSYdlvtVncwWmbyBENLZdFzmaxp0+wNXKa5eY4y9saxbK/b8dxiSc0xsc0xrMuJzJFphqPoq9dxC6s4zZbPmyYnMSaP0clM89Ce47FLZ3Sjh9amUzJzE+4nMpsMFl6EHltAbdWRagqYmqO0tS9XDGPsVGNUK4JIjrM5kxOJFcZrSyibi6D5+Hmp9keu5sNe4K1ahzPg4m0yXhsh4n6RT7xiRhv/o3/yMqmf936/K9x+O4fdbn3TIMpsUK8tgWuQys1waY2Q82IIguPEa3KiLWJ7Ji0YqPU1QwNJ4Ym2b6CwWrgCUFLy3RbXyqSTcRt4EgKphzFRUIWTlfZYEk6nifw77t1/gaF7AdGei4C13/uT6PxbnmXiqM6qjujrhcwwMEggz9u72PcKlXD4Po7ETb07WsYbOh8vhNeNqBsCJQMgc2il9EQHhNqfzkAGwbbXx6mI4UXzmvohESGYUNgoejlOIQfw2ALzB5I8OdzT/3IL3DPX/86thbhE2/6c4rT5zr2iX51QzDvA65RCwzWoMXiG7789/m653wMx5H5rU+8hQevPAchevPKYRfIg9DhIMfpntvA+e0WFHmQkiSprzXmnVBPJPvCEx82PLHrSQsc7lTYMGzcjcCGvSwUwfrB7faDDeGxw2DDYQIibxZsCH9IHBQ27BYOedB/asNgQ0/VEARDKkNhg6rIqJqMOqBsCGCDrnpMfu7vue+t3wPA1de/ncY3fRO6MFCwujYK2Wp3218Kq5PZYJlgWf2ZDY4D4Q+ezl0Y5fQG+lc+hBBgffE+nJWndzIbEtgDAZF1N07dilAzNJqGRK3Zy2xoNS3aTQuz7VspAhsF0LVRRKJ+bkI0ppBJK4ykYLRjo0jKddLGFpH6FvLONtR2sMtlrGodu9X236SS5MOGZMIPiMyNY6dGqaVm2BbjbNRTFMoKOxWXUsmgVjOwTN9GoesK6ZEo+VGV6ZzLdKpCVi4xUlrwbRQbG9g1P4yyCxumZ3BGJymOnuFqe5Ll7QjrmzaNuo1lO8RiKuN5lePjFhOJKtPGJaKrF3DWV3GbLd+mMjaGM3uKjdG7KBhjLGxF2So6OK5HbkQhP+JyamSL6crDqKuXfNggy4jxaSpTd7PoHme5GKPeBEWG6WzHHrH1EMrOJlgm7sgYxbHzLBqzFBsRTEuQS1rMxwssf7rM9//8Xfzbg7594sw5m+97vcv5pwqysSaTYoVUdRXhWLQSfmZDyUiiSC4ptUHOWkM3arQjaYrKBC07ghAeaaVCsl3ClWSaWpq6lwQgLuroThOg2+ZSETaa10byHCxZx/ZUJFxUTITnYgsVT6jInu1bKRC+0kE4SJ6L7yy4tfVElTAe1Z1fQtxaJUNv7K0DDcPG3aiFIjx2L9gwfNn1Zzb4m+0CG2S5HzaEWmAGsCFof9kHG4JwyHCGQ9D+MuhI0YEP/QGRu3ekCJQP+4VEDvvqtb2kL7fB9fpzG4KgSMeB03/zIZ77+z+DJwSffN0fsXr++Z22l9416oag+uef+8+rvu45f8xLvvwPcF2J3/3LN/HFK88DejdJwtDBP9buN4b2VDkMOZf9lAIHVTccFjpcr7phv/3daN2J6oYnSz1R5yNPWuBw0LpR0OCvP9h+Hy+wIRwQ2Uv97cGGsH9vv8yGG4UNg1aLG4EN+/3j/P/Ze+8wSa767vdzKncOkzdqVxISOSOiSSLIIGEMNtjYxiZf8OUlJ5tkHOEabIMBE2ywAV+MAxgwF7CxeeEFTJIAGaEsbZzU0zlVOveP01Vd3dOTVrsraTW/55lnZ6qrqmtmentOf/obxhcsk0IiY+iQUDbEwMHUMC19mNlgRh8DG4U5rL+cvuVHPPA1v4Tmeyz+xkuovfBF2MLFlIPchvH6S1cFRUawAd8fWinGYENU32Wcv4b9+KsRGnhX35vgyIMGmQ0pglQO1x4NiGx7KVp9i0ZHp9MXNFrDzIZOez1sEEKgaSLObMjmbXIFk0xap5QXTGU9Sk6HolEj26/itFYw6ivIWoWw2SJotwm6fXUuXUd3rAFsmEJMzeJO7aWTnqaiz7HcLrBYM1mpBDSbPq3GEDakMhaZjMXsjMXeWcm+grJR5GonMJduJVhawqvWCT0PzTKwyiWMhb24C4ep5/dzzN3LkUqak8sBzbpHEIakUiYz0xYH50LOy68w7Z4gc/I6wsXjBO0OmuOgFwuEBy5gefZe3NLew8mazcpaSBhCqaBzcNZjIVdnb/tarBM3ENZraLYD5Wmae+/BreICbq1kaXXUmnWhHHCosMx87RqMykmlYClMUZ+9G0f9/ay0HDxfUMr4OJ0Kb3uzxd9/4b5IKZgpu7z01T0e+mSbEI1iqse8sUSusQiAmy6x5uyh3s/GyoZcUMX0OnhWmoY5Rdd3AMjqbdJuQykbzBw9UkgpsDX12BRS4uoOAUq1YOChyUAtlqXyFgtCRHJhNeieFiPPT0oFsTu7szvDORuQYbNjT7eqIfn5aYMNYlT1sBFsGL3w4X6TYINSKSRzHES83zhsEMn2iQgyxE0Wo/+ua6QYqcBMNFJEAGIsJFIKbV1IpIK2WpzjkFQ1xDAhYaUIwqGKYVzhEISw93tf5jF/9gIA/vNF7+X6hz4dGQzXgZPUDUnrwiRF6/g85v7/xBWP+mtCKfjbL72eH1736HX7jCsZkmqH7agcRlQLp1ndkJytoMPuC+/duSvOLnDYYLYL7c6UhWJ822ZKiDNRewlb2yjOBmyIAiI3gg2RbP9UYcNGqgYpQ/Uux9hMgg0KLAwbKTRdixspDHNQhzn4PFY2GCJWNpimwLYY5DZICmtHecjLL8doNVh74hUsvultOJqHiYsVqFYKw++NNlJEsMEfwAY/kduQ+N4iz6m+v4p96VUITeJfc3eCWx4MqQxBKktopXGjzAYtRz+0aXspGj2LelfZKDo9qdooBrCh33Hx/YAgARt0Q7VwOGmLTM4ilzMp5nVyGUE551NKdSgadfLdFZxuFbO2DLUKQa1O0Onit7vIMFQ/35SNnnIwyiXE9Cze1F7qub00RImlTpHFmsVyJaS65tLpuPT7qvkhymwoFEzmp2FvvsWcdpJC5WaMtUXCpZN4NQUbhKFjlQoY8wt4e5SNYsWd4kg1w8mVkHrdJZQS2zaYnrY4OB9yqLjKQvt6nLVjhCeOxJkNxtzcwOZwD27t7uXIqk21IfE8ST6ncXAu4HBhiZnuEVInr0fWqmiWjVw4QHdqP0fMC7l1LUe9pWwUpWzA4eIKC41rsVaPgQyRuSKNubtxlEMsNjOEIaR1ny9/sstHPzBDq2NgGgEv+bWT/OrLDVp6iVAKcmafeWuZYuMYQga0s3PUzWnW3AJiABvK7iKm38Uz09SsWVpBBkvzcLQeWb8GQMsu0QtTSARprY0ddpEIumYWT1qjKgbNIsBAEGKhfjeBZiClquLUB9tCoSGkRBODlhm0sxIaea56Jnfn3JidQAa1/9aP550oGiZdw6T9NlI1jB+/nXDISec6nbBBiPXbo7/5k2BDZJUcUTbEQGEMNkRAYUzRkPx6u40URBkOk6ovI6WDHIZEKtvEmJohoWoIxgBEpHJIZjZEa7wghNL1V/HEP3gmWhjw/We8jqsue2nCZjFZ3ZBc+21nHnbPL/LMx74fgE99+VV875rHj/zuT/Vd+6FqIAmyJ6sbtqrBvK0z6XxbqSZ2+r1PWsduNRMDPe+A6oazaae4PQMjgXN2PbILHCbMmVI1bHTu8X03UzWM335Hgg3J+zxdsGFknzEIcSZgw0iQTwI6rF88bdxIEb3QNgb/arGlQtVfKtgQtVIM6i8HmQ3pfoOHvuIKnKXjNO//EI78P+/DNnws+phBDzPoqZDIAWwYaaRwFXAYsVJE308ETzSBvqeB88QrEXqIf/2F+Dc+DFJZglSWwMnhWRnVRjEIiOwFlmqjGGQ2tNohnW5Iu+XTbatwSNf1CTyfIAhj2GA5JqZlkM5aZLNWbKPIpwLKqS4ls0Ghv0KqtYzRqg5hQ1tVX4Z+gNA09JSNmc+qgMipWbzyAo38XlaZpdbNsFgfwIaqS7vVx3WHmQ35vM3MtMlUAfYX28xby8pGsXSEsFrBW6sS9F0028LIZjDmF/D3HqZSuoBj3XmWmw4nVqBW8wgCSTptkM8Z7J+TnFeqsqd3owIGaysEjabKmJiZwd93AY3iQY54B7hlNcVqNcT3JdmMxr6ZkEOFVRbqP8OuHEOurSB0HTm3h/r8xSzrezlSLbDWUI+PhZLLXKbBnu4NOKtHwPcIizO0i/s4ph9isZHF8+Gn3wn46Hs0jh/LA/DUR53g7a85SvqeeznZKeAHgrLTpWTWKLWOoQcuvXSZNWOOhpchkDpFq0nRW8H0OgS6RdMq0woyCCRprU0qaGEELl0rRy9U+Qym8LDDLpoM6BkZXKkyGizRxwjdGDYE6JgiQA99AmHEi+So+jJAdcpHVgrlSRZwpv/2Runwu7M7d5DZKWBQx5w6ZNjs+J3aJ8Zv3wo0JD/fCjZMghMjx47BhuQ1bBQQOdw2UC1E28ZhgxGBhISyYWCFEIOMBjFomYjBQiKrIZndEFknYltFMtNhg0aKSSGREWwYz20IB9kNEWyIGysYzW1IVmBG/8rYWgGpxaNc9uanYHVbXPvoX+Gbv/aH8dotWgtGM95MsdVE664HXvQfPPvSdwPwmf98Gd+++rJNj9tM5TB+7o22jQeNJ7+HrY7d7Fq2M3KduvbU1RS3+wvj3Tn9cw6vR3aBQ2LOtqph0v7bhQ3jzzNnEzbE97nDzIbTBRuStUWnCzZMoq/jsGGdumGTRgpN19AHkEE1U6hWCtVGsb7+0jYllnR5yJt+mdx1P6Z78Hxu+cDHMVMGJj3MsI/l99D9PrrfR/P6o40UA3WD9HxloQhGlQ3RYkiba+E8+QcIM8C/9Xz8ax8FqSyhkyFwcvTtPK6ZpqvnaIdpWp5DxzNp9nSaHUGro2wUvZ5Pp+PS6yobReD5hOFQ2RBlNjhpk1zOolAwYhtF3u5TshoUvFVS7WWMuspsCOo1/GZLVV9GsMG2MPNZFRCZL+BPLdDK76Ui5lhq56m2TZbXYK3q0WoOYYNtG+QLDrMzFgvTkplsj3lnmanazZjLRwiWFwkGmQ2aqWwUeqlEsHCQtfIFHHf3cKSSplKTVGserhvgpAxmpk1mSnBeqc5e7xYySzcQLp0gbHdUJsZUmWDf+SxP34Nlb5pbBucIAkk6pbF3VnKotMbe9rXYizdBs6YeZ9NzNOfvzhEOs9TIUGnqmAbMFz3Oyy0z1TtOavVWldlQnKE6czdWxDwnm3mu/pHg7/8Srr5SNTrc43CdP3nFT7jk8RZVe4HFXgk/1Cg7XeaMRbLdSgwbKvYeGl4GKYWCDeEqpt+lb+Xomjk6YQZdBGS0DqmghRYGdKw8PZFGSElKdDCkyl3o62kCaaicdOEjkAPYoDrrDTyElATCGNgnQgQoSbEEIWRs/ZEM7BXnJujfnd1ZN6cCGdRxZwY0bHRN281qGD9+p7Bhs3DIaPtWsGGjgMiRaxg/j/pkdP/YBqEUDPH9RZ9H9ZdRC0X0edxKsb6RIlZBJBspNAVhIwtFDB6EmJDboMWwQcXrDgMikx/DoEjWNVFEVoogVAqHCDSEIRitOpe9+efJVE5w/N6P5qsv/2sFOwIZqxtgmN+VVLjKxNozuf4bn3sd/ia//qQ/QhOSf/3m8/j6lb8Ig8wGTQyXMOPv9J/KC/3oeia9o78RsNgOANiplWOns12Vw+lSN2x3dgMcd2enswscBnN7qxombUset5WqYd0+ZxA2nEpA5E4zGybBhggUTIINoR8OryMM49aKcSChto3mNWzniXkj2JBspDBMAyHEIK9h+KHpIq6/NAwN29YwdLDMCDaE2HrI/f/wpcx866t45Wlu+ujfo0/lMYWLFUaNFD0Mv4fwXTSvrxopIhtFHBLpKytF4kESyT+1qTbOk7+LsHyCYwfx/+exkEqrNopUnr6dp2vlcTVnJLOh7eo0OhrN9tBG0e/79Loe3kDZED1OYtgwsFGk0iaFgkm5MLRR5IwOBb9Cur2M2ViFWoWw1SRodwh6vQFsEGimiZHPopdKMDVLkCvRzu+hYsyz3CmwXLeoNiRrVY9ms0+/p2T5lqWTKzhMTyvYsDffYsqqMdU4grV8K+HKEn69Sdh3VbBjqYA+v0BYnqM2fSEngj0cqWZYWg1pNH3cnoIN02WT/bMhc9k2++Qt5JavR548RthqgdAwSiXCPYdYnbk7R7p7WGw4rFbB9yX5nM5UQXKoVGNf/wZSSzdBvap+QVOztBYu4qhxmCPVHM2OhiZgpuBzML/KfPMGrPoiotsmzBZpTB3meHiA/7khzUf+QudbX1XPS1Mlj999wTX81lNvxCvPs2Ttp9rP0/NNclaPGXOFfGsR3e/h2nnW7AWqrlJDZIwexXCVlNvA122V2RA6hFJTFZd+HSFDXCNFhyyB1HFEDydoA9A30rjSjm0URugSaCYeqvpSF75SNmhK2SBkGOczRIti1VAh48WzEBIhpVqgn8GRcMbvY3d2Z7M5E5YJOHugYdLtpzuvYXz7ZrBhq8yGSfWXwtBH72eCskGFQ2uxYmEibIhCIyNlw3YaKeIWitEch2RIZBhlOoyHRCYCIgPGIYNYZ6UIw2EThUTEuQ3hAEhICbgul77tGUzdcjVr++/OF3/nn/ENe7CeG64HpRy+8RRN/GJ9i0X1RQe+z29d9nvoWshXvvurfOW7z4l/9tE5NoMOW03STrHuxfg21A07URtsF4CMqxuSs9n9Tfred9UN5+acy+uRuzxwOB2qBnX79s9/W2DDRsfcnjaK7cKG4X2cembDRsqG+DrCJFiYDBtGf4bbf9LWRPJdk2H9pa4PwMMAYqK75wAAIABJREFUNmhCDMIiBZousCwdXRfouqq+NHSlbDANMHSJocNFH/tD9n/2bwicFDd84FOEBw9giz6W7KFLHz1w0QIfEXhogYcYgAXCQEGHaMUw9mCJZKJaqadgg+MRnNyL9+PHgZ1WmQ2mg2+m8IwUfS1NX9p0fZuOZ9J2deptjW5P0u2GdLsB/b6yUnh9H98LRmCDpmuYtoGTMkmlTUpFk2xakE2F5GyXnNGhGK7i9OsY7Tq0GoSdNmG3S9h3kaFUsMG20FMOei6LyOYJciVaxf00rGnq/SzVjkm9JamseXQ7Hl5fAaYINuTzCnJMZfuUrTozrZux6otQXyNotgg9DzSBkU4pUFCeozp3MWvaLCvNDGsNQbPl0+8HaLoglzWYLsFcts1B7Ray9eOItWWCdht0HaNUgtIM7fIBVsMZlps2tabA9UJsSzBTDDlcrjMjlkjXT0CroRaoxSm88gKV1D5WmllaXfUYy6VDZjJtpvxFrOYKWq+NdFL0igvc1F7gPX+R5bN/r+F7AtuWvOi5y7zuWVdRctp4qSKN1CwNN0PPN3AMj4LZItOvIcKAvlOkYxfphCmEkKT1PkUqmEGfQLPoWAU8qdQSjtbHll0APN2mJ9IgwRQeBt4wtEzqcWSZQKrtiLj2UoEDlccgxoIghZBIOQyN3FU27M7urJ/tQgY4s6Bh0vk3slCsv+30wIaRY7djo4i2jTVSxLkNyX10Pd43hhTJ/SLYEFkhBrfHtomBHWPTkMjIVjGACCRCIiO7RSj0wX5a/BE930qhYEIytyFkuC3+d/C5uk1darRf1EoB0Rpv8LWUPPLdL2LfVf9BpzTHv77ti3TTpXWq2kmz3fX04T0/5gVP/V0Mw+PrVz2dz3/r+RsChY2gw05VDhvtu9N3+W9LpsT4nMnzCKFtur7d7PsWmnaXBRp31e/7bMxdFjjs5P/5qVgoNrqPrSwU48etAxHh+u3jAEFtO/3KBrXfqSsb1P2eorJBnnpA5CRlw1agQYzAheE7JpqhjeQ2RI0UOwmJtOKQSNVIcegrf8dF738rUghufNeH8e5/XyzhYuIOlA2TQiLHchuCQKkbwnD4hBlde76Pfdl/I9J9guU5vKueAHZO2SjsDL6Zpmfl6Rg5umGKTmDTclVmQ7Oj0WpLldnQHq2/DPyQwFcv9DVNwRbVSGGRyVrkc8pGkU2FTKX7lKwWeVkl017B6lTRGhVko6YAQK+nIADEeQp6Jo1WmiKYXqBT2MOaNU/NzbHUSrNc1ViteDQaLv2eyo6wLJ1s3mZ6yqJY0NhTcllIrTHdParsCGsr+JU1gk5X2TUcG3N2lnD+AI2ZCzgp1Yv+46sGlTUFG0xLJ53SWZjROG+qzT7jGMXl69Eqi4TVClKGGIUi4fwBeuV9HLcOc2u1yHJV0OuFWKZgbgoOlJrsD28iUz2OtqoaJiiU6MxfwFpmH0fbs6w0LKSEqVzAdKbDfu0IudWb0botwlSOljPDn33m3rzvvQWadfV4vOwKl7e+8mbukbkRzXfx7TzV/AGWvWnank3adCmYLaa8k1j9Br6ZoubM0woz9HxLKRuokHIbIAQtu0xL5vClTkbrYMsult/FNVJ0hcp5MISPLbvo0sfVHXxpIhGYwkUPfUKh4wsbiUAXfpzHEMrBC4tI2cDg/xgSjTBuqkjOWSP956hncnfu3HO6IMNW59tIYXG6VQ3Jz5P7nikbxfAO1tdfJmFDMiQyaaMQmhgqGKL7iLMbhhaLGCjsICQyslIwbqWIPh+xUCRyG1gfEjlioUhkNwQjCoekumHYSpFspJAS7vuxt3O3r34cz07z+bd+gfrMeQk1Q3KdNxoWud0X//tnf8aLLn8DltnnO/9zGf/y9d9mnDCfrhf14+qGSc0UMFmhcbpmfM15Nq0IW0GH3bmDzjm6HrnLAoftzOlUNUzafzNVw/jtW9kozjRsOBs2io2qL8Mg2DKzIXrhOwk2bJbXkKS82rrF03AhEgVCTsxt2CIk0jI1DENgWZpSNpgD2GBI9lz5H9z37S8E4Mib/pj2k56Eo/XXh0QGLsJXbRRDK4UPQSKzYfALG1k8Zj3sJ30HLdMlrMzg/fDJYOWVjcLJ4tp5PCNF18zSCTK0/BQdz6LZN2l1lY2i2Q7odQM6HY9eV8EG3xvaNjRNYNomdsrCdgwyGYtCwaRU0ChlA3KOT9FpUxBVsu0VrOYqWqumYEOjQdDpIv0AGUo001DhjcUCIpcnLM/RzS+wZi+w3CtR7dgsVzUqaz6NRp9ex0NKiWXpZLI25bLN3LTGdM5jIVNlpn+U9OqtsHxS3Ve7rUBRJoOezyPn99GeOcxJfT/HanlWGzqVakCvF2CYGqWiUkocmOqy1z5JaeUGtKVjhI0a0g/iczTmLmLVWOBovcTSmkavF2IYgukSHCi1FTxYugmtvgpuH/JFerOHWEyfz0qvyErTIgihmAnYm68zra1QqNyC3m4QWCk+/f378vY/P8yRI0p5cN8Hh7zuTXUeca9lSo0jCNenn5milZqm4k/R9SxShseUVSPnV7HcFoHp0EjN0gyyuKGBY7hktSZOv02oGfSNNF2ZJpBarGwwgz6+buEKJ4YNhvDQwoBAGATSUHYIQrRoQTV4900gR2su0dapG8Ynaq04G1aKkfvdlVTszh1gdgIYojkboGHS/dzusCFxzg0zG2BHsEEMbJLJ+ssR2DDeSJEMiRwLfxwPiSTaVxtmNkS3KTVDQsWwSW6DUixoI3aK8QpMBR8ii8So0iGyUihgMBoUecGX/oYH/N3bCTWNL7/xH1i+4IEQDteMYQI2wHo7BTCyFhyf+fJNvPiK1+FYHX543WP5f//j1Ug0iJRwSQXDKVorJoY+TriW8WaKnYCAra5hs0rMje5PE9q2bRy778Kf23OurkfuUsBBCHE5cPns3vO33HcXNtyxYUMys0EpH5KBkJNhw0agYXyEGH13JJnbEFkpdhYSKTANMWijIA6JLN/yEx782l9C8z1O/ubLqD73t7AjZUPYxwz6iZDIHprbU7DB9xIfPkTfZxjG7/igaeB4OE/6b7R8m7BWxr3yqWDmYtjg2Tl6Vg5XT9EJM7R9h5Zr0+7rMWxotVUbRWSj6A9gQ1LZoJsGlmOSzlg4KYN83qSQ0yjlQkppl5zVpajVyHVWsFuraI0KNBsKAAwCIqUMFWxIp9DzOUR5mjBXplvaSzW1h9V+ieWmQ62lUakGNBouva6q4NR0TdVfli3mpjX2lHpMOU1mvWNk1o4gVk7gV6uEvR4AeiaDMTMD5RlaM4dZtA5yvFHkZEWn1gjodHyEgHzOYGEaZvN99qUWma7eoNotamvIIEDLZBBze2nOXchx7SDLzRyLVYNOT+I4gnxGcKDcZr95lOLqjWhrS+p3lsnhzh5kKX8hx1rT1DoGfU+QT4fsKzTZEx4h21hEb9f49vV7ef2HLuF7P1JZC/vOkzz/FQGXP7nOAsdJN1fRvB5eqsBaZh+NIE/Lc7D0gCm7Rqm/hOF3VeNEaoZ6WCCQOrbuUdDqZNwaoabTMfP0ZApfGjhan5RsDxomTHpaBl8amMLDkj2EVGGQPgp+GHjoBMo3LEyQKrMhggah1JSKYVB1Gf0xjewWMFQyCCFHvt6d3TlXJ1qP7Es5OwYNtwUyDG8/NfvE+H631UIxut8OYMPA0njaYMPgb/sIbEjWX443UowAhmQ7hZgYEjmS25AMihzAhjCR5xADhrilYgAipCBkrAIzGRbJMBMn2UoRjCkcQjnIcJBDJ+b8d7/CI979IgC+8dK/5JYH/zxhMLpWHFmXJmFyYj240UwXjvHiK15Nxmlw9U0P5xNf/R2kVPYVTYiR853KjKsUxs+3WTPFmZrtKmq3e56d3rbRbGUjuaMBjd2AynNj7lLAQUr5eeDzhy9+0As33ufUQAOcnryG8dtvT9gwKbMhWX10e8KG6Doi2JDMbbgtsCE5I/3c2jCvQTMiO4WGpuvokaJhQkhkVH9p6CjoMAiJzFeP8/BXXo7ZqlN54hUsvuEt2MLDFB6mjKwUA9gQKFWDCAaQIVY3DL73wB99cGgawgmxn/AdtGKDsFHA/cHlSL2ItBwCOxPDhq6eoy9tWl4qtlF0+xqNtqTZGtoo+j2ffs/D6/txIGcEG2zHJJWxyOYs0mmDUkGnnFewoWw3SWttct0BbKgrG0XYbhN2urGNQui6gg3FAtrUDEF5nn5milp6ntV+KbZRNJoB9ZpLt63yHkxLx3YMSiWbuWk9tlEUg1WytaNoKycI1pSNAkBPpzCmyoRz++kVF1h2DnK8VeL4qsFaLaDbU99bPm+yMKNxoNxmxl5jpn4j5tIthLU1kBItlUbMLtCeu4Dj5iGO1gqsNXXaHYllwnQR5nJd9jmLlCo3oa8tKhVKKoM3e4DlwgWc6ExTaZl4vrKdLORaLIhj5GpHufX6kLd89NH8838dAKBUlvzKi0Mue3rIXL7NrLZEtrmE8F18O0ctu5eqX6LjWxhaSNFqUvBWMb02UtNpO2WaYR4vMHH0PimtS9prANAzMnRlGk8aWMLDkR0V+igMXM3BlwaaUGGQmgwIhU6AQYgWwwYhQ8JBIKRGMMhqkIPFr4YYbIOhlSKyVtz+cEH5pHdnd87mROuRe+SzG65HkrMdyACbg4adKBom3ed2VQ3Jr28LbFi/bZttFLBj2MDALjG0Voj1yoZkSGQEG3Qj0U4hhtsTyoY4tyEBFSJIITWDcKB2iCowZQQgSKgbVP9PrGpQwZBD2BD/O6GVYrimYwAeEttCQf76H/G4tz8TLfC58pdfz9U//5J4TRUmjoXRN6PGK9HHJ1p2lbKLvOSKV5JPr3Hd0Qfw8S+/lTA0ENr6F5PbUTlE9w1sqlKYZJ+YfJ1y5N/bMpupG07H+e9oMGA7c2exddwxfra3z3pECJEFfh+4AcgC+4HXSSnbWxx3L+BbUsr8VvdxlwIOW82ZVjVM2nZ7wIbkH5Jo23ZhQ3zMaYANmwVEbmqjkJPzGtS5hrBhnC5vBhoiO0WsYhhrpVBgQY+hg2Hq6KYxhA2GjmEqZYNhDCDDIK/BMokVDqYhSfcbPOyVl5NaPErj/pdw67vej60HA9iglA2G30P3emh+H83vD3IbBlaKIIA4NHIUNCAEwgqxH/ffaFM1wlYO9wdXILUyoZMhNB08O0vfzNLVs7TDNL3Aou3ZNPsmzY5Gp0cMGyIbRRwQOfi9RLaSCDZkMhb5vEkmLSjmJKW0R8lukxc10v0GTnsVvVGBepWw2SLodgk9pc7QLAPNstALebTSFGFplk5+gZYzRcWdYqmVYbmqsVbzabdUHWcQSAxTI5O1yOZMZqd1FkrKRjHtniDVWkJfOU5YrRB0u0RBlEZ5Cjm3n9b0Yar2HMdbU5xYs0ZgQzZrMDetsb+sbBTF1nHslVuR1TUIArRcPs5fOOkc5lijxEpdp9OV6LqCDQdKLWasNaZrN2CunVS/t1wBrzDDaukCTvRmWWnZquvcDlnIddhjniS4dYk3ffBCPvjZC/F8HccJ+eXn+jzlORq5rGQq1WFWXyLXXEQEHoGVoZ5dYC0o0/VNDBFSsFoUw1Vsr4VvpuiaOZoUcEOTlNEjK5rYfgdAVV+SJUTD1lwcuuihj69Z9EWKEA1dBJi4CBnia1Zcw2bgxdkLoWYgpVCwQcg4sEwM3oODhIphoGw4V2WDu7M7p2u2Cxng1BQNGx23E9AwfvvGn08Oh0zedlthw/Ab2DlsiEKgI9gw0kgRwYbIYhEBhjgkUgxsFcZgu47UdaVsSHydDImUsXpBxLkNCDFUNSQzG4SGlNpIBeZ4/WWylUL9O9g3HG6LLBTRv0EocJaP8YQ3PgWr0+T6Rz+b7zz3D0fWk1KOr/fUj3i7ryFz6VVedPkrKeWWufnkvfjoF/8AP7DX7Xc6VA7qujZXN4xs2+b9TbJQbNfasZPshkm2itsCKSa90L8tVZi7c07PPwDfllK+D0AI8XbgQ8BzNjpACDELvBPIbecOdoEDW4MGtc/k7duFDZOOHwUGY7edZdggk19vomxQ208PbJgUEBlDiA1gQxiEG4ZDxte2Q9gQjUhQxSRsmBQSGSkbhuqGQVBk4sMyh3YKywTLkDjC5ZI3PYv8tT+ie/ACbnr/JzDTBqboK9gQ9kdyG4awoa/UDUGg/g0HNpLoD0r87ovEesz30GZXkd003g8uRzJNaKcGAZGpOCCyE2bo+A5d36TZM2h0NFodSacraXcGmQ0db2ijGNRfRgGRhqHjpEwVEDmwUWTTklLGo+R0KBh1sp0KdreKMYANQatJ0O0iPQ8ZhmiWgZ5OoaVSMWzoFhaoOgs0/BzLnQwrdZ21WkCz7tHteTFsSKctikWLUkFnvuQzn60z7Z8kUzuCXlslXFslaCk4q2cyaLkscm4P7enzWLL2s9rJc7Jms1pV7RuaAMfRmZvW2Vfusze1zFTtRqzaEqytIn0PLZNBzizQLy6wnDnEsWaZ5ZpBpyvRNCjlYW+xw17zBIXGcazKCej3IJ2jN32ARnaBk+4cy60Uri/IOiGldJ8yS3zy/fCuDz+KWstCCMkzntHkOS/VsIsWhh6Ss3pMm6txtaXn5Gk7ZdbkFG3PxtSCYb1lv06gmbTsMh2ZoRfYGJpPRrRIeU2EDOmZWboigx8aWJob54aEQqcvUiPKhqjm0kcFROr46AOQEAqNQBoMStlAJgIhE3kMUT7DHXJ2FQ67cweZswEZNjp2K/vE+Dk3UjUkP98sryF5++mADaPwYIewYbz+0ojsEfoQNgwsFiP1l4kQyGGYZLKRIsptMIYhkUKsD4kcAQ3JOszISqGtt1IwaqUYhQ6DQMhBfkMUFJlUOxjNOpe+4efJrB7nxL1/jq+96mMKboRq3RfGazn1uxquKRPrwcQbUeOTdmq88KmvYqZ4nKPLd+MjX/xjXD81eeexx9FGL7Q3ymjYSN0wvvYbz2441Une305tGacKEc7GO/DbuY+dXP+dRd1wh5qzvB4RQjwSuAx4dWLz3wHXCiF+T0p57YRjbOANwF8Mjt1y7tLA4baABjgzsGH8/7qUE/ZJyNnG95sEG5IWitHjdwYbhtDgzMGG6I9BEjYEAwn/ZrBhKIkb3j78mQ5vS078jsvYIklo2qiyYUJI5HYaKWxrrJHCCHngn7yUmW9/Ba80xXUf+gzaVB4zkdtgBO4gt6EXh0SKwFOKhii3IVI2DL6veEFnCKxHfRd9YQnZS+F+7wrCcE7BBieHa2XjgMhumI4zGzquTrOr0+ooG0WvF6g2iq6PO7BRRI+BZGaDaRlksjb5vEUhr1PMSfKOT9npUjAa5HurStnQrkGjSthqEnYi2CDRTBM9ZaPn8yogsjhNr7hANbVAxS1S66VYqRus1ULqdZduz8P3QgUGUibFksXctE45F7CQbTIjF8nVjqCvnIhtG1JK9FQKvVyG4hSdmUOxjWKtZbJSlbTbAUIIclmdQl5jT9llX2aFmebNWKvHlCrD7aOlUjA9T3vmMNXUHo61Z1iuW7S7EssUZNOwr6RsFOXqzRiNFeh1IJXBnd7Hav4Qa16Z5VYa1xNk7JDZTIvv/bvLe965h1uPq4XYz11S4/VvqlO+W5Faz0YXIeVUm7zepNBdimFDPT1PS+bouA6mFqjqS5rYbptAt2hbRVoyhxcaGJpPVmthBx3VIqE79ESaQOqYmodNDz1UNZeu5sTKBh0fTQYEmknAwG9LOFJlmVQ2IAdKhuTz21g+w+7szu6Mzk4gA5wd0DC+72aqhuTXGx2z09rLM2GjiM87BhuG1ZUT6i8Tt40ABi0BF7ZopIgCIod1mLoCEMmQSLQ4tyFZgRlZKUZgg5yc2zC0UwyhgwIPrAuKFK7Ho9/6TMo3/YTq/ov58lv+hdCyE2/WjK9Nx164j9kpkmtDAMds8YKffw3z5ZtZXDuPD3/hXfTcHCN/HNhaKbDZrIcJG0OKjaDA6cwHCMNRNcPt+WL7XFE37OY3nJV5LOBKKa+JNkgpbxBCuMCTgXXAAXgbSt1w8Xbv5C4LHM6GqmHStlCC5/YxLXvd7WcLNgz33xo2JO/3dGU27BQ2bGaj2CyvYdTbt3UN5vgCJv6YEBJpGIk2ig0aKVQN5rCR4l5/+4cc+OxfE9gO13/g7wkP7cPR+go4+D1Mv48eKuCg+S6a10cEHsL3Y1WDIkDh8I9JREJ1sB7+ffR9J5CuhfvDpxH6c4TOEDZEAZFJ2BBlNjQ7QxtFvx/QaXv0Oy6uO8xsAOLMBielPrI5k0Jeo5STlDMeOatHwWyQdxVsMBoVaDcUbIhsFIDQ9SFsKE0hs0X6xQXq6XnWvDIr7Qy1tk6lGlKvK/gRwYZUxqJQtJiZ0pkvepTTHWb0ZQrVIxiVE4S1NcJ2B+kHaI6NXioRzu7FLcyzkj7IifYUizWLWkPSaqnryWR0ZqdUu8X+bIXZzi04lSNQqyBdF82yoTxLZ+YQS855rHSLLNYtmh0wdEEpL5nOuuxJrTBVvxmzughuD2wHr7xApXCIxf4s1a5N19VwzJAbftDnd99r89NrCgDc/bwGb3vtEe73xBz1oEC1l0ITUHS6TGmrZHpVTLeNb6ZppGapBiV6gYUmQvJmm0JYwfKUVaJjFWiRxw1NdBGQ0TqkghZaGNAzs7jYeFLd5tDFCF0kAldz8LDQGdoopNCGyoZBGGSkYpBSiwS+sdQXeSeDC4I7QI7E7tx157ZnMwz32RloAPCRWBNqCTc7704sFHBmYcPwTtbDhuFtw2MnwQYR5TVsUH85VDaM1V+ON1JEIZHJRopkdoM2ltEQBUiijYCGYVDk0EqRDIOM/03kNwxDISPrxGgrRVLdEATwsHe9iD0/+Hc6pTm+9Pv/Rj9Xjtd8kboBxtaRchgivtmYRpffvOx17Ju9ltX6Xv7q8++m3SsOfk2CMJQIsX59vJmtYpKqd/xztd96i268720Ii9wIjOwkI2Krc21mp7hj5Aucu3OH+fmemfXItBDi+4mvPySl/FDi671AdcJxa8B54xuFEK8A/kFKuSiE2AUOm81WTw+nQ9UQbfvcx9/Gv/7t23n7R37Cpz/wam78n//Dxfd/PL/9js9x5IYf8bmPvZkbrv4Gnttj/wUP4OnP+2MuuNejRs5x7KYf8cVPvI3rr/7feP0OpZkDXHLpc3nCL71xeF1nADacTmVDEFklJgREnknYsNGTSFLdsJWVQhs0T0QhkYapD5oohrkN440UljnaSHHoK5/g4g+8BSkEN7zrw7gPuB+W8JSyIehjhB5G0EML/GFIpO8OYUNUfRkmchvi3AmB8ZAr0Q8eQXom7g+vIHT3Ejq2Coi0MvStLF09hystWn6KluvE1ZfdHqqNYmCjcHtK2eD7QWxxAQUbLMuIbRTptDFQNkAp41NyOmSNNjm/SqqzitGsQLOO7LQJ2x3CvgsyROg6mm2hZbOIQomwNIubLtHIzFPxp1juZFiu6zRaklpD5Uj4XhD/nPN5i5myMbBRNCjqNYr1o5hrJ5HVAWwIAoRtYZRKyJkF2tOHqDuznOxOc7JmU6lJOt2AMIR0WmemrLGn1Gc61WC2f4RU5SisrSA9H2GYUJ6mN3Mey5lDnGiVqbQtmm2hgEBOsq/YYcquMd2+Fau+pDIbDBOvNE+1cJBFd5bVtkPfE/zsh5J//Aj89MdpABamu7zxedfwK7/UpF7ez3JfhT8KJDm7R9lcI9dZxXA7+IZDKzVNQxbpBWqfrNklJ2tYfheEoGdm6YgsXmhgaR6WcHHCNkJKXCNFH1VxqRFiiT56oJQNvmYOrBGhAguD/zvB4N21qOZSIAnFACwM1A6TnlTvFFYKBu/87VoqducOOqcTNLz/upv54PW38k8/9yD+9JobuXKtwUNnSrz3IffmZ/UW77v2Zn5YqdEPQu5ezPGqe5zPg2bLI+e7ttHifT+9ke+v1ugFAQtph6eft4eX3PP8xH2eWhPFuq9vo40CojcTJu8/sf5S12PYIGLbRAQREjAh2UiRDImc1EgxFhIZh0ii1A5RbkMotERQ5LACM5nbEIyERo7mNkStFNFaLxxroggH1or7/M3bueDLH8dz0nz5HV+gMXdoACPkiLJh1Daw2SNwOLrm8utPeBOH5n9CtTnLhz7/ZzQ70wPAMPkkp6JyGA+LnJTdsNVxm81OairVebef1XBHndNtp9idnc8ZWo+sSikftMntfcCbsF1jjIgLIZ4O3CqlvHKnF3GXBA6bzemEDcl535ufxiMuez5Pfvbr0YTGLdf9kHe96lHsP//+POcVH8ay03zjix/kz994Ka9597c4eOEDkRJuufa7vOf1j2Fm4QKe8aL3UJjay8qJ6zl+84+H15WADUm7BGwMG5LXmSTWZyIgMgjCkT8I8fao2vI2woZJeQ07pZXjVgohtBErha5rcUikPlA4RLkNpqljGGIYFqmjrBSDRoo9V32NB7zjBQDc8oY/pv2ky3BEH0P4GNKLQyI1P8ptUNWXIll/GQQjEpgYkmgC4z4/wTj/RmSg4171VMLeQQInQ2jaiTaKLN0wRS+wVUBkz6DVTWQ2DNooel0fz1Ufvhcgw1At1oTAsgzstEUma5PNmWTSOqW8oJjxKaU6FIwG6aBBurOK2VxDNOuEzTqy1yd0VauEME00x1aZDcUyYXGGXn4uziJY6WRZbSgbRavl0265+F6AZmikHJNM1mCqbDBXCpjPtpgRS2RbK9jVE7C2StBqKqhhGhiFInJmge70QVadfVT6RU7WHSo1ZaOQUuI4GlMljYWSy97MKiVvWVVp1laQnouwbcgV6M8cZCV3iJOdKZYaFu2ueg4uZCULhR7z9jLF7iJO9Tii30U6KYJMkXrxIEvhAivtNP/9DcHn/k5wzVXq2Jmyy2t+/Vqe97QbMYp5arl9rHll2p6NlJC1+kyZNfLdFXSvR2DYtFNT1EWZtucbY1GIAAAgAElEQVRgiJCU0SNPDcdrKzuEkaKlFeiFNoYISIkOVthDkwGu7tAXKQUbhIINZtAnFDqesInqK3Xho8kwTkaXaMN8BogXwkmIMMk2sWul2J3dObXZDmRQ++1c0QDwv75/Nb94YIHnX3AQIeCntSbP/T8/5OJCjrfd72JSusY/3HKC53/rSj716Adzz1IeoQl+vFbnuV//Pgeyad54v4uYT9nc0upwXb217nrOJGwYOe9mNgqIwXysBpwEG5L1lxFs0BIWi2QjRWS3SDZSjIdExtYJbZjbMBYSGVsp4nYKMbRSIAilHtskJlVgBjJhoYjsEnErxUDxIIdWiiBU7RSH/u3j3PfjbyfUNL72u59m+cIHKcVaDClGmymSNgkgXism14nRGkyIgGc95ve4277v0eyU+PAX3kOtNc/Wb/Ntb7bzYndSdsN4FebZmDNZhXmm7/uOMrtw46zNUaA4YXsZuHVs28uAR4qhCkMDEEL0UKqH39joTnaBw2C2AqOTHvfbAQ3RPO7pL+fSX/xf8e3vfu3jKc8c4JV/8jUM0wLgHg94Eu94yb340qfewYvf8lkA/vkjryGTm+I17/4Opq083ne7z+PUNY0FS24XNmwkjxuHDUkv35mADdEfgSRsiEHDKcCGjVQN8R/DsQVYpG4Yt1JEuQ2xlWJi/aV6t13XlMLBHKgbLFNJ7K2BlaJ869U85LXPRPM9jv/Gy1j7zRdgay6G8Ie5DaEbh0Suy22IirBlOPwlJhZQ+t1/hnH3a5ChwPvRkwnbhwmcDIGVJjAd+mZW1R4ObBQ936TZM2n19NhG0euFdDo+vY6nlA1eoH4/A9gQWUcsx4xbIYp5nWxaUMwElJweBbNFzlvD6dexWhVEq4ZsNgi7XaTnQxgiDF1ZHLI5RDZLWJymX5ijll6gFeZY7eRYbZpUalLZKHo+nhsgNEHKMSkULfI5jblyyHyurWwUjeOYjVVYW1GwIZRojoNIpWB6jt7UAVbTB1jslFlt26zWoN1Rjw/L0igXdfaUPPZl15jpHiHVXEKrLkO3izAt5NQsfn6GSuEQJ3vTLDUd2l21gMtlJHOFPgupVaZaR1TtZ78LpoVXmKWdmeO4u8Cn/ynLP/6tztGb1O8tXwh5+fOO8dtXXE3G8QmsLPXsApVwmpZrI4QkbXqUrTqF/gqm1yUwHXpWjqYo0vUddCHJGB1SooPjtpADZUNPpOmHFjohtuhjh12VwSAMXOGMBUF6yi4hzERVZYAWgbuBd1gowa/6vzRQLESTVDHAGHC4gysbRmbXUrE7t/OcDsiw1XmiReJzDu/j1w/vj/d/3jevZCHl8NePvD/WILfgkQszPO3fv80HfnYzf/mI+wHwzh9fR9Ey+fTjLyFlqNamh024ru2GQ07efmrKhokzIedhHDZsWH+5USPFWF5DbLOIQiKjRopI6RDBB8RA4TBUPQztE2LUSjGmaphUgZmswUy2UiQVD0loICXMfverPOxdqoX1O//3+zhyyVMhrsiM1n/qR7cuhDGphJ240JX8wiPexX0O/xc9N8NHv/SnrNYPTP69RI+JCbaKSbOZnWJ8fTlyReHk7Iad2imic41/PqzmPLPZDXcYuf8O51wBH2d9zv565N+AdwkhDkgpj6hLEBcD1uC2eKSUlya/FkI8BvhPKaWz1Z1sCRyEEEd2cNHxNQFPkVJefQrHnvU5U6qG5Av9+z/i6fHnbr/LdT/+Ok9+9psQmkYQ+PFtF9//Ur77tU8C0Ot2uPGn/4dLn/HaGDYMwcHo/Z5u2DBy7lOADZGF4kzDho0sFJuR0fV+1NEKTAUdBts2CYlMtlGoj6GdwjYlhdpxHvGKp2K26qw84WmceMPvYQtf1V8Okv9Nvz8CG7TAG+Y2RNWXY+qG6F0V/fBNmPe+CinBu/pSgsbFMWxw7Ry+bq8LiOz5Oq2eRqsztFG4vYBe16PfV8qGwA8JgyCGDZalQiIzOYtcziSf0ynmBFknoJjqUbSa5IIq6c4qRq+B1qxCs0HY7SA9X9kbdB1hWwo2FEvIbBG3ME8jM081KFHrp1lpWiOwwR3ABts2yBVMpkoqmHI+12XGqlBsnsCqnhxUbTaQQaCsGvkC5Iv0p/axltvPYneKxYZDrSlotQNCKUmnNLIZjYVywEKuzox3nHT1mLr2XhcsC4pT9KYO0MjMs+TOsNxK0eoKNA0cC+byLgupNaa7R7Eby2huF2kY+PkZ/qd1mL/92B4+8+k0lRUBXEc2fyUvevFlvOSZNzKvLSGCADddpmMXWWOalqeer/NWj6zRJu9VMPwuvmHTdsp0RJaOn1JAQu+SpYHldZFCo2+k6YgsvjTQhYINykahqixd4RCgq4pL4aKHvlrEagahjKBCMJLFECkboppL9XwwChY2UzHcaWDD7txp5lxcj6g3ym+bbULdvvE5xkMhL52fiffvBQHfr9R44d0Oomua6p4Z/L152OwUXzhyEoCuH3BlpcbzLzovhg2Tru1UYcMwY+EUbRSwaSNFnOkwBhs2rL+c1EiRgAubhUQO7RdimNugGWOBkKPgYdRKMRk6xP+igiKTaoZoHZj8PBkUWbj+x/zcm5+JFvj85Nmv46eX/18wpmSIZmSdmFg3bjZPfNAHefBFn8f1bf7m/3snJysXIrShIiI5UY7Dqc5mlZabwYQ7cmhi0r5xe6gb7qxQY3du+0gpfyqE+AqqAvOPBpt/GfiSlPJaIcTLgUBK+Ze35X62o3DYhyIcK9s8pwb8GoqM3KHnVFQNGx03CTYkJ19eiD9vN9cIw4B/+9Q7+LdPvWPiffhBSKdVRYYhham9I/exWe0lnB7YcFtsFEEQAYXJAZE7hQ3hwHqxGWwYCQPaxpP1qLphCBuUkkEtpiIrhRZbKIZBkdYAOAzDIUWscDANSPUbPOLVl5NaOkrjfpdw0zs/iG0EmJqHITxMv4cReiok0uvFsCG2UoQD0JCsvgS1oAG0/ccxHvBd9Vi57tEEa/eJYYNnZeibGVw9RS9M0RlkNrT6Bl1Xo9URtDshnY5qo3BdBRy8vh/DoCRssNMWTsogkzHJ5QyKAxtFzvYoWm1yskamW8FsV9E6DWgNYIPrKmWDEAo2ZDKIfIGwMI2XKdHMzMY2ikbXoFKHesOn01GwAcC2DfJ5i3JR2ShKaZcZe41y5zh27STUKoStJtLz0UwTLZdHTs/j5adZK5zHUn+GpWaKSh063ZAwhJStUS5qlLIBe3IN5sITZGtH0RoVBRt0HfIleuV9VLIHqPollloZmh21YM2lJcW0x3ymxrR7AqepYIMnDb545d348Bcu4r++kSUMBRBSnPpTGtU3MjN9kNc87yIynVXwA9xUkUZqliYFWm4aKQUZ06Vo1EkHDWyvRagZdG0VANkLbCSClN4jLdrYg4BIV3foigxeaCKExBIutlTKBl+z8ISNP3iqN4VSNgD4mokvzREbBUSZDVqcz7CVimF8251xdjMc7jRzzq5HNprTCRqimUnb8ed11yeQkg9eewsfvPaWiftLAU3fJ5Qwl3K2DRsmVWiebtgwvPPN6y9F4twxbND14f1up5EiqXYYQIWJIZGRkkHTB8oHLbZahGKoehjPbYgUCuMVmOFIQ0VC2ZDIcZBEoZGsUzc4S8d49OuegtVpcvNjn8X3nv9HRPaJSN0Ao29e7eQ176Pu/QkefZ9PEIQ6n/z33+fWpfuStFFEYZBCiFNSF8Dkdd1G2Q2bhUVuNtvJkthK3XAuz7n6Pd7RYMvttB55FvAnQojXAwLYD/zq4LbHASFwxoEDwO9JKb+7nR2FEAbw66d+SWdnziZsgKGUMQzBSRcRmsZjLn8Zlzx+aHdJAgRN00hnSwhNo145ftphw/A+RwMio3OcbtgQh0YmAiKjQMKtYENEfreCDdt5MhxfAI1XYEYhkUkrRRQSqWCDhmlFlgothg6WCbYFlimx8Xj4m59F4dqr6Bw4nxve/ynMtDmsvxyEROqBi+67aKE/hA1BBBv80b/+EL+jos2dxHzINxFC4t34ULylS5C2RWil4oDInp6hLx06QYqmZ9PqG7R6Op0etLuSdieg3faUjcIN8PqDzIbB4yBpo0hnTFJpk3zOoJgb2ChSfTJml5zWINupYLUraO06tJuE3c4ws8FQ8lMFG4oqs6EwT9cpUmWaSlfZKJptMQiI9PH9cJCToZHLmZSKOrOlkLlch6LZpNw/iVM7iaitELaa4PsI00DL5pDTc/TK+2imZ1nxZlhqpqnUNTrdEN+X2JagWNDidotZbZFc7Rh6owL9vvoZp3O4U3up5g+w7E6z1k3R7OpICdmUZC7Xo+i0mfZPYtWX+OZ/5/jH/7wX//K/91OpqYW8YUge8PAbOHHk2aytXEMY+uRTFqleDREGeE6eZnqWmizR8R0CKUgbLgWzQdarYgR9As2kZ+VUJkOgzuvofdKijRV046DHnpYZKBsCDOFj0Y+VDZ6wCQa2CAMvzmaIPMKRskFIOQgrEoyEQcKGsCH+f3Qnhw0MFu67c6eZc249Mj5bQQa1z85BQ6TUTd6aty004FfO38/TDiysV/NqAk0I8paJJmC51193jZvlNYxuG962br8dZjas27YJbCDKZlAHrFc2bNZIkcxwiNUOA2gQ5TaMh0RqenxcnNUwyG1AiE2tFOMVmOM2iqGdIgqFTGQ0MLwtUjfozQaPfs1TyKwcZ/E+j+Ibr/8YodBit2Y4traEMftAvNaUyLG1IsCDLvwcT37wBwil4DNffzPXHn0Yp2vW2zrkhuqGSfaJU4UbZ3t2Ek6ZnHMVAMC5/b1tPrfPekRKWQNevMFtv7DJcf8F27vg7QCHN6MCJbY1UkpfCPFm4Ph2jznrs8nj+LaAhknHJ7+MntBtJ8MF93oUx276Ec988QPQNG0dQAAw7RTn3+ORfO8/P8mTnv0WDHPMVjEBNoxvO5vKBilHgx+TsCG+fUzZECbsEhvBhpgoJ2/bxEIRwYjx9oloks0UcfVlwkqhCQUX9IGqYTwkUgVFqg/DiFQNAssASw958Dtfyty3v4xbmubav/oMTBWwNA9TeBjSG8KGwEUL+iO5DSKyUETqhuFFq8XQdAXzkv9CaCH+kfvhHX8UgZNBGlaijSJLV6bpBxZtz6bdN2MbRbevAhM7HT+2UfheEIMi9XMTGKaOk7JIZUyyWYtMRqeQ1yhmQ4opl4LVIq21yXYrWJ0qequuGin6fWSvD4GyQwjLUpkK+SJhcRo3P0szPUuLvIINLYtqA1rtgHYrqWzQcRyDYsFgpgRzuS7TVpW8VyFdP4FWX0V22urnpOto6QyUpumX9rKW20/NL7LUzlBp6rS76nFrmYJCXmOuqNotSnqVQn2QAdHrgmGAk8YrL1DNH2DFm2G1nabd1whCSDuq+rKk1/jZt3r81ZdKfO7fL2Kxkop/TYcO+zz5FyVS/yR/8+cvw3N78TsguZSFFnp4VkY1TVCk4zuEUiOle+TNJtmghhGoBX3fzNDW8vRCG4HE1HzSWhvb76jGCd3BFQ7eQKVgCRcDDz304iDIAPUOnoGHrsTSBOiEg+0jYZCJmsutVAxRPsOdHzbszp1szr31yGC2AxnUfpuv7SbBho2OEZpGWoMHThe5tt7knuWL0MZfzA8mbRk8cLrEv95ykt++94U4kUNhB+GQ0W07hQ1xBkMCNkwMidwANig1RGS7GO6bhA0bNlLEbRSjVZhSj9QLIlYsyOTtsZpBi60Tw+DIhJUi/lw9/45XXwaMqRkSKocwCoSUkbJhNPARz+MRv/NLlG76CfX9F/G1d3wW33TiSCg5vl6Uo+vaeJ21wdP8PQ9+jSse/k4AvvDtV/Hjm57ApgvsbU5yPRetLyftM2n7uG3idLx7PVyDTlY3nM45V15o7+Y37M74bAkcpJR/sNOTnsoxd4Q53aqG0Sdu9fcq2v7MF76bd7/253jv7zyJhz/x+eTLCzTrqxy98YeEgc/TfuuPAXja897FX7zxMbz7NQ/nsb/wKgrlfVSWbuLYTVfxiy96L1LCjVd/nb9666U886Uf4YGP+Y11sGEjQn26AiKHSoXJAZGTYEMSJiRhQxioF0Wjt4/WXm6kahh/gpMyHIMO2rqgyHErha7r6KaOYRrogyrMZEikym/QMEyBZQoMQ+U22JYKibzXJ/6I8z73UQLb4Zq//DTh4YNxSKSBp0IiB7BB9/uIQKkbRBgo2BCOgQZ14WqRVGhgPfQ/EIaPf/LuuLc+kdBOEZipkYDIXpii7Tv0A1NVX/aGNopuXwVEdjoe/Z6CDb43rL+MlA22Y+KkTXI5i3zeIJMSFLMhhZRLwW6TFU3S/TpOt4rerkGniex1ka6rfg9CU3kK6QykUsh8CS83TTMzS1WWabhpKh2bakPQaAZ0ewGeN4QN2f+fvfOOk6Qq1//3nFNV3T15d2czu8uSWXIWkCBgQvBeBOGqiAFQUMI1BwwEAygXRUCM+PN6jcA1YLjey/WKigqICgoLkpawbN7Z2ZnpWFXn98epqq6qrp7pnp3ZMMz7+fT29DmnTlVX11a99dTzPk+3TXenCsCGMrPzm5hRWU1+ZL1hI4wMoWs1hJNDOA7M6Kc6ayGbundiXXUWm8oFNgxZjBTN8ZXPCToKgtm9SXcLe2g9lItgWejOXtzOXgZ7dmK9P5sNJQM2uJ6gOuzz9/s9HviD5o+/m8PwiIp+niULi5xySpETT/HoX9rFSM3mu199quF47O3qwrULFHN9DIk+Rlyj2ZBTNTpVkQ5/CNut4EuLmspRVD1UfcMEz8uK0f7wKmgENZWLRCAFOjq+pPYM8yEQggwFH5MOE0ESTwAYaBLMhuT/oalRMjFWTJdU7BgxVfORyWI0NFtOhOUDQXzggD0559d/4rzf/pnTly5kTiHHQLXGwwOb8bXmvQfuCcD7D9yTN/7qXs787z/w1r2XMr+rwLNDRZYPbObyF+0LwL1rN3L2f/2Ra445kNN3X7RFYEOmlSXtgw0RUwESY1t2pGgiEhkvpYhKLKSKdBtCQCICGoiLRdaBhLgFph8DGPwYwyEEG+rMB6JSitASM2Q7aExpwCFXX8C8P91JacYc/vczv6DSPdO4UCQ0wBpBhTTwkA7fh13n38Ppx1yOFJr/uf987nnkNc0XiB974yyraLZMPNeMxm7Dm/ZWbrQna/tGW/f2rF8xHcmYqvnItEsFo9eqjQdsGO1cGvYt3v1g3n/9ffz821fwgy9dQnlkkK7e2ey068G8+OS3R2OX7HEYl179O37xnY9z+1cuwatV6Ju9hMNPfHOM2eDj+x5a+2OCDdE2p8CG5HLtgQ1pS0tfx8olMgQiRwMbWnGiSIMNzU6yYpT/tELKSKshXkoRF4mUShrwoYlIpB0ADo4NjqXZ9VffZtnNH0ULwSPX3EL14IPJicCRQgSlFF7V6Da4lSalFKErhQ4SnGB7u0dwjvxvhFPBW7cL1cdPwXcKuE4nNaeTmlWIwIaiW2CklqNSU4xUFCNlEZVRVCq+0W0ox60vdfQEyHEs7JxFodOhq9uhq8uit1vQVdD0FWr05Yr0qM10lTeSKw9iDQ8ghjejiyMGbHA9A+jkAtZBdw+6o4ta7xyGu+ayScxioNTFppLDwJBk87ABQGrV0DnCgA0zehW9XYI5PRVmFwaZUVtLYWgN1vAADG9G11yEbSM6Ok0JxMz5DHYvZL03m/XFTjYXFSMl8HzI5QTdnYLeDo953cP0W+vp3rwapziALI+AsvALXVR751EszGS9mMuKVZ388feKv90Pj/xV8/TjElMObgOw9y6beflRazj15ZvY/bACm9RshmsFRmoWltRccNF76HaqfPH6a8jnc5TLFbr6+gzYoGZQdA0rIq+q5GWFToZwvDK+VFSsDqoiT0Xn8BHkRJWcNJofAh2JQLraQgiNwsOihgjKJbygJS4ECQZs8HWd2RCCCD4yeijVqj7DVAcgpmM6todoRUyyaflE1rIZ6udCCvaZ0cMPTjycmx5+kk/99RGGai4zcw7LZvTwut0WRWMPmD2D7730RVz/4GNc9aeHqfo+CzsLnLFb6Hghgyfu5ro+qhNFbHtaKaOof24fbBAhcwHad6SQKVAhLhKZ+hwvpdAxsME4VNRZD3ELTF+oADBIajh4cbZDqpSiDjCYUooEuwEzZu9bPsEuP/9/uPkOfvXpn7F53tKI2QApNkSsVLeVm+Gd+v/Gvxz/QSzlcvdDZ/HrB94U9aUFIZsJR2ZFotw3xtiN+lO5ZsPyiQdQumlfPJrpNrRT5rAlAMJ4xSK3NqgyVZgX07Htoi3AIRCT2ElrfXFG3xeAZ7XWn52ojdsa0Q6rIat9LLDhlLMv55SzL2/o0xrmL96bcz/0vVgZhE70g7kQ7LTrQZz3kZ8k1he/MCzd53iuuc2L2AlRfwbY0Mz60qyr/TKKZmBDKNozEWBDWq9hNFZDVkRshpRQZAJsULJBJFJadRvMLJFIw3AwIpHz//4bDrnqXACeeP81DL38ZHKyhi1rkVBfndlgdBuMG4VhN9TVm4LvE08MC2XsF/0SkS/iDSyi8uhp+E5HBDaEApEl3UHRKzBScxip2JRrguGSYKSoKZY8SiWPSsWlUnapVdxAT0NH+yh0o8jlLTo6bLq7LHq7Jb2dPt15l95cmW41TFdlgFxpAKu4GVEcgnIJXasZICgQ4pKFDujuwe+ZhdfRw0jHbAblLDZWutlQzDFUlAxuNsKVbiAKatuKjg6Lvh5Ffx/0dVTpL2ymz19P5/AarM0boDRiABrblD/o3lm4nb0MdS9gPXNYX+pkYNiiWAbX1Tg29HQK+rtr9BXK9Nsb6S0asEFUiiAkXr6TJ0cW8tsHd+YPf+7jD38o8OQ/kvaPuZzmqBeN8MqjV3PyEc+weF4Jz+lkpGMWm+QshmodVD3jEJG3aqjyKr751RvQWnPhG8/ijjvvYsHiXRhRvZQ8w2xwpEuHKpGjbJgNQlFTOcqiA1ebU7MjajjCaH4I7eMJq67LIAx7QQkXoXW9JjjlOgFE7UBDyURWvFCYDYCpPpy2xdzhYirmI2GMp2xirGWFlFy0bFcuWrZr5rhde7r43FEHZM4TBwCWzezlqyce1nTMkQtn89S5r95isCFeRmGGx0CFDLAhWCgbbAgBhXD9ozlSxNkLDRoPKZHIWCmFDoGGkM0gk5oOzXQbwnNzndUgI+ZC3JUiXlIRshsiR4oYu8HXsOgX/8G+X7scX0p++7Hvsm7PQ+tlFsTBhmTpQjrieWQYc/oe5w0nvgfHLvOXx0/mv+67GFoo4Q6FI8eKBt2GFHshHllWmBMdW7OcYlvF9iaauDVju/vuUzgfaZfh8Bbg35r0/RV4L7DDXOAnG2xIW1dm/T0W2JD4nAE2JC4gbYIN8fVNpEBkFtgQ3tzGwQYvLJ8YA2yI6zVksRriF5zRErWsUopQtyFLJDLSbQheaZFI2wbHglmrHuHoD74GVavy3OsvZO2bLiAvqziihoVrwAbf2GBK30X6gfVlwGowgEPK+jJMoBwX50W/RHZsxh+aS/kfZ6LtrghsqNodlFUnVZ2j5OWNZkPNZqQiKVUM2DBS9CkVPcoB0FCrungBKCSkQEqBZRmByEKnTS5n0dVl0dMl6e0yzIYup0K3PUyXu8kwG0YGDTugZJgNBNaXSInM5Q3Y0D2Danc/lXwvg3Y/A5UeBoo5Ng1Lhkc0xZJPrWZcLJQtKHSoCGyY3V2hL1dkhthI1/Baw2wojUCtap465fLonplUeudSKsxko5zDxlIXm4o25Sq4ntFs6CzAzG6XOZ3DdFvD9JbXUl2/mfse6OO+h5Zy76NzuW95P6vX5xLHimVr9tpPc8gRLkcdVeLYg9fR76/FqQ4D4KouioWZbFYzGal1UPMNAJC3anRbRT5/7TUMj4ywbI/deP+/Xswl77+MIl2UfBuNwJY18rJCXhex/CpaCGqyXiahEYYZQxVL10zSKW1cTKlEWCYhRV3wsa7BoCNQIW5nGZZLZLEY0u1Zn6duGHhmOna4mFL5CEwCo4Hsco302NE+jyUOGR8zmhNFYq6YpsJ4wIb090tsfwbYEGozxEUiGxwpQoAhpdXQIBIZ121Qxu4ytMSssxlkUqeB9Od6KUUINiTsLzOZDTJRPuHr+t9xdsOsP/+GQz91PgD3X/w5nj3q1Qlmg++nctA46yGWQ8YZASFQ0Ne1krNP/Fc6ckMsf+YYfvz7DwbnziwW3MQ6UozGbtheyinA5JmjPQibiO1rd44drZxiW/+G2zambj7SLuCwGHisSd+TwJIt25ytF+2ADVlt2zPYUJ+/uWYD1Esp2gEbPM8sPJobRatgQwgojAU2NCuhaCYklEyEYuyGGO0yrdsQL6VIi0TatmoqEtk5vI5j33sqzuBG1h/7Sp750KdwpIst3aiu3vKrWJ4BG4xuQy0SiBRpoAHq6KajcQ77JbJ7I/7ITErL/wVf9uJZeVy7YMCGoIyi4juMuDmKVeNGMVIWlMrmpr5YdCmV6poNcYFIpcz3tXMW+Q6bzi6HQl7R26MM2NBRozdXptMq0uUPkq8MYpc2IUuG2UC1ivZck8BZtmEedHbjdxvNhpHO2YyoXjbVuhko59k0oiKwwXV9hADHkeRyip5uyaxe6O+qMis/RI/cTHdxnWEjlEfMwa0U5Av4XX1Ue+awuWs+w6KXjZVuBksOpYrA98GxIe9odMnj8Ucr3PW4z2N/72L58n14/JnOwLKyHj29Pnvtp9l9H9j7IFi2n8+s3ip9zggdcoSeygBWyEIIgJ5h1UfRK1DzFZbwsaVHp1Vk4Pl/8I1v/jsAn7niI1Scbsqig2oINggXR1bJUUZpFy0kbsBcCJkNSnhYuJHQoy9UVN8LJMAGCAQfCbUZYg4TOnUjkdE+FW0up+MFEVMjHxFbBjRA9vKtAA1Zbe2ADa3aXibGisb522U2mHZZL5MwCz+Om0MAACAASURBVNa3PQU2NHOkaNBtSGg4pIAHWWcwIFUEPsSZD8bpR+KnXCnSFpgR8BAyFkKGQtqVIi4QGbAaTM4WllaEL9PeseJRjvqAefjx6BkX88hrLmnIReslFZqs3LRZbtzprOfsEy6hu7CBJ1cdwq13XYmvJ6YqO7ukoc5uyLphzrLCnKjtSJdTpNkNWX3jiVbKNra7J/AtxLRg5HRkRbtniyKwsEnfTkBlyzZn20WrrAYYHWxInxsmCmxoxq4Yi9kw0QKRdYGhrQ82NGM1xCOejIR/y1jCIaQI2Awp3YZYKUUoEmnZCjtiOYR6DUYk0rEh55U47sOn0fXc42ze60Aeu/YWHFtjhWCDMGUUdbAhLKVwkwKR8R8u1J2wwD7oF8i+1fjlbsrLX48vZ+PaBTzlULU7I7Ch5BmByGLVZriiKJYNs6Fc0UEZhUc1BBsCzQYgJoipKHQ6dHaaMoqOgqCnE/o6XHpyhtlQ0CMUKoM4pU2o0jBUylCtoLUfqXuLXD4CA9zuWRQ7+tmsZjLsdrKpXDBgQ1FTKhuLSjBgQ6GgKOQFM3qgv7vGrMIwfWKAzsqmus6C5xoXCWXhd/RQ7e5nqGsem5jFULWDNRsdHlkueOZJWLkCVj6peeZxGBywzM6kMzpGLOWz/16bOWT/YfY9RLP7QQ59CwsUaw6uL1FS02HX6LFH6JabydeGUX4VX1m4Kk/J6aYiChR9AzYo6eFIl5ysUhBF3nPVFXiex8tOfAn7HHokZVHA1ZaRAhO+EX8UVaTvRdRaFzsqk1BBKYQUnkk+pRU9Baunp/VSCZOY1sGG6WgvNGY/TscOF1M2HwljNJABJo/VkJ5josGGMcsownmbMBtacqSIAwqJcomUSGQkDGnRUFYRE4lMlFKE4EOslCL6HLIhAt2GeClF0p1CoLVMMBs0ItOVog5KEGk7xIUifQ32wHpe/O5TyQ0N8NzRp/Knd14XAxdMzhjmlun0aax75rwzyBtOvJSZ3StZuWFvvvt/1+D6udEXaiEaH5A1L5Fo5WZ/tJv/tLZEK8s06xutnKJBvHwrPa0f703+jghoTFRsj999Kucj7QIOvwXeJ4S4TWsdXcyFEDngPUH/dh+rnn2Uq//1+LaXG4sdppt+GLM56mjoz2pPtNU/pMdkf9aNc8b6ou+YGq+jP2MTxz6b/tgWJdBzHbvwxSaLFtENcyfWk557lIj+m8YMx4X5xyQiYcIT1nAGyYmgnuzIsE2IQDsqaA8ffEiQaK59ejn9m9ax2nY4x7HZ8M4zEEJHzgACH6l9hPZNuqD9CGAQvk9yx9a/mVSCj12d44R+m4GNmneeu55nn7kuSmY0xkLLR+FpIy7la4HnCzzfCCV6nimf8T2N59cv5Dq2B0X0vQRKCpQlsJRASbCUxlI+lvBQuCjtGTcNzw3KP2Liloi6z7lUaGXhKQdX2LjabKPrSWqBJqbvB99bmCRAKbNPbaWxpWcAmwCkEbF1aSGpeXMYqe1KsboLI+WlFIu7UC7vTK3alXkkKDVER8c/6Co8Smf+Ebo6HqWj8CQoj4dWKB5cYePdFgp0mVBCo4S54Ve+iwh+n9C6zIh7mX1u9mPwewvNyNBmHnp4OQBr12/krDe8CT/YlqC4wRwj4fEcuEPEfZcF2hyvWkf99SM7BKZa+M/QSsTnmZrXuOmYujEl8pEVwyXe+oe/JBvHSDib9rbaMdrH9LpFC2MS47IWSE7UcJ2O2lPLJvpF43IiWKNIbWi0nEjkANHKo+Xj41JtIbMhsWxwFs9oj87hsb+jcQi0CM/z0ZWgPi79ruNjiK4R8b/NOHP6dnyfrz/2IF0jm3mo0MWbNg8w8q6TohQjyr+i5YnO+4m2xN/mj3xB862vlZnb5/P4E4LXnv00A5v+KSM3bZKLpteVyP0y+lLbYt4y8s6subNAicSHjP7M66jObs/KQ5t92eaLNx+X2aTHHDNWNMyxhfONvcItm3QyNil7RVttTdNB+4DD5cDvgX8IIf4D4229EDgbmAW8eSI3bkeKVg7bJue15v1bADak58loSvW1CDYklot/ToIN8YH1eScYbNC6SeKTAhsI35OJhAEgqIMNIv4Kh5m/ZTAufABy6aoVnLxpHSNScfHu+7I+l0MKn9TziOgV4z5GN5vRjkxt+yUfyHHCy22GhzTvvajKs8/En4wY6rwfQRqmltPX9ScYYZWGH7JPdKPoUgQ2CAM4SBWADsHNv5LmplvhobQp/RAhIyNe9BlRUyUoU8vqKxtPWHhaGTuvAAhpXCwANyQopbGkj8TDr3QxUppLubyAUnkxpcrO0cvzuxt/bwBRI5d7llx+BfnCCjo6H6e78xE6nOdQ2jWgj/aDp0wKT1oGsIkDBwTggTDbIbUXpnj1/R8qiUfHl46eR+F7PPXUCgDmzZuHk8un7uWD4yFBe6r3mr909LEONqSOlYkCBqYBhiimqg3VFI/LmYr5yISCDc2BgcyPTcAGRhsTG7ddgA1kzBsHG+oriA9KzZ2cIz5nHUSotyev6PE5QuAhHBsHFjK2I7Z85pwZ6xRa88mnH+Wgkc2ssnNcuMu+jCg16o1/+mMzsEFZmhuvq3DIQT4rnxe88bw8A5uyDoqsZLX5qtP3eZkZXrN8cIy5m7a3fHPZZNxk35y2AjaMa9od66Z6x9rayYmpmo+0BThorR8QQrwEuBb4AMYnzgd+B5yutX5g4jdx4mP+oj354Od/nXn+mEi9hvjn+ByZvsexMorkWNoWiGxWRlEv2WitjCLUaxjN+jItEBmVVcTKJMy4eqlEK2UUzfQasihQDfRNIZGWikoppFXXaQh1GyzbMpaXtoWyJLZjmVdOkctZkThkPq/I5SQ5x+g2FHKw939/jcM+dT6+Ujx+w+286/gTyKkaOVnFEVUsath+BcctYXkVVK2M9GtIt4p0q8ZlQWvwg9KKWKhd7sfe9Q9oX6GePZvPv3t3XLuAaxeoWEYgsoYTuFHkGKk6DFcU5apkuAgjRZ+Roke16lMM7C+rVS+yKQWQSuI4inxHTCCyW9LbJZjR5dJp1+jLjxj7y8oA+dIAqlpEFQcRoXCjrw36YtlQ6MTr6MHLdVIqzGTImcmg18tAuZPhisXmomKoCJWqxvc05RIMDwhGBgRDG3wG1/msf16zZiWsXCkpFlXDbxxGb4/HkqUeC3eGuTtJFuwsmLdEMG+hopBfTJcznw7rELrtYTr9zRRqQ1i1kjl2pKJqd1KyuynqTiq+Q9lz8LVECp+cquHIGgVRxPHLdWcIaVFTearkqGoHT5vjzRJeZHkqtc/Pf/YzLrr0X+ns7OKnv/hfOrt7CMsgDERUt6IMyyDCRDIENtIlEZNdKrGjaDXstuuu23oTpmM7i6mSj+zcVeD/vfjgMce1Uz6RNX5LSyjiY9I6SVl9Y5VRhGMSZRRRSUSjHkPL9pcx14lIt0GphEikUHVLy/q7GYeyzN+BJeZoFpjGhcIIR/pBKUXoUOELhSfthCuFJ6xIb8dYX6qopMJH1EH6mFCkqyW+LwwLT2M0HXxTbuH5gr1vuow9//Jbah3d/OXm33HBLvtFVpkh41GHDyP8ujuF1gHjUBPL/er5pdaaVx1+FQcs/RnFSi8/+tNXeMW5i2O5aj0vjZfpQjw/DfO2uuZCOt80cyRLd80y8dw0mXvG+xPra1hv/bqZZZmZdqAw25JyQsvQb4iXVDQKWGb3pcc104lItjVe95uXnGTnCKNpW7RaUtBOWciW6jdsTcHI8ZZU3P3T4yd2Q14g0bbii9b6XuBYIUQBmAEMaK1LE75lkxiabGBhIsGGZG1a2KYb+kcTh4TmYIPW6eXGBhviQEO0zDYCG0KHCh1YYpptToIP8e/f7MSQBTaEZQJNLTBD3YZAr6GuZWBuxB1HYVmCXE7h2IFegyOwLVj0wJ0ccs2FADz24c8xfNyJ5KS5UbVFrUEkUnrmpjViCEQ/ePAeqw1V8x8yYIOG8hOnUy3vjefkcK0CFbuDsuykrPNUfTsCG0aqikpNMFKCYllTqvhUKj7VqrGbDH9HqYKbZNt8v1zOorPLwnEkPd2BQGSny4x8mYJVoUuO0FHdTK4yhKoWkZUiwnUJJjEJmWWjcx24HT3UCr1U7C6G7RlsKHXz6IpOnnzS4tlnJM8/C2uf12xYAxvWSEY2x39BGbzq0dddY8n8EZYsKLLbkhK7LK2xeA/JTrtK7BmdFL0ORmoOZVfgaSOg6Fg+HXaVDqtMXlYo6BEcrwxa41p5tFBUrTxl1UlZG5HNEGhwpIslXfKyYsAiXUWgcaVtBB2lTU07eIHdpCW8wI7SlJsIrSlXqnz8yqsAeO/7P0hXdzcaElwU8/81fDoVAgn1c0IW2DCtybB1IvkEcTp2lJgK+choVKNRXZdaBBqy2poJQ0L7ThTZfW26UcDkgQ0pR4oGsCHScIiLQMoxwYaEbkNAiYyDDWkLzAbdhphWQzNXigh4ILDCJKndsPjHt7DnN6/BV4q7P3Erm3bZL8oVQ/AAGp0pQgBitDh+vy9ywNKfUXXzfPeuf2PD0BLG8/xZJ3Lk1pbPAhvS/ZMRrYAAk7GeLY3JFGmcqo4R26N+QxhTNR8Zl8SsEKIH2BdDX3xOCPF3rfXQhG7ZdGzzyFYOnriTz7b4Dy8y6KDSao2+1LviYY6+7Ayk5/LkG9/NqjPPw8Ybczmhxx4jZz2Bvef/AFB96uW4A/u0/L/T9Rq/k+dNzr6t1iSrNhZ4bkMPKzf2sHJTH89s7OO5Dd08t66T51fbrFunSLsjxJNq24H+ebBgkWbRYpeliyssXVxmjwUD7NG/jv78ZoRbBTB6EHYH5XwvI04v5a18yLR64r/lG99gw4YNLFy4kDPPet0kb9V0TGyIKUthfCHEdD4yHZMe26GIW/89d3Lg1e8A4M/vu4nVR7yMicKnD939+xy17N/xfcV/3v1pnt+w78RMPB3TMR1jxNTNR9oGHIQQH8MIMnVRv4sYEkJ8Vmv9iYncuIkOIcSpwKlzFuyWaG+F2ZAeN1luFPHPcXZDshyiPq5OLwupavX1NWM3pKltvlenqfmu32BHFCLMcReKkN3ge14DA6LuQqEjdkPIYoj6WnCjGIvdkI46o0FGpRRxV4qwlEJaEsu2IoeG0ALTdlRkgWnZAtsW5HLGmaJ3aA0v/dDJOMODrDrxNJ56z1XkpVcXOYy7UviG5aC8qmE4xPUPoo01JxQtJaL3eZx9fo4Qmupzx1DdeAyek8e1cnjKoWJ1UJEdlHWekpun7FkUazYjVUWxLCmVoVTRlMt1doPvmd9CSIElVWAzLrAdRaFgU+hQdHcq8jlBT6emr8MlL6sMri7z9FqPgecF657tZfXzfaxaZfHc2gLPryuwZqCQASYkQ0rN7Pma/nnQP08wY44BGOYsgAU7aebM03TnvcABo0inGibnFslXh7DcKtpX+E4HWlrU7AIVu5Oi6qHoFah6DmXPwtMSW/k4wghNFqwaBVUmL0rYuortGQ05V+VwlYMnLKoiT1U71GLWk7b0sUX995PaRyNwpYMvJJ62IgVxQajv4AdlEuaYXrdhgBtuuAGAK676NJZlQUCaDaMVX+U0o+GFXkYxHdMxVkyFfGRRR6GxbyswG7LmCtkNzRgQzdwoMtvGyW6ob0z77AakaGQ3xJgMkQVmupQi7koRK6UIWQwhEzHuShEyGXTMAlMHGkuhNaYvFHE1Jz8ooagzFULR5zjbgcRnUzYbLm/yvs7HH+KwD5yJ9FwePft9PPnq86P0IrTITLNgoV5OkY54KcNeO/0PJx34OQB+eu9lPLHqKOLMBinHZkeY9WZfZ9IU/wYntHE+UW91uVZZFs2WacehImofx3dqp5xiOqZjR4i2AAchxBXAR4GvAd8D1gBzgdcBVwghLK315RO9kRMVWus7gDt23vPQ8+ttjePGW0YR/xyfYyzNhvj4ONiQLqNI9G8B2BBuj+clbS3jJ/w42GBACM1YYEMdTKiDDX6srVXNhlaBhkTiEgMblFJRMhOCDSHQEAcb4roNRrNB4ThGu8GyRFBGIejwi5x42al0rX6agX0PZ/mnbiFnaxxlqPiOqGHhBkBDDeXXTDmF7xl2Q/zqbzYYjQ/SRnRsILfvDxHKpbr2YMprX4ln53DtAlWrgCsdKqJA2c9T9nKM1BwqnqJYtShVJMUAbDBAg49b86Pf14ANAoHArUqKmxXVoqIyoqgUBcVBweaNmk3rNRvXKjZu6CRuH5kVUvrM7y+zcF6F+XNrzF2gmb1QMmOeRc9si77ZFvluRRVFtWbEIsGIUDq2psP2yNkenXaFLqtEQRbJuyNYnilj8JWFZzl40sFVDlWVpyw6KPs5yp6D5xt9B7PvfSzhY6saeVnBpoqtq0jt4UnLWE1KO7KcDOtjFT6WNIKQpizCi8ADI8oZulAkNRZCUdDwcwgiXHvttVQqFQ459DCOPfZYWqWdbs1yibh2xHQ0xlS1oZrKMVXykX36eqJ8ZLKAhqy2djQb4u2TDTZEYMI4wIbQ/jpugdlQShFri8ZJlWmBqYN2o9UQfA7LKhCxkorwpRqAhqikIl5CEZRVaC0SbV5QSlEHF+rlFOFne/0ajrj01dgjm3nuhNN58MJPRcLHISDhZ+SV6fyzPme9ffHs+3jVYZcjhOZXD7yTv6141YSwWuN5Z7Q9MT2GdMTzz6gtNT6t39BupPUb/IYHXWPPOx5Lza0Z4903440dSb9he46pmo+0y3A4H/g3rfX7Ym0PAb8SQgwCb8MoR+8Q0QAkjMFqgPY0G0x7e2DDWAKRUVtMiyEEG9IiPs3AhizNhjTYkNRjSIINvucb7YUmYEOozzCZYEMYabBBhnoNoVCkUihLxYAGK8ZqqOs2WFbAcHAkti0C7QZBXnkcf9XZzFp+H8UFO/Pg9bdiddpR3X/0dBwDNIRgg2E1mPp+ET8JR0magtwQuf1uRdhlapv2orjytfh2AVflqVp5qqpADYeKn6Po5Si7DqWaRcWVFCuCUgU2rNesW63ZuA4G1gkGNyiGNimGNwlGNguGBwUjgwI/o+wi2IOEDwaV0sydU2PB3CoLZxdZNKfIwv4RFs4eYeHsEgvnV5k9RyPyOWp2Z6SJUNIdjLg2pZqi4kmqrgQPbEtjo7GkJmf55GyPDquKo1wKskxOlsm5RZRvtCE86eBL4yBRVQVcbGrapuI7uL45VUnho6TGEn7ALPGMdkaMneAJK0rwPIxbRpjUKeElwIOQhaCR9RrZWBlF2B/XWoiPeeLxx7j9th8ghODKKz85+rGaYjxMtiBktN4Yo2Ga3TAdUyimTD4yHqCh2XLjZTWkx26pQGTYng08TKxuQwQ2WHHGgkAoqxFsCNpCJkP0Huo0CAHSChgOImI2hNZVOrC9DIUi6+wGVe+LaTeEGg+RdoNOajeEeg1J/QYa2A1aC2RxhMPe9c90rH6GDfu+iHs++k0zv080Now0kzbdno45vY9y2pHvx1I17vvHmfzxkTdmD9yCyLoBHovd8EK4CX0hfMfpmI52AYde4JdN+v4LuHDLNmfrRbtgw0SWUIRtfmqOscCGOkCRDTZEy00S2OC5PqFAZB14iIMJ8XKK9t0otpTZIENhyABsULaFlDJyo7Bsw2hQSmLnrABgUChpwAbjRiHJOQZsyDlwxFffz6Lf/JBaVy9/ufFHMLcfW9aZDUp4KOGivBrKd5Ha2ClKP2mpKPDR0gLtm+RFlSgs+wEytxl3eDFDz74F3+7AtfJURI7VmzpZuabAqrUOq9Y4rF5ts3q1ZN1ayYZ1MLBeMLhR47l1wGC0KHRqemfBjH7BrNmaufM08+a6zJ/vsXinMjvPL7Jw5mY6KaK8KpZbQfo1Q58RJkHyrDyelaNqFaioDmo4lPw8Zc+h7DqBirZACE3O0iihkVJjK5+8csmpGnlVwRIuDpWI1eBJcxryhcKVTgQ0+EhqQUmDQGNLPxJtVMErdH8wy8fYCcErDCnMMRWWQ0T/71JWZFAHF+Lj0mPC/ss/fhlaa0477XR232OPMX+H+rJbh90wDTCMHZrG33Y6doiYEvnIaA+ztharIT42i7mQ1b9FYEP4OQ42pK7r7YINCcZCyJiIl1FEbIa6KGQCdAjABKQViUBqZRwoEKLBlSIaQx2I8OMMh5iVdaKUIniFpRQh2OBDot/3U+wG1+OAy95E38P3M7JgKb//zA/xcoUEuyF8T7MX6p+zrwe9HSs548WXkrNHePiZk7jzr++ilbwiKxJuEBmXuXT+2dg/OugwnpvztGtGQ/8EiC5OpnDjZKy3lYd6UxUI2b4FI6duPtIu4HAPcBhwZ0bfYUH/DhftlFCk+9sFG0YroQjb68s0BxuauVGE49sFG0LbxCywIa7dsL2CDWEZRRxsCK0wE8yG4BWCDU74bksc24ANOUdgWbDPz77I3t+7Dl9ZPHDd96jutgc56eIoF1u6KOEFzAYXpQ3YIHwvyWiAICmR1DzBmg05Vm+0GMg9zNr7j2Hls0t49rFjWbW+izXrHNass1m/wcJ1WznhCApdmu4+6Oqrv/fMgO4ZMGMWzJwj6Z8LPT0Cx4KOvE+n49Hh1Oi0KjiyRl6WcXQZx6shQ3aKqtt8GWsvRc3KUZM5KqJgtBB8i4pnU/NVoKZtSics6SODd0v4OMolJ6vY0pSeKMy+AnClE9FOPVOYUrcGCwADKXyE0KhAPyEEGiJAB4kfo6amwYMQbAh7zTIiATbEQYY00BCOSe55zd13/45777kHx3F43wc+2OQXijEothKjIVr3NNjQWoRPMKdjR4spmY9Ae0BDVvuWshoa2ycZbIitZ7xgg3GnSDEbEi4UVh1sUEkmRAguRGBDnPUQMRySrhRxDYcEmyFRSpEsm6hrMciG61WC3RCUUvh+fbm9rv8g8+76CdXuPn5/3R2UZ8yBWB4Z125olqNmRcHZyBkvvoSu/EZWrDmMn977cdLOUe1GQvMgln9mjs1oT5dTTHS0UzYRj9H0G7Lmz5yjBYBgIvQbtnY5xXRMUEzhfKRdwOES4IdCCBe4lXrN5JnAW4F/EqK+p/S2gvzaiHbAhnRfGjwwbbph7GSADc30GsJlpyrYkLa/VJaqW2GOATbYjtUANuQC/QbDbqgzGxbf93MO//zFADz8sZsZfNHx5JWLLc2TdUu40XP0yojH86sVG9YWWLOmm3XrFGvXWaxZZ7NmvcOa9TlWr8+xYZMT+zbHjfpde/t8ZvVrZvRDXz/0zBT0zBR0zxB09kKhBwpdGqmS3tlSCixLoCRYlrHzzDtQyPk4SlOwXTrsGnmriiNrOKKKTRXLryK0jy+MX7mP8Q/3pI0vJDWVx8Wmqh2qvo3nK2rBy9cSJTRKaYQw5Q4qENRUwqszQXAjoEALiRuUPfgoPFSirtVHoDBAg8RvKIEwGgrZIEPYH3+FkQYa4mPDv+NjG47BoN/zPD72kQ8DcOE7LqK/f3bm7ziRIIMQmiwNhqz2abBhOl4AMeXykS0tn8hq2xKwoVXry3R79t+jgA3NyiiijR4DbJAym9kQL50wGxEBDCgrAB3q4EKo3RC3xAzFI9MikZFuAzLJZhB1DQcIweaYbkOslCICGUiyG+LlEb6Gxd+/mV2+fT2+ZXPPNbcxuPPeCbDBz8hFIVvcMW6RaasirznyX5nR9SxrBvbkh3+4Bs93xgQpxhvN5o0zbBPjx3HTHOXg43iK3SrjotnYLRm3o8cOcHqdjm0c7QIODwbvVweveAjgb7HPehzzT0eTmEg7ysz5W6W2TeB2TOQJKitRkxkoYZYtpkpRS2c88QDHfPwsBvxefn/ax/n73Dex+aeawQ02A+stNq7Ps3GdYP06ybq1iuGR1tBIKTVzZw8yf+Eq5s0boL9zHv2zcsye4zNrDsyaCzPmSHpnKbRtyhRqvqLsKso1RbkmKFfB9aBShVoNXDf7It6K5ozMuAkWGZP5QjW0TSTlq9W5spgHE7nOdua/7dYf8OyzzzBz5kzOO/9tE7Zd07FtYqpSGKd4TOcjUz0m8knfKDoZyXU2jhuviFsWQNxqWxizf/tzln32XQD89SNfYf0hx0dggz/KcmNHjVMP/wDzZixn08gCbrv7c1TdLpig6+z2cv85/aR/x4gXCjDTSkzVfKTdC/CVTNTZaBvHWJoNMPkCkdCc3ZCsvWtdIDIcMxq7wXdDRkOj9WU0xgvZCHV2Q5IBEdpd+pH1ZbvshlZjNM2G0P4yZDTE7S+VbQQj68wG01YtKYY2KqojitKIpDRkhBWHBwXFdVUqT8zkX/x1VMjDDzGvUSLn+MzurzF3do15/RXm9leY119h3qwyc/urQVuVhXv/gq6dfon2bTY9fRHVsrFsrMkcrrAD7QKLiudQcW3KnkXNk1RdRdUVuF7y6YRhhQqs6LMwDAcFjm1EG3O2T972yVue0VKwquRUjZyoYosaChfl18yxJE39KRiQwROWcXvQNp5WuNqipq2I1eBrGbiQGfaBkp5hOgjPlJzgGZFHPKQwJRT1Jz0qEtCK24SBeTpvhdaTMRvKeDlEXKMhvly7zIbwvRW9hjCGh4f5zDWfAuAjH72cXC4/+gGSEe0yH0ZjN7TSNh3TMQVjyuQjk8FsSM/bTLMhPW7S2A3hXO3aXwbLjFpKEWyLkKZcol5KIWOlEaFoZExAskULTIJSiXpJhYyEIv2opCLtWBETiow7VKSuUiG7IXSpiDtTdD3yIAd84GyE7/PoeR/hmZPfGF0H0uUTzd6hMe8EzcsOuoqd5/yRYmUGt/3uBkYq/bQS8bw4mf9mjG2ixxBn2TbOn/1ferwP3aQUKV2JsefZmje/0zfa0/FCibYAh+3ZYmpLYks1G0x7EmzIAiuywIZ025aADXUqWR1s8DwdW1docVmnr21tsKG+T5IWRFnRkOSMIhAppMKtWdSGc1TLOSpFh3LRpjyiKBctysOS4pCkNFy/nTCrpQAAIABJREFUsc0OB1gEQEeHZuZsTf8czezZHrPn+MydU2PenBrz5lSY319h3uwKM7sqWLpW13AgcKYIf0ghcGbcY8AGLdj0/PmUqvvhWjaudKjhxG7mbaqeRdmzqLoK1xdUPYHnm3rOYDosBVrWP0sJSoJtGaDBsYxYY87yyVlGsNESPo6sNWgpaGG4DlEShTDuDihc34qEG71QqyFUzA6BBhGCDR4qABjqOgvB76zDgohAgDJwjvB1LNENyieyXCSAWIJWr4uFADCILTsZJRTxuPt3v2VoaIjdd9+dV51y6ijHUnuAAtT3U3zZ0UCF+LEcHxeKd05HazFVayanckzVfCSMVvUastpGK6NIjx/NjSKrvx3dhsRcLTpSBAslSjCiecYqpRAyCTaE4EJCs0GOboEpjANFwqWCRleKRF8IUET6DSmhyNh1M3pPvULthrCcIrfmOQ66+J+xSiM898rXs/z8j6dyw/pvFAchIBsIiLNTj9rrZpYt+gVVt8Dtd3+OTSOLmIjI0l5IP/RqWGaMy1Q7ZQ7NtqndZXaUmEzByOnYdjFV85EXPMVwS8GGVtwowvFZrIbkcjqBWI/H+jJaLgAb6usaHWzwAh2HVsEG7etxgQ2tAAz1z+EFVeLWHCrlPLWyQ6WUo1LOUS05VEohsGDje639J+3oNgKLPTOhbxbM7BfMmOVx3J2fYZ/Hfk7P/BxPf/XbdCzqw1FGJNIJLBituA1mJBRpnlhrrUFoNCAQIMyJw+5aTufC7wMwuPZshkpH4lmG0eBi4Wor0kWo+hYVT1HzJDVP4vl1VkOUL2kDLggRlKhKbTQblMZWxoLSVj628nCk0Z1wZC1ydggZB0LrAGwQaCnwdV1LwUPhaoUXshkgAgcEGikNv0BFmhZe3XIyJegYMRIy2AxQZyaEWg1ZThKZywVAQxarIQ4yZDEa4u/N6GvNSixe9vJX8OWv3sLixYuRQgM6AgmSy2cIP8XGxQGF5PeqL9eM2TAdExtTlcI4HTtmTBbYMB6ByMy2iRCJbAI2pNkQ4dhMsCHQYxCx/ghsiPQYQs2GOsgQgg4NrhQB2BAJSY7mShHTbkgKRao6sNDAZgjBBRldV9M6RD4COTzEgRe/hvy659lw8DH89SNfNduks90nIFu/Iesee9/F/8nhe3wD31fcce+nWbNpWQs3/aP16Yb1hA+9Wo10XtgqOBCBCeMAFeq5cWs336MJRsZv/CeDsbAtWBBTlXmxI4AtUzUfGRNwEEKc0M6EWutfjX9ztm60WkIR/5zFakj0t1FCEba3Y30ZLpsFNoQneM/zEyUUwJhgQ6I9+NtzvWibxysSmb3f40wHqAYgQrUcsBNKOSplh2r07qD12GCCnfMpdHl09vp09fp0z4DOXk3PTEHvLMGMfsGM2ZJ8XmLbou5IoTQv/uKl7PXYTVR6Z/HHm39DYac+bGWEDy0R3AiHL2IshvB7RE85kv+lZP55enb6GkL4DA6cwsbhU/CkhY9MsBpqvsL1pRFijIENXlQuYBwgVCzfU1IjJVhSowL7SVv55JSHJV0s4WNJF1u4CQvJ8Mm3R1A+gao7Q2iFh4yAhnD9oZODcYswZRNS+FjhvCmgIJFkxfzHzfqEgQ9SQEO7jIZmQEMrpRNZQpPxsfFtSPcLITjhJcfHxoxCh85gLoT7Mt4fn6cZEBGfMw3YhE/Jws/T7IbtP4QQXcAngMeBLgy16v1a65F2x7Yz144cUzkfga3Pamhsbw9saMZ+aAY21DduFJHIOLshPn8W2KBUAmwQCUZDSjQyboWZtsCUyrhUNHGlAJLlEshEKUXCpSIopUg7U6RBCB/IYjdQ89jv/WfT848HGV6yO/d99jZ8J4f2g+tWKqdM/x0HJNKxZPbdvGS/zwDwvw9+gBVrjwbq+Wc8JoIQkAUANCunGA0sCPPY1oUagwdobdw0bymTopU5x+tQ0W5M61ZMx/YYrTAc7oQoC28Gu+igTwONCnPbYbQKNoxVQhEfM9lggx+bJwtsGMuNolkZRRbYEJ2wMxwpomVHARvC8DxNecSiPJIzr2KO8ohDuZg3wEIx1yKYUCPfUSPf6ZLvrFHo8ujo9ujo8ejqg+4ZGicvIr2G0I3CshWOrbAdgeNI40jhiBjgAPvd/nn2+uFNeLbDn//tNmpLd8WWvgEbpHFciG6sA+eE+H2pLwxVNP49tBBIa4BZO30BqcoMDx3J2o1vwsPoIXhaRXoIoeODpwU1T+L6qRtsYdgL4d8m99JYylhPKhGADYEzhCXdCAwIGQ31FMckNqGGQlje4GuJq+vaDGEyFIYUfgJoUJE2g98UJAitv8x8sbmoazOEQEMaDPCRCHRsH5h9Ht5IZ5VOxN/DMVl/t4MeJ7Yhg/EwGtgAyX0YnzOL/dBK+UU7ThXT0VoYsHCbUBh/APxBa30jgBDiCuArwBvGMbaduXbkmJL5SDtAQ1b79gI2jOZIEW+Pgw2pDa2PibMoYqUSEdggZRJsiOs0NGg4iPp7aIGZcqUIyyq0MKBEvXRCJkopQt2GRClFnOmQssGss/sySinS7AYNe1z9bmbf/Uuqff3ce/1PqPXONDkgIsZmqI+Pn/eb3R9rrZnd8wivOPhDSOlxzz/eyt+ePi17cJNI5rya9D1tMyvLdsop2tVamIzY3jQeXggxvT/rsQ3zkUmPVksqhoDbg9eUemIyHc2jFZcK34fSsE1xyKY0ZFMatikNO5RGHMojDpXi2OwEO1clV6gEr5p57zDvIcBgWSKm12D0G5SlkEpGtpfN8896pLW5Fv/uRxzyxfcA8OeP3cLAQUfjTISFoSwya+F1WPYA5dJerFv3DuLe1n4bN71jritjKtmkHGDC1jnJ87cak70dU5XaNh3bNoQQLwZeCbwn1vwt4FEhxJVa60dbHQvMbnWuKRLT+ch0TF6M05FiImLRt77Aolu/gufkuP9zt1NctBsTcYnrzq/ilEP/Fccqsfy5V/KHRy7Y8kmnYzqmYzraiFYAh+OBNwFnAK/FaPZ/c0ejKiYi/nR6AgQi4/O0wm5IazYkl9u67AZTftHIbojrNlSrmuEBm+FNwWvQYmTQoTRktBPGerLq5KvkOyrkOsrBe4V8R4V8R5lcRxWlYjXrsacloQuFkMaJQgqZcKKQlgEblJIou85ssCyFnVM4jkJJie1IcjmFbRuWg3FwECx88j6O++TrEVrz0AVXsu7kMyPtAyV0VEqhYkKG8fCFCp5NBBR5EaKTPnMW3IyTe45qdQHPrf4Qru5OMBt8LaMyCs83rAZPG2HIsC5ToFECgpLRul6DMMwGw74wzAbT5tZZDQk9hYDZkKGnMBazQYlAwDFgN8RLKLJKFOIlFJHadrB/wjKKdAlGeo5w2XB/Z5UfjFd/oV0Aofk8o5RRNAGsMjUdRvm/046l2nQZxZbFNgCWXgJUtdbLo23Q+nEhRBV4BfBoG2N72phrR4/jmWr5SJNDbzxOFNBcsyE9thU3isQy7bAbwmVHYzfE5k+4UoTshpQrRZrdEGcy1IUiw1IMEWM7CFBWbHydzRDXcoi7UoRikHF2Q6TdEAlFysR1L2I86MZ2P7guxsspgEQ5xaw7f8zu//YhAP525dcZ2P/IaEw8skoqsj6HYavNnHrYpXTmN/Ds+kO5868fpZWHM9Cow9CQL2eVIYyi39CKrkOCSTFKmcP2UjawJfbuU+XJ/kRa3E/H1H3QNSbgoLX+DfAbIcQ7gdcAbwR+KYRYBXwb+Pd4orMjxfYKNtRPqHWwoS6KM3FgQ3zZWhk2D1gMbZDmfaPF8CaL4U025ZHRDhNNrqNKobNKvjMAEjqr5DvKOAUDKISWiPF9EYZJTpIgAxA5UoRAQ5zVoGzTpuzA/tKS2I4VsB0M0GA75l0qgWNLcjmj2+DYYCnBzI1Pc9JHTsWqlHj61Dfz1HkfJBdoIMQ1G8ISgjjYEJU7iIBHIFSwJwRawOz+L1Lo+Duu28vTz19OxZsV3dh7WkW2kiHI4PkSLwQagn1h8qV6GYVxgtCooITCAA5Gp0FJD4UfAQ2NoouNQEMCZEgBDQYUIKFbES+haAdogBA4Gb2EIg40NLt5nmw2w5bO36ojxUTHNNCw3Ua/EOJPsc9f0Vp/Jfh7ITCQscxGYOdU21hjC23MtUPHVM5H4rE9gg1ZOg3N5o07UkTtGaUUrYIN4YOHONggZApsCLUa4raXWRaYIfAQBxviQpGha0VUchEHGFK2lykbzNCZIq47lC6xyCqn6HrwPpZ96K0IrXns4qtY9bIzIZYvhg8hmoENyRy1/i6o8oqD38fM7qfYMLSUn973GTzfHlXnYaxodKHIvvlvVf9gS2+6WxGMrDu4NXmAMAn6DRMV04KR0zFVomWXCq11GfgO8B0hxHzg9cA5wPuFEDdrrS+apG2clGhFIBK2jvWlWa4ONvhxhkMEGMSXHR/Y4LmazRskG9dIBtcrBtcrhjYqhgYsSsPNS12F1HT2VOnoqZr37gqF7gqFTsNWkCpcZ6NYpLkQyUgTolktaZ3NENxwxxgNQsiofCJkNmSxGpQS2Dkr0GyQOI6sAw6BboNjQ6E0yMsuexWFjWtYd+hLePiyG3GsOGvAi57sy9iNcfRbJ1QL6m0awcy+79PTcxe+n2PFqisYri2ObuoNwKACjQYiwCEUiwrBBgMw+EH+U2c0SKmxZSjWWNeWUIEQZKgxkdyu0RkNF5zzKkBw0zd/FgENIvjucZvLuO1kOC+QmNvTMtEXshqy9Bqi4yPlPqER0Xe48frruOmGz7H88WcT84ZzjxZxYcatFWnRx1biC9d/nhtu+AKPPf7kZG3WdLQQenJo1Ou11oc26asAtYx2SePjx7HGtjPXlIiplo+EMRFAQ9Yy47a+hATYkF62FZHILWU2NLAXmllghnoOIg5MyMR7litFOF4HTAZCe2ipUoCCSthghkKRoZV0lnZDyG6IX9/S7Ibcc8+w/8WvRZVLrDztzTzxlvcl8gFfJ699aTvMrHzVpFual+x3FTvNup+Rcj8/ufcLVN1uRoutwRpo92a2XcHIdrZhIhwqsubNnGOCBSOnLTGnbkxSPrLNY7y2mBuAFcFrH2DGBG3PVon4KaEZqwFas75MAw1h21jWl2Fb/WQ6OtgQ9xIeC2xwq5qNayUbV0sG1ioG1kg2rTMAg+9lH8hSajp7Xbpm1OjsrdHZUzHvvVXyhSoaP4Ykx8Ui62BDGELIhpNhOkEy60yyGcIEJM1oEEIEIIMBF0y7NCBDADhEbIaQ3WAbRoNSAicQiLRtyFHjxCvPoO+ph9i8dG/+cu33UXnblCXI8Ca7XkYQdxlAEIkZhnoMdbEnSW/3/9I/8/toLXlq1YfZVNwHN8Yi8LTA9aUpmwgEoHy//nuEuguRA4UImAFSRwBDCDiEjIbRShPirANXm6TI84P3yNVAAAbUCMsmhNAtuU80CGJlAA1hKUpTq8uYOGY4PowzznwdLz72+MzjdazYXjQmpmPHiG0guPks0JfRPhN4us2xqo25pmLs0PlIGJMBNowlEBkfMxbY0E4ZRWI9cQcKSLpStAg2iNCxIg42KNXcAjPOhoi7UoSshZhzRbyUIgQbovZIODIGMsgYyBBj5/kk2+IgBITgQBKYkJsH2e+dr8HZuJYNLzqBhz98Y6Jcb7TzUvreNp2/Hrbbzeyx4BfU3AJ3/OnzDJfnNZ1rtHmy7muz7qtHE4xsGJuaoIE1Mf2EfdyxvZSabI+xo4AtU1UAvC3AQQhxNIbC+FogB/wYeBXwPxO/aZMf7ZRQxMdMJNiQ1muI/m4BbKiUNBtWSzasEmxYLRlYbdgLmzfIpgdsZ69H76waPf0eXX018+qtku9yjdJ9BCTEXSmIbWfSmaJZhKCDzEqYRHbiIiPgQSR0GsLyCWWFgINhOKSdKAzgYDQbIsBBEgAOYCvNUddewPw/3Ul55hzu/8KPEX09yEALIXR8yKL8B38knjTER3YW/sKCOTcC8PTad7Ju6MURq8HXhtHgaYmvBZ4fJiDxfWLe40BDWD6hAmvOsHSiGWOgzseogwFxNkMSaIh/C1CybnNpSiC8zP0QZzSkSycAo3cR02mIz9EsEYv2QQokmDd/PvPmz288frZjMGFrl1VMRDlFpVIhl8tNwNZMRxvxc+CzQojFWutnAIQQewFO0NfOWNXGXFMmpk4+0sgggG0MNoj0vC2ADQlniRiQEHuwMG6wIWAkxF0pEmBDXLchBBkyXCmil6w7UugYIBGVSsZKKcx7yokiLLEYxQYTqDtTRMAE9THVKvu++w10PrGc4V325sHPfhfPskGHy5ndGn9vVlKRjr0W/pBDdr0F31f811+uZv3mPTPHNS0xaAAzNFn6DVngRJZOQ7sOFWPFaGO35KZyMlgUW2Nd0zEdO0KM6b0hhNhNCHGFEOIJ4DfAnsB7gXla6zdorX+pdxDFECHEqUKIr5RGBiccbAgvBs2sL7cEbNAaBtbBP/4iuftnih9/xeGWywvc9L5OvndtB//z7QJ//t8cTz1kM7jelEb0zPJYvFeV/Y8pcsxrNnPq+Rt5/YfWcvol6zjx9QMcctIgux80zLwlJTp6RgMbNH5GqUS0XzI1GcL9LRteMnSZsIx/dug8oZRC2VZQJmEHzhPmZeeCd8e8cnkbJ2/j5C1yeYtcTmHZRhgyl1PknKCEwiKyvrQt2P+7n2bXn96Cl8tz/+d+iLtocb2MIoPVYH6P+BMMiSlgULjaMraW2kJaz7Fk3qcQwmPl+n9h5YbTqXoWVc/YXtY8Gb27nkgkDmY/GaAhEoFUntGSkEmry7ggZJwNEG5fKErpaouqtqn6Nq5v4fpmO37x0//krJMP47gDZvOGU4/gt3f+BIG5abWFiy1cnnv6cT783nfy0uOP5MB9duOklxzNxz92GRsHh6L5b7z+OvbffR6PP/EEF771TI46YAknH3cgP739P5DC52c/+j6nvvwYDt1/D970hjN55ukV0f7zteSG669jn90X8uijj/DWs0/n0P124fijDuQLn782QV288frr2Hu3RYnj68brr2Ov3RazYsVTvP28N3Pw/ntxwrFHctMNn2+gPf70jh/zipedwH7L9uDUk1/G/975P7zx9Wfxxtef1XAcx+Opp57kHRe+jRcdfgj7LtuD4445iksuegeu60Zjli9/mHdc+DYOP/RA9ttnT17+0hP40s03Rf1Pr1jBe9/zbl5y/LHsu8/evOQlx/Gxj32EwcHBUdddn385b3/b+Rxy8IHsu8/enHXma7nvvntbXvbCCy7g0EMOYZ9ly3jpSSdx8803A3D99dez26678o9HH+XNb34z+++3H5dcckm07F133cUZZ5zBPsuWceABB3DB29/Ok08myz2eeuopLrzgAg4/7DCW7b03x7z4xVx00UXR/hmrf/uLiJMzoa/RQmv9MPDfJG0rzwR+obV+VAhxSaBTMObYsfq3ePdsRzEV85GhWmM1TFZJxFh6DZMBNjQTiGyYL6bZMF6wIZgwG2wYzQJTWXWtBqWSDIdUqUUCXIiJSoalFKEdXdLqUiZKKRqAhziLIQbAN2M3mM+w+xWXMuOPv6Yyay5/velHuN29UV8YfirPTPdnte008w8cs/fVAPzm4Q/yzPqjGxeIRTM9h0zgoAmLYbwxGtOhFV2FUUsYJumGfqKAgmaWty+0mAZe0jHx+cj2Eq0wHP4BbAb+EziPOkVzjhBiTnqw1nq7LUbWWt8B3LFkj0PP39bb0iyqFVjzrGDNM4I1z0rWPCNYt1JQLTeenKTU9M31mDnXp2+Ox4w5Hn1zPHpmeiiriUikP7EXiC2JiTzhpp/0AAl2xZJffZ8DvnwZWgj+dOW3GNz3MGySLgjjCUsNsNvCj6FUkQ2bj+fpdRN3aLW6XVmKtum2+37/f1z+vvM46riXc/H7P8ngwDqu+/SHcN0aOy/dNRq3bs0a5s1fwIcv+zg9vb08++wzfPnmG1n+8Dl859Y7EnN+4NJzOe3Msznn3Hdy67dv4WMfehfPPP0kf7rn97z7fR/Eq9X45Ccu573vvoTv355cFuDSC9/Ca157FudfcBG/++1d3Hzj9UghuejSd4/5nS++8HxOO/1M3vSWc/m/X93JDddfx7z5Czj9jDMBuPt3v+W9776UE058KR/68EfYuHEjn/rkFVQqFZbuvMuoc7/tvLfS09vLFVd+ghkzZrBmzRru+vX/RYDGAw/8lTe+4V9YsmRnPnTZR5k3bz5Pr3iKRx55JJpjzdq1zJ8/n8su+2i0H7908xc57+G3cuttt4+6/of+/nde97qzWLZsGZ/45KcoFAp89zvf4U3nnMMPbr2Vfffdr+myDzzwAG94/etZsmQJl112GfPmzWPFihU88mjyvvPtF1zAa1/7Wt7+trdFNxB33XUX5593HkceeSTXf+ELFItFPv+5z3HWWWdxxx13MG+eoeSed+659Pb2cuVVV0X759e//nW0f8bqn44ozgKuEUJ8ABDAIowWAcAJgA/c1MLYVvqnSky5fGTfmb3bbT6yNWNb3IBl+d1n1U9njWsY04Zcyk5fvZZ5P/oWXr7AAzfcRnnBEtKX+1Zo1en7/77OJzhx/w8ipcefn3gLy587reVt2p5jS/LO7UX8MR3TN9rT8UKLVksqeoA3Y+yoxorm6oPbYbQqEAntuVGE7fVyiPhy5sa/OAzPPwkrn5KsWmFAho1rgYwLTUePZvZCn/4FHv0LfGYt8Jkx20OoOKBAjJWQBTbU2+rfKT0uyW4YK4QUaF8jZLYwZHJs/UlJvHwi1HCIl1CEwpBxvQYZvNs5ZUoqLPMKyyiUNHoNRhzSaDYoCQuW/46jP20O3YcvvYYNJ/1TxCBQMXaDUVhL6wwkf4/kE40qu82/kpy9hqHS3jy68sPUfBvfF3hRGUWjKCQQWEQSiUJKabDIsLQj7pRhxbUaYuyLhBJ2oNfgkdSMCPu/dtOnWbJ0D6658bsoJVBCs9uuu/Lms17B0qW7RKyJw484nCOOOCz6rgccfBg7Ld6Fc153Gn97aDl7Lts/+h7nnPtOTj3tTCSa/ffbl+OO+G9u/d63uPP/fk93dxcAa9et41NXfZznnnue+QsXBfvNLH/GWa/n7Re8A4AXH3MsI8NDfOOWr3DOW86lp6d31OPuzee+LQIXjjr6GP74h9/zszt+HLXdcP117Lbb7tx081cimu/ue+zJ6f98SibgEP7uGzdu5OmnV3Dzl77KiSe9NOo/9dX/FP19zdWfoq9vBj+47YcUCgUAjjzyqOhXATj88MM5/PDDo2UOPvhglixZwuv+5Sweeugh9tlnn6bf7ZprPs38BQv49299G8dxADjmmGM5+eRXcNONN3Lzl77cdNmrP/1p+vr6uO322+vbdtRRDePedM45vPktb0m0fe6661i0aBFfv+UWLMtcGg466CBeetJJfP3rX+eyyy4L9s/TfOnLX+akk06Kln31q18d23/N+7fH0LR3szBh69V6E/D2Jn3/3OrYVvqnWEzZfGQiBSLTfe2wG8ZypEgwKmKlFNHY+DY0Yzekv0NYapnBbmjLAjOu6RC4UMTZDXXGQ3x8UrshUU7RzAYzVU4BJK/HGeUUALN+ehs7X38FWggevvobDO17qNHwIsmACKM+d2KXRWPDdC5vb+TlB7wLxxrhidUnce/jFwbshWwdhXRkOk2MU78hkwmRyj2bxXhuxEfLVYUQYzIn2pkvOa5F0ckJJl1tT4KROwihbIeJbZWPbI1oBXB4y9hDdszYmmBDcQhWPgUrn4SVT0pWPSUYWJfxVF5p+uf7zFlkAAYDMvgUurfQ/jLWF37H+Mmn2Ul4tHKKMOKgQ7N+ACmSyUocaIgDDkKIyO7SskyfcaKQgStFEmywrLhAJNhWaH8Jfase4/gP/zOqWmHF6W/jmTdeiq2MEKOUunkpBSKh2RBPKIyGgWbX+dfRVVhOuTqXB1dcTdntaBCE9DNOHCHYoKRJRUIHChWINloyZsmJTpZPhElGTK/Bi9tbhkBDLHnxPI/lf/szbzz/XdhKREDGQQcdxMKdFiGoCzZWq1W+8bUv8+Mf3c7zK1dSqZSj7X7qySfZfe8Do89HH3dCZHc5s6+bmbNmsWzZvnR3d0XbtvPS3QF4ftUq5i1cHO1dgFeefEq0XwWak095Nbf94Ls89o9HOeTQ+s16Msyyx7/khETr7nvsyfKHHzL7xnP5+9//xtve/o5EIrzvvvux06JkiUY6ZsyYwaJFi7n2s9ewfv16jnjRi9h556VRf6lU4s/3/4lzz3tbdEMfRly/oVqt8vWvfZUf/eiHrFy5kkqlUt+PTz3ZFHAol8vce++9XHDhO5BSJsoQjj7qaH7ykx833fZSqcT999/Peeef37Bt6XjZy1+e+FwsFnnooYe48MILI7ABYNGiRRx8yCHce889QLB/Fi/ms5/9LOvXr+dFRxzBzkvr+2es/u01puoFfgrGlMxHxgLpw2hVs6Gxr3k5xESBDfFSimjcKKUUZpUxcCKasxFsSFhgKhWtu67LEAMSYoBCQigyGBN3nwj7Qu0GPwAlfKHGtsFsoZwiGhNci7vu/yO7X3YBAE+879OsP+HVLTEZwvCbjFWywon7vZfuwvOsHVzGr/9+OVpnsDe24kP1iShpyCrrGC2ybqjHY4mZ2Ib/z955h1lS1Ov/U93nzOzO7s6yOScWFmEJEgRBENTrz2vgXgwgwQwISFJBcg4CklkQBQyACUXFi4pZDPeqSE4Lu8RdNrE5zc7OzOn6/dFd3VXV1SfNmdkJ/T7PPOecDtXVPTOnq95+v++7DZV5eSTm4MRAHY9UJByklHf3Rkd6Gy6yoZxng7GsDNkgJWzdAosWSt54WUQEg2Dtm+k/oEKTZOJ0yaSZkokzJBOmBYyeKBGeTgrUHn9ZjmxIVA6BsW3Y/7R3Qzl4wouZ26wBk00yAHi+jxfdSvRrAAAgAElEQVTXfAoj6lJ5PBSKfmwM6fleTDIUC4pwEDHRUCyIiHAwyYZhm1fxrrM/RPP61bx5wPt48ZwbKRZCYiE2iIx+1K1ZEQ3xe5InDwEJ4TBt3HcZN/JPdJWG8uRrX6OtY2xKzWDfK4UIyQbPk5HnlYzJhYRkkLHawBfpiEt9EKOrGaQMDSED7WkLhBP5DetW0dXVyZgx4wxzSI+AMWPGxi1LBDdcdw3fv/c7nHjyl9h9z30ZOqyV5cuX8ZVTPk371q3h9You0OiRI+LITIGkWGyitXWkZijpUWgKzQi3bt2q9T7EmLHjjHMbM3YsACtWLC/7dwcwcqRpyt/U1BRP6teuXUNnZydjxoxJ7Td2zNiy7Qoh+M7d32PeLTdx/fVfY93atUydNo3jjvs8Rx/zSdavX08QBEycmDaz1HH9dddy7733cPIpp7LXXnsxbNgwli9fzslfOMkgH2ysW7eOUqnEbbfO47Zb5zm3CYIAz0HuJX2r7EY+btw44/P69euRUjJufEqVzrixY1m6ZAkQXp+7776bW26+meuvu461a9cybdo0jjv+eI455piK63Pk6A4G6njEhjPVqQ6yoZKvQy1kQ7UmkWobQ6ngOkfLKDIxk3aQDUYEpk4uCGNbPZUiTqGI/BlULKZtFIlGKKCRCqa6QZj3X7XMMosEpYw0PwM0v/YKbzn1KLzODpYc9Xne+MSp8QMJ9ZACTCVklkmkOSeUvGOny5mw3dNsap/Ab564gc7SkNT1VsM5NU51eyS4lBRuw8hGYVuVPNSjOih33vlEvW+jvyRUDGTUG4s5YNBdsqHUJVmxBBYtgEULBIsWwopFpNjlQlEyaSZMmimZNDNg0kzJmIkytu00TSIVI9s7ZEOlxAkXlKpBEQqu9carirqMBimqdCJMpPDwC4pY8PGEiOMufV/g+16YRlEIiYdiRDYUIqKhWAiJhpBwgIIvGRK0c9D5H2XEogVs2HE3nrrme/hNfhwzqadRQCiE96wBgloutYl8IGFs6x+ZPu67SOnxzOuXsa5tx3jCnwwQ1HnLJIFCKLJDxqUUBSuKM/6J+pX0z0yF0NUMinDQBy2eCPf1RMCY0aMoFIusW7M8VFBECRSeCFi9ehWTJ0+Jz++hX/0Ph/734Rz7hTMJor/hzZv/Fp9LmJIho/MpYfNMoeLC18ga4vMQKBVJuHT1qpW0TJ8Rr1+9ahUAEyZUF9+VhVGjRlMsFlm9enVq3arVq5g8aUrZ/adPn861192AlJL585/ne/fewyUXX8iUqVPZd9+343leRVLkV7/6JYcd9mFOPvmUeFnb5raKfW9tbcXzPI75xCf58Ifd9beKbLATKkaOHBn1bUXF4+jKD7WvEIJVK1emtl25ahUjRyYlLtOnT+e666+Prs987r33Xi6+6CKmTpnCwYccUnF9X8RAfaKQo/+hOyUU+vpGkg2pY9eqbAhXxNu5UinCdpP2M1MpDLLBS8gGv5CUSXheTCbYage7lCJJpkiUC3YyBWCqG4Rb3ZBSPUTjAG/tGt5y4uEU161h9UHv46Wzrw37YE3w9fGDyzBS30Zh9xnfYvbE39DR1cJvn7yRLR3lSfVqUK1hZD1wJlbUMFmPVboDbIKfT4hzKAzU8UhFJxwhxJ+iiK2qIITwon127F7XehaBrI5sML0XYPMGeP5R+O0P4Y5L4OJPC274osf9X/d45A+C5a8LhAdTtpfs996AD58QcPLVXZx3V4ljL+riA58qsceBknFTJF6kDKyXbEj6LK19TbIhOUZCNrhgt+uCLdN0/XgFRST4eL4fp06ESRR+nD7hF32KzcXwp6lAU1MhjLgcUqSpyaepyY9SKArh+2af5uawjCJMnwh/VOxlcxGaCpImP2Dfq49n3BN/pX3cZB6b9wCidQS+CMJxhjH51csUwp9SRB50SY9S4NMZ+HRFEZctQ55npymhA/T8JaezbN2BdAUeXYEIyyk0+aQiGzyicgkvJBtUMkbRK8UlFEp5oJMN4d9cSCx0ST/80VInOoPwc0I8hPvoZEPBC2gqwtzd3sqffvsgnuwMvSCQPPXEEyx5Y3FIEhAmUGzZsgWv0GQoJR782Q+BMPIyjMs0zTYVARK+N78sRfwqUxPk3/z6QaOdX//yf2gZNow5O1X9dZOCQOL7Prvuuhu/++1Dxv/2s88+wxuLF1fflhDssstczjvvAgAWLljA0KFD2XvvffifXzxAe3t75r5btmyhUDT53J/+9P6Kx2xpaWGffd7GC/PnM3furuy22+6pnywMHTqUvffZh188UL5vWcfdddddeeihhyiVSvHyJUuW8MTjj7Pf29+e2ie8Prtw3nnnAbBgwYKa1ufIUSsG6ngE1MS9e34NPUU2VCyj0PugEwjJirJkQ6UITCOVAhKyQaVS6L4NGtmgl1LopIJeSmGoG2KvBq+sugFA6SJ1kkG/98Wft3Yw59RjGPr6y2x6y+7Mv/5uKBQyPRmy5vWucorpY3/HXrO+gZSCPz97JWs2zXHvnAGldqjWv8Hsb+Xts8/Fta02pg3S73taCdGbBEZPHaunkjkGArKUVjl6D9UoHA4BRtTQpqhjnz4JKWHVMnhlPrz6fPj65hvpL/2RYyXTd4RpO0qmzZZM3h4KRZOokEHj6+f6+3eLZw9KSD95rQdzv3UZ03/zfbqGDuORmx5g64SpFJRiQKQvmmuZC0OKy9h9xrn4XgeLV32Y11ceXncfu5OMYcP1d2Cf04mnnsUXPncEp5/0WY448hjWrFnNbbdcz9hxpoT+gIPezS8fuI8d5uzCtBnb8+ffPchTT1QXx1gr7r/vhwSBZLfdd+d///YX7v/xDznltC8zYkSrc/tartmpp3+Zz33mE5x80uf5+JFHsXbtWubdciPjxo3LLP8BeOGF+Vx5+aV84IMfYvqMmQSlEj/72f0UCgXeHhlDnn3u+Xzi6I9zxOEf5nOfO56JEyeyePFiXpj/HBddfAkAB73znfz8Zz9jpzk7MX3GTH73u9/w+OOPV9X38847n6OPPpLPfvbTHH74EYwbN561a9fw/HPPUSqV+MpZZ2fue+6553L0UUdx+Mc+xueOPTbu2/znn+fiSy4pe9wvfulLHH/ccRx/3HEc84lP0LZ5MzfffDPDR4zg2GOPja7PC1x+2WV88EMfYsaMGZRKJX72059SKBTYf//9K64H+Ne//sWnPvlJrr76aj78kY9UdU16FuZEIUefxiEM0vFIjghVJEY0GtWkVLh3lMw6/xRaH/sHWydM5vmv30/QMjy1WT1jubEjnuGgnS8B4JGXvsji1QfV18ccOQYB+o+CZOCOR6otqXhACJFdeJxGn54KmxI2GS8LSqGx40vPRQTD87BhrfmLLzZJps6G6XNg+o6SaTtC6+hwnVIi6MdQiRTqOIH+Pi6HqL+UQj+PWqRqrmQK+5roEMKLjSMzDa6E+XRE92lQyRTKq0F4XlhKEf2oBArfF9H7xK/B85VPg/JuEFHphKBQSMoofA9m//Zu5n77MqTn8eTV36d97h4UhIxLKcIn/9p1cHk2aOUJQZQ2gWhj1+ln01RYx8oN+/Hsoi9TwosUMCL+fcbq0UjdoMooVBJFQU/FEOZ7fUIdIEAzf7QNIcPPSZ/VeSllg2rX90r4BBx44IFcc/2tfH3e9Zx+8vFMnzGTs8+/jO/dfRdoxpNfueAaAglfv+lKAA48+D187cbbOfqj70eg+plcr7jURHvaE/eHIDFSdPzJ3PrNb3HlpRfyjdtuYsSIVk48+TROOuV0599WrXjHgQdx3Q03c+u8mzn5pBOYMWMG55x7AbfNuzmT0IDQ22DS5Ml859vfYvnyZTQ3NzNnzk58845vxXGUu+++Bz+6735uvulGLr/sYjo6Opg8ZQof/ejH4nYuuugSkHDDDdcDcPAhh3DjTTfx0Y9Ujimbu+uu/PRnD3DrvFu4/LLL2LhxI6NHj2bu3LkcdXT5pMPdd9+d+378Y2666SYuu/RSOjo6mDJlCh/92MfK7gdw8MEHc+dddzFv3jxOO/VUisUi+7397Zx99tlMmDAhvD5jxzJ58mS+/a1vsXz58vD67LQTd9x5J7vuthurV60qux7C75dSqdSnYjJrMW7Lsc0xoMYj4H761sg0Cn15j6gbovdC6MdLG0VWpW5QSo9aUilcRpEO7wa1j+7dYJRT6N4Nujkkwiyv0MovbWWD7t8wed5VjP3lTyi1DGf+7T+hY8JkQwVZ6XvHnnioodmw5mUcMvcMfK+DF5Z8hOcWZ98XwvFl2cMYbZvLzIX1ECP1mjVW3b4rEWMbP40baOUeOXoXA3U8IirJlIQQ36mz7YullIvq3LdHMX3HfeTZtzxKV6fk9QWw4Gl4+Vl49QXYusX8RQ9rlczaGWbuDNvvDJNnSvxC2svBJhsCjTyohmwI9ytvEhm2JymVzHKJerwbVFs24WC2WznFQsEmGdQylUARDkZE7NWgEw0q4lIRDXHkZeTX4PmCgi/CRAqfkHSI/RpCsqHgSyY88TAHnf6feF2dPHf2zSw96oRo0m+SDVlPyhXJkDhLQ0l6ILvYY9bZjGv9Jxu3zOTvL95JZ1dr/HtUcJENvhdGXarIy5gI0IkGzYhR9UNaZEMW0QAJ2ZDEaAYaoRHEJRRG+6ot7b3eXuLXYMZxKnNJw4U7+qy28UgIFKPdaP2tN1/P1+fdyNMvvEahUKhauVDNduW2Wb5sGe99z8Gc+IWTOVkjNhqlNtFTKnoD1SpzBgJ2mD37MSnlPj3R9q677SF//POHGt7u3B2n9FifBysG4nhktzEj5c/+8x3Gsu6mUejbOfetk2wId7W8GXSywTaZrINsQAiEX7DIBlU+oZVRKIPIeF8/SaFQZIMQSN9HegWUISTReolAeoWQXPD8MJnC80OqPFofRMsD4cekQyA8gsinSKVFhffSyLw5eh310x8x67xTkJ7HC7fdx5p3/mfkcSQ0zydBEJVD6j5QysNBrQuC8L2U4HubeO/uxzFq2MssXbsvv3vqFoKgQCChVNL8xaLxpiIcwnEp8ZgSzJIKe/zqGrvG494yY1f1OWv8anuPhe2bBub2PqpNta1rebgsMLdxlGnoJumu5fo+Niluj4P19DZXGUjcjizfjt73StvZxzWOU2GcXs1T/lrJku7EYvZuGUvjxmf/+8tD+tV4pK+MRapJqfhsb3SkN7FhLdx2geTl56Gj3byxj50ombVLSC7M3AXGTU7WuaIvoXfIBvtLUaEWskFHOb8GlVvseV78hZuZQqHHW5EMUJQhZEg6JOkTNtEQkg9a7GUh+lzwKBRDoiH8rNInQlWD75lkw3aL5rP/OR/F6+rktWNOZelRJ4RpEMjYtyE+d+upQfz7RMRRlgnhIHjL5FsZ1/pPtnZux78W3kBnV2uK6Q8fwCSeDXHkZoaqQSkRYh8JS12RxG8qlYWISYf496QRDQJpxGn6ItDpgPgY6kcpGvRjK6JBIA2iQi3TFQ22M3eY9BHE52U/9elttLe3c9VXL+eAA97BqFGjWbx4EXfd+Q2GDh3C4Ucc2fDj5WRD/4Uk/Z2Qo29iII5HdNRrEJl+33iyoTvKBqvT1UdgGmoGS+mgv1reDfE+hvJBUy9o3g2GugHCNsBQNyi4/Bp0k0il/xv2z78z46IvAvDaBdey9uD3gaxeIaCIABuCEu/Y6QJGDXuZ9W0zePi5q5GyEPUj2a6a8l23j0Ll/SpNErMeYlbjEVZrm2b7jZ9Ml22ryol2PWkYjThub6Av9WWgYCCPRwZlSsX61bB+dfgLnTBVssNusMNuIckQl0dYpEIjyAYXO1yrSaTODFdDNuiwWeSwPfcXhk46ZK0HfZBikgxCCLzIOFIRDepVRV2qBAoVeRkqG0RMOBSLIdHge2lVg+fJmHAYtnY5B3z5UJo2rmPFIYey8MtXm2SDY3KmkwxmlKX5xGHKmAeYOf4nlIIi/375GjZtnRL/vg3/Kq1sIiQBpBF1qb+qCbzeL51oUE9B7PSJrPKJghdO9FX5hF2eYRMNtqIhaTOIiQpd1aDaMMgGTfLlaeSGS9mwLeB5HqtWruTySy9i3bp1kaHivtw873bGj5+wTfuWI0eOHDbqLaGwPzeKbEg6ZpINxnJjO035YCsbrO11giJFNqh1Otmgl1LoJIP26jKK1AkFI5nCeI0IAz2ZgqSsQiFJp9CWWcQDQPPCBcw+5VN4XV0s++wprDjqWNDu32q8Eb7HscxdRgGwx8xbmTL6f2nvHMkfn7mZDofSsha45vF2QkWleXwtJQ0q3axse2XW15tQ0QiiobfLJBp9vP7jYZBjoGJQEg7DWuFjJ4REw4jtkuW6yaP+uSfJBjXft8kGF6ohG2y41A3loN8QsgwcbZJBvdfLJpR3g65oECIhGOJXL/RosMsnipFXQ0HzakgUDdGE3ofmjs28/czDGLbkVdbvsjfPXvVdvKKXSTboE/csoiEIwvUjhz3FrlOvA+DJ185l5Ya3JtdA6AleMlY1qMjLLFWDTTbYRINSMugxnBD2WScahJBG6YROFrjIBkU06MeJSyCi/WxVg9E/jWgIENH1lTE5odooSb/i0/dTTj+DU04/o+w2qb+5GssempqauO32O2raJ8fgxUB9opCjf6ARZEO2p0P3yyhS29vKBs8qs0idoDsCM1QzWGSDnUoRqxS8hOW3fBvMbWy1Q7KPjMkFLZnCUjfE6gc1TshSOmjEu1pXWLmC2Z8/ksLGDax974d4/YxLUwRCLdCHdDPG/pqdp3yPIPD5y/NfY1P71Kj8ou7mw2M4xpy1PriuJaGiLyCrnGKwI78OfQMDdTwyqAgHIcShwKFjJ81m74NN5rbRZEMSq1le2RC2nSYbskwi7QhMG3YpRXyMjH084RHIwCQaskwhteW6mgFwEg1JOYXybDANIYVHXEZhl0/oppB2+YTnRf4IssTeF32SUc/9my2TZvDUvJ/CsJaYbDCui/UUQvkzSEk8sddrKIcUl7PP9ufieSUWLjuaRas+mFwHYZZQVPJqEEKmVQfaQEUpGezyCbVeTff1tgwyA001YZVP2IoGI7IT06shphWEzCQagJhsUESDfo1jMsMiCPISgBw5cuRIoMYj04e3JMu6WUKhLzf2bYBnQ7x9BWWDsV01vg3q+FkmkWVLKYRBLsTqhrDRlBEkBrmglRRq6oZwXXL/VQQEmOUTCvHntjZmnfBJmpcsZtMee/PyNXeEfhPSvN/H+2lm08kynBg9/Dn23SE0cv73y1/hzfV7E8jwVMtN7JV/QzUo3075+7fw0qSDq2+1GJtnbd/X0R0FR44cAxnbVvfcy5BSPiil/PzQYdtV3rgMetoBt9ovpL76xeWMu3Qtcygosh6QuDD3lrOY+Odf0Dl8JE/c+gAdYyda7dd3fXzRzr47nEVzcS1vrt+X5xafXPW+LlFIrU/n+ytK0t/WXciRoy4Y5FqDfnLkKAc1Hmlt6h/PfcrFCdezXTc60rCmXHGXdUVglkrMOOMkhj37JFunzuClr/+AYGhL5f3K9S36DhlSXMUBO52F73WwcNlHWLj8o8k2jqFFtcsaif6mcMiRoy9joI5F+sedrgeQKBC0ZQ51g80+JyaP2jKtNKIWdUM1iRRZ6gbbzddWNMR9rrGcIgt66YR6VT4NInqS4WtlE8IThrKhUAy9HAxTyPh9omwo+OFDAb2MIlQ4yDj6suBJZt03j9k/uJmgUOSpG++jbYedo6fuibrBVQupG0IqZYMqoVDqhrfOuoKRLQvY1D6VR166Eqn9mwgBvpcoG5R3Q8ELEqPIjDKKuB+a2sI2htTLKACjjEL3a7DLKPS2bWWD/lRG74/t2aCgezWUNGPJ6BmQkVwRl1FofaiFYGkkGbOtiJ3eNozM0WiI1HdFjhy9jb6gbojhUDfoy8N1mlLBRo2pFGl1g2epGzyHusFzqBu0Zercde8Gu5xCVy8Ic3BulFogDP8GeyA/6asXM/KPv6Fr5HYsvONHdI0ZR3duR2oo54mtHDDnLFqaVvLm+j157JUzjfVZ+4WKTUc5qUyPa7P7UEZ50I1zc5tVNu7e3agHgrXENnf34V/ur9Cz6F/Xd+CORwYt4QDZZRRgfinrZRT653rIhqT98r4NWfFB9jY22eAqp8iCKqPwKjD6NskAGIaQnvJucBANRuylEJFBZGIM6Xmk/BpCwkGRDWEJRcGXUekCTPrb/7DrDaEHwPOXfIN1+x4Skw2pa6R+dw6iwRVDNWfSd5k65g90llr4x4Lr6CyFpkx6GYUyh/SjkgqXOaRwkA060RBO5kVMOthEA2D4Nehxl6oMwkVkqPQJ3a8h/j1qbdllFGp/u4RCJyp0skGVUsTnpG2XI0eOHDmqR3cNIvXl3SEb9FQJVymFem+TDd2KwIyPp5ELRiqFVj6RYRSpezzopROJOaRNLniGksEup9AJBVvxYHs5jPnOHYy95y6CYhOv3HYPW2fP0Uo3k3b08WRg3TfdwzXJXrOuYcyIZ9m8dSJ/f/FqAll0bRi2X6vvQo236kpzattsErIn4o1S5zaSqOjv6GnldY4c3cWgJRy6QzYk+5pkQ9J2bcoG87hu3wbVB9soUkfWF469vBq/Bn2dTjIoNYMiGjw/JBJsokF4oarB9wW+FxpEer7A90Ts16BMIouFsG2VQhETDNqrF/kkjJ7/KHue9wlEEPDySRey/NBjUmSDTjKEn9NEQ+jhIGKiAWDCyL+x85RvIKXg3y9fzqb2WdH5J6oG3RzSF+VVDRBOwLOIBjWxLznYTE/oZo5J++GEP2nfJgcCRThoberkh002xG04FA0KitywDSWBbZ5G0V3kBEkOSfJdkSNHr0OrwyunarA/9zTZYLRdA9lgddiok3SSDWobtZ3Q2rFNIV1qC6EpGjxFMGgkRbxNQj6o5Ya/g/qsv8akg/nUUd13R/zuISZedQkAi66+hU1vO4B6EVjExOwJ9zFz3C/pKjXzt/nXsbUzjFAz+uEYvzYS5UiM7k5wbbLATE/r/gnVQ0bkBEb1yCMxewYDeTxSE+EghLgVuExK+WYP9adXUI9BpPqcRTbYygap7VOpjEId247A1GGTDfG5WGoGc535haCiLiEZZGQRDzrJEK53Ew2eVUYRl08IKBb8kGTwRVXlE8oc0qVq8DzJsKWvss8XD6PQ3sbSQz/Bqyec5/RpKEc0qMl9EKhl4T7Dh7zKPrMvRgjJc4tPYsW6A4GwT0rVoIgH2xQyVh244i5Jkwv6skCm1QEuw0kvLn2QsamjOtfAKp9Qv3WPhGzwvVJEXmSoGqSgRJqoKGcomSNHjhzbCgNlPKKwrciGakwi421TBIJD2RC1ZfTXSKdIkw1xKkW8XqkbtBIKdV7OGEyTOEBFWurJFBFcZpHxZ/3VIh3s90OffJypZ5yMkJKlXzqPtYd+FCTavZnUfi6ywIVxrY+w2/SbAXjk5YtY17ZTpKjV2rTGsY1ApYm+PTZNkQaO/btLHlRDAvQvyXyOHIMTtSocTgLuAfr9Db4vkA0KLmWDWm5vm/S/OnUDhKSBWq+TDpBWMajtw3UmyRC/txQNimgIEylE4ttQMF/t8gnfU8tCosHzQnLB95LoS6UsaN60lred9l80r17Bmn0PYf7FX0dXOgbWDT1L0QBQCkTye0dQ9Dew/5yvUPQ388bq/2DBsk/HJRQq8rLgR74Hnhl5qRQIrrhL1b6dQGETDUDKq0EnMnSyAUhFXNpEAyRkQ1aShV06YSsVdLJBR7i9F/e5N5CrEEzkiR+NR06g9UsMmPFId/waUvs3yLPB7oMQ+rHNVAoD1aZSgOnboPru8m2oFIOpLdOTKaKDxa+uKEzALKewIjHjbTRiorjodaad8Bm89nbWHH40b554evo6VAmThBAMa17MvjucjydKzF/yGd5Y/d6aFAz6UDCMZc8mJepRKdTDH2SVUNRy/Hgsvg1KB9JES3UER9BgFUCuKhgcGKjjkVoJh4F5FfoBsjwcBhqcKQ+dHex1xhEMf/UFNm2/M09f/yNksamuiWjajKXEvjucz/Ahi1m3eQ6PvXoh+Z95jhyDCNL1vZCjHyD/peXoFejfD966tUw77lMU1qxm0zveyZJLr3EPXOqA77Wx3w5n0VTYwNK1B/Hs4hMb0u5gxkAcJ+cYwBjA45F6PByaXQuFEPsB90op53SvS72HatQNdo1creqG+FiaukE/flYphZ1KES+zvBtc5RRJ2YQXS81slYMOz/GkpJKywYsVDpFfQyHxb1BKB+XRoPwaROTToJdT6GUUBT8spVBlFOop++5XnMCYRx9m69iJPHHrA3S1mrGmuqoBEmWDmT5hllCobeZOvYMJI//F1s7t+MfCawmCIYa6wY9UFp5wezboZQtGX6pUNgCGSkL3gVAKB9V2oKkSbGWDOm7otYDh+WAnWQSo/cz2dIWGUkTE19hSY7iQKxFy5MjRyxgw4xGovYzCWG77Lmjr6vJtgFitoKsQdHWDsV0tqRRhQ9G+SUlEyrtBIVY6CCOFQmrbGMkU2jJlFqnUC6CXT3gp/wYbUgjiW9vWDqZ+4fM0v/Iy7TvtzKJ5dyILTeF23S41lLx15pW0trzChi0zeeTlS8lKrncnPWjjG5k2Is88qrVdrQ/R7e2zVAvVTPxrIQeq9VvQPcug8aqDHPUhJ4IGH+ohHB4WQrwGPA08Fb2+BhwGjG5Yz3oYPUE26G0H2uTfJhtcEZgKWakUKUlXmX9Wu2xCwfPSN0NjECOSek6baFBeDTrRoIgFz0sbQ7r8GkJfBjPuUpVR6OaQeinDjndewdRffo/SkBaeuOVnbJ0yQ7vOZvlEfP0c6RP2NgCTRv2Fnad8Byk9HnnpSto7JhqeDTG5oJEMRqkDFtmglXVkEQ0uM0fbByL2TBCOdrVyCp1oUO35GWUU8TXDjMx0wY+KM1Tf7USKnFjIMdAwUCWMgyfQEBQAACAASURBVAADYjwCfYNsiMkEMMkG7Xgpo+l6Uils7wbDGNLybtCTKcCZTOEsp9B9IRzlEwYxYfk32O/DBZKJ536Flkf+Sef4Cbx+5z0EI1px3Q7tBw96e4G2TI1FAgSzxv+AKaPDhKx/LvwaXaXh0TbCajt9vGqgxpxZ68zP7odatRzLhVrmmPVMSF1khx4h3xPoDxPn3OOif2FbjEeEEMOBK4CXgOHANOAsKeVmx7YTgVuA/YAhwO1SyksqHaMewuEmoAXYHfgSMEJbd3sd7W0z9KSyoZxvg61sUH0pl0qRbJO+EZSrg3NmZKt1Vq1n7N0QEQ3Kn0EnGjxBHHWpEiiUMaTLr0GlUBR8gRAYZEPB140YTc8GX0imPHgPO37jcqTn8fQ197Jxl70QmDcz3acByCQa7N/x8CGvs+/2lwDw3OIvsGrjPgkBEqkNFNmgPBt01YEiG1Qf9OOHfy9eJtEAabJBVzikjCcziAZdleBSNUBCDtjGkOqznqah+qSUD2pf/S8oJxty5MjRhzAgxiONIBtc68qSDWrbMmRDDC2VIto4JixSZEPq5Kx+WYSEOp7h3aD205MpLO8GPZkipW4QaeWC7utgezao90CsiFDvw1eP0TddT+v/PEBp2DAW33EPXZOmpM+1TowZ/hg7T7kNgMdfuYhN7TNT27iGeTFhUcN8sp75caV9aonE7CvoaSKi3DEbtV2OHA3Ej4F/SClvBRBCXArcARyjbyTCG8ZZwBlSysVCiIMIif+/Sin/VO4A9RAO90kpH9EOPgOYDGyWUj5dR3u9BiHEocChYybOdpINOiEQL9OIg3BZfWSDgkvZoJMNCno7ahvXe+P8NOmYGkTE5RWOGsMsNYNyrnYRDZ4QsTGkIheEZ5ZPxOSDlkKhl0/oqgZFLthpEGMe+SO7Xh7WL75w1g2sOviDyfWz1AxSqqcGlYkGCOskD5hzNsXCZpaseRcvrfiEQTZklVDok/uwTfXEAmMSbxMN6tjx+EgEmQaRemlGcp5eimiAhCQop2rIIhrC/iRkQ/x3F8VqAjT7Hc6/s1qRZXKYkxc5+gbShGCOfoN+Px6ZMaIlWZYiHtJkQzmDSH19RbJBS5XIIht0lUK83pVKocNWN0RtajfAhGwQ5vK02sE0jdRLKNS2SVqFZRaJRhg41Qwu00j3A5rWn/yIMbfNQ/o+S265nfa5u1ptOdqv8jtlSPFN9pp1AZ4osXDZp1i69l1JWynlgUitq8vE0UleWGrbHngo7on6yIveRjAIFQE5ydFX0PvjESHEgcD7gTO0xfcCLwohLpNSvqgt3w64Qkq5BkBK+TchxGqcWi8T9RAOBqSUrwOvd7ed3oCU8kHgwWk77HN8uTQK9ZpFNsTKghrIBr2MIu6PlUqRHMNNLlTzRWzXq7nqMg3PhjqIBiORwtPVDVEZhRcSDZ6nkw7ECRSel6gawsjGpIRCCBjxynPseeaReF1dvPbJ01l85EnaNVDXqTLR4LohCyHZZ/srGdnyChu3zOSJVy8Mzy0iFgpeEPfFRTbE/UDrh0Y0KIWDTjToUGSD7gGRIhsqEA2AoY5I2kpUCnYChUtloUMiKAU+Ugp8rxQfI0d5mNkgOfojJNtGwpij8eiP45Hdx213PGSTDdWmUbj2qZZsiOEgG6xOGaUYxj7VllKAmUqhL4/aS5QKFinhUDfY1yNeb5dTaGoGXemQ9b+vth3yt78z/sILAFhxyeVsPvjdVQytTbgefEgEQnTy1pnn01xcy8oN+/D8Gye4+9LHbsX1pFtAlvdE5bbqPd5gQX59Bg620XjkXUCHlHJ+3A8pXxJCdAD/CbyoLV+r7yiEeC9wj5Tyz5UOUivhcD4DIIIqVS7RILIhbj8wyQGbbChnEpn0sbKiQUE3hIT0wEVtE6/XBirliAZVVqETDUK4yydizwYvNIX0ovIJpWoQQvk0JMaQdvSkENC8ehl7n/LfFDetZ8V7DmPBl65Orrfm2VCJaHDdw4SAHSf+iOljf09nqYV/vXQ1kpaYZND9GrL8FMCtaFDGlHr/gDjKUkQkg+3XUM6rIYtosFUNIfmQTHzDfU1jSdt/QY/vVCaSpWi7oV572b+3voicHMmRY9BhQIxHoMYSCjCe4tvru6NsSJpPyIasCMxu+TaEDSevttpBL6WI+lZJ3WBcl4hIcCkX9BIKIQOk8MPPDpVC8cUXmXTyyYiuLtZ8/kTWHfXJeH0jJgVvmXwzo4Y/y5aOCTz+6uXIaEgeZIxh4v710u2ulnGoDfvhV3dgj3F19CV/gnrOty/1P8eAxVghxKPa5zuklHdon6cAa0ljDTDT1aAQYg5wGnA88HshxFgp5apynaiJcJBSXlXL9jkqoy8Tk5WIi5raypDV6/C3bGbv0z7M0OWLWLf7fjxz5XfNQUc3MXbE4+w+4xYAHn/lAja1z8L3GvsLyCI6bDTurBJSI0eOHPUhL6nof8jHI4MT0nVDrbut9J1YLfNXrGDSscfibd7Exvd/kFVnnt2w4wJMGvUQM8b9jFJQ5NFXrqKja1RD2q3W5LGnn4o3UqKfP8HPMZjQA+ORVVLKfcqs3wp0OpZ7kMmsLgTOA34PfBO4GjiuXCe6XVLRX+FSN+gGkRAqFZKSiMaUUmSpGxTsGMx4eYWbSCUiwFY1qPe6skGpF3Rlg0qgUMaQul+D7wlNzSBivwbPS0deepEppB17KUQ4YRZBiT3O/QQj5z9O29RZPH7j/XQ1D4UqlA0lrXwhVKeY18ITkiHFley/43l4osSCZZ9g2br3hGUdIozjFFYJhfJYiH9H0nz6oRQB4e/GM1QN5nUn0yDSUDdYrtYlmX6Copdg2GUUCnoChe2ObZ+POlZn4FOSgmHFrfF2qizDOJdtQGzkyoUcOXIMFtSqbqgpkQJMFYOlIFDbdTcC0zwh3cfB4d1gx2BWUU5h99lWMdiEhG4emV0+Yd3rNm1iwnHHU1i+nC177c2Ka6/PfPih7vt62aJdcqneq9fhQxawy9RrAHh+8Rmsb9vF2Xa4feaqdF+sbcPxUPVt9EZiZHeiL6s2XexrNSg5thlyBUlVWEzozWBjNBklijL8J9sA/EIIMR44vdJBBi3hAL1HNsTHk9IiEfS2pJPFrSf+Uq2L3yvvBi32MotoUGSDSqAQHk6/Bj2FQnk2KHNIVUKRxF3K+LPybDDIBiQ7X3cGE/76KzpaR/HoLf/D1lETIrJBu6FLKAUJuZAkUqjrmWwXXgOi8+7kgJ3OZUjTGlZu2JsXl5wU9ksziDTLFDDJAGvAUNIm6wkJopeshPu5SjNsssEmGqopo1Bmk57Vhm0MmRVjqUpASoEfp1F4Apq9DuN8BzpyMiOHQj4kybGtUQvZ0CjfBiMaUy93wCq3UKgilcIop0gWmu/tGMyobd0gMj5fT0+ccJAQ2nVRn+N7mCMCM1xvbRcvF9DVxbgvfpnm+fPpmDGDZd/4JsGQoQ27Lxb8Dew+43x8r4PFqw5l8er/jh+iuPpkI2tIaPhDyOpMH7szL0+RAY7GqjWA7MuGhX25bzkGJrbBeOTXwLVCiOlSykUAQoi3AE3RukpYQRXeSYOWcOgpskFvP37qXiYCM2xLf/KcVjeUg9MlGpNk0D+XIxpcxpBCYHg2iFjNoPwawj4oc8jEs0GaJpGaZ4NONgDM/P4tzLzv6wTFJh6//n42zdgJMtQMtk+DTTLY8IRkt+m3MXbE07RtHc9jr1yB8PxUGoXyWMhSNriSJ2yiIfx9JGSD7dmg1Al62+WIBiBlDqnICnXtXAkULrIiyf32QrJB+nSWQq+H0UM2uS9ejhw5cuTocfQG2eDcx0U26OkS4cq0UaSOWrwb7P7Y3g36uaZICjcJQerVrXww2tZgrJeS0ZddQctf/kJp1CiWf+tbBKNHm9t3S+4smTvtClqal7K+7S08/8YZZbfW1Zqu43YnqcJuo9Hblm+new31hIKh2jZlb8hABjhyEqdvQUr5vBDid4QRmKpU8QjgISnli0KI04CSlPI2IcQI4IPAL6SUW6KYzI8Bl1c6zqAlHFLGkVIaBpFQmWyI29LIBqVUqEQ2JP1I1BBJe+X/GfUBhwyk22vBKpsADKJBeAnZoIgGu3xCmUQWipq6wSNWNeiJFH70UEInGfQSCptsUJjwp5/zlhvPAuCpS+5i1V7vjK9xJaIh62YbljGEx58y+i/sNPkHBIHPY698la5glJNsEEKm1KAqHjKLaDDTL6I2kDF54Sqh0OEqn5BSGAoIVwlF3D/LGFK16TKGVKqGQHp0lAp0BR5DC2HJVlF0IZAE0VOfep7852qB3kE1Xig5akfu4ZBj2yGtRgzfp5/Ou6IxqyUbhFbeYB5H+9v3rG0ssqEqo0i9/zbZkKVOqEXdoKHacgrAMJHU99E/j7jr24z44Y+QTU0s/8Y36Jw1Cyk9Z4khmGUSqWUOE8qpY+9jXOv/0tk1gidfu5JANjtLMbPQLWLBGntmH6OGkgdr7l2rSreR2JbH7g30JaKjL/VlIGIbjUc+DlwjhDib8KY0DTg6WvduQuHFbcAkQlLiGiHEdwiNJW+SUj5e6QCDknBQX0HdJRtktF8lsiE+bgVSodwXvSeEU55mKxn0ZUrNAGQSDSImEtLlE54HhYIXp1D4WvmEHnnpe4pwSFQNatJfjmwY+cwjvPWCTyOkZP7JV/DG+45CeTZUIhqS3526PtG5a2TDsCFLedvsywCYv+RkNm6Zm0k2GKqGOJayMtGQHNMdpWmTDUYSBabKIWwrIRvsEgpI14vacZdqX/14EkFX4FGSPl2BR1cQek6MKLaF6ocGOW7nyNEfkf/95+gLqJZscO1TF9lQJgKz2lQKJyziwWrELKWwVQxqG5tASJED+jZeahtp+T24zCFtDH3ot4z62vUArLz2GrbuvXeyfwO+H1qHPsvsid8A4LnF57OlY1Jqm6whoGverJbVWqLuOka1pQ/h8RozibfbGUjkQI4c9WJbjUeklOsAZy6vlPIw7f0CYFY9x6j8LTyAIIQ4VAhxR/vmdQ1veyCa1LjKNRplEN3yxivs86UP429tZ9Fhn+Plz4Yqh0Yxe57o5O07nk9TYSPL1h7EyytCos71hDh/Op8jR44cOXoTajyyocNlDt4/IKqYyDccDUyuUmh6/EnGfOUcANZ85UzaPvCBhrZf8Nezy7SL8USJ11ceycoNB1XcZwAOKXPkyDGIMagUDlLKB4EHp8ze5/juqBvK+TbEx7LeJykVpLwbqmWMvTKzfVsi6VI2eAK8ghcrG0J/Brdfg2ESGZVRFAuRasETFApJGUWouKysblAorl/Dvqf9F81rV/Lm29/L0+fcSiA9w01ZIigFyedSoJQBlaNEPSHZfcY8xgx/js1bJ/HU6xdQ8BL1Qdi3RN2gEGjHDo8VqhlKUQqFvg6UmgBDjaAUDSpRwmU86VI2QKJucHk2KGQpG/T9lWdDeA19uqRHZ+ATBIKtJZ/RQ7ZE1ylSTUgv7mdOvuQYjMhLKnL0NtR4ZPfxo453lUpkqRtq9W1wGUhnqRv0VIp4e80o0olqvRuMhAlNkqgrIqxyiqgTyavL68G6Vqmng45xk15q4b/2OqNPOg3R0cHGI49gw/HHZSoi6nvyGPCWKV9lSNObrG/bhZeWn1hxj54mGyqNOXXVRCOEB7WqFwaC2iHIyw5y1ImBOh4ZVIRDjAyyIbCJhyrJBj1hQkqzlMJOpYi7YJEN9SgkXHWYWUSDnkAR3svdfg16CoVdRlHwFUmR9mwIiQgZExBqMp5Kydqyhbd96cMMf/1FNuywG49edR9dXlNo1FmmfCImAxz/iPFkOerDlNF/Zs6kHxEEPo+/cjlB0FqRbLBJBgjLFwJFdDjMHF1kg24QabRfhmhQ5+AiG/T+uSK27HhNgYzIm/CnM/BpLxUoBSGh0+yXaCmEhIPyqLCPk5MOOXLkyNG76EmywUic0P0fXGSDflwt2SJeluXdYJdSuLwbFBERNqafvOnjoC/H8mKIPR0cpEAVigupCXvFmrWM+fzJ+OvWseWgA1l70QVVyTh12bMxdrAjMBFMHv0jxoz4B51dI3h20WUEQVHbDmP7atEIQsJuo975sV2OUZsJZT7WyJFjsGBwEg5UTzbEk0+LbFBwkQ3xOodRZK3Mratu07VOGUKq9zbRYBtDuvwaXKqGxBRSkRBpzwblmWCTDTqkFFAqseeFn2b0U/9H2/ip/N+ND7K1pdX0bHAQDYkxk3X+0YTfE+o9DBuyhLfNDs1S5y85hY1b5qbIBhtq4m0nT+geEgr6+fkicHo2hH1TfxNuokGPrNQVEZXIBhfRoFIrdBPJzsCPkyg6S15sRrndkM2GoiH1N5WTDTkGIXIPhxzbEj1NNsQoE4GpfUiPO8oZRbrOpdzEP0VAOP73jBSKdP9NUkIREFo7joQKm6AQbVsYdeKpFBYtpmPuzqy+5QZkscnYprtPGkcMfZZZE+4EYP4b59PeOTFz29iTwSYCarwl99U5fF8QLWxL1cG2Um3IWk0+cmxzDNTxyCAlHGonG+I9Kygbwv3NVIpk3/pKKXTYJANQkWiIjSKF9eppBEOGqiEkKBKiIVQR1EY2qAs098Yzmfznn9MxfCT/d9MvaRs/LUU0qN+FIhrKm0MmZEOoruhk/x3Pp6mwieXr3smiVR83yAZdCRF2KSEWdENI3TRShzo/nWTwBCmyQbVdjmgAYjNIpZLQzSGN/un7WESDIlD0EoqOoEBnEBpEdnT5tDZvjfctii66pI8nySQdcuQYVKiiTCtHjp6DPlF2qBbrTKRIbVchAtNIpYjaShlFOrufEAdlkynKERG6usFBHDjLKSDbMBJSiRVxXwG6uhh5xjk0PfMcXVMms+qbX0cOG+bum2q3xklAwV/PW6ZeghAlFq/6OKs3vqOm/TP7Uea7yqUYqJeAMOLae6kkwmVeWW6cXO1kupb+BDVM0AdC6UeOPoYBPB4ZpIRDCJtscKkQKiVShO+TNl1kQ61/POVUDVAb0WCXT3hepHQQZHo16KoGVwmFEFIjHzSfBsfTcXXus79/E7Pvm0ep2MQ/rvkpa2fthiypbUKiQS+bKOfVEJd7GmQDvHXGLYwe/jxtWyfyzKLzDR8JlSIRtq/1zyIaXKUbMbFhkQ16AoU9eVdkQyA9g8CICRPSng+GV4Mmz4z7YRENavtAepTw6IqIBhV7GUhBwQviNAogJBvi6yCqJh0arXyopr1cbZEjR45BgxrJBnt5tWRDDAfZkKzL8G1wlVKYnSl7Xk51g2MfM4UiYzxUg4O1cS+VkhGXX8OQh/9GMHIkq++8nWDc2LrackVaqjypHSZdTXNxJRvaduGVyLfBFZ9Z9XEr3A718VIQWKWojsGUEI1TQwyW0og8DjJHjvoxaAmHSmRDpfjLpB1T2RAvt8gGW91gQwhRdp0O5c8ApIgGIOXTEN7fy3s1eCIxhlSqBp1ssAkG/X362pqfJ//+x+x281cA+PcF32bFnu8iCNJlE7qawVU+YX42fSOmjnqYHSbeRxAUePK1KygFI7RSC5sMUMqG8kSDOo4XqThc5pBxSQRqoJGQBapUI62UMCMzU2SDYxCT7KMKJ2R8DEU2dJQSZUNX5D0xdmib87x6C7mKIkdfh2TgShhz9BPUQTaY5IFNQqQJhrIRmPp7F6FRRQxm3DeXUWSlMgvd/DHTnNKLiYjumDq23PldWn7yc2RTE2tuv5mu2bOc+0ohqJbztvedPPrHjB7xTzq7Wpn/xiXIMkPt8oqF8sdNxrDltxOeSJEOjeQIyo1fG4WeUBPUXOIsvAFJOuRKjb6DgTweqeywM8gxEJlb1/3cpapoRPrUmMf/wj6XfgaAp0+5hsX/76iy29fzvTe0aQV7bX8FAPOXnsz6trlAzz8hd7Vf7cS+kRPxgepo25PI1RM5cuTor6ikgux2+zWoBxp30J4fjjb/4tcMv/nrSCFYd+2VdOy1Z1X71TIBGDbkRaaN/xYAC5eew9bOCXX1NWjgfb2nJ5SucbKrPKK/T2wHItmQI0dvYVApHIQQhwKHjh4/uyp1QzUmkQquVIo6+pe5Ti+fgETZoN6X82tQZRSqdEJ4OMsoPK+8Z4NuzqirG1xjH4lgxCvP8fazPorf2cHCj53MC0edkalsMCIxtUuYUmNqxw7VDSX2nX0JTYUNvLl+fxat/HjiiWD1K8sQ0jalTB62JOoGZRCpJ0kYkZokJRTq/IPoGGpyq/wedINIV1KGDlV64cWvgda+R6cMVQ2lwI/KKXwAWoqdeAKa/Q66pJ/0QZto5+qDHDlC5KRdjt6GGo/MGJl4B9Ti25B67yqlgHQEZryv5tegvBssg0m71CIrmUL3brBO0mzTVU6R9WRD6MaRZf4/XakXGpQaovh//2LEReGDiY3nnkn7//uP7Db1/WsgGzyxhR0mX4knSixd/RHWbKrNt0E/lickJet7qdHz9VrKNKTxvn+PHdJqj75zPv2dlMnRfQzU8cigUjhIKR+UUn6+uWWk+myQDfFE2DKJhMibwSqlUPvZZEOt5RRZ8DwR/wiRxFyqEgjhCbyCh+97SeKEH5ZRhCUT4WuhYJpDFny3Z0PBFxT8tGeDIhviMYY2UdXHFyoqqiQFTW8u5R1f/CBNG9fxxjv/m8dPu4mS9AgCKAVQCsLIyVL0WdUcui5R7BGhlVCo150n38O41sdo7xzNM4suiLfVEZIaQiM3wj6qPriOm5RPSCONQpENdrsqhrKk2rY8GHSywUVYpOIuFcEgAgqihB/9qG1L0qdThmUU4U9YSuEJSdEr0drUxvBim0E25GgsBPnTjoEC9R3QyJ8cOcpBjUdam8JkBJdqIcu3wdi+ynUuo8hoY3PfarwbyiBVTqGOUUmVoadNOKIxFYxyCldChaNN/8WFtH7pXERXibbPHEPbJ7OVllnlGqA9nHBEWwNMn3ArQ5uWsLl9e15784T4oQO4/R6yj+M+rmubRn7X9KmJd0ZfKvWxkefQ48qQPEEihwMDdSwyqBQOOlxkA1T2bQi0bbMiMKE6JtrzhEFueK4Bh6ZoAGKiIcsYEoiJB5VC4Yq8FJqSweXZoJQNehKEIhqUyiHrPP1NG3jHlz9Ey4rFrNp1f/7v4h/QiQ9BWtGQZQ6pqylcZIMQMHb4M+w89Q4Annn9AjpLo5xJGfHvS1M0xL9vnRQgUU640ihsc0g7f7skk8/hdUoUEUL3frAIANugMjGUDBUN+nEDvFjZoDwbSoFHKVJWtDa197pyISc0cuTIkaN+1Orb4DKKdCkb1GedbDDaEqaxpK6ydMVgJivd6gZhT9Zt7wY7CtM2jqxUxxmrGUR5YkA7D2/Zclq/cAbe5jba3/8fbDrjNMf2FqlREzkQbjtqxMOMG/lbgqCJBUsuQMpm9/aaZ1Q5EqKRJRVhe1nL8/t3f0Y9aXc5cmwLDFrCoRqyQaEc2VDpy7oSQ1qOZIDypRNAUjYhRJxCERIHdmkFhqrBE+nYy4RkSJMNtrJRSvN93N+ODvY/53BGLXyKDdPm8Oev/oKthZaIvDEZt8SoUT93872LbPA9aPI38bYdLsITJV5980hWb3q7kZRhyP8qEA1QG9mgnm7o6RP2Ew+dbLCjL+N+OQwqFdlQEKWQbBCJQaRSNajyCUU2BAia/C58IWnyO+I+wuAgAwbDOeboSYianj7myNFIxPfWbpANKWSkUqg2yxpFWuuNvrpKKVLHFknphL3MbMx5jKxtMlUMGftI4SE2bGTESWfgv7mKjn32ZONXL0b6fnXtALJKEXBTYQUzJtwEwOtvnsSWjllVHwPcRtmVtq8HA5VbyCfdOQYOBu54ZFASDuqryY6/tD0b9DKKwKFmqFRKYaPaJAr9Zq8UDWq5rWrQvRqyVA06AWGSC2bspU442GSD53hqbkv6ggD2u+oEJj76B7aMGs8fv/YQW1rHGeUSLpIhuQbaOUdkg17OocgGT0j2mHktw5qXsKFtRxYsOzFdRqGTAUpVESsSzGPqZIOdRpEiGyKSQC+Z0IkMde1cZEPq+mmkQKyAIMAXJSO5QicbOktFSlLQGfgEMkwjKYiA4cV2o80cOXLkqAVCiJlSyte2dT8GI7pLNlSbSmGXUhiRmRGRoPs6VFVKkaWCUHAtS5EPFulh+zfU42Dd0cHw08+l8PJrdM2exYZbvgZR+YqCTWKUu3/G9/vUNiVmTbqagr+ZtRsPYMW6Q2vuqieglKlAqLm5sqg0OS+n8neVG3cXKT+FnDzIkWNAYlB5OPRnOOs7t4WTdBnsdueFzPrNPXQNaeHP1/ySTZO375HjTB39G6aNeYhS0MyTr12GlE2Vd9qGcP2T5cRAjhx9AxJFGjb2p5EQQgwXQtwkhDhFCHGOEOI2IcSwMtvvLIT4nRBivRBiiRDiOiFE0drmKiGEVD/AVxra6RyDE72QNlERQcCwC75K8bGnCMaNYcPt1yNHttbdXLn79cTRP2T40Ofo6BzDq8vPhDru7fkcO0eOHNAz45G+gkGpcABSiRTJ8vDVpW6QsrK6oRLKkQS6T4P+uZyyAcD3vVjFoJbrZRR6OYUqo1APNhJjSN03IV1KEV8f6zRVneH2P/8mc+/+KoHv85dLf8KqOW/LVDbYDLqh5oxLKEJ1Q6K8CN8Pb17CHjOvAeD5N75EW8eMlHFlcqxE2ZBpRmmpG3wRmNeARNmgBh0lzYDSbk8vnYg9G8okUejmkMqzQVc3BNKjhE9nUKArKNAVmVOqNIwhhQ48MBQYjfZwyEsWcuTY5vgx8A8p5a0AQohLgTuAY+wNhRAjgcuinw3A0cDZwCbgkmibMcAM4G3RbhJ4rkfPIEdFlDeOrFLdUCaVIt7OZRRpHjSjgxXKKVLbaQkSlfwbIG0YWSOUF8PQm75J82//hBzWwobbryeYNDFc76D/u0P+twx5nkljvo+UgleWn0NXaWQ8wK+33d4ojq0+gwAAIABJREFUe0iZUjZArdDbZQ19zXAxV2bkyFEeg4pwUDFUo8bPLuvbkEU2KJQjG2r9zrHLJ/RlNtEAIbkQLkuIBr2MQhEOnkecZuGKvVSlFDHxUAXZkJyjWZow6e+/ZJ8bTgbgn1/6Bov3/QAySIgGm2Sw4yfVe70vimxQBpEFTyJEib23v5Si38bydYfwxur/Qoj0NXcRDba/AmSTDaqUAszSDPU5CKJl0TrVjl6KoUoq7H7piCMyMzwbAukR4BlkQ1fgIREUvRJCSJr9TqPtgRJ1mZMcOXoTfbm2WQhxIPB+4Axt8b3Ai0KIy6SUL1q7fBD4opRySfT5aSHEQcB7iAgH4MvAFmA74C9Sys6e6n8ON9R4ZObI4eFnoxzCJBFqIRuS9jOMIvX35WIw7XIK14DALqfYBuoGuyyi6Qc/Zcg99yELPhtvvJLSTjs6DSbLmU5C+n5twxNtzJhwHUIELFv9cTa27VmmLfPVfl8LKu3Xx+bhKfRWEkZOAOToa6RUtejL45HuoA9o37oHIYQnhDhfCPF9IcQjQoidsraNYzGHhrGYWWSDgk02NOoLTJk/6ooG5dWg/6RSKCKywYsiL5MYzIhkiCIwFdmQRGKmDSIrkQ02AinCOMkoRlKpF7Z79hEOvORIvCDgyU9dxIsfOE6LvoRSyYy8tP+RkqhNXW2RkA2ep8gGmDPpB4wZ8STtnWN4dtE5Rj/jeMogiaUMIy+j+MuY5AjfhMoDN9lgnneoaFCqgiAIDV1sssGIu7TTLFTfIA5SFEJix16qfY3Yy6BoKBsgnIw3+500+519TjKVI0d/hIr0beRPA/EuoENKOT/ur5QvAR3Af6bORcofaGSDwlLgZe3zjsBBwO+BpUKIIxrZ4cGKesYjrc1Fw7chk2xIjmF+tsmISkaRwjKNdHkkZJhGkkU8mB1M1A1ZJEQ9ngx6+/F7TR2BoPjHvzH0utsA2HzJOXS9fZ+qm80iILL+lyeNu4vmpmW0tc9m6apPV32cVPsNvH/3tYlKPukP0d3rIBtlmJGjX6APj0W6hT6ncBBCTJJSLqthl52AW6WU64UQZwAfAOwnPimUIxuklJlkQ62lFFluz2ClTBkERLp8QqkadHNIzyqjMBQMXrZBpK0m0MkGHeksaHWdwtfhi1/mkHMOpdDexsL3fYbHP3VJTC6oV1c7sRGlg2xQioY4lUKE5EPr0IXsNPmbADyz6Hw6SyPT/YoUDVKKTKVJlkmkugYKevKEaTiZKAl0ssGLXs0ISxz7YBANIVFRMkooArw4jUIvoQgkNPldcRsQ9rFaNYBXYbtcVZAjR0MxVgjxqPb5DinlHXW0MwVY61i+BphZaWcRPureE/ioWialPCJa9xbgRuCHQog3pZQP19G/AYteGY84JvBOssGapAtLnWDsV8YoUt/HGYMZdytb3aBHYVYF/YYvrP5E61IpFHbSBRYpYBEP/pPP0nLBVxFSsuWU4+g49H3hPjUOuKsxjhw+9N+MGfkbgqDIa8vPQlLM3Kc7MJW1Pdd2+Fm635c5cB6pmSNHjmrRZwgHIcQBwDnAVGAva91w4ArgJWA4MA04S0q5WT31EUIMAaYT1q1WRDWJFJXIhnphl06o93b5hJ1CoUdehp9VxGW6hMITbr8GPYlCJxuyr1PyXiU+ADStXcm7z3o/Q9et5I19/h9//dIdoQqiDNEA1ZENBT/ybkApHbay56xL8b1OFq08jFUb9jfadxENqSQKRaqU8WwAzYnaKMuwnzBVJhtcTy0UUeB7JXyCmGxQx5VSUMKnS/qhqiEqnwikh0BS8CRFL9kecpJgMGGglMv0OcjGD+YjrJJSZj5iFZV/oSuklBOBrYCr5MGDqmZTnwduklI+Za+QUr4ghPgg8FfgeODhKtob8Ojt8Qg4yiN01JpKkWo7mei7SinMYwlnG1mqBKOcohYj66wSDZEmHwxvBymRnhlt6b26iJYvX4TY2sHWjx5K+7EpaxOzPevfJvVZCLJurb63nqkTbgZg2erPxBGYSsXYHVT6Hio3v7dLFeIY8oxGhahPEVGuJKLa9my/h0pj6lwpMXCQ/y4roOfGI9scfaKkQggxglDuWcDdpx8Dq6WUt0oprwZWERpmqf2HAScSyks/W+1xXWUU8boMsqFeqLIJV+lE4stglk/4nmeQDXEJhZ+UUPheVDZhLDNLKHRzSJtscF4XrfwhiH5KgSpRALF5M+8691Bal7zEqh325A8X3k+XKBrlE6Ug2Vf/5ylHNnhemmwQQrLT5LsY2bKQze1TmL/k1LB9GZY1qNKJUiAoxb4RwjxeRChklVGY566XZXgx8aCXg2SRDfH+MiEKlKQpjr30SrGywYuGJ1KGJRRdspD4NQShqiEmePwumryubv0N9if0JRlYjhw9hFEVfuZE2y0m9FqwMRp4vdwBhBDvBIYos0kXZKjXvS9qb9BjW4xHyhEI3fFtMEop7Pa1UoqYkLDKMVLqBmUWWU7dYJdT1EJCZLWnw1ZbrFpNy2nn463fSOc792fLOad365g6iZ++D0kmj7+NYmEtm9p25c11hznb0I0j4/c9UPpoq04hvFx9SXiQTzAHFvLyjhz1ok8QDlLKjVLKFcCb9jrNMOt+bfG9wJGqPjJ6snAToeP24b3Q5V6H6/7pdfdGbrRV3Xays5ODLz2C8fP/xcYJM/jNFb+is2VEXcespvujhj3F7AnfQ0qPp1+/kFLQUtexkmOmb349/eTYpULIlQnlkV+fHL0FSeKz0ptRVFLKdRV+NkSb/hoYLoSYrvaNSiGaonVORPfOnaJ7o1rWnLF5K/BMxU4PAuTjkerhVEL0JjZtpuW0C/GWrqBr7lvYfNX5UPAr71cG5cjukcMfZuTw/6MUDGXRijOB7h2rbD/qvAW6fPJcc/6+REr0JHLCI0d/Qk+MR/oK+kxJRRm8C4dhlhBCGWbp9ZFbqWLQVKtvg7GvEaGZXl9u4u4qoVDvbb8GiEojKpRR2J4NiU9D8tnTlA3qiX/cD+U34LwhKWY+kucFkgOvO55p//o17a1jeOiq37J51CRkKdnGBV1NoZd16JGXnpdEXyp1Q8HfzJ6zLkOIgJeWf4rVm98a90f1L5YNOgYJtrrB8xKVg23qGJ+n8UQi3Z5uLqmnUOilGOqzmjTr6RVxGoWmiFBlFIH0KAV+bFKp2ix4XYlnQw/EXvYU+ks/c+Toy4NvKeXzQojfEUZgXhUtPgJ4SCVUCCFOA0pSytuiz+8G3gvcHZETAHPDVeIV4GDg25HXwDjgvwD349ocOho+HlHojrpB6GUQGUaRMVJeEHbJoEO9UM4sspqnFdWYTdaKjk6GnnkZ/oJXKM2YStvNV8DQoUDi9VApnSJdSpFtHOn7q5g0LvSRWrryBDq6JtTVbb00NXsbYZQ89OXvp74EV7mH8EROOuToVxio/+/9gXAoa5gV1Z9eClwLDAXOczUihPg8YS0rraOnASbZUA7d9W5wDSRUCUXYN7c5pCqj0M0hhacbQKY9G8LJtEk+qGPoZEN2OYU52Y4n9BL2uut8dvzt3XQOaeGhy3/Fmsk7IQMtMtK6juH5aMe2yAY7jSIsT5AxSTB36i0Ma17C+rYdeXHZ8bFPg9EvK7YyvLbJaxbZ4MUT/ug8NYNIMAcignB/u5Qidc1IPCRizwgRULCjL9WxUaUUPiXpR6UVIk6jUCRDQQTxMfJJfI4cgxIfB64RQpwNCELfgKO19e8m9Km9LSIbfkl4PzxH22Yd4f30YOCLwOlCiO8Q+kN8pEZzxMGKho9HpowwVXtZZEPmeseEX9hlCGo7vU3bTNImHpxteCZ5oe/vSrtwbdcI8iEIGHLxdRQee5pgzCja5l2JHDWy7C4yQ9BbKR4zOiCTx9+C729mw6b9WLvhvXV02nHssp4MFXoUVLddvah2uNuTMZe210NvoqdJiv4a2ZgjR73oD4RDWcMsKeWvgF9VaiRyB78DYOKMvaRNNlQyiqwVqacGGtGgPiuiASKSwDKHtJMoFNkQfiZ+tQ0i1QRfRV+m+uaYLCefic7b9HHY5efzeOsPryLwfH53/v0sn7Nf5NeQZUik14qaKotKZAPAuBH/Ysa4BygFRZ549WJKpSazX5gGkbGCQiQKCZ1syDLI1IkGm7xQbWWRDfb2hqqBhGzQTSLVdhIREw2B9GKDSClF3I4yiMyRI0fPIqCbE6AehpRyHXBCmfWHae//BJSrPXsImNG43g0qNHw8ssfEMTIrAlOHK5UiXmepG4y2XDGY+jaOZAptgZsgUIoK5wCjjL9DIyAlzTfeRfGPf0cOawnJhimTktWqrw5SI5WEUe4wGkExqvU3DG95iq6ukbyx8jSwFI3dRZZKs6+glmGwa6LuVtD2r4cnA9W7IFd/9D309fFIvegPhEPdhlmVUAvZUO0/ZTVEA1SnarBLKBTJoEooksl7Ntmg33vjibLEIh2Izjf5rJdIzHr4x+z/9dMBePiL3+K1vd+fxII6yg7UgEZPx/C114RkcJMNBX8Tu88IlcMvLj2edW07Jv0iKaOwUY5sUPGXCi5Fg62SEIpkiEgHHTrJYKsPfGGSDQUt9lKZSZYIyycC6aVKKHxRQgiZ+xjkyJEjR99Cj41HXBGY5VIp0vuY20YfUm2m3mv7JrtlqBtqQSXVgx2JWaUfRPGe+2n68YPIYoEt111EMGf72voVIZWEkTHILxTeZPyYuwFYuvIkSqX0r78vkwU5cuTI0RfQJ0wjK6Auw6xKqEQ2VAM7bcIunVA+DXEChVYKYaRQeInCQScb9CQKFXup+zVkkQ1qEp9cL9f5m8SCmsQHQZgwoRIfJjz2Jw655pMIKfnHZ67i+fd8KvTAcEz6dZVBnEDhu8kGXdlgT6x3mXIbLc3LWbt5ZxYsPQaVPFGSYRKFSsKQGQRBStmg+SWonyAQSZsyTLlQxIHelp5kodpRBEEp8OLkDgVFNhS9UqxsAFPV0CmjJArp0SW9mGwQ0VYFLyQr1D71IicscuSoDvr3YaN+cgxI9Mh4xEANvg3hdppCwU6d0PfT2rS3sduJFjgSIhzqhWrLKRqAwi//QPPt9yKFoP3SMynts0e6Ly7UXcIhmTju63heO+s3voONm99RxR6m8hEqP7GstXuN+n7pbvpab6OSKsIuP3K2UWaMHzSozCGoUw2Rqw1ywMAdi/Q1wiFl+SulfB5QhlkKhmFWjp7BqIVP8r5LD8Pv7ODp/z6Nxw8/u8ePOXbEo8wc/zOCoMDjr16I7BcinBw5cvRXxKVMA9QZOkfdyMcjfQj+/z5K89W3AbD1jM/T9R8H9fgxR474A8NanqKr1MryVZkVTd1GX5oU9Gf0tzKNHDls9MR4pK+gT8zmhBBDgQ8B7wFGCiGOAX4vpVSxVJUMs+pCOXVDd70bPOtJgu3XYJdRKM8GpWZIPB1MrwaXQaRSN+gGkepVJ3wDGbahk6i6C7JeqjBs6au8//z309S2kYUHHcFfj7vBuCnqRLD+YEMZWqr+6AaRserBk/H5KCVB2N829phxJQAvLP0c69t2SJV5hOch8LTyCKErEry0usEuHzH9H8x/Rpe6QZVKJF8E5hOL0N9BJn4NkcrBJ0AIGSoqolIK9VOKvBqUZwNgeDaoZblKIUeOHDl6D9tiPFIplSJGlrrB5d3gaDf13toXT6SPKdLLavZv6KZJpPfsApovuBZRCuj49OF0Hn6oeUyo0vyRituqUouCv4qxY78LwIpVxztLKWpFNYpFe+jZSJ+IvoyeUlv0lGqgP6gRcmPKHH0JfYJwkFJuAX4S/bjWlzXMqgc22dAd2HWV5fwa1Hq9jALcsZc62WAbRLrIBsM4MeMeZfsf2ERDEEDz2pV84Lz3MWztchbv8W5+9+W7kcJz5jurcUg42RdGX+w0CkUIuMgGgF2m3s6wIUtZt3kO85d+xnBhDhw33ZjYEBkmkVYShU00qOUJ4SGNsozkGiXb6rGZ8T5xH0pxIoUyiCxF5RI60RBIzyAafFGK28qRI0cvQ5okbI7Bjd4ej8T3wDIlCeXMJCt6N8THESZhUamcIt2J6papJxuubatIsYj9HKL+iteXMOQrVyK2dtD5wfew9aRPxZtXYwJZDRFhbyMljB//DXxvCxs37ceGTaGaopFeDX3RGK7e+amdJuEiD7b1BL3eMoccOXoVA3g80icIh96Gi2SoR91QDdEA2eaQehJFrGjwkom755kGkTbZ4GuT/aQPVZxrrBRIfBvUcr9tE++/6INst2QhK7d/K786/2d0+c0QkJqgZ5ENrjQKF9mg92XMiCeYPeHHBIHPv1+5iCAoxESDfg7h/jJFNphJEtb5xkaTIpNgUmSFIhv02EyXwaRKr/BF6Lngi4RsUMRBiUTRoEde2uoFPzK0lFL0O9IhV2DkyJEjRzfh6ZN/k0Co2bshXuZQN6SOW2bwUK8ng0VmpFCD2kGsWkPzly9HbNhE1wF7s/XcU7QnBMkxGm3aOGLEwwxreYJSaTjLV50IVvtBN/2VjLZ68RZaa8zktiYJqsG2jM7MkSNH9RiUhANYT/mrIBvKPWFwlU9AtqrB83TVQlJCkUU2+AnZ7yQb1PJKSVQ20QCWAWNnJ//vysOZsODfrJ8wiwcu/jVbh7SWVYHohpW6QWRYPuEmG4w+IfC9dvaadQUA85d+hrWb5qSIBh3lyAZDmeAgGtKlEBHBIDD2V9vpkZl6XGaKbPASokGpF7LKJ1Q7Tb5WQtGH6qwGOnKSJIeNvi43zjE4UG0qRaUYTGe7WW3axIVOCNjkgCeqU0OUW57RxxQ2bqb5jCvwVqyiNHcO7VeeDYWUrUbZY7tIAX2ZS/3g+2sYO+a7ALy56lhKpVFlD9Xb9+5Gz6+rffDfExP7/kBo5MjR2xio45FBSzgodOcLzyYaICmfCN+nVQ1AKvYyy6+hHNmgqwxc93X7D1b3QtAVDXFJRRDwnpuOY8Zjv6GtdSw/v/ghNm83EXtuph83i2yIyxssssHon+bkPHfyHQwf8gbrNs/mucXHRokR6ePqbellFDbZYPszJCoF8xwMskE7UX2/kmW64nsSL1JDFL1SGH/pJSUUOrGgl0+odYGEghdu29ccW3sL+YQ/R44cORSS8UImypZbuCIs3eoGg5SoUt0QkhBlfB/K9a9elcTWDprP+xrey4sIpk+m/drzYUhz2B8ZIL0qiQcNVZVfAOPH3oXvt7F5895s2HRw1e0HYNzrG4GemI83YjKTVyfkyJGjVgx6wkFHtaUUWUQDVFY1uEoobL+GcmSDMUaocC+3zSGdREMUcXnAd85h5z/dQ8eQYfziol+xZvIcg2zQfSF0ssHTSAY9+tImCFz9khJGDn2RHSf9kEB6/HPhhXSVika/jbhPkSYb9DKI5FxtzwXH7zAyerS9JIJAOJURCTkRxVZGJIMf+T7oAw1VPuFSNYSRoQEe4QBlW5EO1ZZu5ORAjsGARkuyc+SoF1WXUlRSN1gGlM5jOcoyauho+c/JQWprtxTQdMU8/KfmE4wdTfuNF8J2rfHqSp4Man013g1CBgQiIS9ahj3CsGGPEgRDeXPlCdilFLWiXBmne/v61m1reJ5oqAKiUtrEQDVDFJ7oddXHtjhmjvIYqOORnHDog3CVb1STL1wv9vjFTez902sp+QV+dfZPWLHj21LKBoXGRm2X2Gf2V/FEiReXHsmaTXMb2XifNGXK0VjkhEiO7kIycE2acuRoGCrVbDYCUlKc910Kf30EObyFrdefj5w4vucOZxAubYwd+x0AVq8+mq7SGK1bvT+WqJdg2BbERO6j0Bhsi4l/Tjb0LQzk8cigJhxq/UdzKRsgu4wi/qx5NkDi3WB7NqRUDsJUE6hjaeWYxsMD+3R0nwb1WVc2AOzw8I94551fBuD3p36LV/f8zxTZ4FnH1NUNvk/y3lI3eI6n6Mo/QkrYYeJPGD18PpvbJ/DU6yem+m+rGzzPrW4Iz80sn0jOV/89RT4SuJMsbGWDakepIXwh8aMSCl+UErPHaDtVfmHHXernpRIpBiY/3/tQBp45cuTI0V9RySgy2c5UN7iSKcyxiaOdcuUR5fwb3B3PbqsOFL73AMUHfo9sKrL1q2chZ8/oVns2yqkeRo2+j0JhLe3tO7J+w3vT+3Zb7VDb9kKQ+eCnP8A1vq6kXMiRI8fAxaAlHKolGzzHTbc7ZRS2Z0O1ZIPuO1BJZVCJaFDrpzzxR95746cB+Ounr+H5Qz7pOH91jmkPCTuRwiYbEjLA7FsgBUOLy9lt+u0APPLyWWztHG5eY2G2pZMNnue6kbmJBpXQpZMN+q9UJwXiUgiDIAjJiYIXkg2+ZyZRSCni2k1FNNjtqnZE9BNf29RZmKh1It3fEi5y5OgryMfBObY1ypU0lDOtdq4r5+sA5YkB27+hp2CNrfxf/Znit3+CFIKOC04leOsuNTeZ5dMgHXdbnUBoGrKQESP/gJQ+K1eeAGR7RHRX7VBrmUUtqLbSoHzpRv5lmCPHtsRA/RcctISDCy5yQYeLaAg/Cy0Ss7xnA2CQDb4ykLSiL/XjxMd3dM/1h+kiGsLPMvZyGLfgUT505Yfxuzp57L++yL//+0yDTVd9CfurSAW934pkML0aXMqGJB0jSnyQkr23v4aiv4XXV76HxasONs5PT41wmUQCjthKdSzhlCPpZINtLhkEIm5DDSZ0wqPgydizoeAFMRFQDdEQX0MvSaTIQk4YhMgVCzly5BisqNa7obvqhrL+DYbSwb1PQ+B5SCHw/v4oxRu/DUDnFz9L6eD9GnucsuhizLi7EEKydu2hdHROB6pTNHRf9VDb/j01EclJhr4LmTt05hggyAmHKmCXT0DlEgrPV4oHs4QiyyBSJxuSiXeibqikbtSZbVfphCIapIRRb7zAYZd9gKb2Tcx/59E8/OnrjAPYKgudbEjIB2K1gV36oPcDdKIh7NO0MX9i6pi/09E1jEdeOtO81hHZ8P/ZO/M4Saoq3/9ORNbSVdU7vXfT3TTQrIIIKooLiLIvAuKCuI2CjuOu6KCzPh2XcVzejKjMe6IygLLJgNMoooPL01FQ2feGht73tbq7qjLjvD8ib8aNGzciIzMjMyMzz/fzKaiK5caNrOqIe3/3d85xyo4J1/EnoEpsqCR3jHEzsEU0sVWy0MMmVBu6SKBEDjNBZHBvQchEXPiE35ZXSSrZTkHBkUm8IMQi422hncSVwczu+Jjj6gmByDiXg3P/Y+j/7DdBHmPibRegeF40nCGJyqS/TjFkyvQV6B9Yg4mJOdix/ULrMUScKA5kneMh7fPIdI/mHSLKjbghuQuEvJKTfyKZI4JDAtWEBiB9CIXK1wCExYawMBGELahtNqHBZpsLVvjLx2jhE0poAIChTavx+r87DUO7tuCZ487ATz5wTdhC2YDYEOqjllNBd1kUnFGcsOzLAIA/PvMBjI7N0tpIJzaE75ciQkP4Pszz7EKDOl/dl01sqIgVCY4G9XOhXCbTLLcpLobugCQLR9egwrwEITekqExhEpf3QTsguY2kVY2UIRih61TbBoCeWoX+v/kqaGICxfNei+I77BP+WNKIDAn35fZtxJQZtwEAtmx+N5j7YZoW2pUxXh/TyNy4eeRFABEEoLvHI+2qypd7shYb4pwNfjvRd2LaRQQ1odcn9iWP4XlhscFjoH/nVlz4D6djypbVWLv8Zbj94zei5BSsSq+es8EWQqHnlNDxmEKOhsBpQfA8wjFLvoGhgS3YuPMFeGLdBZF7dpwg/wOZ+RZC90ooeYSSV3ZQIPgKfm9B3gZ1fon98AnPi56vRA8lNjhOkFzSP5+CLwTlLk2xgcAoMcGh8KS0VrGh1oFO0iqLWbEj7YpMOwZbzb5mFu3bYoIFQRBqprJAX0UwiD0/4fhm5mBQ1FmikNZsQP+nvgzaux/FV78EEx+4tLqV04TLDkJygDjrObNVICZ4mDHre3CcCezZdRLG9h5p7OfK/83k05FjYt7t+oKHHjKqfx8+Pvx/R/u/7aMJRb5oi0TViIbrkvX7Rkjjvknr0ImeV/vftWP8OyFjPJ9XMg9jEoQ2IQ4HCzaxIfg5LDakQYkNkeuQPSmjee20z0NTN9CdDX379uD1/+sszFzzGDYfeBRuvfJ2FAeG/Pa13BThBJUUedGFwhSq9EsXG5iBGSOP4bD5N8PzXPzuySuh613mi1l/0UbbTVjlKYsUSX3T3SC6SKCubeaJiJyfMGFV7RScxlfAs0waad5LWvGjHfkUarlmPf3L4p7E4dBdyCKXkDci7obK9urhFNUmUbH5GxISRob6QfZzEtGP27Id/X/9ZdDO3SgdfxQm/vp9gBsdjppJIJmCGTX7KzzVQyqIIgIxE2Fw5F4MDj+MUmkE27dcUqlgYboXzfe9Pv7Qwyqt+7UEkborU/8+3E74WE/7v+0ZFRwfdbMyx4cNmG3pq/xJK/76Pq/KQzNNlQrzmLRhDlyHyOUZgpS6Vt4dDpLDoffI+Z9k3YjgoGG+wGt1Nvj7gpwNAKzVKFQohVluUmGOI5jDk/5o1Qf1fVCBQnc2uBNjOOcLF2LeU3/AztlLcPPf3ImxkemRezWrYyg3gyp56bsPosKE2S9TaPD75+Elh3wBRIyHV78FO0YPrtyro8InKBpK4fctyLvg6S9ThPMuhO8n7I4wQyg8W84GR5W+5Iq7oVI2Uxt02N6Jar8eepE1kdUQycsgZTEFQegNag2nsAkTGedf0Dpg/Jxwnd170H/lV0Abt8I7bBnG//6DQJ82FCXHPjDKcCWaaD+mzroBALBjyxvgeVNCoRRZONhqddJlGTahtxXXbjXBoJOR/AyCkD9EcEC80ADUXonCFkahQikqYwKL2KDcDeqYuMm8/n01oQEAUCzhtK++DUse+BlGp87GTX/7U4zOmB+69ySxwXX1UIewA8Dsny40qG1KmT9k3u2YNeURjI7Nwv2r3g0G3EW1AAAgAElEQVQAldwMoQm/YwuliBcaQr+3GHdDqRwGYQoNQPneiOGWS1+qvA0qpEP/nG3o+Rz88zi0TybDgpB/unjsLXQAVStTVI4zRIRG7NZpcjkktV+PADA2jv6/+d9wnlsL78D5GP/cR4FJg5XdsWUtI4JG8n1X3Aoxx02eeTsKfdsxtv8gjO56dex1I+3WGY6XdVJJQQAAT4SVrqRbxyM9KzjY7IhxQgMQDqGoV2ywTe718IVq2IQGtV230qlJPpc8nHr1X+Gw396EsaEpuOnTK7Bt7sEV7b5WscFxyqEGFO5PcE1C2HHhfw0UduD4g/4VAHDv0x9ByRsOhWWYSSLVR6E/S3WhwVqJQhMbAkdE1NEQPTcsNjiV8p5V7IKalbISgmHmbBCxQRA6Ahm3Ce0jxWQ0jTNBiRHW+M0qwkQW7gGzj6ZDYaKIvs9+E87jz4Bnz8T45z8GTB2p3m7GMeyF/nUYmX4XmAk7Nr0N9aQyq1d4yPI5U8ukJC8TmDxVqRCEvNKt45GeFRxManU1+Nviq1GYIRS2yX1w7SAcQ2F7Jic5GtT+SliDx3jZD/4ex971bRT7BnDrJ2/DpoNeGDgotP7o1TFcJ1yNwgyfMMcUcY4GvU/HLfsGBvt3Yt32E7Bq82sTwyhsoSO60KC2hRZhLM4GvfpESUtiGfyO4YsMbjhJpFmNIg59xUJVpJAqFIIgCEJdpKxMYbobrLkcEsIpYvM3hK6RcaI6z0PfV66Be9/D4Kkjvtgwa0a210gFY8qc60FUwp4dr8b42EFVjk43Bmgn9U5OHKJQWIWeFqFbJzyCILSPnhccqrkagOpig1subRmXryFObDCTRMYR52iofK8m414QAnDcf/0rXnbzZ+E5Dm7/yA1YfeSrGhIb1EQ67DqgiNgRCucAMGvKwzhs/m3wPBe/f+oKOESxYoO6n0r7FqHB/N3pOSUUJY8qjohSJcRE/U7Zd1SUnQ3q/47DWjUL9Xdgf+uq+3YtiSFFdBCEzoKRn8mDIMSRKAIkuRvSEtd+IzkgiABmFL59I9x7/gCeNIDxz30UvGhe/f1Mc01ExQImB4OT/4CB4cdRKo1g15aLIqcyUbkqRfO6V7mW7rYEQzldmlESr/xraCnkUCa5FHo9HwORI4kje4huHo9IvZUq2EtKW8Ix2vBJxr1AjvjVdTj1mg8DAH7y3qvx9IvPq9pWM3JJEUp42fIvgYjxyOpLsHPvUuOazX2RpH1PZRn6IGJDa5GwFUEQhDaRwgnh/mAFCj++B1woYOLv/gp8yJLm98sCOfsxefaNAIBdmy+C541YHQztGOw3vRS01THb3HdnmioVQnVEbBC6hZ51OJgLAUmVKNT+tDkbktwNcdc3CTsJkp0NgP9w9xhY+qc7ccY33gUA+O9Lv4SHT3ln+L4t7gbXoXL+hvhQCp1qzga177CFt2HWlEcxun82Hnj+3aFQCreSK8Fou6Ly6+0GBzkUnKdyN+ifl83ZoKp86O6GghvO2xBXAtN237brC4LQocQ4qAShZaQMp6iQFE5ROSQcehG+Xg2DkVowruWu+CX6rvsx2CFMfOo98I49PLtr1cjIzDvg9u3E+L6l2LvrFZXtcYkl09IOsaCVpL1++/spD3GhC+ji8UjPCg6KNGEU/v7GxQY9lEK/psIUhNMKDerc+Y//Fud/+Q1wS0X8z3mfwB/O/VjlVaj3xw2JC+nEBj1Pg7peuDJFuO/9hV04/qCrAAD3rvwImIesYkMlASWMShQctRbaxAbVRz2ppOcFQoN+rsrboJJEqn5UgyNteaF+d4Po0A33IAj10uOuXSHnRKpT1NtOC62Yzq/vQ+GbPwQAFN9/CbyXH9eya5u4/RswNOPnYCbs3PhW1GruTSMqMFPTxQdBELqfbh2P9LTgUG/OhkacDdXQVVpTaADs+RoAYOaqh3DR589B3/g+PHjyO/HLSz4fmtBXExuU0GDmQ9D7Erq+ITSofipR5biD/h2D/TuxYcdxWL311Mrk3iY22IQGU8AIRJqws8CsXlHJ38DB8Urs0ZNEug6XBYz4f9mhZJjlgUTBkrdBEARBEOpCe0c31Ewls3MDokLMYKVWocL582Po+8r3QMyYePv5KJ3+CstBTupylGmJcyuMzLkFRCXs3XESJsaWoh5doFliQj2rmZ4MQwRB6DB6UnBQ4oD/fTiEQm3TQyj8/YHY4LjaORQki6wcZxEbTHcDEG8BS6pAYQoNzMDUjc/i4s+dgcHRHXjyhPPwk8u/FRq8mGKDUxZPbGKDrR+h68cIDTrThlfhyIU3gplw38qPBtelcBhFktCgQhfUZ6YcCqFKFDFCg8d6sksE4ROa2JBmRV8JDcwElzy/PXECCEJX4SdpancvBMHHDKeIuBvMcIo0AoM171SdwkQV8YGeXIW+z/87qFhC8fzXoPSG06u3R9mLD4q+4UcxMPkheKVB7N78+sr2WkIpCFyT4NCtK5RC7fR60kuhNrp5PNKTggMQ72oA0uVr8I9DyAVhig0Km9hgI02pSzNPwtCOjbj4s6dj8vb1eO7IV+P2D18PFAqV/jguVSbfqr+VsAmL2KD3OyoIBD/rfVT3ppwTLz3ka3CcEp5afz527VteEQzCYovWlqVsZahdioY+6OETSmzwjP741SfCzgYijpTfNPM36EKD35ZfxULEBkEQBCFrIrkbMmqvoWzWdZxLq9ej/399EzQ2jtIpL0HxXRdkmyPCQrJwUMLI3JsBAKNbz4JXmlqXu6FeunHioOcwlLwJgtAdENEIgM8CeBrACIBFAK5g5lHLsYcD+DqAlwDYA+AGAH/NzBNJ1+jpKhW1ig0KffIetBUVG/S8DXGoibaaxHteMLnXXQ1KbNAn5n27t+MNnzsTMzY8jQ1LX4hbr/gRvIHBUH+U2OC6gbNBFwdMPOPa/oQ++LlU8r/ixIZFM3+HRQf8BuPFYTz0/HtjnRPKlVDyKHLPqk3/PuwhGCUPKJao3IYSHXQ3SjiMwoEvNlRzrepiA7MfQuHWWXmi6cmkallxqXKsxJ4KvYz+HM7qSxDqpsHwiqxXVVNlyt+0Df1/fxVo916UTjgKEx94azAAShoIsQewB6rzHw2V+2ZzSAzO+DUKAxtQHJ+FvdtOtp4X3hb0ISk/k227Hp6pjwH1d6/t12p2O031rrjxWxxpjk1reNH1nYbKsFrbtjlx0l2j3r5kfQ+R9ptRAk7oato0FrkRwFZm/jdm/gKALQCuNg8ioqkA/rH89QoA1wL4GIBPV7tATwsOJk6VB4Pubqhso2Byb26vh7g/DnP84OwbxRu+eC7mrrof2+YejJuu/C+MD02p2gdzW9p+6vkk4iAq4iWHfAUA8NDzf4H9EzP9vlocCia28VGcIGL2y4ZjiAtm7gd/W/Rk3dnQKEmOiCz+4SW1b+6rVoVD3BuCIAj5Ii7sITreoMT9Dfejmtth+y70//03QFt3wDtiGSY+8S6g4KZsvLGQijiHA7mjGJ61AgCwZ+NFYAwknsegSB+UEK8L8h7sySH1cYPpRDW3h88zj6n+OZgO02qkOTZtXohmOhyspTRTime2vqQ5N809NFKaUkIqhLxDRCcBOAPAzdrmawG8iYiWG4efBeDDzPwbZn6QmT8F4LcAXlPtOj0bUhGXswFIDqWISxDpt5O8MGF7rnleeH8ojEHL1xCEWzCc4jgu/JeLsOiJ32LXzIX44d/ehb3T5oTCIlQohSp9SRQOpTCdGGYfk0IobAkZiYAjF96MacPPYte+hXhq/RtD7oZwPohwvoXw7yVo25bzQc/X4Je+DEpVqvMLLqPg+u4GxwlCKRS2cAq1CuF5yumirp1uxaNWPIjaJwh5QcaEQp6JDZEwBYmEZerEUpvaeTXndhjdj/5//Cac9VvgHbQQ4595LzDQX1sbcdjEBG1bkjNvaPadcAqjGB89FGN7jmlpKIUNcRF2LyIqCFnShj+nkwGMM/NjagMzP01E4wBOB/CEtv16y/nrAERCL0x6VnBImyCymthQac8ygU96b5tCA2BPDKkLDQBAXgnn/u9LcdADd2F0yizc8OmfYNesxSHxQ31fTWywiQFxQoMplphiw1D/Drxwqe++uf/ZD4HRXxENKvdsCA2mk0BN7m1iA0fEhnAlCxUuYYoNeiiFnrtBXUsJDWbpSxVGwUxWJ4QgCF2ChEAIOaCVJSu1i6Y/1hzwAMC+MfR/7ttwnl8Pb8EcjP/dXwLDk+q/FgUDFavjIa4N47NzB9ZjcMavwUzYveFitF1tEARBSENzxiMHENF92s9XM7MeLrEAwHbLedsALElqmPwX1wsBXFitE70rOMTkbFD70ooNtrwNSSQ5GgBYE0N62oYzrn4vDv/9Ldg/aQp+eOUK7Fh0eKLY4DoUEQfSlL2MExqCzy+cdPLYpf8XA327sGHH8Vi7/VWaK4Eq7ZtCQ9gpwUHlDC0EIzjPz/XgJ4qkymfkn8NwHT9JpM3ZkOw6KYsg5QFJn1OqXLfJoX0hRNQQBEEQYqtT1EqSoyELxifQ96XvwHnyOfCs6Rj/+78Epk4uXzNGPMlSVEloa2jO7SDysG/bSSiNLYzoDbW6DeKqVGQVfhm0l2lzbUdW/tsHS+1UIWALMx+fsH8MgC3ho4Pqau1lAL7GzA9U60RPCg7K1eB/Hw6hAFC32GDieX5b5r97c3IPJAsNzP5/XnPtx3HMf1+Dif5JuOlTt2PzsuMaEhv0fqifTaFBf1+YyTCV2DB1aC2Wz78JzIQ/r/pwKJ7UDJ0wnQSm2GB+TsoVocInStpnqYsNBbf8f8PZULmOUZlCFxpU3wpO97wcswz/EIRuhiF17YUOwCyHadKoQGFtM6atUgl9X78O7kNPgadN9sWGA6ala7PRXA3sJYoNheGn0D/lEXilAYxuOruua4Wu20ZRwXbtVokSIhYIQutp03hkNQDbA3wGgOfiTiKiVwIYZOavpblIz4aRq4m4ma/BdQmOS/7/U4gNZpsmpqNBr8agwifMChSex/A8Dk38T7r1s3jJiq+j5Pbh1o/dhHVHvCIiNrhOstgQ6ZvWD736hN5H2+fmuoHY4DrAC5deBdcpYtXmM7BjdLl2H0EYhFf+UhUvgvY4FN7hVEIZUKlgUfJQOVd9HqbYUHDYEBuC40yUkFFiv8qFo4QaklmHIAiC0FoS8yvEoQSGip2wRe8vz0PfN2+Ee+/D4JFJGP/b94Hnz44elyQspM0ToZL1mckcY9v2MDT3dgDAvi2ngkuT012nWjcyDMkgql41qhl4LRAQ0ogUZj/izmlFf+MQsUXoMVYAGCGiA9UGIjoMQH95X4RyosnluthARAO2YxU9Kzg0QqvL3Jyw4n/jlTf9AzxycPsHrsUzx57e0uvrmO/5GSOPYensn6Lk9ePB59/bUFu9RLP/4Ym7QRDSk3UZqm6zRgsdQK3JHuuBGYXv3g73V38ED/Zj/Mr3gBfPb971qiSNNOmf+gAKQ6vhTUzBvi0nN69fDZD22SBzXkHoTVo9FmHmRwHcBeASbfPFAO5k5ieI6INE9H61g4hOgV+t4tdEdFj560IA5yRdpydDKoB0CSKBqLtBr0ihztd/tmELXQCiYRShEIoyR9/zPbz2+x8FANx5+bfx+IkXRfqjnAaOU93doL/EbNUngv5w+b6Cz8lxwqEUrsN40bKvAwCeWHcx9o7Ni9yvCl0wX556KEWlr8ShnA/K2eAZ/2hs7ga/T4G7wQynUG2qlYqSp36PDNfxV1E8UNXykVkhVSoEIT+IQCD0BEZ+iFop3HgXCj/9f+CCi4kr3gU+dEmws0lJL+PKXkagIibN/S8AwN5NZwA8UFf+Cq7jzdwMb4lDQKnJz6UGqj22nKxLcArdTSfnsGjTn/obAXyRiD4JP2/DIgBvKe87Bf5j7htlseHHACYB+JR2/g74ySdj6U3BQQ+NSEgQCcRXpADSl8CsJTGkft7yP/wIZ337PQCAu9/2ZTx48jtD/XFcvwNKbHAq4SGB2JDUNz1fgyk0qM9G3aejCRpK4Fgw43eYN+0+jE1MwSOr32nN1WCKBUGFjLDY4H9OQRWLkhZCoSeXVCIDUVhscCz5F0L5KgyhgRnoc2t7IIlrIIx8HoIgCNnTcMLIui6qD3Kigwf3jl+i8KNfgB0HEx++FN4LDk3RZutk9YGZv4M7sBWl/bOxf/uJNZ2bWtRoIzLf7h46eTIsdCfMvAPA5TH7zte+/wWAoXqu0ZOCA6F6gkh/X/W8DQrby8AmNKjtSUIDACx94C6c//W3wGEPv7nwM7j3rA9HxAZHExaqiQ26yKB+DgQBDh2n36Pd2QA4VMJxS/8VAPDImndgrDilfL5daAACscFxwnkb9P4EZS+jQkXF0aAEB83ZACDkbjDFBuW2KLHvYnAcvRKGlL4U8o38fTYPmwNLEFoFqXj+ZogLadpM4XZwf/EH9F3nh/JOvO9ieC8+yt+Rl4m6sw+Dc34GANi74RwAbkPNZZmzIYlOee60M59CEnntlyDUSzePR3pKcCCicwCcM332sso7tl6xIek9boYt6EKD2mYTGtT3C578LS78ykVwSxO494wP4tdv+LuaxAYTFTpR6U8o5IGtYgkRVQQGJTb4JSv9bQfNWYHpI09hz/65eHztxVahQXcmBM4GRMQGs9ylEhzU52yKDY4DuBSIDUSwhkJE3BblkAki/3xTXGklORmmCYIgCG1AjUeWzpiS4mDD8ZA2JMJjwKEgKWUduP/zEAr/90cAgIl3nAfvlS9K6KflhdqC3BKDs++BUxjFxOhSTOw+Ckl6QXzCyWxolVgh5BOvk+JUBKGF9NS8h5nvYObLBoen+kJDDWKDTmwZTA6LCkpsCFWlKIsNbEzM1fezn3sAb/riOegf24sHX/V23P22L8NxnbKroHaxwfOC0IlKxQcGSlolDB2/nWSxwXX245jF3wIA3L/qfSiWBlGqVJOIhkHoIoOrhT7oroZKBQsvLDao65tig3IyhFygWu4G5WjwvHI1inJuCL98JleOj6PTE1rKoEcQ0uMLr9l+CUISajwydTAxsXc6zEl9Rs4D5/4n0HfVD0HMmHjjaSidcVL4gBxMrqhvJwZm/woAsG/9uUhUGxok6xKZrUYeS4KQf7p1LNJTDgeTWsQGM/Gi2m9aX2oJnzD/DmasfxJv/qczMLh3Jx5/8eux4vJvwym4Qd8MscHmFqj0UXM0qP/r4RO66yFwe5RzWlBYbDDbXz7/RgwPbsS2PYfimY1nhMWU8vXCySDDYoDeH+VqUC4H5TrQ3RA2sUEXfXR3A2tJJz1Q5f4LmtChJ5HMi7AgYR2C0D5y9E4Wepxa8jeESmLqogN76UUH89wyzuPPov9r14FKHopnvRKl80+u3pb5UmWvnCG5eWtbg3N/BnImML7jaBT3LgHIf8d7VF9YBcEDayEZRFxVaHAAlGxtEWCaL/VttSSGJGrtc4ocspaHJCcXOlMq4u6hWecBgENOyOVga4scp+l5HFpxDaE5dOt4pKccDgqC/V3stLjcpc6ULc/jLZ87DSO7NuGZo0/F7R/8D7Dr60F6dQyFEgfqodofs16hQ6EEgD53D45c9D0AwJ+e+St4nO5PqJ7JdJxrw/ZrSvNREHEo0WFexAYg+xj9did0FPFEEAShRcQ5HOrM4UDPrkX/v1wLmiiiePIJKL7lDPsL0xxImceQ01SxwRnYgv6Z94HZwb4NZwLwE0A24vAzq1SkcTXYpnUqlDO6XTsv4TUZt5jVKuIm3J0iNgDx99Cs84BoSIWtrVYIASI2CHmjZx0ODgXOBX81P/g5yd2gSONsUNurORuGdm7CW/7pdEzduhqrDz0Rt378FpT6BuA45dAGvQwmAa4bOBEUZh9tzgYzcaSO6W5w3XD+BMVhC27AYN9ObNjxQqzZdmKlLf3z0EuF6g4M3RXCHFSh0BNEBoklg1AK1wm7G/zj2Pp70Z0NaqDgl9As/w7KA5Gw8CCTY0HoZXphbEZES5h5Vbv7IVhIEgZqCI/IoqoFrd2EgX/+Lmj/GIovPRrFv3h9U9T5LHIpDMy7G0Qexra+GN7Y7OTcDZadea1OwdyasphZkHXixjxZwAWhHXTreKRHBYf0YkM1koQGAKE8Cbbn6MDoDrz582di5vonsXHxMbjpU3egNDQCB0glNgSVFqL9iguh0AlKXVIw0XeDSb9On7sTRyz8DwDAn555XyUcQrVvOiPMUAolNCiRwaxEoc5xKkJDUALTFkoBBOEUqp0SU2hFgohRcLxQGEw7Vv9F1BAEoV6IaATAZwE8DWAEfo3sK5h5NOGczyNcJ/sqAO8v75sL4G8BPAhgHoB+AJ9hZpszXOhGLBN+Z+tODHzpe6Dde1E65lBMvO8NlRCP5vSh/radwY3om/4A2HMxtvHUDDuVX7o1e73QGzTiHBE6nx4VHNKLDXGr6JXvE4QG/eewjc7/YWBsFG/64tmY+9z92Dr3EPzgyhWYmDw9EBg0scF1VX/i+6ZXn/B/5pDQoLsIgLDYUCl56ca7Eo5Y+B/oL4xi7baXYN3246wCilmJQk20lQigEkN6DJS0oW3gaFCOhEB0MDHdDXquhpJHlX4UHC/VwozkTxCE3kVPcptjbgTwO2b+NwAgon8AcDWAS2wHE9FMAIsBnFDexAAeKe/rA/BTAF9m5mvL274H4B8BfLqJ9yBUoamT+2rX3r4L/V+8BrR9F0rLl2D8A28GCuUhYpKdsuEL13fPvruBMbblxfDGZyS6G+olLjQj6+SRWc7D8jany1t/BCHPdMh4pC7y6SdrNglig0lIXODqYoOnVX/QvzzmyhcA9E/sx8X/fD4WPvU/2DlzEX7wmZ9g/4y5sWIDWUQAs19BNQy/D6VStGqEwhQbXDcsNpAmNHgMDBS24fCFNwAA7n36fRHHhB4KoQsWXHYclDygWAqqUJhiQ8ENxAb/ey18AqyJGOEbUWJDySMUS/73fggGhwSPXkOqVAhCd0BEJwE4A8DN2uZrAbyJiJbHnPZRAPsATAPwADP/kZn3l/e9EcARAP7TaO+DRDQ9084LmZFFuEQsu0Yx8M/fh7NpO7ylCzD+0UuBgf7mXc+AiWoSHpxJa9E3/WGwV8D+Dac0dm3tXVmLkFDLO7ZTJhASziAkwZ2UwEPIHT0pOBDCYkNon+WlbhMaqpW71M/xjIe4UxzHhV+9GEsevQd7ps3FDX/7M+yZsyRRbPD7Gs7bECc0KDHAJjToFS50sSGu4oVq66gDv4s+dz+e2/wKbNxxVCqxQZ2vl7ucKPpig+qXEhuC0pe+YFDpT0z4Q/CZB0KDyjfhEsM1nBWtIEtxo91JHwWhl/A4+68MORnAODM/pjYw89MAxgGcHnPOIQBeAeBnANYR0cVGe88y8y5t20PwQzVemWXHhSaQtQtidB8G/+VaOOs2w1s4G2MffxswNJgu4WSbGJj/cwDA+OaXgotTgx1V3BdpcjaQNQVkdqRNhC3OAEHoTXI8FmmIng2pyJq0iXOoVMQF/3YpDr7/TuwdmYnrP/1TbJ97cFXlp96KFI2gRIGh/k04fIG/uHbfyve2vB/NphtdECJYCEJ6mrSwdwAR3af9fDUzX11HOwsAbLds3wZgie0EZr4YAIjoMABfBXADEW1i5nvK7W2ztIW49oQuZd8YBr7yH3Ce3wBv7kyMffKdwOShxtpscliIM/w8+qY9AS71Y2zjqzNv36xSkXn7lmdNniYFgiC0l241GvW04GCGKFSzLNaar8F0NsDzcO63343D/3Ar9g9NxQ2fvhNbDzwSjp4YslyZQu9fHGauhvIlIrkc1D3a3A2VXBYWZ4Jq5wVLvoOCO46VG07Fll2Bg1e1ZQ+lCNwfKjmkZ1SjcN0gb0OlEoUTTQ5pC3lhpsBdAgKBUXBZ29+UxNqCIAhp2cLMx8ftpOpK50ZmngtgDMCEZb+DKpHrzPw4EZ0F4FcA3gPgnpj21CxLnpqtxvKJNzV8QjE2gYF//QHcZ9bCO2Aaxq54OzB1pPZ2WuyEGFhwNwBgfPPLwMWRrvmLzWKS0a0TFUEQOp+eFRzi8iGYmFlVPa5DaCjvPPOav8ILfnMdxgeG8cNP/RibDjouIjaEcjVo4oB+/aDJ4PpxQoO6R11scLXrqLwNRlcr7QwPrMPy+bfBYwf3Pn15ZSKviw26IKCEBv/zCcIp9I9EXVeFUphiQ+U4REtfmkKDx34IhRIbHFnZFwShRtqUPbtavgTl7V4NPxeDyQwAz1W7CDN7RPRDAGdq7S0zDptZ/n/V9oQORYWROg4wUcTAVTfCfeI5eNMmY+wTbwPPmNq8uXtG6r87+VkUpjwDLg5ibGM5+ienpS1ttDLEM74P5s+dNWbibq0ZKAhlurWaR+c8qZtAktig8jQo9HwNQFhsMBNDRhtjnHrdFXjRz/8dE32DuOmK27Bu+YlWscF1ym4Bi9gQNMcVV4OeGNIWr1OL2KDnhFCJHY9ZfA1cp4in15+GHaNLI2KD+j70OZUTRKo2TGdDXwGVxJBKbHBShDWofnlMKHEgNrhaH7xuWe7oUiTUQxB8mHlHlS+VY2EFgBEiOlCdWw6V6C/vS8MU+HkaVHvLiEjPCvgCAPsB/HdDNyVkSzMm0yUP/VffCvfhleDJQxi74m3gOTOD/XHX1Le3qZpG/3z/z3Ns08uB0qTU56XJ3VAvrRAROkwT6Hq6dUIoCM2kZwUHm9igRIY4oSGuCoV/nGbn9/wvxatu+UecuOJrKLl9uPWjN+L5o062ig3VKk/FCQ0lLxrmoe7RJja4bnS84BlCQ6kEDA9swPIFd8BjB39c+W4teWU0BKMiBnjhNnShQYkNjlbyUokNelsqWaS+TRcaSl5wnF/NorGHfx5WHQRBaA+6WJvHRE3M/CiAuxAugXkxgDuZ+QkAIKIPEtH7y98fR0QfIaKp5Z9nATgXfi4HlNt6BsCFRnvXMPOO7Hou1DgQcN4AACAASURBVEKtJTErixHl8yJhGNZMhB76v/OfKPz5CfDQIPZ/7K3gebPq6W7tNDjpd0eeQ2HKKnBxEOMbXxbZ30xRQUiPddFNEIRUNGM8khd6MqQijbvPNoFXQoO+3RQaTE6848t45a2fhUcObvvgdXjmuDNDYoPj+p0xxYFKm3r7WqiCHvZge74nORv0zyCajyIQUo5Z8j24ThFPrT8NO/cujlSzCAkOZdFDiQy2EAolMCixwW+LQ8fp6G2UmELiRcHhPCfR7grEjSD0Ch0wRn4jgC8S0SfhR60vAvAWbf8p8EMwvgFgDoAPA/gQEV0DP1/DBcy8HgCYuUhEpwH4LBHNhR+usQPAla26GaENMKP/ujtR+P3D4IF+jH3kLeDF89vdq9T0L/glAGB804mAN9hw7oY8lY52CCjl/xmUGZ0WxiEIraRb/3n0pOCQRDhHQnlblVwNNqGBHOD4n34Dp97w12Ai3PGX1+DJl14QcTYAYXHARlJCSGvZywSxISpohNuuVKYY2ILDF/pl2v+08l1WsUH/PJS7QYXXeRwcqyeHdByuJMXU+6zQS2GqAYEK0wD8/rsUFRvykCSSmbqy4kWWqASfgiCkp+w8uDxh//na93cCWFylvTUA3pFV/4QmwV5qZwB77I8p1PHllzCR44sNN92Nvl/fD+4vYOxDb4J30MLarpnUF3N7jS9jYgYjvn1neA0KU1eCS/0Y33hi0CVyUn1GVD5Gf/MQGGAPTK7WbU412PePS75H2zFpzvOPA8zXpG2bjueVx2ho7aqm41DqKm1pIKK2CxLkUN1hEw458GyTghZDjiP5LoRcIYJDjaR9Dh5zz3dxxvc+DAC4813fwCOvuCSip9uqL9Tynk73YqxvFn7s0u+XK1Ocgu2jy+C61c9R2J7TZjdMd0MtbdloRGzISiQQsaE6IjYIeSTLAbMgZEYNYQJJIRV9t/8SfT+/F1xwMfaXF8M7NEGPSisqZAgTWdtXYRL9C34FABjf9BKwN1xzv5iciKOBQZEwjDgxIHJuCtHAdkzceebjJyYVWKrzsg3nqn5M1s/OdosNQGM5GvIgNgCSXLOT6dbxiAgOZbJyNgDAkb+/EWf/u78Y9bNLv4z7X3tZ2V0QdjfoeRBs7oZanA1A1N3gaNfQHRThMBEzFwUwqX8bjlh0CwDgT8/8RcTdoNqoJJgshX8GgmMLBVWJwnc3xIVBhCpdWJwN6jNSSSKVg0IQBEEQBDt9P/kt+u/8LdghjF32enhHmQVK4qGsRYaUKwO6AOEMrUdh+lPgUh8mNkRzN7SKaiEYeQrREARByBs9LzjYhAYgOV9DkoC5/M934Pyr3g6HPdzzhn/AvWd9uCI2qFAClSRSoYsNphigtplCg67A6kknq4kNetum0KA4Zsl16HPHsGrTK7Bj73Kr2KByRyixQT8/SWwwcz+Y6Pfpt0uVpJJu+f9pxIZ2h1cIgtAZMLo3ZlLobfp+cR/6b7sHTMDYu85D6djl+Z4WWwYr/Qt/DQCY2HQ8uDjcw6nOBUHodrp5PNKTgoPNdtaoqwEADnrkblz49TfBLRXx23M/gd9ecGVIbFCWR1McMNGFBv/adqEBSCc2mG3r9+a3zeV+EQb6duDoxTcBAP686t1h54HWHyU0lCp9ZRBRpVSmyttgig0meh9D1UBY5bdgFGoI56gHyb0gCD0Md+8LXugOIuESKSj8vwcwcNPdAIDxt56J0ouPzLpT9Z1XQzUOZ9JGFGY8DvZcjG94eVPDOpIgcCoHg1S8EgShIbp4PNKTgoNOFkIDABz45G/wxn+5AIXiOO477f345Vv+yZ+Aa2JDJXwiZvJdi9AARMUGlWchroqEajvsmAi3e+ySH6K/sBert5yIrbuPDDkJbK4GXaxQYkNfQSWrjA+jMEth6kKD6pLrsJ/ksoa4fyfjHAEiRAiCIAitoh5xwaRw76MYuO5OAMDYxa9F8eXHNtxmzWQgDvQt+A0AYGLTceCJyYBTTjBpDKDMn+uBiRKTMmaNiBNCu2kkV4Ug1ErPCg5m+IS+TRcbTKFBn2Ar5j97L978z+eib3wfHnj1O/Czd3wVTjl+oprYoOcosOVp0B8IeiiBzdmgJv22d68uNNiS8hARBgp7cPTiGwAA96/6i9B1mQN3RMkLt6Guq0IoHKdc8tOxXSfaN7+kJlX66IsVXGlHKhsIgtA8WGrHC12D+8CTGPj+j0EMjJ33KhRPOaGyj5S7oNoEPQcJkmhwKwozHwF7DibWvzzS57Q5E+oVI1qZk6HXymIKghBH945HJBquQWY//yAu+cJZGNi3G4+c+EasuOzbNVkG88QRi36Egb49WLf9OGzcaV8R6cZ/B+JiEARBEDod99FnMfid20EeY/z0l2Hi9BOrn5RT+ub/D4iA4uZjwONTK9uzcDPUSrPFB1loFgSh2+lZhwNQWxiFzRUwc90TeOsXzsCk0e148kXn4I73fxdw3Uo1CiBsj0xaNIhLDGktMVklb4PeZvi+/PvQb8UPvSAUnAkcs+R6AMCDz729sj8ujEI5EYj8kBGVs8Ep522I9FlPkknhz73kBWEUepLLHCyyCILQA+SkkpkgJJOwmOE8tRqD/34bqFjC+MnHY/zcV9TUNDW6UFKDEFBNNKC+PSjMehDMwPj6zhVNBEEQaqVbxyM9KzjYxAbdxsJaMkQTIsL0DU/j0s+/DiO7NuGZo0/Fjz50A7ivL1T6MjheC4WwCAKAPV+DKTaocpppxAa9fZvQoPqiwiGWL7gTw4ObsW3PMqzZ+rLgM/FUyEO4jTixIbhPeziFEhv0XA1KyHAdoOCK1C8IgiD0DrVO9sl42TvPrMWkb94Cmihi4uXHYPzCUzq6VFNh3n0gp4TitsPA+w9AvktrtJ9udJ4KgtBd9JTgQETnADhnxpxlVV0NNqGh3Aambl6Ft33+dZiyfR2eO/yVuPnjt8IbGAyJDWZFCoXZrC1fg83VYBMbXDcQDHRMocF2XV1sIPJwzJJrAQAPrHobmClUNrPk2V0RruPnbVDJIsOlM/3KD2YCS1V9Qq9wAaiKFuFEkmnKXwqCIDQCI/55LwjNQo1Hls6Y0lA7znPrMfStW0DjE5h48REYe9NptYkNzRQm6nFNuGPom/tHAMD4uvLiR5uqU9hIVa1CFBJBEOqgm8cj+XmKtwBmvoOZLxscnqYlUeRKcsg0YsOUravxtn96HaZuXY3Vh56IGz95O0qDQ6nEBh2PtWSMJa6ET+ilIRVxYkP0/gK3gO5I0J0Kql96gskls3+N6SPPYs/+OVi58bTKsSUvEBvMcwtuNElkut9B0LbK0qyLDeZ9twLJFi0IPYzu5MrwSxCSUOORqZMG7AekmGQ7azZh6KqbQfvHMXHcYRi75IzsX5wtVv0Lc+4HFcZQ2nUgvD0L7Qe1WIBoZdLqVsw1ujUpnSB0PE0Yj+SFnnI4VKjR1QD4k+yR7etx6edPw/TNz2LdsuNx46d+jOKkkVixwUZSngbTRQAkOxvU/mjbYZFA4VeyCIsNRMCxS78PAHhw1SUoFgshV4NqQ53rOuTnaSiHUcSJKrq7Qd1bkAOCQse4lmoWgiAIgiDYcdZtxqRv3gzaN4aJFxyCsbefaU+g1ElQCYX59wIAJtaWczcYgym/LGZjl8mTYwLojCoV3brqKghCa+hNwQGBq6GypcrDdGjnJlz6hdMwc8NT2LD4WPzgr+/E+PDU2JwNJmmFBp24nA3xbQehD2nFhjnT7sfcaQ9g/8QUPLL6fJS8IL9FGrHBhhISFHpySPWz317z3JzqGs1GX/lQYSRCPFLiVMgjMpgWOgnasBWTrroFzuh+FI88CPvfcTbIZntUVMtYbb4smxzP6IsG0fbdWY/CGdgNb+8BKG0/CEQemLT7Yi8zdwOBM30T+e1VSYZJnMpRSQSk6ZxD9lxf1apeOESpXA6m69TalkOVMWO96H0horY8j72MloIdcuDlIOsfOQ64yj2RQ5VQbiE/dOt4JF8yb06ZtHsrLv3CaZi19jFsWnQkrr/yJ9g/Mr1p12tlrqdjl/juhkeefwOKpaHK9rjnVL2JrM1nWrMn5rWFsGbTFxEbqiNigyAIQv04m7dj6Kqb4ezZi+Lyxdj3rnOBgl1soDSTc9vLMq3YUKcoYa9Swehb+HsAZXcDuVEnAjmZlcWsJc9CVnkb4sQGc3yUdr5hmyummT+mDalIc1ijYkP0mp09RsiD2ACgqtjgH9PZn7XQWfSowyFdGAUADO7dibd+6UzMWf0wtsw/DNdfeRf2Tz2g7DaoHkphczao7UmXNt0NavFCuRT09m3OBr2ahH6e7m6YNvwslsz+FYqlfjyw6o2RMAogcDcUXCqHckTHGGoxxG836m7Qy176bXJT3Q2CIAhpYaQbpAtCu6GtO32xYdcoiocswr73nA/0FULlt5vbgSrXaaC0pjNjJZzhrfDGJqO45Yi62xHyh0xsBSEd3Twe6V3BwZjt6+EDioF9u/HWL52J+av+jK1zDsZ1n74Le6fPiYgN1a9V/n+KMApdwNBDKdQ+XWzQK1CoqhKRtiyhFOqcow+8HgDw+NqzMbp/ekis0EtuqtKXZn+qofI1qNwNfjULERsEQcgRLANiIR/YhIPKYsb23Ri+6mY4O/aguHQ+9r37PKC/z95Qnso7pXzZ9y30czcU150AsNsVpTC9Jt5EhxsBBEGw0cXjkZ4UHPRfZZzrqH9sFG/58jlYsPJebJ+1BNf9zc8wOnO+VWywuRv0l4FNaNBtaI5R1cKWtyEQCvScAVFHgyJJbACAgcIOHDp/BQDgz8+8OSRY1Co26O4GICo0qGOU2CAIgiAIQjpo5x4MfesWONt2obh4LvZd/npgoL/qecxeurCKNkPDm+BOWw0u9qO48dh2dydCmvwMgiAIQjw9KTgAdqFBuRsKY3vx5n85Hwc++VvsnLkI133mZ9hzwKJEsUFhCg1ANHyiXrHBvIYuEugTe3Uvuthgnnv4oltQcMfw7MaXY+uuJZX9SWKDDVOEMIUGdYzjcK4WXYTeRHJICDZktVDIK7R7FEPfuhXulp0oLZyNvZe/HjQYU0qzQ+lb+EcAQHHj0UBpoCvcDe2mlauk8vwUhOzo1n9PvSk4WH6ZSmxwx/fjTV+7CEse+yV2T5uH6z9zF3bNWRoSGxRxYoMuNOjbzeQ6tYoNSUIDoIkgFC82eAwQxnHUgTcBAP608s3B/ZCqQEFa+U1E2giV7NT2eR5FxBXXEbFBEARBEGqFRvdh6Fs/grtpO0rzZmLvey8AJg0mnBB2MzTd3ZBFNYv+UbizHwczUFx3fCbdUskmOQd50atVpWBQ5mUxu3XCIghC59KbgkMMTnEcF//rm7Ds4buxZ8psXPeZu7B93iHR4zp88nzwvLsxMrgFW3YdhNVbXtzu7giCILSVrDOtC0LD7N2P4at/BHfDVpTmzMDeyy8AD09qd6/CZDAYKsx/AOSUUNxyCHj/tFzWTmt2OIU8fgRBUHTreEQEB5RDCIoTuOgbb8Wh96/A3pGZuP7TP8W2hYcHq/lVQikU1fI1mCS5G/Q2/HaCbbbay6qvvjMh7G4IqlkwjllyAwDf3eBxkN/B5m5I6nfovjkaOiLuBkEQ8o56LgpCbtg3huH/czvcdVtQOmAa9r73AvDkoerndRpOEYX5DwAAimtf1ObOCIIgtJduHo/0vODgOACVinj9t9+Jw++7DfuGpuH6K3+CLYuP1o6hxMm3HiunT7p1oUEPRdDbTBIbKm1ahAaz7GXlXoxKFsHxfsnLOVMfwJxpj2Hv2DQ8vub0SslNonixQXdNqnAN9bMuNOh9UmJDN9IOAUUl5BQEQRC6mP3jGP7OHSis3ghvxhTsfd8F4CnD2V/HVsKyxQkm3dlPgPr3wts9G97ORbnM3dDuZJGNLHZ26UKpIAgdSM8LDuSVcN7/eQ+O+p8bMTZpMn7w1yuw6aAX+vuMvA3mRNMUGoCo2GATqpLEBp0koUH1T/XL5kgIXA1B3odjD/LdDQ+uugAeD1rFhtjPyszZYAgN/r1ZcjtkEOYp9AaS1FFoBxxTrUgQWsr4BIa/+2MUntsAb9pk7Ln8AmDa5Hb3qkkwCov+BACYWPsi5FJt6BHiqrXFHt+lK7CCkAe6dTzSs4KD4wDwPJz9nb/EMb+5DuMDw/jBJ3+M9Yf4OQ3Sig1phQZbaEac2GCWujRDFULtaWIDGYoDM6NU8r8vecCUSetw8Lx7UPIKeGjVRXBdvz+OxVURKpFJyWKDEhRsYoPtsxMEQRAEQWOiiKHvr0DhmXXwpgxj9PLXg2dMycc0vAnOB2faGjgjW8DjQyhtWp55+/ViczTElcVst/sBQNfarwVB6C56U3AgAMw48/sfwnG/vAYT/ZPwwyv+E2sPe7m/u4rYoLCJDbZnfy1iQ6g9i6tBxyYE+MeHXQ1KHDhm6U1wyMNja0/D/uKsiNhgc1ja0IUG/R5t9yIIgpB3ZMVOaCvFEob/4070PbUa3sgQRi87H94B08LHpH1BdwiFRfcDAIprjwW40NMGh6yrVDSChGEIQnvp1vFId73B0sLAadd/Aif8/Nso9g3gpo/ditVHvhpAVGyw4Rl5CzyP6xYbIl0zXA3MvptCD9+Iy/egko0wA6WS72pQ7RSc/Th68e0AgAdXvbEiNpjOCt1aZ4oISsQolb9UX13H/xKEauRhRUgQBCE3MDB8/U/R98Tz8IYGMXrZefBmT293r+JJEj5s3nzLwIgGd8E54Fmw56C47gUZdq7cfo2eZP29ZIb1xbkbIte0hAM6KUIECVz3JL9e96iTcmUo7QJSlgtNplM3C7wWetSdFudBEYROoaccDkR0DoBzlg1Nw0tX/Qkltw83ffgmPPuC14Jgf2imfaDXK0jZrpnm5WNLLmlD9Wv5wp9hsH8XNmw/Apt2HpnZYomESwi1IDkahDwitmSh1ajxyNH9BfSt2wxv0oAvNsyd2e6u1Y/KXK1jGeS48x8GEaO4cTkwMZy5u4EbmPSZ4kJakdx2nJfi3EZE+HqFirQrqGkfi1k+Pjv9WdxKcUPoTjr930AcPSU4MPMdAO44nug9JbeAWz54A5457sxQWEKSuyFNvgazGoXeps3dYP5d6fkaQq6G8gnqXCUY6NeyhVEojl16MwDgoecvCrkb4u7V6m4w7t91om3Y7r/bkka2436YqScqVTCoqaJEs9sXOg/lUhOEVqKPR3igH6N/cS68+bPa3a3GsQ0CdKiIwvyHAQClJrgbBEEQOpVuHo/0rPfnR++/Fk+9+PyI2GCiwif0ybYeQsHadrOChB6eUS2UIhSmYYZQGGKD6q8uBpRKQRiFHu4AAHOnP4K50x/F/vEpWLnhdZFQCrPKhCmI6AKGSkLpGgsZ5mfkfxGYqbI/vE8PH6FQP/RrVs5D+JigPWO7cZx+TFxbar+ObV+1pFG2duL2mRq4ub/R0INaz68nIVbS/rjPIuuQil4J0Uj62xIEoYMhwp53nYPSwtkpD+/sZ4EzeyWofx+8PQfA2zm/3d3perp0sVQQhA6jpxwOih2zluCJE98QmjA72qTeRlxiyLjqEapNU2wwCU3EjcoXujBhy9sQ9KksBqjqFuUGyCG4DnDs0lsAAI+tORfMg7FiQ1LfVGimo7kaSp7fJ72iRUlf3GC1n7R9/sFK6VKLIaXyMf454U6pybmjKyz6dk1AIGJ45eOc0M2VRYfy6rbZVmW//vsz9hEFsZy6JVG1ReDKxFA/Vq2o6/vC/Yd1f7Xz0+xX+5QQ42jHmo4J2+q/eQ2TpP1xroxqLoNq16y1vUaPt7fhgCKyUXPpFZdLO5BBudAuvJlTUVo8N7yxi+PACwsfAgAU1x4DUEId7i6jSxctBUHImG4dj/Sk4LBvZGbIJZAkNtjCJ+L+GMw248QG/cVjExpCbaYonak7I8zzBvt3YvmCuwAAj6y+MHRPZr91Sh4i5TkrQkPZTeE4QWblQCwIOyorAkQK8aFybUN8CEQJJbxoAgM4JHI4oIjwAPjiAZHmdqgiPBAxPBAcBNc3xYTKZF7dmzZRtgkP5r7gOgEOshEebKKDf98UEh30dmxtVduu789SdEhzzVrbq7ft+DacchutEx5EdBCE7oIH+trdBSvUBNGDRrbAmbYOXOxHaeNhmbefhl5xxbUTFnVFEASDnhQc1PsmrhylTpzQYFvhVm3a8kDok3A9R4Ot9GWSy0JN+PXzSkY9JeWMcAg48sAfo+CO4bnNL8XOvYsibZoOBV1kUGKGEjtUSIXqh+dFE1dWJt8cvQ9zn5o8JZ1jI20OBbO9tO37x5JVdAgdYxEdzO2NTBDNc2uZVCeJDs2iGaKDILQCGSALQvNxF5ZzN6w/HCj1AwRwzkJECAyvd6ONBUFoM906HulNwaFLqG678XD04nKyyOcuanp/hPzQjlVwEQ+EToSZu7butSC0nDgBoTAGd94TAIDi2vwmixQHhCAI7aKbxyM9Kzgkiepm9YkgUWH8H0Gakpqe5kTQq0joGUltiSvV8X5ngvAJ1YY6X3dWEAGLZ/0e04bXYNfeuVi18SSwWV+ayhZ7Cjs4/Hbtlgt9pd9WWjPJeeBoffP/n99/VEG4R7o+xt13I/dontttE/puux9BEIS8QrbSVs0gxkroznsCVJhAadtC8N4ZaNa8nuMsrELP060rx4LQCfSs4KBjliDRhQZdZLCV100Kc6yEClhCJ8zkk0D1hJWmyBAXhqGqWrxgiXI3XIBiyQ0dGySe9MMGlMBgSxCZpo8mZiWNJEwhIthufzmYk/toHzm0XYkG0fbLx6eY+NruI+68tBNpU1Bolomz3RP7PAtLjdLqxJFCc5CBqNBuKE2cYMfCcBeVwynWHh3d3cVJMgVBEGqhk8YjRDSPmdenObZnBQc9b4Gt6oQSGriS08B0B0QHB7Z8AaaTwXRN2M4N9dMQK8xynPq5ejnLkcGNWDr3Nyh5BTy46jxr5YsgFwNHEkS6ru+YMJNVKnR3Q2Vin8LdkIY4kSOy3ZhIp71GuybA7Z74p6VT+qnTiX0WBEFIoltECJq2Hs7IdvDYELzNB8Uc1Ln3KmWLBUHoZIhoBMBnATwNYATAIgBXMPNozPEvA/ApAAsBHJfmGj0rOCjCoQR2kcHTFjFtYQR6W2oC7zhUSeZYLTTDMV60plhhChVmwkqVqFIfmxx54B1wyMMT607B3rEZie4JVVZTESc2WFf5U24z9+Vx1TuLvrVr4tuK67bj3pp5TREpBEUnrSgIgpV2uQRSXLew8DEAQGntEQC7TQunEARB6HTaNB65EcDvmPnfAICI/gHA1QAuMQ8koskAVsLXEFK/eHpTcDAcAh5zosigY6vMEGqaVSWJsNigX0OR9J7WczMEFSOiQoVZFcNfEfFw1OLbAQAPrTpfOz4cTqHuR3d7OE5UvDBJm7uhFudDXDhF2kWPVi0E1SJG1HKs+ZFWy9+Q1Haz+ii0H/l9NQG2lyQWhE6mlrKWlDSoaZTCGJy5KwGUBQdBECKI6C0AaMt4hIhOAnAGgI9pm68F8AQR/SMzP6Efz8y7Aewmok0A5qe9To8GzvlZQD1mlEq+EMDMfj4DzxcL1M/6l4n+Pg8JGF5YJDCvoaNEg+Bcrnwp90HJ44hg4RDBcQDXJbhOWUwoz7oXz7oXU4fWY+feeXh+ywlwHfhfbrLY4LpAwbWLDVm6G5KIO8YUL8jIy+BV7sMuVNTj1kxKGKkLAPWIHe2aOKZNgikIgiDkmPLLvBJ2YaxosC3pVKp2G1TvjZetO+8pkFtCaetC8P4p8edlmJmd6r13WMT9Bt6ZzX7f5iXiJstoGFu4cifhSD4SofM4GcA4Mz+mNjDz0wDGAZye1UV6yuFAROcAOGfGnGXW/XGuhnRt139uGiLuiITrHb34NgDAw8+di7Sakm2Bo5Oe+3nP39DtSHiC0KkwZHVJaD1qPLJ0ZsIkvKYGwy/xWhwO6dqvb0DgqnCKNVXcDRkOONhy77Zt1nONeI9GymR6TY4dyctjK8sqfrbFvU7Ca0DsEoQmjUcOIKL7tJ+vZuartZ8XANhuOW8bgCVZdaKnpDhmvoOZLxscmgr2/DKVXHYgeLrLoWxp8SzWFr9yQ/ASUfkXlKNBuRqqORvICbsbzISTelvq+aXOcR3ynQ1ldwM5VFnlmNS/HQfPvwceO3jk+XNCYRRhJ0VwXZWzwc1QLk92OvifRSvU+bgVhkYrVNRKp+QiEOFAEASh+ajxyNTBgXZ3pXZSTt5pymY4U7aAxwfhbYpJFik0HbMSG2CvuiYIQleyhZmP176uNvaPAZiwnOcgw4w7PeVwUDBQCZ+A+r7KPMu0ednet9UqW6h2dLHBnMzakliq44Egx4ISGvw2g/OPOHAFXKeIZzachH3jc+C6qBwTVMsIjlftRftp/z5t/gZzX7pEkvHHNJtOcnMIgpAl9pA5QegKkl7QTX7xVdwN65bnMllkI+6FesnC9dANjytxlQmCjbaMR1YDmGbZPgPAc1ldpKccDhU4yNNQ0stOelz5UjjGZFsJBgrlZtDFBqujgSiV2KC3G/SBKi6FkKsh0gbj6MX/CQB4ZPV5FVeDEhs8L5y3Qe1X91jt+W8rhRm+x/h9tVAtYWRT3QItqFBhXqOZ/wiz+qzqbSfu80zlLOkQV4ggdANEtKTdfRAyIC+B/e4E3HlPAwBKaw9vc2eyodkhEoIgCG1gBYARIjpQbSCiwwD0l/dlQk86HIDw5DpOaQ1W5ykSSmFSj6tBOQt0u1tFDKDAvaBXonBdip2Iz5/xIGZOfhaj+2fg+c0nhdqLq0ahfxb1jFNqPaeecIq4ahdVt2c8qWxV9YdqFSqyQvJZNAZBPKldAdstx3milhrZ5ZJVawCYyQHGARxQzjANIvo8/DraiqsAvD/73gu9iDv3GVDfOLztc8CjM1tyzbR5GgTfOSthFYKQM9owHmHmotbWOQAAIABJREFUR4noLvglMD9f3nwxgDuZ+Qki+iCAEjN/wzjVreU6PSk4qF9lnNBA5bKQSmCwORtC7cU8tNX5ptighzCYpS/D56MiMqgqFGmSRT6+5mx4XNBCRnxRQc/nYAuj0K9r+z5pm41WL7TErqZT8n4bacWKdiwmiVAgCNnSASEVqWtkA3gzfOHgt0BFFTsFwLma2DATwGIAJ5T3M4BHmtZ7oedwFz0OQHM3dEjcIoHbEmrRTByHci+qCoLg06bxyBsBfJGIPgk/+G0RgLeU950CfyzxDQAgokkAzgbwGgBTiegSAD9j5k1JF+hJwaEb6S/swaHz7wbgh1PUSl5cmN2I2PcFQaiXWmtkA1jBzGuMNl4N4AZt00cB7IMft/lLZrYljBKEuqCR7XBmbAQX+1DacHC7u1MTeREbmLPrhySNFAQhCWbeAeDymH3nGz/vA3BT+Ss1vSk4sN3doJIwKneDHkaRxt2gVKk0zgYg3t2gFgJU+ITpbrA5IZYv+Dn6CvuxZusLsX3PgZXjPKNdlUSSmavWO66WLNJ2bK2OCPM8pwWr92aFijT9C23LsYDQDvdDuz+Pdl9f6Gw6oCzmybDUyCYiVSM7JDhYxIYhAK8F8F5t8yEAjgXwLgBbiOj9zHxjk/ovdCrp602HfnQXlnM3rF8GlPpylyyy3aRZwCTiTEUHQRDyTweMR+pGAt7KqDAKU2wgJxAbHKJKbgVrG1piSD8MIl5sUNjEBj1XgxIbbMeq4x0CDl/0XwCAx1afrZXUDI5znXjRQO9aLa7HevM3pDu29v4IzUEm9IJQFwcQ0X3a12V1ttNojezzAPyCmfeqDcx8MTMfCuBwAPcBuKHsghDySDXFP1d4cBc8BQAorV3e5r60ni6dK3QM3TpZE4ROpzcdDgZJORuSBAabJa2aqwFIdjboCSJ1sSG4piqVGTgepgytwcKZf8ZEcRBPrn1N6IWn520I52aobyafhQCQplRm7PXbNPltlnOgk4aRrUREDqFlxDjeMmALMx8ft5OqP1Q2MvNcNF4j+60AvmnbwcyPE9FZAH4F4D0A7knRntBMOjzxoXPAOtDgXnijU8A75jbd3cA1DCRsx+qJJlneyIIgtJPmjUfaTk8LDnEhFLqjwcSzVaHQ3lFpxIakBJG62ADEh37oFRqOWORXLXl6/ckYKw5rffFDKMzbSCM21BNOoZN1Toi49gLxovF/oLW2EXKG1FkSs9H9tUzMqyXClEl+vpFkoc2Crc/1FjC9yn4ladddI5uIZgE4HsBP445hZo+IfgjgzCr9EdpMvQsFEbJwTMS8lN2Fyt1wCCJqQ0c5NbLNo5AGT0IoBKHHadt4pOn0lOBAROcAOGf67GUhV4OZqyHJ1RBqzyI0+Nex52tQf0NpxQb7NcNiA+Dh8IV+OMUjq8/S+qPna4h3E2QZTpGUvyFpslSX0yHmnCxKYjZaTlMmhj7yOQhCPOUkTWlYAeCfiehAZn4eAGqokf1GAP+ZIinkFAAPpeyPkAFqPLJ05pSIk7Eq9U7c045t6nVZFMbhzF0FAPDWHlpfG2WYnNoGBxJ/WROtLovZAZWABEFoIp0lNzcIM9/BzJcNDk2NzdWgxAYlAujEqU5pxYYgt0KgYFUTG0JJH7Vj1HELZtyPqcPrsHvfbKze7Lt3XScQG7J8BzfSVpqVgmYmjKxl8uul9ICmcT016howz++kJFKd1Feht2GPM//KrG/MjwJQNbIVlRrZAEBEHySi91tOvwTh6hQgouOI6CNENLX88ywA5wL4amadFqqixiNTBwes+xNFCK/OmWLSpE8PLahzJurOexbkluBtnQcem2rvQtJAwnH8/aovGU1SGQSy3JPt/Zyl08+2eNHogkZd/WhyGbJ2az0iZgjdRF7HIo3SUw4HHZs1Ma2zIU8cXg6neGz1GWC4kf3Nfg6nDafIy2p3mvdu2gFBO0qJ5uVzTEMn9VUQck5SjWzAqJMNAES0DMCBAH5ptDUHwIcBfIiIroGfH+ICZl7fvO4LmZJTh0OlOkWD7gatI5Zt9fWNLefZSmCmKYuZtnSmbfEi7YJGJ5XFlPm+IAjV6FnBQb2vzeSQ+vtNf4hWczdUrPzaLNRMDqm3YeZ6sL1XPdZyFFgcEAV3Pw6ZfzcA4JHVZ0cSRKrLpUkWGT5Gu78O98B0oIaUGZKTQRCqw8j/CllSjezy/vMt21bCr3Bhbr8TwOJMOyjkkxSqOGX0kqfhUTgzN4BLLkoblmbSZvWL5neA0ugjhYjheT08gKmCTUQRhE6nE8Yj9dKbggNFk0OaE1P1+05K3mGKDUD4IWgTGszznEhOhsCqnyQ2eAwcNOceDPSNYv32I7FzdElFbPC8dEJBO1bo01SokJKYgiC0DJbBq5ATbBPohJc5BYOEKs02MDFPOal3yskivQ1LgGJ/csBu3S6F7AYFNsdDTedLyKAgCFnTxeORnhQcCNF8DTo2sYG9+CSRJnoVijRigykkhBI5xhzDDByxyE8W+ejzZ1X6YooNWb2fQ66HGhNGZoVasc+i3TRtWe9JXAMhOvHz6MQ+C4IgpKXupI81X0hdh4NwijWH6B1pwrXKV9RzTuTY6ZBEly5kCoIgROhJwQGIFwxMocAW56bnerCFYNhcDfo1XTfqavCvGXY1qPZN5wMzMDywBQfO/gNKXgFPrX9d8s1W+lrbyz+rcIpGY/nb4cRoBe0cIqX9nTRjci4TfiFv5CmxkiDUTbNfljGDApqxCc7wbvC+IXhb5keqYTZMaKDlRcSHXqLefKEmZpWKNDbuVla1CF1XlBmhh+jW8UiPCg7VQyjMB6sefgHE53qoJ4TCv65dbFD7zOssX3gXHPKwcsMrMDYRZINOKxLElcNstApVreOd4LOo/R9YEJ6Rn3+cyeU/a+tnrRPzPH0OgiAIQo7Jwn1Qnvy7C54BAJTWLUNESm80dCFlssdazhcEQRBaS48KDo2Rh9wChy38KQDg8bWntbkngtA+xC0hNA7LCpog1AM5AHlw5z8LACitO7g112wxtQgcmV2zyTkimu1W6NZVWkFoLt07Hukp6ZeIziGiq/fv3RHaniaMArCXzdTDKNK6GxwjTEJ/LpvuBr1tVVN12vBqzJv+KMaLQ1i16RUJ9xu7K7dkGvKZWf6K1vzjb+Z12lH7u15qERHaMRAEAEKbvKWCIHQFajyyc/942uOb3CPUFZLhzFoHGhiDt3sqeNeMJnSqNVSb4MftT/MmqOc91U7HoogFgiBkTU8JDsx8BzNfNjg8rfxzIBJ4zGDPLjYkJZhU7ag2FA5RSGxQeRvihAZbiIMpNPh9IRy+8C4AwMr1r0KxNBi00YLfZiMhos0OL62EZ9Qxua715R76fbVoMi8hE4KQPf4z1sv8SxCSUOORqYP9kX2U9LJsR63qUNxl+PruAuVuWIbskze0j3aJ2XHkTQPo1lVYQWgnzRiP5IXeDKkwqkgokUF/gKrVhFqrWQDxORv8Y6PdMXM3VFwTxsHkEFyHsbwcTvFEDeEU+upImol/LZUual14ybPzIksnQLOFCAknEIRs6NYyVEIHUWNJzOixKV/U9SR6ij2mCGf+cwAAb+2ydO1W+tO+9a5miAlpQiDi5ujmdnkcCQDA7crSKbSVbh2P9KbggGj4RCvEBhum2FBpX/uD00tjHjDlKcyc/Cz2jU3F6i0viW037aS+3oSRtbRbzzG2xJr194Uza0vIFyK6CILQi1AweAhvDzJcl3enmNhrbdRSUtOZswZUKMLbfgB475SaDQ5M1BzhoTyA4IwGNQSuiBRJwkLeXBGdjoR2CEL30KOCg93VAETFhjSlMxXVxAb98LBDMfjB5mpQYgMRcNgC393w5LpT4XFrf31xlS1s+4Pj5IXRCcjEXehlxB4s5AVbOEWz8jekEiMU+rHlProLy9Up1h6kN2q5UAr3RTtCRXICUXblLrOmVauteRUXxGUgtJpuHY/07BOeOZoJtF6xwczXYIoNKheDiTmuSBIbPPYffIcu8PM3PLkuHE6R9K6uNZyiVdTyb0pNiPMcjiEIgiAINZM2nKLRSbk6P7UFUrueOSPuG4czZw2YgdL6g8L76ul7RjNuJgdgBscMb61lNhM+j7SuBX1xJYsKE2YbDtU2Zoq212CHaiQxD0mZtCKDTXBz8jSYFQShKj3qcMieeifCaR7KivkzHsSUoQ3YtXcO1m07pr4Ltgm7+6H1/cgLzVb6xLEgCClhzu3qmiDYqGXckBmGYODOex7keihtnguMDWfefkM0MLiwCQxpRIdGRIY0YkCnPaJsz9R63RK2Fd+8xLnLu0PIlC4ej/Sk4GD7VRIRgtDH2twNytkAhFXXuJdIJURCJYm0/HGR5pLw2D9+eSWc4nVImrI2mr+h0YSRtb7rnRaHXeRhMu4h/BuU0BNBaA8MGTQK+aDmcAojX0N0dwpHg62NFIKGs3AVgIRkkbYy4k1eZUgSBmq5dlpXQ72lNIHaBIQudVgLgmDQzeORngqpUHWvx0Z3mtsrYRRJYoOt9GU1scHzuKLEVkIuLGJDqESmS3CN34xDRRwy/+cAgCfW1BdOkXfq6aqaqNd3briNan3JUqjohn94SZ+HCCjZIp+nIHQXajyyc/94hm0mCxB1Nqp9X25/YB+cWevBnoPS+sXR48zjzW0xiSJVEkkmByCyhz8YYoA6xnZs2nObSavFglqu162x4tXo1gmdIOSZbpj3pEbVvR4YnlrZposNungQnBOIDTqmMGHGk+lCg6PlYlCHscexYkNkGwELD7gPQwPbsW33EmzZfWg9t5/ZGKQRDSMr/SOP4XtJk8JaJ4x5cGEIQq/gsZf5lyAkocYjUycNADDcDQk5ELIKp7AljExbocKd/xyIGN6mBcDEgN6o5ULZ9DdS0YKcwLVQ5RpJwoIuQlRzNsTtbyTkwpz7NiIYVJtH19a2fbs5Fq4cn7NJfJr+dLLgkpeQkjzCec3AmpJuHYv0ZEgFkE01Cr+dsNhgPgR0scHEFBWU2GDjkHm+u+HJdaciqfZUluUwQ4JKlXZrrVCRpiRmPTh1JJdkpti+9vLKcjNEDxFSBEEQ0lFLOIUpFkTCKZLCK6wvcL0qRbhChTP/OQBAae3S+P5lhaV0Zi3OhIZEgjrKXLarNGY75s61Tnodh2SiLAg9Sk8KDgSkytdgU3Id7eAkscGpDAKSxYaglLb9JeWXwyxi2bx7AABPr39NeH/G4RS15G1K23y9CzKtcjE0Iiq0agLdy8JHlojgIUTg/K3OCb2Fzd0Qen+b7oakCXctL05rdYyY1Qg9nOKATeCSA2/jouigIWWFiopjISclMeOqWliPZapbWPBdszXkk4h1Gmjf17CIGedQSO5DPp6PeVy5Jodqen/k8R6EHNHF45GeFBwapdVpERbO/BOGBnZg254DsXV3TIImQRAEoWYY3ZsVWhCyxp33PIgYpc0LgGJ/TwTmZlHmUujOMIBeeXdwjqz53Uw3j0d6VnBQToVa3Q22PA+2MArVdjV3g6pGkSQgHzL/FwCAp9e9Bno4hbkokCSExC1aZE0H5aiM4KRc/U6zgNTqlfRucUCIA0EQhJ4lpTsg2FdfOAUZIRKRNhIcFJVwivVLtOONl2JchYqkXApZDR6IKm6FuNCLVAkmDZHBiwvNiMvNUE84Rh2vv0bNB/qCe17mOXWXz8zgBrKc7HXrxFEQ6qFHBYd0ORvYi4ZeNCI2mDkbqokNDgGEEpbN+28AwFNGOEUSacMpas3fkLWg4KSoMkFGXoaaHKPl9itO1DontI1MhE0xIIsFoSz70+rrC0LeyItlWOhhNBGATKEAbQinsPQLg2NwDtgI9gjehgONGtpO9OeYyhWx4oJZoSLNgEM7RhcSzGuoEAhbKIQuGjSSODJufhm3vdq1Ys+rlhzSY3gcf1yzFqvrCdfIA14NYQ6dICJI2EZn063jkR4wwwWoMlT79+6I7NPLXrKXTmwwUQkiTbHBY7vYEO6b0Vb55/kz78fwwDbsGF2ILbuC6hT1uhuS+5/uOPN6aRNG1jh2aBut7kOz3QlpnRudhogegiB0Kmo8smvfmF1s0I+1iQ2mM0H9nJW7wZK/wZ23GuQwvM3zw9Upkmg0P4MSKMgBg7QymBQqiZk0eVfig+ls8NuzCBApK1fETeti8y7EuiRiL9EwjYQxpDk3qe+1XrpbJ1qCIHSJ4EBEA0T0GyJaknScKkM1ODxN2xaIDUpoAOoXG/xzgu3mA1d3Nqjrx4kNAHDIPBVOcQqQ0qKX5G6Iq06RZkxQ7TNInfy68jk19nKhFO6I+HMburTQw1DsMFPoSNhf4cr6S+hNah2PTJkUTNwTE0XqxIgNWkPWnwMxQhc4LG1YHBZ6dQpv/ZKwkBESLKKhE9ZwCi1hZLVwiwi1VKmoIazCFBciP8eET8RvT3BEGMMfT3dZWNpTx2cVdqFP7kPfx6gEeQrh14UQESlaQ9qSuUKDNGE8khdy9RdERPPqPPUdqPFedKFBiQ2VftQgNjgOWcUG09Wg9plhFMkTXw8Hl/M36OEUzXA3xLWXVTnMWif49YRAmCUx0zgHsqpQkaVLodGV+1rPF6dAvumW/ByC0Em0cjxSvl7wg01siCuDqTkbKKFiRERsqFYKU9/mENA3BmfWerBHKK0/MHqcY4RA2KpPULK4EAmjqGOSw3Aq7odaSmLWUnWCQXWJD3EkhfgCwVgyy7lDPVXMFEmTfFOwiPzcxQKBlydVJmMaTRrZCaEoQnPJRQ4HInoZgE8BWAjgOGPfCIDPAngawAiARQCuYObR8v5LANwK4M2pL2jJ1VC5nhMulRkI/dH6wXq+BiAsNgBh94IeRpEkNuhjgPkzHsTI4Bbs3Dsfm3YeXr5m+PjoQkbz3Q1ZuwOaFWrBTI0JCjLRE4SeQAZDgqLl4xFo721bzgb/h/L+KmEU/s5wW7YJfJJDQj9fm/CrcIrSpvlAaSg41uZc0IjP15AUAhEID7ZwCv0YPawizUDB7mxI73YwBYV4B0NCKAbrx9nFhWZjTvzb9QislvehUYEijQjgOE6uVoJbgbzz8ku3/m7a7nAgoskAVsIXP2z9uRHAVmb+N2b+AoAtAK4un3sagPuZeXOr+htHnBPgvv/+Lj55kYtPXOhiy7onI/tXPvxLfOx8Bx8738GTD9wd2jfN/REc54+4+fYlAAi///l38cGzHWxe93T2N2ChHndEnugVwaBX7lMQmgGDwexl/iV0HrkcjzRiZTYm4Nf+6k8YuvTTGLrkSjy1fkvk8F8/uhKTLv44Jl38cfziwfB4ZaP7JBznj/j1in6/rbt/h0lnvw8r122qv3/1UOfnkaYyBWAXEOqpOBHbfheW2Oz0CVKviQ1CfmnGeCQvtF1wYObdzLwRQOStRUQnATgDwM3a5msBvImIlgN4D4DPEdFtAI4C8P/bO/NwKapr7b+rz0FkllEQBBVnRA2gIqKCOGDigOM1Gockxum7akiixtwYMHqvIYP3+mkmTW6c9TPO8xQVIyYRcA6KogHRoILMYhi61/dHVXXvqt41dHX1cM55f89zPN17rz3Useja++211r5eRL6UYNSynA2A37uhmPzRDZmI824A/GEUwdwMnbv0wJznbjGuzfk9+9mb0LlLD6fMN0IB82bfi/79W9Fl0DetVxHn3ZDmdIlKPAni+o/K35B27DQiSJLwjHodiZnmH1wjBIVGn4JBCCH1phHrkcQnUiRJEmnLveDZGH312Lwz7njhVV8/kBxunTkXPboEkkHmBOi0AQ/Nehv9+7di7wF7l8Yr2sSEU0iuFE7h69tICFlRXoZkXgaere2ECi9hpO2ECo3Jp2CrK0Tma7CXB/fp9lwLYWNrmWeEakQOhgoey6FJLxN2EhdG0QiBIs2Y9dqsVTq3ahKBEtIoGi44xDARwAZVfcsrUNUFADYAmKyqx6vqFFWdAuBNAGep6itJOg4KDUGxASiJCklCKYL//r2TKjzbkWOPxdyZt0FVi+02rv8Cr794D3bf97iy+Q3s/RYef3QxJh8+EEtX74ZcLnqzGyU2lNua12K3CRMT4hNHJsvfEJUwMtGmPpAwMquTGGxzreXmO83mvNE5F2o1fq2vq9F/N9KkuIv0rH9Iu6Nm6xEzZ0OZ2JCT5CdSeH25C5liXofiyRPOr6P3HoE7Zr2C4j5Ycvhi4ybc97fXMWXs7igau+PkBn6EBx5cgSMOGYRcoUf4IiIQ1hCZLNKGGMdhBgQKDREt/CKCP39DNQkjzbKy3zFhFQXDPhg+YaNQYd4Hs89CIbmYEBQMknyxHxbSUKtNr9dvNZ+hUW1r1S8hmVCD9Uiz0OyCw2AAKyzlywFsU0lHInKWiMwRkTmfry65EnpCQ1qxAbDHvgWPvhw94WtYuXQRFr71QrHsjb/eB9UC9hh3bGCuwIDuj+PZZ9dgzPhJyFlUgUoSRYoAH77/Gn417Sh89/jeOP/ILvjp1P3w7ht/LrN76dk7cdnXd8bZkzvjsm+MwMsv3IcZUydgxtQJoeNVk9Mh0uOhVhvbDDwaw+ZW74SPbYn2fG2EkHZPTdYjy9auKxcavESNhtAgRpkvQaTp1WB4GkQliTx5/Ch8sGwlZs1fVBQAHnjpDRRUMWWf3f32ksPn3d7Hs8+uwZH7jjQeoIFvIkwhIXjyhJksUgSvL1iIEy79KQYffjr6TfwqJp19KWa9Nq/s73T3E89hzHFnov/Yr2Df47+Bh5/5M4785oU48sxvJ87f4AkP5u9inYojUpSVlbwiCgGRoVQOX3mpvf+3RzAsoyRelNurJem4Jw4kERc8b4dCQcvstZDshIowQSFpToXy+Yd7OSTZFGmMOtIWvCbirsFn20Su8IRkQbMLDusBbLSU5xCIQFDVCaq6MKwjVb1eVceo6phuPfsB8Hs1eM9pL4QCsIsNcadWAEBLi/iOvgSAPgOGYbtdD8BcI6xi7nO3YOTYY9B58+7FMq/Ne6/cg802E2y549fL+q80UeQH776Mn00dh3Vrl+OUb9+Asy67B9179sU1lx6MRe/MLdrNm/s0fvdfJ2PLwTvgvOn34rATL8Idv7wQHy+eXzZu3OkUxbWKxTvC5t0QTLwZVRflFVCvEypq0U8tCHp+NPNc2wI8ErN9Qg8HkoCarEf6dfcSMEYIDUB4CIUpNMSIDd5aYeiA3hi/y7a4488vF9vc/vxcHLX37ujeZfPSRCUHtBTw+Nx52GwzwcTtxpXKS7GKfi+GXMALIeCV8Mr89zHpvMuwYs1aXHvJebj1qkvQp1cPHHX+ZXj57feL4sUzL72CM384A9sNHYKbfz4d559+Er7/s+uwYNHi0t/R8GKweTeEJaz0winKymKOwYzybDBPrggTIYCSGBBG1kdihrUz975hH1eeuBC29/VfV30+82p5JCY/t0kz0F7XIs0uOCwGsIWlvA+ARdV0HBdCESY2RJETV2xw7YKfhaMnnorXXrwbGzf8C2tWLME7rz2NvSaeWpqT265n1w/xpyfn45BD+mDp2n2jr8OYlLFO8fV37+8vQp8BQzF1xjMYvf/xGLn3l3He9PvQb+B2ePi2K4p2D948DQO33hn/fsUD2GPsVzB+8hk490d3YdXyj8uuMzhGWH2UXeR1Jfg2PEk4Rdr8DbaNeaX5I4J9BP+xpRFFgtcRVx/bv+3aI/poFi+FZpkHaQ8oClrI/Ie0O2qzHvG++Y/waPB5NdhyNRhCQzGEwvSI8PorKvI5nHLAaNz719fxr015LFm1Fs+8/i5OmbCX/9sCEeT6LsEDD32GQw/qh86Fvm6/5tPMmIMpNgRDINzx/+M3t2LIlv3wyP+djmMOGofDxo3BHTN+gG0GD8RP//fOYpurrr8VO26zNe64+nIctv9YnHzUZPzvT6fhk2XLAQTCIoLiQeA0i6CXA+D3brCdSBEWTgE43g2mx4MvxMG00/B8EDbhwZbTIVwM8IsGXv6GpPuLsHDaSvM3VOqpENZnLY7LjPocjhuvrR4DWYkXReI+29DzrBbXX1+yX480C80uODwKoLuIFA99FpGdAWzm1rUp9tjvBGzauB7zZj+El2fehh69B2KH3SeV2Q3t+wwee2wV9p04FgXtFNpfknOUN6z/Au++PhOj9j8Bksshn9+EfH4TFIpdRh2Md994HgBQyOexcP5sjDng+GIIhwgwfNex6Ddwm3QXHEMWoQ1tYUxCCCFtnna1Hjl27O5Yv3ETHpnzd9z5/FxsuUUPTBy5Q5ndpj4L8dhjq3DU/rtUPeYX6zfghVfn4ZiJ+yInOWzalMemTXmoAhP22hOzXn0TAJDP5/Hy39/BUZP294WU7rX7CAzdamDV84jCmsuhxidLVJIsMisasS+rhahACGkbtDZ6AgYtwQJVnSciTwI4BcBVbvGJAB5T1fnphxK0GLkYcsZX12kSRHrlXhiF95ka3Nxu3qUHRo6dgrnP3Yrlny7E6ANPdh6mAbt/vnMn1q0rYNs9TseSNfa+4pJEetXr1ixHoZDHo7dfgUdvv6J84nCOBFq7ehnymzaiZ+8ty8bzyoL4wyXSJ4tMEk6RhGrFhKwTRlY8fjsIf2iLc25m+PesPVGZ3UmHpY7rERS9EMz3gBEaAZR7NRhl4SEUgfwNpZhD9OjaBUfuvRvueH4uFn26HCcdOAa51haUvodyvCNmvv0G1q0rYPKI8YCaeSL8nhCh3g1S8oBYsfZz5PMFzLjxbsy40Tzso0ShUMBnK1dj46ZNGNC3ty9ZpEoO/fv2KXogeLkbguEUAHynUwB+TwUVQfDRboZEFOdi83wI8VhQFX8eBp9HRKlONVBXDMMwxo0QIBzPCPWV2zwjgngns/ntKsvfEFZfCOmn2s/VUkhHuTqSlXiR9EhMPiNIPWjP65GGCw4i0gXAEQAmAeglIqcAeEpVvWOp/g3ADBG5BM4TbmsAJ1c3aHkYBZBMbAhSyqt/AhbcAAAd60lEQVQk5rO8fEjXM3LMxFNxwxVHQAsFnHbR7WW2XTuvxAsPz8UBB/bEZ18cGtJXMrEBALr22AKSy2HCkf8HYw8+zZ5TIZdDz1790NLaCatXfFI23uoVn6DvlsMiTq4oz90QNp+osmKdZZOfJH9DcD7RJ3W4NinCKcz5mbaVHIfJjaQfnlBBCGk0DVmPAKXwCe992OkTgbLkQkOgrSsQnDJhbxzzX9ejUFDc9L2vu0JBaTzZ4jM8cOsnOHD/LdBLhpXEhWCSxpgkkZ5Nzx7dkcvlcNaxh+OrX57oiAXipsDwxJOWFvTtvQU6tbbi0+UrfWIDRLB0+QoMGTQwVGzwcjdYwyhCwil8YoT3Y+RjMN8XjDKg/DhMU3gIihBxwkDQ3rOpJGFkcSw3YaQjSPhDF9LmbwgKHaFjm8JLBUdipj2hIk7kqMcGLq3reiOOxKz3hra9bqBJZTRccFDVLwD80f2x1a8EcHaWYwr8QgMQniAS8G82TTPzJIqwDXRw07vTHodgz/1ORJduvTBo6IjAmMDQ/rMw7aGVOOeCfbAx38M/7wqEBu995827Yfvd9seH77+GYTuO8oVL+PppacG2O+2FOc/fjaPPmO7GfALvzfsbln28EH23HGa9vjCxwSa+5AJHWZqvbbkWEiWSRHmfZbYJbKLapaFSQSFRzooKPSDiEkZmnb8hMplnO9jwM2Fk+6Xtx32SLGjEegQCSKvhUFGtyGCUWYUGr1xymLTnzjhuvy9hi25dseuwrQJjArkBi/Dgg6twyTl7+sQEM4+EtrQY4oK3sTfEhlyprFvXrhi3x654Y8FCzNh5e0hLa1HAML0jci2CL43YCQ8+/Wdccu43ILkWQARz3ngLH3y0BEMGDfSJDR5hYoP/t+Pd4BMXTIHBfV0whQi12/jqNfo4zGDOB5/HgwY36cnyN/j6cPM3JBUlbN4N3skWpXLntylYFEI298FNZZTHRFoviEo22zYBIMuNby1PqCAdm/Z6rzRccGgGwsSGsG/ITa8GoHwjG9ZOBGhpbcHpF91ujOW3X/3RnViyZCN23eskfLzea+fv8K25j+Oj90txjCJAl269sMuoQ6zzOfGcq/Hz7xyAay49DOMP/yZ69RmEtauW4YMFL0MLeRz/rZ8AAI4+43JcffGhuO6yKZhw5NlYs2op7r9xGnr1GehzLJz/2kz85DuT8K1Lfo/xk08ru+ZKQyls2L0iEogLFXg32MZrFu+GNB4QbXVTn0WiyyztSQejHbswkraAz+XSKHbXF76y8iMuY70ZfAKFoeK3tKAFwM3f+0bJzgyVQA6zF7+OJUs24sjR+/n7NY7ffHL2Gxj43mJXAHDKenbvhkl771EWZqGSw1UXfhOTz70UU749HacedSgG9uuLZavW4LX57yGfL2D6BWdCJYdLz/k6jj3vInxt6g9x+glHY9mKVZjxq99jQL++PrFh1uxXcOI3zsHVV07DccdOiRUbbN4N5lGYYaIC4E8WCfi9GwqefcC7wRMhgmKAIyiU6kpl8OEJC15d0GPA9tFlejcUxytEt/XPzeIlEKJkhIVTxLUPSxhZEj88b4focIqsQjh8/QTEirp7BDRRor9mmkuHoB2vRzq84GCKDWYIhW3DWlB7CAUQscEV3y93HLtpS24jXnp+JkaP7orP5ZgyocF7e9evzy9rO2jYCEy7/k1fmTfOsB1G4QfXzcbDt16OO395Ab74fBW69+qPYTuMwoQjzyn2PWL0wfjWD27DgzdPx3XTjsWArbbHyf/+P3jq7mt846sqCvl8UUEOD7Vw52FuzK2eD25ZhaEUabwbfB4ZNdqI1sO7oVKqDeHgpr3+MOyGkA6A43IZ7cUAVObJEBQpcoFy12OgzINCckCL623R5V948KkPMHpUN2zVeTdA/d4KXnjCd6+9ueySdtl2a8wZ+9++MAsvBGKPXXbAczf+N6763R24+Be/xeq169Cvdy/svvP2+PrxR0FzzrL0wH3H4LdXXYYZv/4DTp/6Q2w7dAiuuGQqbrjtLt8cFE6SybyR1yG12BAUD4K/A2WAPXeDt6z0cjfEeTd4/ZhlQYHCdxJGwS9OmN4NtvwK5p6xUAjfsCf1bgjGmfv6iBAuorwg4sgilKA4rjuvpPkbKu6/7DqzGSfub9CM34zXc/PcjNdPSkhHzBo7ZPgYPX/GSwCcf8A2oUFyEvoPRSI8IEJDKywiQ9B2aP9ZuPjUg3HMCTtiyLjXS20ThE5EjRXlgRHVl2d31YUTAAF+cM1zro2W2QTbViM22EIpgt4NNrHB5t0QJjjkLOPZPBbSeDf4RQ2E1tna2mzixrDVN1M4RbV9V2OflVDSiHAKCg4lth8+fK6qjqlF3z377KJ7HXpT5v0+8//2qdmcSfth1LaDddaPz7WKC0BCgQEIeDJE2NpEhmC55NAy9DWMnPIbnHz0Drj40IvKEkICQDAppClIeB4NXp0nOHh9FG28jXsgOWQxZMPMwyCCKWecCwVw782/i8zZECc2FNync0ENAcIIpShozicwFDxb9epdAaEgPu+GvJZeF7x6Vwzw2hUKjneDKpD3NvaGnVeWz5d7N5jhFMV+A4KDKWR4goOZu0FVfWKFKVSYuRs8saG0QdeSQFLQUr2Re6FgiBHOmGr0qcU6Z15+O19fqr4NZHB+pm3wtRlOoYF+/ddjsUvg3RAsC4ZvJBUcwvYYYV4FWQgOFYeCtKHjQeslOMx6eEKbWo80y1qkw3s4NBPb9H8Rb7+9G2YvOBMvvdvo2aSn0iSRaewS9dWAb+Xb4yaR3g2EENKxyPVbhLff3g0b3jgEhU/j7WuBiuWbmiz7txx3aTsWM33/Scss8+Bjt260Vxd2QpqJDi84BJNDSmhshEPQu6ESj4Ywey90Ylj/FwEAi5aOS+Q9UWvPhmK5LRwhxrPBsbF5IZSPkzSUIujd4J+/3yPB5jGR9OjOuG//k4oKWeVuqNS7odlolHcDIUlQZOuuS0hFiBTDGCK9GTxboDxkwmYflXzS9GoIlokAuY3I9f6n8237ym2cEAzXxu/pUJpPMFeD11eYZwMAw3Oh1L54+kTAs6F4GoWRmLES74aCe9JpwfNyCIRSFL0bLKEU+cCJFZ53g6+NUeZ5N/jCJIxwCs+7wQytKHorBD6K0ng3eJjeDaX+yr0bgthOpgh6N5Rs/d4NwXZBO29eNrtg/oaifcqTJ6zeCTVWcmrl3dAImmkuHYX2vB7p8IKDJx4EhYbgh4GZs6HFIiZUIjA45f6KXl0/QK9uH+JfG3ph2aoRhl18f1FCQyXhGGEiwg+uea7qMAp/vVFmCY1IKjZECQlRNlHhGOaGNkZ7qiqUIq59JTZBsgynSJRfok5eHY0SJxhOQQipFSKAtLTYhQUgWlwwy8JCJnztLMJDoJ2KINf3A0hLHoXVWwL5nlCbmBEQGZy2/lAILzzD6xemiOC2iwuhAADz6Mt7bv4dVHIoJA2jMEMmQvI2qAry8IdQmGKDWWaKDWb4RN4QF7zcDcWNfYjY4JSVcj6YQoJ5CoVX52GKDTacfvxig5e7wSY2+MMevDEUpthQ7NsIiQiWBV8nPZ3C138gWaStrux6Q8IpokiSvyFNOEWtaEQ4RbW0x3AKkp4OKzgE8zWI2F3YzJMoOsX8tZKKCx7mmmGbAY53w+LP9gGkxefUF+fJYLWJEBaSej4ENz2VeDWY5aGiRkqxodK8Db5rSCE2JPFuiBY9Emz4E4gN1r5jcjdUQxZiQ5beDR0Fig11RrlYIY1EgNZOgaIEwgJQubhgvjfzLfjqc8j1+wAAkF8xHOolmHTbRHoyBMYL82bwxjW9Gfw2JY8Gx9YQEyxCg9m2mJ9BUczZ4Hk1AOE5G5KKDU4eB8R4NsBXZ3ovBMUGf74Fv9hgejeU8i+U/lf7hAojd0OSRJGVig2mwGHmbiiV+T0UzJwLlXg3hJE2d4P52nr6hk/QsLdPPMeEG+ysvRv4/GpHtOP1SIcUHJb+cz5+O+0gAPBt7MM+KgSBzWvMN99hfUTxu199AQC44bqZuP/hCRW1BcLFjsTziWgfWiUJbLx6n4Ftc52+/4BvSmiD2DlGtI1urwlsIgcOn0vVXaXfvMZfS/02xpX/Xdvwpj3VTUTSo3X/5ocQj3f+uRSHTvtVeYWUvTDq4tzvgvXi+2UZxNfujgc7YzByOP+yZ/D3N58JbxM2x6JnQnidU2//5qK8nUADY9n6VhHjo7/MP9D33hxbIb5Hhtm3V2zmWVDjhb8fr8wY0+xXDbuAra8uws7+WsvKg+1Lv7S83mZjzMnap60f399Q/QOoUW6dowZNrd8ChkdEaLyNasAS9smHNw0d0/7W0ijFo8baT5V9xg9aXad1faK2q4Qn7Xc90iEFB6D8uWv73yvufyrZzFe8VxCgc2fF3mPyAIA/v9iSqI80yRUzERmMysrnaf9HFCU2xIsElr4pNrhQbGhzUGwgMYjIIFVd0uh5kAxJk2nZWh/14IxwezQYMiyHwVvnsHKF4q15wTYhnUcJDIGxypIy+tqa7U2RoVQeHKPocaFeZbTQYL4vzsW3+Q3MJ0RUKBMwyjbkklhESGQX2j5ebAiKBGVPyKCNMSdrn0GxwbbRjhIb/MUdR2xIAcWGuMHa8Hqvg9EhBYcBg3fCef/5rK/MGk4hjkdja2uwPHwhEBb3Hx5uAWzdbxY23/xCLF21C8649JZUIRM2m8rCLDTUNkn4hFkXF0IRZpMmZ0PSJJFZhlKEldfqCMykfcXlbrC1S5u7IVECzIg+KhFVmLuBbD98eE37bwvJsURkHIDvAxgCYFSMbXcAVwJYAKA7gK0BXKyqnyepJ/VjxyFb4smrpjpvokIjwuotIRZlYRLG6/IQCvG1bdlqNoCn0T2/Gx657jifjTUBpNm3EeJgSwTpvfbbxYdPlJX7frv1gWMvo/I1mEdfem0LmkOh2I89Z4OTqyEXCJUo5XDw8jF49cXjLQvleRtUneMvbXkbbIki80ZIRdgxmGYohReGkdURmECyUIpSW5tt8qMwqz0Gs+x1cW6VH4Vp+8aZR2FmN151Y9X/2T0r4IWeNY1Yj1SyJki7fuiQggNQ2lja/l2YySFbW/279KhEglFfSEQlexzaz8vfMM6XNDpq3CRfiMQnjLRvtO22Zr924SBLoQGoLmdDNWJDVM6G0lgBgQZ+4gSCtEJDmF09E0VSbKgNFBtIGCLSA8B7cJ7ZSc4KvAvAX1T1Orf95QCuB3BKwnpSL0ScHA42McGr9wgKCqat0SZOVLDZeALAZr0XAgA2rtoJ2tIasDHEBkMICNbbBAazXOHP4+DLxRDI0WD24S/zRAC7yAC4ooCbDLKAUpknMHh9FZM/RggNhWI7v9Bg5mzwRIC8LzFk6bUnPJg5HYJiQ97It5DP+23CTqSISxJZ2lgjkFvBaR+WswGAXSxoo2KDSejGP4XYkJRGiA2V0hbEd1ITKlkTpFo/dFjBIUjxeeyJDS1Ap9aSS1wq70YkO71ia1dw+HD5OOsJGGnEBZtNUi8Ge/+ViQyAXQjwj1nep82jwbSNEzKSCg1m+2q8Gpxx7P0H21ViY7MLs03i2ZCkn6jypP3G9pFQEMhKOEhDI8QG0kA0fCHYLKjqGgBrRORTAFtF2YrIeACHA/iuUXwLgPki8mMA/aPqVXV+ppMn0YgAnTYDECIkBF7bxYZ4Lwe1iBhliR5zebT0XAgA2LR2J2iLk8wy6Lng9R9sb0v+6Lwv92Aovg7xYjD7MU+dKPZneC4UbSO8GWxJIZN4NBQgKBRKYxRFA4vQUEwsWbCfRuEJCkBJXIjyaogTG4qJHw2xwUwQ6QkCYQkiTa+GKKHBfN9IsSHqNIokYoPtZIqoRJFpPBucsngb2/i+cTJ6JlXybMtCbGjv3g01pwHrkbg1g7kmqMQ2SIcUHOI8CDp1ErS2OB+8YYIBEF0XKkAEynt0+RC9ui7G+o09sHztiNiNv60PuyARLi7Y2iQVGILvwzbrpl352BYhIkZoMPvJSmgIm3+Ybfk49nJbO5tNtXa2EynSejbUWmhIUl+pXVbt/H005gFG74bGodD2tnCZCGCDqr7lFajqAhHZAGAygJ4x9RQc6ohCUGh1BIckR2PaBIdIMcHsKyyswp1HS893IblN2LRuCPLaF9piFybKvBbcOtNzwWZXLA8RFcw2lQgMxfcpRAavrXnEJRAeOhElNNg9GaK9GhxxwhmzUNCi0AC43g6G0ODZBEMoqhEazD6d+nihwXtf7hVh84JILzZU49Vg9uP0XSi3T9hPcMwou3qIDc14BGa9x2xnz+wiDVqPxK0Z5qe09dEhBYdmYqvefwMALFmxF1T5v4MQQurJ56veeWLWwxP61aDrzUVkjvH+elW9vgbjBBkMYIWlfDmAbQB0iaknHZTWHu8CADat2bHBMyGEkI5HjdYjcWuRuDWDSSW2PjrkDnfxgrnLph6dW5TQvBeAVRnbWuzmAvhZkn6i6voBWJZg/Gagkr9ro8dI20+l7ZLYx9mkree9U7tx0vTTiHsnzqaRnz3DatWxqk6uVd9RSLxbyyeqOjBF1+sBbLSU5wBIgnpSR1555x/Luk34KtcjjYXrkXS2XI/w3klr35bvnfa2HqlkTZB+/aBushj+2H/gKEGZ2sbZRdXH1M1p9N+rFn/XRo+Rtp9K2yWxr+beiarnvdNc908j7p04m/by2dMsPwC2iPnpaWlzI4BXY/r9HoA1lvL1AKbG1Tf678KfyP+3XI80+O/a6DHqsR6px70TVc97p+3eO0ntee80z08la4Jq1g9Jsl13dB6qgW2cXVR9JfNpZupxHVmNkbafStslsa/m3kk6RrNTr2to5P3TiHsnzqY93DtNg6qujPlZnbLrRwF0F5GhXoGI7AxgM7curp40L1yP1AauR9LZcj3CeyetPe+d5qGSNUHq9YO4ygRpB4jIHFUd0+h5kLYH7x1SDbx/6oOI3AJgpKruGSi/AEBeVX/pvn8CwHOqepX7/kcAxqrql5PUE1It/EwgaeG9Q9LCeycdUWuCStcXYXTIHA7tmHokJCPtE947pBp4/9QQEekC4AgAkwD0EpFTADylqp+6JgcBKAD4pfv+3wDMEJFL4MRVbg3gZKPLuHpCqoWfCSQtvHdIWnjvpCNqTVDp+sIKPRwIIYQQQgghhBCSOczhQAipCBHpIyLDGz0PQgghhHRcuB4hpG1AwYEQkhgR2QnAnwBMbPRcCCGEENIx4XqEkLYDBYcOhIh0EZHfisgrIvK6iOwZ34qQEqo6H8BrjZ4HaX7EYZqInCAiPxKREY2eEyGkOeB6hFQL1yMkKVyPNB4KDk2OiAzKsLujAFykql8CcB+AyzPsmzQhGd8/pAOT4l76GoDuqvpHANcAuCn7WRFC6gXXI6QauB4hWcH1SNuDp1Q0KSIyDsD3AQwBMCpQ1x3AlQAWAOgOJ0Poxar6eUy396nqBvf1SwC2ynTSpGmo0f1DOiBV3EtfAXAvAKjqKhHpLCLbq+qCes6fEFIdXI+QauB6hGQF1yNtF3o4NCEi0gPAe3AEIdv/o7sAfKaq16nqTwAsQ4KjYIyHOwAcAOA/M5guaTKquX9EZC8R+avtp24XQJqGKj+L+gBYbdiuAjCwhtMlhGQM1yOkGrgeIVnB9Ujbhh4OTYiqrgGwRkQ+RUD1F5HxAA4H8F2j+BYA80XkxwB6Arg2pN+xbh+TANyjqguznz1pNNXcP6o6G8DYuk2WNDVVfhZ9DKCHUdcTwJLazpgQkiVcj5Bq4HqEZAXXI20bCg5tj4kANqjqW16Bqi4QkQ0AJqvqNYj4gBaRAwAsVdXXRWRzAH1V9aOaz5o0C5H3D4D5UY1FZAcAuwMoiMgDqrq0prMlzUzcvfQwgNEA/uh+M1FQ1fcaM1VCSA3geoRUA9cjJCu4HmlyKDi0PQYDWGEpXw5gm6iGInIMgF8CWC4iACAIxECRdk/q+wcAVPVd8J4hDpH3kqpeIyIjROQkOIvC0+o6O0JIreF6hFQD1yMkK7geaXIoOLQ91gPYaCnPwXlgh6Kq98HJBk06LqnvH0ICxN5LqjrNLbuzXpMihNQNrkdINXA9QrKC65Emh0kj2x6LAWxhKe8DYFGd50LaHrx/SFbwXiKkY8PPAFINvH9IVvBeanIoOLQ9HgXQXUSGegUisjOAzdw6QqLg/UOygvcSIR0bfgaQauD9Q7KC91KTQ8GhuWkJFqjqPABPAjjFKD4RwGOqGplgh3Q4eP+QrOC9REjHhp8BpBp4/5Cs4L3UBhFVbfQcSAAR6QLgCADXAOgF4CwAT6nqp279FgBmAHgfTmzScAAXqerKxsyYNBO8f0hW8F4ipGPDzwBSDbx/SFbwXmrbUHAghBBCCCGEEEJI5jCkghBCCCGEEEIIIZlDwYEQQgghhBBCCCGZQ8GBEEIIIYQQQgghmUPBgRBCCCGEEEIIIZlDwYEQQgghhBBCCCGZQ8GBEEIIIYQQQgghmUPBgRBCCCGEEEIIIZlDwYEQQgghhBBCCCGZQ8GBEEIIIYQQQgghmUPBgZCUiMguIqIicmjK9je67VVEnjPKp7tlrQn7GSQiBREZLyJnGH3uaLE90Kg/OM28E8znh8YYH9ZiDEIIIYQ4cD0SOh+uRwhpAig4EJKe0e7vOVX08TGAfQGcV0UfRwNYCuBFo2wNgFMttqe7dbXkD3Cu6dEaj0MIIYQQrkfC4HqEkCaAggMh6RkN4B+quryKPtar6l9VdV4VfUwB8JCqFoyyewF8TUTEKxCRLgCOB3BPFWPFoqofqepf4Sw6CCGEEFJbuB6xwPUIIc0BBQdC0jMKxrcJItJTRO4WkY9F5MAM+t9WRB4RkbUiskhEfiQivn+zItITwEQA9wfa3gJgGIDxRtkxcP7Nlz3gDbfJkSLyrIisE5ElIvJjy5h7iMh9IvKZiHwhIvNF5NIMrpcQQgghlcP1CNcjhDQtFBwISYGr1H8J7gNeREa6rwcDGK2qMzMY5j4Az8D5xuB+AJfDcUE0+TKADQCeDpQvAvA8/G6Mp7l9ro0Y8363rykAbgdwGYAfeZUisjeAvwAYDmAqgK8AuBrAkOSXRQghhJAs4HqE6xFCmp1ESWAIIWXsCKAHgDkichqAXwO4CcC3VXVDRmP8QlX/4L5+WkQOAvBVODGJHlMAPKGq/7K0vxnAL0TkAgC9ARwM4PCYMW9Q1Z+4r590v7H4roj8j6quBPBzAJ8BGKuq61y7Zyq+MkIIIYRkAdcjXI8Q0tTQw4GQdIxyf58N4DcAzlXV8zJ8uAPAI4H3bwIY6r0Rkc3gPLCD7osefwTQGcCRAE6BkxDqTzFj3hV4fyeA7gB2E5GuAPYDcJvxcCeEEEJI4+B6hBDS1NDDgZB0jAawEsBxAK5V1ZtrMEYw+dN6AJsb7w8C0BXAw7bGqrpGRO6H48a4DZwHc8HI22Tjk5D3gwH8A45IyaOlCCGEkOaA6xFCSFNDDwdC0jEawBMALgBwgYgc24A5TAEw03UtDONmOHGNI93XcWwZ8v4jACsAFOA87AkhhBDSeLgeIYQ0NRQcCKkQI0HTq6r6KwDXAbhFRPaq8xyOQrj7osdTcNwSf6Oqf0/Q9YmB9yfBSer0huu2+AKc4626VDhlQgghhGQI1yNcjxDSFmBIBSGVMxxALwCvuu+/45Y9KCL7qOoHdZjDPgAGIeYBr6p5OImdkvIt99ip2QAOA3AmgOmqusqt/x6AmQD+IiK/gOPOuB2APVX1/MougRBCCCFVwPUI1yOEND30cCCkcka7v18Fig/Rk+DEFz7iZlKuNVMAzFXVrOMXjwZwCIAHAXwNwJUArvAqVXU2nERNiwFcC+BRABeBcZSEEEJIveF6hOsRQpoeUdVGz4GQDomI3AhgAoDtAai7UEja9m0At6rqlRnNZTqAaQA6qeqmKvsSAC0Afg9gkqryTGxCCCGkSeF6hBBSSxhSQUhjGQZgIxy3wAlJG6nqzrWaUAb8B0rfQnzUyIkQQgghJBFcjxBCagIFB0Iax3Q4CZ4AYE0D55E1vwfwuPs6y3PACSGEEJI908H1CCGkRjCkghBCCCGEEEIIIZnDpJGEEEIIIYQQQgjJHAoOhBBCCCGEEEIIyRwKDoQQQgghhBBCCMkcCg6EEEIIIYQQQgjJHAoOhBBCCCGEEEIIyRwKDoQQQgghhBBCCMkcCg6EEEIIIYQQQgjJHAoOhBBCCCGEEEIIyZz/D+DCISqHLLfAAAAAAElFTkSuQmCC\n", + "text/plain": [ + "

R5Xb{tFbe%@JiE$Ur18 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