Ignore:
Timestamp:
03/16/17 15:04:53 (7 years ago)
Author:
mhnguyen
Message:

Correcting behavior of detecting_missing_value:

  • Missing value detection is activated only when detecting_missing_value = true

and a default_value is defined.

  • By default, undefined value by the computation of vertical (horizontal) interpolation will be NaN (not a number).

They are only converted to default_value if missing value detection is activated

Test

  • On Curie
  • Work
Location:
XIOS/trunk/src/transformation
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/transformation/Functions/average_reduction.cpp

    r1043 r1076  
    3030                                       const double* dataInput, 
    3131                                       CArray<double,1>& dataOut, 
    32                                        std::vector<bool>& flagInitial, 
    33                                        const double& defaultValue) 
     32                                       std::vector<bool>& flagInitial,                      
     33                                       bool ignoreMissingValue) 
    3434{ 
    35   if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; } 
    36   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
     35  if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; }   
    3736 
    38   if (hasMissingValue) 
     37  if (ignoreMissingValue) 
    3938  { 
    4039    int nbLocalIndex = localIndex.size(); 
  • XIOS/trunk/src/transformation/Functions/average_reduction.hpp

    r1018 r1076  
    2626                     const double* dataInput, 
    2727                     CArray<double,1>& dataOut, 
    28                      std::vector<bool>& flagInitial, 
    29                      const double& defaultValue); 
     28                     std::vector<bool>& flagInitial,                      
     29                     bool ignoreMissingValue); 
    3030 
    3131  virtual void updateData(CArray<double,1>& dataOut); 
  • XIOS/trunk/src/transformation/Functions/extract.cpp

    r1018 r1076  
    3030                                       CArray<double,1>& dataOut, 
    3131                                       std::vector<bool>& flagInitial, 
    32                                        const double& defaultValue) 
     32                                       bool ignoreMissingValue) 
    3333{ 
    3434  int nbLocalIndex = localIndex.size(); 
  • XIOS/trunk/src/transformation/Functions/extract.hpp

    r1018 r1076  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      const double& defaultValue); 
     29                     bool ignoreMissingValue); 
    3030 
    3131  virtual ~CExtractReductionAlgorithm() {} 
  • XIOS/trunk/src/transformation/Functions/max_reduction.cpp

    r1043 r1076  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    const double& defaultValue) 
    34 { 
    35   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
    36  
    37   if (hasMissingValue) 
     33                                   bool ignoreMissingValue) 
     34{  
     35  if (ignoreMissingValue) 
    3836  { 
    3937    int nbLocalIndex = localIndex.size(); 
  • XIOS/trunk/src/transformation/Functions/max_reduction.hpp

    r1018 r1076  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      const double& defaultValue); 
     29                     bool ignoreMissingValue); 
    3030 
    3131  virtual ~CMaxReductionAlgorithm() {} 
  • XIOS/trunk/src/transformation/Functions/min_reduction.cpp

    r1043 r1076  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    const double& defaultValue) 
     33                                   bool ignoreMissingValue) 
    3434{ 
    35   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
    36  
    37   if (hasMissingValue) 
     35  if (ignoreMissingValue) 
    3836  { 
    3937    int nbLocalIndex = localIndex.size(); 
  • XIOS/trunk/src/transformation/Functions/min_reduction.hpp

    r1018 r1076  
    2626                     const double* dataInput, 
    2727                     CArray<double,1>& dataOut, 
    28                      std::vector<bool>& flagInitial, 
    29                      const double& defaultValue); 
     28                     std::vector<bool>& flagInitial,                      
     29                     bool ignoreMissingValue); 
    3030 
    3131  virtual ~CMinReductionAlgorithm() {} 
  • XIOS/trunk/src/transformation/Functions/reduction.hpp

    r1018 r1076  
    4545                     const double* dataInput, 
    4646                     CArray<double,1>& dataOut, 
    47                      std::vector<bool>& flagInitial, 
    48                      const double& defaultValue) = 0; 
     47                     std::vector<bool>& flagInitial,                      
     48                     bool ignoreMissingValue) = 0; 
    4949  /*! 
    5050    Update local data  
  • XIOS/trunk/src/transformation/Functions/sum_reduction.cpp

    r1043 r1076  
    3131                                   CArray<double,1>& dataOut, 
    3232                                   std::vector<bool>& flagInitial, 
    33                                    const double& defaultValue) 
     33                                   bool ignoreMissingValue) 
    3434{ 
    35   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
    36  
    37   if (hasMissingValue) 
     35  if (ignoreMissingValue) 
    3836  { 
    3937    int nbLocalIndex = localIndex.size(); 
  • XIOS/trunk/src/transformation/Functions/sum_reduction.hpp

    r1018 r1076  
    2727                     CArray<double,1>& dataOut, 
    2828                     std::vector<bool>& flagInitial, 
    29                      const double& defaultValue); 
     29                     bool ignoreMissingValue); 
    3030 
    3131  virtual ~CSumReductionAlgorithm() {} 
  • XIOS/trunk/src/transformation/axis_algorithm_extract_domain.cpp

    r1018 r1076  
    6868                                        const double* dataInput, 
    6969                                        CArray<double,1>& dataOut, 
    70                                         std::vector<bool>& flagInitial, 
    71                                         const double& defaultValue) 
     70                                        std::vector<bool>& flagInitial,                      
     71                                        bool ignoreMissingValue) 
    7272{ 
    73   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue); 
     73  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
    7474} 
    7575 
  • XIOS/trunk/src/transformation/axis_algorithm_extract_domain.hpp

    r933 r1076  
    3333                     const double* dataInput, 
    3434                     CArray<double,1>& dataOut, 
    35                      std::vector<bool>& flagInitial, 
    36                      const double& defaultValue); 
     35                     std::vector<bool>& flagInitial,                      
     36                     bool ignoreMissingValue); 
    3737 
    3838  virtual ~CAxisAlgorithmExtractDomain(); 
  • XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.cpp

    r1018 r1076  
    7676                                       const double* dataInput, 
    7777                                       CArray<double,1>& dataOut, 
    78                                        std::vector<bool>& flagInitial, 
    79                                        const double& defaultValue) 
     78                                       std::vector<bool>& flagInitial,                      
     79                                       bool ignoreMissingValue) 
    8080{ 
    81   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue); 
     81  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
    8282} 
    8383 
  • XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.hpp

    r979 r1076  
    3232                     const double* dataInput, 
    3333                     CArray<double,1>& dataOut, 
    34                      std::vector<bool>& flagInitial, 
    35                      const double& defaultValue); 
     34                     std::vector<bool>& flagInitial,                      
     35                     bool ignoreMissingValue); 
    3636 
    3737  virtual void updateData(CArray<double,1>& dataOut); 
  • XIOS/trunk/src/transformation/generic_algorithm_transformation.cpp

    r1018 r1076  
    3030                                            CArray<double,1>& dataOut, 
    3131                                            std::vector<bool>& flagInitial, 
    32                                             const double& defaultValue) 
    33 { 
    34   int nbLocalIndex = localIndex.size();   
    35   bool hasMissingValue = NumTraits<double>::isnan(defaultValue);   
    36   if (hasMissingValue) 
     32                                            bool ignoreMissingValue) 
     33{ 
     34  int nbLocalIndex = localIndex.size();    
     35  double defaultValue = std::numeric_limits<double>::quiet_NaN(); 
     36  if (ignoreMissingValue) 
    3737  { 
    3838    for (int idx = 0; idx < nbLocalIndex; ++idx) 
  • XIOS/trunk/src/transformation/generic_algorithm_transformation.hpp

    r979 r1076  
    6363    \param [in/out] dataOut Array contains local data 
    6464    \param [in/out] flagInitial vector of boolean to mark the local index already initialized. True means there is a need for initalization 
     65    \param [in] ignoreMissingValue don't count missing value in operation if this flag is true 
    6566  */ 
    6667  virtual void apply(const std::vector<std::pair<int,double> >& localIndex, 
    6768                     const double* dataInput, 
    6869                     CArray<double,1>& dataOut, 
    69                      std::vector<bool>& flagInitial, 
    70                      const double& defaultValue); 
     70                     std::vector<bool>& flagInitial,                      
     71                     bool ignoreMissingValue); 
    7172 
    7273  /*! 
  • XIOS/trunk/src/transformation/scalar_algorithm_extract_axis.cpp

    r1018 r1076  
    5555                                         const double* dataInput, 
    5656                                         CArray<double,1>& dataOut, 
    57                                          std::vector<bool>& flagInitial, 
    58                                          const double& defaultValue) 
     57                                         std::vector<bool>& flagInitial,                      
     58                                         bool ignoreMissingValue) 
    5959{ 
    60   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue); 
     60  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
    6161} 
    6262 
  • XIOS/trunk/src/transformation/scalar_algorithm_extract_axis.hpp

    r980 r1076  
    3232                     const double* dataInput, 
    3333                     CArray<double,1>& dataOut, 
    34                      std::vector<bool>& flagInitial, 
    35                      const double& defaultValue); 
     34                     std::vector<bool>& flagInitial,                      
     35                     bool ignoreMissingValue); 
    3636 
    3737  virtual ~CScalarAlgorithmExtractAxis(); 
  • XIOS/trunk/src/transformation/scalar_algorithm_reduce_domain.cpp

    r1018 r1076  
    8181                                         const double* dataInput, 
    8282                                         CArray<double,1>& dataOut, 
    83                                          std::vector<bool>& flagInitial, 
    84                                          const double& defaultValue) 
     83                                         std::vector<bool>& flagInitial,                      
     84                                         bool ignoreMissingValue) 
    8585{ 
    86   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue); 
     86  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 
    8787} 
    8888 
  • XIOS/trunk/src/transformation/scalar_algorithm_reduce_domain.hpp

    r979 r1076  
    3232                     const double* dataInput, 
    3333                     CArray<double,1>& dataOut, 
    34                      std::vector<bool>& flagInitial, 
    35                      const double& defaultValue); 
     34                     std::vector<bool>& flagInitial,                      
     35                     bool ignoreMissingValue); 
    3636 
    3737  virtual void updateData(CArray<double,1>& dataOut); 
Note: See TracChangeset for help on using the changeset viewer.