Ignore:
Timestamp:
03/27/12 10:49:42 (12 years ago)
Author:
ymipsl
Message:
  • Add new attribut : time_origin for time axis origin which appear in nectdf file
  • centered time averaging for time axis
  • correct bug in calendar due to call of virtual function in the constructor

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/date.cpp

    r321 r334  
    11#include "date.hpp" 
    22#include "calendar.hpp" 
     3#include "calendar_type.hpp" 
    34#include <boost/date_time/gregorian/gregorian.hpp> 
    45#include <boost/date_time/posix_time/posix_time.hpp> 
     
    1213   { 
    1314      /// ////////////////////// Définitions ////////////////////// /// 
     15      CDate::CDate(const CCalendar& calendar) 
     16         : relCalendar(calendar) 
     17         , year(0), month(1) , day(1) 
     18         , hour(0), minute(0), second(0) 
     19      {   } 
     20       
    1421      CDate::CDate(const CCalendar& calendar, 
    1522                   int yr, int mth, int d, 
     
    102109      } 
    103110 
    104       CDate::operator Time(void) // Non vérifiée, pas optimisée ... 
     111      CDate::operator Time(void) const // Non vérifiée, pas optimisée ... 
    105112      { 
    106113         // Todo : Tester si la date courante est supérieure à la date initiale. 
     
    111118             (relCalendar.getId().compare("AllLeap") == 0) || 
    112119             (relCalendar.getId().compare("NoLeap")  == 0)) 
    113          return (retvalue + (getYear() - relCalendar.getInitDate().getYear()) 
     120         return (retvalue + (getYear() - relCalendar.getTimeOrigin().getYear()) 
    114121                                       * relCalendar.getYearTotalLength(*this)); 
    115122 
    116          for(CDate _d(relCalendar.getInitDate()); 
     123         for(CDate _d(relCalendar.getTimeOrigin()); 
    117124            _d.getYear() < getYear(); _d.setYear(_d.getYear()+1)) 
    118125            retvalue += relCalendar.getYearTotalLength(_d); 
     
    133140         // Vérification de la valeur du jour. 
    134141         if (day    < 1) { retValue = false; month  = 1; } 
    135          if (day    > relCalendar.getMonthLength(*this)) 
    136          { retValue = false; day = relCalendar.getMonthLength(*this); } 
     142         if (day    > (&relCalendar)->getMonthLength(*this)) 
     143         { retValue = false; day = (&relCalendar)->getMonthLength(*this); } 
    137144 
    138145         // Vérification de la valeur de l'heure. 
Note: See TracChangeset for help on using the changeset viewer.