AMROC Main     Blockstructured Adaptive Mesh Refinement in object-oriented C++


Main Page   Class Hierarchy   Compound List   File List  

Vector15.h

Go to the documentation of this file.
00001 #ifndef AMROC_VECTOR15_H
00002 #define AMROC_VECTOR15_H
00003 
00011 #include "CompConf.h"
00012 #include "generic.h"
00013 #include <iostream.h>
00014 #include <assert.h>
00015  
00016 #ifndef VectorName
00017 #define Vector(dim)      name2(Vector,dim)
00018 #define VectorName
00019 #endif
00020 
00028 template <class DataType>
00029 class Vector(15) {
00030   typedef Vector(15)<DataType> TVector;
00031 
00032 public:
00033   typedef DataType InternalDataType;
00034 
00035   Vector(15)() {}
00036   Vector(15)(const TVector& x) { 
00037     memcpy((void *) data_, (void *) x.data_, sizeof(TVector));
00038   }
00039   Vector(15)(const DataType& v) { 
00040     data_[0] = v; 
00041     data_[1] = v; 
00042     data_[2] = v; 
00043     data_[3] = v; 
00044     data_[4] = v; 
00045     data_[5] = v; 
00046     data_[6] = v; 
00047     data_[7] = v; 
00048     data_[8] = v; 
00049     data_[9] = v; 
00050     data_[10] = v; 
00051     data_[11] = v; 
00052     data_[12] = v; 
00053     data_[13] = v; 
00054     data_[14] = v; 
00055   }
00056 
00057   ~Vector(15)() {}
00058   
00059   DataType * data() { return data_; }
00060   const DataType * data() const { return data_; }
00061   int length() const { return 15; }
00062   static int Length() { return 15; }
00063 
00064   inline DataType operator()(int i) const {
00065 #ifdef DEBUG_PRINT
00066     assert((i >= 0) && (i < 15)); 
00067 #endif
00068     return data_[i];
00069   }
00070   inline DataType& operator()(int i) { 
00071 #ifdef DEBUG_PRINT
00072     assert((i >= 0) && (i < 15)); 
00073 #endif
00074     return data_[i];
00075   }
00076 
00077   inline DataType operator[](int i) const {
00078 #ifdef DEBUG_PRINT
00079     assert((i >= 0) && (i < 15)); 
00080 #endif
00081     return data_[i];
00082   }
00083   inline DataType& operator[](int i) { 
00084 #ifdef DEBUG_PRINT
00085     assert((i >= 0) && (i < 15)); 
00086 #endif
00087     return data_[i];
00088   }
00089 
00090   inline TVector& operator=(const TVector& x) { 
00091     memcpy((void *) data_, (void *) x.data_, sizeof(TVector));
00092     return *this; 
00093   }
00094   inline TVector& operator=(const DataType& v) { 
00095     data_[0] = v; 
00096     data_[1] = v; 
00097     data_[2] = v; 
00098     data_[3] = v; 
00099     data_[4] = v; 
00100     data_[5] = v; 
00101     data_[6] = v; 
00102     data_[7] = v; 
00103     data_[8] = v; 
00104     data_[9] = v; 
00105     data_[10] = v; 
00106     data_[11] = v; 
00107     data_[12] = v; 
00108     data_[13] = v; 
00109     data_[14] = v; 
00110     return *this; 
00111   }
00112 
00113 #define Vector_Vector_Operator(ope,op)                          \
00114    inline TVector& operator ope (const TVector &x)              \
00115      {                                                          \
00116       data_[0] ope x.data_[0];                                  \
00117       data_[1] ope x.data_[1];                                  \
00118       data_[2] ope x.data_[2];                                  \
00119       data_[3] ope x.data_[3];                                  \
00120       data_[4] ope x.data_[4];                                  \
00121       data_[5] ope x.data_[5];                                  \
00122       data_[6] ope x.data_[6];                                  \
00123       data_[7] ope x.data_[7];                                  \
00124       data_[8] ope x.data_[8];                                  \
00125       data_[9] ope x.data_[9];                                  \
00126       data_[10] ope x.data_[10];                                \
00127       data_[11] ope x.data_[11];                                \
00128       data_[12] ope x.data_[12];                                \
00129       data_[13] ope x.data_[13];                                \
00130       data_[14] ope x.data_[14];                                \
00131       return(*this);                                            \
00132      }                                                          \
00133    inline TVector operator op (const TVector &x) const          \
00134      {                                                          \
00135       TVector ret(*this);                                       \
00136       ret.data_[0] ope x.data_[0];                              \
00137       ret.data_[1] ope x.data_[1];                              \
00138       ret.data_[2] ope x.data_[2];                              \
00139       ret.data_[3] ope x.data_[3];                              \
00140       ret.data_[4] ope x.data_[4];                              \
00141       ret.data_[5] ope x.data_[5];                              \
00142       ret.data_[6] ope x.data_[6];                              \
00143       ret.data_[7] ope x.data_[7];                              \
00144       ret.data_[8] ope x.data_[8];                              \
00145       ret.data_[9] ope x.data_[9];                              \
00146       ret.data_[10] ope x.data_[10];                            \
00147       ret.data_[11] ope x.data_[11];                            \
00148       ret.data_[12] ope x.data_[12];                            \
00149       ret.data_[13] ope x.data_[13];                            \
00150       ret.data_[14] ope x.data_[14];                            \
00151       return(ret);                                              \
00152      }
00153    Vector_Vector_Operator(+=,+)
00154    Vector_Vector_Operator(-=,-)
00155    Vector_Vector_Operator(*=,*)
00156    Vector_Vector_Operator(/=,/)
00157 #undef Vector_Vector_Operator
00158 
00159 #define Vector_Scalar_Operator(ope,op)                          \
00160    inline TVector& operator ope (const DataType &v)             \
00161      {                                                          \
00162       data_[0] ope v;                                           \
00163       data_[1] ope v;                                           \
00164       data_[2] ope v;                                           \
00165       data_[3] ope v;                                           \
00166       data_[4] ope v;                                           \
00167       data_[5] ope v;                                           \
00168       data_[6] ope v;                                           \
00169       data_[7] ope v;                                           \
00170       data_[8] ope v;                                           \
00171       data_[9] ope v;                                           \
00172       data_[10] ope v;                                          \
00173       data_[11] ope v;                                          \
00174       data_[12] ope v;                                          \
00175       data_[13] ope v;                                          \
00176       data_[14] ope v;                                          \
00177       return(*this);                                            \
00178      }                                                          \
00179    inline TVector operator op (const DataType &v) const         \
00180      {                                                          \
00181       TVector ret(*this);                                       \
00182       ret.data_[0] ope v;                                       \
00183       ret.data_[1] ope v;                                       \
00184       ret.data_[2] ope v;                                       \
00185       ret.data_[3] ope v;                                       \
00186       ret.data_[4] ope v;                                       \
00187       ret.data_[5] ope v;                                       \
00188       ret.data_[6] ope v;                                       \
00189       ret.data_[7] ope v;                                       \
00190       ret.data_[8] ope v;                                       \
00191       ret.data_[9] ope v;                                       \
00192       ret.data_[10] ope v;                                      \
00193       ret.data_[11] ope v;                                      \
00194       ret.data_[12] ope v;                                      \
00195       ret.data_[13] ope v;                                      \
00196       ret.data_[14] ope v;                                      \
00197      return(ret);                                               \
00198      }
00199    Vector_Scalar_Operator(+=,+)
00200    Vector_Scalar_Operator(-=,-)
00201    Vector_Scalar_Operator(*=,*)
00202    Vector_Scalar_Operator(/=,/)
00203 #undef Vector_Scalar_Operator
00204 
00205    /* Define the negation operator */
00206    inline TVector operator - () const
00207      { 
00208        TVector ret;
00209        ret.data_[0] = -data_[0];
00210        ret.data_[1] = -data_[1];
00211        ret.data_[2] = -data_[2];
00212        ret.data_[3] = -data_[3];
00213        ret.data_[4] = -data_[4];
00214        ret.data_[5] = -data_[5];
00215        ret.data_[6] = -data_[6];
00216        ret.data_[7] = -data_[7];
00217        ret.data_[8] = -data_[8];
00218        ret.data_[9] = -data_[9];
00219        ret.data_[10] = -data_[10];
00220        ret.data_[11] = -data_[11];
00221        ret.data_[12] = -data_[12];
00222        ret.data_[13] = -data_[13];
00223        ret.data_[14] = -data_[14];
00224        return(ret);
00225      }
00226 
00227 #define Vector_Vector_RelOperator(op)                           \
00228    inline int operator op (const TVector &x) const              \
00229      { return(                                                  \
00230                (data_[0] op x.data_[0])                         \
00231             && (data_[1] op x.data_[1])                         \
00232             && (data_[2] op x.data_[2])                         \
00233             && (data_[3] op x.data_[3])                         \
00234             && (data_[4] op x.data_[4])                         \
00235             && (data_[5] op x.data_[5])                         \
00236             && (data_[6] op x.data_[6])                         \
00237             && (data_[7] op x.data_[7])                         \
00238             && (data_[8] op x.data_[8])                         \
00239             && (data_[9] op x.data_[9])                         \
00240             && (data_[10] op x.data_[10])                       \
00241             && (data_[11] op x.data_[11])                       \
00242             && (data_[12] op x.data_[12])                       \
00243             && (data_[13] op x.data_[13])                       \
00244             && (data_[14] op x.data_[14])                       \
00245              ) ; }                     
00246 
00247    Vector_Vector_RelOperator(==)
00248    Vector_Vector_RelOperator(!=)
00249 #undef Vector_Vector_RelOperator
00250 
00251 #define Vector_Vector_RelOperator(op)                           \
00252    inline int operator op (const TVector &x) const              \
00253      { return(                                                  \
00254                (data_[0] op x.data_[0])                         \
00255             || (data_[1] op x.data_[1])                         \
00256             || (data_[2] op x.data_[2])                         \
00257             || (data_[3] op x.data_[3])                         \
00258             || (data_[4] op x.data_[4])                         \
00259             || (data_[5] op x.data_[5])                         \
00260             || (data_[6] op x.data_[6])                         \
00261             || (data_[7] op x.data_[7])                         \
00262             || (data_[8] op x.data_[8])                         \
00263             || (data_[9] op x.data_[9])                         \
00264             || (data_[10] op x.data_[10])                       \
00265             || (data_[11] op x.data_[11])                       \
00266             || (data_[12] op x.data_[12])                       \
00267             || (data_[13] op x.data_[13])                       \
00268             || (data_[14] op x.data_[14])                       \
00269              ) ; }                     
00270 
00271    Vector_Vector_RelOperator(>)
00272    Vector_Vector_RelOperator(<)
00273    Vector_Vector_RelOperator(>=)
00274    Vector_Vector_RelOperator(<=)
00275 #undef Vector_Vector_RelOperator
00276 
00277 #define Vector_Scalar_RelOperator(op)                           \
00278    inline int operator op (const DataType &v) const             \
00279      { return(                                                  \
00280                (data_[0] op v)                                  \
00281             && (data_[1] op v)                                  \
00282             && (data_[2] op v)                                  \
00283             && (data_[3] op v)                                  \
00284             && (data_[4] op v)                                  \
00285             && (data_[5] op v)                                  \
00286             && (data_[6] op v)                                  \
00287             && (data_[7] op v)                                  \
00288             && (data_[8] op v)                                  \
00289             && (data_[9] op v)                                  \
00290             && (data_[10] op v)                                 \
00291             && (data_[11] op v)                                 \
00292             && (data_[12] op v)                                 \
00293             && (data_[13] op v)                                 \
00294             && (data_[14] op v)                                 \
00295              ); }                     
00296 
00297    Vector_Scalar_RelOperator(==)
00298    Vector_Scalar_RelOperator(!=)
00299 #undef Vector_Scalar_RelOperator
00300 
00301 #define Vector_Scalar_RelOperator(op)                           \
00302    inline int operator op (const DataType &v) const             \
00303      { return(                                                  \
00304                (data_[0] op v)                                  \
00305             || (data_[1] op v)                                  \
00306             || (data_[2] op v)                                  \
00307             || (data_[3] op v)                                  \
00308             || (data_[4] op v)                                  \
00309             || (data_[5] op v)                                  \
00310             || (data_[6] op v)                                  \
00311             || (data_[7] op v)                                  \
00312             || (data_[8] op v)                                  \
00313             || (data_[9] op v)                                  \
00314             || (data_[10] op v)                                 \
00315             || (data_[11] op v)                                 \
00316             || (data_[12] op v)                                 \
00317             || (data_[13] op v)                                 \
00318             || (data_[14] op v)                                 \
00319               ); }                     
00320 
00321    Vector_Scalar_RelOperator(>)
00322    Vector_Scalar_RelOperator(<)
00323    Vector_Scalar_RelOperator(>=)
00324    Vector_Scalar_RelOperator(<=)
00325 #undef Vector_Scalar_RelOperator
00326 
00327    /* Define elementwise minimum and maximum functions for Vectors */
00328    inline void min(const TVector &x) { 
00329      data_[0] = (data_[0] < x.data_[0]) ? data_[0] : x.data_[0]; 
00330      data_[1] = (data_[1] < x.data_[1]) ? data_[1] : x.data_[1]; 
00331      data_[2] = (data_[2] < x.data_[2]) ? data_[2] : x.data_[2]; 
00332      data_[3] = (data_[3] < x.data_[3]) ? data_[3] : x.data_[3]; 
00333      data_[4] = (data_[4] < x.data_[4]) ? data_[4] : x.data_[4]; 
00334      data_[5] = (data_[5] < x.data_[5]) ? data_[5] : x.data_[5]; 
00335      data_[6] = (data_[6] < x.data_[6]) ? data_[6] : x.data_[6]; 
00336      data_[7] = (data_[7] < x.data_[7]) ? data_[7] : x.data_[7]; 
00337      data_[8] = (data_[8] < x.data_[8]) ? data_[8] : x.data_[8]; 
00338      data_[9] = (data_[9] < x.data_[9]) ? data_[9] : x.data_[9]; 
00339      data_[10] = (data_[10] < x.data_[10]) ? data_[10] : x.data_[10]; 
00340      data_[11] = (data_[11] < x.data_[11]) ? data_[11] : x.data_[11]; 
00341      data_[12] = (data_[12] < x.data_[12]) ? data_[12] : x.data_[12]; 
00342      data_[13] = (data_[13] < x.data_[13]) ? data_[13] : x.data_[13]; 
00343      data_[14] = (data_[14] < x.data_[14]) ? data_[14] : x.data_[14]; 
00344    }
00345    inline void max(const TVector &x) {
00346      data_[0] = (data_[0] > x.data_[0]) ? data_[0] : x.data_[0]; 
00347      data_[1] = (data_[1] > x.data_[1]) ? data_[1] : x.data_[1]; 
00348      data_[2] = (data_[2] > x.data_[2]) ? data_[2] : x.data_[2]; 
00349      data_[3] = (data_[3] > x.data_[3]) ? data_[3] : x.data_[3]; 
00350      data_[4] = (data_[4] > x.data_[4]) ? data_[4] : x.data_[4]; 
00351      data_[5] = (data_[5] > x.data_[5]) ? data_[5] : x.data_[5]; 
00352      data_[6] = (data_[6] > x.data_[6]) ? data_[6] : x.data_[6]; 
00353      data_[7] = (data_[7] > x.data_[7]) ? data_[7] : x.data_[7]; 
00354      data_[8] = (data_[8] > x.data_[8]) ? data_[8] : x.data_[8]; 
00355      data_[9] = (data_[9] > x.data_[9]) ? data_[9] : x.data_[9]; 
00356      data_[10] = (data_[10] > x.data_[10]) ? data_[10] : x.data_[10]; 
00357      data_[11] = (data_[11] > x.data_[11]) ? data_[11] : x.data_[11]; 
00358      data_[12] = (data_[12] > x.data_[12]) ? data_[12] : x.data_[12]; 
00359      data_[13] = (data_[13] > x.data_[13]) ? data_[13] : x.data_[13]; 
00360      data_[14] = (data_[14] > x.data_[14]) ? data_[14] : x.data_[14]; 
00361    }
00362 
00363    /* Define minimum and maximum of components */
00364    inline DataType mincomp() const { 
00365      DataType min;
00366      min = data_[0];
00367      if (data_[1] < min) min = data_[1]; 
00368      if (data_[2] < min) min = data_[2]; 
00369      if (data_[3] < min) min = data_[3]; 
00370      if (data_[4] < min) min = data_[4]; 
00371      if (data_[5] < min) min = data_[5]; 
00372      if (data_[6] < min) min = data_[6]; 
00373      if (data_[7] < min) min = data_[7]; 
00374      if (data_[8] < min) min = data_[8]; 
00375      if (data_[9] < min) min = data_[9]; 
00376      if (data_[10] < min) min = data_[10]; 
00377      if (data_[11] < min) min = data_[11]; 
00378      if (data_[12] < min) min = data_[12]; 
00379      if (data_[13] < min) min = data_[13]; 
00380      if (data_[14] < min) min = data_[14]; 
00381      return min;
00382    }
00383    inline DataType maxcomp() const { 
00384      DataType max;
00385      max = data_[0];
00386      if (data_[1] > max) max = data_[1]; 
00387      if (data_[2] > max) max = data_[2]; 
00388      if (data_[3] > max) max = data_[3]; 
00389      if (data_[4] > max) max = data_[4]; 
00390      if (data_[5] > max) max = data_[5]; 
00391      if (data_[6] > max) max = data_[6]; 
00392      if (data_[7] > max) max = data_[7]; 
00393      if (data_[8] > max) max = data_[8]; 
00394      if (data_[9] > max) max = data_[9]; 
00395      if (data_[10] > max) max = data_[10]; 
00396      if (data_[11] > max) max = data_[11]; 
00397      if (data_[12] > max) max = data_[12]; 
00398      if (data_[13] > max) max = data_[13]; 
00399      if (data_[14] > max) max = data_[14]; 
00400      return max;
00401    }
00402 
00403    inline double abs() const {
00404      DataType s = data_[0]*data_[0];
00405      s += data_[1]*data_[1]; 
00406      s += data_[2]*data_[2]; 
00407      s += data_[3]*data_[3]; 
00408      s += data_[4]*data_[4]; 
00409      s += data_[5]*data_[5]; 
00410      s += data_[6]*data_[6]; 
00411      s += data_[7]*data_[7]; 
00412      s += data_[8]*data_[8]; 
00413      s += data_[9]*data_[9];
00414      s += data_[10]*data_[10];
00415      s += data_[11]*data_[11];
00416      s += data_[12]*data_[12];
00417      s += data_[13]*data_[13];
00418      s += data_[14]*data_[14];
00419      return (sqrt(double(s)));
00420    }
00421 
00422    inline TVector getmin(const TVector &x) const
00423      { TVector ret(*this); ret.min(x); return(ret); }
00424    inline TVector getmax(const TVector &x) const
00425      { TVector ret(*this); ret.max(x); return(ret); }
00426 
00427 public:
00428    DataType data_[15];
00429 };
00430 
00431 
00432 template <class DataType>
00433 inline ostream&  operator << (ostream& os, const Vector(15)<DataType> &v) {
00434   os << "(" 
00435      << v.data_[0] 
00436      << "," << v.data_[1] 
00437      << "," << v.data_[2] 
00438      << "," << v.data_[3] 
00439      << "," << v.data_[4] 
00440      << "," << v.data_[5] 
00441      << "," << v.data_[6] 
00442      << "," << v.data_[7] 
00443      << "," << v.data_[8] 
00444      << "," << v.data_[9] 
00445      << "," << v.data_[10] 
00446      << "," << v.data_[11] 
00447      << "," << v.data_[12] 
00448      << "," << v.data_[13] 
00449      << "," << v.data_[14] 
00450      << ")";
00451   return os;
00452 }
00453 
00454 template <class DataType>
00455 inline Vector(15)<DataType> Min(const Vector(15)<DataType> &x, 
00456                                    const Vector(15)<DataType> &y) 
00457   { Vector(15)<DataType> ret(x); ret.min(y); return(ret); }
00458 
00459 template <class DataType>
00460 inline Vector(15)<DataType> Max(const Vector(15)<DataType> &x, 
00461                                    const Vector(15)<DataType> &y) 
00462   { Vector(15)<DataType> ret(x); ret.max(y); return(ret); }
00463 
00464 template <class DataType>
00465 inline double abs(const Vector(15)<DataType> &x) 
00466   { return (x.abs()); }
00467 
00468 template <class DataType>
00469 inline DataType mincomp(const Vector(15)<DataType> &x) 
00470   { return(x.mincomp()); }
00471 
00472 template <class DataType>
00473 inline DataType maxcomp(const Vector(15)<DataType> &x) 
00474   { return(x.maxcomp()); }
00475 
00476 
00477 #define Global_Vector_Scalar_Operator(op)                                  \
00478 template <class DataType>                                                  \
00479 inline Vector(15)<DataType> operator op (const DataType &v,                 \
00480    const Vector(15)<DataType> &x)                                           \
00481    { return(x op v); }
00482 
00483 Global_Vector_Scalar_Operator(+)
00484 Global_Vector_Scalar_Operator(-)
00485 Global_Vector_Scalar_Operator(*)
00486 Global_Vector_Scalar_Operator(/)
00487 #undef Global_Vector_Scalar_Operator
00488 
00489 
00490 #define Global_Vector_Function(fct)                                       \
00491 template <class DataType>                                                 \
00492 inline Vector(15)<DataType> fct(const Vector(15)<DataType> &x)              \
00493    {                                                                      \
00494       Vector(15)<DataType> ret;                                            \
00495       ret[0] = fct(x[0]);                                                 \
00496       ret[1] = fct(x[1]);                                                 \
00497       ret[2] = fct(x[2]);                                                 \
00498       ret[3] = fct(x[3]);                                                 \
00499       ret[4] = fct(x[4]);                                                 \
00500       ret[5] = fct(x[5]);                                                 \
00501       ret[6] = fct(x[6]);                                                 \
00502       ret[7] = fct(x[7]);                                                 \
00503       ret[8] = fct(x[8]);                                                 \
00504       ret[9] = fct(x[9]);                                                 \
00505       ret[10] = fct(x[10]);                                               \
00506       ret[11] = fct(x[11]);                                               \
00507       ret[12] = fct(x[12]);                                               \
00508       ret[13] = fct(x[13]);                                               \
00509       ret[14] = fct(x[14]);                                               \
00510       return(ret);                                                        \
00511      }
00512 
00513 Global_Vector_Function(fabs)
00514 Global_Vector_Function(sqrt)
00515 #undef Global_Vector_Function
00516 
00517 
00518 #define Vector_Vector_Functions(NameTo,NameFrom,ope)                      \
00519   template <class DataType, class VectorType>                             \
00520   inline void NameTo (Vector(15)<DataType> &x, const VectorType &y)        \
00521     {                                                                     \
00522       x(0) ope y(0);                                                      \
00523       x(1) ope y(1);                                                      \
00524       x(2) ope y(2);                                                      \
00525       x(3) ope y(3);                                                      \
00526       x(4) ope y(4);                                                      \
00527       x(5) ope y(5);                                                      \
00528       x(6) ope y(6);                                                      \
00529       x(7) ope y(7);                                                      \
00530       x(8) ope y(8);                                                      \
00531       x(9) ope y(9);                                                      \
00532       x(10) ope y(10);                                                    \
00533       x(11) ope y(11);                                                    \
00534       x(12) ope y(12);                                                    \
00535       x(13) ope y(13);                                                    \
00536       x(14) ope y(14);                                                    \
00537     }                                                                     \
00538   template <class DataType, class VectorType>                             \
00539   inline void NameFrom (VectorType &x, const Vector(15)<DataType> &y)      \
00540     {                                                                     \
00541       x(0) ope y(0);                                                      \
00542       x(1) ope y(1);                                                      \
00543       x(2) ope y(2);                                                      \
00544       x(3) ope y(3);                                                      \
00545       x(4) ope y(4);                                                      \
00546       x(5) ope y(5);                                                      \
00547       x(6) ope y(6);                                                      \
00548       x(7) ope y(7);                                                      \
00549       x(8) ope y(8);                                                      \
00550       x(9) ope y(9);                                                      \
00551       x(10) ope y(10);                                                    \
00552       x(11) ope y(11);                                                    \
00553       x(12) ope y(12);                                                    \
00554       x(13) ope y(13);                                                    \
00555       x(14) ope y(14);                                                    \
00556     }
00557 
00558    Vector_Vector_Functions(equals_to,equals_from,=)
00559    Vector_Vector_Functions(plus_to,plus_from,+=)
00560    Vector_Vector_Functions(minus_to,minus_from,-=)
00561    Vector_Vector_Functions(multiply_to,multiply_from,*=)
00562    Vector_Vector_Functions(divide_to,divide_from,/=)
00563 #undef Vector_Vector_Functions
00564 
00565 
00566 #endif


Quickstart     Users Guide     Programmers Reference     Installation      Examples     Download



AMROC Main      Home      Contact
last update: 06/01/04