- Timestamp:
- 01/03/21 18:00:43 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_duplicate_scalar.cpp
r1998 r1999 47 47 { 48 48 49 CArray<int,1>& axisDstIndex = axisDest _->index;49 CArray<int,1>& axisDstIndex = axisDestination->index; 50 50 51 51 int nbAxisIdx = axisDstIndex.numElements(); -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_duplicate_scalar.hpp
r1998 r1999 36 36 private: 37 37 38 CAxis* axisSrc_;39 CAxis* axisDest_;40 41 38 static CGenericAlgorithmTransformation* create(bool isSource, CGrid* gridDst, CGrid* gridSrc, 42 39 CTransformation<CAxis>* transformation, -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_extract_domain.cpp
r1988 r1999 48 48 49 49 CAxisAlgorithmExtractDomain::CAxisAlgorithmExtractDomain(bool isSource, CAxis* axisDestination, CDomain* domainSource, CExtractDomainToAxis* algo) 50 : CA xisAlgorithmTransformation(isSource, axisDestination, domainSource), pos_(-1), reduction_(0)50 : CAlgorithmTransformationTransfer(isSource), pos_(-1), axisDest_(axisDestination), domainSrc_(domainSource) 51 51 TRY 52 52 { … … 67 67 68 68 pos_ = algo->position; 69 reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);70 }71 CATCH72 69 73 void CAxisAlgorithmExtractDomain::apply(const std::vector<std::pair<int,double> >& localIndex, 74 const double* dataInput, 75 CArray<double,1>& dataOut, 76 std::vector<bool>& flagInitial, 77 bool ignoreMissingValue, bool firstPass) 78 TRY 79 { 80 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 81 } 82 CATCH 83 84 CAxisAlgorithmExtractDomain::~CAxisAlgorithmExtractDomain() 85 TRY 86 { 87 if (0 != reduction_) delete reduction_; 88 } 89 CATCH 90 91 void CAxisAlgorithmExtractDomain::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs) 92 TRY 93 { 94 this->transformationMapping_.resize(1); 95 this->transformationWeight_.resize(1); 96 97 TransformationIndexMap& transMap = this->transformationMapping_[0]; 98 TransformationWeightMap& transWeight = this->transformationWeight_[0]; 70 auto& transMap = this->transformationMapping_; 99 71 100 72 CArray<int,1>& axisDstIndex = axisDest_->index; … … 106 78 { 107 79 int globalAxisIdx = axisDstIndex(idxAxis); 108 transMap[globalAxisIdx].resize(1); 109 transWeight[globalAxisIdx].resize(1); 110 transMap[globalAxisIdx][0] = globalAxisIdx * ni_glo + pos_; 111 transWeight[globalAxisIdx][0] = 1.0; 112 80 transMap[globalAxisIdx] = globalAxisIdx * ni_glo + pos_; 113 81 } 114 82 } … … 119 87 { 120 88 int globalAxisIdx = axisDstIndex(idxAxis); 121 transMap[globalAxisIdx].resize(1); 122 transWeight[globalAxisIdx].resize(1); 123 transMap[globalAxisIdx][0] = globalAxisIdx + ni_glo * pos_; 124 transWeight[globalAxisIdx][0] = 1.0; 89 transMap[globalAxisIdx] = globalAxisIdx + ni_glo * pos_; 125 90 } 126 91 } 127 92 else 128 93 {} 94 95 axisDestination->checkAttributes() ; 96 this->computeAlgorithm(domainSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ; 129 97 } 130 98 CATCH 99 100 101 CAxisAlgorithmExtractDomain::~CAxisAlgorithmExtractDomain() 102 TRY 103 { 131 104 } 105 CATCH 106 107 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_extract_domain.hpp
r1988 r1999 10 10 #define __XIOS_AXIS_ALGORITHM_EXTRACT_DOMAIN_HPP__ 11 11 12 #include "a xis_algorithm_transformation.hpp"12 #include "algorithm_transformation_transfer.hpp" 13 13 #include "transformation.hpp" 14 14 … … 25 25 Extract a domain to an axis 26 26 */ 27 class CAxisAlgorithmExtractDomain : public CA xisAlgorithmTransformation27 class CAxisAlgorithmExtractDomain : public CAlgorithmTransformationTransfer 28 28 { 29 29 public: 30 30 CAxisAlgorithmExtractDomain(bool isSource, CAxis* axisDestination, CDomain* domainSource, CExtractDomainToAxis* algo); 31 31 32 virtual void apply(const std::vector<std::pair<int,double> >& localIndex, 33 const double* dataInput, 34 CArray<double,1>& dataOut, 35 std::vector<bool>& flagInitial, 36 bool ignoreMissingValue, bool firstPass); 37 38 virtual ~CAxisAlgorithmExtractDomain(); 32 virtual ~CAxisAlgorithmExtractDomain(); 39 33 40 34 static bool registerTrans(); … … 48 42 ExtractDirection dir_; 49 43 int pos_; //! Position to extract 50 protected: 51 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); 52 53 protected: 54 CReductionAlgorithm* reduction_; 55 44 56 45 private: 46 CDomain* domainSrc_; 47 CAxis* axisDest_ ; 57 48 static CGenericAlgorithmTransformation* create(bool isSource, CGrid* gridDst, CGrid* gridSrc, 58 49 CTransformation<CAxis>* transformation, -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_inverse.cpp
r1988 r1999 49 49 50 50 CAxisAlgorithmInverse::CAxisAlgorithmInverse(bool isSource, CAxis* axisDestination, CAxis* axisSource, CInverseAxis* inverseAxis) 51 : CA xisAlgorithmTransformation(isSource, axisDestination,axisSource)51 : CAlgorithmTransformationTransfer(isSource), axisDest_(axisDestination), axisSrc_(axisSource) 52 52 TRY 53 53 { … … 59 59 << "Size of axis destination " <<axisDestination->getId() << " is " << axisDestination->n_glo.getValue()); 60 60 } 61 } 62 CATCH 63 64 void CAxisAlgorithmInverse::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs) 65 TRY 66 { 67 this->transformationMapping_.resize(1); 68 this->transformationWeight_.resize(1); 69 70 TransformationIndexMap& transMap = this->transformationMapping_[0]; 71 TransformationWeightMap& transWeight = this->transformationWeight_[0]; 72 73 int globalIndexSize = axisDestGlobalIndex_.size(); 61 62 auto& transMap = this->transformationMapping_; 63 64 int globalIndexSize = axisDestination->index.size(); 74 65 for (int idx = 0; idx < globalIndexSize; ++idx) 75 66 { 76 transMap[axisDestGlobalIndex_[idx]].push_back(axisDestGlobalSize_-axisDestGlobalIndex_[idx]-1); 77 transWeight[axisDestGlobalIndex_[idx]].push_back(1.0); 67 transMap[axisDestination->index(idx)] = globalIndexSize-axisDestination->index(idx)-1; 78 68 } 79 69 … … 88 78 } 89 79 } 90 } 91 CATCH 80 81 axisDestination->checkAttributes() ; 82 this->computeAlgorithm(axisSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ; 83 84 } 85 CATCH 86 92 87 93 88 /*! … … 118 113 typedef std::unordered_map<size_t, std::vector<double> > GlobalIndexMapFromSrcToDest; 119 114 GlobalIndexMapFromSrcToDest globalIndexMapFromSrcToDest; 120 TransformationIndexMap& transMap = this->transformationMapping_[0]; 121 TransformationIndexMap::const_iterator itb = transMap.begin(), ite = transMap.end(), it; 115 auto& transMap = this->transformationMapping_; 122 116 CArray<size_t,1> globalSrcIndex(transMap.size()); 123 117 int localIndex = 0; 124 for ( it = itb; it != ite; ++it)125 { 126 size_t srcIndex = it->second [0];118 for (auto it = transMap.begin(); it != transMap.end(); ++it) 119 { 120 size_t srcIndex = it->second; 127 121 globalIndexMapFromSrcToDest[srcIndex].resize(1); 128 122 globalIndexMapFromSrcToDest[srcIndex][0] = it->first; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_inverse.hpp
r1988 r1999 10 10 #define __XIOS_AXIS_ALGORITHM_INVERSE_HPP__ 11 11 12 #include "a xis_algorithm_transformation.hpp"12 #include "algorithm_transformation_transfer.hpp" 13 13 #include "transformation.hpp" 14 14 … … 22 22 Inversing an axis 23 23 */ 24 class CAxisAlgorithmInverse : public CA xisAlgorithmTransformation24 class CAxisAlgorithmInverse : public CAlgorithmTransformationTransfer 25 25 { 26 26 public: … … 31 31 static bool registerTrans(); 32 32 33 protected:34 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);35 33 36 34 private: 35 CAxis* axisSrc_; 36 CAxis* axisDest_; 37 37 void updateAxisValue(); 38 38 -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_axis.cpp
r1988 r1999 12 12 #include "grid.hpp" 13 13 #include "grid_transformation_factory_impl.hpp" 14 #include "reduction.hpp" 14 15 15 16 16 namespace xios { … … 47 47 48 48 CAxisAlgorithmReduceAxis::CAxisAlgorithmReduceAxis(bool isSource, CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo) 49 : CA xisAlgorithmTransformation(isSource, axisDestination, axisSource), reduction_(0)49 : CAlgorithmTransformationReduce(isSource) 50 50 TRY 51 51 { 52 52 eliminateRedondantSrc_= false ; 53 53 algo->checkValid(axisDestination, axisSource); 54 StdString op; 54 55 55 switch (algo->operation) 56 56 { 57 57 case CReduceAxisToAxis::operation_attr::sum: 58 op = "sum";58 operator_ = EReduction::sum; 59 59 break; 60 60 case CReduceAxisToAxis::operation_attr::min: 61 op = "min";61 operator_ = EReduction::min; 62 62 break; 63 63 case CReduceAxisToAxis::operation_attr::max: 64 op = "max";64 operator_ = EReduction::max; 65 65 break; 66 66 case CReduceAxisToAxis::operation_attr::average: 67 op = "average";67 operator_ = EReduction::average; 68 68 break; 69 69 default: … … 73 73 << "Axis destination " << axisDestination->getId()); 74 74 75 TransformationIndexMap& transMap = this->transformationMapping_; 76 CArray<int,1>& axisDstIndex = axisDestination->index; 77 int nbAxisIdx = axisDstIndex.numElements(); 78 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 79 { 80 int globalAxisIdx = axisDstIndex(idxAxis); 81 transMap[globalAxisIdx].resize(1); 82 transMap[globalAxisIdx][0]=globalAxisIdx ; 83 } 84 75 85 } 76 77 reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]); 86 87 axisDestination->checkAttributes() ; 88 this->computeAlgorithm(axisSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ; 78 89 } 79 90 CATCH 80 91 81 void CAxisAlgorithmReduceAxis::apply(const std::vector<std::pair<int,double> >& localIndex,82 const double* dataInput,83 CArray<double,1>& dataOut,84 std::vector<bool>& flagInitial,85 bool ignoreMissingValue, bool firstPass)86 TRY87 {88 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass);89 }90 CATCH91 92 void CAxisAlgorithmReduceAxis::updateData(CArray<double,1>& dataOut)93 TRY94 {95 reduction_->updateData(dataOut);96 }97 CATCH98 92 99 93 CAxisAlgorithmReduceAxis::~CAxisAlgorithmReduceAxis() 100 94 TRY 101 95 { 102 if (0 != reduction_) delete reduction_;96 103 97 } 104 98 CATCH 105 99 106 void CAxisAlgorithmReduceAxis::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs)107 TRY108 {109 this->transformationMapping_.resize(1);110 this->transformationWeight_.resize(1);111 112 TransformationIndexMap& transMap = this->transformationMapping_[0];113 TransformationWeightMap& transWeight = this->transformationWeight_[0];114 CArray<int,1>& axisDstIndex = axisDest_->index;115 int nbAxisIdx = axisDstIndex.numElements();116 for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)117 {118 int globalAxisIdx = axisDstIndex(idxAxis);119 transMap[globalAxisIdx].resize(1);120 transWeight[globalAxisIdx].resize(1);121 transMap[globalAxisIdx][0]=globalAxisIdx ;122 transWeight[globalAxisIdx][0] = 1.0 ;123 }124 }125 CATCH126 100 127 101 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_axis.hpp
r1988 r1999 10 10 #define __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__ 11 11 12 #include "a xis_algorithm_transformation.hpp"12 #include "algorithm_transformation_reduce.hpp" 13 13 #include "transformation.hpp" 14 14 … … 23 23 Reduce a axis to an axis 24 24 */ 25 class CAxisAlgorithmReduceAxis : public CA xisAlgorithmTransformation25 class CAxisAlgorithmReduceAxis : public CAlgorithmTransformationReduce 26 26 { 27 27 public: 28 28 CAxisAlgorithmReduceAxis(bool isSource, CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo); 29 29 30 virtual void apply(const std::vector<std::pair<int,double> >& localIndex,31 const double* dataInput,32 CArray<double,1>& dataOut,33 std::vector<bool>& flagInitial,34 bool ignoreMissingValue, bool firstPass);35 36 virtual void updateData(CArray<double,1>& dataOut);37 30 38 31 virtual ~CAxisAlgorithmReduceAxis(); 39 32 40 33 static bool registerTrans(); 41 protected:42 34 43 protected:44 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);45 46 protected:47 CReductionAlgorithm* reduction_;48 49 35 private: 50 36 static CGenericAlgorithmTransformation* create(bool isSource, CGrid* gridDst, CGrid* gridSrc, -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_domain.cpp
r1988 r1999 48 48 49 49 CAxisAlgorithmReduceDomain::CAxisAlgorithmReduceDomain(bool isSource, CAxis* axisDestination, CDomain* domainSource, CReduceDomainToAxis* algo) 50 : CA xisAlgorithmTransformation(isSource, axisDestination, domainSource), reduction_(0)50 : CAlgorithmTransformationReduce(isSource), domainSrc_(domainSource), axisDest_(axisDestination) 51 51 TRY 52 52 { 53 53 algo->checkValid(axisDestination, domainSource); 54 StdString op;55 54 switch (algo->operation) 56 55 { 57 56 case CReduceDomainToAxis::operation_attr::sum: 58 op = "sum";57 operator_ = EReduction::sum; 59 58 break; 60 59 case CReduceDomainToAxis::operation_attr::min: 61 op = "min";60 operator_ = EReduction::min; 62 61 break; 63 62 case CReduceDomainToAxis::operation_attr::max: 64 op = "max";63 operator_ = EReduction::max; 65 64 break; 66 65 case CReduceDomainToAxis::operation_attr::average: 67 op = "average";66 operator_ = EReduction::average; 68 67 break; 69 68 default: … … 76 75 77 76 dir_ = (CReduceDomainToAxis::direction_attr::iDir == algo->direction) ? iDir : jDir; 78 reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]); 79 local = algo->local ; 80 } 81 CATCH 77 bool local = algo->local ; 82 78 83 void CAxisAlgorithmReduceDomain::apply(const std::vector<std::pair<int,double> >& localIndex, 84 const double* dataInput, 85 CArray<double,1>& dataOut, 86 std::vector<bool>& flagInitial, 87 bool ignoreMissingValue, bool firstPass) 88 TRY 89 { 90 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 91 } 92 CATCH 93 94 void CAxisAlgorithmReduceDomain::updateData(CArray<double,1>& dataOut) 95 TRY 96 { 97 reduction_->updateData(dataOut); 98 } 99 CATCH 100 101 CAxisAlgorithmReduceDomain::~CAxisAlgorithmReduceDomain() 102 TRY 103 { 104 if (0 != reduction_) delete reduction_; 105 } 106 CATCH 107 108 void CAxisAlgorithmReduceDomain::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs) 109 TRY 110 { 111 this->transformationMapping_.resize(1); 112 this->transformationWeight_.resize(1); 113 114 TransformationIndexMap& transMap = this->transformationMapping_[0]; 115 TransformationWeightMap& transWeight = this->transformationWeight_[0]; 79 TransformationIndexMap& transMap = transformationMapping_; 116 80 117 81 CArray<int,1>& axisDstIndex = axisDest_->index; … … 131 95 { 132 96 transMap[j_index(idxDomain)].push_back(j_index(idxDomain)* ni_glo + i_index(idxDomain)); 133 transWeight[j_index(idxDomain)].push_back(1.0) ;134 97 } 135 98 } … … 142 105 int globalAxisIdx = axisDstIndex(idxAxis); 143 106 transMap[globalAxisIdx].resize(ni_glo); 144 transWeight[globalAxisIdx].resize(ni_glo);145 107 for (int idx = 0; idx < ni_glo; ++idx) 146 108 { 147 109 transMap[globalAxisIdx][idx] = globalAxisIdx * ni_glo + idx; 148 transWeight[globalAxisIdx][idx] = 1.0;149 110 } 150 111 } … … 166 127 { 167 128 transMap[i_index(idxDomain)].push_back(j_index(idxDomain)* ni_glo + i_index(idxDomain)); 168 transWeight[i_index(idxDomain)].push_back(1.0) ;169 129 } 170 130 } … … 176 136 int globalAxisIdx = axisDstIndex(idxAxis); 177 137 transMap[globalAxisIdx].resize(nj_glo); 178 transWeight[globalAxisIdx].resize(nj_glo);179 138 for (int idx = 0; idx < nj_glo; ++idx) 180 139 { 181 140 transMap[globalAxisIdx][idx] = globalAxisIdx + ni_glo*idx; 182 transWeight[globalAxisIdx][idx] = 1.0;183 141 } 184 142 } … … 187 145 else 188 146 {} 147 148 axisDestination->checkAttributes() ; 149 this->computeAlgorithm(domainSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ; 150 189 151 } 190 152 CATCH 191 153 154 155 CAxisAlgorithmReduceDomain::~CAxisAlgorithmReduceDomain() 156 TRY 157 { 192 158 } 159 CATCH 160 161 162 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_domain.hpp
r1988 r1999 10 10 #define __XIOS_AXIS_ALGORITHM_REDUCE_DOMAIN_HPP__ 11 11 12 #include "a xis_algorithm_transformation.hpp"12 #include "algorithm_transformation_reduce.hpp" 13 13 #include "transformation.hpp" 14 14 … … 24 24 Reduce a domain to an axis 25 25 */ 26 class CAxisAlgorithmReduceDomain : public CA xisAlgorithmTransformation26 class CAxisAlgorithmReduceDomain : public CAlgorithmTransformationReduce 27 27 { 28 28 public: 29 29 CAxisAlgorithmReduceDomain(bool isSource, CAxis* axisDestination, CDomain* domainSource, CReduceDomainToAxis* algo); 30 31 virtual void apply(const std::vector<std::pair<int,double> >& localIndex,32 const double* dataInput,33 CArray<double,1>& dataOut,34 std::vector<bool>& flagInitial,35 bool ignoreMissingValue, bool firstPass);36 37 virtual void updateData(CArray<double,1>& dataOut);38 30 39 31 virtual ~CAxisAlgorithmReduceDomain(); … … 50 42 bool local ; 51 43 52 protected: 53 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); 54 55 protected: 56 CReductionAlgorithm* reduction_; 44 CDomain* domainSrc_ ; 45 CAxis* axisDest_ ; 57 46 58 47 private:
Note: See TracChangeset
for help on using the changeset viewer.