Changeset 705


Ignore:
Timestamp:
09/24/15 09:33:16 (6 years ago)
Author:
ymipsl
Message:

Bug fix for unstructured grid output. It was working before only with one server but not more.
Compression for such grid output need to be revised too.
YM

Location:
XIOS/trunk/src/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/io/nc4_data_output.cpp

    r701 r705  
    449449         StdString domid     = (!domain->name.isEmpty()) 
    450450                             ? domain->name.getValue() : domain->getId(); 
     451         if (isWrittenDomain(domid)) return ; 
     452         else writtenDomains.insert(domid) ;  
     453 
    451454         StdString appendDomid  = (singleDomain) ? "" : "_"+domid ; 
    452455 
     
    527530                 bounds_latid = StdString("bounds_lat").append(appendDomid); 
    528531                 dim0.push_back(dimXid); 
    529                  SuperClassWriter::addDimension(dimXid, domain->nj_glo); 
     532                 SuperClassWriter::addDimension(dimXid, domain->ni_glo); 
    530533                 if (domain->hasLonLat) 
    531534                 { 
     
    573576                 else 
    574577                 { 
    575                    start[0]=domain->zoom_jbegin_srv-domain->global_zoom_jbegin; 
    576                    count[0]=domain->zoom_nj_srv ; 
    577                    startBounds[0]=domain->zoom_jbegin_srv-domain->global_zoom_jbegin; 
     578                   start[0]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 
     579                   count[0]=domain->zoom_ni_srv ; 
     580                   startBounds[0]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 
    578581                   startBounds[1]=0 ; 
    579                    countBounds[0]=domain->zoom_nj_srv ; 
     582                   countBounds[0]=domain->zoom_ni_srv ; 
    580583                   countBounds[1]=domain->nvertex ; 
    581584                 } 
     
    633636        std::vector<StdString> dims; 
    634637        StdString axisid = !axis->name.isEmpty() ? axis->name.getValue() : axis->getId(); 
     638        if (isWrittenAxis(axisid)) return ; 
     639        else writtenAxis.insert(axisid) ;  
     640 
    635641        try 
    636642        { 
     
    15751581                else 
    15761582                { 
     1583 
     1584                  CArray<bool,1> axisDomainOrder = grid->axis_domain_order; 
     1585                  std::vector<StdString> domainList = grid->getDomainList(); 
     1586                  std::vector<StdString> axisList   = grid->getAxisList(); 
     1587                  int numElement = axisDomainOrder.numElements(); 
     1588                  int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 
     1589                  int idx = nZoomBeginGlobal.size() - 1; 
     1590 
     1591                  start.reserve(nZoomBeginGlobal.size()); 
     1592                  count.reserve(nZoomBeginGlobal.size()); 
     1593 
     1594                  for (int i = numElement - 1; i >= 0; --i) 
     1595                  { 
     1596                    if (axisDomainOrder(i)) 
     1597                    { 
     1598                      CDomain* domain = CDomain::get(domainList[idxDomain]); 
     1599                      if (! domain->type == CDomain::type_attr::unstructured) 
     1600                      { 
     1601                        start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
     1602                        count.push_back(nZoomSizeServer[idx]); 
     1603                      } 
     1604                      --idx ; 
     1605                      start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
     1606                      count.push_back(nZoomSizeServer[idx]); 
     1607                      --idx ; 
     1608                      --idxDomain; 
     1609                    } 
     1610                    else 
     1611                    { 
     1612                      start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
     1613                      count.push_back(nZoomSizeServer[idx]); 
     1614                      --idx; 
     1615                     } 
     1616                  } 
     1617/* 
    15771618                  int ssize = nZoomBeginGlobal.size(); 
     1619                  for (int i = numElement - 1; i >= 0; --i) 
     1620 
    15781621 
    15791622                  start.resize(ssize); 
     
    15851628                    count[i] = nZoomSizeServer[ssize - i - 1]; 
    15861629                  } 
     1630*/ 
    15871631                } 
    15881632 
  • XIOS/trunk/src/io/nc4_data_output.hpp

    r685 r705  
    9696            MPI_Comm comm_file; 
    9797            const StdString filename; 
     98            std::set<std::string> writtenDomains ;  
     99            std::set<std::string> writtenAxis ; 
     100            bool isWrittenDomain(const std::string& domainName) { return this->writtenDomains.find(domainName) != this->writtenDomains.end(); } 
     101            bool isWrittenAxis(const std::string& axisName) { return this->writtenAxis.find(axisName) != this->writtenAxis.end(); } 
    98102 
    99103      }; // class CNc4DataOutput 
Note: See TracChangeset for help on using the changeset viewer.