Ignore:
Timestamp:
09/15/17 16:51:16 (7 years ago)
Author:
ymipsl
Message:

interpolate_domain : add new attribute "read_write_convention" which msut be "c" or fortran. The default remain fortran (global indices begin at 1)

YM

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

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.cpp

    r1268 r1269  
    5656  renormalize = interpDomain_->renormalize ; 
    5757  quantity = interpDomain_->quantity ; 
     58 
     59  if (interpDomain_->read_write_convention == CInterpolateDomain::read_write_convention_attr::fortran) fortranConvention=true ; 
     60  else fortranConvention=false ; 
    5861   
    5962  fileToReadWrite_ = "xios_interpolation_weights_"; 
     
    768771 
    769772  int index = 0; 
     773  int indexOffset=0 ; 
     774  if (fortranConvention) indexOffset=1 ; 
    770775  for (it = itb; it !=ite; ++it) 
    771776  { 
     
    773778    for (int idx = 0; idx < tmp.size(); ++idx) 
    774779    { 
    775       dst_idx(index) = it->first + 1; 
    776       src_idx(index) = tmp[idx].first + 1; 
     780      dst_idx(index) = it->first + indexOffset; 
     781      src_idx(index) = tmp[idx].first + indexOffset; 
    777782      weights(index) = tmp[idx].second; 
    778783      ++index; 
     
    884889  nc_get_vara_long(ncid, dstIndexId, &start, &nbWeight, dstIndex) ; 
    885890 
    886   for(size_t ind=0; ind<nbWeight;++ind) 
    887     interpMapValue[dstIndex[ind]-1].push_back(make_pair(srcIndex[ind]-1,weight[ind])); 
    888 } 
     891  int indexOffset=0 ; 
     892  if (fortranConvention) indexOffset=1 ; 
     893    for(size_t ind=0; ind<nbWeight;++ind) 
     894      interpMapValue[dstIndex[ind]-indexOffset].push_back(make_pair(srcIndex[ind]-indexOffset,weight[ind])); 
     895 } 
    889896 
    890897void CDomainAlgorithmInterpolate::apply(const std::vector<std::pair<int,double> >& localIndex, 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.hpp

    r1264 r1269  
    6363  bool readFromFile_; 
    6464  StdString fileToReadWrite_; 
     65  bool fortranConvention ; 
    6566 
    6667  // class WriteNetCdf; 
Note: See TracChangeset for help on using the changeset viewer.