Changeset 3524 in Sophya for trunk/Cosmo
- Timestamp:
- Sep 22, 2008, 4:07:02 PM (17 years ago)
- Location:
- trunk/Cosmo/SimLSS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvobserv3d.cc
r3518 r3524 28 28 <<" (default: no, spectrum Pk(z=z_median) for all cube)"<<endl 29 29 <<" -F : filter spectrum by pixel shape (0=no 1=yes(default)"<<endl 30 <<" -U typ : do not poisson fluctuate with Ngal, convert directly to HI mass"<<endl 31 <<" (typ<0 just multiply dRho/Rho by mass_by_pixel)"<<endl 30 <<" -U typ =0 compute <NGal>, poisson fluctuate then convert to HI mass (def)"<<endl 31 <<" >0 compute directly <HI mass>, do NOT poisson fluctuate with <Ngal>"<<endl 32 <<" <0 just multiply dRho/Rho by mass_by_pixel (possible negative pixel values)"<<endl 32 33 <<" -x nx,dx : size along x axis (npix,Mpc)"<<endl 33 34 <<" -y ny,dy : size along y axis (npix,Mpc)"<<endl … … 100 101 bool recompute_schmassdist = true; 101 102 string schmassdistfile = ""; 102 bool no_poisson = false; 103 int no_poisson_type = 1; 103 int no_poisson_type = 0; 104 104 105 105 double scalemass = -1.; … … 126 126 bool wslice = false; 127 127 bool compvarreal = false; 128 unsigned long ntnent = 10000; // 0 = do not fill NTuple 128 129 129 130 // --- Decodage arguments … … 148 149 break; 149 150 case 'U' : 150 no_poisson = true;151 151 sscanf(optarg,"%d",&no_poisson_type); 152 152 break; … … 233 233 <<"), schmax="<<schmax<<" ("<<lschmax<<") Msol" 234 234 <<", schnpt="<<schnpt<<endl; 235 if(no_poisson ) cout<<"No poisson fluctuation, direct conversion to HI mass, typ="236 <<no_poisson_type<<endl;235 if(no_poisson_type!=0) cout<<"No poisson fluctuation, direct conversion to HI mass, typ=" 236 <<no_poisson_type<<endl; 237 237 cout<<"snoise="<<snoise<<" equivalent Msol, evolution="<<noise_evol<<endl; 238 238 cout<<"scalemass="<<scalemass<<endl; … … 419 419 if(computefourier0) fluct3d.ComputeFourier0(pkz); 420 420 else fluct3d.ComputeFourier(pkz); 421 fluct3d.NTupleCheck(posobs,string("ntpkgen"),ntnent); 421 422 PrtTim(">>>> End Computing a realization in Fourier space"); 422 423 … … 446 447 cout<<"\n--- Computing convolution by pixel shape"<<endl; 447 448 fluct3d.FilterByPixel(); 449 fluct3d.NTupleCheck(posobs,string("ntpkgenf"),ntnent); 448 450 PrtTim(">>>> End Computing convolution by pixel shape"); 449 451 … … 501 503 double rmin,rmax; fluct3d.MinMax(rmin,rmax); 502 504 cout<<"rgen.Min = "<<rmin<<" , Max="<<rmax<<endl; 505 fluct3d.NTupleCheck(posobs,string("ntreal"),ntnent); 503 506 PrtTim(">>>> End Computing a realization in real space"); 504 507 … … 509 512 fluct3d.MinMax(rmin,rmax); 510 513 cout<<"rgen.Min = "<<rmin<<" , Max="<<rmax<<endl; 514 fluct3d.NTupleCheck(posobs,string("ntgrow"),ntnent); 511 515 PrtTim(">>>> End Applying growth factor"); 512 516 } … … 549 553 550 554 //----------------------------------------------------------------- 551 if(no_poisson ) {555 if(no_poisson_type!=0) { 552 556 cout<<"\n--- Converting !!!DIRECTLY!!! mass into HI mass: mass per pixel =" 553 557 <<mass_by_pixel<<endl; … … 558 562 rm = fluct3d.TurnFluct2MeanNumber(mass_by_mpc3); // ici on doit donner Msol/Mpc^3 559 563 } 564 fluct3d.NTupleCheck(posobs,string("ntmhi"),ntnent); 560 565 } else { 561 566 cout<<"\n--- Converting mass into galaxy number: gal per pixel =" 562 567 <<ngal_by_mpc3*fluct3d.GetDVol()<<endl; 563 568 rm = fluct3d.TurnFluct2MeanNumber(ngal_by_mpc3); // ici on doit donner Ngal/Mpc^3 569 fluct3d.NTupleCheck(posobs,string("ntmeang"),ntnent); 564 570 } 565 571 nm = fluct3d.MeanSigma2(rm,rs2,0.,1e200); … … 568 574 PrtTim(">>>> End Converting mass into galaxy number or mass"); 569 575 570 if( !no_poisson) {576 if( no_poisson_type==0 ) { 571 577 572 578 cout<<"\n--- Apply poisson on galaxy number"<<endl; … … 575 581 nm = fluct3d.MeanSigma2(rm,rs2); 576 582 double xgalmin,xgalmax; fluct3d.MinMax(xgalmin,xgalmax,0.1,1.e50); 583 fluct3d.NTupleCheck(posobs,string("ntpois"),ntnent); 577 584 PrtTim(">>>> End Apply poisson on galaxy number"); 578 585 if(wslice) { … … 598 605 cout<<"Equivalent: "<<rm*nm/fluct3d.NPix()<<" Msol / pixels"<<endl; 599 606 nm = fluct3d.MeanSigma2(rm,rs2); 607 fluct3d.NTupleCheck(posobs,string("ntmhi"),ntnent); 600 608 PrtTim(">>>> End Convert Galaxy number to HI mass"); 601 609 … … 622 630 //// fluct3d.AddAGN(lfjy_agn,lsigma_agn,powlaw_agn); 623 631 //// nm = fluct3d.MeanSigma2(rm,rs2); 624 //// PrtTim(">>>> End Add AGN"); 632 //// fluct3d.NTupleCheck(posobs,string("ntagn"),ntnent); 633 //// PrtTim(">>>> End Add AGN"); 625 634 ////} 626 635 … … 632 641 snoisesave = snoise; 633 642 nm = fluct3d.MeanSigma2(rm,rs2); 643 fluct3d.NTupleCheck(posobs,string("ntnois"),ntnent); 634 644 PrtTim(">>>> End Add noise"); 635 645 } … … 644 654 PrtTim(">>>> End Scale cube"); 645 655 } 656 fluct3d.NTupleCheck(posobs,string("ntfin"),ntnent); 646 657 647 658 //----------------------------------------------------------------- … … 664 675 cout<<endl<<"\n--- ReComputing spectrum from real space"<<endl; 665 676 fluct3d.ReComputeFourier(); 677 fluct3d.NTupleCheck(posobs,string("ntpkrec"),ntnent); 666 678 PrtTim(">>>> End ReComputing spectrum"); 667 679 -
trunk/Cosmo/SimLSS/genefluct3d.cc
r3521 r3524 15 15 #include "fabtwriter.h" 16 16 #include "fioarr.h" 17 #include "ntuple.h" 17 18 18 19 #include "arrctcast.h" … … 83 84 nthread_ = 0; 84 85 lp_ = 0; 85 array_allocated_ = false; 86 array_allocated_ = false; array_type = 0; 86 87 cosmo_ = NULL; 87 88 growth_ = NULL; … … 153 154 try { 154 155 T_.ReSize(3,SzK_); 155 array_allocated_ = true; 156 array_allocated_ = true; array_type=0; 156 157 if(lp_>1) cout<<" allocating: "<<T_.Size()*sizeof(complex<GEN3D_TYPE>)/1.e6<<" Mo"<<endl; 157 158 } catch (...) { … … 552 553 553 554 //------------------------------------------------------- 555 void GeneFluct3D::NTupleCheck(POutPersist &pos,string ntname,unsigned long nent) 556 // Remplit le NTuple "ntname" avec "nent" valeurs du cube (reel ou complex) et l'ecrit dans "pos" 557 { 558 if(ntname.size()<=0 || nent==0) return; 559 int nvar = 0; 560 if(array_type==1) nvar = 3; 561 else if(array_type==2) nvar = 4; 562 else return; 563 char *vname[4] = {"t","z","re","im"}; 564 float xnt[4]; 565 NTuple nt(nvar,vname); 566 567 if(array_type==1) { 568 unsigned long nmod = Nx_*Ny_*Nz_/nent; if(nmod==0) nmod=1; 569 unsigned long n=0; 570 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<Nz_;l++) { 571 if(n==nmod) { 572 int_8 ip = IndexR(i,j,l); 573 xnt[0]=sqrt(i*i+j*j); xnt[1]=l; xnt[2]=data_[ip]; 574 nt.Fill(xnt); 575 n=0; 576 } 577 n++; 578 } 579 } else { 580 unsigned long nmod = Nx_*Ny_*NCz_/nent; if(nmod==0) nmod=1; 581 unsigned long n=0; 582 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<NCz_;l++) { 583 if(n==nmod) { 584 xnt[0]=sqrt(i*i+j*j); xnt[1]=l; xnt[2]=T_(l,j,i).real(); xnt[3]=T_(l,j,i).imag(); 585 nt.Fill(xnt); 586 n=0; 587 } 588 n++; 589 } 590 } 591 592 pos.PutObject(nt,ntname); 593 } 594 595 //------------------------------------------------------- 554 596 void GeneFluct3D::Print(void) 555 597 { … … 611 653 } 612 654 655 array_type = 2; 656 613 657 if(lp_>0) cout<<"...computing power"<<endl; 614 658 double p = compute_power_carte(); … … 654 698 } 655 699 700 array_type = 2; 656 701 manage_coefficients(); // gros effet pour les spectres que l'on utilise ! 657 702 … … 851 896 // On fait la FFT 852 897 GEN3D_FFTW_EXECUTE(pb_); 898 array_type = 1; 853 899 } 854 900 … … 861 907 // On fait la FFT 862 908 GEN3D_FFTW_EXECUTE(pf_); 909 array_type = 2; 910 863 911 // On corrige du pb de la normalisation de FFTW3 864 912 double v = (double)NRtot_; -
trunk/Cosmo/SimLSS/genefluct3d.h
r3521 r3524 137 137 void ReadPPF(string cfname); 138 138 void WriteSlicePPF(string cfname); 139 void NTupleCheck(POutPersist &pos,string ntname,unsigned long nent); 139 140 140 141 void SetPrtLevel(int lp=0) {lp_ = lp;} … … 177 178 // le stockage du Cube de donnees et les pointeurs 178 179 bool array_allocated_; // true if array has been allocated 180 unsigned short array_type; // 0=empty, 1=real, 2=complex 179 181 TArray< complex<GEN3D_TYPE> > T_; 180 182 GEN3D_FFTW_COMPLEX *fdata_;
Note:
See TracChangeset
for help on using the changeset viewer.