Changeset 2131


Ignore:
Timestamp:
04/23/21 15:00:35 (3 months ago)
Author:
oabramkina
Message:

Merging branch dev_oa with tiling into trunk

Location:
XIOS/trunk
Files:
4 added
22 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/config/domain_attribute.conf

    r1615 r2131  
    6363DECLARE_ATTRIBUTE(StdString, domain_ref) 
    6464DECLARE_ATTRIBUTE(int,       prec) 
     65 
     66/* LOCAL */ 
     67DECLARE_ATTRIBUTE(int, ntiles, false) 
     68DECLARE_ATTRIBUTE(bool, tile_only, false) 
     69DECLARE_ARRAY(int, 1, tile_ni, false) 
     70DECLARE_ARRAY(int, 1, tile_nj, false) 
     71DECLARE_ARRAY(int, 1, tile_ibegin, false) 
     72DECLARE_ARRAY(int, 1, tile_jbegin, false) 
     73DECLARE_ARRAY(int, 1, tile_data_ibegin, false) 
     74DECLARE_ARRAY(int, 1, tile_data_jbegin, false) 
     75DECLARE_ARRAY(int, 1, tile_data_ni, false) 
     76DECLARE_ARRAY(int, 1, tile_data_nj, false) 
  • XIOS/trunk/src/distribution_client.cpp

    r1637 r2131  
    1111namespace xios { 
    1212 
    13 CDistributionClient::CDistributionClient(int rank, CGrid* grid) 
     13CDistributionClient::CDistributionClient(int rank, CGrid* grid, bool isTiled) 
    1414   : CDistribution(rank, 0) 
    1515   , axisDomainOrder_() 
     
    2424   , elementNLocal_(), elementNGlobal_() 
    2525{ 
    26   readDistributionInfo(grid); 
     26  readDistributionInfo(grid, isTiled); 
    2727  createGlobalIndex(); 
    2828} 
     
    5050  \param [in] grid Grid to read 
    5151*/ 
    52 void CDistributionClient::readDistributionInfo(CGrid* grid) 
     52void CDistributionClient::readDistributionInfo(CGrid* grid, bool isTiled) 
    5353{ 
    5454  std::vector<CDomain*> domList = grid->getDomains(); 
     
    5757  CArray<int,1> axisDomainOrder = grid->axis_domain_order; 
    5858 
    59   readDistributionInfo(domList, axisList, scalarList, axisDomainOrder); 
     59  readDistributionInfo(domList, axisList, scalarList, axisDomainOrder, isTiled); 
    6060 
    6161  // Then check mask of grid 
     
    102102  \param [in] scalarList List of scalar of grid 
    103103  \param [in] axisDomainOrder order of axis and domain inside a grid. 2 if domain, 1 if axis and zero if scalar 
    104 //  \param [in] gridMask Mask of grid, for now, keep it 3 dimension, but it needs changing 
     104  \param [in] isTiled If true, domain data attributes should be ignored 
    105105*/ 
    106106void CDistributionClient::readDistributionInfo(const std::vector<CDomain*>& domList, 
    107107                                               const std::vector<CAxis*>& axisList, 
    108108                                               const std::vector<CScalar*>& scalarList, 
    109                                                const CArray<int,1>& axisDomainOrder) 
     109                                               const CArray<int,1>& axisDomainOrder, 
     110                                               bool isTiled) 
    110111{ 
    111112  domainNum_ = domList.size(); 
     
    177178      nBeginGlobal_.at(indexMap_[idx]+1) = domList[domIndex]->jbegin; 
    178179 
    179       dataBegin_.at(indexMap_[idx]+1) = domList[domIndex]->data_jbegin.getValue(); 
    180       dataIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->data_j_index); 
    181       infoIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->j_index); 
    182  
    183180      // On the i axis 
    184181      nLocal_.at(indexMap_[idx]) = domList[domIndex]->ni.getValue(); 
     
    187184      nBeginGlobal_.at(indexMap_[idx]) = domList[domIndex]->ibegin; 
    188185 
    189       dataBegin_.at(indexMap_[idx]) = domList[domIndex]->data_ibegin.getValue(); 
    190       dataIndex_.at(indexMap_[idx]).reference(domList[domIndex]->data_i_index); 
    191       infoIndex_.at(indexMap_[idx]).reference(domList[domIndex]->i_index); 
    192  
    193       dataNIndex_.at(idx) = domList[domIndex]->data_i_index.numElements(); 
    194       dataDims_.at(idx) = domList[domIndex]->data_dim.getValue(); 
     186      if (isTiled) 
     187      // Ignore all data attributes, if defined, for tiled domains 
     188      { 
     189        dataBegin_.at(indexMap_[idx]+1) = 0; 
     190        dataBegin_.at(indexMap_[idx]) = 0; 
     191 
     192        // Fill dataIndex_ and infoIndex_ 
     193        CArray<int,1>& infoIndexI = infoIndex_.at(indexMap_[idx]); 
     194        CArray<int,1>& infoIndexJ = infoIndex_.at(indexMap_[idx]+1); 
     195        CArray<int,1>& dataIndexI = dataIndex_.at(indexMap_[idx]); 
     196        CArray<int,1>& dataIndexJ = dataIndex_.at(indexMap_[idx]+1); 
     197        domList[domIndex]->computeCompressionTiled(dataIndexI, dataIndexJ, infoIndexI, infoIndexJ); 
     198 
     199      } 
     200      else 
     201      { 
     202        // On the j axis 
     203        dataBegin_.at(indexMap_[idx]+1) = domList[domIndex]->data_jbegin.getValue(); 
     204        dataIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->data_j_index); 
     205        infoIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->j_index); 
     206 
     207        // On the i axis 
     208        dataBegin_.at(indexMap_[idx]) = domList[domIndex]->data_ibegin.getValue(); 
     209        dataIndex_.at(indexMap_[idx]).reference(domList[domIndex]->data_i_index); 
     210        infoIndex_.at(indexMap_[idx]).reference(domList[domIndex]->i_index); 
     211 
     212      } 
     213 
     214      dataNIndex_.at(idx) = isTiled ? (domList[domIndex]->ni*domList[domIndex]->nj) : domList[domIndex]->data_i_index.numElements(); 
     215      dataDims_.at(idx) = isTiled ? 1 : domList[domIndex]->data_dim.getValue(); 
    195216 
    196217      isDataDistributed_ |= domList[domIndex]->isDistributed(); 
  • XIOS/trunk/src/distribution_client.hpp

    r1637 r2131  
    3434  public: 
    3535    /** Default constructor */ 
    36     CDistributionClient(int rank, CGrid* grid); 
     36    CDistributionClient(int rank, CGrid* grid, bool isTiled = false); 
    3737 
    3838    void createGlobalIndexSendToServer(); 
     
    6161  protected: 
    6262    void createGlobalIndex(); 
    63     void readDistributionInfo(CGrid* grid); 
     63    void readDistributionInfo(CGrid* grid, bool isTiled); 
    6464    void readDistributionInfo(const std::vector<CDomain*>& domList, 
    6565                              const std::vector<CAxis*>& axisList, 
    6666                              const std::vector<CScalar*>& scalarList, 
    67                               const CArray<int,1>& axisDomainOrder); 
     67                              const CArray<int,1>& axisDomainOrder, 
     68                              bool isTiled); 
    6869  private: 
    6970    //! Create local index of a domain 
  • XIOS/trunk/src/filter/source_filter.cpp

    r1928 r2131  
    1919    , offset(offset) 
    2020    , hasMissingValue(hasMissingValue), defaultValue(defaultValue) 
     21    , ntiles(0) 
     22    , storedTileData() 
    2123  { 
    2224    if (!grid) 
     
    5355  } 
    5456 
     57  template <int N> 
     58  void CSourceFilter::streamTile(CDate date, const CArray<double, N>& tileData, int tileId) 
     59  { 
     60    if (ntiles==0) 
     61    { 
     62      const double nanValue = std::numeric_limits<double>::quiet_NaN(); 
     63//      storedTileData.resize(grid->storeIndex_client.numElements()); 
     64      storedTileData.resize(grid->getDataSize()); 
     65      storedTileData = nanValue; 
     66    } 
     67    grid->copyTile(tileData, storedTileData, tileId); 
     68    ++ntiles; 
     69    if (ntiles==grid->getNTiles()) 
     70    { 
     71      // Data entering workflow will be exactly of size ni*nj for a grid 2d or ni*nj*n for a grid 3d 
     72      streamData(date, storedTileData, true); 
     73      ntiles = 0; 
     74    } 
     75  } 
    5576 
    5677  template <int N> 
    57   void CSourceFilter::streamData(CDate date, const CArray<double, N>& data) 
     78  void CSourceFilter::streamData(CDate date, const CArray<double, N>& data, bool isTiled) 
    5879  { 
    5980    date = date + offset; // this is a temporary solution, it should be part of a proper temporal filter 
     
    7495    { 
    7596      if (mask) 
    76         grid->maskField(data, packet->data); 
     97        if (isTiled) 
     98          grid->maskField(data, packet->data, isTiled); 
     99        else 
     100          grid->maskField(data, packet->data); 
    77101      else 
    78102        grid->inputField(data, packet->data); 
     
    97121  } 
    98122 
    99   template void CSourceFilter::streamData<1>(CDate date, const CArray<double, 1>& data); 
    100   template void CSourceFilter::streamData<2>(CDate date, const CArray<double, 2>& data); 
    101   template void CSourceFilter::streamData<3>(CDate date, const CArray<double, 3>& data); 
    102   template void CSourceFilter::streamData<4>(CDate date, const CArray<double, 4>& data); 
    103   template void CSourceFilter::streamData<5>(CDate date, const CArray<double, 5>& data); 
    104   template void CSourceFilter::streamData<6>(CDate date, const CArray<double, 6>& data); 
    105   template void CSourceFilter::streamData<7>(CDate date, const CArray<double, 7>& data); 
     123  template void CSourceFilter::streamData<1>(CDate date, const CArray<double, 1>& data, bool isTiled); 
     124  template void CSourceFilter::streamData<2>(CDate date, const CArray<double, 2>& data, bool isTiled); 
     125  template void CSourceFilter::streamData<3>(CDate date, const CArray<double, 3>& data, bool isTiled); 
     126  template void CSourceFilter::streamData<4>(CDate date, const CArray<double, 4>& data, bool isTiled); 
     127  template void CSourceFilter::streamData<5>(CDate date, const CArray<double, 5>& data, bool isTiled); 
     128  template void CSourceFilter::streamData<6>(CDate date, const CArray<double, 6>& data, bool isTiled); 
     129  template void CSourceFilter::streamData<7>(CDate date, const CArray<double, 7>& data, bool isTiled); 
     130 
     131  template void CSourceFilter::streamTile<1>(CDate date, const CArray<double, 1>& data, int ntile); 
     132  template void CSourceFilter::streamTile<2>(CDate date, const CArray<double, 2>& data, int ntile); 
     133  template void CSourceFilter::streamTile<3>(CDate date, const CArray<double, 3>& data, int ntile); 
     134  template void CSourceFilter::streamTile<4>(CDate date, const CArray<double, 4>& data, int ntile); 
     135  template void CSourceFilter::streamTile<5>(CDate date, const CArray<double, 5>& data, int ntile); 
     136  template void CSourceFilter::streamTile<6>(CDate date, const CArray<double, 6>& data, int ntile); 
     137  template void CSourceFilter::streamTile<7>(CDate date, const CArray<double, 7>& data, int ntile); 
    106138 
    107139  void CSourceFilter::streamDataFromServer(CDate date, const std::map<int, CArray<double, 1> >& data) 
  • XIOS/trunk/src/filter/source_filter.hpp

    r1704 r2131  
    4646       */ 
    4747      template <int N> 
    48       void streamData(CDate date, const CArray<double, N>& data); 
     48      void streamData(CDate date, const CArray<double, N>& data, bool isTiled = false); 
     49 
     50      template <int N> 
     51      void streamTile(CDate date, const CArray<double, N>& data, int ntile); 
    4952 
    5053      void virtual buildGraph(CDataPacketPtr packet); 
     
    7578      const bool compression ; //!< indicates if data need to be compressed : on client side : true, on server side : false 
    7679      const bool mask ;        //!< indicates whether grid mask should be applied (true for clients, false for servers) 
     80      int ntiles ; 
     81      CArray<double, 1> storedTileData; 
    7782  }; // class CSourceFilter 
    7883} // namespace xios 
  • XIOS/trunk/src/interface/c/icdata.cpp

    r2025 r2131  
    438438 
    439439   
    440    void cxios_write_data_k81_hdl(CField* field, double* data_k8, int data_Xsize) 
     440   void cxios_write_data_k81_hdl(CField* field, double* data_k8, int data_Xsize, int tileid) 
    441441   TRY 
    442442   { 
     
    449449 
    450450      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData); 
    451       field->setData(data); 
     451      field->setData(data, tileid); 
    452452 
    453453      CTimer::get("XIOS send field").suspend(); 
     
    456456   CATCH_DUMP_STACK 
    457457    
    458    void cxios_write_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize) 
    459    TRY 
    460    { 
    461       std::string fieldid_str; 
    462       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    463       cxios_write_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ; 
     458   void cxios_write_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int tileid) 
     459   TRY 
     460   { 
     461      std::string fieldid_str; 
     462      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     463      cxios_write_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize, tileid) ; 
    464464     
    465465   } 
     
    468468 
    469469 
    470    void cxios_write_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize) 
     470   void cxios_write_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int tileid) 
    471471   TRY 
    472472   { 
     
    479479 
    480480      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData); 
    481       field->setData(data); 
    482  
    483       CTimer::get("XIOS send field").suspend(); 
    484       CTimer::get("XIOS").suspend(); 
    485    } 
    486    CATCH_DUMP_STACK 
    487  
    488    void cxios_write_data_k82(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize) 
    489    TRY 
    490    { 
    491       std::string fieldid_str; 
    492       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    493       cxios_write_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize) ; 
    494    } 
    495    CATCH_DUMP_STACK 
    496  
    497  
    498  
    499  
    500  
    501  
    502    void cxios_write_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize) 
     481      field->setData(data, tileid); 
     482 
     483      CTimer::get("XIOS send field").suspend(); 
     484      CTimer::get("XIOS").suspend(); 
     485   } 
     486   CATCH_DUMP_STACK 
     487 
     488   void cxios_write_data_k82(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int tileid) 
     489   TRY 
     490   { 
     491      std::string fieldid_str; 
     492      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     493      cxios_write_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, tileid) ; 
     494   } 
     495   CATCH_DUMP_STACK 
     496 
     497 
     498 
     499 
     500 
     501 
     502   void cxios_write_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize, int tileid) 
    503503   TRY 
    504504   { 
     
    511511 
    512512      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData); 
    513       field->setData(data); 
     513      field->setData(data, tileid); 
    514514 
    515515      CTimer::get("XIOS send field").suspend(); 
     
    518518   CATCH_DUMP_STACK 
    519519    
    520    void cxios_write_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize) 
    521    TRY 
    522    { 
    523       std::string fieldid_str; 
    524       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    525       cxios_write_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize) ; 
    526  
    527  
    528    } 
    529    CATCH_DUMP_STACK 
    530  
    531  
    532  
    533  
    534  
    535  
    536    void cxios_write_data_k84_hdl(CField* field, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size) 
     520   void cxios_write_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize, int tileid) 
     521   TRY 
     522   { 
     523      std::string fieldid_str; 
     524      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     525      cxios_write_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize, tileid) ; 
     526 
     527 
     528   } 
     529   CATCH_DUMP_STACK 
     530 
     531 
     532 
     533 
     534 
     535 
     536   void cxios_write_data_k84_hdl(CField* field, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size, int tileid) 
    537537   TRY 
    538538   { 
     
    545545 
    546546      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData); 
    547       field->setData(data); 
    548  
    549       CTimer::get("XIOS send field").suspend(); 
    550       CTimer::get("XIOS").suspend(); 
    551    } 
    552    CATCH_DUMP_STACK 
    553  
    554    void cxios_write_data_k84(const char* fieldid, int fieldid_size, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size) 
    555    TRY 
    556    { 
    557       std::string fieldid_str; 
    558       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    559  
    560       CTimer::get("XIOS").resume(); 
    561       CTimer::get("XIOS send field").resume(); 
    562       cxios_write_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size) ; 
     547      field->setData(data, tileid); 
     548 
     549      CTimer::get("XIOS send field").suspend(); 
     550      CTimer::get("XIOS").suspend(); 
     551   } 
     552   CATCH_DUMP_STACK 
     553 
     554   void cxios_write_data_k84(const char* fieldid, int fieldid_size, double* data_k8, 
     555                             int data_0size, int data_1size, int data_2size, 
     556                             int data_3size, int tileid) 
     557   TRY 
     558   { 
     559      std::string fieldid_str; 
     560      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     561 
     562      CTimer::get("XIOS").resume(); 
     563      CTimer::get("XIOS send field").resume(); 
     564      cxios_write_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, tileid) ; 
    563565   } 
    564566   CATCH_DUMP_STACK 
     
    570572   void cxios_write_data_k85_hdl(CField* field, double* data_k8, 
    571573                             int data_0size, int data_1size, int data_2size, 
    572                              int data_3size, int data_4size) 
     574                             int data_3size, int data_4size, int tileid) 
    573575   TRY 
    574576   { 
     
    581583 
    582584      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData); 
    583       field->setData(data); 
     585      field->setData(data, tileid); 
    584586 
    585587      CTimer::get("XIOS send field").suspend(); 
     
    590592   void cxios_write_data_k85(const char* fieldid, int fieldid_size, double* data_k8, 
    591593                             int data_0size, int data_1size, int data_2size, 
    592                              int data_3size, int data_4size) 
    593    TRY 
    594    { 
    595       std::string fieldid_str; 
    596       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    597       cxios_write_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size) ; 
     594                             int data_3size, int data_4size, int tileid) 
     595   TRY 
     596   { 
     597      std::string fieldid_str; 
     598      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     599      cxios_write_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, tileid) ; 
    598600 
    599601   } 
     
    604606   void cxios_write_data_k86_hdl(CField* field, double* data_k8, 
    605607                             int data_0size, int data_1size, int data_2size, 
    606                              int data_3size, int data_4size, int data_5size) 
     608                             int data_3size, int data_4size, int data_5size, int tileid) 
    607609   TRY 
    608610   { 
     
    616618 
    617619      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData); 
    618       field->setData(data); 
     620      field->setData(data, tileid); 
    619621 
    620622      CTimer::get("XIOS send field").suspend(); 
     
    625627   void cxios_write_data_k86(const char* fieldid, int fieldid_size, double* data_k8, 
    626628                             int data_0size, int data_1size, int data_2size, 
    627                              int data_3size, int data_4size, int data_5size) 
    628    TRY 
    629    { 
    630       std::string fieldid_str; 
    631       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    632       cxios_write_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ; 
     629                             int data_3size, int data_4size, int data_5size, int tileid) 
     630   TRY 
     631   { 
     632      std::string fieldid_str; 
     633      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     634      cxios_write_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, tileid) ; 
    633635 
    634636  } 
     
    641643                             int data_0size, int data_1size, int data_2size, 
    642644                             int data_3size, int data_4size, int data_5size, 
    643                              int data_6size) 
     645                             int data_6size, int tileid) 
    644646   TRY 
    645647   { 
     
    652654 
    653655      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData); 
    654       field->setData(data); 
     656      field->setData(data, tileid); 
    655657 
    656658      CTimer::get("XIOS send field").suspend(); 
     
    662664                             int data_0size, int data_1size, int data_2size, 
    663665                             int data_3size, int data_4size, int data_5size, 
    664                              int data_6size) 
    665    TRY 
    666    { 
    667       std::string fieldid_str; 
    668       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    669       cxios_write_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ; 
     666                             int data_6size, int tileid) 
     667   TRY 
     668   { 
     669      std::string fieldid_str; 
     670      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     671      cxios_write_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, 
     672                               data_5size, data_6size, tileid) ; 
    670673   } 
    671674   CATCH_DUMP_STACK 
     
    704707    
    705708    
    706    void cxios_write_data_k41_hdl(CField* field, float* data_k4, int data_Xsize) 
     709   void cxios_write_data_k41_hdl(CField* field, float* data_k4, int data_Xsize, int tileid) 
    707710   TRY 
    708711   { 
     
    717720      CArray<double, 1> data(data_Xsize); 
    718721      data = data_tmp; 
    719       field->setData(data); 
    720  
    721       CTimer::get("XIOS send field").suspend(); 
    722       CTimer::get("XIOS").suspend(); 
    723    } 
    724    CATCH_DUMP_STACK 
    725  
    726    void cxios_write_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize) 
    727    TRY 
    728    { 
    729       std::string fieldid_str; 
    730       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    731       cxios_write_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize); 
    732    } 
    733    CATCH_DUMP_STACK 
    734  
    735  
    736    void cxios_write_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize) 
     722      field->setData(data, tileid); 
     723 
     724      CTimer::get("XIOS send field").suspend(); 
     725      CTimer::get("XIOS").suspend(); 
     726   } 
     727   CATCH_DUMP_STACK 
     728 
     729   void cxios_write_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int tileid) 
     730   TRY 
     731   { 
     732      std::string fieldid_str; 
     733      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     734      cxios_write_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize, tileid); 
     735   } 
     736   CATCH_DUMP_STACK 
     737 
     738 
     739   void cxios_write_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int tileid) 
    737740   TRY 
    738741   { 
     
    747750      CArray<double, 2> data(data_Xsize, data_Ysize); 
    748751      data = data_tmp; 
    749       field->setData(data); 
    750  
    751       CTimer::get("XIOS send field").suspend(); 
    752       CTimer::get("XIOS").suspend(); 
    753    } 
    754    CATCH_DUMP_STACK 
    755  
    756    void cxios_write_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize) 
    757    TRY 
    758    { 
    759       std::string fieldid_str; 
    760       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    761       cxios_write_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize); 
    762    } 
    763    CATCH_DUMP_STACK 
    764  
    765  
    766  
    767  
    768    void cxios_write_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize) 
     752      field->setData(data, tileid); 
     753 
     754      CTimer::get("XIOS send field").suspend(); 
     755      CTimer::get("XIOS").suspend(); 
     756   } 
     757   CATCH_DUMP_STACK 
     758 
     759   void cxios_write_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int tileid) 
     760   TRY 
     761   { 
     762      std::string fieldid_str; 
     763      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     764      cxios_write_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize, tileid); 
     765   } 
     766   CATCH_DUMP_STACK 
     767 
     768 
     769 
     770 
     771   void cxios_write_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize, int tileid) 
    769772   TRY 
    770773   { 
     
    779782      CArray<double, 3> data(data_Xsize, data_Ysize, data_Zsize); 
    780783      data = data_tmp; 
    781       field->setData(data); 
     784      field->setData(data, tileid); 
    782785 
    783786      CTimer::get("XIOS send field").suspend(); 
     
    786789   CATCH_DUMP_STACK 
    787790    
    788    void cxios_write_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize) 
    789    TRY 
    790    { 
    791       std::string fieldid_str; 
    792       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    793       cxios_write_data_k43_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize, data_Zsize); 
     791   void cxios_write_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize, int tileid) 
     792   TRY 
     793   { 
     794      std::string fieldid_str; 
     795      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     796      cxios_write_data_k43_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize, data_Zsize, tileid); 
    794797    } 
    795798   CATCH_DUMP_STACK 
     
    799802   void cxios_write_data_k44_hdl(CField* field, float* data_k4, 
    800803                             int data_0size, int data_1size, int data_2size, 
    801                              int data_3size) 
     804                             int data_3size, int tileid) 
    802805   TRY 
    803806   { 
     
    812815      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size); 
    813816      data = data_tmp; 
    814       field->setData(data); 
     817      field->setData(data, tileid); 
    815818 
    816819      CTimer::get("XIOS send field").suspend(); 
     
    821824   void cxios_write_data_k44(const char* fieldid, int fieldid_size, float* data_k4, 
    822825                             int data_0size, int data_1size, int data_2size, 
    823                              int data_3size) 
    824    TRY 
    825    { 
    826       std::string fieldid_str; 
    827       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    828       cxios_write_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size) ; 
     826                             int data_3size, int tileid) 
     827   TRY 
     828   { 
     829      std::string fieldid_str; 
     830      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     831      cxios_write_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, tileid) ; 
    829832    } 
    830833   CATCH_DUMP_STACK 
     
    835838   void cxios_write_data_k45_hdl(CField* field, float* data_k4, 
    836839                             int data_0size, int data_1size, int data_2size, 
    837                              int data_3size, int data_4size) 
     840                             int data_3size, int data_4size, int tileid) 
    838841   TRY 
    839842   { 
     
    848851      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size); 
    849852      data = data_tmp; 
    850       field->setData(data); 
     853      field->setData(data, tileid); 
    851854 
    852855      CTimer::get("XIOS send field").suspend(); 
     
    857860   void cxios_write_data_k45(const char* fieldid, int fieldid_size, float* data_k4, 
    858861                             int data_0size, int data_1size, int data_2size, 
    859                              int data_3size, int data_4size) 
    860    TRY 
    861    { 
    862       std::string fieldid_str; 
    863       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    864       cxios_write_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size) ; 
     862                             int data_3size, int data_4size, int tileid) 
     863   TRY 
     864   { 
     865      std::string fieldid_str; 
     866      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     867      cxios_write_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, tileid) ; 
    865868    } 
    866869   CATCH_DUMP_STACK 
     
    870873   void cxios_write_data_k46_hdl(CField* field, float* data_k4, 
    871874                             int data_0size, int data_1size, int data_2size, 
    872                              int data_3size, int data_4size, int data_5size) 
     875                             int data_3size, int data_4size, int data_5size, int tileid) 
    873876   TRY 
    874877   { 
     
    883886      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size); 
    884887      data = data_tmp; 
    885       field->setData(data); 
     888      field->setData(data, tileid); 
    886889 
    887890      CTimer::get("XIOS send field").suspend(); 
     
    892895   void cxios_write_data_k46(const char* fieldid, int fieldid_size, float* data_k4, 
    893896                             int data_0size, int data_1size, int data_2size, 
    894                              int data_3size, int data_4size, int data_5size) 
    895    TRY 
    896    { 
    897       std::string fieldid_str; 
    898       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    899       cxios_write_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ; 
     897                             int data_3size, int data_4size, int data_5size, int tileid) 
     898   TRY 
     899   { 
     900      std::string fieldid_str; 
     901      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     902      cxios_write_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, tileid) ; 
    900903    } 
    901904   CATCH_DUMP_STACK 
     
    905908                             int data_0size, int data_1size, int data_2size, 
    906909                             int data_3size, int data_4size, int data_5size, 
    907                              int data_6size) 
     910                             int data_6size, int tileid) 
    908911   TRY 
    909912   { 
     
    918921      CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size); 
    919922      data = data_tmp; 
    920       field->setData(data); 
     923      field->setData(data, tileid); 
    921924 
    922925      CTimer::get("XIOS send field").suspend(); 
     
    928931                             int data_0size, int data_1size, int data_2size, 
    929932                             int data_3size, int data_4size, int data_5size, 
    930                              int data_6size) 
    931    TRY 
    932    { 
    933       std::string fieldid_str; 
    934       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    935       cxios_write_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ; 
     933                             int data_6size, int tileid) 
     934   TRY 
     935   { 
     936      std::string fieldid_str; 
     937      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     938      cxios_write_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, 
     939                                data_5size, data_6size, tileid) ; 
    936940    } 
    937941   CATCH_DUMP_STACK 
  • XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp

    r1626 r2131  
    905905 
    906906 
     907  void cxios_set_domain_ntiles(domain_Ptr domain_hdl, int ntiles) 
     908  { 
     909    CTimer::get("XIOS").resume(); 
     910    domain_hdl->ntiles.setValue(ntiles); 
     911    CTimer::get("XIOS").suspend(); 
     912  } 
     913 
     914  void cxios_get_domain_ntiles(domain_Ptr domain_hdl, int* ntiles) 
     915  { 
     916    CTimer::get("XIOS").resume(); 
     917    *ntiles = domain_hdl->ntiles.getInheritedValue(); 
     918    CTimer::get("XIOS").suspend(); 
     919  } 
     920 
     921  bool cxios_is_defined_domain_ntiles(domain_Ptr domain_hdl) 
     922  { 
     923     CTimer::get("XIOS").resume(); 
     924     bool isDefined = domain_hdl->ntiles.hasInheritedValue(); 
     925     CTimer::get("XIOS").suspend(); 
     926     return isDefined; 
     927  } 
     928 
     929 
    907930  void cxios_set_domain_nvertex(domain_Ptr domain_hdl, int nvertex) 
    908931  { 
     
    10001023 
    10011024 
     1025  void cxios_set_domain_tile_data_ibegin(domain_Ptr domain_hdl, int* tile_data_ibegin, int* extent) 
     1026  { 
     1027    CTimer::get("XIOS").resume(); 
     1028    CArray<int,1> tmp(tile_data_ibegin, shape(extent[0]), neverDeleteData); 
     1029    domain_hdl->tile_data_ibegin.reference(tmp.copy()); 
     1030     CTimer::get("XIOS").suspend(); 
     1031  } 
     1032 
     1033  void cxios_get_domain_tile_data_ibegin(domain_Ptr domain_hdl, int* tile_data_ibegin, int* extent) 
     1034  { 
     1035    CTimer::get("XIOS").resume(); 
     1036    CArray<int,1> tmp(tile_data_ibegin, shape(extent[0]), neverDeleteData); 
     1037    tmp=domain_hdl->tile_data_ibegin.getInheritedValue(); 
     1038     CTimer::get("XIOS").suspend(); 
     1039  } 
     1040 
     1041  bool cxios_is_defined_domain_tile_data_ibegin(domain_Ptr domain_hdl) 
     1042  { 
     1043     CTimer::get("XIOS").resume(); 
     1044     bool isDefined = domain_hdl->tile_data_ibegin.hasInheritedValue(); 
     1045     CTimer::get("XIOS").suspend(); 
     1046     return isDefined; 
     1047  } 
     1048 
     1049 
     1050  void cxios_set_domain_tile_data_jbegin(domain_Ptr domain_hdl, int* tile_data_jbegin, int* extent) 
     1051  { 
     1052    CTimer::get("XIOS").resume(); 
     1053    CArray<int,1> tmp(tile_data_jbegin, shape(extent[0]), neverDeleteData); 
     1054    domain_hdl->tile_data_jbegin.reference(tmp.copy()); 
     1055     CTimer::get("XIOS").suspend(); 
     1056  } 
     1057 
     1058  void cxios_get_domain_tile_data_jbegin(domain_Ptr domain_hdl, int* tile_data_jbegin, int* extent) 
     1059  { 
     1060    CTimer::get("XIOS").resume(); 
     1061    CArray<int,1> tmp(tile_data_jbegin, shape(extent[0]), neverDeleteData); 
     1062    tmp=domain_hdl->tile_data_jbegin.getInheritedValue(); 
     1063     CTimer::get("XIOS").suspend(); 
     1064  } 
     1065 
     1066  bool cxios_is_defined_domain_tile_data_jbegin(domain_Ptr domain_hdl) 
     1067  { 
     1068     CTimer::get("XIOS").resume(); 
     1069     bool isDefined = domain_hdl->tile_data_jbegin.hasInheritedValue(); 
     1070     CTimer::get("XIOS").suspend(); 
     1071     return isDefined; 
     1072  } 
     1073 
     1074 
     1075  void cxios_set_domain_tile_data_ni(domain_Ptr domain_hdl, int* tile_data_ni, int* extent) 
     1076  { 
     1077    CTimer::get("XIOS").resume(); 
     1078    CArray<int,1> tmp(tile_data_ni, shape(extent[0]), neverDeleteData); 
     1079    domain_hdl->tile_data_ni.reference(tmp.copy()); 
     1080     CTimer::get("XIOS").suspend(); 
     1081  } 
     1082 
     1083  void cxios_get_domain_tile_data_ni(domain_Ptr domain_hdl, int* tile_data_ni, int* extent) 
     1084  { 
     1085    CTimer::get("XIOS").resume(); 
     1086    CArray<int,1> tmp(tile_data_ni, shape(extent[0]), neverDeleteData); 
     1087    tmp=domain_hdl->tile_data_ni.getInheritedValue(); 
     1088     CTimer::get("XIOS").suspend(); 
     1089  } 
     1090 
     1091  bool cxios_is_defined_domain_tile_data_ni(domain_Ptr domain_hdl) 
     1092  { 
     1093     CTimer::get("XIOS").resume(); 
     1094     bool isDefined = domain_hdl->tile_data_ni.hasInheritedValue(); 
     1095     CTimer::get("XIOS").suspend(); 
     1096     return isDefined; 
     1097  } 
     1098 
     1099 
     1100  void cxios_set_domain_tile_data_nj(domain_Ptr domain_hdl, int* tile_data_nj, int* extent) 
     1101  { 
     1102    CTimer::get("XIOS").resume(); 
     1103    CArray<int,1> tmp(tile_data_nj, shape(extent[0]), neverDeleteData); 
     1104    domain_hdl->tile_data_nj.reference(tmp.copy()); 
     1105     CTimer::get("XIOS").suspend(); 
     1106  } 
     1107 
     1108  void cxios_get_domain_tile_data_nj(domain_Ptr domain_hdl, int* tile_data_nj, int* extent) 
     1109  { 
     1110    CTimer::get("XIOS").resume(); 
     1111    CArray<int,1> tmp(tile_data_nj, shape(extent[0]), neverDeleteData); 
     1112    tmp=domain_hdl->tile_data_nj.getInheritedValue(); 
     1113     CTimer::get("XIOS").suspend(); 
     1114  } 
     1115 
     1116  bool cxios_is_defined_domain_tile_data_nj(domain_Ptr domain_hdl) 
     1117  { 
     1118     CTimer::get("XIOS").resume(); 
     1119     bool isDefined = domain_hdl->tile_data_nj.hasInheritedValue(); 
     1120     CTimer::get("XIOS").suspend(); 
     1121     return isDefined; 
     1122  } 
     1123 
     1124 
     1125  void cxios_set_domain_tile_ibegin(domain_Ptr domain_hdl, int* tile_ibegin, int* extent) 
     1126  { 
     1127    CTimer::get("XIOS").resume(); 
     1128    CArray<int,1> tmp(tile_ibegin, shape(extent[0]), neverDeleteData); 
     1129    domain_hdl->tile_ibegin.reference(tmp.copy()); 
     1130     CTimer::get("XIOS").suspend(); 
     1131  } 
     1132 
     1133  void cxios_get_domain_tile_ibegin(domain_Ptr domain_hdl, int* tile_ibegin, int* extent) 
     1134  { 
     1135    CTimer::get("XIOS").resume(); 
     1136    CArray<int,1> tmp(tile_ibegin, shape(extent[0]), neverDeleteData); 
     1137    tmp=domain_hdl->tile_ibegin.getInheritedValue(); 
     1138     CTimer::get("XIOS").suspend(); 
     1139  } 
     1140 
     1141  bool cxios_is_defined_domain_tile_ibegin(domain_Ptr domain_hdl) 
     1142  { 
     1143     CTimer::get("XIOS").resume(); 
     1144     bool isDefined = domain_hdl->tile_ibegin.hasInheritedValue(); 
     1145     CTimer::get("XIOS").suspend(); 
     1146     return isDefined; 
     1147  } 
     1148 
     1149 
     1150  void cxios_set_domain_tile_jbegin(domain_Ptr domain_hdl, int* tile_jbegin, int* extent) 
     1151  { 
     1152    CTimer::get("XIOS").resume(); 
     1153    CArray<int,1> tmp(tile_jbegin, shape(extent[0]), neverDeleteData); 
     1154    domain_hdl->tile_jbegin.reference(tmp.copy()); 
     1155     CTimer::get("XIOS").suspend(); 
     1156  } 
     1157 
     1158  void cxios_get_domain_tile_jbegin(domain_Ptr domain_hdl, int* tile_jbegin, int* extent) 
     1159  { 
     1160    CTimer::get("XIOS").resume(); 
     1161    CArray<int,1> tmp(tile_jbegin, shape(extent[0]), neverDeleteData); 
     1162    tmp=domain_hdl->tile_jbegin.getInheritedValue(); 
     1163     CTimer::get("XIOS").suspend(); 
     1164  } 
     1165 
     1166  bool cxios_is_defined_domain_tile_jbegin(domain_Ptr domain_hdl) 
     1167  { 
     1168     CTimer::get("XIOS").resume(); 
     1169     bool isDefined = domain_hdl->tile_jbegin.hasInheritedValue(); 
     1170     CTimer::get("XIOS").suspend(); 
     1171     return isDefined; 
     1172  } 
     1173 
     1174 
     1175  void cxios_set_domain_tile_ni(domain_Ptr domain_hdl, int* tile_ni, int* extent) 
     1176  { 
     1177    CTimer::get("XIOS").resume(); 
     1178    CArray<int,1> tmp(tile_ni, shape(extent[0]), neverDeleteData); 
     1179    domain_hdl->tile_ni.reference(tmp.copy()); 
     1180     CTimer::get("XIOS").suspend(); 
     1181  } 
     1182 
     1183  void cxios_get_domain_tile_ni(domain_Ptr domain_hdl, int* tile_ni, int* extent) 
     1184  { 
     1185    CTimer::get("XIOS").resume(); 
     1186    CArray<int,1> tmp(tile_ni, shape(extent[0]), neverDeleteData); 
     1187    tmp=domain_hdl->tile_ni.getInheritedValue(); 
     1188     CTimer::get("XIOS").suspend(); 
     1189  } 
     1190 
     1191  bool cxios_is_defined_domain_tile_ni(domain_Ptr domain_hdl) 
     1192  { 
     1193     CTimer::get("XIOS").resume(); 
     1194     bool isDefined = domain_hdl->tile_ni.hasInheritedValue(); 
     1195     CTimer::get("XIOS").suspend(); 
     1196     return isDefined; 
     1197  } 
     1198 
     1199 
     1200  void cxios_set_domain_tile_nj(domain_Ptr domain_hdl, int* tile_nj, int* extent) 
     1201  { 
     1202    CTimer::get("XIOS").resume(); 
     1203    CArray<int,1> tmp(tile_nj, shape(extent[0]), neverDeleteData); 
     1204    domain_hdl->tile_nj.reference(tmp.copy()); 
     1205     CTimer::get("XIOS").suspend(); 
     1206  } 
     1207 
     1208  void cxios_get_domain_tile_nj(domain_Ptr domain_hdl, int* tile_nj, int* extent) 
     1209  { 
     1210    CTimer::get("XIOS").resume(); 
     1211    CArray<int,1> tmp(tile_nj, shape(extent[0]), neverDeleteData); 
     1212    tmp=domain_hdl->tile_nj.getInheritedValue(); 
     1213     CTimer::get("XIOS").suspend(); 
     1214  } 
     1215 
     1216  bool cxios_is_defined_domain_tile_nj(domain_Ptr domain_hdl) 
     1217  { 
     1218     CTimer::get("XIOS").resume(); 
     1219     bool isDefined = domain_hdl->tile_nj.hasInheritedValue(); 
     1220     CTimer::get("XIOS").suspend(); 
     1221     return isDefined; 
     1222  } 
     1223 
     1224 
    10021225  void cxios_set_domain_type(domain_Ptr domain_hdl, const char * type, int type_size) 
    10031226  { 
  • XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp

    r1626 r2131  
    931931 
    932932 
     933  void cxios_set_domaingroup_ntiles(domaingroup_Ptr domaingroup_hdl, int ntiles) 
     934  { 
     935    CTimer::get("XIOS").resume(); 
     936    domaingroup_hdl->ntiles.setValue(ntiles); 
     937    CTimer::get("XIOS").suspend(); 
     938  } 
     939 
     940  void cxios_get_domaingroup_ntiles(domaingroup_Ptr domaingroup_hdl, int* ntiles) 
     941  { 
     942    CTimer::get("XIOS").resume(); 
     943    *ntiles = domaingroup_hdl->ntiles.getInheritedValue(); 
     944    CTimer::get("XIOS").suspend(); 
     945  } 
     946 
     947  bool cxios_is_defined_domaingroup_ntiles(domaingroup_Ptr domaingroup_hdl) 
     948  { 
     949     CTimer::get("XIOS").resume(); 
     950     bool isDefined = domaingroup_hdl->ntiles.hasInheritedValue(); 
     951     CTimer::get("XIOS").suspend(); 
     952     return isDefined; 
     953  } 
     954 
     955 
    933956  void cxios_set_domaingroup_nvertex(domaingroup_Ptr domaingroup_hdl, int nvertex) 
    934957  { 
     
    10261049 
    10271050 
     1051  void cxios_set_domaingroup_tile_data_ibegin(domaingroup_Ptr domaingroup_hdl, int* tile_data_ibegin, int* extent) 
     1052  { 
     1053    CTimer::get("XIOS").resume(); 
     1054    CArray<int,1> tmp(tile_data_ibegin, shape(extent[0]), neverDeleteData); 
     1055    domaingroup_hdl->tile_data_ibegin.reference(tmp.copy()); 
     1056     CTimer::get("XIOS").suspend(); 
     1057  } 
     1058 
     1059  void cxios_get_domaingroup_tile_data_ibegin(domaingroup_Ptr domaingroup_hdl, int* tile_data_ibegin, int* extent) 
     1060  { 
     1061    CTimer::get("XIOS").resume(); 
     1062    CArray<int,1> tmp(tile_data_ibegin, shape(extent[0]), neverDeleteData); 
     1063    tmp=domaingroup_hdl->tile_data_ibegin.getInheritedValue(); 
     1064     CTimer::get("XIOS").suspend(); 
     1065  } 
     1066 
     1067  bool cxios_is_defined_domaingroup_tile_data_ibegin(domaingroup_Ptr domaingroup_hdl) 
     1068  { 
     1069     CTimer::get("XIOS").resume(); 
     1070     bool isDefined = domaingroup_hdl->tile_data_ibegin.hasInheritedValue(); 
     1071     CTimer::get("XIOS").suspend(); 
     1072     return isDefined; 
     1073  } 
     1074 
     1075 
     1076  void cxios_set_domaingroup_tile_data_jbegin(domaingroup_Ptr domaingroup_hdl, int* tile_data_jbegin, int* extent) 
     1077  { 
     1078    CTimer::get("XIOS").resume(); 
     1079    CArray<int,1> tmp(tile_data_jbegin, shape(extent[0]), neverDeleteData); 
     1080    domaingroup_hdl->tile_data_jbegin.reference(tmp.copy()); 
     1081     CTimer::get("XIOS").suspend(); 
     1082  } 
     1083 
     1084  void cxios_get_domaingroup_tile_data_jbegin(domaingroup_Ptr domaingroup_hdl, int* tile_data_jbegin, int* extent) 
     1085  { 
     1086    CTimer::get("XIOS").resume(); 
     1087    CArray<int,1> tmp(tile_data_jbegin, shape(extent[0]), neverDeleteData); 
     1088    tmp=domaingroup_hdl->tile_data_jbegin.getInheritedValue(); 
     1089     CTimer::get("XIOS").suspend(); 
     1090  } 
     1091 
     1092  bool cxios_is_defined_domaingroup_tile_data_jbegin(domaingroup_Ptr domaingroup_hdl) 
     1093  { 
     1094     CTimer::get("XIOS").resume(); 
     1095     bool isDefined = domaingroup_hdl->tile_data_jbegin.hasInheritedValue(); 
     1096     CTimer::get("XIOS").suspend(); 
     1097     return isDefined; 
     1098  } 
     1099 
     1100 
     1101  void cxios_set_domaingroup_tile_data_ni(domaingroup_Ptr domaingroup_hdl, int* tile_data_ni, int* extent) 
     1102  { 
     1103    CTimer::get("XIOS").resume(); 
     1104    CArray<int,1> tmp(tile_data_ni, shape(extent[0]), neverDeleteData); 
     1105    domaingroup_hdl->tile_data_ni.reference(tmp.copy()); 
     1106     CTimer::get("XIOS").suspend(); 
     1107  } 
     1108 
     1109  void cxios_get_domaingroup_tile_data_ni(domaingroup_Ptr domaingroup_hdl, int* tile_data_ni, int* extent) 
     1110  { 
     1111    CTimer::get("XIOS").resume(); 
     1112    CArray<int,1> tmp(tile_data_ni, shape(extent[0]), neverDeleteData); 
     1113    tmp=domaingroup_hdl->tile_data_ni.getInheritedValue(); 
     1114     CTimer::get("XIOS").suspend(); 
     1115  } 
     1116 
     1117  bool cxios_is_defined_domaingroup_tile_data_ni(domaingroup_Ptr domaingroup_hdl) 
     1118  { 
     1119     CTimer::get("XIOS").resume(); 
     1120     bool isDefined = domaingroup_hdl->tile_data_ni.hasInheritedValue(); 
     1121     CTimer::get("XIOS").suspend(); 
     1122     return isDefined; 
     1123  } 
     1124 
     1125 
     1126  void cxios_set_domaingroup_tile_data_nj(domaingroup_Ptr domaingroup_hdl, int* tile_data_nj, int* extent) 
     1127  { 
     1128    CTimer::get("XIOS").resume(); 
     1129    CArray<int,1> tmp(tile_data_nj, shape(extent[0]), neverDeleteData); 
     1130    domaingroup_hdl->tile_data_nj.reference(tmp.copy()); 
     1131     CTimer::get("XIOS").suspend(); 
     1132  } 
     1133 
     1134  void cxios_get_domaingroup_tile_data_nj(domaingroup_Ptr domaingroup_hdl, int* tile_data_nj, int* extent) 
     1135  { 
     1136    CTimer::get("XIOS").resume(); 
     1137    CArray<int,1> tmp(tile_data_nj, shape(extent[0]), neverDeleteData); 
     1138    tmp=domaingroup_hdl->tile_data_nj.getInheritedValue(); 
     1139     CTimer::get("XIOS").suspend(); 
     1140  } 
     1141 
     1142  bool cxios_is_defined_domaingroup_tile_data_nj(domaingroup_Ptr domaingroup_hdl) 
     1143  { 
     1144     CTimer::get("XIOS").resume(); 
     1145     bool isDefined = domaingroup_hdl->tile_data_nj.hasInheritedValue(); 
     1146     CTimer::get("XIOS").suspend(); 
     1147     return isDefined; 
     1148  } 
     1149 
     1150 
     1151  void cxios_set_domaingroup_tile_ibegin(domaingroup_Ptr domaingroup_hdl, int* tile_ibegin, int* extent) 
     1152  { 
     1153    CTimer::get("XIOS").resume(); 
     1154    CArray<int,1> tmp(tile_ibegin, shape(extent[0]), neverDeleteData); 
     1155    domaingroup_hdl->tile_ibegin.reference(tmp.copy()); 
     1156     CTimer::get("XIOS").suspend(); 
     1157  } 
     1158 
     1159  void cxios_get_domaingroup_tile_ibegin(domaingroup_Ptr domaingroup_hdl, int* tile_ibegin, int* extent) 
     1160  { 
     1161    CTimer::get("XIOS").resume(); 
     1162    CArray<int,1> tmp(tile_ibegin, shape(extent[0]), neverDeleteData); 
     1163    tmp=domaingroup_hdl->tile_ibegin.getInheritedValue(); 
     1164     CTimer::get("XIOS").suspend(); 
     1165  } 
     1166 
     1167  bool cxios_is_defined_domaingroup_tile_ibegin(domaingroup_Ptr domaingroup_hdl) 
     1168  { 
     1169     CTimer::get("XIOS").resume(); 
     1170     bool isDefined = domaingroup_hdl->tile_ibegin.hasInheritedValue(); 
     1171     CTimer::get("XIOS").suspend(); 
     1172     return isDefined; 
     1173  } 
     1174 
     1175 
     1176  void cxios_set_domaingroup_tile_jbegin(domaingroup_Ptr domaingroup_hdl, int* tile_jbegin, int* extent) 
     1177  { 
     1178    CTimer::get("XIOS").resume(); 
     1179    CArray<int,1> tmp(tile_jbegin, shape(extent[0]), neverDeleteData); 
     1180    domaingroup_hdl->tile_jbegin.reference(tmp.copy()); 
     1181     CTimer::get("XIOS").suspend(); 
     1182  } 
     1183 
     1184  void cxios_get_domaingroup_tile_jbegin(domaingroup_Ptr domaingroup_hdl, int* tile_jbegin, int* extent) 
     1185  { 
     1186    CTimer::get("XIOS").resume(); 
     1187    CArray<int,1> tmp(tile_jbegin, shape(extent[0]), neverDeleteData); 
     1188    tmp=domaingroup_hdl->tile_jbegin.getInheritedValue(); 
     1189     CTimer::get("XIOS").suspend(); 
     1190  } 
     1191 
     1192  bool cxios_is_defined_domaingroup_tile_jbegin(domaingroup_Ptr domaingroup_hdl) 
     1193  { 
     1194     CTimer::get("XIOS").resume(); 
     1195     bool isDefined = domaingroup_hdl->tile_jbegin.hasInheritedValue(); 
     1196     CTimer::get("XIOS").suspend(); 
     1197     return isDefined; 
     1198  } 
     1199 
     1200 
     1201  void cxios_set_domaingroup_tile_ni(domaingroup_Ptr domaingroup_hdl, int* tile_ni, int* extent) 
     1202  { 
     1203    CTimer::get("XIOS").resume(); 
     1204    CArray<int,1> tmp(tile_ni, shape(extent[0]), neverDeleteData); 
     1205    domaingroup_hdl->tile_ni.reference(tmp.copy()); 
     1206     CTimer::get("XIOS").suspend(); 
     1207  } 
     1208 
     1209  void cxios_get_domaingroup_tile_ni(domaingroup_Ptr domaingroup_hdl, int* tile_ni, int* extent) 
     1210  { 
     1211    CTimer::get("XIOS").resume(); 
     1212    CArray<int,1> tmp(tile_ni, shape(extent[0]), neverDeleteData); 
     1213    tmp=domaingroup_hdl->tile_ni.getInheritedValue(); 
     1214     CTimer::get("XIOS").suspend(); 
     1215  } 
     1216 
     1217  bool cxios_is_defined_domaingroup_tile_ni(domaingroup_Ptr domaingroup_hdl) 
     1218  { 
     1219     CTimer::get("XIOS").resume(); 
     1220     bool isDefined = domaingroup_hdl->tile_ni.hasInheritedValue(); 
     1221     CTimer::get("XIOS").suspend(); 
     1222     return isDefined; 
     1223  } 
     1224 
     1225 
     1226  void cxios_set_domaingroup_tile_nj(domaingroup_Ptr domaingroup_hdl, int* tile_nj, int* extent) 
     1227  { 
     1228    CTimer::get("XIOS").resume(); 
     1229    CArray<int,1> tmp(tile_nj, shape(extent[0]), neverDeleteData); 
     1230    domaingroup_hdl->tile_nj.reference(tmp.copy()); 
     1231     CTimer::get("XIOS").suspend(); 
     1232  } 
     1233 
     1234  void cxios_get_domaingroup_tile_nj(domaingroup_Ptr domaingroup_hdl, int* tile_nj, int* extent) 
     1235  { 
     1236    CTimer::get("XIOS").resume(); 
     1237    CArray<int,1> tmp(tile_nj, shape(extent[0]), neverDeleteData); 
     1238    tmp=domaingroup_hdl->tile_nj.getInheritedValue(); 
     1239     CTimer::get("XIOS").suspend(); 
     1240  } 
     1241 
     1242  bool cxios_is_defined_domaingroup_tile_nj(domaingroup_Ptr domaingroup_hdl) 
     1243  { 
     1244     CTimer::get("XIOS").resume(); 
     1245     bool isDefined = domaingroup_hdl->tile_nj.hasInheritedValue(); 
     1246     CTimer::get("XIOS").suspend(); 
     1247     return isDefined; 
     1248  } 
     1249 
     1250 
    10281251  void cxios_set_domaingroup_type(domaingroup_Ptr domaingroup_hdl, const char * type, int type_size) 
    10291252  { 
  • XIOS/trunk/src/interface/fortran/idata.F90

    r2099 r2131  
    6868      END SUBROUTINE cxios_write_data_k80 
    6969 
    70       SUBROUTINE cxios_write_data_k81_hdl(field_hdl, data_k8, data_Xsize) BIND(C) 
     70      SUBROUTINE cxios_write_data_k81_hdl(field_hdl, data_k8, data_Xsize, tileid) BIND(C) 
    7171         USE ISO_C_BINDING 
    7272         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    7373         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
    7474         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     75         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    7576      END SUBROUTINE cxios_write_data_k81_hdl 
    7677 
    77       SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
     78      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize, tileid) BIND(C) 
    7879         USE ISO_C_BINDING 
    7980         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    8182         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    8283         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     84         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    8385      END SUBROUTINE cxios_write_data_k81 
    8486 
    85       SUBROUTINE cxios_write_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize) BIND(C) 
     87      SUBROUTINE cxios_write_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, tileid) BIND(C) 
    8688         USE ISO_C_BINDING 
    8789         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    8890         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
    8991         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     92         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    9093      END SUBROUTINE cxios_write_data_k82_hdl 
    9194 
    92       SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C) 
     95      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, tileid) BIND(C) 
    9396         USE ISO_C_BINDING 
    9497         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    9699         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    97100         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     101         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    98102      END SUBROUTINE cxios_write_data_k82 
    99103 
    100       SUBROUTINE cxios_write_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     104      SUBROUTINE cxios_write_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize, tileid) BIND(C) 
    101105         USE ISO_C_BINDING 
    102106         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    103107         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
    104108         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     109         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    105110      END SUBROUTINE cxios_write_data_k83_hdl 
    106111 
    107       SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     112      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize, & 
     113                                      tileid) BIND(C) 
    108114         USE ISO_C_BINDING 
    109115         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    111117         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    112118         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     119         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    113120      END SUBROUTINE cxios_write_data_k83 
    114121 
    115122      SUBROUTINE cxios_write_data_k84_hdl(field_hdl, data_k8, & 
    116123                                      data_0size, data_1size, data_2size, & 
    117                                       data_3size) BIND(C) 
     124                                      data_3size, tileid) BIND(C) 
    118125         USE ISO_C_BINDING 
    119126         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    121128         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    122129         INTEGER  (kind = C_INT)   , VALUE        :: data_3size 
     130         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    123131      END SUBROUTINE cxios_write_data_k84_hdl 
    124132 
    125133      SUBROUTINE cxios_write_data_k84(fieldid, fieldid_size, data_k8, & 
    126134                                      data_0size, data_1size, data_2size, & 
    127                                       data_3size) BIND(C) 
     135                                      data_3size, tileid) BIND(C) 
    128136         USE ISO_C_BINDING 
    129137         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    132140         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    133141         INTEGER  (kind = C_INT)   , VALUE        :: data_3size 
     142         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    134143      END SUBROUTINE cxios_write_data_k84 
    135144 
    136145      SUBROUTINE cxios_write_data_k85_hdl(field_hdl, data_k8, & 
    137146                                      data_0size, data_1size, data_2size, & 
    138                                       data_3size, data_4size) BIND(C) 
     147                                      data_3size, data_4size, tileid) BIND(C) 
    139148         USE ISO_C_BINDING 
    140149         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    142151         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    143152         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size 
     153         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    144154      END SUBROUTINE cxios_write_data_k85_hdl 
    145155 
    146156      SUBROUTINE cxios_write_data_k85(fieldid, fieldid_size, data_k8, & 
    147157                                      data_0size, data_1size, data_2size, & 
    148                                       data_3size, data_4size) BIND(C) 
     158                                      data_3size, data_4size, tileid) BIND(C) 
    149159         USE ISO_C_BINDING 
    150160         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    153163         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    154164         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size 
     165         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    155166      END SUBROUTINE cxios_write_data_k85 
    156167 
    157168      SUBROUTINE cxios_write_data_k86_hdl(field_hdl, data_k8, & 
    158169                                      data_0size, data_1size, data_2size, & 
    159                                       data_3size, data_4size, data_5size) BIND(C) 
     170                                      data_3size, data_4size, data_5size, tileid) BIND(C) 
    160171         USE ISO_C_BINDING 
    161172         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    163174         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    164175         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
     176         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    165177      END SUBROUTINE cxios_write_data_k86_hdl 
    166178 
    167179      SUBROUTINE cxios_write_data_k86(fieldid, fieldid_size, data_k8, & 
    168180                                      data_0size, data_1size, data_2size, & 
    169                                       data_3size, data_4size, data_5size) BIND(C) 
     181                                      data_3size, data_4size, data_5size, tileid) BIND(C) 
    170182         USE ISO_C_BINDING 
    171183         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    174186         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    175187         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
     188         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    176189      END SUBROUTINE cxios_write_data_k86 
    177190 
     
    179192                                      data_0size, data_1size, data_2size, & 
    180193                                      data_3size, data_4size, data_5size, & 
    181                                       data_6size) BIND(C) 
     194                                      data_6size, tileid) BIND(C) 
    182195         USE ISO_C_BINDING 
    183196         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    186199         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
    187200         INTEGER  (kind = C_INT)   , VALUE        :: data_6size 
     201         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    188202      END SUBROUTINE cxios_write_data_k87_hdl 
    189203 
     
    191205                                      data_0size, data_1size, data_2size, & 
    192206                                      data_3size, data_4size, data_5size, & 
    193                                       data_6size) BIND(C) 
     207                                      data_6size, tileid) BIND(C) 
    194208         USE ISO_C_BINDING 
    195209         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    199213         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
    200214         INTEGER  (kind = C_INT)   , VALUE        :: data_6size 
     215         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    201216      END SUBROUTINE cxios_write_data_k87 
    202217 
     
    216231      END SUBROUTINE cxios_write_data_k40 
    217232 
    218       SUBROUTINE cxios_write_data_k41_hdl(field_hdl, data_k4, data_Xsize) BIND(C) 
     233      SUBROUTINE cxios_write_data_k41_hdl(field_hdl, data_k4, data_Xsize, tileid) BIND(C) 
    219234         USE ISO_C_BINDING 
    220235         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    221236         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
    222237         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     238         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    223239      END SUBROUTINE cxios_write_data_k41_hdl 
    224240 
    225       SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
     241      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize, tileid) BIND(C) 
    226242         USE ISO_C_BINDING 
    227243         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    229245         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    230246         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     247         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    231248      END SUBROUTINE cxios_write_data_k41 
    232249 
    233       SUBROUTINE cxios_write_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize) BIND(C) 
     250      SUBROUTINE cxios_write_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, tileid) BIND(C) 
    234251         USE ISO_C_BINDING 
    235252         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    236253         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
    237254         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     255         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    238256      END SUBROUTINE cxios_write_data_k42_hdl 
    239257  
    240       SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C) 
     258      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, tileid) BIND(C) 
    241259         USE ISO_C_BINDING 
    242260         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    244262         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    245263         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     264         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    246265      END SUBROUTINE cxios_write_data_k42 
    247266 
    248       SUBROUTINE cxios_write_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     267      SUBROUTINE cxios_write_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize, tileid) BIND(C) 
    249268         USE ISO_C_BINDING 
    250269         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
    251270         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
    252271         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     272         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    253273      END SUBROUTINE cxios_write_data_k43_hdl 
    254274 
    255       SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     275      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize, tileid) BIND(C) 
    256276         USE ISO_C_BINDING 
    257277         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    259279         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
    260280         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     281         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    261282      END SUBROUTINE cxios_write_data_k43 
    262283 
    263284      SUBROUTINE cxios_write_data_k44_hdl(field_hdl, data_k4, & 
    264285                                      data_0size, data_1size, data_2size, & 
    265                                       data_3size) BIND(C) 
     286                                      data_3size, tileid) BIND(C) 
    266287         USE ISO_C_BINDING 
    267288         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    269290         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    270291         INTEGER  (kind = C_INT)   , VALUE        :: data_3size 
     292         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    271293      END SUBROUTINE cxios_write_data_k44_hdl 
    272294 
    273295      SUBROUTINE cxios_write_data_k44(fieldid, fieldid_size, data_k4, & 
    274296                                      data_0size, data_1size, data_2size, & 
    275                                       data_3size) BIND(C) 
     297                                      data_3size, tileid) BIND(C) 
    276298         USE ISO_C_BINDING 
    277299         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    280302         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    281303         INTEGER  (kind = C_INT)   , VALUE        :: data_3size 
     304         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    282305      END SUBROUTINE cxios_write_data_k44 
    283306 
    284307      SUBROUTINE cxios_write_data_k45_hdl(field_hdl, data_k4, & 
    285308                                      data_0size, data_1size, data_2size, & 
    286                                       data_3size, data_4size) BIND(C) 
     309                                      data_3size, data_4size, tileid) BIND(C) 
    287310         USE ISO_C_BINDING 
    288311         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    290313         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    291314         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size 
     315         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    292316      END SUBROUTINE cxios_write_data_k45_hdl 
    293317 
    294318      SUBROUTINE cxios_write_data_k45(fieldid, fieldid_size, data_k4, & 
    295319                                      data_0size, data_1size, data_2size, & 
    296                                       data_3size, data_4size) BIND(C) 
     320                                      data_3size, data_4size, tileid) BIND(C) 
    297321         USE ISO_C_BINDING 
    298322         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    301325         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    302326         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size 
     327         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    303328      END SUBROUTINE cxios_write_data_k45 
    304329 
    305330      SUBROUTINE cxios_write_data_k46_hdl(field_hdl, data_k4, & 
    306331                                      data_0size, data_1size, data_2size, & 
    307                                       data_3size, data_4size, data_5size) BIND(C) 
     332                                      data_3size, data_4size, data_5size, tileid) BIND(C) 
    308333         USE ISO_C_BINDING 
    309334         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    311336         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    312337         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
     338         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    313339      END SUBROUTINE cxios_write_data_k46_hdl 
    314340  
    315341      SUBROUTINE cxios_write_data_k46(fieldid, fieldid_size, data_k4, & 
    316342                                      data_0size, data_1size, data_2size, & 
    317                                       data_3size, data_4size, data_5size) BIND(C) 
     343                                      data_3size, data_4size, data_5size, tileid) BIND(C) 
    318344         USE ISO_C_BINDING 
    319345         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    322348         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size 
    323349         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
     350         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    324351      END SUBROUTINE cxios_write_data_k46 
    325352 
     
    327354                                      data_0size, data_1size, data_2size, & 
    328355                                      data_3size, data_4size, data_5size, & 
    329                                       data_6size) BIND(C) 
     356                                      data_6size, tileid) BIND(C) 
    330357         USE ISO_C_BINDING 
    331358         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl 
     
    334361         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
    335362         INTEGER  (kind = C_INT)   , VALUE        :: data_6size 
     363         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    336364      END SUBROUTINE cxios_write_data_k47_hdl 
    337365 
     
    339367                                      data_0size, data_1size, data_2size, & 
    340368                                      data_3size, data_4size, data_5size, & 
    341                                       data_6size) BIND(C) 
     369                                      data_6size, tileid) BIND(C) 
    342370         USE ISO_C_BINDING 
    343371         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     
    347375         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size 
    348376         INTEGER  (kind = C_INT)   , VALUE        :: data_6size 
     377         INTEGER  (kind = C_INT)   , VALUE        :: tileid 
    349378      END SUBROUTINE cxios_write_data_k47 
    350379 
     
    834863      TYPE(txios(field))              :: field_hdl 
    835864      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:) 
    836       CALL cxios_write_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1)) 
     865      INTEGER, PARAMETER                            :: tileid = -1 
     866      CALL cxios_write_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1), tileid) 
    837867   END SUBROUTINE xios(send_field_r8_1d_hdl) 
    838868 
     
    841871      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    842872      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:) 
    843       CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1)) 
     873      INTEGER, PARAMETER                            :: tileid = -1 
     874      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1), tileid) 
    844875   END SUBROUTINE xios(send_field_r8_1d) 
    845876 
     877   SUBROUTINE xios(send_field_tiled_r8_1d)(fieldid, data1d_k8, tileid) 
     878   IMPLICIT NONE 
     879      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     880      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:) 
     881      INTEGER                          , INTENT(IN) :: tileid 
     882      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1), tileid) 
     883   END SUBROUTINE xios(send_field_tiled_r8_1d) 
     884 
    846885   SUBROUTINE  xios(send_field_r8_2d_hdl)(field_hdl, data2d_k8) 
    847886   IMPLICIT NONE 
    848887      TYPE(txios(field))              :: field_hdl 
    849888      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:) 
    850       CALL cxios_write_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2)) 
     889      INTEGER, PARAMETER                            :: tileid = -1 
     890      CALL cxios_write_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2), tileid) 
    851891   END SUBROUTINE  xios(send_field_r8_2d_hdl) 
    852892 
     
    855895      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    856896      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:) 
    857       CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2)) 
     897      INTEGER, PARAMETER                            :: tileid = -1 
     898      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), & 
     899                                size(data2d_k8, 2), tileid) 
    858900   END SUBROUTINE  xios(send_field_r8_2d) 
    859901 
     902   SUBROUTINE  xios(send_field_tiled_r8_2d)(fieldid, data2d_k8, tileid) 
     903   IMPLICIT NONE 
     904      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     905      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:) 
     906      INTEGER                          , INTENT(IN) :: tileid 
     907      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), & 
     908                                size(data2d_k8, 2), tileid) 
     909   END SUBROUTINE  xios(send_field_tiled_r8_2d) 
     910 
    860911   SUBROUTINE  xios(send_field_r8_3d_hdl)(field_hdl, data3d_k8) 
    861912   IMPLICIT NONE 
    862913      TYPE(txios(field))              :: field_hdl 
    863914      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:) 
    864       CALL cxios_write_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3)) 
     915      INTEGER, PARAMETER                            :: tileid = -1 
     916      CALL cxios_write_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3), & 
     917                                    tileid) 
    865918   END SUBROUTINE  xios(send_field_r8_3d_hdl) 
    866919 
     
    869922      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    870923      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:) 
    871       CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3)) 
     924      INTEGER, PARAMETER                            :: tileid = -1 
     925      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3), & 
     926                                tileid) 
    872927   END SUBROUTINE  xios(send_field_r8_3d) 
    873928 
     929   SUBROUTINE  xios(send_field_tiled_r8_3d)(fieldid, data3d_k8, tileid) 
     930   IMPLICIT NONE 
     931      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     932      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:) 
     933      INTEGER                          , INTENT(IN) :: tileid 
     934      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), & 
     935                                      size(data3d_k8, 2), size(data3d_k8, 3), tileid) 
     936   END SUBROUTINE  xios(send_field_tiled_r8_3d) 
     937 
    874938   SUBROUTINE  xios(send_field_r8_4d_hdl)(field_hdl, data4d_k8) 
    875939   IMPLICIT NONE 
    876940      TYPE(txios(field))              :: field_hdl 
    877941      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:) 
     942      INTEGER, PARAMETER                            :: tileid = -1 
    878943      CALL cxios_write_data_k84_hdl(field_hdl%daddr, data4d_k8, & 
    879944                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), & 
    880                                 size(data4d_k8, 4)) 
     945                                size(data4d_k8, 4), tileid) 
    881946   END SUBROUTINE  xios(send_field_r8_4d_hdl) 
    882947 
     
    885950      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    886951      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:) 
     952      INTEGER, PARAMETER                            :: tileid = -1 
    887953      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, & 
    888954                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), & 
    889                                 size(data4d_k8, 4)) 
     955                                size(data4d_k8, 4), tileid) 
    890956   END SUBROUTINE  xios(send_field_r8_4d) 
    891957 
     958   SUBROUTINE  xios(send_field_tiled_r8_4d)(fieldid, data4d_k8, tileid) 
     959   IMPLICIT NONE 
     960      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     961      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:) 
     962      INTEGER                          , INTENT(IN) :: tileid 
     963      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, & 
     964                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), & 
     965                                size(data4d_k8, 4), tileid) 
     966   END SUBROUTINE  xios(send_field_tiled_r8_4d) 
     967 
    892968   SUBROUTINE  xios(send_field_r8_5d_hdl)(field_hdl, data5d_k8) 
    893969   IMPLICIT NONE 
    894970      TYPE(txios(field))              :: field_hdl 
    895971      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:) 
     972      INTEGER, PARAMETER                            :: tileid = -1 
    896973      CALL cxios_write_data_k85_hdl(field_hdl%daddr, data5d_k8, & 
    897974                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), & 
    898                                 size(data5d_k8, 4), size(data5d_k8, 5)) 
     975                                size(data5d_k8, 4), size(data5d_k8, 5), tileid) 
    899976   END SUBROUTINE  xios(send_field_r8_5d_hdl) 
    900977 
     
    903980      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    904981      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:) 
     982      INTEGER, PARAMETER                            :: tileid = -1 
    905983      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, & 
    906984                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), & 
    907                                 size(data5d_k8, 4), size(data5d_k8, 5)) 
     985                                size(data5d_k8, 4), size(data5d_k8, 5), tileid) 
    908986   END SUBROUTINE  xios(send_field_r8_5d) 
    909987 
     988   SUBROUTINE  xios(send_field_tiled_r8_5d)(fieldid, data5d_k8, tileid) 
     989   IMPLICIT NONE 
     990      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     991      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:) 
     992      INTEGER                          , INTENT(IN) :: tileid 
     993      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, & 
     994                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), & 
     995                                size(data5d_k8, 4), size(data5d_k8, 5), tileid) 
     996   END SUBROUTINE  xios(send_field_tiled_r8_5d) 
     997 
    910998   SUBROUTINE  xios(send_field_r8_6d_hdl)(field_hdl, data6d_k8) 
    911999   IMPLICIT NONE 
    9121000      TYPE(txios(field))              :: field_hdl 
    9131001      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:) 
     1002      INTEGER, PARAMETER                            :: tileid = -1 
    9141003      CALL cxios_write_data_k86_hdl(field_hdl%daddr, data6d_k8, & 
    9151004                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), & 
    916                                 size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6)) 
     1005                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6), tileid) 
    9171006   END SUBROUTINE  xios(send_field_r8_6d_hdl) 
    9181007 
     
    9211010      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    9221011      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:) 
     1012      INTEGER, PARAMETER                            :: tileid = -1 
    9231013      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, & 
    9241014                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), & 
    925                                 size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6)) 
     1015                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6), tileid) 
    9261016   END SUBROUTINE  xios(send_field_r8_6d) 
    9271017 
     1018   SUBROUTINE  xios(send_field_tiled_r8_6d)(fieldid, data6d_k8, tileid) 
     1019   IMPLICIT NONE 
     1020      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1021      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:) 
     1022      INTEGER                          , INTENT(IN) :: tileid 
     1023      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, & 
     1024                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), & 
     1025                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6), tileid) 
     1026   END SUBROUTINE  xios(send_field_tiled_r8_6d) 
     1027 
    9281028   SUBROUTINE  xios(send_field_r8_7d_hdl)(field_hdl, data7d_k8) 
    9291029   IMPLICIT NONE 
    9301030      TYPE(txios(field))              :: field_hdl 
    9311031      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:) 
     1032      INTEGER, PARAMETER                            :: tileid = -1 
    9321033      CALL cxios_write_data_k87_hdl(field_hdl%daddr, data7d_k8, & 
    9331034                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), & 
    9341035                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), & 
    935                                 size(data7d_k8, 7)) 
     1036                                size(data7d_k8, 7), tileid) 
    9361037   END SUBROUTINE  xios(send_field_r8_7d_hdl) 
    9371038 
     
    9401041      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    9411042      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:) 
     1043      INTEGER, PARAMETER                            :: tileid = -1 
    9421044      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, & 
    9431045                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), & 
    9441046                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), & 
    945                                 size(data7d_k8, 7)) 
     1047                                size(data7d_k8, 7), tileid) 
    9461048   END SUBROUTINE  xios(send_field_r8_7d) 
     1049 
     1050   SUBROUTINE  xios(send_field_tiled_r8_7d)(fieldid, data7d_k8, tileid) 
     1051   IMPLICIT NONE 
     1052      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1053      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:) 
     1054      INTEGER                          , INTENT(IN) :: tileid 
     1055      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, & 
     1056                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), & 
     1057                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), & 
     1058                                size(data7d_k8, 7), tileid) 
     1059   END SUBROUTINE  xios(send_field_tiled_r8_7d) 
    9471060 
    9481061   SUBROUTINE xios(send_field_r4_0d_hdl)(field_hdl, data_k4) 
     
    9641077      TYPE(txios(field))              :: field_hdl 
    9651078      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:) 
    966       CALL cxios_write_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1)) 
     1079      INTEGER, PARAMETER                            :: tileid = -1 
     1080      CALL cxios_write_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1), tileid) 
    9671081   END SUBROUTINE xios(send_field_r4_1d_hdl) 
    9681082 
     
    9711085      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    9721086      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:) 
    973       CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1)) 
     1087      INTEGER, PARAMETER                            :: tileid = -1 
     1088      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1), tileid) 
    9741089   END SUBROUTINE xios(send_field_r4_1d) 
    9751090 
     1091   SUBROUTINE xios(send_field_tiled_r4_1d)(fieldid, data1d_k4, tileid) 
     1092   IMPLICIT NONE 
     1093      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1094      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:) 
     1095      INTEGER                          , INTENT(IN) :: tileid 
     1096      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1), tileid) 
     1097   END SUBROUTINE xios(send_field_tiled_r4_1d) 
     1098 
    9761099   SUBROUTINE xios(send_field_r4_2d_hdl)(field_hdl, data2d_k4) 
    9771100   IMPLICIT NONE 
    9781101      TYPE(txios(field))              :: field_hdl 
    9791102      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:) 
    980       CALL cxios_write_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2)) 
     1103      INTEGER, PARAMETER                            :: tileid = -1 
     1104      CALL cxios_write_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2), tileid) 
    9811105   END SUBROUTINE xios(send_field_r4_2d_hdl) 
    9821106 
     
    9851109      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    9861110      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:) 
    987       CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2)) 
     1111      INTEGER, PARAMETER                            :: tileid = -1 
     1112      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2), tileid) 
    9881113   END SUBROUTINE xios(send_field_r4_2d) 
    9891114 
     1115   SUBROUTINE xios(send_field_tiled_r4_2d)(fieldid, data2d_k4, tileid) 
     1116   IMPLICIT NONE 
     1117      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1118      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:) 
     1119      INTEGER                          , INTENT(IN) :: tileid 
     1120      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2), tileid) 
     1121   END SUBROUTINE xios(send_field_tiled_r4_2d) 
     1122 
    9901123   SUBROUTINE xios(send_field_r4_3d_hdl)(field_hdl, data3d_k4) 
    9911124   IMPLICIT NONE 
    9921125      TYPE(txios(field))              :: field_hdl 
    9931126      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:) 
    994       CALL cxios_write_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3)) 
     1127      INTEGER, PARAMETER                            :: tileid = -1 
     1128      CALL cxios_write_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3), & 
     1129                                    tileid) 
    9951130   END SUBROUTINE xios(send_field_r4_3d_hdl) 
    9961131 
     
    9991134      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    10001135      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:) 
    1001       CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3)) 
     1136      INTEGER, PARAMETER                            :: tileid = -1 
     1137      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3), & 
     1138                                tileid) 
    10021139   END SUBROUTINE xios(send_field_r4_3d) 
    10031140 
     1141   SUBROUTINE xios(send_field_tiled_r4_3d)(fieldid, data3d_k4, tileid) 
     1142   IMPLICIT NONE 
     1143      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1144      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:) 
     1145      INTEGER                          , INTENT(IN) :: tileid 
     1146      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3), & 
     1147                                tileid) 
     1148   END SUBROUTINE xios(send_field_tiled_r4_3d) 
     1149 
    10041150   SUBROUTINE  xios(send_field_r4_4d_hdl)(field_hdl, data4d_k4) 
    10051151   IMPLICIT NONE 
    10061152      TYPE(txios(field))              :: field_hdl 
    10071153      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:) 
     1154      INTEGER, PARAMETER                            :: tileid = -1 
    10081155      CALL cxios_write_data_k44_hdl(field_hdl%daddr, data4d_k4, & 
    10091156                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), & 
    1010                                 size(data4d_k4, 4)) 
     1157                                size(data4d_k4, 4), tileid) 
    10111158   END SUBROUTINE  xios(send_field_r4_4d_hdl) 
    1012     
     1159 
    10131160   SUBROUTINE  xios(send_field_r4_4d)(fieldid, data4d_k4) 
    10141161   IMPLICIT NONE 
    10151162      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    10161163      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:) 
     1164      INTEGER, PARAMETER                            :: tileid = -1 
    10171165      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, & 
    10181166                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), & 
    1019                                 size(data4d_k4, 4)) 
     1167                                size(data4d_k4, 4), tileid) 
    10201168   END SUBROUTINE  xios(send_field_r4_4d) 
    10211169 
     1170   SUBROUTINE  xios(send_field_tiled_r4_4d)(fieldid, data4d_k4, tileid) 
     1171   IMPLICIT NONE 
     1172      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1173      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:) 
     1174      INTEGER                          , INTENT(IN) :: tileid 
     1175      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, & 
     1176                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), & 
     1177                                size(data4d_k4, 4), tileid) 
     1178   END SUBROUTINE  xios(send_field_tiled_r4_4d) 
     1179 
    10221180   SUBROUTINE  xios(send_field_r4_5d_hdl)(field_hdl, data5d_k4) 
    10231181   IMPLICIT NONE 
    10241182      TYPE(txios(field))              :: field_hdl 
    10251183      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:) 
     1184      INTEGER, PARAMETER                            :: tileid = -1 
    10261185      CALL cxios_write_data_k45_hdl(field_hdl%daddr, data5d_k4, & 
    10271186                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), & 
    1028                                 size(data5d_k4, 4), size(data5d_k4, 5)) 
     1187                                size(data5d_k4, 4), size(data5d_k4, 5), tileid) 
    10291188   END SUBROUTINE  xios(send_field_r4_5d_hdl) 
    10301189 
     
    10331192      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    10341193      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:) 
     1194      INTEGER, PARAMETER                            :: tileid = -1 
    10351195      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, & 
    10361196                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), & 
    1037                                 size(data5d_k4, 4), size(data5d_k4, 5)) 
     1197                                size(data5d_k4, 4), size(data5d_k4, 5), tileid) 
    10381198   END SUBROUTINE  xios(send_field_r4_5d) 
    10391199 
     1200   SUBROUTINE  xios(send_field_tiled_r4_5d)(fieldid, data5d_k4, tileid) 
     1201   IMPLICIT NONE 
     1202      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1203      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:) 
     1204      INTEGER                          , INTENT(IN) :: tileid 
     1205      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, & 
     1206                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), & 
     1207                                size(data5d_k4, 4), size(data5d_k4, 5), tileid) 
     1208   END SUBROUTINE  xios(send_field_tiled_r4_5d) 
     1209 
    10401210   SUBROUTINE  xios(send_field_r4_6d_hdl)(field_hdl, data6d_k4) 
    10411211   IMPLICIT NONE 
    10421212      TYPE(txios(field))              :: field_hdl 
    10431213      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:) 
     1214      INTEGER, PARAMETER                            :: tileid = -1 
    10441215      CALL cxios_write_data_k46_hdl(field_hdl%daddr, data6d_k4, & 
    10451216                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), & 
    1046                                 size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6)) 
     1217                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6), tileid) 
    10471218   END SUBROUTINE  xios(send_field_r4_6d_hdl) 
    10481219    
     
    10511222      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    10521223      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:) 
     1224      INTEGER, PARAMETER                            :: tileid = -1 
    10531225      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, & 
    10541226                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), & 
    1055                                 size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6)) 
     1227                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6), tileid) 
    10561228   END SUBROUTINE  xios(send_field_r4_6d) 
    10571229 
     1230   SUBROUTINE  xios(send_field_tiled_r4_6d)(fieldid, data6d_k4, tileid) 
     1231   IMPLICIT NONE 
     1232      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1233      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:) 
     1234      INTEGER                          , INTENT(IN) :: tileid 
     1235      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, & 
     1236                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), & 
     1237                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6), tileid) 
     1238   END SUBROUTINE  xios(send_field_tiled_r4_6d) 
     1239 
    10581240   SUBROUTINE  xios(send_field_r4_7d_hdl)(field_hdl, data7d_k4) 
    10591241   IMPLICIT NONE 
    10601242      TYPE(txios(field))              :: field_hdl 
    10611243      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:) 
     1244      INTEGER, PARAMETER                            :: tileid = -1 
    10621245      CALL cxios_write_data_k47_hdl(field_hdl%daddr, data7d_k4, & 
    10631246                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), & 
    10641247                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), & 
    1065                                 size(data7d_k4, 7)) 
     1248                                size(data7d_k4, 7), tileid) 
    10661249   END SUBROUTINE  xios(send_field_r4_7d_hdl) 
    10671250    
     
    10701253      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
    10711254      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:) 
     1255      INTEGER, PARAMETER                            :: tileid = -1 
    10721256      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, & 
    10731257                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), & 
    10741258                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), & 
    1075                                 size(data7d_k4, 7)) 
     1259                                size(data7d_k4, 7), tileid) 
    10761260   END SUBROUTINE  xios(send_field_r4_7d) 
     1261 
     1262   SUBROUTINE  xios(send_field_tiled_r4_7d)(fieldid, data7d_k4, tileid) 
     1263   IMPLICIT NONE 
     1264      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     1265      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:) 
     1266      INTEGER                          , INTENT(IN) :: tileid 
     1267      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, & 
     1268                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), & 
     1269                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), & 
     1270                                size(data7d_k4, 7), tileid) 
     1271   END SUBROUTINE  xios(send_field_tiled_r4_7d) 
    10771272 
    10781273   ! Receive field functions 
  • XIOS/trunk/src/interface/fortran/ixios_interfaces.F90

    r2025 r2131  
    1515                  xios(send_field_r4_0d_hdl), xios(send_field_r4_1d_hdl), xios(send_field_r4_2d_hdl), xios(send_field_r4_3d_hdl), & 
    1616                  xios(send_field_r4_4d_hdl), xios(send_field_r4_5d_hdl), xios(send_field_r4_6d_hdl), xios(send_field_r4_7d_hdl), & 
     17                  xios(send_field_tiled_r8_1d), xios(send_field_tiled_r8_2d), & 
     18                  xios(send_field_tiled_r8_3d), xios(send_field_tiled_r8_4d), & 
     19                  xios(send_field_tiled_r8_5d), xios(send_field_tiled_r8_6d), xios(send_field_tiled_r8_7d), & 
     20                  xios(send_field_tiled_r4_1d), xios(send_field_tiled_r4_2d), & 
     21                  xios(send_field_tiled_r4_3d), xios(send_field_tiled_r4_4d), & 
     22                  xios(send_field_tiled_r4_5d), xios(send_field_tiled_r4_6d), xios(send_field_tiled_r4_7d), & 
    1723                  xios(recv_field_r8_0d), xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), & 
    1824                  xios(recv_field_r8_4d), xios(recv_field_r8_5d), xios(recv_field_r8_6d), xios(recv_field_r8_7d), & 
     
    251257                   xios(send_field_r8_4d_hdl), xios(send_field_r8_5d_hdl), xios(send_field_r8_6d_hdl), xios(send_field_r8_7d_hdl), & 
    252258                   xios(send_field_r4_0d_hdl), xios(send_field_r4_1d_hdl), xios(send_field_r4_2d_hdl), xios(send_field_r4_3d_hdl), & 
    253                    xios(send_field_r4_4d_hdl), xios(send_field_r4_5d_hdl), xios(send_field_r4_6d_hdl), xios(send_field_r4_7d_hdl) 
     259                   xios(send_field_r4_4d_hdl), xios(send_field_r4_5d_hdl), xios(send_field_r4_6d_hdl), xios(send_field_r4_7d_hdl), & 
     260                   xios(send_field_tiled_r8_1d), xios(send_field_tiled_r8_2d), & 
     261                   xios(send_field_tiled_r8_3d), xios(send_field_tiled_r8_4d), & 
     262                   xios(send_field_tiled_r8_5d), xios(send_field_tiled_r8_6d), xios(send_field_tiled_r8_7d), & 
     263                   xios(send_field_tiled_r4_1d), xios(send_field_tiled_r4_2d), & 
     264                   xios(send_field_tiled_r4_3d), xios(send_field_tiled_r4_4d), & 
     265                   xios(send_field_tiled_r4_5d), xios(send_field_tiled_r4_6d), xios(send_field_tiled_r4_7d) 
    254266END INTERFACE xios(send_field) 
    255267 
  • XIOS/trunk/src/interface/fortran_attr/domain_interface_attr.F90

    r1626 r2131  
    744744 
    745745 
     746    SUBROUTINE cxios_set_domain_ntiles(domain_hdl, ntiles) BIND(C) 
     747      USE ISO_C_BINDING 
     748      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     749      INTEGER (KIND=C_INT)      , VALUE :: ntiles 
     750    END SUBROUTINE cxios_set_domain_ntiles 
     751 
     752    SUBROUTINE cxios_get_domain_ntiles(domain_hdl, ntiles) BIND(C) 
     753      USE ISO_C_BINDING 
     754      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     755      INTEGER (KIND=C_INT)             :: ntiles 
     756    END SUBROUTINE cxios_get_domain_ntiles 
     757 
     758    FUNCTION cxios_is_defined_domain_ntiles(domain_hdl) BIND(C) 
     759      USE ISO_C_BINDING 
     760      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_ntiles 
     761      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     762    END FUNCTION cxios_is_defined_domain_ntiles 
     763 
     764 
    746765    SUBROUTINE cxios_set_domain_nvertex(domain_hdl, nvertex) BIND(C) 
    747766      USE ISO_C_BINDING 
     
    822841 
    823842 
     843    SUBROUTINE cxios_set_domain_tile_data_ibegin(domain_hdl, tile_data_ibegin, extent) BIND(C) 
     844      USE ISO_C_BINDING 
     845      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     846      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ibegin 
     847      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     848    END SUBROUTINE cxios_set_domain_tile_data_ibegin 
     849 
     850    SUBROUTINE cxios_get_domain_tile_data_ibegin(domain_hdl, tile_data_ibegin, extent) BIND(C) 
     851      USE ISO_C_BINDING 
     852      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     853      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ibegin 
     854      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     855    END SUBROUTINE cxios_get_domain_tile_data_ibegin 
     856 
     857    FUNCTION cxios_is_defined_domain_tile_data_ibegin(domain_hdl) BIND(C) 
     858      USE ISO_C_BINDING 
     859      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_data_ibegin 
     860      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     861    END FUNCTION cxios_is_defined_domain_tile_data_ibegin 
     862 
     863 
     864    SUBROUTINE cxios_set_domain_tile_data_jbegin(domain_hdl, tile_data_jbegin, extent) BIND(C) 
     865      USE ISO_C_BINDING 
     866      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     867      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_jbegin 
     868      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     869    END SUBROUTINE cxios_set_domain_tile_data_jbegin 
     870 
     871    SUBROUTINE cxios_get_domain_tile_data_jbegin(domain_hdl, tile_data_jbegin, extent) BIND(C) 
     872      USE ISO_C_BINDING 
     873      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     874      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_jbegin 
     875      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     876    END SUBROUTINE cxios_get_domain_tile_data_jbegin 
     877 
     878    FUNCTION cxios_is_defined_domain_tile_data_jbegin(domain_hdl) BIND(C) 
     879      USE ISO_C_BINDING 
     880      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_data_jbegin 
     881      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     882    END FUNCTION cxios_is_defined_domain_tile_data_jbegin 
     883 
     884 
     885    SUBROUTINE cxios_set_domain_tile_data_ni(domain_hdl, tile_data_ni, extent) BIND(C) 
     886      USE ISO_C_BINDING 
     887      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     888      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ni 
     889      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     890    END SUBROUTINE cxios_set_domain_tile_data_ni 
     891 
     892    SUBROUTINE cxios_get_domain_tile_data_ni(domain_hdl, tile_data_ni, extent) BIND(C) 
     893      USE ISO_C_BINDING 
     894      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     895      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ni 
     896      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     897    END SUBROUTINE cxios_get_domain_tile_data_ni 
     898 
     899    FUNCTION cxios_is_defined_domain_tile_data_ni(domain_hdl) BIND(C) 
     900      USE ISO_C_BINDING 
     901      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_data_ni 
     902      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     903    END FUNCTION cxios_is_defined_domain_tile_data_ni 
     904 
     905 
     906    SUBROUTINE cxios_set_domain_tile_data_nj(domain_hdl, tile_data_nj, extent) BIND(C) 
     907      USE ISO_C_BINDING 
     908      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     909      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_nj 
     910      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     911    END SUBROUTINE cxios_set_domain_tile_data_nj 
     912 
     913    SUBROUTINE cxios_get_domain_tile_data_nj(domain_hdl, tile_data_nj, extent) BIND(C) 
     914      USE ISO_C_BINDING 
     915      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     916      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_nj 
     917      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     918    END SUBROUTINE cxios_get_domain_tile_data_nj 
     919 
     920    FUNCTION cxios_is_defined_domain_tile_data_nj(domain_hdl) BIND(C) 
     921      USE ISO_C_BINDING 
     922      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_data_nj 
     923      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     924    END FUNCTION cxios_is_defined_domain_tile_data_nj 
     925 
     926 
     927    SUBROUTINE cxios_set_domain_tile_ibegin(domain_hdl, tile_ibegin, extent) BIND(C) 
     928      USE ISO_C_BINDING 
     929      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     930      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ibegin 
     931      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     932    END SUBROUTINE cxios_set_domain_tile_ibegin 
     933 
     934    SUBROUTINE cxios_get_domain_tile_ibegin(domain_hdl, tile_ibegin, extent) BIND(C) 
     935      USE ISO_C_BINDING 
     936      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     937      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ibegin 
     938      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     939    END SUBROUTINE cxios_get_domain_tile_ibegin 
     940 
     941    FUNCTION cxios_is_defined_domain_tile_ibegin(domain_hdl) BIND(C) 
     942      USE ISO_C_BINDING 
     943      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_ibegin 
     944      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     945    END FUNCTION cxios_is_defined_domain_tile_ibegin 
     946 
     947 
     948    SUBROUTINE cxios_set_domain_tile_jbegin(domain_hdl, tile_jbegin, extent) BIND(C) 
     949      USE ISO_C_BINDING 
     950      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     951      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_jbegin 
     952      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     953    END SUBROUTINE cxios_set_domain_tile_jbegin 
     954 
     955    SUBROUTINE cxios_get_domain_tile_jbegin(domain_hdl, tile_jbegin, extent) BIND(C) 
     956      USE ISO_C_BINDING 
     957      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     958      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_jbegin 
     959      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     960    END SUBROUTINE cxios_get_domain_tile_jbegin 
     961 
     962    FUNCTION cxios_is_defined_domain_tile_jbegin(domain_hdl) BIND(C) 
     963      USE ISO_C_BINDING 
     964      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_jbegin 
     965      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     966    END FUNCTION cxios_is_defined_domain_tile_jbegin 
     967 
     968 
     969    SUBROUTINE cxios_set_domain_tile_ni(domain_hdl, tile_ni, extent) BIND(C) 
     970      USE ISO_C_BINDING 
     971      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     972      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ni 
     973      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     974    END SUBROUTINE cxios_set_domain_tile_ni 
     975 
     976    SUBROUTINE cxios_get_domain_tile_ni(domain_hdl, tile_ni, extent) BIND(C) 
     977      USE ISO_C_BINDING 
     978      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     979      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ni 
     980      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     981    END SUBROUTINE cxios_get_domain_tile_ni 
     982 
     983    FUNCTION cxios_is_defined_domain_tile_ni(domain_hdl) BIND(C) 
     984      USE ISO_C_BINDING 
     985      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_ni 
     986      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     987    END FUNCTION cxios_is_defined_domain_tile_ni 
     988 
     989 
     990    SUBROUTINE cxios_set_domain_tile_nj(domain_hdl, tile_nj, extent) BIND(C) 
     991      USE ISO_C_BINDING 
     992      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     993      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_nj 
     994      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     995    END SUBROUTINE cxios_set_domain_tile_nj 
     996 
     997    SUBROUTINE cxios_get_domain_tile_nj(domain_hdl, tile_nj, extent) BIND(C) 
     998      USE ISO_C_BINDING 
     999      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     1000      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_nj 
     1001      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     1002    END SUBROUTINE cxios_get_domain_tile_nj 
     1003 
     1004    FUNCTION cxios_is_defined_domain_tile_nj(domain_hdl) BIND(C) 
     1005      USE ISO_C_BINDING 
     1006      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_tile_nj 
     1007      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     1008    END FUNCTION cxios_is_defined_domain_tile_nj 
     1009 
     1010 
    8241011    SUBROUTINE cxios_set_domain_type(domain_hdl, type, type_size) BIND(C) 
    8251012      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/domaingroup_interface_attr.F90

    r1626 r2131  
    765765 
    766766 
     767    SUBROUTINE cxios_set_domaingroup_ntiles(domaingroup_hdl, ntiles) BIND(C) 
     768      USE ISO_C_BINDING 
     769      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     770      INTEGER (KIND=C_INT)      , VALUE :: ntiles 
     771    END SUBROUTINE cxios_set_domaingroup_ntiles 
     772 
     773    SUBROUTINE cxios_get_domaingroup_ntiles(domaingroup_hdl, ntiles) BIND(C) 
     774      USE ISO_C_BINDING 
     775      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     776      INTEGER (KIND=C_INT)             :: ntiles 
     777    END SUBROUTINE cxios_get_domaingroup_ntiles 
     778 
     779    FUNCTION cxios_is_defined_domaingroup_ntiles(domaingroup_hdl) BIND(C) 
     780      USE ISO_C_BINDING 
     781      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_ntiles 
     782      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     783    END FUNCTION cxios_is_defined_domaingroup_ntiles 
     784 
     785 
    767786    SUBROUTINE cxios_set_domaingroup_nvertex(domaingroup_hdl, nvertex) BIND(C) 
    768787      USE ISO_C_BINDING 
     
    843862 
    844863 
     864    SUBROUTINE cxios_set_domaingroup_tile_data_ibegin(domaingroup_hdl, tile_data_ibegin, extent) BIND(C) 
     865      USE ISO_C_BINDING 
     866      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     867      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ibegin 
     868      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     869    END SUBROUTINE cxios_set_domaingroup_tile_data_ibegin 
     870 
     871    SUBROUTINE cxios_get_domaingroup_tile_data_ibegin(domaingroup_hdl, tile_data_ibegin, extent) BIND(C) 
     872      USE ISO_C_BINDING 
     873      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     874      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ibegin 
     875      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     876    END SUBROUTINE cxios_get_domaingroup_tile_data_ibegin 
     877 
     878    FUNCTION cxios_is_defined_domaingroup_tile_data_ibegin(domaingroup_hdl) BIND(C) 
     879      USE ISO_C_BINDING 
     880      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_data_ibegin 
     881      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     882    END FUNCTION cxios_is_defined_domaingroup_tile_data_ibegin 
     883 
     884 
     885    SUBROUTINE cxios_set_domaingroup_tile_data_jbegin(domaingroup_hdl, tile_data_jbegin, extent) BIND(C) 
     886      USE ISO_C_BINDING 
     887      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     888      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_jbegin 
     889      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     890    END SUBROUTINE cxios_set_domaingroup_tile_data_jbegin 
     891 
     892    SUBROUTINE cxios_get_domaingroup_tile_data_jbegin(domaingroup_hdl, tile_data_jbegin, extent) BIND(C) 
     893      USE ISO_C_BINDING 
     894      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     895      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_jbegin 
     896      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     897    END SUBROUTINE cxios_get_domaingroup_tile_data_jbegin 
     898 
     899    FUNCTION cxios_is_defined_domaingroup_tile_data_jbegin(domaingroup_hdl) BIND(C) 
     900      USE ISO_C_BINDING 
     901      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_data_jbegin 
     902      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     903    END FUNCTION cxios_is_defined_domaingroup_tile_data_jbegin 
     904 
     905 
     906    SUBROUTINE cxios_set_domaingroup_tile_data_ni(domaingroup_hdl, tile_data_ni, extent) BIND(C) 
     907      USE ISO_C_BINDING 
     908      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     909      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ni 
     910      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     911    END SUBROUTINE cxios_set_domaingroup_tile_data_ni 
     912 
     913    SUBROUTINE cxios_get_domaingroup_tile_data_ni(domaingroup_hdl, tile_data_ni, extent) BIND(C) 
     914      USE ISO_C_BINDING 
     915      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     916      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_ni 
     917      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     918    END SUBROUTINE cxios_get_domaingroup_tile_data_ni 
     919 
     920    FUNCTION cxios_is_defined_domaingroup_tile_data_ni(domaingroup_hdl) BIND(C) 
     921      USE ISO_C_BINDING 
     922      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_data_ni 
     923      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     924    END FUNCTION cxios_is_defined_domaingroup_tile_data_ni 
     925 
     926 
     927    SUBROUTINE cxios_set_domaingroup_tile_data_nj(domaingroup_hdl, tile_data_nj, extent) BIND(C) 
     928      USE ISO_C_BINDING 
     929      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     930      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_nj 
     931      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     932    END SUBROUTINE cxios_set_domaingroup_tile_data_nj 
     933 
     934    SUBROUTINE cxios_get_domaingroup_tile_data_nj(domaingroup_hdl, tile_data_nj, extent) BIND(C) 
     935      USE ISO_C_BINDING 
     936      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     937      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_data_nj 
     938      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     939    END SUBROUTINE cxios_get_domaingroup_tile_data_nj 
     940 
     941    FUNCTION cxios_is_defined_domaingroup_tile_data_nj(domaingroup_hdl) BIND(C) 
     942      USE ISO_C_BINDING 
     943      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_data_nj 
     944      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     945    END FUNCTION cxios_is_defined_domaingroup_tile_data_nj 
     946 
     947 
     948    SUBROUTINE cxios_set_domaingroup_tile_ibegin(domaingroup_hdl, tile_ibegin, extent) BIND(C) 
     949      USE ISO_C_BINDING 
     950      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     951      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ibegin 
     952      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     953    END SUBROUTINE cxios_set_domaingroup_tile_ibegin 
     954 
     955    SUBROUTINE cxios_get_domaingroup_tile_ibegin(domaingroup_hdl, tile_ibegin, extent) BIND(C) 
     956      USE ISO_C_BINDING 
     957      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     958      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ibegin 
     959      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     960    END SUBROUTINE cxios_get_domaingroup_tile_ibegin 
     961 
     962    FUNCTION cxios_is_defined_domaingroup_tile_ibegin(domaingroup_hdl) BIND(C) 
     963      USE ISO_C_BINDING 
     964      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_ibegin 
     965      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     966    END FUNCTION cxios_is_defined_domaingroup_tile_ibegin 
     967 
     968 
     969    SUBROUTINE cxios_set_domaingroup_tile_jbegin(domaingroup_hdl, tile_jbegin, extent) BIND(C) 
     970      USE ISO_C_BINDING 
     971      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     972      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_jbegin 
     973      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     974    END SUBROUTINE cxios_set_domaingroup_tile_jbegin 
     975 
     976    SUBROUTINE cxios_get_domaingroup_tile_jbegin(domaingroup_hdl, tile_jbegin, extent) BIND(C) 
     977      USE ISO_C_BINDING 
     978      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     979      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_jbegin 
     980      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     981    END SUBROUTINE cxios_get_domaingroup_tile_jbegin 
     982 
     983    FUNCTION cxios_is_defined_domaingroup_tile_jbegin(domaingroup_hdl) BIND(C) 
     984      USE ISO_C_BINDING 
     985      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_jbegin 
     986      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     987    END FUNCTION cxios_is_defined_domaingroup_tile_jbegin 
     988 
     989 
     990    SUBROUTINE cxios_set_domaingroup_tile_ni(domaingroup_hdl, tile_ni, extent) BIND(C) 
     991      USE ISO_C_BINDING 
     992      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     993      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ni 
     994      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     995    END SUBROUTINE cxios_set_domaingroup_tile_ni 
     996 
     997    SUBROUTINE cxios_get_domaingroup_tile_ni(domaingroup_hdl, tile_ni, extent) BIND(C) 
     998      USE ISO_C_BINDING 
     999      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     1000      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_ni 
     1001      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     1002    END SUBROUTINE cxios_get_domaingroup_tile_ni 
     1003 
     1004    FUNCTION cxios_is_defined_domaingroup_tile_ni(domaingroup_hdl) BIND(C) 
     1005      USE ISO_C_BINDING 
     1006      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_ni 
     1007      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     1008    END FUNCTION cxios_is_defined_domaingroup_tile_ni 
     1009 
     1010 
     1011    SUBROUTINE cxios_set_domaingroup_tile_nj(domaingroup_hdl, tile_nj, extent) BIND(C) 
     1012      USE ISO_C_BINDING 
     1013      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     1014      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_nj 
     1015      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     1016    END SUBROUTINE cxios_set_domaingroup_tile_nj 
     1017 
     1018    SUBROUTINE cxios_get_domaingroup_tile_nj(domaingroup_hdl, tile_nj, extent) BIND(C) 
     1019      USE ISO_C_BINDING 
     1020      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     1021      INTEGER (KIND=C_INT)     , DIMENSION(*) :: tile_nj 
     1022      INTEGER (kind = C_INT), DIMENSION(*)     :: extent 
     1023    END SUBROUTINE cxios_get_domaingroup_tile_nj 
     1024 
     1025    FUNCTION cxios_is_defined_domaingroup_tile_nj(domaingroup_hdl) BIND(C) 
     1026      USE ISO_C_BINDING 
     1027      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_tile_nj 
     1028      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     1029    END FUNCTION cxios_is_defined_domaingroup_tile_nj 
     1030 
     1031 
    8451032    SUBROUTINE cxios_set_domaingroup_type(domaingroup_hdl, type, type_size) BIND(C) 
    8461033      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/idomain_attr.F90

    r1626 r2131  
    1616    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    1717    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    18     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     18    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     19    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    1920 
    2021    IMPLICIT NONE 
     
    5960      INTEGER  , OPTIONAL, INTENT(IN) :: nj 
    6061      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo 
     62      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles 
    6163      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex 
    6264      INTEGER  , OPTIONAL, INTENT(IN) :: prec 
    6365      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius 
    6466      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     67      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin(:) 
     68      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin(:) 
     69      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni(:) 
     70      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj(:) 
     71      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin(:) 
     72      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin(:) 
     73      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni(:) 
     74      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj(:) 
    6575      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    6676 
     
    7282      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    7383      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    74       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     84      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     85      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    7586 
    7687  END SUBROUTINE xios(set_domain_attr) 
     
    8192    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    8293    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    83     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     94    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     95    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    8496 
    8597    IMPLICIT NONE 
     
    123135      INTEGER  , OPTIONAL, INTENT(IN) :: nj 
    124136      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo 
     137      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles 
    125138      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex 
    126139      INTEGER  , OPTIONAL, INTENT(IN) :: prec 
    127140      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius 
    128141      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     142      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin(:) 
     143      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin(:) 
     144      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni(:) 
     145      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj(:) 
     146      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin(:) 
     147      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin(:) 
     148      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni(:) 
     149      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj(:) 
    129150      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    130151 
     
    134155      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    135156      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    136       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     157      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     158      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    137159 
    138160  END SUBROUTINE xios(set_domain_attr_hdl) 
     
    143165    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  & 
    144166    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  & 
    145     , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_, type_  & 
    146      ) 
     167    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     168    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     169    , tile_ni_, tile_nj_, type_ ) 
    147170 
    148171    IMPLICIT NONE 
     
    186209      INTEGER  , OPTIONAL, INTENT(IN) :: nj_ 
    187210      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo_ 
     211      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles_ 
    188212      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex_ 
    189213      INTEGER  , OPTIONAL, INTENT(IN) :: prec_ 
    190214      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius_ 
    191215      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 
     216      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin_(:) 
     217      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin_(:) 
     218      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni_(:) 
     219      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj_(:) 
     220      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin_(:) 
     221      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin_(:) 
     222      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni_(:) 
     223      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj_(:) 
    192224      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
    193225 
     
    376408      ENDIF 
    377409 
     410      IF (PRESENT(ntiles_)) THEN 
     411        CALL cxios_set_domain_ntiles & 
     412      (domain_hdl%daddr, ntiles_) 
     413      ENDIF 
     414 
    378415      IF (PRESENT(nvertex_)) THEN 
    379416        CALL cxios_set_domain_nvertex & 
     
    394431        CALL cxios_set_domain_standard_name & 
    395432      (domain_hdl%daddr, standard_name_, len(standard_name_)) 
     433      ENDIF 
     434 
     435      IF (PRESENT(tile_data_ibegin_)) THEN 
     436        CALL cxios_set_domain_tile_data_ibegin & 
     437      (domain_hdl%daddr, tile_data_ibegin_, SHAPE(tile_data_ibegin_)) 
     438      ENDIF 
     439 
     440      IF (PRESENT(tile_data_jbegin_)) THEN 
     441        CALL cxios_set_domain_tile_data_jbegin & 
     442      (domain_hdl%daddr, tile_data_jbegin_, SHAPE(tile_data_jbegin_)) 
     443      ENDIF 
     444 
     445      IF (PRESENT(tile_data_ni_)) THEN 
     446        CALL cxios_set_domain_tile_data_ni & 
     447      (domain_hdl%daddr, tile_data_ni_, SHAPE(tile_data_ni_)) 
     448      ENDIF 
     449 
     450      IF (PRESENT(tile_data_nj_)) THEN 
     451        CALL cxios_set_domain_tile_data_nj & 
     452      (domain_hdl%daddr, tile_data_nj_, SHAPE(tile_data_nj_)) 
     453      ENDIF 
     454 
     455      IF (PRESENT(tile_ibegin_)) THEN 
     456        CALL cxios_set_domain_tile_ibegin & 
     457      (domain_hdl%daddr, tile_ibegin_, SHAPE(tile_ibegin_)) 
     458      ENDIF 
     459 
     460      IF (PRESENT(tile_jbegin_)) THEN 
     461        CALL cxios_set_domain_tile_jbegin & 
     462      (domain_hdl%daddr, tile_jbegin_, SHAPE(tile_jbegin_)) 
     463      ENDIF 
     464 
     465      IF (PRESENT(tile_ni_)) THEN 
     466        CALL cxios_set_domain_tile_ni & 
     467      (domain_hdl%daddr, tile_ni_, SHAPE(tile_ni_)) 
     468      ENDIF 
     469 
     470      IF (PRESENT(tile_nj_)) THEN 
     471        CALL cxios_set_domain_tile_nj & 
     472      (domain_hdl%daddr, tile_nj_, SHAPE(tile_nj_)) 
    396473      ENDIF 
    397474 
     
    408485    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    409486    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    410     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     487    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     488    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    411489 
    412490    IMPLICIT NONE 
     
    451529      INTEGER  , OPTIONAL, INTENT(OUT) :: nj 
    452530      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo 
     531      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles 
    453532      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex 
    454533      INTEGER  , OPTIONAL, INTENT(OUT) :: prec 
    455534      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius 
    456535      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     536      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin(:) 
     537      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin(:) 
     538      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni(:) 
     539      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj(:) 
     540      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin(:) 
     541      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin(:) 
     542      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni(:) 
     543      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj(:) 
    457544      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    458545 
     
    464551      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    465552      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    466       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     553      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     554      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    467555 
    468556  END SUBROUTINE xios(get_domain_attr) 
     
    473561    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    474562    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    475     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     563    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     564    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    476565 
    477566    IMPLICIT NONE 
     
    515604      INTEGER  , OPTIONAL, INTENT(OUT) :: nj 
    516605      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo 
     606      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles 
    517607      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex 
    518608      INTEGER  , OPTIONAL, INTENT(OUT) :: prec 
    519609      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius 
    520610      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     611      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin(:) 
     612      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin(:) 
     613      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni(:) 
     614      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj(:) 
     615      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin(:) 
     616      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin(:) 
     617      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni(:) 
     618      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj(:) 
    521619      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    522620 
     
    526624      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    527625      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    528       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     626      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     627      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    529628 
    530629  END SUBROUTINE xios(get_domain_attr_hdl) 
     
    535634    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  & 
    536635    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  & 
    537     , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_, type_  & 
    538      ) 
     636    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     637    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     638    , tile_ni_, tile_nj_, type_ ) 
    539639 
    540640    IMPLICIT NONE 
     
    578678      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_ 
    579679      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo_ 
     680      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles_ 
    580681      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex_ 
    581682      INTEGER  , OPTIONAL, INTENT(OUT) :: prec_ 
    582683      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius_ 
    583684      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 
     685      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin_(:) 
     686      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin_(:) 
     687      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni_(:) 
     688      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj_(:) 
     689      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin_(:) 
     690      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin_(:) 
     691      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni_(:) 
     692      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj_(:) 
    584693      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
    585694 
     
    768877      ENDIF 
    769878 
     879      IF (PRESENT(ntiles_)) THEN 
     880        CALL cxios_get_domain_ntiles & 
     881      (domain_hdl%daddr, ntiles_) 
     882      ENDIF 
     883 
    770884      IF (PRESENT(nvertex_)) THEN 
    771885        CALL cxios_get_domain_nvertex & 
     
    786900        CALL cxios_get_domain_standard_name & 
    787901      (domain_hdl%daddr, standard_name_, len(standard_name_)) 
     902      ENDIF 
     903 
     904      IF (PRESENT(tile_data_ibegin_)) THEN 
     905        CALL cxios_get_domain_tile_data_ibegin & 
     906      (domain_hdl%daddr, tile_data_ibegin_, SHAPE(tile_data_ibegin_)) 
     907      ENDIF 
     908 
     909      IF (PRESENT(tile_data_jbegin_)) THEN 
     910        CALL cxios_get_domain_tile_data_jbegin & 
     911      (domain_hdl%daddr, tile_data_jbegin_, SHAPE(tile_data_jbegin_)) 
     912      ENDIF 
     913 
     914      IF (PRESENT(tile_data_ni_)) THEN 
     915        CALL cxios_get_domain_tile_data_ni & 
     916      (domain_hdl%daddr, tile_data_ni_, SHAPE(tile_data_ni_)) 
     917      ENDIF 
     918 
     919      IF (PRESENT(tile_data_nj_)) THEN 
     920        CALL cxios_get_domain_tile_data_nj & 
     921      (domain_hdl%daddr, tile_data_nj_, SHAPE(tile_data_nj_)) 
     922      ENDIF 
     923 
     924      IF (PRESENT(tile_ibegin_)) THEN 
     925        CALL cxios_get_domain_tile_ibegin & 
     926      (domain_hdl%daddr, tile_ibegin_, SHAPE(tile_ibegin_)) 
     927      ENDIF 
     928 
     929      IF (PRESENT(tile_jbegin_)) THEN 
     930        CALL cxios_get_domain_tile_jbegin & 
     931      (domain_hdl%daddr, tile_jbegin_, SHAPE(tile_jbegin_)) 
     932      ENDIF 
     933 
     934      IF (PRESENT(tile_ni_)) THEN 
     935        CALL cxios_get_domain_tile_ni & 
     936      (domain_hdl%daddr, tile_ni_, SHAPE(tile_ni_)) 
     937      ENDIF 
     938 
     939      IF (PRESENT(tile_nj_)) THEN 
     940        CALL cxios_get_domain_tile_nj & 
     941      (domain_hdl%daddr, tile_nj_, SHAPE(tile_nj_)) 
    788942      ENDIF 
    789943 
     
    800954    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    801955    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    802     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     956    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     957    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    803958 
    804959    IMPLICIT NONE 
     
    8771032      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 
    8781033      LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 
     1034      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles 
     1035      LOGICAL(KIND=C_BOOL) :: ntiles_tmp 
    8791036      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 
    8801037      LOGICAL(KIND=C_BOOL) :: nvertex_tmp 
     
    8851042      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    8861043      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     1044      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin 
     1045      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin_tmp 
     1046      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin 
     1047      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin_tmp 
     1048      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni 
     1049      LOGICAL(KIND=C_BOOL) :: tile_data_ni_tmp 
     1050      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj 
     1051      LOGICAL(KIND=C_BOOL) :: tile_data_nj_tmp 
     1052      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin 
     1053      LOGICAL(KIND=C_BOOL) :: tile_ibegin_tmp 
     1054      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin 
     1055      LOGICAL(KIND=C_BOOL) :: tile_jbegin_tmp 
     1056      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni 
     1057      LOGICAL(KIND=C_BOOL) :: tile_ni_tmp 
     1058      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj 
     1059      LOGICAL(KIND=C_BOOL) :: tile_nj_tmp 
    8871060      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    8881061      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    8951068      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    8961069      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    897       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1070      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     1071      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    8981072 
    8991073  END SUBROUTINE xios(is_defined_domain_attr) 
     
    9041078    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    9051079    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    906     , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1080    , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     1081    , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    9071082 
    9081083    IMPLICIT NONE 
     
    9801155      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 
    9811156      LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 
     1157      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles 
     1158      LOGICAL(KIND=C_BOOL) :: ntiles_tmp 
    9821159      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 
    9831160      LOGICAL(KIND=C_BOOL) :: nvertex_tmp 
     
    9881165      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    9891166      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     1167      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin 
     1168      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin_tmp 
     1169      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin 
     1170      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin_tmp 
     1171      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni 
     1172      LOGICAL(KIND=C_BOOL) :: tile_data_ni_tmp 
     1173      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj 
     1174      LOGICAL(KIND=C_BOOL) :: tile_data_nj_tmp 
     1175      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin 
     1176      LOGICAL(KIND=C_BOOL) :: tile_ibegin_tmp 
     1177      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin 
     1178      LOGICAL(KIND=C_BOOL) :: tile_jbegin_tmp 
     1179      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni 
     1180      LOGICAL(KIND=C_BOOL) :: tile_ni_tmp 
     1181      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj 
     1182      LOGICAL(KIND=C_BOOL) :: tile_nj_tmp 
    9901183      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    9911184      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    9961189      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  & 
    9971190      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  & 
    998       , nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1191      , nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin, tile_data_jbegin  & 
     1192      , tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type ) 
    9991193 
    10001194  END SUBROUTINE xios(is_defined_domain_attr_hdl) 
     
    10051199    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  & 
    10061200    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  & 
    1007     , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_, type_  & 
    1008      ) 
     1201    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     1202    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     1203    , tile_ni_, tile_nj_, type_ ) 
    10091204 
    10101205    IMPLICIT NONE 
     
    10821277      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo_ 
    10831278      LOGICAL(KIND=C_BOOL) :: nj_glo__tmp 
     1279      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles_ 
     1280      LOGICAL(KIND=C_BOOL) :: ntiles__tmp 
    10841281      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex_ 
    10851282      LOGICAL(KIND=C_BOOL) :: nvertex__tmp 
     
    10901287      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name_ 
    10911288      LOGICAL(KIND=C_BOOL) :: standard_name__tmp 
     1289      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin_ 
     1290      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin__tmp 
     1291      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin_ 
     1292      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin__tmp 
     1293      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni_ 
     1294      LOGICAL(KIND=C_BOOL) :: tile_data_ni__tmp 
     1295      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj_ 
     1296      LOGICAL(KIND=C_BOOL) :: tile_data_nj__tmp 
     1297      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin_ 
     1298      LOGICAL(KIND=C_BOOL) :: tile_ibegin__tmp 
     1299      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin_ 
     1300      LOGICAL(KIND=C_BOOL) :: tile_jbegin__tmp 
     1301      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni_ 
     1302      LOGICAL(KIND=C_BOOL) :: tile_ni__tmp 
     1303      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj_ 
     1304      LOGICAL(KIND=C_BOOL) :: tile_nj__tmp 
    10921305      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
    10931306      LOGICAL(KIND=C_BOOL) :: type__tmp 
     
    13091522      ENDIF 
    13101523 
     1524      IF (PRESENT(ntiles_)) THEN 
     1525        ntiles__tmp = cxios_is_defined_domain_ntiles & 
     1526      (domain_hdl%daddr) 
     1527        ntiles_ = ntiles__tmp 
     1528      ENDIF 
     1529 
    13111530      IF (PRESENT(nvertex_)) THEN 
    13121531        nvertex__tmp = cxios_is_defined_domain_nvertex & 
     
    13331552      ENDIF 
    13341553 
     1554      IF (PRESENT(tile_data_ibegin_)) THEN 
     1555        tile_data_ibegin__tmp = cxios_is_defined_domain_tile_data_ibegin & 
     1556      (domain_hdl%daddr) 
     1557        tile_data_ibegin_ = tile_data_ibegin__tmp 
     1558      ENDIF 
     1559 
     1560      IF (PRESENT(tile_data_jbegin_)) THEN 
     1561        tile_data_jbegin__tmp = cxios_is_defined_domain_tile_data_jbegin & 
     1562      (domain_hdl%daddr) 
     1563        tile_data_jbegin_ = tile_data_jbegin__tmp 
     1564      ENDIF 
     1565 
     1566      IF (PRESENT(tile_data_ni_)) THEN 
     1567        tile_data_ni__tmp = cxios_is_defined_domain_tile_data_ni & 
     1568      (domain_hdl%daddr) 
     1569        tile_data_ni_ = tile_data_ni__tmp 
     1570      ENDIF 
     1571 
     1572      IF (PRESENT(tile_data_nj_)) THEN 
     1573        tile_data_nj__tmp = cxios_is_defined_domain_tile_data_nj & 
     1574      (domain_hdl%daddr) 
     1575        tile_data_nj_ = tile_data_nj__tmp 
     1576      ENDIF 
     1577 
     1578      IF (PRESENT(tile_ibegin_)) THEN 
     1579        tile_ibegin__tmp = cxios_is_defined_domain_tile_ibegin & 
     1580      (domain_hdl%daddr) 
     1581        tile_ibegin_ = tile_ibegin__tmp 
     1582      ENDIF 
     1583 
     1584      IF (PRESENT(tile_jbegin_)) THEN 
     1585        tile_jbegin__tmp = cxios_is_defined_domain_tile_jbegin & 
     1586      (domain_hdl%daddr) 
     1587        tile_jbegin_ = tile_jbegin__tmp 
     1588      ENDIF 
     1589 
     1590      IF (PRESENT(tile_ni_)) THEN 
     1591        tile_ni__tmp = cxios_is_defined_domain_tile_ni & 
     1592      (domain_hdl%daddr) 
     1593        tile_ni_ = tile_ni__tmp 
     1594      ENDIF 
     1595 
     1596      IF (PRESENT(tile_nj_)) THEN 
     1597        tile_nj__tmp = cxios_is_defined_domain_tile_nj & 
     1598      (domain_hdl%daddr) 
     1599        tile_nj_ = tile_nj__tmp 
     1600      ENDIF 
     1601 
    13351602      IF (PRESENT(type_)) THEN 
    13361603        type__tmp = cxios_is_defined_domain_type & 
  • XIOS/trunk/src/interface/fortran_attr/idomaingroup_attr.F90

    r1626 r2131  
    1616    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    1717    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    18     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     18    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     19    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     20     ) 
    1921 
    2022    IMPLICIT NONE 
     
    6062      INTEGER  , OPTIONAL, INTENT(IN) :: nj 
    6163      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo 
     64      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles 
    6265      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex 
    6366      INTEGER  , OPTIONAL, INTENT(IN) :: prec 
    6467      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius 
    6568      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     69      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin(:) 
     70      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin(:) 
     71      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni(:) 
     72      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj(:) 
     73      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin(:) 
     74      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin(:) 
     75      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni(:) 
     76      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj(:) 
    6677      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    6778 
     
    7384      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    7485      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    75       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     86      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     87      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     88       ) 
    7689 
    7790  END SUBROUTINE xios(set_domaingroup_attr) 
     
    8295    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    8396    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    84     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     97    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     98    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     99     ) 
    85100 
    86101    IMPLICIT NONE 
     
    125140      INTEGER  , OPTIONAL, INTENT(IN) :: nj 
    126141      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo 
     142      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles 
    127143      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex 
    128144      INTEGER  , OPTIONAL, INTENT(IN) :: prec 
    129145      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius 
    130146      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     147      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin(:) 
     148      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin(:) 
     149      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni(:) 
     150      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj(:) 
     151      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin(:) 
     152      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin(:) 
     153      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni(:) 
     154      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj(:) 
    131155      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    132156 
     
    136160      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    137161      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    138       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     162      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     163      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     164       ) 
    139165 
    140166  END SUBROUTINE xios(set_domaingroup_attr_hdl) 
     
    145171    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  & 
    146172    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  & 
    147     , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_  & 
    148     , type_ ) 
     173    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     174    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     175    , tile_ni_, tile_nj_, type_ ) 
    149176 
    150177    IMPLICIT NONE 
     
    189216      INTEGER  , OPTIONAL, INTENT(IN) :: nj_ 
    190217      INTEGER  , OPTIONAL, INTENT(IN) :: nj_glo_ 
     218      INTEGER  , OPTIONAL, INTENT(IN) :: ntiles_ 
    191219      INTEGER  , OPTIONAL, INTENT(IN) :: nvertex_ 
    192220      INTEGER  , OPTIONAL, INTENT(IN) :: prec_ 
    193221      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: radius_ 
    194222      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 
     223      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ibegin_(:) 
     224      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_jbegin_(:) 
     225      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_ni_(:) 
     226      INTEGER  , OPTIONAL, INTENT(IN) :: tile_data_nj_(:) 
     227      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ibegin_(:) 
     228      INTEGER  , OPTIONAL, INTENT(IN) :: tile_jbegin_(:) 
     229      INTEGER  , OPTIONAL, INTENT(IN) :: tile_ni_(:) 
     230      INTEGER  , OPTIONAL, INTENT(IN) :: tile_nj_(:) 
    195231      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
    196232 
     
    384420      ENDIF 
    385421 
     422      IF (PRESENT(ntiles_)) THEN 
     423        CALL cxios_set_domaingroup_ntiles & 
     424      (domaingroup_hdl%daddr, ntiles_) 
     425      ENDIF 
     426 
    386427      IF (PRESENT(nvertex_)) THEN 
    387428        CALL cxios_set_domaingroup_nvertex & 
     
    402443        CALL cxios_set_domaingroup_standard_name & 
    403444      (domaingroup_hdl%daddr, standard_name_, len(standard_name_)) 
     445      ENDIF 
     446 
     447      IF (PRESENT(tile_data_ibegin_)) THEN 
     448        CALL cxios_set_domaingroup_tile_data_ibegin & 
     449      (domaingroup_hdl%daddr, tile_data_ibegin_, SHAPE(tile_data_ibegin_)) 
     450      ENDIF 
     451 
     452      IF (PRESENT(tile_data_jbegin_)) THEN 
     453        CALL cxios_set_domaingroup_tile_data_jbegin & 
     454      (domaingroup_hdl%daddr, tile_data_jbegin_, SHAPE(tile_data_jbegin_)) 
     455      ENDIF 
     456 
     457      IF (PRESENT(tile_data_ni_)) THEN 
     458        CALL cxios_set_domaingroup_tile_data_ni & 
     459      (domaingroup_hdl%daddr, tile_data_ni_, SHAPE(tile_data_ni_)) 
     460      ENDIF 
     461 
     462      IF (PRESENT(tile_data_nj_)) THEN 
     463        CALL cxios_set_domaingroup_tile_data_nj & 
     464      (domaingroup_hdl%daddr, tile_data_nj_, SHAPE(tile_data_nj_)) 
     465      ENDIF 
     466 
     467      IF (PRESENT(tile_ibegin_)) THEN 
     468        CALL cxios_set_domaingroup_tile_ibegin & 
     469      (domaingroup_hdl%daddr, tile_ibegin_, SHAPE(tile_ibegin_)) 
     470      ENDIF 
     471 
     472      IF (PRESENT(tile_jbegin_)) THEN 
     473        CALL cxios_set_domaingroup_tile_jbegin & 
     474      (domaingroup_hdl%daddr, tile_jbegin_, SHAPE(tile_jbegin_)) 
     475      ENDIF 
     476 
     477      IF (PRESENT(tile_ni_)) THEN 
     478        CALL cxios_set_domaingroup_tile_ni & 
     479      (domaingroup_hdl%daddr, tile_ni_, SHAPE(tile_ni_)) 
     480      ENDIF 
     481 
     482      IF (PRESENT(tile_nj_)) THEN 
     483        CALL cxios_set_domaingroup_tile_nj & 
     484      (domaingroup_hdl%daddr, tile_nj_, SHAPE(tile_nj_)) 
    404485      ENDIF 
    405486 
     
    416497    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    417498    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    418     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     499    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     500    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     501     ) 
    419502 
    420503    IMPLICIT NONE 
     
    460543      INTEGER  , OPTIONAL, INTENT(OUT) :: nj 
    461544      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo 
     545      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles 
    462546      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex 
    463547      INTEGER  , OPTIONAL, INTENT(OUT) :: prec 
    464548      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius 
    465549      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     550      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin(:) 
     551      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin(:) 
     552      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni(:) 
     553      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj(:) 
     554      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin(:) 
     555      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin(:) 
     556      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni(:) 
     557      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj(:) 
    466558      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    467559 
     
    473565      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    474566      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    475       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     567      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     568      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     569       ) 
    476570 
    477571  END SUBROUTINE xios(get_domaingroup_attr) 
     
    482576    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    483577    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    484     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     578    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     579    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     580     ) 
    485581 
    486582    IMPLICIT NONE 
     
    525621      INTEGER  , OPTIONAL, INTENT(OUT) :: nj 
    526622      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo 
     623      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles 
    527624      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex 
    528625      INTEGER  , OPTIONAL, INTENT(OUT) :: prec 
    529626      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius 
    530627      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     628      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin(:) 
     629      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin(:) 
     630      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni(:) 
     631      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj(:) 
     632      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin(:) 
     633      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin(:) 
     634      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni(:) 
     635      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj(:) 
    531636      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    532637 
     
    536641      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    537642      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    538       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     643      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     644      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     645       ) 
    539646 
    540647  END SUBROUTINE xios(get_domaingroup_attr_hdl) 
     
    545652    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  & 
    546653    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  & 
    547     , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_  & 
    548     , type_ ) 
     654    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     655    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     656    , tile_ni_, tile_nj_, type_ ) 
    549657 
    550658    IMPLICIT NONE 
     
    589697      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_ 
    590698      INTEGER  , OPTIONAL, INTENT(OUT) :: nj_glo_ 
     699      INTEGER  , OPTIONAL, INTENT(OUT) :: ntiles_ 
    591700      INTEGER  , OPTIONAL, INTENT(OUT) :: nvertex_ 
    592701      INTEGER  , OPTIONAL, INTENT(OUT) :: prec_ 
    593702      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: radius_ 
    594703      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 
     704      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ibegin_(:) 
     705      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_jbegin_(:) 
     706      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_ni_(:) 
     707      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_data_nj_(:) 
     708      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ibegin_(:) 
     709      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_jbegin_(:) 
     710      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_ni_(:) 
     711      INTEGER  , OPTIONAL, INTENT(OUT) :: tile_nj_(:) 
    595712      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
    596713 
     
    784901      ENDIF 
    785902 
     903      IF (PRESENT(ntiles_)) THEN 
     904        CALL cxios_get_domaingroup_ntiles & 
     905      (domaingroup_hdl%daddr, ntiles_) 
     906      ENDIF 
     907 
    786908      IF (PRESENT(nvertex_)) THEN 
    787909        CALL cxios_get_domaingroup_nvertex & 
     
    802924        CALL cxios_get_domaingroup_standard_name & 
    803925      (domaingroup_hdl%daddr, standard_name_, len(standard_name_)) 
     926      ENDIF 
     927 
     928      IF (PRESENT(tile_data_ibegin_)) THEN 
     929        CALL cxios_get_domaingroup_tile_data_ibegin & 
     930      (domaingroup_hdl%daddr, tile_data_ibegin_, SHAPE(tile_data_ibegin_)) 
     931      ENDIF 
     932 
     933      IF (PRESENT(tile_data_jbegin_)) THEN 
     934        CALL cxios_get_domaingroup_tile_data_jbegin & 
     935      (domaingroup_hdl%daddr, tile_data_jbegin_, SHAPE(tile_data_jbegin_)) 
     936      ENDIF 
     937 
     938      IF (PRESENT(tile_data_ni_)) THEN 
     939        CALL cxios_get_domaingroup_tile_data_ni & 
     940      (domaingroup_hdl%daddr, tile_data_ni_, SHAPE(tile_data_ni_)) 
     941      ENDIF 
     942 
     943      IF (PRESENT(tile_data_nj_)) THEN 
     944        CALL cxios_get_domaingroup_tile_data_nj & 
     945      (domaingroup_hdl%daddr, tile_data_nj_, SHAPE(tile_data_nj_)) 
     946      ENDIF 
     947 
     948      IF (PRESENT(tile_ibegin_)) THEN 
     949        CALL cxios_get_domaingroup_tile_ibegin & 
     950      (domaingroup_hdl%daddr, tile_ibegin_, SHAPE(tile_ibegin_)) 
     951      ENDIF 
     952 
     953      IF (PRESENT(tile_jbegin_)) THEN 
     954        CALL cxios_get_domaingroup_tile_jbegin & 
     955      (domaingroup_hdl%daddr, tile_jbegin_, SHAPE(tile_jbegin_)) 
     956      ENDIF 
     957 
     958      IF (PRESENT(tile_ni_)) THEN 
     959        CALL cxios_get_domaingroup_tile_ni & 
     960      (domaingroup_hdl%daddr, tile_ni_, SHAPE(tile_ni_)) 
     961      ENDIF 
     962 
     963      IF (PRESENT(tile_nj_)) THEN 
     964        CALL cxios_get_domaingroup_tile_nj & 
     965      (domaingroup_hdl%daddr, tile_nj_, SHAPE(tile_nj_)) 
    804966      ENDIF 
    805967 
     
    816978    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    817979    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    818     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     980    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     981    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     982     ) 
    819983 
    820984    IMPLICIT NONE 
     
    8951059      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 
    8961060      LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 
     1061      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles 
     1062      LOGICAL(KIND=C_BOOL) :: ntiles_tmp 
    8971063      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 
    8981064      LOGICAL(KIND=C_BOOL) :: nvertex_tmp 
     
    9031069      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    9041070      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     1071      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin 
     1072      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin_tmp 
     1073      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin 
     1074      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin_tmp 
     1075      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni 
     1076      LOGICAL(KIND=C_BOOL) :: tile_data_ni_tmp 
     1077      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj 
     1078      LOGICAL(KIND=C_BOOL) :: tile_data_nj_tmp 
     1079      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin 
     1080      LOGICAL(KIND=C_BOOL) :: tile_ibegin_tmp 
     1081      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin 
     1082      LOGICAL(KIND=C_BOOL) :: tile_jbegin_tmp 
     1083      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni 
     1084      LOGICAL(KIND=C_BOOL) :: tile_ni_tmp 
     1085      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj 
     1086      LOGICAL(KIND=C_BOOL) :: tile_nj_tmp 
    9051087      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    9061088      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    9131095      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    9141096      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    915       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1097      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     1098      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     1099       ) 
    9161100 
    9171101  END SUBROUTINE xios(is_defined_domaingroup_attr) 
     
    9221106    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    9231107    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    924     , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1108    , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     1109    , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     1110     ) 
    9251111 
    9261112    IMPLICIT NONE 
     
    10001186      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 
    10011187      LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 
     1188      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles 
     1189      LOGICAL(KIND=C_BOOL) :: ntiles_tmp 
    10021190      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 
    10031191      LOGICAL(KIND=C_BOOL) :: nvertex_tmp 
     
    10081196      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    10091197      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     1198      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin 
     1199      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin_tmp 
     1200      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin 
     1201      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin_tmp 
     1202      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni 
     1203      LOGICAL(KIND=C_BOOL) :: tile_data_ni_tmp 
     1204      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj 
     1205      LOGICAL(KIND=C_BOOL) :: tile_data_nj_tmp 
     1206      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin 
     1207      LOGICAL(KIND=C_BOOL) :: tile_ibegin_tmp 
     1208      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin 
     1209      LOGICAL(KIND=C_BOOL) :: tile_jbegin_tmp 
     1210      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni 
     1211      LOGICAL(KIND=C_BOOL) :: tile_ni_tmp 
     1212      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj 
     1213      LOGICAL(KIND=C_BOOL) :: tile_nj_tmp 
    10101214      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    10111215      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    10161220      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  & 
    10171221      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  & 
    1018       , name, ni, ni_glo, nj, nj_glo, nvertex, prec, radius, standard_name, type ) 
     1222      , name, ni, ni_glo, nj, nj_glo, ntiles, nvertex, prec, radius, standard_name, tile_data_ibegin  & 
     1223      , tile_data_jbegin, tile_data_ni, tile_data_nj, tile_ibegin, tile_jbegin, tile_ni, tile_nj, type  & 
     1224       ) 
    10191225 
    10201226  END SUBROUTINE xios(is_defined_domaingroup_attr_hdl) 
     
    10251231    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  & 
    10261232    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  & 
    1027     , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, radius_, standard_name_  & 
    1028     , type_ ) 
     1233    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, ntiles_, nvertex_, prec_, radius_, standard_name_  & 
     1234    , tile_data_ibegin_, tile_data_jbegin_, tile_data_ni_, tile_data_nj_, tile_ibegin_, tile_jbegin_  & 
     1235    , tile_ni_, tile_nj_, type_ ) 
    10291236 
    10301237    IMPLICIT NONE 
     
    11041311      LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo_ 
    11051312      LOGICAL(KIND=C_BOOL) :: nj_glo__tmp 
     1313      LOGICAL, OPTIONAL, INTENT(OUT) :: ntiles_ 
     1314      LOGICAL(KIND=C_BOOL) :: ntiles__tmp 
    11061315      LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex_ 
    11071316      LOGICAL(KIND=C_BOOL) :: nvertex__tmp 
     
    11121321      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name_ 
    11131322      LOGICAL(KIND=C_BOOL) :: standard_name__tmp 
     1323      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ibegin_ 
     1324      LOGICAL(KIND=C_BOOL) :: tile_data_ibegin__tmp 
     1325      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_jbegin_ 
     1326      LOGICAL(KIND=C_BOOL) :: tile_data_jbegin__tmp 
     1327      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_ni_ 
     1328      LOGICAL(KIND=C_BOOL) :: tile_data_ni__tmp 
     1329      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_data_nj_ 
     1330      LOGICAL(KIND=C_BOOL) :: tile_data_nj__tmp 
     1331      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ibegin_ 
     1332      LOGICAL(KIND=C_BOOL) :: tile_ibegin__tmp 
     1333      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_jbegin_ 
     1334      LOGICAL(KIND=C_BOOL) :: tile_jbegin__tmp 
     1335      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_ni_ 
     1336      LOGICAL(KIND=C_BOOL) :: tile_ni__tmp 
     1337      LOGICAL, OPTIONAL, INTENT(OUT) :: tile_nj_ 
     1338      LOGICAL(KIND=C_BOOL) :: tile_nj__tmp 
    11141339      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
    11151340      LOGICAL(KIND=C_BOOL) :: type__tmp 
     
    13371562      ENDIF 
    13381563 
     1564      IF (PRESENT(ntiles_)) THEN 
     1565        ntiles__tmp = cxios_is_defined_domaingroup_ntiles & 
     1566      (domaingroup_hdl%daddr) 
     1567        ntiles_ = ntiles__tmp 
     1568      ENDIF 
     1569 
    13391570      IF (PRESENT(nvertex_)) THEN 
    13401571        nvertex__tmp = cxios_is_defined_domaingroup_nvertex & 
     
    13611592      ENDIF 
    13621593 
     1594      IF (PRESENT(tile_data_ibegin_)) THEN 
     1595        tile_data_ibegin__tmp = cxios_is_defined_domaingroup_tile_data_ibegin & 
     1596      (domaingroup_hdl%daddr) 
     1597        tile_data_ibegin_ = tile_data_ibegin__tmp 
     1598      ENDIF 
     1599 
     1600      IF (PRESENT(tile_data_jbegin_)) THEN 
     1601        tile_data_jbegin__tmp = cxios_is_defined_domaingroup_tile_data_jbegin & 
     1602      (domaingroup_hdl%daddr) 
     1603        tile_data_jbegin_ = tile_data_jbegin__tmp 
     1604      ENDIF 
     1605 
     1606      IF (PRESENT(tile_data_ni_)) THEN 
     1607        tile_data_ni__tmp = cxios_is_defined_domaingroup_tile_data_ni & 
     1608      (domaingroup_hdl%daddr) 
     1609        tile_data_ni_ = tile_data_ni__tmp 
     1610      ENDIF 
     1611 
     1612      IF (PRESENT(tile_data_nj_)) THEN 
     1613        tile_data_nj__tmp = cxios_is_defined_domaingroup_tile_data_nj & 
     1614      (domaingroup_hdl%daddr) 
     1615        tile_data_nj_ = tile_data_nj__tmp 
     1616      ENDIF 
     1617 
     1618      IF (PRESENT(tile_ibegin_)) THEN 
     1619        tile_ibegin__tmp = cxios_is_defined_domaingroup_tile_ibegin & 
     1620      (domaingroup_hdl%daddr) 
     1621        tile_ibegin_ = tile_ibegin__tmp 
     1622      ENDIF 
     1623 
     1624      IF (PRESENT(tile_jbegin_)) THEN 
     1625        tile_jbegin__tmp = cxios_is_defined_domaingroup_tile_jbegin & 
     1626      (domaingroup_hdl%daddr) 
     1627        tile_jbegin_ = tile_jbegin__tmp 
     1628      ENDIF 
     1629 
     1630      IF (PRESENT(tile_ni_)) THEN 
     1631        tile_ni__tmp = cxios_is_defined_domaingroup_tile_ni & 
     1632      (domaingroup_hdl%daddr) 
     1633        tile_ni_ = tile_ni__tmp 
     1634      ENDIF 
     1635 
     1636      IF (PRESENT(tile_nj_)) THEN 
     1637        tile_nj__tmp = cxios_is_defined_domaingroup_tile_nj & 
     1638      (domaingroup_hdl%daddr) 
     1639        tile_nj_ = tile_nj__tmp 
     1640      ENDIF 
     1641 
    13631642      IF (PRESENT(type_)) THEN 
    13641643        type__tmp = cxios_is_defined_domaingroup_type & 
  • XIOS/trunk/src/node/domain.cpp

    r1972 r2131  
    3535      , clients(), hasLatInReadFile_(false), hasBoundsLatInReadFile_(false) 
    3636      , hasLonInReadFile_(false), hasBoundsLonInReadFile_(false) 
     37      , isTiled_(false), isTiledOnly_(false) 
    3738   { 
    3839   } 
     
    4849      , clients(), hasLatInReadFile_(false), hasBoundsLatInReadFile_(false) 
    4950      , hasLonInReadFile_(false), hasBoundsLonInReadFile_(false) 
     51      , isTiled_(false), isTiledOnly_(false) 
    5052   { 
    5153    } 
     
    246248   { 
    247249      return isCompressible_; 
     250   } 
     251   CATCH 
     252 
     253   bool CDomain::isTiled(void) const 
     254   TRY 
     255   { 
     256      return isTiled_; 
     257   } 
     258   CATCH 
     259 
     260   bool CDomain::isTiledOnly(void) const 
     261   TRY 
     262   { 
     263      return isTiledOnly_; 
     264   } 
     265   CATCH 
     266 
     267   int CDomain::getTileId(int i, int j) const 
     268   TRY 
     269   { 
     270     int tileId = 0; 
     271     bool stop = false; 
     272     while (!stop) 
     273     { 
     274       if ((i >= tile_ibegin(tileId) ) && (i < tile_ni(tileId)+tile_ibegin(tileId) ) 
     275           && (j >= tile_jbegin(tileId) ) && (j < tile_nj(tileId)+tile_jbegin(tileId) ) ) 
     276         stop = true; 
     277       ++tileId; 
     278     } 
     279     return (tileId - 1); 
    248280   } 
    249281   CATCH 
     
    12601292        } 
    12611293      } 
     1294   } 
     1295   CATCH_DUMP_ATTR 
     1296 
     1297   //---------------------------------------------------------------- 
     1298 
     1299   /*! 
     1300    * For tiled domains, data_i/j_index should not take into 
     1301    * account parameters defining data (data_ni/nj, data_i/jbegin...) 
     1302    * \param [out] dataIndexI 
     1303    * \param [out] dataIndexJ 
     1304    * \param [out] infoIndexI 
     1305    * \param [out] infoIndexJ 
     1306    */ 
     1307 
     1308   void CDomain::computeCompressionTiled(CArray<int,1>& dataIndexI, CArray<int,1>& dataIndexJ, 
     1309                                         CArray<int,1>& infoIndexI, CArray<int,1>& infoIndexJ) 
     1310   TRY 
     1311   { 
     1312     const int dsize = ni * nj; 
     1313     dataIndexI.resize(dsize); 
     1314     dataIndexJ.resize(dsize); 
     1315 
     1316     dataIndexJ = 0; 
     1317     for (int k = 0; k < ni * nj; ++k) 
     1318       dataIndexI(k) = k; 
     1319 
     1320     infoIndexI.resize(ni*nj); 
     1321     for (int j = 0; j < nj; ++j) 
     1322       for (int i = 0; i < ni; ++i) infoIndexI(i+j*ni) = i+ibegin; 
     1323 
     1324     infoIndexJ.resize(ni*nj); 
     1325     for (int j = 0; j < nj; ++j) 
     1326       for (int i = 0; i < ni; ++i) infoIndexJ(i+j*ni) = j+jbegin; 
    12621327   } 
    12631328   CATCH_DUMP_ATTR 
     
    17231788   CATCH_DUMP_ATTR 
    17241789 
     1790   //---------------------------------------------------------------- 
     1791   void CDomain::checkTiles() 
     1792   TRY 
     1793   { 
     1794     if (!ntiles.isEmpty() && ntiles.getValue() >=1) isTiled_ = true; 
     1795     if (!tile_only.isEmpty() && tile_only.getValue() == true) { 
     1796       isTiled_ = true; 
     1797       isTiledOnly_ = true; 
     1798     } 
     1799 
     1800     if (isTiled_) 
     1801     { 
     1802 
     1803       // Attributes tile_ni/nj and tile_i/jbegin are mandatory for tiled domains 
     1804       if (tile_ni.numElements() != ntiles || tile_ibegin.numElements() != ntiles) 
     1805           ERROR("CDomain::checkTiles()", 
     1806                 << "[ id = " << this->getId() << " , context = '" << CObjectFactory::GetCurrentContextId() << " ] " 
     1807                 << "'tile_ni' or 'tile_ibegin' are ill defined: these attributes must be specified for tiled domains and be of the size 'ntiles'." << std::endl 
     1808                 << "The number of tiles is  " << ntiles.getValue() << " while the size of 'tile_ni' is " << tile_ni.numElements()  
     1809                 << " and the size of 'tile_ibegin' is " << tile_ibegin.numElements() << "."); 
     1810 
     1811       if (tile_nj.numElements() != ntiles || tile_jbegin.numElements() != ntiles) 
     1812           ERROR("CDomain::checkTiles()", 
     1813                 << "[ id = " << this->getId() << " , context = '" << CObjectFactory::GetCurrentContextId() << " ] " 
     1814                 << "'tile_nj' or 'tile_jbegin' are ill defined: these attributes must be specified for tiled domains and be of the size 'ntiles'." << std::endl 
     1815                 << "The number of tiles is  " << ntiles.getValue() << " while the size of 'tile_nj' is " << tile_nj.numElements() 
     1816                 << " and the size of 'tile_jbegin' is " << tile_jbegin.numElements() << "."); 
     1817 
     1818       // Check on consistency of individual tile sizes and local domain size 
     1819       int sizeTiles = 0; 
     1820       for (int iTile = 0; iTile < ntiles.getValue(); ++iTile) 
     1821       { 
     1822         sizeTiles += tile_ni(iTile) * tile_nj(iTile); 
     1823       } 
     1824       if (sizeTiles != (ni*nj)) 
     1825           ERROR("CDomain::checkTiles()", 
     1826                 << "[ id = " << this->getId() << " , context = '" << CObjectFactory::GetCurrentContextId() << " ] " 
     1827                 << "tiles should cover the entire local domain and cannot overlap." << std::endl << "."); 
     1828 
     1829 
     1830       // Fill in tile_data_ni/nj and tile_data_i/jbegin if they are not specified 
     1831       if (tile_data_ni.numElements() == 0 || tile_data_nj.numElements() == 0) 
     1832       { 
     1833         tile_data_ni.resize(ntiles); 
     1834         tile_data_nj.resize(ntiles); 
     1835         for (int iTile = 0; iTile < ntiles.getValue(); ++iTile) 
     1836         { 
     1837           tile_data_ni(iTile) = tile_ni(iTile); 
     1838           tile_data_nj(iTile) = tile_nj(iTile); 
     1839         } 
     1840       } 
     1841 
     1842       if (tile_data_ibegin.numElements() == 0 || tile_data_jbegin.numElements() == 0) 
     1843       { 
     1844         tile_data_ibegin.resize(ntiles); 
     1845         tile_data_jbegin.resize(ntiles); 
     1846         tile_data_ibegin = 0; 
     1847         tile_data_jbegin = 0; 
     1848       } 
     1849 
     1850     } // isTiled_ 
     1851   } 
     1852   CATCH_DUMP_ATTR 
     1853 
     1854   //---------------------------------------------------------------- 
     1855   int CDomain::getTileDataISize(int tileId) const 
     1856   TRY 
     1857   { 
     1858     int retvalue = (tile_data_ni(tileId) > tile_ni(tileId)) ? tile_data_ni(tileId) : tile_ni(tileId); 
     1859     return retvalue; 
     1860   } 
     1861   CATCH_DUMP_ATTR 
     1862 
     1863   //---------------------------------------------------------------- 
     1864   int CDomain::getTileDataJSize(int tileId) const 
     1865   TRY 
     1866   { 
     1867     int retvalue = (tile_data_nj(tileId) > tile_nj(tileId)) ? tile_data_nj(tileId) : tile_nj(tileId); 
     1868     return retvalue; 
     1869   } 
     1870   CATCH_DUMP_ATTR 
     1871 
    17251872   void CDomain::checkAttributesOnClientAfterTransformation() 
    17261873   TRY 
     
    17561903        this->checkArea(); 
    17571904        this->checkLonLat(); 
     1905        this->checkTiles(); 
    17581906      } 
    17591907 
  • XIOS/trunk/src/node/domain.hpp

    r1972 r2131  
    104104         bool isDistributed(void) const; 
    105105         bool isCompressible(void) const;  
    106   
     106 
     107         bool isTiled(void) const; 
     108         bool isTiledOnly(void) const; 
     109         int getTileId(int i, int j) const; 
     110         int getTileDataISize(int tileId) const; 
     111         int getTileDataJSize(int tileId) const; 
     112         void computeCompressionTiled(CArray<int,1>& dataIndexI, CArray<int,1>& dataIndexJ, 
     113                                      CArray<int,1>& infoIndexI, CArray<int,1>& infoIndexJ); 
     114 
    107115         std::vector<int> getNbGlob(); 
    108116         bool isEqual(CDomain* domain); 
     
    170178         void checkArea(void); 
    171179         void checkLonLat(); 
     180         void checkTiles(); 
    172181 
    173182         void setTransformations(const TransMapTypes&);          
     
    223232         std::map<int, std::vector<int> > connectedServerRank_; 
    224233 
    225          //! True if and only if the data defined on the domain can be outputted in a compressed way 
     234//! True if and only if the data defined on the domain can be outputted in a compressed way 
    226235         bool isCompressible_; 
    227236         bool isRedistributed_; 
     
    229238         bool isUnstructed_; 
    230239         std::unordered_map<size_t,size_t> globalLocalIndexMap_; 
    231         
     240 
     241//! True if tiled data is defined on the domain 
     242         bool isTiled_; 
     243//! True if ONLY tiled data is defined on the domain 
     244         bool isTiledOnly_; 
     245 
    232246       private: 
    233247         static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m); 
  • XIOS/trunk/src/node/field.cpp

    r2024 r2131  
    20592059     { 
    20602060       //if(file->output_freq.getValue() < freq_op.getValue()) 
    2061        if((isFieldRead || isFieldWrite) && (freq_op.getValue() > file->output_freq.getValue()) ) 
     2061       if((isFieldRead || isFieldWrite) && (file!=nullptr) && (freq_op.getValue() > file->output_freq.getValue() )) 
    20622062       { 
    20632063         ERROR("void CField::checkTimeAttributes(void)", 
  • XIOS/trunk/src/node/field.hpp

    r1704 r2131  
    160160         static ENodeType GetType(void); 
    161161 
    162         template <int N> void setData(const CArray<double, N>& _data); 
     162        template <int N> void setData(const CArray<double, N>& _data, int ntile = -1); 
    163163        static bool dispatchEvent(CEventServer& event); 
    164164        void sendAllAttributesToServer(CContextClient* client) ;  
  • XIOS/trunk/src/node/field_decl.cpp

    r932 r2131  
    33namespace xios 
    44{ 
    5   template void CField::setData<1>(const CArray<double, 1>& _data); 
    6   template void CField::setData<2>(const CArray<double, 2>& _data); 
    7   template void CField::setData<3>(const CArray<double, 3>& _data); 
    8   template void CField::setData<4>(const CArray<double, 4>& _data); 
    9   template void CField::setData<5>(const CArray<double, 5>& _data); 
    10   template void CField::setData<6>(const CArray<double, 6>& _data); 
    11   template void CField::setData<7>(const CArray<double, 7>& _data); 
     5  template void CField::setData<1>(const CArray<double, 1>& _data, int ntile); 
     6  template void CField::setData<2>(const CArray<double, 2>& _data, int ntile); 
     7  template void CField::setData<3>(const CArray<double, 3>& _data, int ntile); 
     8  template void CField::setData<4>(const CArray<double, 4>& _data, int ntile); 
     9  template void CField::setData<5>(const CArray<double, 5>& _data, int ntile); 
     10  template void CField::setData<6>(const CArray<double, 6>& _data, int ntile); 
     11  template void CField::setData<7>(const CArray<double, 7>& _data, int ntile); 
    1212 
    1313  template void CField::getData<1>(CArray<double, 1>& _data) const; 
  • XIOS/trunk/src/node/field_impl.hpp

    r1622 r2131  
    1616 
    1717  template <int N> 
    18   void CField::setData(const CArray<double, N>& _data) 
     18  void CField::setData(const CArray<double, N>& _data, int tileid) 
    1919  TRY 
    2020  { 
     
    2222    { 
    2323      if (check_if_active.isEmpty() || (!check_if_active.isEmpty() && (!check_if_active) || isActive(true))) 
    24         clientSourceFilter->streamData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data); 
     24        if (tileid > -1) 
     25          clientSourceFilter->streamTile(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data, tileid); // tiled domain 
     26        else 
     27          clientSourceFilter->streamData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data); 
    2528    } 
    2629    else if (instantDataFilter) 
  • XIOS/trunk/src/node/grid.cpp

    r1927 r2131  
    3939      , computedWrittenIndex_(false) 
    4040      , clients() 
     41      , nTiles_(0) 
     42      , isTiled_(false), isTiledOnly_(false) 
     43      , storeTileIndex() 
    4144   { 
    4245     setVirtualDomainGroup(CDomainGroup::create(getId() + "_virtual_domain_group")); 
     
    6063      , computedWrittenIndex_(false) 
    6164      , clients() 
     65      , nTiles_(0) 
     66      , isTiled_(false), isTiledOnly_(false) 
     67      , storeTileIndex() 
    6268   { 
    6369     setVirtualDomainGroup(CDomainGroup::create(getId() + "_virtual_domain_group")); 
     
    102108   } 
    103109   CATCH 
     110 
     111   //--------------------------------------------------------------- 
     112   /*! 
     113    * Returns size of tile data 
     114    */ 
     115 
     116   StdSize CGrid::getTileDataSize(int tileId) 
     117   TRY 
     118   { 
     119     StdSize tileGridSize =1 ; 
     120     int numElement = axis_domain_order.numElements(); 
     121 
     122     std::vector<CAxis*> axisListP = this->getAxis(); 
     123     std::vector<CDomain*> domainListP = this->getDomains(); 
     124 
     125     int axisIndex = 0, domIndex = 0; 
     126     for (int idx = 0; idx < numElement; ++idx) 
     127     { 
     128       int eleDim = axis_domain_order(idx); 
     129       if (2 == eleDim) 
     130       { 
     131         tileGridSize *= domainListP[domIndex]->tile_data_ni(tileId); 
     132         tileGridSize *= domainListP[domIndex]->tile_data_nj(tileId); 
     133         ++domIndex; 
     134          } 
     135       else if (1 == eleDim) 
     136       { 
     137         tileGridSize *= axisListP[axisIndex]->n.getValue(); 
     138         ++axisIndex; 
     139       } 
     140     } // loop over grid elements 
     141     return tileGridSize; 
     142   } 
     143   CATCH 
     144 
     145   //--------------------------------------------------------------- 
     146   /*! 
     147    * Returns tile size 
     148    */ 
     149 
     150   StdSize CGrid::getTileSize(int tileId) 
     151   TRY 
     152   { 
     153     StdSize tileGridSize =1 ; 
     154     int numElement = axis_domain_order.numElements(); 
     155 
     156     std::vector<CAxis*> axisListP = this->getAxis(); 
     157     std::vector<CDomain*> domainListP = this->getDomains(); 
     158 
     159     int axisIndex = 0, domIndex = 0; 
     160     for (int idx = 0; idx < numElement; ++idx) 
     161     { 
     162       int eleDim = axis_domain_order(idx); 
     163       if (2 == eleDim) 
     164       { 
     165         tileGridSize *= domainListP[domIndex]->tile_ni(tileId); 
     166         tileGridSize *= domainListP[domIndex]->tile_nj(tileId); 
     167         ++domIndex; 
     168          } 
     169       else if (1 == eleDim)// So it's an axis 
     170       { 
     171         tileGridSize *= axisListP[axisIndex]->n.getValue(); 
     172         ++axisIndex; 
     173       } 
     174     } // loop over grid elements 
     175     return tileGridSize; 
     176   } 
     177   CATCH 
     178 
     179   //--------------------------------------------------------------- 
    104180 
    105181   /*! 
     
    561637          if (sendAtt) domListP[i]->sendCheckedAttributes(); 
    562638          else domListP[i]->checkAttributesOnClient(); 
     639          if (domListP[i]->isTiled()) this->isTiled_ = true; 
     640          if (domListP[i]->isTiledOnly()) this->isTiledOnly_ = true; 
    563641        } 
    564642      } 
     
    725803          outLocalIndexStoreOnClient.insert(make_pair(rank, CArray<size_t,1>(globalIndex.numElements()))); 
    726804          CArray<size_t,1>& localIndex = outLocalIndexStoreOnClient[rank]; 
     805          size_t nbIndex = 0; 
     806 
     807          // Keep this code for this moment but it should be removed (or moved to DEBUG) to improve performance 
     808          for (size_t idx = 0; idx < globalIndex.numElements(); ++idx) 
     809          { 
     810            if (itGloe != globalDataIndex.find(globalIndex(idx))) 
     811            { 
     812              ++nbIndex; 
     813            } 
     814          } 
     815 
     816          if (doGridHaveDataDistributed(client) && (nbIndex != localIndex.numElements())) 
     817               ERROR("void CGrid::computeClientIndex()", 
     818                  << "Number of local index on client is different from number of received global index" 
     819                  << "Rank of sent client " << rank <<"." 
     820                  << "Number of local index " << nbIndex << ". " 
     821                  << "Number of received global index " << localIndex.numElements() << "."); 
     822 
     823          nbIndex = 0; 
     824          for (size_t idx = 0; idx < globalIndex.numElements(); ++idx) 
     825          { 
     826            if (itGloe != globalDataIndex.find(globalIndex(idx))) 
     827            { 
     828              localIndex(idx) = globalDataIndex[globalIndex(idx)]; 
     829            } 
     830          } 
     831        } 
     832      } 
     833   } 
     834   CATCH_DUMP_ATTR 
     835 
     836   //--------------------------------------------------------------- 
     837 
     838   /* 
     839     Compute the global index and its local index taking account mask and data index. 
     840     These global indexes will be used to compute the connection of this client (sender) to its servers (receivers) 
     841     (via function computeConnectedClient) 
     842     These global indexes also correspond to data sent to servers (if any) 
     843   */ 
     844   void CGrid::computeClientIndexTiled() 
     845   TRY 
     846   { 
     847     CContext* context = CContext::getCurrent(); 
     848 
     849     CContextClient* client = context->client; 
     850     int rank = client->clientRank; 
     851 
     852     clientDistributionTiled_ = new CDistributionClient(rank, this, true); 
     853     // Get local data index on client 
     854     int nbStoreIndex = clientDistributionTiled_->getLocalDataIndexOnClient().size(); 
     855     int nbStoreGridMask = clientDistributionTiled_->getLocalMaskIndexOnClient().size(); 
     856     // nbStoreGridMask = nbStoreIndex if grid mask is defined, and 0 otherwise 
     857     storeIndexTiled_client.resize(nbStoreIndex); 
     858     storeMaskTiled_client.resize(nbStoreGridMask); 
     859     for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndexTiled_client(idx) = (clientDistributionTiled_->getLocalDataIndexOnClient())[idx]; 
     860     for (int idx = 0; idx < nbStoreGridMask; ++idx) storeMaskTiled_client(idx) = (clientDistributionTiled_->getLocalMaskIndexOnClient())[idx]; 
     861 
     862     if (0 == serverDistribution_) isDataDistributed_= clientDistributionTiled_->isDataDistributed(); 
     863     else 
     864     { 
     865        // Mapping global index received from clients to the storeIndex_client 
     866        CDistributionClient::GlobalLocalDataMap& globalDataIndex = clientDistributionTiled_->getGlobalDataIndexOnClient(); 
     867        CDistributionClient::GlobalLocalDataMap::const_iterator itGloe = globalDataIndex.end(); 
     868        map<int, CArray<size_t, 1> >::iterator itb = outGlobalIndexFromClientTiled.begin(), 
     869                                               ite = outGlobalIndexFromClientTiled.end(), it; 
     870 
     871        for (it = itb; it != ite; ++it) 
     872        { 
     873          int rank = it->first; 
     874          CArray<size_t,1>& globalIndex = outGlobalIndexFromClientTiled[rank]; 
     875          outLocalIndexStoreOnClientTiled.insert(make_pair(rank, CArray<size_t,1>(globalIndex.numElements()))); 
     876          CArray<size_t,1>& localIndex = outLocalIndexStoreOnClientTiled[rank]; 
    727877          size_t nbIndex = 0; 
    728878 
     
    9011051     else 
    9021052     { 
    903        computeClientIndex(); 
     1053       if (this->isTiled_) 
     1054       { 
     1055         computeClientIndexTiled(); 
     1056         if (!this->isTiledOnly_) 
     1057           computeClientIndex(); 
     1058       } 
     1059       else 
     1060         computeClientIndex(); 
     1061 
     1062       if (this->isTiled_) computeTileIndex(); 
    9041063       if (context->hasClient) 
    9051064       { 
     
    10971256   } 
    10981257   CATCH_DUMP_ATTR 
     1258 
     1259   //--------------------------------------------------------------- 
     1260 
     1261   /* 
     1262   */ 
     1263   void CGrid::computeTileIndex() 
     1264   TRY 
     1265   { 
     1266     int numElement = axis_domain_order.numElements(); 
     1267     storeTileIndex.resize(nTiles_); 
     1268 
     1269     std::vector<CAxis*> axisListP = this->getAxis(); 
     1270     std::vector<CDomain*> domainListP = this->getDomains(); 
     1271 
     1272     // First, allocate storeTileIndex[0..ntiles] 
     1273     for (int iTile = 0; iTile < nTiles_; ++iTile) 
     1274     { 
     1275       int tileGridSize = 1; 
     1276       int axisIndex = 0, domIndex = 0; 
     1277       for (int idx = 0; idx < numElement; ++idx) 
     1278       { 
     1279         int eleDim = axis_domain_order(idx); 
     1280         if (2 == eleDim) 
     1281         { 
     1282           tileGridSize *= domainListP[domIndex]->getTileDataISize(iTile); 
     1283           tileGridSize *= domainListP[domIndex]->getTileDataJSize(iTile); 
     1284           ++domIndex; 
     1285         } 
     1286         else if (1 == eleDim)// So it's an axis 
     1287         { 
     1288           tileGridSize *= axisListP[axisIndex]->n.getValue(); 
     1289           ++axisIndex; 
     1290         } 
     1291       } // loop over grid elements 
     1292       storeTileIndex[iTile].resize(tileGridSize); 
     1293       storeTileIndex[iTile] = -1; 
     1294     } // loop over tiles 
     1295 
     1296     // Now fill in storeTileIndex 
     1297     // Currently assuming two possible situations : (1) domain x axis or (2) domain 
     1298     std::vector<int> tileIndexCount (nTiles_,0); 
     1299     int axisSize = 1; 
     1300     if (axisListP.size() != 0) axisSize = axisListP[0]->n.getValue(); 
     1301     int ni = domainListP[0]->ni.getValue(); 
     1302     int nj = domainListP[0]->nj.getValue(); 
     1303 
     1304     for (int idxAxis = 0; idxAxis < axisSize; ++idxAxis) 
     1305     { 
     1306       for (int jIdxDom = 0; jIdxDom < nj; ++jIdxDom) 
     1307       { 
     1308         for (int iIdxDom = 0; iIdxDom < ni; ++iIdxDom) 
     1309         { 
     1310           int tile = domainListP[0]->getTileId(iIdxDom, jIdxDom); 
     1311           int tileOffset =  domainListP[0]->tile_data_ibegin(tile);  // only sign of offset matters 
     1312 
     1313           // case 1: data size corresponds to tile size 
     1314           if (tileOffset == 0) 
     1315           { 
     1316             storeTileIndex[tile](tileIndexCount[tile]) = idxAxis*nj*ni + jIdxDom * ni + iIdxDom; 
     1317             ++tileIndexCount[tile]; 
     1318           } 
     1319           // case 2: masked data 
     1320           else if (tileOffset > 0) 
     1321           { 
     1322             int iBegin = domainListP[0]->tile_ibegin(tile) + domainListP[0]->tile_data_ibegin(tile); // tile data relative to domain 
     1323             int jBegin = domainListP[0]->tile_jbegin(tile) + domainListP[0]->tile_data_jbegin(tile); // tile data relative to domain 
     1324             int iEnd = iBegin + domainListP[0]->tile_data_ni(tile); 
     1325             int jEnd = jBegin + domainListP[0]->tile_data_nj(tile); 
     1326             if ((jIdxDom >= jBegin) && (jIdxDom < jEnd) && (iIdxDom >= iBegin) && (iIdxDom < iEnd)) 
     1327             { 
     1328               storeTileIndex[tile](tileIndexCount[tile]) = idxAxis*nj*ni + jIdxDom * ni + iIdxDom; 
     1329             } 
     1330             ++tileIndexCount[tile]; 
     1331           } 
     1332           // case 3: ghost zones 
     1333           else 
     1334           { 
     1335             int tileDataNi = domainListP[0]->tile_data_ni(tile); 
     1336             int tileDataNj = domainListP[0]->tile_data_nj(tile); 
     1337             int tileDomSize = tileDataNi * tileDataNj; 
     1338             int tileNi = domainListP[0]->tile_ni(tile); 
     1339             int iBegin = domainListP[0]->tile_data_ibegin(tile); 
     1340             int jBegin = domainListP[0]->tile_data_jbegin(tile); 
     1341 
     1342             // add the ghost zone at the beginning of a domain tile 
     1343             if (tileIndexCount[tile] % tileDomSize == 0) 
     1344               tileIndexCount[tile] += (abs(jBegin)*tileDataNi + abs(iBegin)); 
     1345 
     1346             storeTileIndex[tile](tileIndexCount[tile]) = idxAxis*nj*ni + jIdxDom*ni + iIdxDom; 
     1347              
     1348             // add two ghost zones at the right end of a tile 
     1349             if ( (iIdxDom+1) % tileNi == 0 ) 
     1350               tileIndexCount[tile] += (2*abs(iBegin)); 
     1351 
     1352             // add ghost zone at the end of a domain tile 
     1353             if ((tileIndexCount[tile] + abs(jBegin)*tileDataNi-abs(iBegin) + 1) % tileDomSize == 0) 
     1354               tileIndexCount[tile] += (abs(jBegin)*tileDataNi -abs(iBegin)); 
     1355 
     1356             ++tileIndexCount[tile]; 
     1357           } 
     1358         } // loop over domain first dimension 
     1359       } // loop over domain second dimension 
     1360     } // loop over axis dimension 
     1361 
     1362   } 
     1363   CATCH_DUMP_ATTR 
     1364 
    10991365//---------------------------------------------------------------- 
    11001366 
     
    13581624   CATCH 
    13591625 
    1360    void CGrid::maskField_arr(const double* const data, CArray<double, 1>& stored) const 
    1361    { 
    1362       const StdSize size = storeIndex_client.numElements(); 
     1626   void CGrid::maskField_arr(const double* const data, CArray<double, 1>& stored, bool isTiled) const 
     1627   TRY 
     1628   { 
     1629      const CArray<int, 1>& storeIndex_clientP = isTiled ? storeIndexTiled_client : storeIndex_client; 
     1630      const CArray<bool, 1>& storeMask_clientP = isTiled ? storeMaskTiled_client : storeMask_client; 
     1631      const StdSize size = storeIndex_clientP.numElements(); 
    13631632      stored.resize(size); 
    13641633      const double nanValue = std::numeric_limits<double>::quiet_NaN(); 
    13651634 
    1366       if (storeMask_client.numElements() != 0) 
    1367         for(StdSize i = 0; i < size; i++) stored(i) = (storeMask_client(i)) ? data[storeIndex_client(i)] : nanValue; 
     1635      if (storeMask_clientP.numElements() != 0) 
     1636        for(StdSize i = 0; i < size; i++) stored(i) = (storeMask_clientP(i)) ? data[storeIndex_clientP(i)] : nanValue; 
    13681637      else 
    1369         for(StdSize i = 0; i < size; i++) stored(i) = data[storeIndex_client(i)]; 
    1370    } 
     1638        for(StdSize i = 0; i < size; i++) stored(i) = data[storeIndex_clientP(i)]; 
     1639   } 
     1640   CATCH 
     1641 
     1642   void CGrid::copyTile_arr(const double* const tileData, CArray<double, 1>& stored, int tileId) 
     1643   TRY 
     1644   { 
     1645     StdSize tileSize = this->getTileSize(tileId); 
     1646     const StdSize tileDataSize = this->getTileDataSize(tileId); 
     1647 
     1648     // case 1: data correspond in size to a tile 
     1649     if (tileSize == tileDataSize) 
     1650     { 
     1651       for(StdSize i = 0; i < tileDataSize; i++) 
     1652         stored(storeTileIndex[tileId](i)) = tileData[i]; 
     1653     } 
     1654     // case 2: masked data 
     1655     else if (tileSize > tileDataSize) 
     1656     { 
     1657       int tileDataCount = 0; 
     1658       for(StdSize i = 0; i < tileSize; i++) 
     1659         if (storeTileIndex[tileId](i) >= 0) 
     1660         { 
     1661           stored(storeTileIndex[tileId](i)) = tileData[tileDataCount]; 
     1662           ++tileDataCount; 
     1663         } 
     1664     } 
     1665     // case 3: ghost zones 
     1666     else 
     1667     { 
     1668       for(StdSize i = 0; i < tileDataSize; i++) 
     1669         if (storeTileIndex[tileId](i) >= 0) 
     1670         { 
     1671           stored(storeTileIndex[tileId](i)) = tileData[i]; 
     1672         } 
     1673 
     1674     } 
     1675   } 
     1676   CATCH 
    13711677 
    13721678   void CGrid::uncompressField_arr(const double* const data, CArray<double, 1>& out) const 
     
    22532559        pDom->solveRefInheritance(apply); 
    22542560        pDom->solveInheritanceTransformation(); 
     2561        if (!pDom->ntiles.isEmpty() && pDom->ntiles.getValue()>0) nTiles_=pDom->ntiles.getValue(); 
    22552562      } 
    22562563    } 
     
    22812588  } 
    22822589  CATCH_DUMP_ATTR 
     2590 
     2591  int CGrid::getNTiles() 
     2592  TRY 
     2593  { 
     2594    return nTiles_; 
     2595  } 
     2596  CATCH_DUMP_ATTR 
     2597 
     2598  bool CGrid::isTiled(void) const 
     2599  TRY 
     2600  { 
     2601     return isTiled_; 
     2602  } 
     2603  CATCH 
     2604 
     2605  bool CGrid::isTiledOnly(void) const 
     2606  TRY 
     2607  { 
     2608     return isTiledOnly_; 
     2609  } 
     2610  CATCH 
    22832611 
    22842612  bool CGrid::isTransformed() 
  • XIOS/trunk/src/node/grid.hpp

    r1927 r2131  
    9191         StdSize  getDataSize(void) const; 
    9292 
     93         StdSize  getTileDataSize(int tileId); 
     94 
     95         StdSize  getTileSize(int tileId); 
     96 
    9397         /// Entrees-sorties de champs 
    9498         template <int n> 
    9599         void inputField(const CArray<double,n>& field, CArray<double,1>& stored) const; 
    96100         template <int n> 
    97          void maskField(const CArray<double,n>& field, CArray<double,1>& stored) const; 
     101         void maskField(const CArray<double,n>& field, CArray<double,1>& stored, bool isTiled = false) const; 
    98102         template <int n> 
    99103         void outputField(const CArray<double,1>& stored, CArray<double,n>& field) const;   
    100104         template <int n> 
    101105         void uncompressField(const CArray<double,n>& data, CArray<double,1>& outData) const;  
     106         template <int n> 
     107         void copyTile(const CArray<double,n>& tileData, CArray<double, 1>& stored, int tileId); 
    102108 
    103109         virtual void parse(xml::CXMLNode& node); 
     
    205211      public: 
    206212         CArray<int, 1> storeIndex_client; 
     213         CArray<int, 1> storeIndexTiled_client; 
    207214         CArray<bool, 1> storeMask_client; 
     215         CArray<bool, 1> storeMaskTiled_client; 
    208216 
    209217/** Map containing indexes that will be sent in sendIndex(). */ 
     
    223231/** Map storing received indexes. Key = sender rank, value = index array. */ 
    224232         map<int, CArray<size_t, 1> > outGlobalIndexFromClient; 
     233 
     234/** Map storing received indexes. Key = sender rank, value = index array for tiled domains */ 
     235         map<int, CArray<size_t, 1> > outGlobalIndexFromClientTiled; 
    225236 
    226237// Manh Ha's comment: " A client receives global index from other clients (via recvIndex) 
     
    232243 *  The map is created in CGrid::computeClientIndex and filled upon receiving data in CField::recvUpdateData() */ 
    233244         map<int, CArray<size_t, 1> > outLocalIndexStoreOnClient;  
     245 
     246/** Map storing received data. Key = sender rank, value = data array. 
     247 *  The map is created in CGrid::computeClientIndex and filled upon receiving data in CField::recvUpdateData() */ 
     248         map<int, CArray<size_t, 1> > outLocalIndexStoreOnClientTiled; 
     249 
    234250 
    235251/** Indexes calculated based on server-like distribution. 
     
    255271                                         const std::vector<CScalar*>& scalars, 
    256272                                         const CArray<int,1>& axisDomainOrder); 
     273 
     274         int getNTiles(); 
     275         bool isTiled(void) const; 
     276         bool isTiledOnly(void) const; 
    257277 
    258278      private: 
     
    272292        void restoreField_arr(const CArray<double, 1>& stored, double* const data) const; 
    273293        void uncompressField_arr(const double* const data, CArray<double, 1>& outData) const; 
    274         void maskField_arr(const double* const data, CArray<double, 1>& stored) const; 
     294        void maskField_arr(const double* const data, CArray<double, 1>& stored, bool isTiled = false) const; 
     295        void copyTile_arr(const double* const tileData, CArray<double, 1>& stored, int tileId); 
    275296 
    276297        void setVirtualDomainGroup(CDomainGroup* newVDomainGroup); 
     
    299320 
    300321        void computeClientIndex(); 
     322        void computeClientIndexTiled(); 
    301323        void computeConnectedClients(); 
    302324        void computeClientIndexScalarGrid();  
    303325        void computeConnectedClientsScalarGrid();  
    304326 
     327        void computeTileIndex(); 
     328 
    305329      private: 
    306330 
     
    312336        bool isDomainAxisChecked; 
    313337        bool isIndexSent; 
     338 
     339        int nTiles_; 
     340/** True if tiled data is defined on the grid */ 
     341        bool isTiled_; 
     342/** True if ONLY tiled data is defined on the grid */ 
     343        bool isTiledOnly_; 
     344 
     345/** Vector containing local domain indexes for each tile */ 
     346        std::vector<CArray<int,1> > storeTileIndex; 
    314347 
    315348        CDomainGroup* vDomainGroup_; 
     
    321354/** Client-like distribution calculated based on the knowledge of the entire grid */ 
    322355        CDistributionClient* clientDistribution_; 
     356 
     357/** Client-like distribution calculated based on the knowledge of the entire grid in case of a tiled domain */ 
     358        CDistributionClient* clientDistributionTiled_; 
     359 
    323360 
    324361/** Server-like distribution calculated upon receiving indexes */ 
     
    387424 
    388425   template <int n> 
    389    void CGrid::maskField(const CArray<double,n>& field, CArray<double,1>& stored) const 
     426   void CGrid::copyTile(const CArray<double,n>& tileData, CArray<double,1>& storedData, int tileId) 
     427   { 
     428      this->copyTile_arr(tileData.dataFirst(), storedData, tileId); 
     429   } 
     430 
     431   template <int n> 
     432   void CGrid::maskField(const CArray<double,n>& field, CArray<double,1>& stored, bool isTiled) const 
    390433   { 
    391434//#ifdef __XIOS_DEBUG 
    392435      if (this->getDataSize() != field.numElements()) 
    393          ERROR("void CGrid::inputField(const  CArray<double,n>& field, CArray<double,1>& stored) const", 
     436         ERROR("void CGrid::maskField(const  CArray<double,n>& field, CArray<double,1>& stored) const", 
    394437                << "[ Awaiting data of size = " << this->getDataSize() << ", " 
    395438                << "Received data size = "      << field.numElements() << " ] " 
     
    397440                << "Grid = " << this->getId()) 
    398441//#endif 
    399       this->maskField_arr(field.dataFirst(), stored); 
     442      this->maskField_arr(field.dataFirst(), stored, isTiled); 
    400443   } 
    401444 
Note: See TracChangeset for help on using the changeset viewer.