Ignore:
Timestamp:
Jul 3, 2006, 1:09:09 PM (19 years ago)
Author:
ansari
Message:

extension de la classe NTupInt_TArray<T> pour adaptateur de TArray ds piapp, pour prise en compte future avec plot3dw , Reza 3/07/2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/nomtarradapter.cc

    r2999 r3004  
    112112    }
    113113    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() ); 
    116116      ok = true;
    117117      sprintf(buff,"sliceyz_%ld",(long)ks);
     
    119119    }
    120120    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() ); 
    123123      ok = true;
    124124      sprintf(buff,"slicexz_%ld",(long)ks);
     
    223223/* --Methode-- */
    224224template <class T>
     225r_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-- */
     235template <class T>
     236sa_size_t NTupInt_TArray<T>::ColumnIndex(string const & nom)  const
     237{
     238string 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-- */
     254template <class T>
     255void 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-- */
     280template <class T>
    225281r_8* NTupInt_TArray<T>::GetLineD(sa_size_t n) const
    226282{
     
    235291  mRet[3] = iz;  mRet[4] = it;  mRet[5] = iu; 
    236292  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.;
    239295  }
    240296return(mRet);
     
    272328  mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
    273329  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]);
    276332}
    277333return(mRet);
     
    292348  mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
    293349  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]);
    296352}
    297353return(mRet);
    298354}
    299355
     356DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
     357void 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}
     393DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
     394void 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}
    300430
    301431#ifdef __CXX_PRAGMA_TEMPLATES__
Note: See TracChangeset for help on using the changeset viewer.