[620] | 1 | #include "axis_inverse.hpp" |
---|
| 2 | |
---|
| 3 | namespace xios { |
---|
| 4 | |
---|
| 5 | CAxisInverse::CAxisInverse(CAxis* axisDestination, CAxis* axisSource) |
---|
[621] | 6 | : CConcreteAlgo() |
---|
[620] | 7 | { |
---|
| 8 | if (axisDestination->size.getValue() != axisSource->size.getValue()) |
---|
| 9 | { |
---|
| 10 | ERROR("CAxisInverse::CAxisInverse(CAxis* axisDestination, CAxis* axisSource)", |
---|
| 11 | << "Two axis have different size" |
---|
| 12 | << "Size of axis source " <<axisSource->getId() << " is " << axisSource->size.getValue() << std::endl |
---|
| 13 | << "Size of axis destionation " <<axisDestination->getId() << " is " << axisDestination->size.getValue()); |
---|
| 14 | } |
---|
| 15 | |
---|
[621] | 16 | |
---|
[620] | 17 | axisDestGlobalSize_ = axisDestination->size.getValue(); |
---|
[621] | 18 | int niDest = axisDestination->ni.getValue(); |
---|
| 19 | int ibeginDest = axisDestination->ibegin.getValue(); |
---|
[620] | 20 | |
---|
[621] | 21 | for (int idx = 0; idx < niDest; ++idx) axisDestGlobalIndex_.push_back(ibeginDest+idx); |
---|
[620] | 22 | } |
---|
| 23 | |
---|
[621] | 24 | void CAxisInverse::computeIndexSourceMapping(const std::map<int, std::vector<int> >& transformationMappingOfPreviousAlgo) |
---|
[620] | 25 | { |
---|
| 26 | std::map<int, std::vector<int> >& transMap = this->transformationMapping_; |
---|
[621] | 27 | if (transformationMappingOfPreviousAlgo.empty()) |
---|
| 28 | { |
---|
| 29 | int globalIndexSize = axisDestGlobalIndex_.size(); |
---|
| 30 | for (int idx = 0; idx < globalIndexSize; ++idx) |
---|
| 31 | transMap[axisDestGlobalIndex_[idx]].push_back(axisDestGlobalSize_-axisDestGlobalIndex_[idx]-1); |
---|
| 32 | } |
---|
| 33 | else |
---|
| 34 | { |
---|
| 35 | std::map<int, std::vector<int> >::const_iterator itb = transformationMappingOfPreviousAlgo.begin(), it, |
---|
| 36 | ite = transformationMappingOfPreviousAlgo.end(); |
---|
| 37 | for (it = itb; it != ite; ++it) |
---|
| 38 | { |
---|
| 39 | transMap[it->first].push_back(axisDestGlobalSize_-it->first-1); |
---|
| 40 | } |
---|
| 41 | } |
---|
[620] | 42 | } |
---|
| 43 | |
---|
| 44 | } |
---|