Ignore:
Timestamp:
12/21/18 09:19:12 (5 years ago)
Author:
yushan
Message:

working branch @1608 with bug fix @1628

Location:
XIOS/dev/dev_trunk_omp/src
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_trunk_omp/src/calendar.cpp

    r1629 r1630  
    119119        this->timestep = timestep; 
    120120      } 
    121 /* 
     121 
    122122      int CCalendar::getStep(void) const 
    123123      { 
    124124        return step; 
    125125      } 
    126 */ 
     126 
    127127      const CDate& CCalendar::update(int step) 
    128128      { 
     
    153153      //----------------------------------------------------------------- 
    154154 
    155       //const CDuration& CCalendar::getTimeStep(void) const { return this->timestep; } 
    156       //const CDate& CCalendar::getInitDate(void) const     { return this->initDate; } 
    157       //const CDate& CCalendar::getTimeOrigin(void) const   { return this->timeOrigin; } 
    158       //const CDate& CCalendar::getCurrentDate(void) const  { return this->currentDate; } 
     155      const CDuration& CCalendar::getTimeStep(void) const { return this->timestep; } 
     156      const CDate& CCalendar::getInitDate(void) const     { return this->initDate; } 
     157      const CDate& CCalendar::getTimeOrigin(void) const   { return this->timeOrigin; } 
     158      const CDate& CCalendar::getCurrentDate(void) const  { return this->currentDate; } 
    159159 
    160160      //----------------------------------------------------------------- 
     
    169169      StdString CCalendar::getType(void) const { return StdString(this->getId()); } 
    170170 
    171       //int CCalendar::getYearTotalLength(const CDate& date) const { return (365 * 86400); } 
     171      int CCalendar::getYearTotalLength(const CDate& date) const { return (365 * 86400); } 
    172172 
    173173      //int CCalendar::getYearLength  (void) const { return 12; } 
     
    177177      //int CCalendar::getDayLengthInSeconds(void) const { return getDayLength() * getHourLength() * getMinuteLength(); } 
    178178 
    179       //bool CCalendar::hasLeapYear() const { return false; } 
    180  
    181       /*StdString CCalendar::getMonthName(int monthId) const 
     179      bool CCalendar::hasLeapYear() const { return false; } 
     180 
     181      StdString CCalendar::getMonthName(int monthId) const 
    182182      { 
    183183        static const StdString MonthNames[] = 
     
    185185            "july",    "august",   "september", "october", "november", "december" }; 
    186186        return MonthNames[monthId - 1]; 
    187       }*/ 
     187      } 
    188188 
    189189      const StdString CCalendar::getMonthShortName(int monthId) const 
  • XIOS/dev/dev_trunk_omp/src/calendar.hpp

    r1629 r1630  
    5252 
    5353            /// Mutateur /// 
    54             void setTimeStep(const CDuration& timestep) ; 
     54            void setTimeStep(const CDuration& timestep); 
    5555            void setInitDate(const CDate& initDate); 
    5656            void setTimeOrigin(const CDate& timeOrigin); 
     
    6060 
    6161            /// Accesseurs /// 
    62             const CDuration& getTimeStep(void) const { return this->timestep; }; 
    63             const CDate& getInitDate(void) const { return this->initDate; }; 
    64             const CDate& getTimeOrigin(void) const { return this->timeOrigin; }; 
    65             const CDate& getCurrentDate(void) const { return this->currentDate; }; 
     62            const CDuration& getTimeStep(void) const; 
     63            const CDate& getInitDate(void) const; 
     64            const CDate& getTimeOrigin(void) const; 
     65            const CDate& getCurrentDate(void) const; 
    6666 
    6767         public : 
     
    7070            virtual StdString getType(void) const; 
    7171 
    72             int getStep(void) const {return step;}; 
     72            int getStep(void) const; 
    7373 
    7474            inline int getMonthLength(const CDate& date) const 
     
    7878            }; 
    7979 
    80             //virtual int getYearTotalLength(const CDate& date) const; // Retourne la durée d'une année en seconde. 
    81             inline virtual int getYearTotalLength(const CDate& date) const { return (365 * 86400); } ; // Retourne la durée d'une année en seconde. 
     80            virtual int getYearTotalLength(const CDate& date) const; // Retourne la durée d'une année en seconde. 
    8281 
    8382            //virtual int getYearLength  (void) const; // Retourne la durée d'une année en mois. 
    84             inline virtual int getYearLength (void) const { return 12; } ; 
    85             inline virtual int getDayLength   (void) const { return 24; } ; // Retourne la durée d'un jour en heures. 
    86             inline virtual int getHourLength  (void) const { return 60; } ; // Retourne la durée d'une heure en minute. 
    87             inline virtual int getMinuteLength(void) const {return 60; } ; // Retourne la durée d'une minute en secondes. 
     83            inline int getYearLength (void) const { return 12; } ; 
     84            inline int getDayLength   (void) const { return 24; } ; // Retourne la durée d'un jour en heures. 
     85            inline int getHourLength  (void) const { return 60; } ; // Retourne la durée d'une heure en minute. 
     86            inline int getMinuteLength(void) const {return 60; } ; // Retourne la durée d'une minute en secondes. 
    8887            /*! Returns the day length expressed in seconds. */ 
    89             inline virtual int getDayLengthInSeconds(void) const { return 86400; } ; 
     88            inline int getDayLengthInSeconds(void) const { return 86400; } ; 
    9089 
    91             inline virtual StdString getMonthName(int monthId) const 
    92             { 
    93               static const StdString MonthNames[] = 
    94                          { "january", "february", "march",     "april" ,  "may",      "june", 
    95                            "july",    "august",   "september", "october", "november", "december" }; 
    96               return MonthNames[monthId - 1]; 
    97             }; 
     90            virtual StdString getMonthName(int monthId) const; 
    9891            virtual const StdString getMonthShortName(int monthId) const; 
    9992 
    10093            /*! Test if the calendar can have leap year. */ 
    101             inline virtual bool hasLeapYear() const {return false;}; 
     94            virtual bool hasLeapYear() const; 
    10295 
    10396            void initializeDate(int yr, int mth, int d, int hr = 0, int min = 0, int sec = 0); 
  • XIOS/dev/dev_trunk_omp/src/calendar_util.cpp

    r1629 r1630  
    11#include "calendar_util.hpp" 
     2#include "calendar.hpp" 
    23 
    34namespace xios 
  • XIOS/dev/dev_trunk_omp/src/config/domain_attribute.conf

    r1619 r1630  
    5858 
    5959DECLARE_ARRAY(double, 2, area) 
    60 DECLARE_ATTRIBUTE(double, radius) 
    6160 
    6261DECLARE_ENUM4(type,rectilinear,curvilinear,unstructured, gaussian) 
  • XIOS/dev/dev_trunk_omp/src/config/interpolate_domain_attribute.conf

    r1619 r1630  
    1010DECLARE_ATTRIBUTE(bool, write_weight) 
    1111DECLARE_ENUM2(read_write_convention, c, fortran) 
    12 DECLARE_ATTRIBUTE(bool, use_area) 
  • XIOS/dev/dev_trunk_omp/src/context_client.cpp

    r1619 r1630  
    9696    { 
    9797      list<int> ranks = event.getRanks(); 
    98       info(100)<<"Event "<<timeLine<<" of context "<<context->getId()<<endl ; 
     98 
    9999      if (CXios::checkEventSync) 
    100100      { 
     
    124124        { 
    125125          event.send(timeLine, sizes, buffList); 
    126           info(100)<<"Event "<<timeLine<<" of context "<<context->getId()<<"  sent"<<endl ; 
    127126 
    128127          checkBuffers(ranks); 
     
    143142          info(100)<<"DEBUG : temporaly event created : timeline "<<timeLine<<endl ; 
    144143          event.send(timeLine, tmpBufferedEvent.sizes, tmpBufferedEvent.buffers); 
    145           info(100)<<"Event "<<timeLine<<" of context "<<context->getId()<<"  sent"<<endl ; 
    146144        } 
    147145      } 
  • XIOS/dev/dev_trunk_omp/src/date/allleap.cpp

    r1629 r1630  
    3232 
    3333      ///-------------------------------------------------------------- 
    34 /* 
     34 
    3535      int CAllLeapCalendar::getYearTotalLength(const CDate & date) const 
    3636      { return (366 * 86400); } 
    37 */ 
     37 
    3838      int CAllLeapCalendar::getMonthLength(const CDate & date) const 
    3939      { 
     
    4141         return (CCalendar::getMonthLength(date)); 
    4242      } 
    43 /* 
     43 
    4444      StdString CAllLeapCalendar::getType(void) const 
    4545      { return (StdString("all_leap")); } 
    46 */ 
     46 
    4747      ///-------------------------------------------------------------- 
    4848} // namespace xios 
  • XIOS/dev/dev_trunk_omp/src/date/allleap.hpp

    r1629 r1630  
    2626 
    2727            /// Accesseurs /// 
    28             inline virtual int getYearTotalLength(const CDate & date) const { return (366 * 86400); }; 
     28            virtual int getYearTotalLength(const CDate & date) const; 
    2929            virtual int getMonthLength(const CDate & date) const; 
    30             virtual StdString getType(void) const { return (StdString("all_leap")); }; 
     30            virtual StdString getType(void) const; 
    3131 
    3232            /// Destructeur /// 
    33             virtual ~CAllLeapCalendar(void) ; 
     33            virtual ~CAllLeapCalendar(void); 
    3434 
    3535      }; // class CAllLeapCalendar 
  • XIOS/dev/dev_trunk_omp/src/date/d360.cpp

    r1629 r1630  
    3333      ///-------------------------------------------------------------- 
    3434 
    35       //int CD360Calendar::getYearTotalLength(const CDate & date) const 
    36       //{ return (360 * 86400); } 
     35      int CD360Calendar::getYearTotalLength(const CDate & date) const 
     36      { return (360 * 86400); } 
    3737 
    38       //int CD360Calendar::getMonthLength(const CDate & date) const 
    39       //{ return (30); } 
     38      int CD360Calendar::getMonthLength(const CDate & date) const 
     39      { return (30); } 
    4040 
    41       //StdString CD360Calendar::getType(void) const 
    42       //{ return (StdString("360_day")); } 
     41      StdString CD360Calendar::getType(void) const 
     42      { return (StdString("360_day")); } 
    4343 
    4444      ///-------------------------------------------------------------- 
  • XIOS/dev/dev_trunk_omp/src/date/d360.hpp

    r1629 r1630  
    2626 
    2727            /// Accesseurs /// 
    28             inline virtual int getYearTotalLength(const CDate & date) const { return (360 * 86400); }; 
    29             inline virtual int getMonthLength(const CDate & date) const { return 30; }; 
    30             inline virtual StdString getType(void) const { return (StdString("360_day")); }; 
     28            virtual int getYearTotalLength(const CDate & date) const; 
     29            virtual int getMonthLength(const CDate & date) const; 
     30            virtual StdString getType(void) const; 
    3131 
    3232            /// Destructeur /// 
  • XIOS/dev/dev_trunk_omp/src/date/gregorian.cpp

    r1629 r1630  
    5555      } 
    5656 
    57       //StdString CGregorianCalendar::getType(void) const 
    58       //{ return (StdString("gregorian")); } 
     57      StdString CGregorianCalendar::getType(void) const 
     58      { return (StdString("gregorian")); } 
    5959 
    60       //bool CGregorianCalendar::hasLeapYear() const { return true; } 
     60      bool CGregorianCalendar::hasLeapYear() const { return true; } 
    6161 
    6262      ///-------------------------------------------------------------- 
  • XIOS/dev/dev_trunk_omp/src/date/gregorian.hpp

    r1629 r1630  
    2828            virtual int getYearTotalLength(const CDate & date) const; 
    2929            virtual int getMonthLength(const CDate & date) const; 
    30             inline virtual StdString getType(void) const { return (StdString("gregorian")); }; 
    31             inline virtual int getYearLength (void) const { return 12; } ; 
     30            virtual StdString getType(void) const; 
    3231 
    33             inline virtual bool hasLeapYear() const { return true; }; 
     32            virtual bool hasLeapYear() const; 
    3433 
    3534            /// Destructeur /// 
  • XIOS/dev/dev_trunk_omp/src/io/onetcdf4_impl.hpp

    r1619 r1630  
    7373    } 
    7474    char *PtrArrayStr ; 
    75     PtrArrayStr=new char[stringArrayLen*data.numElements()] ; 
    76     memset (PtrArrayStr,' ',stringArrayLen*data.numElements()); 
    77     size_t offset=0 ; 
     75    PtrArrayStr=new char[stringArrayLen] ; 
    7876    Array<StdString,1>::const_iterator it, itb=data.begin(), ite=data.end() ; 
    79     for(it=itb;it!=ite;++it, offset+=stringArrayLen) 
     77    int lineNb = 0; 
     78    for(it=itb;it!=ite;++it) 
    8079    { 
    81       it->copy(PtrArrayStr+offset,it->size()) ; 
    82       PtrArrayStr[offset+it->size()]='\0' ; 
     80      it->copy(PtrArrayStr,it->size()) ; 
     81      PtrArrayStr[it->size()]='\0' ; 
     82      sstart[0] = lineNb; 
     83      sstart[dimArrayLen] = 0; 
     84      scount[0] = 1; 
     85      scount[dimArrayLen] = it->size() + 1; 
     86      CTimer::get("CONetCDF4::writeData writeData_").resume(); 
     87      this->writeData_(grpid, varid, sstart, scount, PtrArrayStr); 
     88      CTimer::get("CONetCDF4::writeData writeData_").suspend(); 
     89      ++lineNb; 
    8390    } 
    84  
    85      CTimer::get("CONetCDF4::writeData writeData_").resume(); 
    86      this->writeData_(grpid, varid, sstart, scount, PtrArrayStr); 
    87      CTimer::get("CONetCDF4::writeData writeData_").suspend(); 
    88  
    8991    delete []  PtrArrayStr; 
    9092  } 
  • XIOS/dev/dev_trunk_omp/src/node/interpolate_domain.cpp

    r1619 r1630  
    6565    if (this->read_write_convention.isEmpty()) this->read_write_convention.setValue(read_write_convention_attr::fortran); 
    6666 
    67  
    6867  } 
    6968 
  • XIOS/dev/dev_trunk_omp/src/transformation/domain_algorithm_interpolate.cpp

    r1619 r1630  
    305305  CArray<double,2> boundsLonSrcUnmasked(nVertexSrc,nSrcLocalUnmasked); 
    306306  CArray<double,2> boundsLatSrcUnmasked(nVertexSrc,nSrcLocalUnmasked); 
    307   CArray<double,1> areaSrcUnmasked(nSrcLocalUnmasked); 
    308    
    309307  long int * globalSrcUnmasked = new long int [nSrcLocalUnmasked]; 
    310308 
    311309  nSrcLocalUnmasked=0 ; 
    312   bool hasSrcArea=domainSrc_->hasArea && !domainSrc_->radius.isEmpty() && !interpDomain_->use_area.isEmpty() && interpDomain_->use_area==true  ; 
    313   double srcAreaFactor ; 
    314   if (hasSrcArea) srcAreaFactor=1./(domainSrc_->radius*domainSrc_->radius) ; 
    315    
    316310  for (int idx=0 ; idx < nSrcLocal; idx++) 
    317311  { 
     
    323317        boundsLatSrcUnmasked(n,nSrcLocalUnmasked) = boundsLatSrc(n,idx) ; 
    324318      } 
    325       if (hasSrcArea) areaSrcUnmasked(nSrcLocalUnmasked) = domainSrc_->areavalue(idx)*srcAreaFactor ; 
    326319      globalSrcUnmasked[nSrcLocalUnmasked]=globalSrc[idx] ; 
    327320      ++nSrcLocalUnmasked ; 
    328321    } 
    329322  } 
    330   
     323 
    331324 
    332325  int nDstLocalUnmasked = 0 ; 
     
    335328  CArray<double,2> boundsLonDestUnmasked(nVertexDest,nDstLocalUnmasked); 
    336329  CArray<double,2> boundsLatDestUnmasked(nVertexDest,nDstLocalUnmasked); 
    337   CArray<double,1>   areaDstUnmasked(nDstLocalUnmasked); 
    338  
    339330  long int * globalDstUnmasked = new long int [nDstLocalUnmasked]; 
    340331 
    341332  nDstLocalUnmasked=0 ; 
    342   bool hasDstArea=domainDest_->hasArea && !domainDest_->radius.isEmpty() && !interpDomain_->use_area.isEmpty() && interpDomain_->use_area==true ; 
    343   double dstAreaFactor ; 
    344   if (hasDstArea) dstAreaFactor=1./(domainDest_->radius*domainDest_->radius) ; 
    345333  for (int idx=0 ; idx < nDstLocal; idx++) 
    346334  { 
     
    352340        boundsLatDestUnmasked(n,nDstLocalUnmasked) = boundsLatDest(n,idx) ; 
    353341      } 
    354       if (hasDstArea) areaDstUnmasked(nDstLocalUnmasked) = domainDest_->areavalue(idx)*dstAreaFactor ; 
    355342      globalDstUnmasked[nDstLocalUnmasked]=globalDst[idx] ; 
    356343      ++nDstLocalUnmasked ; 
     
    358345  } 
    359346 
    360   double* ptAreaSrcUnmasked = NULL ; 
    361   if (hasSrcArea) ptAreaSrcUnmasked=areaSrcUnmasked.dataFirst() ; 
    362  
    363   double* ptAreaDstUnmasked = NULL ; 
    364   if (hasDstArea) ptAreaDstUnmasked=areaDstUnmasked.dataFirst() ; 
    365  
    366   mapper.setSourceMesh(boundsLonSrcUnmasked.dataFirst(), boundsLatSrcUnmasked.dataFirst(), ptAreaSrcUnmasked, nVertexSrc, nSrcLocalUnmasked, &srcPole[0], globalSrcUnmasked); 
    367   mapper.setTargetMesh(boundsLonDestUnmasked.dataFirst(), boundsLatDestUnmasked.dataFirst(), ptAreaDstUnmasked, nVertexDest, nDstLocalUnmasked, &dstPole[0], globalDstUnmasked); 
     347  mapper.setSourceMesh(boundsLonSrcUnmasked.dataFirst(), boundsLatSrcUnmasked.dataFirst(), nVertexSrc, nSrcLocalUnmasked, &srcPole[0], globalSrcUnmasked); 
     348  mapper.setTargetMesh(boundsLonDestUnmasked.dataFirst(), boundsLatDestUnmasked.dataFirst(), nVertexDest, nDstLocalUnmasked, &dstPole[0], globalDstUnmasked); 
    368349 
    369350  std::vector<double> timings = mapper.computeWeights(orderInterp,renormalize,quantity); 
  • XIOS/dev/dev_trunk_omp/src/transformation/domain_algorithm_zoom.cpp

    r1611 r1630  
    9393  domainDest_->ni.setValue(niDest); 
    9494  domainDest_->nj.setValue(njDest); 
    95   if ( (niDest==0) || (njDest==0)) 
    96   { 
    97     domainDest_->ibegin.setValue(0); 
    98     domainDest_->jbegin.setValue(0); 
    99   } 
    100   else 
    101   { 
    102     domainDest_->ibegin.setValue(ibeginDest); 
    103     domainDest_->jbegin.setValue(jbeginDest); 
    104   } 
     95  domainDest_->ibegin.setValue(ibeginDest); 
     96  domainDest_->jbegin.setValue(jbeginDest); 
    10597  domainDest_->i_index.resize(niDest*njDest); 
    10698  domainDest_->j_index.resize(niDest*njDest); 
Note: See TracChangeset for help on using the changeset viewer.