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

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

petis changements cmv 21/03/2007

File size: 6.6 KB
Line 
1#include "sopnamsp.h"
2#include "machdefs.h"
3#include <iostream>
4#include <stdlib.h>
5#include <stdio.h>
6#include <string.h>
7#include <math.h>
8#include <unistd.h>
9#include "timing.h"
10#include "histos.h"
11#include "tvector.h"
12#include "ntuple.h"
13#include "perandom.h"
14
15#include "constcosmo.h"
16#include "pkspectrum.h"
17#include "geneutils.h"
18
19void usage(void);
20void usage(void) {
21 cout<<"cmvtstpk [options] z_redshift"<<endl
22 <<" -H h100 -B Ob0 -M Om0 -L Ol0,w0"<<endl
23 <<" -k npt,lkmin,lkmax : les valeurs sont en log10"<<endl
24 <<" -s scale : on multiplie pkz par scale"<<endl
25 <<" -w : write spectra on ASCII file"<<endl;
26}
27
28int main(int narg,char *arg[])
29{
30 double Ob0 = 0.0444356;
31 // -- WMAP
32 double h100=0.71, Om0=0.267804, Ol0=0.73,w0=-1.;
33 // -- ouvert matter only
34 //double h100=0.71, Om0=0.3, Ol0=0.,w0=-1.;
35 // -- plat matter only
36 //double h100=0.71, Om0=1., Ol0=0.,w0=-1.;
37
38
39 double ns = 1., as = 1.;
40
41 int npt = 10000;
42 double lkmin = -3., lkmax=2.;
43 double scale = 1.;
44 bool wrascii = false;
45
46 char c;
47 while((c = getopt(narg,arg,"hwk:s:H:M:B:L:")) != -1) {
48 switch (c) {
49 case 'H' :
50 sscanf(optarg,"%lf",&h100);
51 break;
52 case 'M' :
53 sscanf(optarg,"%lf",&Om0);
54 break;
55 case 'B' :
56 sscanf(optarg,"%lf",&Ob0);
57 break;
58 case 'L' :
59 sscanf(optarg,"%lf,%lf",&Ol0,&w0);
60 break;
61 case 'k' :
62 sscanf(optarg,"%d,%lf,%lf",&npt,&lkmin,&lkmax);
63 if(npt<=0) npt=1000;
64 if(lkmax<lkmin) {lkmin=-4.; lkmax=2.;}
65 break;
66 case 's' :
67 sscanf(optarg,"%lf",&scale);
68 break;
69 case 'w' :
70 wrascii = true;
71 break;
72 case 'h' :
73 default :
74 usage(); return -1;
75 }
76 }
77 double dlk=(lkmax-lkmin)/npt;
78
79 // Fill z value into list
80 double zval = 0.;
81 if(optind<narg) zval = atof(arg[optind]);
82
83 cout<<"h100="<<h100<<" Om0="<<Om0<<" Ob0="<<Ob0<<" Ol0="<<Ol0<<" w0="<<w0<<endl;
84 cout<<"lkmin="<<lkmin<<" lkmax="<<lkmax<<" npt="<<npt<<" dlk="<<dlk<<endl;
85 cout<<"scale="<<scale<<endl;
86 cout<<"zval="<<zval<<endl;
87
88 //--------------------------
89 InitialSpectrum pkini(ns,as);
90
91 TransfertEisenstein tf(h100,Om0-Ob0,Ob0,T_CMB_Par,false);
92 cout<<"kpeak="<<tf.KPeak()<<endl;
93 TransfertEisenstein tfnosc2(tf); tfnosc2.SetNoOscEnv(2);
94 TransfertEisenstein tfnosc1(tf); tfnosc1.SetNoOscEnv(1);
95 TransfertEisenstein tfnob(h100,Om0,0.,T_CMB_Par,true);
96
97 GrowthFactor d1(Om0,Ol0);
98 cout<<"GrowthFactor: "<<d1(zval)<<endl;
99
100 PkSpectrum0 pk0(pkini,tf);
101 PkSpectrum0 pk0nosc2(pkini,tfnosc2);
102 PkSpectrum0 pk0nosc1(pkini,tfnosc1);
103 PkSpectrum0 pk0nob(pkini,tfnob);
104
105 PkSpectrumZ pkz(pk0,d1,zval);
106 PkSpectrumZ pkznosc2(pk0nosc2,d1,zval);
107 PkSpectrumZ pkznosc1(pk0nosc1,d1,zval);
108 PkSpectrumZ pkznob(pk0nob,d1,zval);
109
110 //--------------------------
111 Histo hd1(0.,20.,10000); hd1.ReCenterBin();
112 FuncToHisto(d1,hd1,false);
113
114 Histo hpkz(lkmin,lkmax,npt); hpkz.ReCenterBin();
115 FuncToHisto(pkz,hpkz,true);
116 TVector<r_8> vpkz(npt);
117 FuncToVec(pkz,vpkz,lkmin,lkmax,true);
118
119 FunRan talea(hpkz,true);
120 Histo halea(hpkz); halea.Zero();
121 int nalea = 100000;
122 for(int i=0;i<nalea;i++) halea.Add(talea.Random());
123 halea *= hpkz.Sum()/halea.Sum();
124
125 //--------------------------
126 const int n = 14;
127 char *vname[n] = {
128 "k","pkini",
129 "tf","pk0","pk",
130 "tfnosc2","pk0nosc2","pknosc2",
131 "tfnosc1","pk0nosc1","pknosc1",
132 "tfnob","pk0nob","pknob"
133 };
134 NTuple nt(n,vname);
135 double xnt[n];
136
137 for(double lk=lkmin;lk<lkmax+dlk/2.;lk+=dlk) {
138 double k = pow(10.,lk);
139 xnt[0] = k;
140 xnt[1] = pkini(k);
141 xnt[2] = tf(k);
142 xnt[3] = pk0(k);
143 xnt[4] = pkz(k,zval);
144 xnt[5] = tfnosc2(k);
145 xnt[6] = pk0nosc2(k);
146 xnt[7] = pkznosc2(k,zval);
147 xnt[8] = tfnosc1(k);
148 xnt[9] = pk0nosc1(k);
149 xnt[10] = pkznosc1(k,zval);
150 xnt[11] = tfnob(k);
151 xnt[12] = pk0nob(k);
152 xnt[13] = pkznob(k,zval);
153 nt.Fill(xnt);
154 }
155
156 //--------------------------
157 if(wrascii) {
158 cout<<">>>> ASCII"<<endl;
159 FILE * fdata = fopen("cmvtstpk.data","w");
160 fprintf(fdata,"# z= %g : k(Mpc^-1) pkini, tf pk0 pkz, tfnosc2 pk0nosc2 pkznosc2, ",zval);
161 fprintf(fdata,"tfnosc1 pk0nosc1 pkznosc1, tfnob pk0nob pkznob\n");
162 for(double lk=lkmin;lk<lkmax+dlk/2.;lk+=dlk) {
163 double k = pow(10.,lk);
164 fprintf(fdata,"%e %e %e %e %e %e %e %e %e %e %e %e %e %e\n",
165 k,pkini(k),
166 tf(k),pk0(k),scale*pkz(k,zval),
167 tfnosc2(k),pk0nosc2(k),scale*pkznosc2(k,zval),
168 tfnosc1(k),pk0nosc1(k),scale*pkznosc1(k,zval),
169 tfnob(k),pk0nob(k),scale*pkznob(k,zval));
170 }
171 fclose(fdata);
172 }
173
174 //--------------------------
175 cout<<">>>> Ecriture"<<endl;
176 string tag = "cmvtstpk.ppf";
177 POutPersist pos(tag);
178 tag = "nt"; pos.PutObject(nt,tag);
179 tag = "hd1"; pos.PutObject(hd1,tag);
180 tag = "hpkz"; pos.PutObject(hpkz,tag);
181 tag = "vpkz"; pos.PutObject(vpkz,tag);
182 tag = "halea"; pos.PutObject(halea,tag);
183 return 0;
184}
185
186/*
187openppf cmvtstpk.ppf
188
189#### growth-factor
190zone
191n/plot hd1.val%x ! ! "nsta connectpoints"
192
193#### Spectre initial
194zone
195n/plot nt.log10(pkini)%log10(k) pkini>0. ! "nsta connectpoints"
196
197#### Gestion des abscisses
198set xk log10(k)
199set xk k
200
201#### fct de transfert
202zone
203n/plot nt.tf%$xk ! ! "nsta connectpoints"
204n/plot nt.tfnosc2%$xk ! ! "nsta connectpoints same red"
205n/plot nt.tfnosc1%$xk ! ! "nsta connectpoints same blue"
206n/plot nt.tfnob%$xk ! ! "nsta connectpoints same green"
207
208n/plot nt.tf/tfnosc2%$xk ! ! "nsta connectpoints red"
209n/plot nt.tf/tfnosc1%$xk ! ! "nsta connectpoints same blue"
210n/plot nt.tf/tfnob%$xk ! ! "nsta connectpoints same green"
211addline -10 1 10 1
212
213#### Spectre a z=0
214zone
215n/plot nt.pk0%$xk ! ! "nsta connectpoints"
216n/plot nt.pk0nosc2%$xk ! ! "nsta connectpoints same red"
217n/plot nt.pk0nosc1%$xk ! ! "nsta connectpoints same blue"
218n/plot nt.pk0nob%$xk ! ! "nsta connectpoints same green"
219
220# Check
221zone 2 2
222n/plot nt.pk0/pkini-tf*tf%$xk pkini>0 ! "nsta crossmarker3"
223n/plot nt.pk0nosc2/pkini-tfnosc2*tfnosc2%$xk pkini>0 ! "nsta crossmarker3"
224n/plot nt.pk0nosc1/pkini-tfnosc1*tfnosc1%$xk pkini>0 ! "nsta crossmarker3"
225n/plot nt.pk0nob/pkini-tfnob*tfnob%$xk pkini>0 ! "nsta crossmarker3"
226
227#### Spectre a z
228zone
229n/plot nt.pk%$xk ! ! "nsta connectpoints"
230n/plot nt.pknosc2%$xk ! ! "nsta connectpoints same red"
231n/plot nt.pknosc1%$xk ! ! "nsta connectpoints same blue"
232n/plot nt.pknob%$xk ! ! "nsta connectpoints same green"
233
234n/plot nt.pk/pknosc2%$xk ! ! "nsta connectpoints red"
235n/plot nt.pk/pknosc1%$xk ! ! "nsta connectpoints same blue"
236n/plot nt.pk/pknob%$xk ! ! "nsta connectpoints same green"
237addline -10 1 10 1
238
239#### Le spectre version Delta^2
240set D2 k*k*k*pk/(2*M_PI*M_PI)
241n/plot nt.$D2%$xk ! ! "nsta crossmarker3 connectpoints"
242
243#### Test des transferts dans Histo et TVector
244zone 1 2
245n/plot nt.pk%log10(k) ! ! "nsta crossmarker3"
246disp hpkz "same red"
247
248disp vpkz
249c++exec cout<<hpkz(0)<<" =?= "<<vpkz(0)<<endl;
250
251zone
252disp hpkz
253disp halea "same red"
254
255*/
Note: See TracBrowser for help on using the repository browser.