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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.