Changeset 3141 in Sophya for trunk/Cosmo/SimLSS/cmvobserv3d.cc
- Timestamp:
- Jan 17, 2007, 6:44:04 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvobserv3d.cc
r3134 r3141 10 10 #include "ntuple.h" 11 11 #include "matharr.h" 12 #include "srandgen.h"13 #include "perandom.h"14 #include "fabtwriter.h"15 16 #include "arrctcast.h"17 12 18 13 #include "constcosmo.h" … … 208 203 pkz.SetZ(zref); 209 204 TArray< complex<r_8> > pkgen; 210 GeneFluct3D fluct3d(pkgen ,pkz);205 GeneFluct3D fluct3d(pkgen); 211 206 fluct3d.SetNThread(nthread); 212 207 fluct3d.SetSize(nx,ny,nz,dx,dy,dz); 208 TArray<r_8>& rgen = fluct3d.GetRealArray(); 213 209 fluct3d.Print(); 210 211 double dkmin = fluct3d.GetKincMin(); 214 212 double knyqmax = fluct3d.GetKmax(); 215 double dkmin = fluct3d.GetKinc()[0]; 213 long nherr = long(knyqmax/dkmin+0.5); 214 cout<<"For HistoErr: d="<<dkmin<<" max="<<knyqmax<<" n="<<nherr<<endl; 215 216 double dktmin = fluct3d.GetKTincMin(); 217 double ktnyqmax = fluct3d.GetKTmax(); 218 long nherrt = long(ktnyqmax/dktmin+0.5); 219 double dkzmin = fluct3d.GetKinc()[2]; 220 double kznyqmax = fluct3d.GetKnyq()[2]; 221 long nherrz = long(kznyqmax/dkzmin+0.5); 222 cout<<"For Histo2DErr: d="<<dktmin<<","<<dkzmin 223 <<" max="<<ktnyqmax<<","<<kznyqmax<<" n="<<nherrt<<","<<nherrz<<endl; 216 224 217 225 cout<<"\n--- Computing spectra variance up to Kmax at z="<<pkz.GetZ()<<endl; … … 219 227 // sphere: Vs = 4Pi/3 k^3 , cube inscrit (cote k*sqrt(2)): Vc = (k*sqrt(2))^3 220 228 // Vc/Vs = 0.675 -> keff = kmax * (0.675)^(1/3) = kmax * 0.877 221 knyqmax *= 0.877;222 ldlkint = (log10(knyqmax )-log10(k1int))/npt;229 double knyqmax_mod = 0.877*knyqmax; 230 ldlkint = (log10(knyqmax_mod)-log10(k1int))/npt; 223 231 varpk_int.SetInteg(0.01,ldlkint,-1.,4); 224 double sr2int_kmax = varpk_int.Variance(R,k1int,knyqmax );225 cout<<"varpk_int(<"<<knyqmax <<")="<<sr2int_kmax<<" -> sigma="<<sqrt(sr2int_kmax)<<endl;232 double sr2int_kmax = varpk_int.Variance(R,k1int,knyqmax_mod); 233 cout<<"varpk_int(<"<<knyqmax_mod<<")="<<sr2int_kmax<<" -> sigma="<<sqrt(sr2int_kmax)<<endl; 226 234 227 235 cout<<"\n--- Computing a realization in Fourier space"<<endl; 228 if(computefourier0) fluct3d.ComputeFourier0(); 229 else fluct3d.ComputeFourier(); 230 231 cout<<"\n--- Checking realization spectra"<<endl; 232 long nhprof = long(fluct3d.GetKmax()/dkmin+0.5); 233 HProf hpkgen(0.,fluct3d.GetKmax(),nhprof); 234 hpkgen.ReCenterBin(); 235 fluct3d.ComputeSpectrum(hpkgen); 236 { 237 tagobs = "hpkgen"; posobs.PutObject(hpkgen,tagobs); 236 if(computefourier0) fluct3d.ComputeFourier0(pkz); 237 else fluct3d.ComputeFourier(pkz); 238 239 if(1) { 240 cout<<"\n--- Checking realization spectra"<<endl; 241 HistoErr hpkgen(0.,knyqmax,nherr); 242 hpkgen.ReCenterBin(); hpkgen.Zero(); 243 hpkgen.Show(); 244 fluct3d.ComputeSpectrum(hpkgen); 245 { 246 tagobs = "hpkgen"; posobs.PutObject(hpkgen,tagobs); 247 } 248 } 249 250 if(1) { 251 cout<<"\n--- Checking realization 2D spectra"<<endl; 252 Histo2DErr hpkgen2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz); 253 hpkgen2.ReCenterBin(); hpkgen2.Zero(); 254 hpkgen2.Show(); 255 fluct3d.ComputeSpectrum2D(hpkgen2); 256 { 257 tagobs = "hpkgen2"; posobs.PutObject(hpkgen2,tagobs); 258 } 238 259 } 239 260 … … 241 262 cout<<"\n--- Computing convolution by pixel shape"<<endl; 242 263 fluct3d.FilterByPixel(); 243 264 } 265 266 if(1) fluct3d.WriteFits("!cmvobserv3d_k.fits"); 267 if(1) fluct3d.WritePPF("cmvobserv3d_k.ppf",false); 268 269 if(1) { 244 270 cout<<"\n--- Checking realization spectra after pixel shape convol."<<endl; 245 HProf hpkgenf(hpkgen); hpkgenf.Zero(); 271 HistoErr hpkgenf(0.,knyqmax,nherr); 272 hpkgenf.ReCenterBin(); hpkgenf.Zero(); 273 hpkgenf.Show(); 246 274 fluct3d.ComputeSpectrum(hpkgenf); 247 275 { … … 250 278 } 251 279 252 if(0) { 253 cout<<"\n--- Writing cmvobserv3dk.ppf"<<endl; 254 string tag = "cmvobserv3dk.ppf"; 255 POutPersist pos(tag); 256 tag = "pkgen"; pos.PutObject(pkgen,tag); 280 if(1) { 281 cout<<"\n--- Checking realization 2D spectra after pixel shape convol."<<endl; 282 Histo2DErr hpkgenf2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz); 283 hpkgenf2.ReCenterBin(); hpkgenf2.Zero(); 284 hpkgenf2.Show(); 285 fluct3d.ComputeSpectrum2D(hpkgenf2); 286 { 287 tagobs = "hpkgenf2"; posobs.PutObject(hpkgenf2,tagobs); 288 } 257 289 } 258 290 259 291 cout<<"\n--- Computing a realization in real space"<<endl; 260 292 fluct3d.ComputeReal(); 261 r_8 undouble=0.;262 TArray<r_8> rgen = ArrayCast(pkgen,undouble);263 293 double rmin,rmax; rgen.MinMax(rmin,rmax); 264 294 cout<<"rgen.Min = "<<rmin<<" , Max="<<rmax<<endl; 265 295 266 cout<<"\n--- Check mean and variance in real space"<<endl; 267 int_8 nlowone = fluct3d.NumberOfBad(-1.,1e+200); 268 double rm,rs2; int_8 nm; 269 nm = fluct3d.MeanSigma2(rm,rs2); 270 cout<<"rgen:("<<nm<<") Mean = "<<rm<<", Sigma^2 = " 271 <<rs2<<" -> "<<sqrt(rs2)<<", n(<-1)="<<nlowone<<endl; 296 if(1) fluct3d.WriteFits("!cmvobserv3d_r0.fits"); 297 if(1) fluct3d.WritePPF("cmvobserv3d_r0.ppf",true); 298 299 int_8 nm; 300 double rm,rs2; 301 if(1) { 302 cout<<"\n--- Check mean and variance in real space"<<endl; 303 int_8 nlowone = fluct3d.NumberOfBad(-1.,1e+200); 304 nm = fluct3d.MeanSigma2(rm,rs2); 305 cout<<"rgen:("<<nm<<") Mean = "<<rm<<", Sigma^2 = " 306 <<rs2<<" -> "<<sqrt(rs2)<<", n(<-1)="<<nlowone<<endl; 307 } 272 308 273 309 if(1) { … … 331 367 <<rs2<<" -> "<<sqrt(rs2)<<endl; 332 368 333 if(1) { 334 cout<<"\n---Writing Cube to Fits file"<<endl; 335 FitsImg3DWriter fwrt("!cmvobserv3dr.fits",FLOAT_IMG,5); 336 fwrt.WriteKey("ZREF",zref," redshift"); 337 vector<long> n = fluct3d.GetNpix(); 338 fwrt.WriteKey("NX",n[0]," axe transverse 1"); 339 fwrt.WriteKey("NY",n[1]," axe transverse 2"); 340 fwrt.WriteKey("NZ",n[2]," axe longitudinal (redshift)"); 341 vector<r_8> d; 342 d = fluct3d.GetDinc(); 343 fwrt.WriteKey("DX",d[0]," Mpc"); 344 fwrt.WriteKey("DY",d[1]," Mpc"); 345 fwrt.WriteKey("DZ",d[2]," Mpc"); 346 d = fluct3d.GetKinc(); 347 fwrt.WriteKey("DKX",d[0]," Mpc^-1"); 348 fwrt.WriteKey("DKY",d[1]," Mpc^-1"); 349 fwrt.WriteKey("DKZ",d[2]," Mpc^-1"); 350 fwrt.WriteKey("SNOISE",snoise," Msol"); 351 fwrt.Write(rgen); 352 } 369 if(1) fluct3d.WriteFits("!cmvobserv3d_r.fits"); 370 if(1) fluct3d.WritePPF("cmvobserv3d_r.ppf",true); 353 371 354 372 cout<<"\n--- Add noise to HI Flux snoise="<<snoise<<endl; … … 358 376 <<rs2<<" -> "<<sqrt(rs2)<<endl; 359 377 360 if(0) {361 cout<<"\n--- Writing cmvobserv3dr.ppf"<<endl;362 string tag = "cmvobserv3dr.ppf";363 POutPersist pos(tag);364 tag = "rgen"; pos.PutObject(rgen,tag);365 }366 367 378 //----------------------------------------------------------------- 368 379 // -- NE PAS FAIRE CA SI ON VEUT CONTINUER LA SIMULATION -> d_rho/rho ecrase 380 369 381 if(1) { 370 382 cout<<endl<<"\n--- ReComputing spectrum from real space"<<endl; 371 383 fluct3d.ReComputeFourier(); 372 HProf hpkrec(0.,fluct3d.GetKmax(),nhprof); 384 } 385 386 if(1) { 387 cout<<endl<<"\n--- Computing final spectrum"<<endl; 388 HistoErr hpkrec(0.,knyqmax,nherr); 373 389 hpkrec.ReCenterBin(); 390 hpkrec.Show(); 374 391 fluct3d.ComputeSpectrum(hpkrec); 375 392 tagobs = "hpkrec"; posobs.PutObject(hpkrec,tagobs); 376 393 } 377 394 395 if(1) { 396 cout<<"\n--- Computing final 2D spectrum"<<endl; 397 Histo2DErr hpkrec2(0.,ktnyqmax,nherrt,0.,kznyqmax,nherrz); 398 hpkrec2.ReCenterBin(); hpkrec2.Zero(); 399 hpkrec2.Show(); 400 fluct3d.ComputeSpectrum2D(hpkrec2); 401 { 402 tagobs = "hpkrec2"; posobs.PutObject(hpkrec2,tagobs); 403 } 404 } 405 378 406 return 0; 379 407 } 380 408 381 409 /* 382 openppf cmvobserv3dk.ppf 383 openppf cmvobserv3dr.ppf 410 ###################################################### 411 readfits cmvobserv3d_k.fits 412 readfits cmvobserv3d_r0.fits 413 readfits cmvobserv3d_r.fits 414 415 openppf cmvobserv3d_k.ppf 416 openppf cmvobserv3d_r0.ppf 417 openppf cmvobserv3d_r.ppf 418 419 # pour le plot 2D d'une slice en Z du 3D: to2d nom_obj3D num_slice 420 defscript to2d 421 objaoper $1 sliceyz $2 422 mv sliceyz_${2} ${1}_$2 423 disp ${1}_$2 424 echo display slice $2 of $1 425 endscript 426 427 to2d $cobj 0 428 429 ###################################################### 384 430 openppf cmvobserv3d.ppf 385 431 386 objaoper pkgen sliceyz 0 387 432 zone 388 433 n/plot hpkz.val%x ! ! "nsta connectpoints" 389 434 n/plot hpkgen.val%log10(x) x>0 ! "nsta same red connectpoints" … … 394 439 n/plot hpkz.val*$k*$k/(2*M_PI*M_PI)%x ! "connectpoints" 395 440 396 defscript rgensl 397 objaoper rgen sliceyz $1 398 disp sliceyz_$1 399 endscript 400 401 rgensl 0 402 441 zone 2 2 442 imag hpkgen2 443 imag hpkgenf2 444 imag hpkrec2 445 446 zone 403 447 disp hmdndm 404 448 disp tirhmdndm
Note:
See TracChangeset
for help on using the changeset viewer.