Changeset 887 for XIOS/trunk/src/transformation/grid_transformation.hpp
- Timestamp:
- 07/05/16 15:59:02 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/grid_transformation.hpp
r871 r887 15 15 #include "transformation_enum.hpp" 16 16 #include "duration.hpp" 17 #include "grid_transformation_selector.hpp" 17 18 18 19 namespace xios { … … 30 31 the grid destination of current transformation will be grid source of the next transformation 31 32 */ 32 class CGridTransformation 33 class CGridTransformation : public CGridTransformationSelector 33 34 { 34 35 public: 35 typedef std::list<std::pair<int,std::pair<ETranformationType,int> > > ListAlgoType;36 typedef boost::unordered_map<size_t, std::vector<std::pair<int, std::pair<size_t,double> > > > DestinationIndexMap;37 36 typedef std::map<int, CArray<int,1> > SendingIndexGridSourceMap; 38 37 typedef std::map<int,std::vector<std::pair<int,double> > > RecvIndexGridDestinationMap; … … 53 52 CGrid* getGridSource() { return originalGridSource_; } 54 53 CGrid* getGridDestination() { return gridDestination_; } 55 ListAlgoType getAlgoList() const {return listAlgos_; }56 int getNbAlgo() { return nbAlgos_; }57 const std::vector<StdString>& getAuxInputs() const { return auxInputs_; }58 54 59 55 protected: 60 56 void computeTransformation(); 61 void initializeAlgorithms();62 void initializeAxisAlgorithms(int axisPositionInGrid);63 void initializeDomainAlgorithms(int domPositionInGrid);64 void initializeTransformations();65 57 66 void selectAxisAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 67 void selectDomainAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 68 void selectAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder, bool isDomainAlgo); 58 virtual void selectScalarAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 59 virtual void selectAxisAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 60 virtual void selectDomainAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 61 69 62 void setUpGridSource(int elementPositionInGrid, ETranformationType transType, int nbTransformation); 70 63 void setUpGridDestination(int elementPositionInGrid, ETranformationType transType, int nbTransformation); 71 64 void computeTransformationMapping(const SourceDestinationIndexMap& globalIndexWeightFromSrcToDest); 72 bool isSpecialTransformation(ETranformationType transType);73 65 74 66 protected: 75 //! Grid source on transformation76 CGrid* gridSource_;77 78 //! Grid destination on transformation79 CGrid* gridDestination_, *tmpGridDestination_;80 81 67 //! The grid source of the first transformation (original grid source) 68 CGrid* tmpGridDestination_; 82 69 CGrid* originalGridSource_; 70 std::vector<CGrid*> tempGridSrcs_, tempGridDests_; 83 71 84 72 protected: 85 //! List of algorithm types and their order86 ListAlgoType listAlgos_;87 88 //! Number of algorithm89 int nbAlgos_;90 91 // true if domain algorithm and false if axis algorithm (can be replaced by tuple with listAlgos_92 std::vector<bool> algoTypes_;93 94 // Mapping between position of an element in grid and its transformation (if any)95 std::vector<CGenericAlgorithmTransformation*> algoTransformation_;96 97 73 //! Mapping of (grid) global index representing tranformation. 98 74 std::map<size_t, std::set<size_t> > globaIndexMapFromDestToSource_; … … 108 84 std::list<std::vector<bool> > localMaskOnGridDest_; 109 85 110 //! Position of axis and domain in grid111 std::map<int, int> elementPosition2AxisPositionInGrid_, elementPosition2DomainPositionInGrid_;112 113 std::vector<CGrid*> tempGridSrcs_, tempGridDests_;114 std::vector<StdString> auxInputs_;115 86 bool dynamicalTransformation_; 116 117 87 std::set<Time> timeStamp_; //! Time stamps for auxillary inputs 118 88 };
Note: See TracChangeset
for help on using the changeset viewer.