Changeset 1299
- Timestamp:
- 10/09/17 10:07:07 (7 years ago)
- Location:
- XIOS/dev/XIOS_DEV_CMIP6/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/XIOS_DEV_CMIP6/src/config/reduce_domain_to_axis_attribute.conf
r980 r1299 3 3 /* Direction to apply operation (i, j) */ 4 4 DECLARE_ENUM2(direction, iDir, jDir) 5 DECLARE_ATTRIBUTE(bool, local) -
XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_domain_to_axis.cpp
r1204 r1299 62 62 << "Domain source " <<domainSrc->getId() << std::endl 63 63 << "Axis destination " << axisDst->getId()); 64 64 if (this->local.isEmpty()) local=false ; 65 65 66 switch (direction) 66 67 { -
XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_domain.cpp
r1260 r1299 71 71 dir_ = (CReduceDomainToAxis::direction_attr::iDir == algo->direction) ? iDir : jDir; 72 72 reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]); 73 local = algo->local ; 73 74 } 74 75 … … 104 105 if (iDir == dir_) 105 106 { 106 int nbAxisIdx = axisDstIndex.numElements(); 107 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 107 if (local) 108 108 { 109 int globalAxisIdx = axisDstIndex(idxAxis); 110 transMap[globalAxisIdx].resize(ni_glo); 111 transWeight[globalAxisIdx].resize(ni_glo); 112 for (int idx = 0; idx < ni_glo; ++idx) 109 const CArray<int, 1>& i_index = domainSrc_-> i_index.getValue() ; 110 const CArray<int, 1>& j_index = domainSrc_-> j_index.getValue() ; 111 const CArray<bool,1>& localMask = domainSrc_-> localMask ; 112 int nbDomainIdx = i_index.numElements(); 113 114 for (int idxDomain = 0; idxDomain < nbDomainIdx; ++idxDomain) 113 115 { 114 transMap[globalAxisIdx][idx] = globalAxisIdx * ni_glo + idx; 115 transWeight[globalAxisIdx][idx] = 1.0; 116 if (localMask(idxDomain)) 117 { 118 transMap[j_index(idxDomain)].push_back(j_index(idxDomain)* ni_glo + i_index(idxDomain)); 119 transWeight[j_index(idxDomain)].push_back(1.0) ; 120 } 121 } 122 } 123 else 124 { 125 int nbAxisIdx = axisDstIndex.numElements(); 126 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 127 { 128 int globalAxisIdx = axisDstIndex(idxAxis); 129 transMap[globalAxisIdx].resize(ni_glo); 130 transWeight[globalAxisIdx].resize(ni_glo); 131 for (int idx = 0; idx < ni_glo; ++idx) 132 { 133 transMap[globalAxisIdx][idx] = globalAxisIdx * ni_glo + idx; 134 transWeight[globalAxisIdx][idx] = 1.0; 135 } 116 136 } 117 137 } … … 120 140 { 121 141 int nbAxisIdx = axisDstIndex.numElements(); 122 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)142 if (local) 123 143 { 124 int globalAxisIdx = axisDstIndex(idxAxis); 125 transMap[globalAxisIdx].resize(nj_glo); 126 transWeight[globalAxisIdx].resize(nj_glo); 127 for (int idx = 0; idx < nj_glo; ++idx) 144 const CArray<int, 1>& i_index = domainSrc_-> i_index.getValue() ; 145 const CArray<int, 1>& j_index = domainSrc_-> j_index.getValue() ; 146 const CArray<bool,1>& localMask = domainSrc_-> localMask ; 147 int nbDomainIdx = i_index.numElements(); 148 149 for (int idxDomain = 0; idxDomain < nbDomainIdx; ++idxDomain) 128 150 { 129 transMap[globalAxisIdx][idx] = globalAxisIdx + ni_glo*idx; 130 transWeight[globalAxisIdx][idx] = 1.0; 151 if (localMask(idxDomain)) 152 { 153 transMap[i_index(idxDomain)].push_back(j_index(idxDomain)* ni_glo + i_index(idxDomain)); 154 transWeight[i_index(idxDomain)].push_back(1.0) ; 155 } 156 } 157 } 158 else 159 { 160 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 161 { 162 int globalAxisIdx = axisDstIndex(idxAxis); 163 transMap[globalAxisIdx].resize(nj_glo); 164 transWeight[globalAxisIdx].resize(nj_glo); 165 for (int idx = 0; idx < nj_glo; ++idx) 166 { 167 transMap[globalAxisIdx][idx] = globalAxisIdx + ni_glo*idx; 168 transWeight[globalAxisIdx][idx] = 1.0; 169 } 131 170 } 132 171 } -
XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_domain.hpp
r1260 r1299 46 46 jDir = 2 47 47 }; 48 48 49 49 ReduceDirection dir_; 50 bool local ; 51 50 52 protected: 51 53 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);
Note: See TracChangeset
for help on using the changeset viewer.