Ignore:
Timestamp:
02/01/17 10:10:40 (4 years ago)
Author:
rlacroix
Message:

Add a new attribute "ts_target" for variables.

It allows choosing the target of the variable when using timeseries. Possible values are:

  • field
  • file
  • both
  • none.

If no value is set then the default behavior is used, that is "field" for field variables and "file" for file variables.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/context.cpp

    r1033 r1041  
    10021002       CFile* file = allFiles[i]; 
    10031003 
     1004       std::vector<CVariable*> fileVars, fieldVars, vars = file->getAllVariables(); 
     1005       for (size_t k = 0; k < vars.size(); k++) 
     1006       { 
     1007         CVariable* var = vars[k]; 
     1008 
     1009         if (var->ts_target.isEmpty() 
     1010              || var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both) 
     1011           fileVars.push_back(var); 
     1012 
     1013         if (!var->ts_target.isEmpty() 
     1014              && (var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both)) 
     1015           fieldVars.push_back(var); 
     1016       } 
     1017 
    10041018       if (!file->timeseries.isEmpty() && file->timeseries != CFile::timeseries_attr::none) 
    10051019       { 
     
    10151029             CFile* tsFile = CFile::create(); 
    10161030             tsFile->duplicateAttributes(file); 
    1017              tsFile->setVirtualVariableGroup(file->getVirtualVariableGroup()); 
     1031 
     1032             // Add variables originating from file and targeted to timeserie file 
     1033             for (size_t k = 0; k < fileVars.size(); k++) 
     1034               tsFile->getVirtualVariableGroup()->addChild(fileVars[k]); 
    10181035 
    10191036             tsFile->name = tsPrefix + "_"; 
     
    10301047             CField* tsField = tsFile->addField(); 
    10311048             tsField->field_ref = field->getId(); 
    1032              tsField->setVirtualVariableGroup(field->getVirtualVariableGroup()); 
     1049 
     1050             // Add variables originating from file and targeted to timeserie field 
     1051             for (size_t k = 0; k < fieldVars.size(); k++) 
     1052               tsField->getVirtualVariableGroup()->addChild(fieldVars[k]); 
     1053 
     1054             vars = field->getAllVariables(); 
     1055             for (size_t k = 0; k < vars.size(); k++) 
     1056             { 
     1057               CVariable* var = vars[k]; 
     1058 
     1059               // Add variables originating from field and targeted to timeserie field 
     1060               if (var->ts_target.isEmpty() 
     1061                    || var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both) 
     1062                 tsField->getVirtualVariableGroup()->addChild(var); 
     1063 
     1064               // Add variables originating from field and targeted to timeserie file 
     1065               if (!var->ts_target.isEmpty() 
     1066                    && (var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both)) 
     1067                 tsFile->getVirtualVariableGroup()->addChild(var); 
     1068             } 
    10331069 
    10341070             tsFile->solveFieldRefInheritance(true); 
Note: See TracChangeset for help on using the changeset viewer.