Ignore:
Timestamp:
01/25/17 16:25:17 (7 years ago)
Author:
yushan
Message:

initialize the branch

File:
1 edited

Legend:

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

    r1018 r1037  
    33   \author Ha NGUYEN 
    44   \since 8 Sep 2016 
    5    \date 9 Jan 2017 
     5   \date 8 Sep 2016 
    66 
    77   \brief average reduction 
    88 */ 
    99#include "average_reduction.hpp" 
    10 #include "utils.hpp" 
    1110 
    1211namespace xios { 
     
    3029                                       const double* dataInput, 
    3130                                       CArray<double,1>& dataOut, 
    32                                        std::vector<bool>& flagInitial, 
    33                                        const double& defaultValue) 
     31                                       std::vector<bool>& flagInitial) 
    3432{ 
    3533  if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; } 
    36   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
    3734 
    38   if (hasMissingValue) 
     35  int nbLocalIndex = localIndex.size(); 
     36  int currentlocalIndex = 0; 
     37  double currentWeight  = 0.0; 
     38  for (int idx = 0; idx < nbLocalIndex; ++idx) 
    3939  { 
    40     int nbLocalIndex = localIndex.size(); 
    41     int currentlocalIndex = 0; 
    42     double currentWeight  = 0.0; 
    43     for (int idx = 0; idx < nbLocalIndex; ++idx) 
     40    currentlocalIndex = localIndex[idx].first; 
     41    currentWeight     = localIndex[idx].second; 
     42 
     43    if (flagInitial[currentlocalIndex]) 
    4444    { 
    45       currentlocalIndex = localIndex[idx].first; 
    46       currentWeight     = localIndex[idx].second; 
    47       if (!NumTraits<double>::isnan(*(dataInput + idx))) 
    48       { 
    49         if (flagInitial[currentlocalIndex]) 
    50         { 
    51           dataOut(currentlocalIndex) = *(dataInput + idx); 
    52           flagInitial[currentlocalIndex] = false; 
    53         } 
    54         else 
    55         { 
    56           dataOut(currentlocalIndex)  += *(dataInput + idx); 
    57           weights_(currentlocalIndex) += 1.0; 
    58         } 
    59       } 
     45      dataOut(currentlocalIndex) = *(dataInput + idx); 
     46      flagInitial[currentlocalIndex] = false; 
    6047    } 
    61   } 
    62   else 
    63   { 
    64     int nbLocalIndex = localIndex.size(); 
    65     int currentlocalIndex = 0; 
    66     double currentWeight  = 0.0; 
    67     for (int idx = 0; idx < nbLocalIndex; ++idx) 
     48    else 
    6849    { 
    69       currentlocalIndex = localIndex[idx].first; 
    70       currentWeight     = localIndex[idx].second; 
    71  
    72       if (flagInitial[currentlocalIndex]) 
    73       { 
    74         dataOut(currentlocalIndex) = *(dataInput + idx); 
    75         flagInitial[currentlocalIndex] = false; 
    76       } 
    77       else 
    78       { 
    79         dataOut(currentlocalIndex)  += *(dataInput + idx); 
    80         weights_(currentlocalIndex) += 1.0; 
    81       } 
     50      dataOut(currentlocalIndex)  += *(dataInput + idx); 
     51      weights_(currentlocalIndex) += 1.0; 
    8252    } 
    8353  } 
Note: See TracChangeset for help on using the changeset viewer.