- Timestamp:
- 01/25/17 16:25:17 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan/src/transformation/Functions/max_reduction.cpp
r1018 r1037 8 8 */ 9 9 #include "max_reduction.hpp" 10 #include "utils.hpp"11 10 12 11 namespace xios { … … 30 29 const double* dataInput, 31 30 CArray<double,1>& dataOut, 32 std::vector<bool>& flagInitial, 33 const double& defaultValue) 31 std::vector<bool>& flagInitial) 34 32 { 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) 38 37 { 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]) 42 41 { 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; 56 44 } 57 } 58 else 59 { 60 int nbLocalIndex = localIndex.size(); 61 int currentlocalIndex = 0; 62 for (int idx = 0; idx < nbLocalIndex; ++idx) 45 else 63 46 { 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)); 74 48 } 75 49 }
Note: See TracChangeset
for help on using the changeset viewer.