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/max_reduction.cpp

    r1018 r1037  
    88 */ 
    99#include "max_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{ 
    35   bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 
    36  
    37   if (hasMissingValue) 
     33  int nbLocalIndex = localIndex.size(); 
     34  int currentlocalIndex = 0; 
     35  double currentWeight  = 0.0; 
     36  for (int idx = 0; idx < nbLocalIndex; ++idx) 
    3837  { 
    39     int nbLocalIndex = localIndex.size(); 
    40     int currentlocalIndex = 0;     
    41     for (int idx = 0; idx < nbLocalIndex; ++idx) 
     38    currentlocalIndex = localIndex[idx].first; 
     39    currentWeight     = localIndex[idx].second; 
     40    if (flagInitial[currentlocalIndex]) 
    4241    { 
    43       currentlocalIndex = localIndex[idx].first;       
    44       if (!NumTraits<double>::isnan(*(dataInput + idx))) 
    45       { 
    46         if (flagInitial[currentlocalIndex]) 
    47         { 
    48           dataOut(currentlocalIndex) = *(dataInput + idx); 
    49           flagInitial[currentlocalIndex] = false; 
    50         } 
    51         else 
    52         { 
    53           dataOut(currentlocalIndex) = std::max(*(dataInput + idx), dataOut(currentlocalIndex)); 
    54         } 
    55       } 
     42      dataOut(currentlocalIndex) = *(dataInput + idx); 
     43      flagInitial[currentlocalIndex] = false; 
    5644    } 
    57   } 
    58   else 
    59   { 
    60     int nbLocalIndex = localIndex.size(); 
    61     int currentlocalIndex = 0;     
    62     for (int idx = 0; idx < nbLocalIndex; ++idx) 
     45    else 
    6346    { 
    64       currentlocalIndex = localIndex[idx].first;       
    65       if (flagInitial[currentlocalIndex]) 
    66       { 
    67         dataOut(currentlocalIndex) = *(dataInput + idx); 
    68         flagInitial[currentlocalIndex] = false; 
    69       } 
    70       else 
    71       { 
    72         dataOut(currentlocalIndex) = std::max(*(dataInput + idx), dataOut(currentlocalIndex)); 
    73       } 
     47      dataOut(currentlocalIndex) = std::max(*(dataInput + idx), dataOut(currentlocalIndex)); 
    7448    } 
    7549  } 
Note: See TracChangeset for help on using the changeset viewer.