- Timestamp:
- 10/21/16 13:40:33 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/grid_transformation_selector.cpp
r976 r978 102 102 103 103 /*! 104 Initialize the algorithms (transformations)105 */ 106 void CGridTransformationSelector:: initializeAlgorithms()104 Update position of elements in grid source and grid destination as well as their positions in element list 105 */ 106 void CGridTransformationSelector::updateElementPosition() 107 107 { 108 108 int idxScalar = 0, idxAxis = 0, idxDomain = 0; 109 109 CArray<int,1> axisDomainOrderDst = gridDestination_->axis_domain_order; 110 std::map<int, int>().swap(elementPositionInGridDst2DomainPosition_); 111 std::map<int, int>().swap(elementPositionInGridDst2AxisPosition_); 112 std::map<int, int>().swap(elementPositionInGridDst2ScalarPosition_); 110 113 for (int i = 0; i < axisDomainOrderDst.numElements(); ++i) 111 114 { … … 130 133 idxScalar = idxAxis = idxDomain = 0; 131 134 CArray<int,1> axisDomainOrderSrc = gridSource_->axis_domain_order; 135 std::map<int, int>().swap(elementPositionInGridSrc2DomainPosition_); 136 std::map<int, int>().swap(elementPositionInGridSrc2AxisPosition_); 137 std::map<int, int>().swap(elementPositionInGridSrc2ScalarPosition_); 132 138 for (int i = 0; i < axisDomainOrderSrc.numElements(); ++i) 133 139 { … … 149 155 } 150 156 } 151 157 } 158 159 /*! 160 Initialize the algorithms (transformations) 161 */ 162 void CGridTransformationSelector::initializeAlgorithms() 163 { 164 updateElementPosition(); 165 CArray<int,1> axisDomainOrderDst = gridDestination_->axis_domain_order; 152 166 for (int i = 0; i < axisDomainOrderDst.numElements(); ++i) 153 167 { … … 183 197 int scalarDstPos = -1, scalarSrcPos = -1; 184 198 if (0 < elementPositionInGridDst2ScalarPosition_.count(scalarPositionInGrid)) 185 scalarDstPos = elementPositionInGridDst2 AxisPosition_[scalarPositionInGrid];199 scalarDstPos = elementPositionInGridDst2ScalarPosition_[scalarPositionInGrid]; 186 200 if (0 < elementPositionInGridSrc2ScalarPosition_.count(scalarPositionInGrid)) 187 scalarSrcPos = elementPositionInGridSrc2 AxisPosition_[scalarPositionInGrid];201 scalarSrcPos = elementPositionInGridSrc2ScalarPosition_[scalarPositionInGrid]; 188 202 189 203 // If source and destination grid share the same scalar … … 199 213 for (it = itb; it != ite; ++it) 200 214 { 201 listAlgos_.push_back(std::make_pair(scalarPositionInGrid, std::make_pair(it->first, transformationOrder))); 202 algoTypes_.push_back(scalarType); 215 listAlgos_.push_back(std::make_pair(scalarPositionInGrid, std::make_pair(it->first, std::make_pair(transformationOrder,0)))); 203 216 ++transformationOrder; 204 217 std::vector<StdString> auxInput = (it->second)->checkAuxInputs(); … … 240 253 for (it = itb; it != ite; ++it) 241 254 { 242 listAlgos_.push_back(std::make_pair(axisPositionInGrid, std::make_pair(it->first, transformationOrder))); 243 algoTypes_.push_back(axisType); 255 listAlgos_.push_back(std::make_pair(axisPositionInGrid, std::make_pair(it->first, std::make_pair(transformationOrder,1)))); 244 256 ++transformationOrder; 245 257 std::vector<StdString> auxInput = (it->second)->checkAuxInputs(); … … 264 276 int domDstPos = -1, domSrcPos = -1; 265 277 if (0 < elementPositionInGridDst2DomainPosition_.count(domPositionInGrid)) 266 domDstPos = elementPositionInGridDst2 AxisPosition_[domPositionInGrid];278 domDstPos = elementPositionInGridDst2DomainPosition_[domPositionInGrid]; 267 279 if (0 < elementPositionInGridSrc2DomainPosition_.count(domPositionInGrid)) 268 domSrcPos = elementPositionInGridSrc2 AxisPosition_[domPositionInGrid];280 domSrcPos = elementPositionInGridSrc2DomainPosition_[domPositionInGrid]; 269 281 270 282 // If source and destination grid share the same domain … … 280 292 for (it = itb; it != ite; ++it) 281 293 { 282 listAlgos_.push_back(std::make_pair(domPositionInGrid, std::make_pair(it->first, transformationOrder))); 283 algoTypes_.push_back(domainType); 294 listAlgos_.push_back(std::make_pair(domPositionInGrid, std::make_pair(it->first, std::make_pair(transformationOrder,2)))); 284 295 ++transformationOrder; 285 296 std::vector<StdString> auxInput = (it->second)->checkAuxInputs(); … … 297 308 \param [in] transType transformation type, for now we have Zoom_axis, inverse_axis 298 309 \param [in] transformationOrder position of the transformation in an element (an element can have several transformation) 299 \param [in] isDomainAlgo flag to specify type of algorithm (for domain or axis) 300 */ 301 void CGridTransformationSelector::selectAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder, AlgoType algoType) 302 { 310 \param [in] algoType flag to specify type of algorithm (2 for domain, 1 for axis and 0 for scalar) 311 */ 312 void CGridTransformationSelector::selectAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder, int algoType) 313 { 314 updateElementPosition(); 303 315 switch (algoType) 304 316 { 305 case scalarType:317 case 0: 306 318 selectScalarAlgo(elementPositionInGrid, transType, transformationOrder); 307 319 break; 308 case axisType:320 case 1: 309 321 selectAxisAlgo(elementPositionInGrid, transType, transformationOrder); 310 322 break; 311 case domainType:323 case 2: 312 324 selectDomainAlgo(elementPositionInGrid, transType, transformationOrder); 313 325 break;
Note: See TracChangeset
for help on using the changeset viewer.