Changeset 1920 for XIOS


Ignore:
Timestamp:
07/20/20 16:05:09 (4 years ago)
Author:
yushan
Message:

trunk : raise error if freq_op > output_freq

Location:
XIOS/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/generic_testcase/context_atm.xml

    r1919 r1920  
    299299 
    300300  <file_definition  type="one_file" > 
    301     <file id="atm_output_reduction" output_freq="6ts" type="one_file" enabled="true"> 
     301    <file id="atm_output_reduction" output_freq="6ts" type="one_file" enabled="true" split_freq="12ts"  > 
    302302       <field field_ref="field2D" freq_op="3ts" operation="average" name="field2D_average"/> 
    303303       <field field_ref="field2D" freq_op="3ts" operation="accumulate" name="field2D_sum"/> 
  • XIOS/trunk/src/calendar_util.cpp

    r1472 r1920  
    4545    } 
    4646 
     47    bool operator<(const CDuration& dur1, const CDuration& dur2) 
     48    { 
     49      if (dur1.year < dur2.year) 
     50        return true; 
     51      else if (dur1.year == dur2.year) 
     52      { 
     53        if (dur1.month < dur2.month) 
     54          return true; 
     55        else if (dur1.month == dur2.month) 
     56        { 
     57          if (dur1.day < dur2.day) 
     58            return true; 
     59          else if (dur1.day == dur2.day) 
     60          { 
     61            if (dur1.hour < dur2.hour) 
     62              return true; 
     63            else if (dur1.hour == dur2.hour) 
     64            { 
     65              if (dur1.minute < dur2.minute) 
     66                return true; 
     67              else if (dur1.minute == dur2.minute) 
     68              { 
     69                if (dur1.second < dur2.second) 
     70                  return true; 
     71                else if (dur1.second == dur2.second) 
     72                  return (dur1.timestep < dur2.timestep); 
     73              } 
     74            } 
     75          } 
     76        } 
     77      } 
     78      return false; 
     79    } 
     80 
     81 
     82    bool operator>(const CDuration& dur1, const CDuration& dur2) 
     83    { 
     84      if (dur1.year > dur2.year) 
     85        return true; 
     86      else if (dur1.year == dur2.year) 
     87      { 
     88        if (dur1.month > dur2.month) 
     89          return true; 
     90        else if (dur1.month == dur2.month) 
     91        { 
     92          if (dur1.day > dur2.day) 
     93            return true; 
     94          else if (dur1.day == dur2.day) 
     95          { 
     96            if (dur1.hour > dur2.hour) 
     97              return true; 
     98            else if (dur1.hour == dur2.hour) 
     99            { 
     100              if (dur1.minute > dur2.minute) 
     101                return true; 
     102              else if (dur1.minute == dur2.minute) 
     103              { 
     104                if (dur1.second > dur2.second) 
     105                  return true; 
     106                else if (dur1.second == dur2.second) 
     107                  return (dur1.timestep > dur2.timestep); 
     108              } 
     109            } 
     110          } 
     111        } 
     112      } 
     113      return false; 
     114    } 
     115 
     116 
     117 
    47118    //----------------------------------------------------------------- 
    48119 
  • XIOS/trunk/src/calendar_util.hpp

    r643 r1920  
    1717      CDuration operator-(const CDuration& ddr); 
    1818 
     19      bool operator>(const CDuration& ddr, const CDuration& dr); 
     20      bool operator<(const CDuration& ddr, const CDuration& dr); 
     21       
    1922      CDate operator+(const CDate& dt, const CDuration& dr); // Non testée. 
    2023      CDate operator-(const CDate& dt, const CDuration& dr); 
  • XIOS/trunk/src/node/field.cpp

    r1876 r1920  
    20502050         freq_op.setValue(TimeStep); 
    20512051     } 
     2052     else 
     2053     { 
     2054       //if(file->output_freq.getValue() < freq_op.getValue()) 
     2055       if(freq_op.getValue() > file->output_freq.getValue() ) 
     2056       { 
     2057         ERROR("void CField::checkTimeAttributes(void)", 
     2058               << "output file has output_freq < freq_op" << std::endl 
     2059               << "field_id = "<< getId() << std::endl 
     2060               << "file_id = "<< file->getId() << std::endl 
     2061               << "output_freq = "<< file->output_freq.getValue() << std::endl 
     2062               << "freq_op = "<< freq_op.getValue() << std::endl) 
     2063       } 
     2064     } 
    20522065     if (freq_offset.isEmpty()) 
    20532066       freq_offset.setValue(isFieldRead ? NoneDu : (freq_op.getValue() - TimeStep)); 
Note: See TracChangeset for help on using the changeset viewer.