Ignore:
Timestamp:
07/05/16 15:59:02 (8 years ago)
Author:
mhnguyen
Message:

Adding a new type of element into grid: Scalar

+) Add a new node Scalar for xml
+) Make some change on writing scalar value
+) Reorganize some codes
+) Remove some redundant codes

Test
+) On Curie
+) All tests pass

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/transformation/grid_transformation.hpp

    r871 r887  
    1515#include "transformation_enum.hpp" 
    1616#include "duration.hpp" 
     17#include "grid_transformation_selector.hpp" 
    1718 
    1819namespace xios { 
     
    3031the grid destination of current transformation will be grid source of the next transformation 
    3132*/ 
    32 class CGridTransformation 
     33class CGridTransformation : public CGridTransformationSelector 
    3334{ 
    3435public: 
    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; 
    3736  typedef std::map<int, CArray<int,1> > SendingIndexGridSourceMap; 
    3837  typedef std::map<int,std::vector<std::pair<int,double> > > RecvIndexGridDestinationMap; 
     
    5352  CGrid* getGridSource() { return originalGridSource_; } 
    5453  CGrid* getGridDestination() { return gridDestination_; } 
    55   ListAlgoType getAlgoList() const {return listAlgos_; } 
    56   int getNbAlgo() { return nbAlgos_; } 
    57   const std::vector<StdString>& getAuxInputs() const { return auxInputs_; } 
    5854 
    5955protected: 
    6056  void computeTransformation(); 
    61   void initializeAlgorithms(); 
    62   void initializeAxisAlgorithms(int axisPositionInGrid); 
    63   void initializeDomainAlgorithms(int domPositionInGrid); 
    64   void initializeTransformations(); 
    6557 
    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 
    6962  void setUpGridSource(int elementPositionInGrid, ETranformationType transType, int nbTransformation); 
    7063  void setUpGridDestination(int elementPositionInGrid, ETranformationType transType, int nbTransformation); 
    7164  void computeTransformationMapping(const SourceDestinationIndexMap& globalIndexWeightFromSrcToDest); 
    72   bool isSpecialTransformation(ETranformationType transType); 
    7365 
    7466protected: 
    75   //! Grid source on transformation 
    76   CGrid* gridSource_; 
    77  
    78   //! Grid destination on transformation 
    79   CGrid* gridDestination_, *tmpGridDestination_; 
    80  
    8167  //! The grid source of the first transformation (original grid source) 
     68  CGrid* tmpGridDestination_; 
    8269  CGrid* originalGridSource_; 
     70  std::vector<CGrid*> tempGridSrcs_, tempGridDests_; 
    8371 
    8472protected: 
    85   //! List of algorithm types and their order 
    86   ListAlgoType listAlgos_; 
    87  
    88   //! Number of algorithm 
    89   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  
    9773  //! Mapping of (grid) global index representing tranformation. 
    9874  std::map<size_t, std::set<size_t> > globaIndexMapFromDestToSource_; 
     
    10884  std::list<std::vector<bool> > localMaskOnGridDest_; 
    10985 
    110   //! Position of axis and domain in grid 
    111   std::map<int, int> elementPosition2AxisPositionInGrid_, elementPosition2DomainPositionInGrid_; 
    112  
    113   std::vector<CGrid*> tempGridSrcs_, tempGridDests_; 
    114   std::vector<StdString> auxInputs_; 
    11586  bool dynamicalTransformation_; 
    116  
    11787  std::set<Time> timeStamp_; //! Time stamps for auxillary inputs 
    11888}; 
Note: See TracChangeset for help on using the changeset viewer.