Ignore:
Timestamp:
09/25/17 10:59:29 (7 years ago)
Author:
ymipsl
Message:

implement diurnal cycle transformation taken as a grid tranformation : scalar -> axis

YM

Location:
XIOS/dev/XIOS_DEV_CMIP6/src/transformation
Files:
2 added
5 edited

Legend:

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

    r976 r1275  
    2020#include "axis_algorithm_transformation.hpp" 
    2121#include "axis_algorithm_extract_domain.hpp" 
     22#include "axis_algorithm_temporal_splitting.hpp" 
    2223 
    2324#include "domain_algorithm_zoom.hpp" 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_transformation.cpp

    r895 r1275  
    1919 
    2020CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CAxis* axisSource) 
    21  : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(axisSource), domainSrc_(0) 
     21 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(axisSource), domainSrc_(0),scalarSrc_(0) 
    2222{ 
    2323  axisDestGlobalSize_ = axisDestination->n_glo.getValue(); 
     
    3030 
    3131CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CDomain* domainSource) 
    32  : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(0), domainSrc_(domainSource) 
     32 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(0), domainSrc_(domainSource),scalarSrc_(0) 
    3333{ 
    3434  axisDestGlobalSize_ = axisDestination->n_glo.getValue(); 
     
    4040} 
    4141 
     42CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CScalar* scalarSource) 
     43 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(0), domainSrc_(0), scalarSrc_(scalarSource) 
     44{ 
     45  axisDestGlobalSize_ = axisDestination->n_glo.getValue(); 
     46  int niDest = axisDestination->n.getValue(); 
     47  int ibeginDest = axisDestination->begin.getValue(); 
     48 
     49  for (int idx = 0; idx < niDest; ++idx) 
     50    if ((axisDestination->mask)(idx)) axisDestGlobalIndex_.push_back(ibeginDest+idx); 
     51} 
    4252CAxisAlgorithmTransformation::~CAxisAlgorithmTransformation() 
    4353{ 
     
    6676  if (2 == elementType) nIndexSize = domainSrc_->i_index.numElements(); 
    6777  else if (1 == elementType) nIndexSize = axisSrc_->index.numElements(); 
     78  else nIndexSize=1  ; //  scalar 
     79   
    6880  CClientClientDHTInt::Index2VectorInfoTypeMap globalIndex2ProcRank; 
    6981  globalIndex2ProcRank.rehash(std::ceil(nIndexSize/globalIndex2ProcRank.max_load_factor())); 
    7082  for (int idx = 0; idx < nIndexSize; ++idx) 
    7183  { 
    72     if (2 == elementType) 
     84    if (2 == elementType) // domain 
    7385    { 
    7486      globalIndex = domainSrc_->i_index(idx) + domainSrc_->j_index(idx) * domainSrc_->ni_glo; 
    7587    } 
    76     else if (1 == elementType) 
     88    else if (1 == elementType) // axis 
    7789    { 
    7890      globalIndex = axisSrc_->index(idx); 
     91    } 
     92    else // scalar 
     93    { 
     94      globalIndex = 0; 
    7995    } 
    8096 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_transformation.hpp

    r934 r1275  
    1717class CAxis; 
    1818class CDomain; 
    19  
     19class CScalar; 
    2020/*! 
    2121  \class CAxisAlgorithmTransformation 
     
    2727  CAxisAlgorithmTransformation(CAxis* axisDestination, CAxis* axisSource); 
    2828  CAxisAlgorithmTransformation(CAxis* axisDestination, CDomain* domainSource); 
     29  CAxisAlgorithmTransformation(CAxis* axisDestination, CScalar* scalarSource); 
    2930 
    3031  virtual ~CAxisAlgorithmTransformation(); 
     
    5253  //! Domain on grid source 
    5354  CDomain* domainSrc_; 
     55 
     56  //! Scalar on grid source 
     57 
     58  CScalar* scalarSrc_; 
    5459}; 
    5560 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/grid_transformation_selector.cpp

    r1158 r1275  
    2929  CAxisAlgorithmInverse::registerTrans(); 
    3030  CAxisAlgorithmReduceDomain::registerTrans(); 
     31  CAxisAlgorithmTemporalSplitting::registerTrans(); 
    3132 
    3233  //! Domain 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/grid_transformation_selector.hpp

    r978 r1275  
    5151  const std::vector<StdString>& getAuxInputs() const { return auxInputs_; } 
    5252  const std::vector<CGenericAlgorithmTransformation*>& getAlgos() const { return algoTransformation_; } 
     53  const std::map<int, int> getElementPositionInGridSrc2AxisPosition() const { return elementPositionInGridSrc2AxisPosition_ ;} 
     54  const std::map<int, int> getElementPositionInGridSrc2DomainPosition() const { return elementPositionInGridSrc2DomainPosition_ ;} 
     55  const std::map<int, int> getElementPositionInGridSrc2ScalarPosition() const { return elementPositionInGridSrc2ScalarPosition_ ;} 
     56  const std::map<int, int> getElementPositionInGridDst2AxisPosition() const { return elementPositionInGridDst2AxisPosition_ ;} 
     57  const std::map<int, int> getElementPositionInGridDst2DomainPosition() const { return elementPositionInGridDst2DomainPosition_ ;} 
     58  const std::map<int, int> getElementPositionInGridDst2ScalarPosition() const { return elementPositionInGridDst2ScalarPosition_ ;} 
     59 
    5360 
    5461protected: 
Note: See TracChangeset for help on using the changeset viewer.