Ignore:
Timestamp:
Feb 12, 2001, 6:09:27 PM (25 years ago)
Author:
ansari
Message:

Changement interface FFTServer - Reza 12/2/2001

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/fftservintf.cc

    r1390 r1394  
    7777/* --Methode-- */
    7878template <class T>
    79 FFTArrayChecker<T>::FFTArrayChecker(bool checkpack, bool onedonly)
    80 {
     79FFTArrayChecker<T>::FFTArrayChecker(string msg, bool checkpack, bool onedonly)
     80{
     81  _msg = msg + " FFTArrayChecker::";
    8182  _checkpack = checkpack;
    8283  _onedonly = onedonly;
     
    8990}
    9091
     92template <class T>
     93T FFTArrayChecker<T>::ZeroThreshold()
     94{
     95  return(0);
     96}
     97
     98r_8 FFTArrayChecker< r_8 >::ZeroThreshold()
     99{
     100  return(1.e-18);
     101}
     102
     103r_4 FFTArrayChecker< r_4 >::ZeroThreshold()
     104{
     105  return(1.e-9);
     106}
     107
     108
     109
    91110/* --Methode-- */
    92111template <class T>
     
    94113{
    95114  int k;
    96   if (in.Size() < 1)
    97     throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Unallocated input array !"));
     115  string msg;
     116  if (in.Size() < 1) {
     117    msg = _msg + "CheckResize(complex in, complex out) - Unallocated input array !";
     118    throw(SzMismatchError(msg));
     119  }
    98120  if (_checkpack)
    99     if ( !in.IsPacked() )
    100       throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Not packed input array !"));
     121    if ( !in.IsPacked() ) {
     122      msg = _msg + "CheckResize(complex in, complex out) - Not packed input array !";
     123      throw(SzMismatchError(msg));
     124    }
    101125  int ndg1 = 0;
    102126  for(k=0; k<in.NbDimensions(); k++)
    103127    if (in.Size(k) > 1)  ndg1++;
    104128  if (_onedonly)
    105     if (ndg1++ > 1)
    106       throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Only 1-D array accepted !"));
    107  
    108   sa_size_t sz[BASEARRAY_MAXNDIMS];
    109   for(k=0; k<in.NbDimensions(); k++)
    110     sz[k] = in.Size(k);
    111   out.ReSize(in.NbDimensions(), sz);
     129    if (ndg1 > 1) {
     130      msg = _msg + "CheckResize(complex in, complex out) - Only 1-D array accepted !";
     131      throw(SzMismatchError(msg));
     132    }
     133  out.ReSize(in);
     134  //  sa_size_t sz[BASEARRAY_MAXNDIMS];
     135  //  for(k=0; k<in.NbDimensions(); k++)
     136  //    sz[k] = in.Size(k);
     137  //  out.ReSize(in.NbDimensions(), sz);
    112138
    113139  return(ndg1);
     
    119145{
    120146  int k;
    121   if (in.Size() < 1)
    122     throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Unallocated input array !"));
     147  string msg;
     148  if (in.Size() < 1) {
     149    msg = _msg + "CheckResize(real in, complex out) - Unallocated input array !";
     150    throw(SzMismatchError(msg));
     151  }
    123152  if (_checkpack)
    124     if ( !in.IsPacked() )
    125       throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Not packed input array !"));
     153    if ( !in.IsPacked() ) {
     154      msg = _msg + "CheckResize(real in, complex out) - Not packed input array !";
     155      throw(SzMismatchError(msg));
     156    }
    126157  int ndg1 = 0;
    127158  for(k=0; k<in.NbDimensions(); k++)
    128159    if (in.Size(k) > 1)  ndg1++;
    129160  if (_onedonly)
    130     if (ndg1++ > 1)
    131       throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Only 1-D array accepted !"));
    132  
     161    if (ndg1 > 1) {
     162      msg = _msg + "CheckResize(real in, complex out) - Only 1-D array accepted !";
     163      throw(SzMismatchError(msg));
     164    }
    133165  sa_size_t sz[BASEARRAY_MAXNDIMS];
    134166  for(k=0; k<in.NbDimensions(); k++)
    135     sz[k] = in.Size(k)/2+1;
     167    sz[k] = in.Size(k)/2+1;
     168  //    sz[k] = (in.Size(k)%2 != 0) ? in.Size(k)/2+1 : in.Size(k)/2;
     169
    136170  out.ReSize(in.NbDimensions(), sz);
    137171
     
    144178{
    145179  int k;
    146   if (in.Size() < 1)
    147     throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Unallocated input array !"));
     180  string msg;
     181  if (in.Size() < 1) {
     182    msg = _msg + "CheckResize(complex in, real out) - Unallocated input array !";
     183    throw(SzMismatchError(msg));
     184  }
    148185  if (_checkpack)
    149     if ( !in.IsPacked() )
    150       throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Not packed input array !"));
     186    if ( !in.IsPacked() ) {
     187      msg = _msg + "CheckResize(complex in, real out) - Not packed input array !";
     188      throw(SzMismatchError(msg));
     189    }
    151190  int ndg1 = 0;
    152191  for(k=0; k<in.NbDimensions(); k++)
    153192    if (in.Size(k) > 1)  ndg1++;
    154193  if (_onedonly)
    155     if (ndg1++ > 1)
    156       throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Only 1-D array accepted !"));
    157  
     194    if (ndg1 > 1) {
     195      msg = _msg + "CheckResize(complex in, real out) - Only 1-D array accepted !";
     196      throw(SzMismatchError(msg));
     197    }
    158198  sa_size_t sz[BASEARRAY_MAXNDIMS];
    159   for(k=0; k<in.NbDimensions(); k++)
    160     sz[k] = in.Size(k)*2-1;
     199  if (ndg1 > 1) {
     200    for(k=0; k<in.NbDimensions(); k++)
     201      sz[k] = in.Size(k)*2-1;
     202  }
     203  else {
     204    for(k=0; k<BASEARRAY_MAXNDIMS; k++)  sz[k] = 1;
     205    T thr = ZeroThreshold();
     206    sa_size_t n = in.Size(in.MaxSizeKA());
     207    sa_size_t ncs = ( (in[n-1].imag() < -thr) || (in[n-1].imag() > thr) ) ?
     208                    ncs = 2*n-1 : ncs = 2*n-2;
     209    sz[in.MaxSizeKA()] = ncs;
     210  }
     211
    161212  out.ReSize(in.NbDimensions(), sz);
    162213
     
    165216}
    166217
    167 /* --Methode-- */
     218/* --Methode--
    168219template <class T>
    169220void FFTArrayChecker<T>::ReShapetoReal( TArray< complex<T> > const & in, TArray< T >  & out)
     
    182233  out[ncs-2] = in[n-1].real();  out[ncs-1] = in[n-1].imag();
    183234}
    184 
    185 /* --Methode-- */
     235*/
     236
     237/* --Methode--
    186238template <class T>
    187239void FFTArrayChecker<T>::ReShapetoCompl(TArray< T > const & in, TArray< complex<T> > & out)
     
    195247  if (n%2 == 0) out[ncs-1] = complex<r_8>(in[n-1], 0.);
    196248}
    197 
     249*/
    198250
    199251#ifdef __CXX_PRAGMA_TEMPLATES__
Note: See TracChangeset for help on using the changeset viewer.