Changeset 2174 for XIOS


Ignore:
Timestamp:
07/09/21 15:07:49 (3 years ago)
Author:
jderouillat
Message:

Set attributes in compute reorder using source views in Coupling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/domain_algorithm/domain_algorithm_reorder.cpp

    r2170 r2174  
    4747  // checkDomain 
    4848  domainDestination->type.setValue( CDomain::type_attr::rectilinear ); 
     49  // Keep a 2D point of view for this transformation 
    4950  domainDestination->ni_glo = domainSource->ni_glo; 
    5051  domainDestination->nj_glo = domainSource->nj_glo; 
    51   domainDestination->ni = domainSource->ni; 
    52   domainDestination->nj = domainSource->nj; 
    53   domainDestination->ibegin = domainSource->ibegin; 
    54   domainDestination->jbegin = domainSource->jbegin; 
    55   domainDestination->i_index.resize( domainSource->i_index.numElements() ); 
    56   domainDestination->j_index.resize( domainSource->j_index.numElements() ); 
    57   domainDestination->i_index = domainSource->i_index; 
    58   domainDestination->j_index = domainSource->j_index; 
     52  //domainDestination->ni = domainSource->ni;         // Will be computed by checkAttributes 
     53  //domainDestination->nj = domainSource->nj;         //   in function of : 
     54  //domainDestination->ibegin = domainSource->ibegin;>ibegin; //     - domainDestination->i_index 
     55  //domainDestination->jbegin = domainSource->jbegin;>jbegin; //     - domainDestination->j_index 
     56  CArray<size_t,1> sourceGlobalIdx = domainSource->getLocalElement()->getGlobalIndex(); 
     57  int indexSize = sourceGlobalIdx.numElements(); 
     58  domainDestination->i_index.resize( indexSize ); 
     59  domainDestination->j_index.resize( indexSize ); 
     60  for (size_t i = 0; i < indexSize ; ++i) { 
     61    domainDestination->i_index(i) = sourceGlobalIdx(i)%domainSource->ni_glo; 
     62    domainDestination->j_index(i) = sourceGlobalIdx(i)/domainSource->ni_glo; 
     63  } 
     64  // else 
     65  //   - domainDestination->ni_glo = domainSource->ni_glo * domainSource->nj_glo; 
     66  //   - domainDestination->nj_glo = 1; 
     67  //   - domainDestination->i_index = sourceGlobalIdx; 
     68  //   - domainDestination->i_index = 0; 
     69 
     70  CArray<int,1> sourceWorkflowIdx = domainSource->getLocalView(CElementView::WORKFLOW)->getIndex(); 
     71  CArray<int,1> sourceFullIdx     = domainSource->getLocalView(CElementView::FULL    )->getIndex(); 
     72 
    5973  // checkMask -> define domainMask 
    60   domainDestination->mask_1d.resize( domainSource->mask_1d.numElements() ); 
    61   domainDestination->mask_1d = domainSource->mask_1d; // In XML generic_testcase !!! 
    62   domainDestination->mask_2d.resize( domainSource->mask_2d.numElements() ); 
    63   domainDestination->mask_2d = domainSource->mask_2d; 
     74  domainDestination->mask_1d.resize( indexSize ); 
     75  //domainDestination->mask_2d.resize( domainSource->mask_2d.numElements() ); 
     76  //domainDestination->mask_2d = domainSource->mask_2d; 
     77   
    6478  // checkDomainData 
    65   domainDestination->data_dim = domainSource->data_dim; 
    66   domainDestination->data_ni = domainSource->data_ni; 
    67   domainDestination->data_nj = domainSource->data_nj; 
    68   domainDestination->data_ibegin = domainSource->data_ibegin; 
    69   domainDestination->data_jbegin = domainSource->data_ibegin; 
     79  domainDestination->data_dim = 1;//domainSource->data_dim; 
     80  //domainDestination->data_ni = domainSource->data_ni; 
     81  //domainDestination->data_nj = domainSource->data_nj; 
     82  //domainDestination->data_ibegin = domainSource->data_ibegin; 
     83  //domainDestination->data_jbegin = domainSource->data_ibegin; 
    7084  // checkCompression 
    71   domainDestination->data_i_index.resize( domainSource->data_i_index.numElements() ); 
    72   domainDestination->data_j_index.resize( domainSource->data_j_index.numElements() ); 
    73   domainDestination->data_i_index = domainSource->data_i_index; 
    74   domainDestination->data_j_index = domainSource->data_j_index;   
     85  domainDestination->data_i_index.resize( indexSize ); 
     86  domainDestination->data_j_index.resize( indexSize ); 
     87  domainDestination->data_j_index = 0; 
     88  int countMasked(0); 
     89  for (size_t i = 0; i < indexSize ; ++i) { 
     90    if ( sourceFullIdx(i)==sourceWorkflowIdx(i-countMasked) ) { 
     91      domainDestination->mask_1d(i) = 1; 
     92      domainDestination->data_i_index(i) = sourceFullIdx(i); 
     93      //domainDestination->data_i_index(i) = sourceFullIdx(i)%domainSource->ni -  domainSource->data_ibegin; 
     94      //domainDestination->data_j_index(i) = sourceFullIdx(i)/domainSource->ni -  domainSource->data_jbegin; 
     95    } 
     96    else { 
     97      domainDestination->mask_1d(i) = 0; 
     98      domainDestination->data_i_index(i) = -1; 
     99      //domainDestination->data_j_index(i) = -1; 
     100      countMasked++; 
     101    } 
     102  } 
     103 
     104   
    75105  // checkLonLat -> define (bounds_)lon/latvalue 
    76106  domainDestination->latvalue_1d.resize( domainSource->latvalue_1d.numElements() ); 
     
    94124 
    95125  reorderDomain->checkValid(domainSource); 
    96   domainDestination->checkAttributes() ; // for now but maybe use domainSource as template for domain destination 
     126  // domainDestination->checkAttributes() will be operated at the end of the transformation definition to define correctly domainDestination views 
     127  //domainDestination->checkAttributes() ; // for now but maybe use domainSource as template for domain destination 
    97128 
    98129  if (domainSource->type !=  CDomain::type_attr::rectilinear) 
Note: See TracChangeset for help on using the changeset viewer.