Changeset 3267 in Sophya for trunk/Cosmo/SimLSS/genefluct3d.cc
- Timestamp:
- Jun 14, 2007, 7:06:35 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/genefluct3d.cc
r3262 r3267 69 69 // Si redshref<0 alors redshref=0 70 70 // kredshref = indice (en double) correspondant a ce redshift 71 // Si kredshref<0 alors kredshref= 071 // Si kredshref<0 alors kredshref=nz/2 (milieu du cube) 72 72 // Exemple: redshref=1.5 kredshref=250.75 73 73 // -> Le pixel i=nx/2 j=ny/2 k=250.75 est au redshift 1.5 74 74 { 75 75 if(redshref<0.) redshref = 0.; 76 if(kredshref<0.) kredshref = 0.; 76 if(kredshref<0.) { 77 if(Nz_<=0) { 78 char *bla = "GeneFluct3D::SetObservator_Error: for kredshref<0 SetSize should be called first"; 79 cout<<bla<<endl; throw ParmError(bla); 80 } 81 kredshref = Nz_/2.; 82 } 77 83 redshref_ = redshref; 78 84 kredshref_ = kredshref; … … 97 103 <<" D="<<dx<<","<<dy<<","<<dz<<endl; 98 104 if(nx<=0 || dx<=0.) { 99 char *bla = "GeneFluct3D::setsize_Error: bad value(s ";105 char *bla = "GeneFluct3D::setsize_Error: bad value(s) for nn/dx"; 100 106 cout<<bla<<endl; throw ParmError(bla); 101 107 } … … 228 234 loscom_max_ = 0.; 229 235 for(long i=0;i<=1;i++) { 230 double dx2 = xobs_[0] - i* Nx_*Dx_; dx2 *= dx2;236 double dx2 = xobs_[0] - i*(Nx_-1)*Dx_; dx2 *= dx2; 231 237 for(long j=0;j<=1;j++) { 232 double dy2 = xobs_[1] - j* Ny_*Dy_; dy2 *= dy2;238 double dy2 = xobs_[1] - j*(Ny_-1)*Dy_; dy2 *= dy2; 233 239 for(long k=0;k<=1;k++) { 234 double dz2 = xobs_[2] - k* Nz_*Dz_; dz2 *= dz2;240 double dz2 = xobs_[2] - k*(Nz_-1)*Dz_; dz2 *= dz2; 235 241 dz2 = sqrt(dx2+dy2+dz2); 236 242 if(dz2>loscom_max_) loscom_max_ = dz2; … … 246 252 247 253 // Fill the corresponding vectors for loscom and zred 254 // Be shure to have one dlc <loscom_min and one >loscom_max 248 255 if(zinc<=0.) zinc = 0.01; 249 256 for(double z=0.; ; z+=zinc) { … … 1121 1128 } 1122 1129 1123 void GeneFluct3D::AddNoise2Real(double snoise )1130 void GeneFluct3D::AddNoise2Real(double snoise,bool with_evol) 1124 1131 // add noise to every pixels (meme les <=0 !) 1125 1132 { 1126 if(lp_>0) cout<<"--- AddNoise2Real: snoise = "<<snoise<<endl; 1127 check_array_alloc(); 1128 1129 for(long i=0;i<Nx_;i++) for(long j=0;j<Ny_;j++) for(long l=0;l<Nz_;l++) { 1130 int_8 ip = IndexR(i,j,l); 1131 data_[ip] += snoise*NorRand(); 1132 } 1133 } 1134 1135 1136 1137 //------------------------------------------------------------------- 1138 //------------------------------------------------------------------- 1139 //--------------------- BRICOLO A NE PAS GARDER --------------------- 1140 //------------------------------------------------------------------- 1141 //------------------------------------------------------------------- 1142 int GeneFluct3D::ComputeSpectrum_bricolo(HistoErr& herr) 1143 // Compute spectrum from "T" and fill HistoErr "herr" 1144 // T : dans le format standard de GeneFuct3D: T(nz,ny,nx) 1145 // cad T(kz,ky,kx) avec 0<kz<kz_nyq -ky_nyq<ky<ky_nyq -kx_nyq<kx<kx_nyq 1146 { 1147 if(lp_>0) cout<<"--- ComputeSpectrum_bricolo ---"<<endl; 1148 check_array_alloc(); 1149 1150 if(herr.NBins()<0) return -1; 1151 herr.Zero(); 1152 1153 // Attention a l'ordre 1133 if(lp_>0) cout<<"--- AddNoise2Real: snoise = "<<snoise<<" evol="<<with_evol<<endl; 1134 check_array_alloc(); 1135 1154 1136 for(long i=0;i<Nx_;i++) { 1155 long ii = (i>Nx_/2) ? Nx_-i : i;1156 double kx = ii*Dkx_; kx *= kx;1157 1137 for(long j=0;j<Ny_;j++) { 1158 if(i==0 && j==0) continue; 1159 long jj = (j>Ny_/2) ? Ny_-j : j; 1160 double ky = jj*Dky_; ky *= ky; 1161 for(long l=1;l<NCz_;l++) { 1162 double kz = l*Dkz_; kz *= kz; 1163 double k = sqrt(kx+ky+kz); 1164 double pk = MODULE2(T_(l,j,i)); 1165 herr.Add(k,pk); 1166 } 1167 } 1168 } 1169 herr.ToVariance(); 1170 1171 // renormalize to directly compare to original spectrum 1172 double norm = Vol_; 1173 herr *= norm; 1174 1175 return 0; 1176 } 1177 1178 int GeneFluct3D::ComputeSpectrum2D_bricolo(Histo2DErr& herr) 1179 { 1180 if(lp_>0) cout<<"--- ComputeSpectrum2D_bricolo ---"<<endl; 1181 check_array_alloc(); 1182 1183 if(herr.NBinX()<0 || herr.NBinY()<0) return -1; 1184 herr.Zero(); 1185 1186 // Attention a l'ordre 1187 for(long i=0;i<Nx_;i++) { 1188 long ii = (i>Nx_/2) ? Nx_-i : i; 1189 double kx = ii*Dkx_; kx *= kx; 1190 for(long j=0;j<Ny_;j++) { 1191 if(i==0 && j==0) continue; 1192 long jj = (j>Ny_/2) ? Ny_-j : j; 1193 double ky = jj*Dky_; ky *= ky; 1194 double kt = sqrt(kx+ky); 1195 for(long l=1;l<NCz_;l++) { 1196 double kz = l*Dkz_; 1197 double pk = MODULE2(T_(l,j,i)); 1198 herr.Add(kt,kz,pk); 1199 } 1200 } 1201 } 1202 herr.ToVariance(); 1203 1204 // renormalize to directly compare to original spectrum 1205 double norm = Vol_; 1206 herr *= norm; 1207 1208 return 0; 1209 } 1138 for(long l=0;l<Nz_;l++) { 1139 int_8 ip = IndexR(i,j,l); 1140 data_[ip] += snoise*NorRand(); 1141 } 1142 } 1143 } 1144 1145 } 1146
Note:
See TracChangeset
for help on using the changeset viewer.