- Timestamp:
- Jul 3, 2006, 1:09:09 PM (19 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/nomtarradapter.cc
r2999 r3004 112 112 } 113 113 else if (opts[0] == "sliceyz") { 114 slice->Share(mArr->SubArray(Range(ks), Range::all(), Range::all(), 115 Range::first() , Range::first()) );114 slice->Share(mArr->SubArray(Range(ks), Range::all(), Range::all(), Range::first(), 115 Range::first()).CompactAllDimensions() ); 116 116 ok = true; 117 117 sprintf(buff,"sliceyz_%ld",(long)ks); … … 119 119 } 120 120 else if (opts[0] == "slicexz") { 121 slice->Share(mArr->SubArray(Range::all(), Range(ks), Range::all(), 122 Range::first() , Range::first()) );121 slice->Share(mArr->SubArray(Range::all(), Range(ks), Range::all(), Range::first(), 122 Range::first()).CompactAllDimensions() ); 123 123 ok = true; 124 124 sprintf(buff,"slicexz_%ld",(long)ks); … … 223 223 /* --Methode-- */ 224 224 template <class T> 225 r_8 NTupInt_TArray<T>::GetCell(sa_size_t n, sa_size_t k) const 226 { 227 if ((n < 0) || (n >= (int)(mArr->Size()) ) ) 228 return 0.; 229 if ((k < 0) || (k > 10)) return 0.; 230 GetLineD(n); 231 return mRet[k]; 232 } 233 234 /* --Methode-- */ 235 template <class T> 236 sa_size_t NTupInt_TArray<T>::ColumnIndex(string const & nom) const 237 { 238 string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n"; 239 if (nom == "n") return 0; 240 else if (nom == "x") return 1; 241 else if (nom == "y") return 2; 242 else if (nom == "z") return 3; 243 else if (nom == "t") return 4; 244 else if (nom == "u") return 5; 245 else if (nom == "val") return 6; 246 else if (nom == "real") return 7; 247 else if (nom == "imag") return 8; 248 else if (nom == "mod") return 9; 249 else if (nom == "phase") return 10; 250 else return -1; 251 } 252 253 /* --Methode-- */ 254 template <class T> 255 void NTupInt_TArray<T>::GetMinMax(sa_size_t k, double& min, double& max) const 256 { 257 if (k == 0) { 258 min = 0.; max = (r_8)(mArr->Size()); } 259 else if (k == 1) { 260 min = 0.; max = (r_8)(mArr->SizeX()); } 261 else if (k == 2) { 262 min = 0.; max = (r_8)(mArr->SizeY()); } 263 else if (k == 3) { 264 min = 0.; max = (r_8)(mArr->SizeZ()); } 265 else if (k == 4) { 266 min = 0.; max = (r_8)(mArr->Size(3)); } 267 else if (k == 5) { 268 min = 0.; max = (r_8)(mArr->Size(4)); } 269 else if ((k == 6) || (k == 7) || (k == 9)) { 270 T tmin, tmax; 271 mArr->MinMax(tmin, tmax); 272 min = (r_8)(tmin); 273 max = (r_8)(tmax); 274 } 275 else { min = max = 0.; } 276 return; 277 } 278 279 /* --Methode-- */ 280 template <class T> 225 281 r_8* NTupInt_TArray<T>::GetLineD(sa_size_t n) const 226 282 { … … 235 291 mRet[3] = iz; mRet[4] = it; mRet[5] = iu; 236 292 mRet[6] = (*mArr)(ix,iy,iz,it,iu); 237 mRet[7] = mRet[ 2]; mRet[8] = 0.;238 mRet[9] = mRet[ 2]; mRet[10] = 0.;293 mRet[7] = mRet[6]; mRet[8] = 0.; 294 mRet[9] = mRet[6]; mRet[10] = 0.; 239 295 } 240 296 return(mRet); … … 272 328 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real(); 273 329 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag(); 274 mRet[ 3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);275 mRet[ 7] = atan2(mRet[8], mRet[7]);330 mRet[6] = mRet[9] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]); 331 mRet[10] = atan2(mRet[8], mRet[7]); 276 332 } 277 333 return(mRet); … … 292 348 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real(); 293 349 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag(); 294 mRet[ 3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);295 mRet[ 7] = atan2(mRet[8], mRet[7]);350 mRet[6] = mRet[9] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]); 351 mRet[10] = atan2(mRet[8], mRet[7]); 296 352 } 297 353 return(mRet); 298 354 } 299 355 356 DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ 357 void NTupInt_TArray< complex<r_4> >::GetMinMax(sa_size_t k, double& min, double& max) const 358 { 359 if (k == 0) { 360 min = 0.; max = (r_8)(mArr->Size()); } 361 else if (k == 1) { 362 min = 0.; max = (r_8)(mArr->SizeX()); } 363 else if (k == 2) { 364 min = 0.; max = (r_8)(mArr->SizeY()); } 365 else if (k == 3) { 366 min = 0.; max = (r_8)(mArr->SizeZ()); } 367 else if (k == 4) { 368 min = 0.; max = (r_8)(mArr->Size(3)); } 369 else if (k == 5) { 370 min = 0.; max = (r_8)(mArr->Size(4)); } 371 else if ((k >= 6) || (k <= 9)) { 372 r_8 tmin[3] = {9.e39,9.e39,9.e39}; 373 r_8 tmax[3] = {-9.e39,-9.e39,-9.e39}; 374 for(sa_size_t jj=0; jj<mArr->Size(); jj++) { 375 sa_size_t ix, iy, iz, it, iu; 376 mArr->IndexAtPosition(jj, ix, iy, iz, it, iu); 377 r_8 cv[3]; 378 cv[0] = (*mArr)(ix,iy,iz,it,iu).real(); 379 cv[1] = (*mArr)(ix,iy,iz,it,iu).imag(); 380 cv[2] = sqrt(cv[0]*cv[0]+cv[1]*cv[1]); 381 for(int i=0; i<3; i++) { 382 if (cv[i] < tmin[i]) tmin[i] = cv[i]; 383 if (cv[i] > tmax[i]) tmax[i] = cv[i]; 384 } 385 } 386 if (k == 7) { min = tmin[0]; max = tmax[0]; } 387 else if (k == 8) { min = tmin[0]; max = tmax[0]; } 388 else { min = tmin[2]; max = tmax[2]; } 389 } 390 else { min = max = 0.; } 391 return; 392 } 393 DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ 394 void NTupInt_TArray< complex<r_8> >::GetMinMax(sa_size_t k, double& min, double& max) const 395 { 396 if (k == 0) { 397 min = 0.; max = (r_8)(mArr->Size()); } 398 else if (k == 1) { 399 min = 0.; max = (r_8)(mArr->SizeX()); } 400 else if (k == 2) { 401 min = 0.; max = (r_8)(mArr->SizeY()); } 402 else if (k == 3) { 403 min = 0.; max = (r_8)(mArr->SizeZ()); } 404 else if (k == 4) { 405 min = 0.; max = (r_8)(mArr->Size(3)); } 406 else if (k == 5) { 407 min = 0.; max = (r_8)(mArr->Size(4)); } 408 else if ((k >= 6) || (k <= 9)) { 409 r_8 tmin[3] = {9.e39,9.e39,9.e39}; 410 r_8 tmax[3] = {-9.e39,-9.e39,-9.e39}; 411 for(sa_size_t jj=0; jj<mArr->Size(); jj++) { 412 sa_size_t ix, iy, iz, it, iu; 413 mArr->IndexAtPosition(jj, ix, iy, iz, it, iu); 414 r_8 cv[3]; 415 cv[0] = (*mArr)(ix,iy,iz,it,iu).real(); 416 cv[1] = (*mArr)(ix,iy,iz,it,iu).imag(); 417 cv[2] = sqrt(cv[0]*cv[0]+cv[1]*cv[1]); 418 for(int i=0; i<3; i++) { 419 if (cv[i] < tmin[i]) tmin[i] = cv[i]; 420 if (cv[i] > tmax[i]) tmax[i] = cv[i]; 421 } 422 } 423 if (k == 7) { min = tmin[0]; max = tmax[0]; } 424 else if (k == 8) { min = tmin[0]; max = tmax[0]; } 425 else { min = tmin[2]; max = tmax[2]; } 426 } 427 else { min = max = 0.; } 428 return; 429 } 300 430 301 431 #ifdef __CXX_PRAGMA_TEMPLATES__ -
trunk/SophyaPI/PIext/nomtarradapter.h
r2999 r3004 54 54 virtual sa_size_t NbLines() const ; 55 55 virtual sa_size_t NbColumns() const ; 56 virtual r_8 GetCell(sa_size_t n, sa_size_t k) const ; 57 virtual sa_size_t ColumnIndex(string const & nom) const ; 58 virtual void GetMinMax(sa_size_t k, double& min, double& max) const ; 56 59 virtual r_8 * GetLineD(sa_size_t n) const ; 57 60 virtual string VarList_C(const char* nomx=NULL) const ;
Note:
See TracChangeset
for help on using the changeset viewer.