source: Sophya/trunk/Cosmo/SimLSS/cmvchkwhu.cc@ 3315

Last change on this file since 3315 was 3315, checked in by cmv, 18 years ago

add code fct transfert de W.Hu + prog de comparaison avec pkspectrum.cc cmv 24/08/2007

File size: 5.2 KB
Line 
1// Check cmv / Wayne Hu coding of the transfert functions
2#include "sopnamsp.h"
3#include "machdefs.h"
4#include <iostream>
5#include <stdlib.h>
6#include <stdio.h>
7#include <string.h>
8#include <math.h>
9#include <unistd.h>
10#include "ntuple.h"
11
12#include "constcosmo.h"
13#include "pkspectrum.h"
14#include "hu_tf_fit.h"
15#include "hu_power.h"
16
17int main(int narg,char *arg[])
18{
19 double k1 = 1e-6, k2 = 10.; int_4 npt = 10000;
20 double h100 = 0.71, Om0 = 0.267804, Ob0 = 0.0444356, tcmb = T_CMB_Par;
21 // Modele MDM (hu_power.c) Eisenstein & Hu Apj 511 p5-15, 1999 (ou astro-ph/9710252)
22 double Ohdm = 0.0, Ol0 = 0.7, redshift=0.;
23 int degen_hdm = 0;
24
25 cout<<"k1="<<k1<<" k2="<<k2<<" npt="<<npt<<endl;
26 cout<<"h100="<<h100<<" Om0="<<Om0<<" Ob0="<<Ob0<<" Tcmb="<<tcmb<<endl;
27 cout<<"Om0*h^2="<<Om0*h100*h100<<" Ob0*h^2="<<Ob0*h100*h100<<endl;
28 double fbaryon = Ob0/Om0;
29 cout<<"fbaryon="<<fbaryon<<endl;
30
31 cout<<endl<<"TFset_parameters"<<endl;
32 TFset_parameters(Om0*h100*h100,fbaryon,tcmb);
33 TFprint_parameters();
34 double soundfithu = TFsound_horizon_fit(Om0,fbaryon,h100)/h100;
35 cout<<"TFsound_horizon_fit = "<<soundfithu<<" Mpc"<<endl;
36
37 cout<<endl<<"TransfertEisenstein with baryon"<<endl;
38 TransfertEisenstein Tfull(h100,Om0-Ob0,Ob0,tcmb,false,1);
39
40 cout<<endl<<"TransfertEisenstein with baryon without oscillation approx.2"<<endl;
41 TransfertEisenstein Tnowig(h100,Om0-Ob0,Ob0,tcmb,false,1);
42 Tnowig.SetNoOscEnv(2);
43
44 cout<<endl<<"TransfertEisenstein without baryon"<<endl;
45 TransfertEisenstein Tnob(h100,Om0,0.,tcmb,true,1);
46
47 cout<<endl<<"TFmdm_set_cosm"<<endl;
48 int rcmdm = TFmdm_set_cosm(Om0,Ob0,Ohdm,degen_hdm,Ol0,h100,redshift);
49 cout<<" rc="<<rcmdm<<endl;
50
51 cout<<endl<<"Compare kpeak"<<endl;
52 double kpeak = Tfull.KPeak();
53 double kpeakhu = TFk_peak(Om0,fbaryon,h100)*h100;
54 cout<<"kpeak = "<<kpeak<<" "<<kpeakhu<<" Mpc^-1 -> diff "<<kpeak-kpeakhu<<endl;
55
56 const int n = 12;
57 char *vname[n] = {"k","tf","tfnw","tfnb","tfc","tfb"
58 ,"hutf","hutfnw","hutfnb","hutfc","hutfb"
59 ,"hutfmdm"};
60 NTuple nt(n,vname);
61 double xnt[n];
62
63 double kmax[5]={0,0,0,0,0};
64 double tmax[5]={0.,0.,0.,0.,0.};
65 double lnk1 = log10(k1), lnk2=log10(k2), dlnk=(lnk2-lnk1)/npt;
66 for(double lnk=lnk1;lnk<lnk2+dlnk/2.;lnk+=dlnk) {
67 double k = pow(10.,lnk);
68 //if(fabs(lnk-log10(0.0186209))>1e-5) continue;
69 Tfull.SetReturnPart(0); double tf = Tfull(k);
70 double tfnw = Tnowig(k);
71 double tfnb = Tnob(k);
72 Tfull.SetReturnPart(1); double tfc = Tfull(k);
73 Tfull.SetReturnPart(2); double tfb = Tfull(k);
74 double hutfc, hutfb;
75 double hutf = TFfit_onek(k,&hutfb,&hutfc);
76 double hutfnw = TFnowiggles(Om0,fbaryon,h100,tcmb,k/h100);
77 double hutfnb = TFzerobaryon(Om0,h100,tcmb,k/h100);
78 double hutfmdm = TFmdm_onek_mpc(k);
79
80
81 if(fabs(tf-hutf)>tmax[0]) {kmax[0]=k; tmax[0]=fabs(tf-hutf);}
82 if(fabs(tfnw-hutfnw)>tmax[1]) {kmax[1]=k; tmax[1]=fabs(tfnw-hutfnw);}
83 if(fabs(tfnb-hutfnb)>tmax[2]) {kmax[2]=k; tmax[2]=fabs(tfnb-hutfnb);}
84 if(fabs(tfc-hutfc)>tmax[3]) {kmax[3]=k; tmax[3]=fabs(tfc-hutfc);}
85 if(fabs(tfb-hutfb)>tmax[4]) {kmax[4]=k; tmax[4]=fabs(tfb-hutfb);}
86
87 xnt[0]=k;
88 xnt[1]=tf; xnt[2]=tfnw; xnt[3]=tfnb; xnt[4]=tfc; xnt[5]=tfb;
89 xnt[6]=hutf; xnt[7]=hutfnw; xnt[8]=hutfnb; xnt[9]=hutfc; xnt[10]=hutfb;
90 xnt[11] = hutfmdm;
91 nt.Fill(xnt);
92 }
93
94 cout<<"Maximum difference for:"<<endl;
95 cout<<"tf: "<<tmax[0]<<" for k="<<kmax[0]<<endl;
96 cout<<"tfnw: "<<tmax[1]<<" for k="<<kmax[1]<<endl;
97 cout<<"tfnb: "<<tmax[2]<<" for k="<<kmax[2]<<endl;
98 cout<<"tfc: "<<tmax[3]<<" for k="<<kmax[3]<<endl;
99 cout<<"tfb: "<<tmax[4]<<" for k="<<kmax[4]<<endl;
100
101 cout<<">>>> Ecriture"<<endl;
102 string tag = "cmvchkwhu.ppf";
103 POutPersist pos(tag);
104 tag = "nt"; pos.PutObject(nt,tag);
105
106 return 0;
107}
108
109/*
110openppf cmvchkwhu.ppf
111
112set k k
113set k log10(k)
114
115######################
116zone 3 1
117n/plot nt.tf%$k ! ! "nsta connectpoints"
118n/plot nt.hutf%$k ! ! "nsta connectpoints red same"
119n/plot nt.tfc%$k ! ! "nsta connectpoints"
120n/plot nt.hutfc%$k ! ! "nsta connectpoints red same"
121n/plot nt.tfb%$k ! ! "nsta connectpoints"
122n/plot nt.hutfb%$k ! ! "nsta connectpoints red same"
123zone 2 1
124n/plot nt.tfnw%$k ! ! "nsta connectpoints"
125n/plot nt.hutfnw%$k ! ! "nsta connectpoints red same"
126n/plot nt.tfnb%$k ! ! "nsta connectpoints"
127n/plot nt.hutfnb%$k ! ! "nsta connectpoints red same"
128
129######################
130zone 3 1
131n/plot nt.tf-hutf%$k ! ! "nsta connectpoints"
132n/plot nt.tfc-hutfc%$k ! ! "nsta connectpoints"
133n/plot nt.tfb-hutfb%$k ! ! "nsta connectpoints"
134zone 2 1
135n/plot nt.tfnw-hutfnw%$k ! ! "nsta connectpoints"
136n/plot nt.tfnb-hutfnb%$k ! ! "nsta connectpoints"
137
138zone 3 1
139n/plot nt.(tf-hutf)/hutf%$k ! ! "nsta connectpoints"
140n/plot nt.(tfc-hutfc)/hutfc%$k ! ! "nsta connectpoints"
141n/plot nt.(tfb-hutfb)/hutfb%$k ! ! "nsta connectpoints"
142zone 2 1
143n/plot nt.(tfnw-hutfnw)/hutfnw%$k ! ! "nsta connectpoints"
144n/plot nt.(tfnb-hutfnb)/hutfnb%$k ! ! "nsta connectpoints"
145
146######################
147zone
148n/plot nt.tf%$k ! ! "nsta connectpoints"
149n/plot nt.tfnw%$k ! ! "nsta connectpoints red same"
150n/plot nt.tfnb%$k ! ! "nsta connectpoints blue same"
151n/plot nt.hutfmdm%$k ! ! "nsta connectpoints green same"
152
153zone
154n/plot nt.tf/tfnw%$k tfnw>0. ! "nsta connectpoints"
155n/plot nt.hutf/hutfnw%$k hutfnw>0. ! "nsta connectpoints same blue"
156addline -1000 1 1000 1 "red"
157*/
Note: See TracBrowser for help on using the repository browser.