Ignore:
Timestamp:
06/28/18 17:53:42 (6 years ago)
Author:
oabramkina
Message:

The zoom is dead, long live the zoom.

Replacing domain_zoom transformation by copying it from domain_extract. From now on, only the zoomed part of a domain is sent to servers. On the user's side all definitions stay the same.

To do soon: axis_zoom.

File:
1 edited

Legend:

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

    r1542 r1553  
    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) 
     
    441433                     else 
    442434                     { 
    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 ; 
     435                       start[1]=domain->ibegin; 
     436                       start[0]=domain->jbegin; 
     437                       count[1]=domain->ni ; count[0]=domain->nj ; 
    446438                     } 
    447439 
     
    468460                       else 
    469461                       {  
    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)); 
     462                         start[0]=domain->jbegin; 
     463                         count[0]=domain->nj; 
     464                         CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->ni)); 
    473465                         SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 
    474466 
    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)); 
     467                         start[0]=domain->ibegin; 
     468                         count[0]=domain->ni; 
     469                         CArray<double,1> lon = writtenLon(Range(0,domain->ni-1)); 
    478470                         SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 
    479471                       } 
     
    495487                   { 
    496488                     start[2] = 0; 
    497                      start[1] = domain->zoom_ibegin - domain->global_zoom_ibegin; 
    498                      start[0] = domain->zoom_jbegin - domain->global_zoom_jbegin; 
     489                     start[1] = domain->ibegin; 
     490                     start[0] = domain->jbegin; 
    499491                     count[2] = domain->nvertex; 
    500                      count[1] = domain->zoom_ni; 
    501                      count[0] = domain->zoom_nj; 
     492                     count[1] = domain->ni; 
     493                     count[0] = domain->nj; 
    502494                   } 
    503495                  
     
    518510                   else 
    519511                   { 
    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; 
     512                     start[1] = domain->ibegin; 
     513                     start[0] = domain->jbegin; 
     514                     count[1] = domain->ni; 
     515                     count[0] = domain->nj; 
    524516                   } 
    525517                    
     
    786778               else 
    787779               { 
    788                  startNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    789                  countNodes[0] = domain->zoom_ni ; 
     780                 startNodes[0] = domain->ibegin; 
     781                 countNodes[0] = domain->ni ; 
    790782               } 
    791783 
     
    809801               else 
    810802               { 
    811                  startEdges[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    812                  countEdges[0] = domain->zoom_ni; 
     803                 startEdges[0] = domain->ibegin; 
     804                 countEdges[0] = domain->ni; 
    813805                 startNodes[0] = domain->mesh->node_start; 
    814806                 countNodes[0] = domain->mesh->node_count; 
    815                  startEdgeNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
     807                 startEdgeNodes[0] = domain->ibegin; 
    816808                 startEdgeNodes[1] = 0; 
    817                  countEdgeNodes[0] = domain->zoom_ni; 
     809                 countEdgeNodes[0] = domain->ni; 
    818810                 countEdgeNodes[1] = 2; 
    819811               } 
     
    845837               else 
    846838               { 
    847                  startFaces[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
    848                  countFaces[0] = domain->zoom_ni ; 
     839                 startFaces[0] = domain->ibegin; 
     840                 countFaces[0] = domain->ni ; 
    849841                 startNodes[0] = domain->mesh->node_start; 
    850842                 countNodes[0] = domain->mesh->node_count; 
     
    859851                 countEdgeFaces[0] = domain->mesh->edge_count; 
    860852                 countEdgeFaces[1]= 2; 
    861                  startFaceConctv[0] = domain->zoom_ibegin-domain->global_zoom_ibegin; 
     853                 startFaceConctv[0] = domain->ibegin; 
    862854                 startFaceConctv[1] = 0; 
    863                  countFaceConctv[0] = domain->zoom_ni; 
     855                 countFaceConctv[0] = domain->ni; 
    864856                 countFaceConctv[1] = domain->nvertex; 
    865857               } 
     
    10171009              { 
    10181010                 dim0.push_back(dimXid); 
    1019                  SuperClassWriter::addDimension(dimXid, domain->zoom_ni); 
     1011                 SuperClassWriter::addDimension(dimXid, domain->ni); 
    10201012 
    10211013                 lonid = lonName+appendDomid; 
     
    11301122                 else 
    11311123                 { 
    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; 
     1124                   start[0]=domain->ibegin; 
     1125                   count[0]=domain->ni; 
     1126                   startBounds[0]=domain->ibegin; 
    11351127                   startBounds[1]=0 ; 
    1136                    countBounds[0]=domain->zoom_ni; 
     1128                   countBounds[0]=domain->ni; 
    11371129                   countBounds[1]=nvertex ; 
    11381130                 } 
     
    11881180        int zoom_count = axis->zoom_n;                                                  
    11891181        int zoom_begin = axis->zoom_begin; 
    1190         // int zoom_begin = (MULTI_FILE == SuperClass::type) ? axis->global_zoom_begin  
    1191         //                                                   : axis->zoom_begin; 
    11921182 
    11931183        if ((0 == axis->zoom_n) && (MULTI_FILE == SuperClass::type)) return; 
     
    25122502                   if ( wtimeData) 
    25132503                   { 
    2514 //                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2515 //                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
    25162504                       SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
    25172505                       SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    25192507                   if (wtimeCounter) 
    25202508                   { 
    2521 //                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2522 //                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
    25232509                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
    25242510                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    25302516              case (ONE_FILE) : 
    25312517              { 
    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(); 
    25352518 
    25362519                std::vector<StdSize> start, count; 
     
    25502533                    int numElement = axisDomainOrder.numElements(); 
    25512534                    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  
     2535                    int idx = domainList.size() * 2 + axisList.size() - 1; 
     2536 
     2537                    start.reserve(idx+1); 
     2538                    count.reserve(idx+1); 
    25572539 
    25582540                    for (int i = numElement - 1; i >= 0; --i) 
     
    25722554                          if ((domain->type) != CDomain::type_attr::unstructured) 
    25732555                          { 
    2574                             start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2575                             count.push_back(nZoomSizeServer[idx]); 
     2556                            start.push_back(domain->jbegin); 
     2557                            count.push_back(domain->nj); 
    25762558                          } 
    25772559                          --idx; 
    2578                           start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2579                           count.push_back(nZoomSizeServer[idx]); 
     2560                          start.push_back(domain->ibegin); 
     2561                          count.push_back(domain->ni); 
    25802562                          --idx; 
    25812563                        } 
     
    25932575                        else 
    25942576                        { 
    2595                           start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    2596                           count.push_back(nZoomSizeServer[idx]); 
     2577                          start.push_back(axis->begin); 
     2578                          count.push_back(axis->n); 
    25972579                        } 
    2598  
    25992580                        --idxAxis; 
    26002581                        --idx; 
     
    26102591                  int numElement = axisDomainOrder.numElements(); 
    26112592                  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()); 
     2593                  int idx = domainList.size() * 2 + axisList.size() - 1; 
     2594 
     2595                  start.reserve(idx+1); 
     2596                  count.reserve(idx+1); 
    26162597 
    26172598                  for (int i = numElement - 1; i >= 0; --i) 
     
    26222603                      if ((domain->type) != CDomain::type_attr::unstructured) 
    26232604                      { 
    2624                         start.push_back(domain->zoom_jbegin - domain->global_zoom_jbegin); 
    2625                         count.push_back(domain->zoom_nj); 
     2605                        start.push_back(domain->jbegin); 
     2606                        count.push_back(domain->nj); 
    26262607                      } 
    26272608                      --idx ; 
    26282609 
    2629                         start.push_back(domain->zoom_ibegin - domain->global_zoom_ibegin); 
    2630                         count.push_back(domain->zoom_ni); 
     2610                        start.push_back(domain->ibegin); 
     2611                        count.push_back(domain->ni); 
    26312612                      --idx ; 
    26322613                      --idxDomain; 
     
    26622643                   if ( wtimeData) 
    26632644                   { 
    2664 //                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2665 //                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
    26662645                     SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
    26672646                     SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
     
    26692648                   if (wtimeCounter) 
    26702649                   { 
    2671 //                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2672 //                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
    26732650                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
    26742651                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
Note: See TracChangeset for help on using the changeset viewer.