Ignore:
Timestamp:
01/23/19 10:31:44 (5 years ago)
Author:
yushan
Message:

dev on ADA. add flag switch _usingEP/_usingMPI

Location:
XIOS/dev/branch_openmp/src/io
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/src/io/inetcdf4.cpp

    r1545 r1642  
    22#include "netCdfInterface.hpp" 
    33#include "netCdf_cf_constant.hpp" 
    4 #include "ep_mpi.hpp" 
     4 
    55#include <boost/algorithm/string.hpp> 
    66 
     
    2323    // even if Parallel NetCDF ends up being used. 
    2424    if (mpi) 
    25       CNetCdfInterface::openPar(filename, NC_NOWRITE | NC_MPIIO, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(MPI_INFO_NULL), this->ncidp); 
     25      CNetCdfInterface::openPar(filename, NC_NOWRITE | NC_MPIIO, *comm, EP_INFO_NULL, this->ncidp); 
    2626    else 
    2727      CNetCdfInterface::open(filename, NC_NOWRITE, this->ncidp); 
  • XIOS/dev/branch_openmp/src/io/inetcdf4.hpp

    r1545 r1642  
    77#include "array_new.hpp" 
    88 
    9 #include "mpi_std.hpp" 
     9#include "mpi.hpp" 
    1010#include "netcdf.hpp" 
    1111 
  • XIOS/dev/branch_openmp/src/io/nc4_data_input.cpp

    r1545 r1642  
    2929 
    3030  StdSize CNc4DataInput::getFieldNbRecords_(CField* field) 
     31  TRY 
    3132  { 
    3233    StdString fieldId = field->getFieldOutputName(); 
     
    4041    return 1; 
    4142  } 
     43  CATCH 
    4244 
    4345  void CNc4DataInput::readFieldData_(CField* field) 
     46  TRY 
    4447  { 
    4548    CContext* context = CContext::getCurrent(); 
     
    5558    CArray<double,1> fieldData(grid->getWrittenDataSize()); 
    5659    if (!field->default_value.isEmpty()) fieldData = field->default_value; 
    57     #ifdef _usingEP 
    58       SuperClass::type = ONE_FILE; 
    59       printf("SuperClass::type = %d\n", SuperClass::type); 
    60     #endif 
    61          
     60 
    6261    switch (SuperClass::type) 
    6362    { 
     
    6766      case ONE_FILE: 
    6867      { 
    69 /* 
    70         std::vector<int> nZoomBeginGlobal = grid->getDistributionServer()->getZoomBeginGlobal(); 
    71         std::vector<int> nZoomBeginServer = grid->getDistributionServer()->getZoomBeginServer(); 
    72         std::vector<int> nZoomSizeServer  = grid->getDistributionServer()->getZoomSizeServer(); 
    73  
    74         int ssize = nZoomBeginGlobal.size(); 
    75  
    76         std::vector<StdSize> start(ssize); 
    77         std::vector<StdSize> count(ssize); 
    78  
    79         for (int i = 0; i < ssize; ++i) 
    80         { 
    81           start[i] = nZoomBeginServer[ssize - i - 1] - nZoomBeginGlobal[ssize - i - 1]; 
    82           count[i] = nZoomSizeServer[ssize - i - 1]; 
    83         } 
    84 */ 
    85  
    86         std::vector<int> nZoomBeginGlobal = grid->getDistributionServer()->getZoomBeginGlobal(); 
    87         std::vector<int> nZoomBeginServer = grid->getDistributionServer()->getZoomBeginServer(); 
    88         std::vector<int> nZoomSizeServer  = grid->getDistributionServer()->getZoomSizeServer(); 
    89  
    9068        std::vector<StdSize> start, count; 
    9169 
     
    9573        int numElement = axisDomainOrder.numElements(); 
    9674        int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 
    97         int idx = nZoomBeginGlobal.size() - 1; 
    98  
    99         start.reserve(nZoomBeginGlobal.size()); 
    100         count.reserve(nZoomBeginGlobal.size()); 
     75        int idx = domainList.size() * 2 + axisList.size() - 1; 
     76 
     77        start.reserve(idx+1); 
     78        count.reserve(idx+1); 
    10179 
    10280        for (int i = numElement - 1; i >= 0; --i) 
     
    10785            if ((domain->type) != CDomain::type_attr::unstructured) 
    10886            { 
    109               start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    110               count.push_back(nZoomSizeServer[idx]); 
     87              start.push_back(domain->jbegin); 
     88              count.push_back(domain->nj); 
    11189            } 
    112             --idx ; 
    113             start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    114             count.push_back(nZoomSizeServer[idx]); 
    115             --idx ; 
     90            start.push_back(domain->ibegin); 
     91            count.push_back(domain->ni); 
    11692            --idxDomain; 
    11793          } 
    11894          else if (1 == axisDomainOrder(i)) 
    11995          { 
    120             start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    121             count.push_back(nZoomSizeServer[idx]); 
    122             --idx; 
     96            CAxis* axis = CAxis::get(axisList[idxAxis]); 
     97            start.push_back(axis->begin); 
     98            count.push_back(axis->n); 
     99            --idxAxis ; 
    123100          } 
    124101          else 
     
    129106              count.push_back(1); 
    130107            } 
    131             --idx; 
    132108          } 
    133109        } 
     
    148124    } 
    149125  } 
     126  CATCH 
    150127 
    151128  void CNc4DataInput::readFieldAttributes_(CField* field, bool readAttributeValues) 
     129  TRY 
    152130  { 
    153131    StdString fieldId = field->getFieldOutputName(); 
     
    166144    // Verify the compatibility of dimension of declared grid and real grid in file 
    167145    int realGridDim = 1; 
    168     bool isUnstructuredGrid = SuperClassWriter::isUnstructured(fieldId); 
     146    bool isUnstructuredGrid = ((gridDim < 2) ? false :  SuperClassWriter::isUnstructured(fieldId)); 
    169147    std::map<StdString, StdSize> dimSizeMap = SuperClassWriter::getDimensions(&fieldId); 
    170148    std::list<StdString> dimList = SuperClassWriter::getDimensionsList(&fieldId); 
     
    191169*/ 
    192170 
    193     for (std::list<StdString>::const_iterator it = dimList.begin(); it != dimList.end(); ++it) 
     171//    if (!SuperClassWriter::isRectilinear(fieldId)) 
     172    if (true) 
     173    { 
     174      for (std::list<StdString>::const_iterator it = dimList.begin(); it != dimList.end(); ++it) 
    194175        listDimSize.push_front(*dimSizeMap.find(*it)); 
     176    } 
     177    else 
     178    { 
     179       std::list<StdString> coords = SuperClassWriter::getCoordinatesIdList(fieldId); 
     180       std::list<StdString>::const_iterator itCoord = coords.begin(); 
     181       for (; itCoord != coords.end(); itCoord++) 
     182       { 
     183         const StdString& coord = *itCoord; 
     184         if (SuperClassWriter::hasVariable(coord) && !SuperClassWriter::isTemporal(coord)) 
     185         { 
     186           std::map<StdString, StdSize> dimsTmp = SuperClassWriter::getDimensions(&coord); 
     187           StdString dimNameTmp = dimsTmp.begin()->first; 
     188           StdSize dimSizeTmp = dimsTmp.begin()->second; 
     189           listDimSize.push_front(make_pair(coord, dimSizeTmp)); 
     190           dimSizeMap.erase(dimNameTmp); 
     191           dimList.remove(dimNameTmp); 
     192         } 
     193       } 
     194       for (std::list<StdString>::const_iterator it = dimList.begin(); it != dimList.end(); ++it) 
     195        listDimSize.push_front(*dimSizeMap.find(*it)); 
     196    } 
    195197 
    196198    // Now process domain and axis 
     
    251253    } 
    252254  } 
     255  CATCH 
    253256 
    254257  /*! 
     
    261264  void CNc4DataInput::readDomainAttributeValueFromFile(CDomain* domain, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 
    262265                                                       int elementPosition, const StdString& fieldId) 
     266  TRY 
    263267  { 
    264268    // There are some optional attributes of a domain to retrieve from file    // + lon lat? 
     
    439443    domain->fillInLonLat(); 
    440444  } 
     445  CATCH 
    441446 
    442447  /*! 
     
    449454  void CNc4DataInput::readDomainAttributesFromFile(CDomain* domain, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 
    450455                                                   int elementPosition, const StdString& fieldId) 
     456  TRY 
    451457  { 
    452458    // There are some mandatory attributes of a domain to retrieve from file 
     
    497503      domain->ni_glo.setValue(itMapNi->second); 
    498504    } 
    499   } 
     505 
     506// determine if coordinates values are present in file 
     507    if ((CDomain::type_attr::rectilinear == domain->type)) 
     508    { 
     509      // Ok, try to read some attributes such as longitude and latitude 
     510      domain->hasLatInReadFile_ = SuperClassWriter::hasVariable(itMapNj->first); 
     511      domain->hasLonInReadFile_  = SuperClassWriter::hasVariable(itMapNi->first); 
     512    } 
     513    else if ((CDomain::type_attr::curvilinear == domain->type) || (CDomain::type_attr::unstructured == domain->type) ) 
     514    { 
     515      StdString latName = this->getLatCoordName(fieldId); 
     516      domain->hasLatInReadFile_ = SuperClassWriter::hasVariable(latName) ; 
     517      StdString lonName = this->getLonCoordName(fieldId);         
     518      domain->hasLonInReadFile_ = SuperClassWriter::hasVariable(lonName) ;  
     519      StdString boundsLatName = this->getBoundsId(latName); 
     520      domain->hasBoundsLatInReadFile_ = SuperClassWriter::hasVariable(boundsLatName) ;  
     521      StdString boundsLonName = this->getBoundsId(lonName); 
     522      domain->hasBoundsLonInReadFile_ = SuperClassWriter::hasVariable(boundsLonName) ; 
     523    } 
     524  } 
     525  CATCH 
    500526 
    501527  /*! 
     
    508534  void CNc4DataInput::readAxisAttributesFromFile(CAxis* axis, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 
    509535                                                 int elementPosition, const StdString& fieldId) 
     536  TRY 
    510537  { 
    511538    std::list<std::pair<StdString, StdSize> >::const_iterator itMapN = dimSizeMap.begin(), 
     
    524551    axis->n_glo.setValue(itMapN->second); 
    525552  } 
     553  CATCH 
    526554 
    527555  /*! 
     
    534562  void CNc4DataInput::readAxisAttributeValueFromFile(CAxis* axis, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 
    535563                                                    int elementPosition, const StdString& fieldId) 
     564  TRY 
    536565  { 
    537566    std::list<std::pair<StdString, StdSize> >::const_iterator itMapN = dimSizeMap.begin(), 
     
    554583    } 
    555584  } 
     585  CATCH 
    556586 
    557587  /*! 
     
    582612 
    583613  void CNc4DataInput::closeFile_(void) 
     614  TRY 
    584615  { 
    585616    SuperClassWriter::close(); 
    586617  } 
     618  CATCH 
    587619} // namespace xios 
  • XIOS/dev/branch_openmp/src/io/nc4_data_input.hpp

    r1545 r1642  
    33 
    44/// XIOS headers /// 
    5 #include "mpi_std.hpp" 
    65#include "xios_spl.hpp" 
    76#include "data_input.hpp" 
  • XIOS/dev/branch_openmp/src/io/nc4_data_output.cpp

    r1545 r1642  
    5454 
    5555      void CNc4DataOutput::writeDomain_(CDomain* domain) 
     56      TRY 
    5657      { 
    5758        StdString lonName,latName ; 
     
    154155*/ 
    155156 
    156          CArray<size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer; 
     157         CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 
    157158         int nbWritten = indexToWrite.numElements(); 
    158159         CArray<double,1> writtenLat, writtenLon; 
     
    166167           for (int idx = 0; idx < nbWritten; ++idx) 
    167168           { 
    168                   if (idx < domain->latvalue.numElements()) 
    169                   { 
    170                 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 
    171                 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 
    172                   } 
    173                   else 
    174                   { 
    175                 writtenLat(idx) = 0.; 
    176                 writtenLon(idx) = 0.; 
    177                   } 
     169             if (indexToWrite(idx) < 0) 
     170             { 
     171               writtenLat(idx) = -1.;   // hole 
     172               writtenLon(idx) = -1.; 
     173             } 
     174             else 
     175             { 
     176               writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 
     177               writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 
     178             } 
    178179           } 
    179           
    180180 
    181181           if (domain->hasBounds) 
     
    189189               for (int nv = 0; nv < nvertex; ++nv) 
    190190               { 
    191                  if (idx < boundslat.columns()) 
    192                  { 
     191                 if (indexToWrite(idx) < 0) 
     192                 { 
     193                   writtenBndsLat(nv, idx) = -1.;  // hole 
     194                   writtenBndsLon(nv, idx) = -1.; 
     195                 } 
     196                 else 
     197                 { 
    193198                   writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 
    194199                   writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 
    195                  } 
    196                  else 
    197                  { 
    198                    writtenBndsLat(nv, idx) = 0.; 
    199                    writtenBndsLon(nv, idx) = 0.; 
    200                  } 
     200                 } 
    201201               } 
    202202           } 
     
    208208           for (int idx = 0; idx < nbWritten; ++idx) 
    209209           { 
    210                   if (idx < domain->areavalue.numElements()) 
    211                 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 
     210                  if (indexToWrite(idx) < 0) 
     211              writtenArea(idx) = -1.; 
    212212                  else 
    213                 writtenArea(idx) = 0.; 
     213              writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 
    214214           } 
    215215         } 
     
    221221              case (MULTI_FILE) : 
    222222              { 
    223   //               if (domain->isEmpty()) return; 
    224  
    225                  if (server->intraCommSize > 1) 
    226                  { 
    227   //                 SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 
    228   //                 SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 
    229                  } 
    230  
    231223                 switch (domain->type) 
    232224                 { 
     
    248240                 else bounds_latid = "bounds_"+latName+appendDomid; 
    249241 
    250                  SuperClassWriter::addDimension(dimXid, domain->zoom_ni); 
    251                  SuperClassWriter::addDimension(dimYid, domain->zoom_nj); 
     242                 SuperClassWriter::addDimension(dimXid, domain->ni); 
     243                 SuperClassWriter::addDimension(dimYid, domain->nj); 
    252244 
    253245                 if (domain->hasBounds) 
     
    256248                 if (server->intraCommSize > 1) 
    257249                 { 
    258                    this->writeLocalAttributes(domain->zoom_ibegin, 
    259                                               domain->zoom_ni, 
    260                                               domain->zoom_jbegin, 
    261                                               domain->zoom_nj, 
     250                   this->writeLocalAttributes(domain->ibegin, 
     251                                              domain->ni, 
     252                                              domain->jbegin, 
     253                                              domain->nj, 
    262254                                              appendDomid); 
    263255 
    264256                   if (singleDomain) 
    265257                    this->writeLocalAttributes_IOIPSL(dimXid, dimYid, 
    266                                                       domain->zoom_ibegin, 
    267                                                       domain->zoom_ni, 
    268                                                       domain->zoom_jbegin, 
    269                                                       domain->zoom_nj, 
     258                                                      domain->ibegin, 
     259                                                      domain->ni, 
     260                                                      domain->jbegin, 
     261                                                      domain->nj, 
    270262                                                      domain->ni_glo,domain->nj_glo, 
    271263                                                      server->intraCommRank,server->intraCommSize); 
     
    340332                       break; 
    341333                     case CDomain::type_attr::rectilinear : 
    342                        CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->zoom_ni)) ; 
     334                       CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->ni)) ; 
    343335                       SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 
    344                        CArray<double,1> lon = writtenLon(Range(0,domain->zoom_ni-1)) ; 
     336                       CArray<double,1> lon = writtenLon(Range(0,domain->ni-1)) ; 
    345337                       SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 
    346338                       break; 
     
    365357              case (ONE_FILE) : 
    366358              { 
    367                  SuperClassWriter::addDimension(dimXid, domain->global_zoom_ni); 
    368                  SuperClassWriter::addDimension(dimYid, domain->global_zoom_nj); 
     359                SuperClassWriter::addDimension(dimXid, domain->ni_glo); 
     360                SuperClassWriter::addDimension(dimYid, domain->nj_glo); 
    369361 
    370362                 if (domain->hasBounds) 
     
    434426                     std::vector<StdSize> start(2) ; 
    435427                     std::vector<StdSize> count(2) ; 
    436                      if (domain->isEmpty()) 
     428// Comment out: it is not working for a hole 
     429//                     if (domain->isEmpty()) 
     430//                     { 
     431//                       start[0]=0 ; start[1]=0 ; 
     432//                       count[0]=0 ; count[1]=0 ; 
     433//                     } 
     434//                     else 
    437435                     { 
    438                        start[0]=0 ; start[1]=0 ; 
    439                        count[0]=0 ; count[1]=0 ; 
    440                      } 
    441                      else 
    442                      { 
    443                        start[1]=domain->zoom_ibegin-domain->global_zoom_ibegin; 
    444                        start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 
    445                        count[1]=domain->zoom_ni ; count[0]=domain->zoom_nj ; 
     436                       start[1]=domain->ibegin; 
     437                       start[0]=domain->jbegin; 
     438                       count[1]=domain->ni ; count[0]=domain->nj ; 
    446439                     } 
    447440 
     
    468461                       else 
    469462                       {  
    470                          start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 
    471                          count[0]=domain->zoom_nj;                          
    472                          CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->zoom_ni)); 
     463                         start[0]=domain->jbegin; 
     464                         count[0]=domain->nj; 
     465                         CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->ni)); 
    473466                         SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 
    474467 
    475                          start[0]=domain->zoom_ibegin-domain->global_zoom_ibegin; 
    476                          count[0]=domain->zoom_ni;                          
    477                          CArray<double,1> lon = writtenLon(Range(0,domain->zoom_ni-1)); 
     468                         start[0]=domain->ibegin; 
     469                         count[0]=domain->ni; 
     470                         CArray<double,1> lon = writtenLon(Range(0,domain->ni-1)); 
    478471                         SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 
    479472                       } 
     
    495488                   { 
    496489                     start[2] = 0; 
    497                      start[1] = domain->zoom_ibegin - domain->global_zoom_ibegin; 
    498                      start[0] = domain->zoom_jbegin - domain->global_zoom_jbegin; 
     490                     start[1] = domain->ibegin; 
     491                     start[0] = domain->jbegin; 
    499492                     count[2] = domain->nvertex; 
    500                      count[1] = domain->zoom_ni; 
    501                      count[0] = domain->zoom_nj; 
     493                     count[1] = domain->ni; 
     494                     count[0] = domain->nj; 
    502495                   } 
    503496                  
     
    518511                   else 
    519512                   { 
    520                      start[1] = domain->zoom_ibegin - domain->global_zoom_ibegin; 
    521                      start[0] = domain->zoom_jbegin - domain->global_zoom_jbegin; 
    522                      count[1] = domain->zoom_ni; 
    523                      count[0] = domain->zoom_nj; 
     513                     start[1] = domain->ibegin; 
     514                     start[0] = domain->jbegin; 
     515                     count[1] = domain->ni; 
     516                     count[0] = domain->nj; 
    524517                   } 
    525518                    
     
    548541         domain->addRelFile(this->filename); 
    549542      } 
     543      CATCH 
    550544 
    551545    //-------------------------------------------------------------- 
     
    786780               else 
    787781               { 
    788                  startNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    789                  countNodes[0] = domain->zoom_ni ; 
     782                 startNodes[0] = domain->ibegin; 
     783                 countNodes[0] = domain->ni ; 
    790784               } 
    791785 
     
    809803               else 
    810804               { 
    811                  startEdges[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    812                  countEdges[0] = domain->zoom_ni; 
     805                 startEdges[0] = domain->ibegin; 
     806                 countEdges[0] = domain->ni; 
    813807                 startNodes[0] = domain->mesh->node_start; 
    814808                 countNodes[0] = domain->mesh->node_count; 
    815                  startEdgeNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
     809                 startEdgeNodes[0] = domain->ibegin; 
    816810                 startEdgeNodes[1] = 0; 
    817                  countEdgeNodes[0] = domain->zoom_ni; 
     811                 countEdgeNodes[0] = domain->ni; 
    818812                 countEdgeNodes[1] = 2; 
    819813               } 
     
    845839               else 
    846840               { 
    847                  startFaces[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    848                  countFaces[0] = domain->zoom_ni ; 
     841                 startFaces[0] = domain->ibegin; 
     842                 countFaces[0] = domain->ni ; 
    849843                 startNodes[0] = domain->mesh->node_start; 
    850844                 countNodes[0] = domain->mesh->node_count; 
     
    859853                 countEdgeFaces[0] = domain->mesh->edge_count; 
    860854                 countEdgeFaces[1]= 2; 
    861                  startFaceConctv[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
     855                 startFaceConctv[0] = domain->ibegin; 
    862856                 startFaceConctv[1] = 0; 
    863                  countFaceConctv[0] = domain->zoom_ni; 
     857                 countFaceConctv[0] = domain->ni; 
    864858                 countFaceConctv[1] = domain->nvertex; 
    865859               } 
     
    883877          case (MULTI_FILE) : 
    884878          { 
     879            ERROR("CNc4DataOutput::writeDomain(domain)", 
     880            << "[ type = multiple_file ]" 
     881            << " is not yet implemented for UGRID files !"); 
    885882            break; 
    886883          } 
     
    948945         int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 
    949946 
    950          CArray<size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer; 
     947         CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 
    951948         int nbWritten = indexToWrite.numElements(); 
    952949         CArray<double,1> writtenLat, writtenLon; 
     
    960957           for (int idx = 0; idx < nbWritten; ++idx) 
    961958           { 
    962              if (idx < domain->latvalue.numElements()) 
    963              { 
    964                writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 
    965                writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 
    966              } 
    967              else 
    968              { 
    969                writtenLat(idx) = 0.; 
    970                writtenLon(idx) = 0.; 
    971              } 
     959             if (indexToWrite(idx) < 0) 
     960             { 
     961               writtenLat(idx) = -1.; 
     962               writtenLon(idx) = -1.; 
     963             } 
     964             else 
     965             { 
     966               writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 
     967               writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 
     968             } 
    972969           } 
    973970         } 
     
    984981             for (int nv = 0; nv < nvertex; ++nv) 
    985982             { 
    986                if (idx < boundslat.columns()) 
     983               if (indexToWrite(idx) < 0) 
     984               { 
     985                 writtenBndsLat(nv, idx) = -1.; 
     986                 writtenBndsLon(nv, idx) = -1.; 
     987               } 
     988               else 
    987989               { 
    988990                 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 
    989991                 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 
    990                } 
    991                else 
    992                { 
    993                  writtenBndsLat(nv, idx) = 0.; 
    994                  writtenBndsLon(nv, idx) = 0.; 
    995992                } 
    996993             } 
     
    10031000           for (int idx = 0; idx < nbWritten; ++idx) 
    10041001           { 
    1005                   if (idx < domain->areavalue.numElements()) 
    1006                 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 
    1007                   else 
    1008                 writtenArea(idx) = 0.; 
     1002             if (indexToWrite(idx) < 0) 
     1003               writtenArea(idx) = -1.; 
     1004             else 
     1005               writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 
    10091006           } 
    10101007         } 
     
    10171014              { 
    10181015                 dim0.push_back(dimXid); 
    1019                  SuperClassWriter::addDimension(dimXid, domain->zoom_ni); 
     1016                 SuperClassWriter::addDimension(dimXid, domain->ni); 
    10201017 
    10211018                 lonid = lonName+appendDomid; 
     
    11301127                 else 
    11311128                 { 
    1132                    start[0]=domain->zoom_ibegin - domain->global_zoom_ibegin; 
    1133                    count[0]=domain->zoom_ni; 
    1134                    startBounds[0]=domain->zoom_ibegin-domain->global_zoom_ibegin; 
     1129                   start[0]=domain->ibegin; 
     1130                   count[0]=domain->ni; 
     1131                   startBounds[0]=domain->ibegin; 
    11351132                   startBounds[1]=0 ; 
    1136                    countBounds[0]=domain->zoom_ni; 
     1133                   countBounds[0]=domain->ni; 
    11371134                   countBounds[1]=nvertex ; 
    11381135                 } 
     
    11831180        axis->computeWrittenCompressedIndex(comm_file); 
    11841181        
    1185         int zoom_size  = (MULTI_FILE == SuperClass::type) ? axis->zoom_n.getValue() 
    1186                                                           : axis->global_zoom_n.getValue(); 
    1187  
    1188         int zoom_count = axis->zoom_n;                                                  
    1189         int zoom_begin = axis->zoom_begin; 
    1190         // int zoom_begin = (MULTI_FILE == SuperClass::type) ? axis->global_zoom_begin  
    1191         //                                                   : axis->zoom_begin; 
    1192  
    1193         if ((0 == axis->zoom_n) && (MULTI_FILE == SuperClass::type)) return; 
     1182        int size  = (MULTI_FILE == SuperClass::type) ? axis->n.getValue() 
     1183                                                          : axis->n_glo.getValue(); 
     1184 
     1185        if ((0 == axis->n) && (MULTI_FILE == SuperClass::type)) return; 
    11941186 
    11951187        std::vector<StdString> dims; 
     
    12101202          if (axis->dim_name.isEmpty()) axisDim = axisid; 
    12111203          else axisDim=axis->dim_name.getValue(); 
    1212           SuperClassWriter::addDimension(axisDim, zoom_size); 
     1204          SuperClassWriter::addDimension(axisDim, size); 
    12131205          dims.push_back(axisDim); 
    12141206 
     
    12881280          SuperClassWriter::definition_end(); 
    12891281 
    1290           CArray<size_t, 1>& indexToWrite = axis->localIndexToWriteOnServer; 
     1282          CArray<int, 1>& indexToWrite = axis->localIndexToWriteOnServer; 
    12911283          int nbWritten = indexToWrite.numElements(); 
    12921284          CArray<double,1> axis_value(indexToWrite.numElements()); 
     
    12951287            for (int i = 0; i < nbWritten; i++) 
    12961288            { 
    1297               if (i < axis->value.numElements()) 
     1289              if (indexToWrite(i) < 0) 
     1290                axis_value(i) = -1;   // Some value in case of a hole 
     1291              else 
    12981292                axis_value(i) = axis->value(indexToWrite(i)); 
    1299               else 
    1300                 axis_value(i) = 0.; 
    13011293            } 
    13021294          } 
     
    13081300            for (int i = 0; i < nbWritten; i++) 
    13091301            { 
    1310               if (i < axis->label.numElements()) 
     1302              if (indexToWrite(i) < 0) 
     1303                axis_label(i) = boost::lexical_cast<string>(-1);  // Some value in case of a hole 
     1304              else 
    13111305                axis_label(i) = axis->label(indexToWrite(i)); 
    1312               else 
    1313                 axis_label(i) = boost::lexical_cast<string>(0);  // Write 0 as a label 
    13141306            } 
    13151307          } 
     
    13291321                  for (int i = 0; i < nbWritten; ++i) 
    13301322                  { 
    1331                     if (i < axis->bounds.columns()) 
     1323                    if (indexToWrite(i) < 0) 
     1324                    { 
     1325                      axis_bounds(0, i) = -1.; // Some value in case of a hole 
     1326                      axis_bounds(1, i) = -1.; 
     1327                    } 
     1328                    else 
    13321329                    { 
    13331330                      axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
    13341331                      axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
    1335                     } 
    1336                     else 
    1337                     { 
    1338                       axis_bounds(0, i) = 0.; 
    1339                       axis_bounds(1, i) = 0.; 
    1340  
    13411332                    } 
    13421333                  } 
     
    13541345              std::vector<StdSize> start(1), startBounds(2) ; 
    13551346              std::vector<StdSize> count(1), countBounds(2) ; 
    1356               start[0] = startBounds[0] = zoom_begin - axis->global_zoom_begin; 
    1357               count[0] = countBounds[0] = zoom_count; // zoom_size 
     1347              start[0] = startBounds[0] = axis->begin; 
     1348              count[0] = countBounds[0] = axis->n; 
    13581349              startBounds[1] = 0; 
    13591350              countBounds[1] = 2; 
     
    13691360                  for (int i = 0; i < nbWritten; ++i) 
    13701361                  { 
    1371                     if (i < axis->bounds.columns()) 
     1362                    if (indexToWrite(i) < 0) 
     1363                    { 
     1364                      axis_bounds(0, i) = -1.; 
     1365                      axis_bounds(1, i) = -1.; 
     1366                    } 
     1367                    else 
    13721368                    { 
    13731369                      axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
    13741370                      axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
    1375                     } 
    1376                     else 
    1377                     { 
    1378                       axis_bounds(0, i) = 0.; 
    1379                       axis_bounds(1, i) = 0.; 
    13801371                    } 
    13811372                  } 
     
    25122503                   if ( wtimeData) 
    25132504                   { 
    2514 //                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2515 //                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
    25162505                       SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
    25172506                       SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    25192508                   if (wtimeCounter) 
    25202509                   { 
    2521 //                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2522 //                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
    25232510                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
    25242511                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    25302517              case (ONE_FILE) : 
    25312518              { 
    2532                 const std::vector<int>& nZoomBeginGlobal = grid->getDistributionServer()->getZoomBeginGlobal(); 
    2533                 const std::vector<int>& nZoomBeginServer = grid->getDistributionServer()->getZoomBeginServer(); 
    2534                 const std::vector<int>& nZoomSizeServer  = grid->getDistributionServer()->getZoomSizeServer(); 
    25352519 
    25362520                std::vector<StdSize> start, count; 
     
    25502534                    int numElement = axisDomainOrder.numElements(); 
    25512535                    int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 
    2552                     int idx = nZoomBeginGlobal.size() - 1; 
    2553  
    2554                     start.reserve(nZoomBeginGlobal.size()); 
    2555                     count.reserve(nZoomBeginGlobal.size()); 
    2556  
     2536                    int idx = domainList.size() * 2 + axisList.size() - 1; 
     2537 
     2538                    start.reserve(idx+1); 
     2539                    count.reserve(idx+1); 
    25572540 
    25582541                    for (int i = numElement - 1; i >= 0; --i) 
     
    25722555                          if ((domain->type) != CDomain::type_attr::unstructured) 
    25732556                          { 
    2574                             start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2575                             count.push_back(nZoomSizeServer[idx]); 
     2557                            start.push_back(domain->jbegin); 
     2558                            count.push_back(domain->nj); 
    25762559                          } 
    25772560                          --idx; 
    2578                           start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2579                           count.push_back(nZoomSizeServer[idx]); 
     2561                          start.push_back(domain->ibegin); 
     2562                          count.push_back(domain->ni); 
    25802563                          --idx; 
    25812564                        } 
     
    25932576                        else 
    25942577                        { 
    2595                           start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2596                           count.push_back(nZoomSizeServer[idx]); 
     2578                          start.push_back(axis->begin); 
     2579                          count.push_back(axis->n); 
    25972580                        } 
    2598  
    25992581                        --idxAxis; 
    26002582                        --idx; 
     
    26102592                  int numElement = axisDomainOrder.numElements(); 
    26112593                  int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 
    2612                   int idx = domainList.size() * 2 + axisList.size() - 1;// nZoomBeginGlobal.size() - 1; 
    2613  
    2614                   start.reserve(nZoomBeginGlobal.size()); 
    2615                   count.reserve(nZoomBeginGlobal.size()); 
     2594                  int idx = domainList.size() * 2 + axisList.size() - 1; 
     2595 
     2596                  start.reserve(idx+1); 
     2597                  count.reserve(idx+1); 
    26162598 
    26172599                  for (int i = numElement - 1; i >= 0; --i) 
     
    26222604                      if ((domain->type) != CDomain::type_attr::unstructured) 
    26232605                      { 
    2624                         start.push_back(domain->zoom_jbegin - domain->global_zoom_jbegin); 
    2625                         count.push_back(domain->zoom_nj); 
     2606                        start.push_back(domain->jbegin); 
     2607                        count.push_back(domain->nj); 
    26262608                      } 
    26272609                      --idx ; 
    26282610 
    2629                         start.push_back(domain->zoom_ibegin - domain->global_zoom_ibegin); 
    2630                         count.push_back(domain->zoom_ni); 
     2611                        start.push_back(domain->ibegin); 
     2612                        count.push_back(domain->ni); 
    26312613                      --idx ; 
    26322614                      --idxDomain; 
     
    26352617                    { 
    26362618                        CAxis* axis = CAxis::get(axisList[idxAxis]); 
    2637                         start.push_back(axis->zoom_begin - axis->global_zoom_begin); 
    2638                         count.push_back(axis->zoom_n); 
     2619                        start.push_back(axis->begin); 
     2620                        count.push_back(axis->n); 
    26392621                      --idx; 
    26402622                      --idxAxis; 
     
    26622644                   if ( wtimeData) 
    26632645                   { 
    2664 //                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2665 //                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
    26662646                     SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
    26672647                     SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    26692649                   if (wtimeCounter) 
    26702650                   { 
    2671 //                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2672 //                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
    26732651                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
    26742652                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
  • XIOS/dev/branch_openmp/src/io/nc4_data_output.hpp

    r1545 r1642  
    44/// XIOS headers /// 
    55#include "xios_spl.hpp" 
    6 #include "mpi_std.hpp" 
    76#include "onetcdf4.hpp" 
    87#include "data_output.hpp" 
  • XIOS/dev/branch_openmp/src/io/netCdfInterface.cpp

    r1555 r1642  
    2222int CNetCdfInterface::create(const StdString& fileName, int cMode, int& ncId) 
    2323{ 
    24   int status; 
    25   #pragma omp critical (_netcdf) 
    26   { 
    27     info(100)<<"start nc_create"<<std::endl; 
    28     status = nc_create(fileName.c_str(), cMode, &ncId); 
    29     info(100)<<"end nc_create"<<std::endl; 
    30   } 
     24  int status = nc_create(fileName.c_str(), cMode, &ncId); 
    3125  if (NC_NOERR != status) 
    3226  { 
     
    5347\return Status code 
    5448*/ 
    55 int CNetCdfInterface::createPar(const StdString& fileName, int cMode, MPI_Comm comm, MPI_Info info, int& ncId) 
    56 { 
    57   int status = xios::nc_create_par(fileName.c_str(), cMode, comm, to_mpi_info(MPI_INFO_NULL), &ncId); 
    58  
     49int CNetCdfInterface::createPar(const StdString& fileName, int cMode, ep_lib::MPI_Comm comm, ep_lib::MPI_Info info, int& ncId) 
     50{ 
     51  #ifdef _usingMPI 
     52  int status = xios::nc_create_par(fileName.c_str(), cMode, comm, info, &ncId); 
     53  #elif _usingEP 
     54  int status = xios::nc_create_par(fileName.c_str(), cMode, to_mpi_comm(comm->mpi_comm), to_mpi_info(info), &ncId); 
     55  #endif 
    5956  if (NC_NOERR != status) 
    6057  { 
     
    8178int CNetCdfInterface::open(const StdString& fileName, int oMode, int& ncId) 
    8279{ 
    83   int status; 
    84   #pragma omp critical (_netcdf) 
    85   { 
    86     info(100)<<"start nc_open"<<std::endl; 
    87     status = nc_open(fileName.c_str(), oMode, &ncId); 
    88     info(100)<<"end nc_open"<<std::endl; 
    89   } 
     80  int status = nc_open(fileName.c_str(), oMode, &ncId); 
    9081  if (NC_NOERR != status) 
    9182  { 
     
    113104\return Status code 
    114105*/ 
    115 int CNetCdfInterface::openPar(const StdString& fileName, int oMode, MPI_Comm comm, MPI_Info info, int& ncId) 
    116 { 
    117   int status = xios::nc_open_par(fileName.c_str(), oMode, comm, to_mpi_info(MPI_INFO_NULL), &ncId); 
    118    
     106int CNetCdfInterface::openPar(const StdString& fileName, int oMode, ep_lib::MPI_Comm comm, ep_lib::MPI_Info info, int& ncId) 
     107{ 
     108  #ifdef _usingMPI 
     109  int status = xios::nc_open_par(fileName.c_str(), oMode, comm, info, &ncId); 
     110  #elif _usingEP 
     111  int status = xios::nc_open_par(fileName.c_str(), oMode, to_mpi_comm(comm->mpi_comm), to_mpi_info(info), &ncId); 
     112  #endif 
    119113  if (NC_NOERR != status) 
    120114  { 
     
    139133int CNetCdfInterface::close(int ncId) 
    140134{ 
    141   int status = NC_NOERR; 
    142   #pragma omp critical (_netcdf) 
    143   { 
    144     info(100)<<"start nc_close"<<std::endl; 
    145     status = nc_close(ncId); 
    146     info(100)<<"end nc_close"<<std::endl; 
    147   } 
    148        
     135  int status = nc_close(ncId); 
    149136  if (NC_NOERR != status) 
    150137  { 
     
    168155int CNetCdfInterface::reDef(int ncId) 
    169156{ 
    170   int status; 
    171   #pragma omp critical (_netcdf) 
    172   { 
    173     info(100)<<"start nc_reDef"<<std::endl; 
    174     status = nc_redef(ncId); 
    175     info(100)<<"end nc_reDef"<<std::endl; 
    176   } 
    177    
     157  int status = nc_redef(ncId); 
    178158  if (NC_NOERR != status) 
    179159  { 
     
    197177int CNetCdfInterface::endDef(int ncId) 
    198178{ 
    199   int status; 
    200   #pragma omp critical (_netcdf) 
    201   { 
    202     info(100)<<"start nc_enddef"<<std::endl; 
    203     status = nc_enddef(ncId); 
    204     info(100)<<"end nc_enddef"<<std::endl; 
    205   } 
     179  int status = nc_enddef(ncId); 
    206180  if (NC_NOERR != status) 
    207181  { 
     
    228202int CNetCdfInterface::inqNcId(int ncid, const StdString& grpName, int& grpId) 
    229203{ 
    230   int status; 
    231   #pragma omp critical (_netcdf) 
    232   { 
    233     info(100)<<"start nc_inq_ncid"<<std::endl; 
    234     status = nc_inq_ncid(ncid, grpName.c_str(), &grpId); 
    235     info(100)<<"end nc_inq_ncid"<<std::endl; 
    236   } 
    237    
     204  int status = nc_inq_ncid(ncid, grpName.c_str(), &grpId); 
    238205  if (NC_NOERR != status) 
    239206  { 
     
    261228int CNetCdfInterface::inqVarId(int ncid, const StdString& varName, int& varId) 
    262229{ 
    263   int status; 
    264   #pragma omp critical (_netcdf) 
    265   { 
    266     info(100)<<"start nc_inq_varid"<<std::endl; 
    267     status = nc_inq_varid(ncid, varName.c_str(), &varId); 
    268     info(100)<<"end nc_inq_varid"<<std::endl; 
    269   } 
     230  int status = nc_inq_varid(ncid, varName.c_str(), &varId); 
    270231  if (NC_NOERR != status) 
    271232  { 
     
    292253int CNetCdfInterface::inqDimId(int ncid, const StdString& dimName, int& dimId) 
    293254{ 
    294   int status; 
    295   #pragma omp critical (_netcdf) 
    296   { 
    297     info(100)<<"start nc_inq_dimid"<<std::endl; 
    298     status = nc_inq_dimid(ncid, dimName.c_str(), &dimId); 
    299     info(100)<<"end nc_inq_dimid"<<std::endl; 
    300   } 
    301    
     255  int status = nc_inq_dimid(ncid, dimName.c_str(), &dimId); 
    302256  if (NC_NOERR != status) 
    303257  { 
     
    325279{ 
    326280  char varNameBuff[NC_MAX_NAME + 1]; 
    327   int status; 
    328   #pragma omp critical (_netcdf) 
    329   { 
    330     info(100)<<"start nc_inq_varname"<<std::endl; 
    331     status = nc_inq_varname(ncid, varId, varNameBuff); 
    332     info(100)<<"end nc_inq_varname"<<std::endl; 
    333   } 
     281  int status = nc_inq_varname(ncid, varId, varNameBuff); 
    334282  if (NC_NOERR != status) 
    335283  { 
     
    355303int CNetCdfInterface::inqUnLimDim(int ncid, int& dimId) 
    356304{ 
    357   int status; 
    358   #pragma omp critical (_netcdf) 
    359   { 
    360     info(100)<<"start nc_inq_unlimdim"<<std::endl; 
    361     status = nc_inq_unlimdim(ncid, &dimId); 
    362     info(100)<<"end nc_inq_unlimdim"<<std::endl; 
    363   } 
     305  int status = nc_inq_unlimdim(ncid, &dimId); 
    364306  if (NC_NOERR != status) 
    365307  { 
     
    387329{ 
    388330  char fullNameIn[NC_MAX_NAME + 1]; 
    389   int status; 
    390   #pragma omp critical (_netcdf) 
    391   { 
    392     info(100)<<"start nc_inq_dimname"<<std::endl; 
    393     status = nc_inq_dimname(ncid, dimId, fullNameIn); 
    394     info(100)<<"end nc_inq_dimname"<<std::endl; 
    395   } 
     331  int status = nc_inq_dimname(ncid, dimId, fullNameIn); 
    396332  if (NC_NOERR != status) 
    397333  { 
     
    418354int CNetCdfInterface::inqDimLen(int ncid, int dimId, StdSize& dimLen) 
    419355{ 
    420   int status; 
    421   #pragma omp critical (_netcdf) 
    422   { 
    423     info(100)<<"start nc_inq_dimlen"<<std::endl; 
    424     status = nc_inq_dimlen(ncid, dimId, &dimLen); 
    425     info(100)<<"end nc_inq_dimlen"<<std::endl; 
    426   } 
     356  int status = nc_inq_dimlen(ncid, dimId, &dimLen); 
    427357  if (NC_NOERR != status) 
    428358  { 
     
    449379int CNetCdfInterface::inqVarNDims(int ncid, int varId, int& nDims) 
    450380{ 
    451   int status; 
    452   #pragma omp critical (_netcdf) 
    453   { 
    454     info(100)<<"start nc_inq_varndims"<<std::endl; 
    455     status = nc_inq_varndims(ncid, varId, &nDims); 
    456     info(100)<<"end nc_inq_varndims"<<std::endl; 
    457   } 
     381  int status = nc_inq_varndims(ncid, varId, &nDims); 
    458382  if (NC_NOERR != status) 
    459383  { 
     
    480404int CNetCdfInterface::inqVarDimId(int ncid, int varId, int* dimIds) 
    481405{ 
    482   int status; 
    483   #pragma omp critical (_netcdf) 
    484   { 
    485     info(100)<<"start nc_inq_vardimid"<<std::endl; 
    486     status = nc_inq_vardimid(ncid, varId, dimIds); 
    487     info(100)<<"end nc_inq_vardimid"<<std::endl; 
    488   } 
     406  int status = nc_inq_vardimid(ncid, varId, dimIds); 
    489407  if (NC_NOERR != status) 
    490408  { 
     
    512430int CNetCdfInterface::inqDimIds(int ncid, int& nDims, int* dimIds, int includeParents) 
    513431{ 
    514   int status; 
    515   #pragma omp critical (_netcdf) 
    516   { 
    517     info(100)<<"start nc_inq_dimids"<<std::endl; 
    518     status = nc_inq_dimids(ncid, &nDims, dimIds, includeParents); 
    519     info(100)<<"end nc_inq_dimids"<<std::endl; 
    520   } 
     432  int status = nc_inq_dimids(ncid, &nDims, dimIds, includeParents); 
    521433  if (NC_NOERR != status) 
    522434  { 
     
    545457  StdSize strlen = 0; 
    546458  std::vector<char> buff; 
    547   int status; 
    548   #pragma omp critical (_netcdf) 
    549   { 
    550     info(100)<<"start nc_inq_grpname_full"<<std::endl; 
    551     status = nc_inq_grpname_full(ncid, &strlen, NULL); 
    552     info(100)<<"end nc_inq_grpname_full"<<std::endl; 
    553    
    554     if (NC_NOERR == status) 
    555     { 
    556       buff.resize(strlen + 1); 
    557       status = nc_inq_grpname_full(ncid, NULL, &buff[0]); 
    558     } 
    559     info(100)<<"start nc_inq_grpname_full"<<std::endl; 
    560   } 
     459  int status = nc_inq_grpname_full(ncid, &strlen, NULL); 
     460  if (NC_NOERR == status) 
     461  { 
     462    buff.resize(strlen + 1); 
     463    status = nc_inq_grpname_full(ncid, NULL, &buff[0]); 
     464  } 
     465 
    561466  if (NC_NOERR != status) 
    562467  { 
     
    585490int CNetCdfInterface::inqGrpIds(int ncid, int& numgrps, int* ncids) 
    586491{ 
    587   int status; 
    588   #pragma omp critical (_netcdf) 
    589   { 
    590     info(100)<<"start nc_inq_grps"<<std::endl; 
    591     status = nc_inq_grps(ncid, &numgrps, ncids); 
    592     info(100)<<"end nc_inq_grps"<<std::endl; 
    593   } 
     492  int status = nc_inq_grps(ncid, &numgrps, ncids); 
    594493  if (NC_NOERR != status) 
    595494  { 
     
    616515int CNetCdfInterface::inqVarIds(int ncid, int& nvars, int* varids) 
    617516{ 
    618   int status; 
    619   #pragma omp critical (_netcdf) 
    620   { 
    621     info(100)<<"start nc_inq_varids"<<std::endl; 
    622     status = nc_inq_varids(ncid, &nvars, varids); 
    623     info(100)<<"end nc_inq_varids"<<std::endl; 
    624   } 
     517  int status = nc_inq_varids(ncid, &nvars, varids); 
    625518  if (NC_NOERR != status) 
    626519  { 
     
    649542int CNetCdfInterface::inqAtt(int ncid, int varid, const StdString& name, nc_type& type, size_t& len) 
    650543{ 
    651   int status; 
    652   #pragma omp critical (_netcdf) 
    653   { 
    654     info(100)<<"start nc_inq_att"<<std::endl; 
    655     status = nc_inq_att(ncid, varid, name.c_str(), &type, &len); 
    656     info(100)<<"end nc_inq_att"<<std::endl; 
    657   } 
    658    
     544  int status = nc_inq_att(ncid, varid, name.c_str(), &type, &len); 
    659545  if (NC_NOERR != status) 
    660546  { 
     
    680566int CNetCdfInterface::inqNAtts(int ncid, int& ngatts) 
    681567{ 
    682   int status; 
    683   #pragma omp critical (_netcdf) 
    684   { 
    685     info(100)<<"start nc_inq_natts"<<std::endl; 
    686     status = nc_inq_natts(ncid, &ngatts); 
    687     info(100)<<"end nc_inq_natts"<<std::endl; 
    688   } 
     568  int status = nc_inq_natts(ncid, &ngatts); 
    689569  if (NC_NOERR != status) 
    690570  { 
     
    711591int CNetCdfInterface::inqVarNAtts(int ncid, int varid, int& natts) 
    712592{ 
    713   int status; 
    714   #pragma omp critical (_netcdf) 
    715   { 
    716     info(100)<<"start nc_inq_varnatts"<<std::endl; 
    717     status = nc_inq_varnatts(ncid, varid, &natts); 
    718     info(100)<<"end nc_inq_varnatts"<<std::endl; 
    719   } 
     593  int status = nc_inq_varnatts(ncid, varid, &natts); 
    720594  if (NC_NOERR != status) 
    721595  { 
     
    738612{ 
    739613  std::vector<char> attName(NC_MAX_NAME + 1,' '); 
    740   int status; 
    741   #pragma omp critical (_netcdf) 
    742   { 
    743     info(100)<<"start nc_inq_attname"<<std::endl; 
    744     status = nc_inq_attname(ncid, varid, attnum, &attName[0]); 
    745     info(100)<<"end nc_inq_attname"<<std::endl; 
    746   } 
     614  int status = nc_inq_attname(ncid, varid, attnum, &attName[0]); 
    747615  if (NC_NOERR != status) 
    748616  { 
     
    775643int CNetCdfInterface::defGrp(int parentNcid, const StdString& grpName, int& grpId) 
    776644{ 
    777   int status; 
    778   #pragma omp critical (_netcdf) 
    779   { 
    780     info(100)<<"start nc_def_grp"<<std::endl; 
    781     status = nc_def_grp(parentNcid, grpName.c_str(), &grpId); 
    782     info(100)<<"end nc_def_grp"<<std::endl; 
    783   } 
     645  int status = nc_def_grp(parentNcid, grpName.c_str(), &grpId); 
    784646  if (NC_NOERR != status) 
    785647  { 
     
    806668int CNetCdfInterface::defDim(int ncid, const StdString& dimName, StdSize dimLen, int& dimId) 
    807669{ 
    808   int status; 
    809   #pragma omp critical (_netcdf) 
    810   { 
    811     info(100)<<"start nc_def_dim"<<std::endl; 
    812     status = nc_def_dim(ncid, dimName.c_str(), dimLen, &dimId); 
    813     info(100)<<"end nc_def_dim"<<std::endl; 
    814   } 
     670  int status = nc_def_dim(ncid, dimName.c_str(), dimLen, &dimId); 
    815671  if (NC_NOERR != status) 
    816672  { 
     
    843699                             int nDims, const int dimIds[], int& varId) 
    844700{ 
    845   int status; 
    846   #pragma omp critical (_netcdf) 
    847   { 
    848     info(100)<<"start nc_def_var"<<std::endl; 
    849     status = nc_def_var(ncid, varName.c_str(), xtype, nDims, dimIds, &varId); 
    850     info(100)<<"end nc_def_var"<<std::endl; 
    851   } 
     701  int status = nc_def_var(ncid, varName.c_str(), xtype, nDims, dimIds, &varId); 
    852702  if (NC_NOERR != status) 
    853703  { 
     
    878728int CNetCdfInterface::defVarChunking(int ncid, int varId, int storage, StdSize chunkSize[]) 
    879729{ 
    880   int status; 
    881   #pragma omp critical (_netcdf) 
    882   { 
    883     info(100)<<"start nc_def_var_chunking"<<std::endl; 
    884     status = nc_def_var_chunking(ncid, varId, storage, chunkSize); 
    885     info(100)<<"end nc_def_var_chunking"<<std::endl; 
    886   } 
     730  int status = nc_def_var_chunking(ncid, varId, storage, chunkSize); 
    887731  if (NC_NOERR != status) 
    888732  { 
     
    912756   
    913757  if (compressionLevel == 0) return NC_NOERR ; 
    914   int status; 
    915   #pragma omp critical (_netcdf) 
    916   { 
    917     info(100)<<"start nc_def_var_deflate"<<std::endl; 
    918     status = nc_def_var_deflate(ncid, varId, (compressionLevel > 0), (compressionLevel > 0), compressionLevel); 
    919     info(100)<<"end nc_def_var_deflate"<<std::endl; 
    920   } 
     758  int status = nc_def_var_deflate(ncid, varId, (compressionLevel > 0), (compressionLevel > 0), compressionLevel); 
    921759  if (NC_NOERR != status) 
    922760  { 
     
    944782{ 
    945783  int old_fill_mode; 
    946   int status; 
    947   #pragma omp critical (_netcdf) 
    948   { 
    949     info(100)<<"start nc_set_fill"<<std::endl; 
    950     status = nc_set_fill(ncid, fill ? NC_FILL: NC_NOFILL, &old_fill_mode); 
    951     info(100)<<"end nc_set_fill"<<std::endl; 
    952   } 
     784  int status = nc_set_fill(ncid, fill ? NC_FILL: NC_NOFILL, &old_fill_mode); 
    953785  if (NC_NOERR != status) 
    954786  { 
     
    977809int CNetCdfInterface::defVarFill(int ncid, int varId, int noFill, void* fillValue) 
    978810{ 
    979   int status; 
    980   #pragma omp critical (_netcdf) 
    981   { 
    982     info(100)<<"start nc_def_var_fill"<<std::endl; 
    983     status = nc_def_var_fill(ncid, varId, noFill, fillValue); 
    984     info(100)<<"end nc_def_var_fill"<<std::endl; 
    985   } 
     811  int status = nc_def_var_fill(ncid, varId, noFill, fillValue); 
    986812  if (NC_NOERR != status) 
    987813  { 
     
    1011837int CNetCdfInterface::varParAccess(int ncid, int varId, int access) 
    1012838{ 
    1013   int status; 
    1014   #pragma omp critical (_netcdf) 
    1015   { 
    1016     info(100)<<"start nc_var_par_access"<<std::endl; 
    1017     status = nc_var_par_access(ncid, varId, access); 
    1018     info(100)<<"end nc_var_par_access"<<std::endl; 
    1019   } 
     839  int status = nc_var_par_access(ncid, varId, access); 
    1020840  if (NC_NOERR != status) 
    1021841  { 
     
    1040860int CNetCdfInterface::sync(int ncid) 
    1041861{ 
    1042   int status; 
    1043   #pragma omp critical (_netcdf) 
    1044   { 
    1045     info(100)<<"start nc_sync"<<std::endl; 
    1046     status = nc_sync(ncid); 
    1047     info(100)<<"end nc_sync"<<std::endl; 
    1048   } 
     862  int status = nc_sync(ncid); 
    1049863  if (NC_NOERR != status) 
    1050864  { 
     
    1066880int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, double* data) 
    1067881{ 
    1068   int status; 
    1069   #pragma omp critical (_netcdf) 
    1070   { 
    1071     info(100)<<"start nc_get_att_double"<<std::endl; 
    1072     status = nc_get_att_double(ncid, varid, attrName, data); 
    1073     info(100)<<"end nc_get_att_double"<<std::endl; 
    1074   } 
    1075   return status; 
     882  return nc_get_att_double(ncid, varid, attrName, data); 
    1076883} 
    1077884 
     
    1079886int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, float* data) 
    1080887{ 
    1081   int status; 
    1082   #pragma omp critical (_netcdf) 
    1083   { 
    1084     info(100)<<"start nc_get_att_float"<<std::endl; 
    1085     status = nc_get_att_float(ncid, varid, attrName, data); 
    1086     info(100)<<"end nc_get_att_float"<<std::endl; 
    1087   } 
    1088   return status; 
     888  return nc_get_att_float(ncid, varid, attrName, data); 
    1089889} 
    1090890 
     
    1092892int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, int* data) 
    1093893{ 
    1094   int status; 
    1095   #pragma omp critical (_netcdf) 
    1096   { 
    1097     info(100)<<"start nc_get_att_int"<<std::endl; 
    1098     status = nc_get_att_int(ncid, varid, attrName, data); 
    1099     info(100)<<"end nc_get_att_int"<<std::endl; 
    1100   } 
    1101   return status;  
     894  return nc_get_att_int(ncid, varid, attrName, data); 
    1102895} 
    1103896 
     
    1105898int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, long* data) 
    1106899{ 
    1107   int status; 
    1108   #pragma omp critical (_netcdf) 
    1109   { 
    1110     info(100)<<"start nc_get_att_long"<<std::endl; 
    1111     status = nc_get_att_long(ncid, varid, attrName, data); 
    1112     info(100)<<"end nc_get_att_long"<<std::endl; 
    1113   } 
    1114   return status; 
     900  return nc_get_att_long(ncid, varid, attrName, data); 
    1115901} 
    1116902 
     
    1118904int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, short* data) 
    1119905{ 
    1120   int status; 
    1121   #pragma omp critical (_netcdf) 
    1122   { 
    1123     info(100)<<"start nc_get_att_short"<<std::endl; 
    1124     status = nc_get_att_short(ncid, varid, attrName, data); 
    1125     info(100)<<"end nc_get_att_short"<<std::endl; 
    1126   } 
    1127   return status; 
     906  return nc_get_att_short(ncid, varid, attrName, data); 
    1128907} 
    1129908 
     
    1131910int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, char* data) 
    1132911{ 
    1133   int status; 
    1134   #pragma omp critical (_netcdf) 
    1135   { 
    1136     info(100)<<"start nc_get_att_text"<<std::endl; 
    1137     status = nc_get_att_text(ncid, varid, attrName, data); 
    1138     info(100)<<"end nc_get_att_text"<<std::endl; 
    1139   } 
    1140   return status; 
     912  return nc_get_att_text(ncid, varid, attrName, data); 
    1141913} 
    1142914 
     
    1146918                                   StdSize numVal, const double* data) 
    1147919{ 
    1148   int status; 
    1149   #pragma omp critical (_netcdf) 
    1150   { 
    1151     info(100)<<"start nc_put_att_double"<<std::endl; 
    1152     status = nc_put_att_double(ncid, varid, attrName, NC_DOUBLE, numVal, data); 
    1153     info(100)<<"end nc_put_att_double"<<std::endl; 
    1154   } 
    1155   return status; 
     920  return nc_put_att_double(ncid, varid, attrName, NC_DOUBLE, numVal, data); 
    1156921} 
    1157922 
     
    1160925                                   StdSize numVal, const float* data) 
    1161926{ 
    1162   int status; 
    1163   #pragma omp critical (_netcdf) 
    1164   { 
    1165     info(100)<<"start nc_put_att_float"<<std::endl; 
    1166     status = nc_put_att_float(ncid, varid, attrName, NC_FLOAT, numVal, data); 
    1167     info(100)<<"end nc_put_att_float"<<std::endl; 
    1168   } 
    1169   return status; 
     927  return nc_put_att_float(ncid, varid, attrName, NC_FLOAT, numVal, data); 
    1170928} 
    1171929 
     
    1174932                                   StdSize numVal, const int* data) 
    1175933{ 
    1176   int status; 
    1177   #pragma omp critical (_netcdf) 
    1178   { 
    1179     info(100)<<"start nc_put_att_int"<<std::endl; 
    1180     status = nc_put_att_int(ncid, varid, attrName, NC_INT, numVal, data); 
    1181     info(100)<<"end nc_put_att_int"<<std::endl; 
    1182   } 
    1183   return status; 
     934  return nc_put_att_int(ncid, varid, attrName, NC_INT, numVal, data); 
    1184935} 
    1185936 
     
    1188939                                   StdSize numVal, const long* data) 
    1189940{ 
    1190   int status; 
    1191   #pragma omp critical (_netcdf) 
    1192   { 
    1193     info(100)<<"start nc_put_att_long"<<std::endl; 
    1194     status = nc_put_att_long(ncid, varid, attrName, NC_LONG, numVal, data); 
    1195     info(100)<<"end nc_put_att_long"<<std::endl; 
    1196   } 
    1197   return status; 
     941  return nc_put_att_long(ncid, varid, attrName, NC_LONG, numVal, data); 
    1198942} 
    1199943 
     
    1202946                                   StdSize numVal, const short* data) 
    1203947{ 
    1204   int status; 
    1205   #pragma omp critical (_netcdf) 
    1206   { 
    1207     info(100)<<"start nc_put_att_short"<<std::endl; 
    1208     status = nc_put_att_short(ncid, varid, attrName, NC_SHORT, numVal, data); 
    1209     info(100)<<"end nc_put_att_short"<<std::endl; 
    1210   } 
    1211   return status; 
     948  return nc_put_att_short(ncid, varid, attrName, NC_SHORT, numVal, data); 
    1212949} 
    1213950 
     
    1216953                                   StdSize numVal, const char* data) 
    1217954{ 
    1218   int status; 
    1219   #pragma omp critical (_netcdf) 
    1220   { 
    1221     info(100)<<"start nc_put_att_text"<<std::endl; 
    1222     status = nc_put_att_text(ncid, varid, attrName, numVal, data); 
    1223     info(100)<<"end nc_put_att_text"<<std::endl; 
    1224   } 
    1225   return status; 
     955  return nc_put_att_text(ncid, varid, attrName, numVal, data); 
    1226956} 
    1227957 
     
    1230960int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, double* data) 
    1231961{ 
    1232   int status; 
    1233   #pragma omp critical (_netcdf) 
    1234   { 
    1235     info(100)<<"start nc_get_vara_double"<<std::endl; 
    1236     status = nc_get_vara_double(ncid, varid, start, count, data); 
    1237     info(100)<<"end nc_get_vara_double"<<std::endl; 
    1238   } 
    1239   return status; 
     962  return nc_get_vara_double(ncid, varid, start, count, data); 
    1240963} 
    1241964 
     
    1243966int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, float* data) 
    1244967{ 
    1245   int status; 
    1246   #pragma omp critical (_netcdf) 
    1247   { 
    1248     info(100)<<"start nc_get_vara_float"<<std::endl; 
    1249     status = nc_get_vara_float(ncid, varid, start, count, data); 
    1250     info(100)<<"end nc_get_vara_float"<<std::endl; 
    1251   } 
    1252   return status;  
     968  return nc_get_vara_float(ncid, varid, start, count, data); 
    1253969} 
    1254970 
     
    1256972int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, int* data) 
    1257973{ 
    1258   int status; 
    1259   #pragma omp critical (_netcdf) 
    1260   { 
    1261     info(100)<<"start nc_get_vara_int"<<std::endl; 
    1262     status = nc_get_vara_int(ncid, varid, start, count, data); 
    1263     info(100)<<"end nc_get_vara_int"<<std::endl; 
    1264   } 
    1265   return status;  
     974  return nc_get_vara_int(ncid, varid, start, count, data); 
    1266975} 
    1267976 
     
    1269978int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, char* data) 
    1270979{ 
    1271   int status; 
    1272   #pragma omp critical (_netcdf) 
    1273   { 
    1274     info(100)<<"start nc_get_vara_text"<<std::endl; 
    1275     status = nc_get_vara_text(ncid, varid, start, count, data); 
    1276     info(100)<<"end nc_get_vara_text"<<std::endl; 
    1277   } 
    1278   return status; 
     980  return nc_get_vara_text(ncid, varid, start, count, data); 
    1279981} 
    1280982 
     
    1283985int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const double* data) 
    1284986{ 
    1285   int status; 
    1286   #pragma omp critical (_netcdf) 
    1287   { 
    1288     info(100)<<"start nc_put_vara_double"<<std::endl; 
    1289     status = nc_put_vara_double(ncid, varid, start, count, data); 
    1290     info(100)<<"end nc_put_vara_double"<<std::endl; 
    1291   } 
    1292   return status; 
     987  return nc_put_vara_double(ncid, varid, start, count, data); 
    1293988} 
    1294989 
     
    1296991int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const float* data) 
    1297992{ 
    1298   int status; 
    1299   #pragma omp critical (_netcdf) 
    1300   { 
    1301     info(100)<<"start nc_put_vara_float"<<std::endl; 
    1302     status = nc_put_vara_float(ncid, varid, start, count, data); 
    1303     info(100)<<"end nc_put_vara_float"<<std::endl; 
    1304   } 
    1305   return status; 
     993  return nc_put_vara_float(ncid, varid, start, count, data); 
    1306994} 
    1307995 
     
    1309997int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const int* data) 
    1310998{ 
    1311   int status; 
    1312   #pragma omp critical (_netcdf) 
    1313   { 
    1314     info(100)<<"start nc_put_vara_int"<<std::endl; 
    1315     status = nc_put_vara_int(ncid, varid, start, count, data); 
    1316     info(100)<<"end nc_put_vara_int"<<std::endl; 
    1317   } 
    1318   return status; 
     999  return nc_put_vara_int(ncid, varid, start, count, data); 
    13191000} 
    13201001 
     
    13221003int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const char* data) 
    13231004{ 
    1324   int status; 
    1325   #pragma omp critical (_netcdf) 
    1326   { 
    1327     info(100)<<"start nc_put_vara_text"<<std::endl; 
    1328     status = nc_put_vara_text(ncid, varid, start, count, data); 
    1329     info(100)<<"end nc_put_vara_text"<<std::endl; 
    1330   } 
    1331   return status; 
     1005  return nc_put_vara_text(ncid, varid, start, count, data); 
    13321006} 
    13331007 
     
    13421016{ 
    13431017   int varId = 0; 
    1344    int status; 
    1345    #pragma omp critical (_netcdf) 
    1346    { 
    1347      info(100)<<"start isVarExisted"<<std::endl; 
    1348      status = nc_inq_varid(ncId, varName.c_str(), &varId); 
    1349      info(100)<<"end isVarExisted"<<std::endl; 
    1350    } 
    1351    return (NC_NOERR == status); 
     1018   return (NC_NOERR == (nc_inq_varid(ncId, varName.c_str(), &varId))); 
    13521019} 
    13531020 
     
    13551022{ 
    13561023   int dimId = 0; 
    1357    int status; 
    1358    #pragma omp critical (_netcdf) 
    1359    { 
    1360      info(100)<<"start isDimExisted"<<std::endl; 
    1361      status = nc_inq_dimid(ncId, dimName.c_str(), &dimId); 
    1362      info(100)<<"end isDimExisted"<<std::endl; 
    1363    } 
    1364    return (NC_NOERR == status); 
     1024   return (NC_NOERR == (nc_inq_dimid(ncId, dimName.c_str(), &dimId))); 
    13651025} 
    13661026 
  • XIOS/dev/branch_openmp/src/io/netCdfInterface.hpp

    r1545 r1642  
    1010#define __NETCDF_INTERFACE_HPP_ 
    1111 
    12 #include "mpi_std.hpp" 
    1312#include "xios_spl.hpp" 
    1413 
     
    1716#endif 
    1817 
    19  
     18#include "mpi.hpp" 
    2019#include "netcdf.hpp" 
    2120 
     
    3332 
    3433    //! Create a netcdf file on a parallel file system 
    35     static int createPar(const StdString& path, int cmode, MPI_Comm comm, MPI_Info info, int& ncId); 
     34    static int createPar(const StdString& path, int cmode, ep_lib::MPI_Comm comm, ep_lib::MPI_Info info, int& ncId); 
    3635 
    3736    //! Open a netcdf file 
     
    3938 
    4039    //! Open a netcdf file 
    41     static int openPar(const StdString& path, int cmode, MPI_Comm comm, MPI_Info info, int& ncId); 
     40    static int openPar(const StdString& path, int cmode, ep_lib::MPI_Comm comm, ep_lib::MPI_Info info, int& ncId); 
    4241 
    4342    //! Close a netcdf file 
  • XIOS/dev/branch_openmp/src/io/netcdf.hpp

    r1555 r1642  
    11#ifndef __XIOS_NETCDF_HPP__ 
    22#define __XIOS_NETCDF_HPP__ 
    3 #include "mpi_std.hpp" 
     3#include "mpi.hpp" 
    44#define MPI_INCLUDED 
    55#include <netcdf.h> 
     
    3333  { 
    3434#if defined(USING_NETCDF_PAR) 
    35     int status; 
    36     #pragma omp critical (_netcdf) 
    37     { 
    38       status = ::nc_create_par(path, cmode, comm, info, ncidp) ; 
    39     } 
    40     return status; 
     35    return ::nc_create_par(path, cmode, comm, info, ncidp) ; 
    4136#else 
    4237    ERROR("int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info,int *ncidp)", 
     
    4944  { 
    5045#if defined(USING_NETCDF_PAR) 
    51     int status; 
    52     #pragma omp critical (_netcdf) 
    53     { 
    54       status = ::nc_open_par(path, mode, comm, info, ncidp) ; 
    55     } 
    56     return status; 
     46    return ::nc_open_par(path, mode, comm, info, ncidp) ; 
    5747#else 
    5848    ERROR("int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info,int *ncidp)", 
     
    6555  { 
    6656#if defined(USING_NETCDF_PAR) 
    67     int status = ::nc_var_par_access(ncid, varid, par_access) ; 
    68      
    69     return status; 
     57    return ::nc_var_par_access(ncid, varid, par_access) ; 
    7058#else 
    7159    ERROR("int nc_var_par_access(int ncid, int varid, int par_access)", 
  • XIOS/dev/branch_openmp/src/io/onetcdf4.cpp

    r1545 r1642  
    33#include "onetcdf4.hpp" 
    44#include "group_template.hpp" 
    5 #include "ep_mpi.hpp" 
     5#include "mpi.hpp" 
    66#include "netcdf.hpp" 
    77#include "netCdfInterface.hpp" 
     
    5858            CTimer::get("Files : create").resume(); 
    5959            if (wmpi) 
    60                CNetCdfInterface::createPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(MPI_INFO_NULL), this->ncidp); 
     60               CNetCdfInterface::createPar(filename, mode, *comm, EP_INFO_NULL, this->ncidp); 
    6161            else 
    6262               CNetCdfInterface::create(filename, mode, this->ncidp); 
     
    7070            CTimer::get("Files : open").resume(); 
    7171            if (wmpi) 
    72                CNetCdfInterface::openPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(MPI_INFO_NULL), this->ncidp); 
     72               CNetCdfInterface::openPar(filename, mode, *comm, EP_INFO_NULL, this->ncidp); 
    7373            else 
    7474               CNetCdfInterface::open(filename, mode, this->ncidp); 
  • XIOS/dev/branch_openmp/src/io/onetcdf4.hpp

    r1545 r1642  
    44/// XIOS headers /// 
    55#include "xios_spl.hpp" 
    6 #include "mpi_std.hpp" 
    76#include "exception.hpp" 
    87#include "data_output.hpp" 
    98#include "array_new.hpp" 
     9#include "mpi.hpp" 
    1010#include "netcdf.hpp" 
    1111 
  • XIOS/dev/branch_openmp/src/io/onetcdf4_impl.hpp

    r1460 r1642  
    7373    } 
    7474    char *PtrArrayStr ; 
    75     PtrArrayStr=new char[stringArrayLen] ; 
     75    PtrArrayStr=new char[stringArrayLen*data.numElements()] ; 
     76    memset (PtrArrayStr,' ',stringArrayLen*data.numElements()); 
     77    size_t offset=0 ; 
    7678    Array<StdString,1>::const_iterator it, itb=data.begin(), ite=data.end() ; 
    77     int lineNb = 0; 
    78     for(it=itb;it!=ite;++it) 
     79    for(it=itb;it!=ite;++it, offset+=stringArrayLen) 
    7980    { 
    80       it->copy(PtrArrayStr,it->size()) ; 
    81       PtrArrayStr[it->size()]='\0' ; 
    82       sstart[0] = lineNb; 
    83       sstart[dimArrayLen] = 0; 
    84       scount[0] = 1; 
    85       scount[dimArrayLen] = it->size() + 1; 
    86       CTimer::get("CONetCDF4::writeData writeData_").resume(); 
    87       this->writeData_(grpid, varid, sstart, scount, PtrArrayStr); 
    88       CTimer::get("CONetCDF4::writeData writeData_").suspend(); 
    89       ++lineNb; 
     81      it->copy(PtrArrayStr+offset,it->size()) ; 
     82      PtrArrayStr[offset+it->size()]='\0' ; 
    9083    } 
     84 
     85     CTimer::get("CONetCDF4::writeData writeData_").resume(); 
     86     this->writeData_(grpid, varid, sstart, scount, PtrArrayStr); 
     87     CTimer::get("CONetCDF4::writeData writeData_").suspend(); 
     88 
    9189    delete []  PtrArrayStr; 
    9290  } 
Note: See TracChangeset for help on using the changeset viewer.