Ignore:
Timestamp:
01/10/18 16:17:57 (6 years ago)
Author:
ymipsl
Message:

2 update for spatial tranformations :

  • One bug fix introduce in r1389 concerning domain interpolation or other distributed spatial distransfomation
  • Specific optimisation for transformation on element wich is not distributed across processes

This optimisation is experimental and will be activated only when using a variable in xios context :

<variable id="activate_non_distributed_transformation" type="bool">true</variable>

Later when more succesfull test, the variable use will removed...

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/generic_algorithm_transformation.hpp

    r1389 r1399  
    5252  virtual ~CGenericAlgorithmTransformation() {} 
    5353 
     54  bool isDistributedTransformation(int elementPositionInGrid, CGrid* gridSrc, CGrid* gridDst) ; 
     55 
    5456  void computeGlobalSourceIndex(int elementPositionInGrid, 
    5557                               CGrid* gridSrc, 
     
    8587  */ 
    8688  void computeIndexSourceMapping(const std::vector<CArray<double,1>* >& dataAuxInputs = std::vector<CArray<double,1>* >()); 
     89  void computeTransformationMappingNonDistributed(int elementPositionInGrid, CGrid* gridSrc, CGrid* gridDst, 
     90                                                  vector<int>& localSrc, vector<int>& localDst, vector<double>& weight, vector<bool>& localMaskOnGridDest); 
     91  void nonDistributedrecursiveFunct(int currentPos, int elementPositionInGrid, int& srcInd, vector<int>& nIndexSrc, int& t, vector<vector<vector<pair<int,double> > > >& dstIndWeight, int currentInd, 
     92                                     vector<int>& localSrc, vector<int>& localDst, vector<double>& weight, CArray<bool,1>& localMaskOnGridSrc, vector<bool>& localMaskOnGridDest) ; 
    8793 
    8894protected: 
     
    126132 
    127133protected: 
     134  //! indicate if the transformation is performed on a distributed element 
     135  bool isDistributed_ ; 
     136  //! indicate if the method  isDistributedTransformation has been called before 
     137  bool isDistributedComputed_ ; 
     138   
    128139  //! Map between global index of destination element and source element 
    129140  std::vector<TransformationIndexMap> transformationMapping_; 
     
    144155  std::vector<int> procContainSrcElementIdx_;  // List of processes containing source index of transformed elements 
    145156//  std::set<int> procOfNonTransformedElements_; // Processes contain the source index of non-transformed elements 
     157  std::set<int> commonProc_; 
    146158  std::vector< set<int> > procElementList_ ; // List of processes containing source index of elements 
    147159 
Note: See TracChangeset for help on using the changeset viewer.