Changeset 1314 in Sophya


Ignore:
Timestamp:
Nov 9, 2000, 6:45:46 PM (25 years ago)
Author:
ansari
Message:

Ajout methode IndexAtPosition ds BaseArray - Reza 9/11/2000

Location:
trunk/SophyaLib/TArray
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/basarr.cc

    r1156 r1314  
    417417  //#ifdef SO_BOUNDCHECKING
    418418  if (rest != 0)
    419     throw PError("BaseArray::Offset(sa_size_t ip) GUG !!! rest != 0");
     419    throw PError("BaseArray::Offset(sa_size_t ip) BUG !!! rest != 0");
    420420  //#endif
    421421//   if (rest != 0) cerr << " BUG ---- BaseArray::Offset( " << ip << " )" << rest << endl;
     
    426426  for(k=0; k<ndim_; k++)  off += idx[k]*step_[k];
    427427  return (off);
     428}
     429//! return index of element \b ip, along the five array axes
     430void BaseArray::IndexAtPosition(sa_size_t ip, sa_size_t & ix, sa_size_t & iy,
     431                                sa_size_t & iz, sa_size_t & it, sa_size_t & iu) const
     432{
     433  ix = iy = iz = it = iu = 0;
     434  if ( (ndim_ < 1) || (ip == 0) )  return;
     435  if (ip >= totsize_)
     436    throw RangeCheckError("BaseArray::IndexAtPosition(...) Out of range index ip");
     437  sa_size_t idx[BASEARRAY_MAXNDIMS];
     438  int_4 k;
     439  sa_size_t rest = ip;
     440  for(k=0; k<ndim_; k++) {
     441    idx[k] = rest%size_[k];   rest /= size_[k];
     442    if (rest == 0)  break;
     443  }
     444  if (rest != 0)
     445    throw PError("BaseArray::IndexAtPosition(...) BUG !!! rest != 0");
     446  ix = idx[0];
     447  iy = idx[1];
     448  iz = idx[2];
     449  it = idx[3];
     450  iu = idx[4]; 
     451  return;
    428452}
    429453
  • trunk/SophyaLib/TArray/basarr.h

    r1156 r1314  
    133133  sa_size_t Offset(int_4 ka, sa_size_t i) const ;
    134134  inline sa_size_t  Offset(sa_size_t ix, sa_size_t iy, sa_size_t iz, sa_size_t it=0, sa_size_t iu=0) const; 
    135 
     135  // Index values of element ip
     136  void           IndexAtPosition(sa_size_t ip, sa_size_t & ix, sa_size_t & iy, sa_size_t & iz,
     137                                 sa_size_t & it, sa_size_t & iu) const;
    136138  // an abstract element acces methode
    137139  virtual MuTyV & ValueAtPosition(sa_size_t ip) const = 0;
Note: See TracChangeset for help on using the changeset viewer.