Changeset 1025 for XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
- Timestamp:
- 01/11/17 15:14:22 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
r1021 r1025 74 74 else setWrittenDomain(domid); 75 75 76 const std::vector<int>& local_size_write = domain->getLocalWriteSize(); 77 const std::vector<int>& global_size_write = domain->getGlobalWriteSize(); 78 const std::vector<int>& start_write = domain->getStartWriteIndex(); 79 const std::vector<int>& count_write = domain->getCountWriteIndex(); 80 int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 76 81 77 82 StdString dimXid, dimYid ; … … 135 140 bounds_latid = StdString("bounds_lat").append(appendDomid); 136 141 137 SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv);138 SuperClassWriter::addDimension(dimYid, domain->zoom_nj_srv);142 SuperClassWriter::addDimension(dimXid, local_size_write[0]); 143 SuperClassWriter::addDimension(dimYid, local_size_write[1]); 139 144 140 145 if (domain->hasBounds) … … 143 148 if (server->intraCommSize > 1) 144 149 { 145 this->writeLocalAttributes(domain->zoom_ibegin_srv, 146 domain->zoom_ni_srv, 147 domain->zoom_jbegin_srv, 148 domain->zoom_nj_srv, 150 this->writeLocalAttributes(0, count_write[0], 151 0, count_write[1], 149 152 appendDomid); 150 153 151 154 if (singleDomain) 152 155 this->writeLocalAttributes_IOIPSL(dimXid, dimYid, 153 domain->zoom_ibegin_srv, 154 domain->zoom_ni_srv, 155 domain->zoom_jbegin_srv, 156 domain->zoom_nj_srv, 156 0, count_write[0], 157 0, count_write[1], 157 158 domain->ni_glo,domain->nj_glo, 158 159 server->intraCommRank,server->intraCommSize); … … 223 224 { 224 225 case CDomain::type_attr::curvilinear : 225 SuperClassWriter::writeData(domain->latvalue _srv, latid, isCollective, 0);226 SuperClassWriter::writeData(domain->lonvalue _srv, lonid, isCollective, 0);226 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0); 227 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0); 227 228 break; 228 229 case CDomain::type_attr::rectilinear : 229 CArray<double,1> lat = domain->latvalue _srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ;230 CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,local_size_write[0])) ; 230 231 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 231 CArray<double,1> lon =domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ;232 CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1])) ; 232 233 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 233 234 break; … … 236 237 if (domain->hasBounds) 237 238 { 238 SuperClassWriter::writeData(domain->bounds_lon _srv, bounds_lonid, isCollective, 0);239 SuperClassWriter::writeData(domain->bounds_lat _srv, bounds_latid, isCollective, 0);239 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0); 240 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0); 240 241 } 241 242 } 242 243 243 244 if (domain->hasArea) 244 SuperClassWriter::writeData(domain->area _srv, areaId, isCollective, 0);245 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0); 245 246 246 247 SuperClassWriter::definition_start(); … … 250 251 case (ONE_FILE) : 251 252 { 252 SuperClassWriter::addDimension(dimXid, domain->global_zoom_ni);253 SuperClassWriter::addDimension(dimYid, domain->global_zoom_nj);253 SuperClassWriter::addDimension(dimXid, global_size_write[0]); 254 SuperClassWriter::addDimension(dimYid, global_size_write[1]); 254 255 255 256 if (domain->hasBounds) … … 325 326 else 326 327 { 327 start[1]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 328 start[0]=domain->zoom_jbegin_srv-domain->global_zoom_jbegin; 329 count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ; 328 // start[1]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 329 // start[0]=domain->zoom_jbegin_srv-domain->global_zoom_jbegin; 330 // count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ; 331 start[1]= start_write[0]; 332 start[0]= start_write[1]; 333 count[1]= count_write[0]; 334 count[0]= count_write[1]; 330 335 } 331 336 332 337 if (domain->hasLonLat) 333 338 { 334 SuperClassWriter::writeData(domain->latvalue _srv, latid, isCollective, 0,&start,&count);335 SuperClassWriter::writeData(domain->lonvalue _srv, lonid, isCollective, 0,&start,&count);339 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 340 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 336 341 } 337 342 break; … … 347 352 start[0]=0 ; 348 353 count[0]=0 ; 349 SuperClassWriter::writeData(domain->latvalue _srv, latid, isCollective, 0,&start,&count);350 SuperClassWriter::writeData(domain->lonvalue _srv, lonid, isCollective, 0,&start,&count);354 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 355 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 351 356 352 357 } 353 358 else 354 359 { 355 start[0]= domain->zoom_jbegin_srv-domain->global_zoom_jbegin;356 count[0]= domain->zoom_nj_srv;357 CArray<double,1> lat = domain->latvalue _srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ;360 start[0]= start_write[1]; 361 count[0]= count_write[1]; 362 CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,count_write[0])) ; 358 363 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 359 364 360 start[0]= domain->zoom_ibegin_srv-domain->global_zoom_ibegin;361 count[0]= domain->zoom_ni_srv;362 CArray<double,1> lon=domain->lonvalue _srv(Range(0,domain->zoom_ni_srv-1)) ;365 start[0]= start_write[0]; 366 count[0]= count_write[0]; 367 CArray<double,1> lon=domain->lonvalue(Range(0,count_write[1])) ; 363 368 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 364 369 } … … 380 385 { 381 386 start[2] = 0; 382 start[1] = domain->zoom_ibegin_srv - domain->global_zoom_ibegin;383 start[0] = domain->zoom_jbegin_srv - domain->global_zoom_jbegin;384 count[2] = domain->nvertex;385 count[1] = domain->zoom_ni_srv;386 count[0] = domain->zoom_nj_srv;387 start[1] = start_write[0]; 388 start[0] = start_write[1]; 389 count[2] = nvertex; 390 count[1] = count_write[0]; 391 count[0] = count_write[1]; 387 392 } 388 393 389 SuperClassWriter::writeData(domain->bounds_lon _srv, bounds_lonid, isCollective, 0, &start, &count);390 SuperClassWriter::writeData(domain->bounds_lat _srv, bounds_latid, isCollective, 0, &start, &count);394 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0, &start, &count); 395 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0, &start, &count); 391 396 } 392 397 … … 403 408 else 404 409 { 405 start[1] = domain->zoom_ibegin_srv - domain->global_zoom_ibegin; 406 start[0] = domain->zoom_jbegin_srv - domain->global_zoom_jbegin; 407 count[1] = domain->zoom_ni_srv; 408 count[0] = domain->zoom_nj_srv; 410 // start[1] = domain->zoom_ibegin_srv - domain->global_zoom_ibegin; 411 // start[0] = domain->zoom_jbegin_srv - domain->global_zoom_jbegin; 412 // count[1] = domain->zoom_ni_srv; 413 // count[0] = domain->zoom_nj_srv; 414 415 start[1]= start_write[0]; 416 start[0]= start_write[1]; 417 count[1]= count_write[0]; 418 count[0]= count_write[1]; 409 419 } 410 420 411 SuperClassWriter::writeData(domain->area _srv, areaId, isCollective, 0, &start, &count);421 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0, &start, &count); 412 422 } 413 423 … … 450 460 StdString domainName = domain->name; 451 461 domain->assignMesh(domainName, domain->nvertex); 452 domain->mesh->createMeshEpsilon(server->intraComm, domain->lonvalue _srv, domain->latvalue_srv, domain->bounds_lon_srv, domain->bounds_lat_srv);462 domain->mesh->createMeshEpsilon(server->intraComm, domain->lonvalue, domain->latvalue, domain->bounds_lonvalue, domain->bounds_latvalue); 453 463 454 464 StdString node_x = domainName + "_node_x"; … … 471 481 StdString dimVertex = "n" + domainName + "_vertex"; 472 482 StdString dimTwo = "Two"; 483 484 const std::vector<int>& local_size_write = domain->getLocalWriteSize(); 485 const std::vector<int>& global_size_write = domain->getGlobalWriteSize(); 486 const std::vector<int>& start_write = domain->getStartWriteIndex(); 487 const std::vector<int>& count_write = domain->getCountWriteIndex(); 473 488 474 489 if (!SuperClassWriter::dimExist(dimTwo)) SuperClassWriter::addDimension(dimTwo, 2); … … 664 679 else 665 680 { 666 startNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;667 countNodes[0] = domain->zoom_ni_srv ;681 startNodes[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 682 countNodes[0] = count_write[0]; //domain->zoom_ni_srv ; 668 683 } 669 684 … … 687 702 else 688 703 { 689 startEdges[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;690 countEdges[0] = domain->zoom_ni_srv;704 startEdges[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 705 countEdges[0] = count_write[0]; 691 706 startNodes[0] = domain->mesh->node_start; 692 707 countNodes[0] = domain->mesh->node_count; 693 startEdgeNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;708 startEdgeNodes[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 694 709 startEdgeNodes[1] = 0; 695 countEdgeNodes[0] = domain->zoom_ni_srv;710 countEdgeNodes[0] = count_write[0]; //domain->zoom_ni_srv; 696 711 countEdgeNodes[1]= 2; 697 712 } … … 723 738 else 724 739 { 725 startFaces[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;726 countFaces[0] = domain->zoom_ni_srv ;740 startFaces[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 741 countFaces[0] = count_write[0]; //domain->zoom_ni_srv ; 727 742 startNodes[0] = domain->mesh->node_start; 728 743 countNodes[0] = domain->mesh->node_count; … … 737 752 countEdgeFaces[0] = domain->mesh->edge_count; 738 753 countEdgeFaces[1]= 2; 739 startFaceConctv[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;740 startFaceConctv[1] = 0; 741 countFaceConctv[0] = domain->zoom_ni_srv;754 startFaceConctv[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 755 startFaceConctv[1] = 0; //0; 756 countFaceConctv[0] = count_write[0]; //domain->zoom_ni_srv; 742 757 countFaceConctv[1] = domain->nvertex; 743 758 } … … 760 775 if (domain->nvertex == 2) 761 776 { 762 startEdges[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;763 countEdges[0] = domain->zoom_ni_srv ;764 startEdgeNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;765 startEdgeNodes[1] = 0; 766 countEdgeNodes[0] = domain->zoom_ni_srv;777 startEdges[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 778 countEdges[0] = count_write[0]; //domain->zoom_ni_srv ; 779 startEdgeNodes[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 780 startEdgeNodes[1] = 0; //0; 781 countEdgeNodes[0] = count_write[0]; //domain->zoom_ni_srv; 767 782 countEdgeNodes[1]= 2; 768 783 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges); … … 785 800 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes); 786 801 } 787 startFaces[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;788 countFaces[0] = domain->zoom_ni_srv;802 startFaces[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 803 countFaces[0] = count_write[0]; //domain->zoom_ni_srv; 789 804 startEdgeFaces[0] = domain->mesh->edge_start; 790 805 startEdgeFaces[1]= 0; 791 806 countEdgeFaces[0] = domain->mesh->edge_count; 792 807 countEdgeFaces[1]= 2; 793 startFaceConctv[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin;794 startFaceConctv[1] = 0; 795 countFaceConctv[0] = domain->zoom_ni_srv;808 startFaceConctv[0] = start_write[0]; //domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 809 startFaceConctv[1] = 0; //0; 810 countFaceConctv[0] = count_write[0]; //domain->zoom_ni_srv; 796 811 countFaceConctv[1]= domain->nvertex; 797 812 SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces); … … 860 875 string areaId = "area" + appendDomid; 861 876 877 const std::vector<int>& local_size_write = domain->getLocalWriteSize(); 878 const std::vector<int>& global_size_write = domain->getGlobalWriteSize(); 879 const std::vector<int>& start_write = domain->getStartWriteIndex(); 880 const std::vector<int>& count_write = domain->getCountWriteIndex(); 881 int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 882 862 883 try 863 884 { … … 867 888 { 868 889 dim0.push_back(dimXid); 869 SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv);890 SuperClassWriter::addDimension(dimXid, local_size_write[0]); 870 891 871 892 lonid = StdString("lon").append(appendDomid); … … 905 926 if (domain->hasLonLat) 906 927 { 907 SuperClassWriter::writeData(domain->latvalue _srv, latid, isCollective, 0);908 SuperClassWriter::writeData(domain->lonvalue _srv, lonid, isCollective, 0);928 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0); 929 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0); 909 930 if (domain->hasBounds) 910 931 { 911 SuperClassWriter::writeData(domain->bounds_lon _srv, bounds_lonid, isCollective, 0);912 SuperClassWriter::writeData(domain->bounds_lat _srv, bounds_latid, isCollective, 0);932 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0); 933 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0); 913 934 } 914 935 } 915 936 916 937 if (domain->hasArea) 917 SuperClassWriter::writeData(domain->area _srv, areaId, isCollective, 0);938 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0); 918 939 919 940 SuperClassWriter::definition_start(); … … 928 949 bounds_latid = StdString("bounds_lat").append(appendDomid); 929 950 dim0.push_back(dimXid); 930 SuperClassWriter::addDimension(dimXid, domain->ni_glo);951 SuperClassWriter::addDimension(dimXid, global_size_write[0]); 931 952 if (domain->hasLonLat) 932 953 { … … 938 959 this->writeAxisAttributes(latid, "", "latitude", "Latitude", "degrees_north", domid); 939 960 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_latid, &latid); 940 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, domain->nvertex);961 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, nvertex); 941 962 } 942 963 dim0.clear(); … … 968 989 count[0]=0 ; 969 990 startBounds[1]=0 ; 970 countBounds[1]= domain->nvertex ;991 countBounds[1]=nvertex ; 971 992 startBounds[0]=0 ; 972 993 countBounds[0]=0 ; … … 974 995 else 975 996 { 976 start[0]= domain->zoom_ibegin_srv-domain->global_zoom_ibegin;977 count[0]= domain->zoom_ni_srv;978 startBounds[0]= domain->zoom_ibegin_srv-domain->global_zoom_ibegin;997 start[0]=start_write[0]; 998 count[0]=count_write[0]; 999 startBounds[0]=start_write[0]; 979 1000 startBounds[1]=0 ; 980 countBounds[0]= domain->zoom_ni_srv;981 countBounds[1]= domain->nvertex ;1001 countBounds[0]=count_write[0]; 1002 countBounds[1]=nvertex ; 982 1003 } 983 1004 984 1005 if (domain->hasLonLat) 985 1006 { 986 SuperClassWriter::writeData(domain->latvalue _srv, latid, isCollective, 0,&start,&count);987 SuperClassWriter::writeData(domain->lonvalue _srv, lonid, isCollective, 0,&start,&count);1007 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 1008 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 988 1009 if (domain->hasBounds) 989 1010 { 990 SuperClassWriter::writeData(domain->bounds_lon _srv, bounds_lonid, isCollective, 0,&startBounds,&countBounds);991 SuperClassWriter::writeData(domain->bounds_lat _srv, bounds_latid, isCollective, 0,&startBounds,&countBounds);1011 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0,&startBounds,&countBounds); 1012 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0,&startBounds,&countBounds); 992 1013 } 993 1014 } 994 1015 995 1016 if (domain->hasArea) 996 SuperClassWriter::writeData(domain->area _srv, areaId, isCollective, 0, &start, &count);1017 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0, &start, &count); 997 1018 998 1019 SuperClassWriter::definition_start(); … … 1021 1042 void CNc4DataOutput::writeAxis_(CAxis* axis) 1022 1043 { 1044 CContext* context = CContext::getCurrent(); 1045 CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer; 1046 1023 1047 if (axis->IsWritten(this->filename)) return; 1024 1048 axis->checkAttributes(); 1025 int zoom_size_srv = axis->zoom_size_srv; 1026 int zoom_begin_srv = axis->zoom_begin_srv; 1027 int zoom_size = (MULTI_FILE == SuperClass::type) ? zoom_size_srv 1028 : axis->global_zoom_n; 1029 int zoom_begin = (MULTI_FILE == SuperClass::type) ? zoom_begin_srv 1030 : axis->global_zoom_begin; 1031 1032 if ((0 == zoom_size_srv) && (MULTI_FILE == SuperClass::type)) return; 1049 1050 int local_size_write = axis->getLocalWriteSize(); 1051 int global_size_write = axis->getGlobalWriteSize(); 1052 int start_write = axis->getStartWriteIndex(); 1053 int count_write = axis->getCountWriteIndex(); 1054 1055 if ((0 == local_size_write) && (MULTI_FILE == SuperClass::type)) return; 1033 1056 1034 1057 std::vector<StdString> dims; … … 1039 1062 try 1040 1063 { 1041 SuperClassWriter::addDimension(axisid, zoom_size);1064 SuperClassWriter::addDimension(axisid, global_size_write); 1042 1065 if (axis->hasValue) 1043 1066 { … … 1079 1102 case MULTI_FILE: 1080 1103 { 1081 CArray<double,1> axis_value( zoom_size_srv);1082 for (int i = 0; i < zoom_size_srv; i++) axis_value(i) = axis->value_srv(i);1104 CArray<double,1> axis_value(local_size_write); 1105 for (int i = 0; i < local_size_write; i++) axis_value(i) = axis->value(i); 1083 1106 SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 1084 1107 1085 1108 if (!axis->bounds.isEmpty()) 1086 SuperClassWriter::writeData(axis->bound _srv, axisBoundsId, isCollective, 0);1109 SuperClassWriter::writeData(axis->bounds, axisBoundsId, isCollective, 0); 1087 1110 1088 1111 SuperClassWriter::definition_start(); … … 1092 1115 case ONE_FILE: 1093 1116 { 1094 CArray<double,1> axis_value( zoom_size_srv);1095 axis_value = axis->value _srv;1117 CArray<double,1> axis_value(count_write); 1118 axis_value = axis->value; 1096 1119 1097 1120 std::vector<StdSize> start(1), startBounds(2) ; 1098 1121 std::vector<StdSize> count(1), countBounds(2) ; 1099 start[0] = startBounds[0] = zoom_begin_srv-axis->global_zoom_begin;1100 count[0] = countBounds[0] = zoom_size_srv;1122 start[0] = startBounds[0] = start_write; 1123 count[0] = countBounds[0] = count_write; 1101 1124 startBounds[1] = 0; 1102 1125 countBounds[1] = 2; … … 1104 1127 1105 1128 if (!axis->bounds.isEmpty()) 1106 SuperClassWriter::writeData(axis->bound _srv, axisBoundsId, isCollective, 0, &startBounds, &countBounds);1129 SuperClassWriter::writeData(axis->bounds, axisBoundsId, isCollective, 0, &startBounds, &countBounds); 1107 1130 1108 1131 SuperClassWriter::definition_start(); … … 2064 2087 case (ONE_FILE) : 2065 2088 { 2089 // const std::vector<int>& nZoomBeginGlobal = grid->getDistributionServer()->getZoomBeginGlobal(); 2090 // const std::vector<int>& nZoomBeginServer = grid->getDistributionServer()->getZoomBeginServer(); 2091 // const std::vector<int>& nZoomSizeServer = grid->getDistributionServer()->getZoomSizeServer(); 2092 2093 // std::vector<StdSize> start, count; 2094 2095 // if (field->getUseCompressedOutput()) 2096 // { 2097 // if (grid->isCompressible()) 2098 // { 2099 // start.push_back(grid->getOffsetWrittenIndexes()); 2100 // count.push_back(grid->getNumberWrittenIndexes()); 2101 // } 2102 // else 2103 // { 2104 // CArray<int,1> axisDomainOrder = grid->axis_domain_order; 2105 // std::vector<StdString> domainList = grid->getDomainList(); 2106 // std::vector<StdString> axisList = grid->getAxisList(); 2107 // int numElement = axisDomainOrder.numElements(); 2108 // int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 2109 // int idx = nZoomBeginGlobal.size() - 1; 2110 2111 // start.reserve(nZoomBeginGlobal.size()); 2112 // count.reserve(nZoomBeginGlobal.size()); 2113 2114 2115 // for (int i = numElement - 1; i >= 0; --i) 2116 // { 2117 // if (2 == axisDomainOrder(i)) 2118 // { 2119 // CDomain* domain = CDomain::get(domainList[idxDomain]); 2120 2121 // if (domain->isCompressible()) 2122 // { 2123 // start.push_back(domain->getOffsetWrittenIndexes()); 2124 // count.push_back(domain->getNumberWrittenIndexes()); 2125 // idx -= 2; 2126 // } 2127 // else 2128 // { 2129 // if ((domain->type) != CDomain::type_attr::unstructured) 2130 // { 2131 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2132 // count.push_back(nZoomSizeServer[idx]); 2133 // } 2134 // --idx; 2135 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2136 // count.push_back(nZoomSizeServer[idx]); 2137 // --idx; 2138 // } 2139 // --idxDomain; 2140 // } 2141 // else if (1 == axisDomainOrder(i)) 2142 // { 2143 // CAxis* axis = CAxis::get(axisList[idxAxis]); 2144 2145 // if (axis->isCompressible()) 2146 // { 2147 // start.push_back(axis->getOffsetWrittenIndexes()); 2148 // count.push_back(axis->getNumberWrittenIndexes()); 2149 // } 2150 // else 2151 // { 2152 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2153 // count.push_back(nZoomSizeServer[idx]); 2154 // } 2155 2156 // --idxAxis; 2157 // --idx; 2158 // } 2159 // } 2160 // } 2066 2161 const std::vector<int>& nZoomBeginGlobal = grid->getDistributionServer()->getZoomBeginGlobal(); 2067 2162 const std::vector<int>& nZoomBeginServer = grid->getDistributionServer()->getZoomBeginServer(); … … 2135 2230 } 2136 2231 } 2137 } 2232 } 2138 2233 } 2139 2234 else 2140 2235 { 2141 2236 // CArray<int,1> axisDomainOrder = grid->axis_domain_order; 2237 // std::vector<StdString> domainList = grid->getDomainList(); 2238 // std::vector<StdString> axisList = grid->getAxisList(); 2239 // int numElement = axisDomainOrder.numElements(); 2240 // int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 2241 // int idx = nZoomBeginGlobal.size() - 1; 2242 2243 // start.reserve(nZoomBeginGlobal.size()); 2244 // count.reserve(nZoomBeginGlobal.size()); 2245 2246 // for (int i = numElement - 1; i >= 0; --i) 2247 // { 2248 // if (2 == axisDomainOrder(i)) 2249 // { 2250 // CDomain* domain = CDomain::get(domainList[idxDomain]); 2251 // if ((domain->type) != CDomain::type_attr::unstructured) 2252 // { 2253 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2254 // count.push_back(nZoomSizeServer[idx]); 2255 // } 2256 // --idx ; 2257 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2258 // count.push_back(nZoomSizeServer[idx]); 2259 // --idx ; 2260 // --idxDomain; 2261 // } 2262 // else if (1 == axisDomainOrder(i)) 2263 // { 2264 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2265 // count.push_back(nZoomSizeServer[idx]); 2266 // --idx; 2267 // } 2268 // else 2269 // { 2270 // if (1 == axisDomainOrder.numElements()) 2271 // { 2272 // start.push_back(0); 2273 // count.push_back(1); 2274 // } 2275 // --idx; 2276 // } 2142 2277 CArray<int,1> axisDomainOrder = grid->axis_domain_order; 2143 2278 std::vector<StdString> domainList = grid->getDomainList(); … … 2145 2280 int numElement = axisDomainOrder.numElements(); 2146 2281 int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; 2147 int idx = nZoomBeginGlobal.size() - 1;2282 int idx = domainList.size() * 2 + axisList.size() - 1;// nZoomBeginGlobal.size() - 1; 2148 2283 2149 2284 start.reserve(nZoomBeginGlobal.size()); … … 2157 2292 if ((domain->type) != CDomain::type_attr::unstructured) 2158 2293 { 2159 start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2160 count.push_back(nZoomSizeServer[idx]); 2294 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2295 // count.push_back(nZoomSizeServer[idx]); 2296 start.push_back((domain->getStartWriteIndex())[idx]); 2297 count.push_back((domain->getCountWriteIndex())[idx]); 2161 2298 } 2162 2299 --idx ; 2163 start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2164 count.push_back(nZoomSizeServer[idx]); 2300 // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2301 // count.push_back(nZoomSizeServer[idx]); 2302 start.push_back((domain->getStartWriteIndex())[idx]); 2303 count.push_back((domain->getCountWriteIndex())[idx]); 2165 2304 --idx ; 2166 2305 --idxDomain; … … 2168 2307 else if (1 == axisDomainOrder(i)) 2169 2308 { 2170 start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 2171 count.push_back(nZoomSizeServer[idx]); 2309 CAxis* axis = CAxis::get(axisList[idxAxis]); 2310 start.push_back(axis->getStartWriteIndex()); 2311 count.push_back(axis->getCountWriteIndex()); 2172 2312 --idx; 2313 --idxAxis; 2173 2314 } 2174 2315 else
Note: See TracChangeset
for help on using the changeset viewer.