- Timestamp:
- 03/27/12 10:49:42 (12 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/calendar.cpp
r300 r334 12 12 : CObject() 13 13 , initDate(*this) 14 , currentDate(initDate) 15 { /* Ne rien faire de plus */ } 14 , timeOrigin(*this) 15 , currentDate(*this) 16 { } 16 17 18 CCalendar::CCalendar(const StdString & id) 19 : CObject(id) 20 , initDate(*this) 21 , timeOrigin(*this) 22 , currentDate(*this) 23 { } 24 17 25 CCalendar::CCalendar(const StdString & id, 18 26 int yr, int mth, int d , 19 27 int hr, int min, int sec) 20 28 : CObject(id) 21 , initDate(*this, yr, mth, d, hr, min, sec) 22 , currentDate(initDate) 23 { /* Ne rien faire de plus */ } 29 , initDate(*this) 30 , timeOrigin(*this) 31 , currentDate(*this) 32 { 33 initializeDate(yr, mth, d, hr, min, sec) ; 34 } 24 35 25 36 CCalendar::CCalendar(const StdString & id, const StdString & dateStr) 26 37 : CObject(id) 27 38 , initDate(CDate::FromString(dateStr, *this)) 39 , timeOrigin(initDate) 28 40 , currentDate(initDate) 29 { /* Ne rien faire de plus */ } 41 { 42 initializeDate(dateStr) ; 43 } 44 45 CCalendar::CCalendar(const StdString & id, const StdString & dateStr, const StdString & timeOriginStr) 46 : CObject(id) 47 , initDate(*this) 48 , timeOrigin(*this) 49 , currentDate(*this) 50 { 51 initializeDate(dateStr, timeOriginStr) ; 52 } 53 54 55 void CCalendar::initializeDate( int yr, int mth, int d , 56 int hr, int min, int sec) 57 { 58 initDate=CDate(*this,yr, mth, d, hr, min, sec) ; 59 timeOrigin=initDate; 60 currentDate=initDate ; 61 } 62 63 void CCalendar::initializeDate(const StdString & dateStr) 64 { 65 initDate=CDate::FromString(dateStr, *this) ; 66 timeOrigin=initDate ; 67 currentDate=initDate ; 68 } 69 70 void CCalendar::initializeDate(const StdString & dateStr, const StdString & timeOriginStr) 71 { 72 initDate=CDate::FromString(dateStr, *this) ; 73 timeOrigin=CDate::FromString(timeOriginStr, *this) ; 74 currentDate=initDate ; 75 } 76 30 77 31 78 CCalendar::~CCalendar(void) … … 62 109 const CDuration & CCalendar::getTimeStep(void) const { return (this->timestep); } 63 110 const CDate & CCalendar::getInitDate(void) const { return (this->initDate); } 111 const CDate & CCalendar::getTimeOrigin(void) const { return (this->timeOrigin); } 64 112 CDate & CCalendar::getCurrentDate(void) { return (this->currentDate); } 65 113 -
XIOS/trunk/src/calendar.hpp
r219 r334 35 35 /// Constructeurs /// 36 36 CCalendar(void); 37 CCalendar(const StdString & id) ; 37 38 CCalendar(const StdString & id, 38 int yr = 0, int mth = 1, int d = 1,39 int yr, int mth, int d, 39 40 int hr = 0, int min = 0, int sec = 0); 40 41 CCalendar(const StdString & id, const StdString & dateStr); 42 CCalendar(const StdString & id, const StdString & dateStr, const StdString & timeOrigin); 43 41 44 CCalendar(const CCalendar & calendar); // Not implemented yet. 42 45 CCalendar(const CCalendar * const calendar); // Not implemented yet. … … 59 62 const CDuration & getTimeStep(void) const; 60 63 const CDate & getInitDate(void) const; 61 CDate & getCurrentDate(void); 64 const CDate & getTimeOrigin(void) const; 65 CDate & getCurrentDate(void); 62 66 63 67 public : 64 68 65 69 //------------------------------------------------------------ 66 virtual int getMonthLength(const CDate & date) const ;70 virtual int getMonthLength(const CDate & date) const ; 67 71 68 72 virtual StdString getType(void) const; … … 79 83 80 84 virtual const StdString getMonthShortName(int month_id) const; 85 void initializeDate(int yr, int mth, int d, int hr = 0, int min = 0, int sec = 0) ; 86 void initializeDate(const StdString & dateStr); 87 void initializeDate(const StdString & dateStr, const StdString & timeOrigin); 81 88 82 89 //------------------------------------------------------------ … … 85 92 86 93 /// Propriétés privées /// 87 const CDate initDate; 94 CDate initDate; 95 CDate timeOrigin; 88 96 CDate currentDate; 89 97 CDuration timestep; -
XIOS/trunk/src/config/context_attribute.conf
r278 r334 1 1 DECLARE_ATTRIBUTE(StdString, calendar_type) 2 2 DECLARE_ATTRIBUTE(StdString, start_date) 3 DECLARE_ATTRIBUTE(StdString, time_origin) 3 4 DECLARE_ATTRIBUTE(StdString, timestep) 4 5 DECLARE_ATTRIBUTE(StdString, output_dir) -
XIOS/trunk/src/date.cpp
r321 r334 1 1 #include "date.hpp" 2 2 #include "calendar.hpp" 3 #include "calendar_type.hpp" 3 4 #include <boost/date_time/gregorian/gregorian.hpp> 4 5 #include <boost/date_time/posix_time/posix_time.hpp> … … 12 13 { 13 14 /// ////////////////////// 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 14 21 CDate::CDate(const CCalendar& calendar, 15 22 int yr, int mth, int d, … … 102 109 } 103 110 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 ... 105 112 { 106 113 // Todo : Tester si la date courante est supérieure à la date initiale. … … 111 118 (relCalendar.getId().compare("AllLeap") == 0) || 112 119 (relCalendar.getId().compare("NoLeap") == 0)) 113 return (retvalue + (getYear() - relCalendar.get InitDate().getYear())120 return (retvalue + (getYear() - relCalendar.getTimeOrigin().getYear()) 114 121 * relCalendar.getYearTotalLength(*this)); 115 122 116 for(CDate _d(relCalendar.get InitDate());123 for(CDate _d(relCalendar.getTimeOrigin()); 117 124 _d.getYear() < getYear(); _d.setYear(_d.getYear()+1)) 118 125 retvalue += relCalendar.getYearTotalLength(_d); … … 133 140 // Vérification de la valeur du jour. 134 141 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); } 137 144 138 145 // Vérification de la valeur de l'heure. -
XIOS/trunk/src/date.hpp
r321 r334 20 20 /// Constructeurs /// 21 21 CDate(void); // Not implemented yet 22 CDate(const CCalendar & cal ,23 int yr = 0, int mth = 1, int d = 1,24 int hr = 0, int min = 0, int sec = 0);22 CDate(const CCalendar & cal); 23 CDate(const CCalendar & cal,int yr, int mth, int d, 24 int hr = 0, int min = 0, int sec = 0); 25 25 CDate(const CDate & odate); 26 26 CDate(const CDate * const odate); // Not implemented yet … … 34 34 friend StdIStream & operator>>(StdIStream & in, CDate & date); // Non testée. 35 35 36 operator Time(void) ; // Retourne le nombre de secondes écoulées depuis la date initiale définie dans le calendrier.36 operator Time(void) const; // Retourne le nombre de secondes écoulées depuis la date d'origine définie dans le calendrier. 37 37 38 38 /// Traitements /// -
XIOS/trunk/src/date/allleap.cpp
r293 r334 8 8 9 9 CAllLeapCalendar::CAllLeapCalendar(const StdString & dateStr) 10 : CCalendar("AllLeap", dateStr) 11 { /* Ne rien faire de plus */ } 10 : CCalendar("AllLeap") 11 { initializeDate(dateStr); } 12 13 CAllLeapCalendar::CAllLeapCalendar(const StdString & dateStr,const StdString & timeOriginStr) 14 : CCalendar("AllLeap") 15 { initializeDate(dateStr, timeOriginStr); } 12 16 13 17 CAllLeapCalendar::CAllLeapCalendar(int yr, int mth, int d, 14 18 int hr, int min, int sec) 15 : CCalendar("AllLeap" , yr, mth, d, hr, min, sec)16 { /* Ne rien faire de plus */}19 : CCalendar("AllLeap") 20 { initializeDate(yr, mth, d, hr, min, sec) ; } 17 21 18 22 CAllLeapCalendar::~CAllLeapCalendar(void) -
XIOS/trunk/src/date/allleap.hpp
r219 r334 19 19 20 20 /// Constructeur /// 21 CAllLeapCalendar(void); // Not implemented yet.21 // CAllLeapCalendar(void); // Not implemented yet. 22 22 CAllLeapCalendar(const StdString & dateStr); 23 CAllLeapCalendar(const StdString & dateStr,const StdString & timeOriginStr); 23 24 CAllLeapCalendar(int yr = 0, int mth = 1, int d = 1, 24 25 int hr = 0, int min = 0, int sec = 0); -
XIOS/trunk/src/date/d360.cpp
r293 r334 8 8 9 9 CD360Calendar::CD360Calendar(const StdString & dateStr) 10 : CCalendar("D360") 11 { initializeDate(dateStr); } 12 13 CD360Calendar::CD360Calendar(const StdString & dateStr,const StdString & timeOriginStr) 10 14 : CCalendar("D360", dateStr) 11 { /* Ne rien faire de plus */}15 { initializeDate(dateStr, timeOriginStr); } 12 16 13 17 CD360Calendar::CD360Calendar(int yr, int mth, int d, 14 18 int hr, int min, int sec) 15 : CCalendar("D360" , yr, mth, d, hr, min, sec)16 { /* Ne rien faire de plus */}19 : CCalendar("D360") 20 { initializeDate(yr, mth, d, hr, min, sec) ; } 17 21 18 22 CD360Calendar::~CD360Calendar(void) -
XIOS/trunk/src/date/d360.hpp
r219 r334 21 21 CD360Calendar(void); // Not implemented yet. 22 22 CD360Calendar(const StdString & dateStr); 23 CD360Calendar(const StdString & dateStr,const StdString & timeOriginStr); 23 24 CD360Calendar(int yr = 0, int mth = 1, int d = 1, 24 25 int hr = 0, int min = 0, int sec = 0); -
XIOS/trunk/src/date/gregorian.cpp
r219 r334 8 8 9 9 CGregorianCalendar::CGregorianCalendar(const StdString & dateStr) 10 : CCalendar("Gregorian", dateStr) 11 { /* Ne rien faire de plus */ } 10 : CCalendar("Gregorian") 11 { initializeDate(dateStr); } 12 13 CGregorianCalendar::CGregorianCalendar(const StdString & dateStr,const StdString & timeOriginStr) 14 : CCalendar("Gregorian") 15 { initializeDate(dateStr, timeOriginStr); } 12 16 13 17 CGregorianCalendar::CGregorianCalendar(int yr, int mth, int d, 14 18 int hr, int min, int sec) 15 : CCalendar("Gregorian" , yr, mth, d, hr, min, sec)16 { /* Ne rien faire de plus */}19 : CCalendar("Gregorian") 20 { initializeDate(yr, mth, d, hr, min, sec) ; } 17 21 18 22 CGregorianCalendar::~CGregorianCalendar(void) -
XIOS/trunk/src/date/gregorian.hpp
r219 r334 19 19 20 20 /// Constructeur /// 21 CGregorianCalendar(void); // Not implemented yet.21 // CGregorianCalendar(void); // Not implemented yet. 22 22 CGregorianCalendar(const StdString & dateStr); 23 CGregorianCalendar(const StdString & dateStr,const StdString & timeOriginStr); 23 24 CGregorianCalendar(int yr = 0, int mth = 1, int d = 1, 24 25 int hr = 0, int min = 0, int sec = 0); -
XIOS/trunk/src/date/julian.cpp
r219 r334 8 8 9 9 CJulianCalendar::CJulianCalendar(const StdString & dateStr) 10 : CCalendar("Julian", dateStr) 11 { /* Ne rien faire de plus */ } 10 : CCalendar("Julian") 11 { initializeDate(dateStr); } 12 13 CJulianCalendar::CJulianCalendar(const StdString & dateStr,const StdString & timeOriginStr) 14 : CCalendar("Julian") 15 { initializeDate(dateStr, timeOriginStr); } 12 16 13 17 CJulianCalendar::CJulianCalendar(int yr, int mth, int d, 14 18 int hr, int min, int sec) 15 : CCalendar("Julian" , yr, mth, d, hr, min, sec)16 { /* Ne rien faire de plus */}19 : CCalendar("Julian") 20 { initializeDate(yr, mth, d, hr, min, sec) ; } 17 21 18 22 CJulianCalendar::~CJulianCalendar(void) -
XIOS/trunk/src/date/julian.hpp
r219 r334 19 19 20 20 /// Constructeur /// 21 CJulianCalendar(void); // Not implemented yet.21 // CJulianCalendar(void); // Not implemented yet. 22 22 CJulianCalendar(const StdString & dateStr); 23 CJulianCalendar(const StdString & dateStr,const StdString & timeOriginStr); 23 24 CJulianCalendar(int yr = 0, int mth = 1, int d = 1, 24 25 int hr = 0, int min = 0, int sec = 0); -
XIOS/trunk/src/date/noleap.cpp
r219 r334 1 1 #include "noleap.hpp" 2 #include "calendar.hpp" 2 3 3 4 namespace xmlioserver … … 9 10 CNoLeapCalendar::CNoLeapCalendar(const StdString & dateStr) 10 11 : CCalendar("NoLeap", dateStr) 11 { /* Ne rien faire de plus */ } 12 { initializeDate(dateStr); } 13 14 CNoLeapCalendar::CNoLeapCalendar(const StdString & dateStr,const StdString & timeOriginStr) 15 : CCalendar("NoLeap", dateStr, timeOriginStr) 16 { initializeDate(dateStr, timeOriginStr); } 12 17 13 18 CNoLeapCalendar::CNoLeapCalendar(int yr, int mth, int d, 14 19 int hr, int min, int sec) 15 : CCalendar("NoLeap", yr, mth, d, hr, min, sec) 16 { /* Ne rien faire de plus */ } 20 : CCalendar("NoLeap") 21 { initializeDate(yr, mth, d, hr, min, sec) ; } 22 17 23 18 24 CNoLeapCalendar::~CNoLeapCalendar(void) -
XIOS/trunk/src/date/noleap.hpp
r219 r334 19 19 20 20 /// Constructeur /// 21 CNoLeapCalendar(void); // Not implemented yet.21 // CNoLeapCalendar(void); // Not implemented yet. 22 22 CNoLeapCalendar(const StdString & dateStr); 23 CNoLeapCalendar(const StdString & dateStr,const StdString & timeOriginStr); 23 24 CNoLeapCalendar(int yr = 0, int mth = 1, int d = 1, 24 25 int hr = 0, int min = 0, int sec = 0); -
XIOS/trunk/src/node/context.cpp
r321 r334 87 87 << "Impossible de définir un calendrier (un attribut est manquant)."); 88 88 89 #define DECLARE_CALENDAR(MType , mtype) \ 90 if (calendar_type.getValue().compare(#mtype) == 0) \ 91 { \ 92 this->calendar = boost::shared_ptr<date::CCalendar> \ 93 (new date::C##MType##Calendar(start_date.getValue())); \ 94 if (!this->timestep.isEmpty()) \ 95 this->calendar->setTimeStep \ 96 (date::CDuration::FromString(this->timestep.getValue())); \ 97 return; \ 89 #define DECLARE_CALENDAR(MType , mtype) \ 90 if (calendar_type.getValue().compare(#mtype) == 0) \ 91 { \ 92 if (time_origin.isEmpty()) \ 93 this->calendar = boost::shared_ptr<date::CCalendar> \ 94 (new date::C##MType##Calendar(start_date.getValue())); \ 95 else this->calendar = boost::shared_ptr<date::CCalendar> \ 96 (new date::C##MType##Calendar(start_date.getValue(),time_origin.getValue())); \ 97 if (!this->timestep.isEmpty()) \ 98 this->calendar->setTimeStep \ 99 (date::CDuration::FromString(this->timestep.getValue())); \ 100 return; \ 98 101 } 99 102 #include "calendar_type.conf" … … 535 538 void CContext::updateCalendar(int step) 536 539 { 540 info(50)<<"updateCalendar : before : "<<calendar->getCurrentDate()<<endl ; 537 541 calendar->update(step) ; 542 info(50)<<"updateCalendar : after : "<<calendar->getCurrentDate()<<endl ; 538 543 } 539 544 -
XIOS/trunk/src/node/field.cpp
r321 r334 178 178 *last_Write_srv = writeDate; 179 179 writeField() ; 180 *lastlast_Write_srv=*last_Write_srv; 180 181 } 181 182 } … … 384 385 this->freq_write_srv = 385 386 CDuration::FromString(this->file->output_freq.getValue()); 387 this->lastlast_Write_srv = boost::shared_ptr<xmlioserver::date::CDate> 388 (new date::CDate(context->getCalendar()->getInitDate())); 386 389 this->last_Write_srv = boost::shared_ptr<xmlioserver::date::CDate> 387 390 (new date::CDate(context->getCalendar()->getInitDate())); -
XIOS/trunk/src/node/field.hpp
r327 r334 141 141 StdSize nstep; 142 142 boost::shared_ptr<date::CDate> last_Write, last_operation; 143 boost::shared_ptr<date::CDate> last _Write_srv, last_operation_srv;143 boost::shared_ptr<date::CDate> lastlast_Write_srv,last_Write_srv, last_operation_srv; 144 144 145 145 boost::shared_ptr<func::CFunctor> foperation; -
XIOS/trunk/src/output/nc4_data_output.cpp
r321 r334 483 483 // ARRAY(double, 1) field_data = field->data_srv; 484 484 ARRAY_CREATE(time_data, double, 1, [1]); 485 (*time_data)[0] = date::Time(*field->last_Write_srv); 486 485 if (field->operation.getValue()=="instant") (*time_data)[0] = date::Time(*field->last_Write_srv) 486 -date::Time(context->calendar->getTimeOrigin()); 487 else (*time_data)[0] = (date::Time(*field->last_Write_srv)+date::Time(*field->lastlast_Write_srv))/2 488 -date::Time(context->calendar->getTimeOrigin()); 489 487 490 if (grid->hasAxis()) // 3D 488 491 { … … 574 577 { 575 578 SuperClassWriter::addVariable(axisid, NC_DOUBLE, dims); 576 date::CDate initDate=cal->getInitDate() ;579 date::CDate timeOrigin=cal->getTimeOrigin() ; 577 580 // StdOStringStream oss2; 578 581 // oss2<<initDate.getYear()<<"-"<<initDate.getMonth()<<"-"<<initDate.getDay()<<" " 579 582 // <<initDate.getHour()<<"-"<<initDate.getMinute()<<"-"<<initDate.getSecond() ; 580 583 // StdString strInitdate=oss2.str() ; 581 StdString str Initdate=initDate.toString() ;584 StdString strTimeOrigin=timeOrigin.toString() ; 582 585 this->writeTimeAxisAttributes 583 586 (axisid, cal->getType(), 584 StdString("seconds since ").append(str Initdate),585 str Initdate);587 StdString("seconds since ").append(strTimeOrigin), 588 strTimeOrigin); 586 589 } 587 590 -
XIOS/trunk/src/test/test.cpp
r316 r334 5 5 #include <boost/date_time/gregorian/gregorian.hpp> 6 6 #include <boost/date_time/posix_time/posix_time.hpp> 7 #include "calendar_type.hpp" 8 #include "date.hpp" 9 #include "calendar_util.hpp" 7 10 8 11 using namespace std ; 9 12 using namespace boost::posix_time ; 10 13 using namespace boost::gregorian ; 14 using namespace xmlioserver; 15 using namespace date ; 11 16 12 17 int main(void) 13 18 { 14 ptime t(time_from_string("2012-02-30 15:24")) ; 15 16 17 std::cout << to_simple_string(t) << std::endl; 18 19 // ptime t(time_from_string("2012-02-30 15:24")) ; 20 // std::cout << to_simple_string(t) << std::endl; 21 CGregorianCalendar MyCalendar("2011-03-01 00:00") ; 22 cout<<MyCalendar.getInitDate()<<endl; 23 cout<<MyCalendar.getCurrentDate()<<endl ; 24 cout<<MyCalendar.getCurrentDate()-1*Day<<endl ; 19 25 return 1 ; 20 26 }
Note: See TracChangeset
for help on using the changeset viewer.