Ignore:
Timestamp:
01/22/18 17:40:41 (6 years ago)
Author:
ymipsl
Message:

Bug fix when using instant filter on a field defined outside a file.

YM

Location:
XIOS/dev/XIOS_DEV_CMIP6/src/node
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/field.cpp

    r1387 r1405  
    10731073         else if (file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read) 
    10741074         { 
    1075            checkAttributes(); 
     1075           checkTimeAttributes(); 
    10761076           instantDataFilter = serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true, 
    10771077                                                                                                       detectMissingValues, defaultValue)); 
     
    11601160         if (!serverSourceFilter) 
    11611161         { 
    1162            checkAttributes(); 
     1162           checkTimeAttributes(); 
    11631163           serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true, 
    11641164                                                                                   detectMissingValues, defaultValue)); 
     
    12081208               << "An operation must be defined for field \"" << getId() << "\"."); 
    12091209 
    1210        checkAttributes(); 
     1210       checkTimeAttributes(&outFreq); 
    12111211 
    12121212       const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 
     
    12471247               << "An operation must be defined for field \"" << getId() << "\"."); 
    12481248 
    1249        checkAttributes(); 
     1249       checkTimeAttributes(&outFreq); 
    12501250 
    12511251       const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 
     
    16491649    * Check on freq_off and freq_op attributes. 
    16501650    */ 
    1651    void CField::checkAttributes(void) 
    1652    { 
    1653      bool isFieldRead = file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read; 
     1651   void CField::checkTimeAttributes(CDuration* freqOp) 
     1652   { 
     1653     bool isFieldRead  = file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read; 
     1654     bool isFieldWrite = file && ( file->mode.isEmpty() ||  file->mode == CFile::mode_attr::write); 
    16541655     if (isFieldRead && operation.getValue() != "instant") 
    1655        ERROR("void CField::checkAttributes(void)", 
     1656       ERROR("void CField::checkTimeAttributes(void)", 
    16561657             << "Unsupported operation for field '" << getFieldOutputName() << "'." << std::endl 
    16571658             << "Currently only \"instant\" is supported for fields read from file.") 
     
    16601661     { 
    16611662       if (operation.getValue() == "instant") 
    1662          freq_op.setValue(file->output_freq.getValue()); 
     1663       { 
     1664         if (isFieldRead || isFieldWrite) freq_op.setValue(file->output_freq.getValue()); 
     1665         else freq_op=*freqOp ; 
     1666       } 
    16631667       else 
    16641668         freq_op.setValue(TimeStep); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/field.hpp

    r1358 r1405  
    137137 
    138138         /// Vérifications /// 
    139          void checkAttributes(void); 
     139         void checkTimeAttributes(CDuration* freqOp=NULL); 
    140140 
    141141         void buildFilterGraph(CGarbageCollector& gc, bool enableOutput); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/file.cpp

    r1358 r1405  
    11671167       CField* field = this->enabledFields[i]; 
    11681168       this->sendAddField(field->getId(), client); 
    1169        field->checkAttributes(); 
     1169       field->checkTimeAttributes(); 
    11701170       field->sendAllAttributesToServer(client); 
    11711171       field->sendAddAllVariables(client); 
Note: See TracChangeset for help on using the changeset viewer.