Changeset 369 for XIOS/trunk/src/functor


Ignore:
Timestamp:
10/16/12 13:04:44 (12 years ago)
Author:
ymipsl
Message:

Major Update

  • redesign Type and attribute manipulation
  • add enumerate type and attribute
  • use blitz class array instead of boost class array

YM

Location:
XIOS/trunk/src/functor
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/functor/average.cpp

    r335 r369  
    11#include "average.hpp" 
     2#include "array_new.hpp" 
    23 
    34namespace xios 
     
    78      /// ////////////////////// Définitions ////////////////////// /// 
    89 
    9       CAverage::CAverage(DoubleArray doutput) 
     10      CAverage::CAverage(CArray<double,1>& doutput) 
    1011         : SuperClass(StdString("average"), doutput) 
    11       { /* Ne rien faire de plus */ } 
     12      { doutput.dumpStructureInformation(cout) ;/* Ne rien faire de plus */ } 
    1213 
    1314      CAverage::~CAverage(void) 
     
    1617      //--------------------------------------------------------------- 
    1718 
    18       void CAverage::apply(const DoubleArray _dinput, 
    19                                  DoubleArray _doutput) 
     19      void CAverage::apply(const CArray<double,1>& _dinput, 
     20                                 CArray<double,1>& _doutput) 
    2021      { 
     22/* 
    2123         const double * it1  = _dinput->data(), 
    2224                      * end1 = _dinput->data() + _dinput->num_elements();  
     
    2527              for (; it1 != end1; it1++, it++) *it  = *it1; 
    2628         else for (; it1 != end1; it1++, it++) *it += *it1;                
     29*/ 
     30        if (this->nbcall == 1) _doutput=_dinput ; 
     31        else _doutput+=_dinput ; 
     32       
    2733      } 
    2834       
    2935      void CAverage::final(void) 
    3036      { 
    31           double * it1  = this->getDataOutput()->data(), 
     37/*          double * it1  = this->getDataOutput()->data(), 
    3238                 * end1 = this->getDataOutput()->data() + this->getDataOutput()->num_elements(); 
    3339          for (; it1 != end1; it1++) *it1 /= this->nbcall; 
    3440          this->nbcall = 0;                                                    
     41*/ 
     42        doutput/=this->nbcall;  
     43        this->nbcall = 0;  
    3544      } 
    3645   } // namespace func 
  • XIOS/trunk/src/functor/average.hpp

    r335 r369  
    44/// xmlioserver headers /// 
    55#include "functor.hpp" 
     6#include "array_new.hpp" 
    67 
    78namespace xios 
     
    1415         /// Définition de type /// 
    1516         typedef CFunctor SuperClass; 
    16          typedef ARRAY(double, 1) DoubleArray; 
    1717 
    1818         public : 
     
    2121            //CAverage(void);                             // Not implemented. 
    2222            //CAverage(const CFunData & data); 
    23             CAverage(DoubleArray doutput); 
     23            CAverage(CArray<double,1>& doutput); 
    2424            //CAverage(const CAverage & average);         // Not implemented. 
    2525            //CAverage(const CAverage * const average);   // Not implemented. 
    2626 
    2727            /// Traitement /// 
    28             virtual void apply(const DoubleArray dinput, DoubleArray doutput); 
     28            virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 
    2929            virtual void final(void) ; 
    3030             
  • XIOS/trunk/src/functor/instant.cpp

    r335 r369  
    11#include "instant.hpp" 
     2#include "array_new.hpp" 
    23 
    34namespace xios 
     
    78      /// ////////////////////// Définitions ////////////////////// /// 
    89 
    9       CInstant::CInstant(DoubleArray doutput) 
     10      CInstant::CInstant(CArray<double,1>& doutput) 
    1011         : SuperClass(StdString("instant"), doutput) 
    1112      { /* Ne rien faire de plus */ } 
     
    1617      //--------------------------------------------------------------- 
    1718 
    18       void CInstant::apply(const DoubleArray _dinput, 
    19                                  DoubleArray _doutput) 
     19      void CInstant::apply(const CArray<double,1>& _dinput, 
     20                                 CArray<double,1>& _doutput) 
    2021      { 
    21          const double * it1  = _dinput->data(), 
     22/*               const double * it1  = _dinput->data(), 
    2223                      * end1 = _dinput->data() + _dinput->num_elements(); 
    2324         double * it   = _doutput->data(); 
    24          for (; it1 != end1; it1++, it++) *it  = *it1; 
     25         for (; it1 != end1; it1++, it++) *it  = *it1;*/ 
     26        _doutput=_dinput ; 
    2527      } 
    2628 
  • XIOS/trunk/src/functor/instant.hpp

    r335 r369  
    44/// xios headers /// 
    55#include "functor.hpp" 
     6#include "array_new.hpp" 
    67 
    78namespace xios 
     
    1415         /// Définition de type /// 
    1516         typedef CFunctor SuperClass; 
    16          typedef ARRAY(double, 1) DoubleArray; 
    1717 
    1818         public : 
     
    2121            //CInstant(void);                             // Not implemented. 
    2222            //CInstant(const CFunData & data); 
    23             CInstant(DoubleArray doutput); 
     23            CInstant(CArray<double,1>& doutput); 
    2424            //CInstant(const CInstant & instant);         // Not implemented. 
    2525            //CInstant(const CInstant * const instant);   // Not implemented. 
    2626 
    2727            /// Traitement /// 
    28             virtual void apply(const DoubleArray dinput, DoubleArray doutput); 
     28            virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 
    2929 
    3030            /// Destructeur /// 
  • XIOS/trunk/src/functor/maximum.cpp

    r335 r369  
    11#include "maximum.hpp" 
    2 #include <algorithm> 
     2#include "array_new.hpp" 
     3 
    34 
    45 
     
    910      /// ////////////////////// Définitions ////////////////////// /// 
    1011 
    11       CMaximum::CMaximum(DoubleArray doutput) 
     12      CMaximum::CMaximum(CArray<double,1>& doutput) 
    1213         : SuperClass(StdString("maximum"), doutput) 
    1314      { /* Ne rien faire de plus */ } 
     
    1819      //--------------------------------------------------------------- 
    1920 
    20       void CMaximum::apply(const DoubleArray _dinput, 
    21                                  DoubleArray _doutput) 
     21      void CMaximum::apply(const CArray<double,1>& _dinput, 
     22                                 CArray<double,1>& _doutput) 
    2223      { 
    23          const double * it1  = _dinput->data(), 
    24                       * end1 = _dinput->data() + _dinput->num_elements(); 
    25                double * it   = _doutput->data(); 
    26          if (this->nbcall == 1) 
    27               for (; it1 != end1; it1++, it++) *it = *it1; 
     24        const double * it1  = _dinput.dataFirst(), 
     25                     * end1 = _dinput.dataFirst() + _dinput.numElements(); 
     26              double * it   = _doutput.dataFirst(); 
     27         if (this->nbcall == 1) for (; it1 != end1; it1++, it++) *it = *it1; 
    2828         else for (; it1 != end1; it1++, it++) *it = std::max(*it1, *it); 
    2929 
    30          it1  = _dinput->data(), 
    31          end1 = _dinput->data() + _dinput->num_elements(); 
    32          it  = _doutput->data(); 
    33          double sum=0 ; 
    34          for (; it1 != end1; it1++, it++) sum+=*it; 
     30 
    3531      } 
    3632 
  • XIOS/trunk/src/functor/maximum.hpp

    r335 r369  
    44/// xios headers /// 
    55#include "functor.hpp" 
     6#include "array_new.hpp" 
    67 
    78namespace xios 
     
    1415         /// Définition de type /// 
    1516         typedef CFunctor SuperClass; 
    16          typedef ARRAY(double, 1) DoubleArray; 
    1717 
    1818         public : 
     
    2121            //CMaximum(void);                             // Not implemented. 
    2222            //CMaximum(const CFunData & data); 
    23             CMaximum(DoubleArray doutput); 
     23            CMaximum(CArray<double,1>& doutput); 
    2424            //CMaximum(const CMaximum & Maximum);         // Not implemented. 
    2525            //CMaximum(const CMaximum * const Maximum);   // Not implemented. 
    2626 
    2727            /// Traitement /// 
    28             virtual void apply(const DoubleArray dinput, DoubleArray doutput); 
     28            virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 
    2929 
    3030            /// Destructeur /// 
  • XIOS/trunk/src/functor/minimum.cpp

    r335 r369  
    11#include "minimum.hpp" 
     2#include "array_new.hpp" 
     3#include <algorithm> 
    24 
    35namespace xios 
     
    79      /// ////////////////////// Définitions ////////////////////// /// 
    810 
    9       CMinimum::CMinimum(DoubleArray doutput) 
     11      CMinimum::CMinimum(CArray<double,1>& doutput) 
    1012         : SuperClass(StdString("minimum"), doutput) 
    1113      { /* Ne rien faire de plus */ } 
     
    1618      //--------------------------------------------------------------- 
    1719 
    18       void CMinimum::apply(const DoubleArray _dinput, 
    19                                  DoubleArray _doutput) 
     20      void CMinimum::apply(const CArray<double,1>& _dinput, 
     21                                 CArray<double,1>& _doutput) 
    2022      { 
    21          const double * it1  = _dinput->data(), 
    22                       * end1 = _dinput->data() + _dinput->num_elements(); 
    23          double * it   = _doutput->data(); 
    24          if (this->nbcall == 1) 
    25               for (; it1 != end1; it1++, it++) *it = *it1; 
    26          else for (; it1 != end1; it1++, it++) *it = std::min(*it1, *it); 
     23        const double * it1  = _dinput.dataFirst(), 
     24                      * end1 = _dinput.dataFirst() + _dinput.numElements(); 
     25        double * it   = _doutput.dataFirst(); 
     26         
     27        if (this->nbcall == 1)  for (; it1 != end1; it1++, it++) *it = *it1; 
     28        else for (; it1 != end1; it1++, it++) *it = std::min(*it1, *it); 
     29 
    2730      } 
    2831 
  • XIOS/trunk/src/functor/minimum.hpp

    r335 r369  
    44/// xmlioserver headers /// 
    55#include "functor.hpp" 
     6#include "array_new.hpp" 
    67 
    78namespace xios 
     
    1415         /// Définition de type /// 
    1516         typedef CFunctor SuperClass; 
    16          typedef ARRAY(double, 1) DoubleArray; 
    1717 
    1818         public : 
     
    2121            //CMinimum(void);                             // Not implemented. 
    2222            //CMinimum(const CFunData & data); 
    23             CMinimum(DoubleArray doutput); 
     23            CMinimum(CArray<double,1>& doutput); 
    2424            //CMinimum(const CMinimum & Minimum);         // Not implemented. 
    2525            //CMinimum(const CMinimum * const Minimum);   // Not implemented. 
    2626 
    2727            /// Traitement /// 
    28             virtual void apply(const DoubleArray dinput, DoubleArray doutput); 
     28            virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 
    2929 
    3030            /// Destructeur /// 
  • XIOS/trunk/src/functor/once.cpp

    r335 r369  
    11#include "once.hpp" 
     2#include "array_new.hpp" 
    23 
    34namespace xios 
     
    78      /// ////////////////////// Définitions ////////////////////// /// 
    89 
    9       COnce::COnce(DoubleArray doutput) 
     10      COnce::COnce(CArray<double,1>& doutput) 
    1011         : SuperClass(StdString("once"), doutput) 
    1112      { /* Ne rien faire de plus */ } 
     
    1617      //--------------------------------------------------------------- 
    1718 
    18       void COnce::apply(const DoubleArray _dinput, 
    19                               DoubleArray _doutput) 
     19      void COnce::apply(const CArray<double,1>& _dinput, 
     20                              CArray<double,1>& _doutput) 
    2021      { 
    21          const double * it1  = _dinput->data(), 
     22/*               const double * it1  = _dinput->data(), 
    2223                      * end1 = _dinput->data() + _dinput->num_elements(); 
    2324               double * it   = _doutput->data(); 
    24         for (; it1 != end1; it1++, it++) *it  = *it1; 
     25        for (; it1 != end1; it1++, it++) *it  = *it1;*/ 
     26        _doutput=_dinput ; 
    2527      } 
    2628 
  • XIOS/trunk/src/functor/once.hpp

    r335 r369  
    44/// xios headers /// 
    55#include "functor.hpp" 
     6#include "array_new.hpp" 
    67 
    78namespace xios 
     
    1415         /// Définition de type /// 
    1516         typedef CFunctor SuperClass; 
    16          typedef ARRAY(double, 1) DoubleArray; 
    1717 
    1818         public : 
     
    2020            /// Constructeurs /// 
    2121            //COnce(void);                       // Not implemented. 
    22             COnce(DoubleArray doutput); 
     22            COnce(CArray<double,1>& doutput); 
    2323            //COnce(const COnce & once);         // Not implemented. 
    2424            //COnce(const COnce * const once);   // Not implemented. 
    2525 
    2626            /// Traitement /// 
    27             virtual void apply(const DoubleArray dinput, DoubleArray doutput); 
     27            virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 
    2828 
    2929            /// Destructeur /// 
Note: See TracChangeset for help on using the changeset viewer.