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/Functions
Files:
11 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() {} 
Note: See TracChangeset for help on using the changeset viewer.