Ignore:
Timestamp:
09/11/17 17:06:38 (7 years ago)
Author:
ymipsl
Message:

Buf fix in reduction. Missing value update was not set correctly

YM

Location:
XIOS/dev/XIOS_DEV_CMIP6/src
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/filter/spatial_transform_filter.cpp

    r1158 r1260  
    196196      std::vector<bool> localInitFlag(dataCurrentDest.numElements(), true); 
    197197      currentBuff = 0; 
     198      bool firstPass=true;  
    198199      for (itRecv = itbRecv; itRecv != iteRecv; ++itRecv) 
    199200      { 
     
    204205                         dataCurrentDest, 
    205206                         localInitFlag, 
    206                          ignoreMissingValue); 
     207                         ignoreMissingValue,firstPass); 
    207208 
    208209        currentBuff += countSize; 
     210        firstPass=false ; 
    209211      } 
    210212 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/average_reduction.cpp

    r1158 r1260  
    3131                                       CArray<double,1>& dataOut, 
    3232                                       std::vector<bool>& flagInitial,                      
    33                                        bool ignoreMissingValue) 
     33                                       bool ignoreMissingValue, bool firstPass) 
    3434{ 
    3535  if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; }   
     
    4141    double currentWeight  = 0.0; 
    4242 
    43     dataOut=std::numeric_limits<double>::quiet_NaN(); 
     43    if (firstPass) dataOut=std::numeric_limits<double>::quiet_NaN(); 
    4444 
    4545    for (int idx = 0; idx < nbLocalIndex; ++idx) 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/average_reduction.hpp

    r1158 r1260  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial,                      
    29                      bool ignoreMissingValue); 
     29                     bool ignoreMissingValue, bool firstPass); 
    3030 
    3131  virtual void updateData(CArray<double,1>& dataOut); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/extract.cpp

    r1158 r1260  
    3030                                       CArray<double,1>& dataOut, 
    3131                                       std::vector<bool>& flagInitial, 
    32                                        bool ignoreMissingValue) 
     32                                       bool ignoreMissingValue, bool firstPass) 
    3333{ 
    3434  int nbLocalIndex = localIndex.size(); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/extract.hpp

    r1158 r1260  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      bool ignoreMissingValue); 
     29                     bool ignoreMissingValue, bool firstPass); 
    3030 
    3131  virtual ~CExtractReductionAlgorithm() {} 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/max_reduction.cpp

    r1158 r1260  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    bool ignoreMissingValue) 
     33                                   bool ignoreMissingValue, bool firstPass) 
    3434{  
    3535  if (ignoreMissingValue) 
     
    3737    int nbLocalIndex = localIndex.size(); 
    3838    int currentlocalIndex = 0; 
    39     dataOut=std::numeric_limits<double>::quiet_NaN();     
     39    if (firstPass) dataOut=std::numeric_limits<double>::quiet_NaN();     
    4040    for (int idx = 0; idx < nbLocalIndex; ++idx) 
    4141    { 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/max_reduction.hpp

    r1158 r1260  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      bool ignoreMissingValue); 
     29                     bool ignoreMissingValue, bool firstPass); 
    3030 
    3131  virtual ~CMaxReductionAlgorithm() {} 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/min_reduction.cpp

    r1158 r1260  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    bool ignoreMissingValue) 
     33                                   bool ignoreMissingValue, bool firstPass) 
    3434{ 
    3535  if (ignoreMissingValue) 
     
    3737    int nbLocalIndex = localIndex.size(); 
    3838    int currentlocalIndex = 0; 
    39     dataOut=std::numeric_limits<double>::quiet_NaN(); 
     39    if (firstPass) dataOut=std::numeric_limits<double>::quiet_NaN(); 
    4040    for (int idx = 0; idx < nbLocalIndex; ++idx) 
    4141    { 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/min_reduction.hpp

    r1158 r1260  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial,                      
    29                      bool ignoreMissingValue); 
     29                     bool ignoreMissingValue, bool firstPass); 
    3030 
    3131  virtual ~CMinReductionAlgorithm() {} 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/reduction.hpp

    r1158 r1260  
    4141    \param [in/out] dataOut Array contains local data 
    4242    \param [in/out] flagInitial vector of boolean to mark the local index already initialized. True means there is a need for initialization 
     43    \param [in] firstPass indicate if it is the first time the apply funtion is called for a same transformation, in order to make a clean initialization  
    4344  */ 
    4445  virtual void apply(const std::vector<std::pair<int,double> >& localIndex, 
     
    4647                     CArray<double,1>& dataOut, 
    4748                     std::vector<bool>& flagInitial,                      
    48                      bool ignoreMissingValue) = 0; 
     49                     bool ignoreMissingValue, bool firstPass) = 0; 
    4950  /*! 
    5051    Update local data  
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/sum_reduction.cpp

    r1158 r1260  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    bool ignoreMissingValue) 
     33                                   bool ignoreMissingValue, bool firstPass) 
    3434{ 
    3535  if (ignoreMissingValue) 
     
    3838    int currentlocalIndex = 0; 
    3939 
    40     dataOut=std::numeric_limits<double>::quiet_NaN(); 
     40    if (firstPass) dataOut=std::numeric_limits<double>::quiet_NaN(); 
    4141   
    4242    for (int idx = 0; idx < nbLocalIndex; ++idx) 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/Functions/sum_reduction.hpp

    r1158 r1260  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      bool ignoreMissingValue); 
     29                     bool ignoreMissingValue, bool firstPass); 
    3030 
    3131  virtual ~CSumReductionAlgorithm() {} 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_extract_domain.cpp

    r1158 r1260  
    6969                                        CArray<double,1>& dataOut, 
    7070                                        std::vector<bool>& flagInitial,                      
    71                                         bool ignoreMissingValue) 
     71                                        bool ignoreMissingValue, bool firstPass) 
    7272{ 
    73   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
     73  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    7474} 
    7575 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_extract_domain.hpp

    r1158 r1260  
    3434                     CArray<double,1>& dataOut, 
    3535                     std::vector<bool>& flagInitial,                      
    36                      bool ignoreMissingValue); 
     36                     bool ignoreMissingValue, bool firstPass); 
    3737 
    3838  virtual ~CAxisAlgorithmExtractDomain(); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_domain.cpp

    r1204 r1260  
    7777                                       CArray<double,1>& dataOut, 
    7878                                       std::vector<bool>& flagInitial,                      
    79                                        bool ignoreMissingValue) 
     79                                       bool ignoreMissingValue, bool firstPass) 
    8080{ 
    81   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
     81  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    8282} 
    8383 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_domain.hpp

    r1158 r1260  
    3333                     CArray<double,1>& dataOut, 
    3434                     std::vector<bool>& flagInitial,                      
    35                      bool ignoreMissingValue); 
     35                     bool ignoreMissingValue, bool firstPass); 
    3636 
    3737  virtual void updateData(CArray<double,1>& dataOut); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_expand.cpp

    r1158 r1260  
    161161  else domainDestination->domain_ref.setValue(domainDstRef); 
    162162 
     163   
    163164  // Here are attributes of source need tranfering 
    164165  int niGloSrc = domainSource->ni_glo; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/generic_algorithm_transformation.cpp

    r1221 r1260  
    3232                                            CArray<double,1>& dataOut, 
    3333                                            std::vector<bool>& flagInitial, 
    34                                             bool ignoreMissingValue) 
     34                                            bool ignoreMissingValue, bool firstPass  ) 
    3535{ 
    3636  int nbLocalIndex = localIndex.size();    
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/generic_algorithm_transformation.hpp

    r1216 r1260  
    6464    \param [in/out] flagInitial vector of boolean to mark the local index already initialized. True means there is a need for initalization 
    6565    \param [in] ignoreMissingValue don't count missing value in operation if this flag is true 
     66    \param [in] firstPass indicate if it is the first time the apply funtion is called for a same transformation, in order to make a clean initialization  
    6667  */ 
    6768  virtual void apply(const std::vector<std::pair<int,double> >& localIndex, 
     
    6970                     CArray<double,1>& dataOut, 
    7071                     std::vector<bool>& flagInitial,                      
    71                      bool ignoreMissingValue); 
     72                     bool ignoreMissingValue, bool firstPass); 
    7273 
    7374  /*! 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_extract_axis.cpp

    r1158 r1260  
    5656                                         CArray<double,1>& dataOut, 
    5757                                         std::vector<bool>& flagInitial,                      
    58                                          bool ignoreMissingValue) 
     58                                         bool ignoreMissingValue, bool firstPass) 
    5959{ 
    60   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
     60  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    6161} 
    6262 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_extract_axis.hpp

    r1158 r1260  
    3333                     CArray<double,1>& dataOut, 
    3434                     std::vector<bool>& flagInitial,                      
    35                      bool ignoreMissingValue); 
     35                     bool ignoreMissingValue, bool firstPass); 
    3636 
    3737  virtual ~CScalarAlgorithmExtractAxis(); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_reduce_axis.cpp

    r1158 r1260  
    8484} 
    8585 
    86 void CScalarAlgorithmReduceAxis::apply(const std::vector<std::pair<int,double> >& localIndex, 
    87                                          const double* dataInput, 
    88                                          CArray<double,1>& dataOut, 
    89                                          std::vector<bool>& flagInitial, 
    90                                        bool ignoreMissingValue) 
     86void CScalarAlgorithmReduceAxis::apply(const std::vector<std::pair<int,double> >& localIndex, const double* dataInput, CArray<double,1>& dataOut, 
     87                                         std::vector<bool>& flagInitial, bool ignoreMissingValue, bool firstPass) 
    9188{ 
    92   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
     89  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    9390} 
    9491 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_reduce_axis.hpp

    r1158 r1260  
    3333                     CArray<double,1>& dataOut, 
    3434                     std::vector<bool>& flagInitial, 
    35                      bool ignoreMissingValue); 
     35                     bool ignoreMissingValue, bool firstPass); 
    3636 
    3737  virtual void updateData(CArray<double,1>& dataOut); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_reduce_domain.cpp

    r1158 r1260  
    8282                                         CArray<double,1>& dataOut, 
    8383                                         std::vector<bool>& flagInitial,                      
    84                                          bool ignoreMissingValue) 
     84                                         bool ignoreMissingValue, bool firstPass) 
    8585{ 
    86   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
     86  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    8787} 
    8888 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/scalar_algorithm_reduce_domain.hpp

    r1158 r1260  
    3333                     CArray<double,1>& dataOut, 
    3434                     std::vector<bool>& flagInitial,                      
    35                      bool ignoreMissingValue); 
     35                     bool ignoreMissingValue, bool firstPass); 
    3636 
    3737  virtual void updateData(CArray<double,1>& dataOut); 
Note: See TracChangeset for help on using the changeset viewer.