Changeset 1158 for XIOS/dev/dev_olga/src/node/context.cpp
- Timestamp:
- 06/06/17 17:58:16 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/context.cpp
r1144 r1158 14 14 #include "type.hpp" 15 15 #include "xios_spl.hpp" 16 #include "timer.hpp" 17 #include "memtrack.hpp" 16 18 17 19 #include "server.hpp" … … 372 374 comms.push_back(interCommClient); 373 375 } 374 client = new CContextClient(this,intraCommClient,interCommClient, cxtClient);376 client = new CContextClient(this,intraCommClient,interCommClient, cxtClient); 375 377 } 376 378 … … 615 617 void CContext::closeDefinition(void) 616 618 { 619 CTimer::get("Context : close definition").resume() ; 617 620 postProcessingGlobalAttributes(); 618 621 … … 640 643 if (!hasServer) startPrefetchingOfEnabledReadModeFiles(); 641 644 } 645 CTimer::get("Context : close definition").suspend() ; 642 646 } 643 647 … … 690 694 this->enabledFiles[i]->generateNewTransformationGridDest(); 691 695 } 692 693 696 } 694 697 … … 783 786 { 784 787 const std::vector<CFile*> allFiles = CFile::getAll(); 788 const CDate& initDate = calendar->getInitDate(); 785 789 786 790 for (unsigned int i = 0; i < allFiles.size(); i++) … … 788 792 { 789 793 if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixé à vrai. 794 { 795 if ((initDate + allFiles[i]->output_freq.getValue()) < (initDate + this->getCalendar()->getTimeStep())) 796 { 797 error(0)<<"WARNING: void CContext::findEnabledFiles()"<<endl 798 << "Output frequency in file \""<<allFiles[i]->getFileOutputName() 799 <<"\" is less than the time step. File will not be written."<<endl; 800 } 801 else 790 802 enabledFiles.push_back(allFiles[i]); 803 } 791 804 } 792 else enabledFiles.push_back(allFiles[i]); // otherwise true by default 793 805 else 806 { 807 if ( (initDate + allFiles[i]->output_freq.getValue()) < (initDate + this->getCalendar()->getTimeStep())) 808 { 809 error(0)<<"WARNING: void CContext::findEnabledFiles()"<<endl 810 << "Output frequency in file \""<<allFiles[i]->getFileOutputName() 811 <<"\" is less than the time step. File will not be written."<<endl; 812 } 813 else 814 enabledFiles.push_back(allFiles[i]); // otherwise true by default 815 } 794 816 795 817 if (enabledFiles.size() == 0) … … 1267 1289 StdString fileDefRoot("file_definition"); 1268 1290 CFileGroup* cfgrpPtr = CFileGroup::get(fileDefRoot); 1291 1269 1292 for (int i = 0; i < size; ++i) 1270 1293 { … … 1313 1336 CFile* file = allFiles[i]; 1314 1337 1338 std::vector<CVariable*> fileVars, fieldVars, vars = file->getAllVariables(); 1339 for (size_t k = 0; k < vars.size(); k++) 1340 { 1341 CVariable* var = vars[k]; 1342 1343 if (var->ts_target.isEmpty() 1344 || var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both) 1345 fileVars.push_back(var); 1346 1347 if (!var->ts_target.isEmpty() 1348 && (var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both)) 1349 fieldVars.push_back(var); 1350 } 1351 1315 1352 if (!file->timeseries.isEmpty() && file->timeseries != CFile::timeseries_attr::none) 1316 1353 { 1317 StdString tsPrefix = !file->ts_prefix.isEmpty() ? file->ts_prefix : file->getFileOutputName(); 1318 1354 StdString fileNameStr("%file_name%") ; 1355 StdString tsPrefix = !file->ts_prefix.isEmpty() ? file->ts_prefix : fileNameStr ; 1356 1357 StdString fileName=file->getFileOutputName(); 1358 size_t pos=tsPrefix.find(fileNameStr) ; 1359 while (pos!=std::string::npos) 1360 { 1361 tsPrefix=tsPrefix.replace(pos,fileNameStr.size(),fileName) ; 1362 pos=tsPrefix.find(fileNameStr) ; 1363 } 1364 1319 1365 const std::vector<CField*> allFields = file->getAllFields(); 1320 1366 for (size_t j = 0; j < allFields.size(); j++) … … 1326 1372 CFile* tsFile = CFile::create(); 1327 1373 tsFile->duplicateAttributes(file); 1328 tsFile->setVirtualVariableGroup(file->getVirtualVariableGroup()); 1329 1374 1375 // Add variables originating from file and targeted to timeserie file 1376 for (size_t k = 0; k < fileVars.size(); k++) 1377 tsFile->getVirtualVariableGroup()->addChild(fileVars[k]); 1378 1379 1330 1380 tsFile->name = tsPrefix + "_"; 1331 1381 if (!field->name.isEmpty()) … … 1341 1391 CField* tsField = tsFile->addField(); 1342 1392 tsField->field_ref = field->getId(); 1343 tsField->setVirtualVariableGroup(field->getVirtualVariableGroup()); 1393 1394 // Add variables originating from file and targeted to timeserie field 1395 for (size_t k = 0; k < fieldVars.size(); k++) 1396 tsField->getVirtualVariableGroup()->addChild(fieldVars[k]); 1397 1398 vars = field->getAllVariables(); 1399 for (size_t k = 0; k < vars.size(); k++) 1400 { 1401 CVariable* var = vars[k]; 1402 1403 // Add variables originating from field and targeted to timeserie field 1404 if (var->ts_target.isEmpty() 1405 || var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both) 1406 tsField->getVirtualVariableGroup()->addChild(var); 1407 1408 // Add variables originating from field and targeted to timeserie file 1409 if (!var->ts_target.isEmpty() 1410 && (var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both)) 1411 tsFile->getVirtualVariableGroup()->addChild(var); 1412 } 1344 1413 1345 1414 tsFile->solveFieldRefInheritance(true); … … 1456 1525 void CContext::updateCalendar(int step) 1457 1526 { 1458 info(50) << "Context "<< this->getId() <<"updateCalendar : before : " << calendar->getCurrentDate() << endl;1527 info(50) << "updateCalendar : before : " << calendar->getCurrentDate() << endl; 1459 1528 calendar->update(step); 1460 info(50) <<"Context "<< this->getId() << " updateCalendar : after : " << calendar->getCurrentDate() << endl; 1461 1529 info(50) << "updateCalendar : after : " << calendar->getCurrentDate() << endl; 1530 #ifdef XIOS_MEMTRACK_LIGHT 1531 info(50) << " Current memory used by XIOS : "<< MemTrack::getCurrentMemorySize()*1.0/(1024*1024)<<" Mbyte, at timestep "<<step<<" of context "<<this->getId()<<endl ; 1532 #endif 1462 1533 if (hasClient) 1463 1534 { … … 1537 1608 1538 1609 void CContext::sendRegistry(void) 1539 { 1610 { 1540 1611 registryOut->hierarchicalGatherRegistry() ; 1541 1612
Note: See TracChangeset
for help on using the changeset viewer.