Changeset 1129 for XIOS/dev/dev_olga/src/node/field.cpp
- Timestamp:
- 05/11/17 18:25:20 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/field.cpp
r1099 r1129 35 35 , nstep(0), nstepMax(0) 36 36 , hasOutputFile(false) 37 , domAxisScalarIds_(vector<StdString>(3,"")), areAllReferenceSolved(false), isReferenceSolved(false) 37 , domAxisScalarIds_(vector<StdString>(3,"")) 38 , areAllReferenceSolved(false), isReferenceSolved(false), isReferenceSolvedAndTransformed(false) 38 39 , useCompressedOutput(false) 39 40 , wasDataAlreadyReceivedFromServer(false) … … 46 47 , nstep(0), nstepMax(0) 47 48 , hasOutputFile(false) 48 , domAxisScalarIds_(vector<StdString>(3,"")), areAllReferenceSolved(false), isReferenceSolved(false) 49 , domAxisScalarIds_(vector<StdString>(3,"")) 50 , areAllReferenceSolved(false), isReferenceSolved(false), isReferenceSolvedAndTransformed(false) 49 51 , useCompressedOutput(false) 50 52 , wasDataAlreadyReceivedFromServer(false) … … 257 259 size_t sizeData = 0; 258 260 if (0 == recvDataSrv.numElements()) 259 { 260 for (map<int, CArray<size_t, 1> >::iterator it = grid->outIndexFromClient.begin(); it != grid->outIndexFromClient.end(); ++it) 261 { 262 sizeData += it->second.numElements(); 263 data_srv.insert(std::make_pair(it->first, CArray<double,1>(it->second.numElements()))); 264 } 261 { 262 CArray<int,1>& storeClient = grid->storeIndex_client; 263 // for (map<int, CArray<size_t, 1> >::iterator it = grid->outIndexFromClient.begin(); it != grid->outIndexFromClient.end(); ++it) 264 // { 265 // // sizeData += it->second.numElements(); 266 // data_srv.insert(std::make_pair(it->first, CArray<double,1>(it->second.numElements()))); 267 // } 268 269 // for (map<int, CArray<size_t, 1> >::iterator it = grid->outLocalIndexStoreOnClient.begin(); it != grid->outLocalIndexStoreOnClient.end(); ++it) 270 // { 271 // // sizeData += it->second.numElements(); 272 // data_srv.insert(std::make_pair(it->first, CArray<double,1>(it->second.numElements()))); 273 // } 265 274 266 275 // Gather all data from different clients 267 recvDataSrv.resize(sizeData); 276 // recvDataSrv.resize(sizeData); 277 recvDataSrv.resize(storeClient.numElements()); 268 278 recvFoperationSrv = boost::shared_ptr<func::CFunctor>(new func::CInstant(recvDataSrv)); 269 279 } … … 276 286 if (opeDate <= currDate) 277 287 { 278 for (map<int, CArray<size_t, 1> >::iterator it = grid->outIndexFromClient.begin(); it != grid->outIndexFromClient.end(); ++it)279 { 288 for (map<int, CArray<size_t, 1> >::iterator it = grid->outLocalIndexStoreOnClient.begin(); it != grid->outLocalIndexStoreOnClient.end(); ++it) 289 { 280 290 CArray<double,1> tmp; 281 291 CArray<size_t,1>& indexTmp = it->second; … … 288 298 // sizeData += it->second.numElements(); 289 299 } 300 301 // for (map<int, CArray<size_t, 1> >::iterator it = grid->outIndexFromClient.begin(); it != grid->outIndexFromClient.end(); ++it) 302 // { 303 // CArray<double,1> tmp; 304 // CArray<size_t,1>& indexTmp = it->second; 305 // *(rankBuffers[it->first]) >> tmp; 306 // for (int idx = 0; idx < indexTmp.numElements(); ++idx) 307 // { 308 // recv_data_tmp(indexTmp(idx)) = tmp(idx); 309 // } 310 // // recv_data_tmp(Range(sizeData,sizeData+it->second.numElements()-1)) = tmp; 311 // // sizeData += it->second.numElements(); 312 // } 290 313 } 291 314 … … 316 339 recvFoperationSrv->final(); 317 340 last_Write_srv = writeDate; 341 grid->computeWrittenIndex(); 318 342 writeField(); 319 343 lastlast_Write_srv = last_Write_srv; … … 813 837 } 814 838 815 void CField::solveAllEnabledFields() 839 /*! 840 Solve reference of all enabled fields even the source fields . 841 In this step, we do transformations. 842 */ 843 void CField::solveAllEnabledFieldsAndTransform() 816 844 { 817 845 CContext* context = CContext::getCurrent(); … … 819 847 bool hasServer = context->hasServer; 820 848 821 if (!isReferenceSolved )822 { 823 isReferenceSolved = true;849 if (!isReferenceSolvedAndTransformed) 850 { 851 isReferenceSolvedAndTransformed = true; 824 852 825 853 if (hasClient && !hasServer) 826 854 { 827 855 solveRefInheritance(true); 828 if (hasDirectFieldReference()) getDirectFieldReference()->solveAllEnabledFields ();856 if (hasDirectFieldReference()) getDirectFieldReference()->solveAllEnabledFieldsAndTransform(); 829 857 } 830 858 … … 992 1020 { 993 1021 // if (!areAllReferenceSolved) solveAllReferenceEnabledField(false); 994 if (!isReferenceSolved ) solveAllEnabledFields();1022 if (!isReferenceSolvedAndTransformed) solveAllEnabledFieldsAndTransform(); 995 1023 CContext* context = CContext::getCurrent(); 996 1024 bool hasWriterServer = context->hasServer && !context->hasClient; … … 1428 1456 void CField::outputField(CArray<double,1>& fieldOut) 1429 1457 { 1430 map<int, CArray<double,1> >::iterator it; 1431 1432 fieldOut = recvDataSrv; 1433 1458 map<int, CArray<double,1> >::iterator it; 1459 1460 CArray<size_t,1>& outIndexClient = grid->localIndexToWriteOnClient; 1461 CArray<size_t,1>& outIndexServer = grid->localIndexToWriteOnServer; 1462 for (size_t idx = 0; idx < outIndexServer.numElements(); ++idx) 1463 { 1464 fieldOut(outIndexServer(idx)) = recvDataSrv(outIndexClient(idx)); 1465 } 1466 1434 1467 // for (it = data_srv.begin(); it != data_srv.end(); it++) 1435 1468 // {
Note: See TracChangeset
for help on using the changeset viewer.