Ignore:
Timestamp:
07/10/17 18:17:04 (7 years ago)
Author:
yushan
Message:

branch merged with trunk @1200

Location:
XIOS/dev/branch_yushan_merged/src/io
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/src/io/nc4_data_output.cpp

    r1176 r1205  
    1111#include "netCdfException.hpp" 
    1212#include "exception.hpp" 
     13#include "timer.hpp" 
    1314#include "uuid.hpp" 
    1415// mpi.hpp 
     
    7980 
    8081 
    81          StdString dimXid, dimYid ; 
     82        StdString dimXid, dimYid ; 
    8283 
    8384        nc_type typePrec ; 
     
    10451046        int zoom_begin_srv = axis->zoom_begin_srv; 
    10461047        int zoom_size  = (MULTI_FILE == SuperClass::type) ? zoom_size_srv 
    1047                                                               : axis->global_zoom_n; 
    1048         int zoom_begin = (MULTI_FILE == SuperClass::type) ? zoom_begin_srv 
    1049                                                               : axis->global_zoom_begin; 
     1048                                                          : axis->global_zoom_size_srv; 
    10501049 
    10511050        if ((0 == zoom_size_srv) && (MULTI_FILE == SuperClass::type)) return; 
     
    11021101 
    11031102            SuperClassWriter::definition_end(); 
    1104             printf("SuperClass::type = %d, typePrec = %d\n", SuperClass::type, typePrec); 
     1103 
    11051104            switch (SuperClass::type) 
    11061105            { 
     
    11261125                std::vector<StdSize> start(1), startBounds(2) ; 
    11271126                std::vector<StdSize> count(1), countBounds(2) ; 
    1128                 start[0] = startBounds[0] = zoom_begin_srv-axis->global_zoom_begin; 
     1127                start[0] = startBounds[0] = zoom_begin_srv-axis->global_zoom_begin_srv; 
    11291128                count[0] = countBounds[0] = zoom_size_srv; 
    11301129                startBounds[1] = 0; 
     
    18321831 
    18331832         singleDomain = (file->nbDomains == 1); 
     1833 
     1834         StdString conv_str ; 
     1835         if (file->convention_str.isEmpty()) 
     1836         { 
     1837            if (SuperClassWriter::useCFConvention) conv_str="CF-1.6" ; 
     1838            else conv_str="UGRID" ; 
     1839         } 
     1840         else conv_str=file->convention_str ; 
     1841            
    18341842         try 
    18351843         { 
    1836        if (SuperClassWriter::useCFConvention) 
    1837              this->writeFileAttributes(filename, description, 
    1838                                        StdString("CF-1.6"), 
    1839                                        StdString("An IPSL model"), 
    1840                                        this->getTimeStamp()); 
    1841            else 
    1842              this->writeFileAttributes(filename, description, 
    1843                                        StdString("UGRID"), 
    1844                                        StdString("An IPSL model"), 
    1845                                        this->getTimeStamp()); 
    1846  
     1844           this->writeFileAttributes(filename, description, 
     1845                                      conv_str, 
     1846                                      StdString("An IPSL model"), 
     1847                                      this->getTimeStamp()); 
    18471848 
    18481849           if (!appendMode) 
     
    19891990        CGrid* grid = field->grid; 
    19901991 
    1991         if (field->getNStep()<1) return ; 
     1992        if (field->getNStep()<1)  
     1993        { 
     1994          return; 
     1995        } 
    19921996         
    19931997        if (!grid->doGridHaveDataToWrite()) 
    1994           if (SuperClass::type == MULTI_FILE || !isCollective) return; 
    1995  
     1998          if (SuperClass::type == MULTI_FILE || !isCollective) 
     1999          { 
     2000            return; 
     2001          } 
     2002 
     2003           
    19962004        StdString fieldid = field->getFieldOutputName(); 
    19972005 
     
    21182126              case (MULTI_FILE) : 
    21192127              { 
     2128                 CTimer::get("Files : writing data").resume(); 
    21202129                 SuperClassWriter::writeData(fieldData, fieldid, isCollective, field->getNStep() - 1); 
     2130                 CTimer::get("Files : writing data").suspend(); 
    21212131                 if (wtime) 
    21222132                 { 
     2133                   CTimer::get("Files : writing time axis").resume(); 
    21232134                   if ( wtimeData) 
    21242135                   { 
    2125                      SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2126                      SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
    2127                    } 
     2136//                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
     2137//                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
     2138                       SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
     2139                       SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
     2140                  } 
    21282141                   if (wtimeCounter) 
    21292142                   { 
    2130                      SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2131                      if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
     2143//                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
     2144//                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
     2145                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
     2146                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
    21322147                   } 
     2148                   CTimer::get("Files : writing time axis").suspend(); 
    21332149                 } 
    21342150                 break; 
     
    22562272                } 
    22572273 
     2274 
     2275                CTimer::get("Files : writing data").resume(); 
    22582276                SuperClassWriter::writeData(fieldData, fieldid, isCollective, field->getNStep() - 1, &start, &count); 
     2277                CTimer::get("Files : writing data").suspend(); 
     2278 
    22592279                 if (wtime) 
    22602280                 { 
     2281                   CTimer::get("Files : writing time axis").resume(); 
    22612282                   if ( wtimeData) 
    22622283                   { 
    2263                      SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
    2264                      SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
     2284//                     SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 
     2285//                     SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 
     2286                     SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 
     2287                     SuperClassWriter::writeTimeAxisDataBounds(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 
    22652288                   } 
    22662289                   if (wtimeCounter) 
    22672290                   { 
    2268                      SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
    2269                      if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
     2291//                     SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 
     2292//                     if (timeCounterType!=record) SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 
     2293                     SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1,isRoot); 
     2294                     if (timeCounterType!=record) SuperClassWriter::writeTimeAxisDataBounds(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 
     2295 
    22702296                   } 
     2297                   CTimer::get("Files : writing time axis").suspend();   
    22712298                 } 
    22722299 
  • XIOS/dev/branch_yushan_merged/src/io/onetcdf4.cpp

    r1160 r1205  
    66#include "netCdfInterface.hpp" 
    77#include "netCdfException.hpp" 
    8 // mpi_std.hpp 
     8#include "timer.hpp" 
    99 
    1010namespace xios 
     
    5454         if (!append || !std::ifstream(filename.c_str())) 
    5555         { 
     56            CTimer::get("Files : create").resume(); 
    5657            if (wmpi) 
    5758               CNetCdfInterface::createPar(filename, mode, *comm, MPI_INFO_NULL_STD, this->ncidp); 
    5859            else 
    5960               CNetCdfInterface::create(filename, mode, this->ncidp); 
    60  
     61            CTimer::get("Files : create").suspend(); 
     62  
    6163            this->appendMode = false; 
    6264         } 
     
    6466         { 
    6567            mode |= NC_WRITE; 
     68            CTimer::get("Files : open").resume(); 
    6669            if (wmpi) 
    67                //CNetCdfInterface::openPar(filename, mode, static_cast<MPI_Comm>(comm->mpi_comm), MPI_INFO_NULL_STD, this->ncidp); 
    6870               CNetCdfInterface::openPar(filename, mode, *comm, MPI_INFO_NULL_STD, this->ncidp); 
    6971            else 
    7072               CNetCdfInterface::open(filename, mode, this->ncidp); 
    71  
     73            CTimer::get("Files : open").suspend(); 
    7274            this->appendMode = true; 
    7375         } 
     
    8385      void CONetCDF4::close() 
    8486      { 
     87        CTimer::get("Files : close").resume(); 
    8588        CNetCdfInterface::close(this->ncidp); 
     89        CTimer::get("Files : close").suspend(); 
    8690      } 
    8791 
     
    558562 
    559563         this->getWriteDataInfos(name, 0, array_size,  sstart, scount, NULL, NULL); 
     564 
    560565         this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 
     566 
    561567      } 
    562568 
     
    584590 
    585591         this->getWriteDataInfos(name, record, array_size,  sstart, scount, NULL, NULL); 
    586          if (using_netcdf_internal) 
    587          { 
    588            if (!isRoot) 
    589            { 
    590              sstart[0] = sstart[0] + 1; 
    591              scount[0] = 0; 
    592            } 
    593          } 
    594592         this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 
    595593       } 
    596594 
     595      void CONetCDF4::writeTimeAxisDataBounds(const CArray<double, 1>& data, const StdString& name, 
     596                                        bool collective, StdSize record, bool isRoot) 
     597      { 
     598         int grpid = this->getCurrentGroup(); 
     599         int varid = this->getVariable(name); 
     600 
     601         map<int,size_t>::iterator it=timeAxis.find(varid); 
     602         if (it == timeAxis.end()) timeAxis[varid] = record; 
     603         else 
     604         { 
     605           if (it->second >= record) return; 
     606           else it->second =record; 
     607         } 
     608 
     609         StdSize array_size = 1; 
     610         std::vector<StdSize> sstart, scount; 
     611 
     612         if (this->wmpi && collective) 
     613            CNetCdfInterface::varParAccess(grpid, varid, NC_COLLECTIVE); 
     614         if (this->wmpi && !collective) 
     615            CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); 
     616 
     617         this->getWriteDataInfos(name, record, array_size,  sstart, scount, NULL, NULL); 
     618         this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 
     619       } 
     620 
     621 
    597622      //--------------------------------------------------------------- 
    598623 
  • XIOS/dev/branch_yushan_merged/src/io/onetcdf4.hpp

    r1160 r1205  
    7373            void writeTimeAxisData(const CArray<double,1>& data, const StdString& name, 
    7474                                   bool collective, StdSize record, bool Isroot); 
     75            void writeTimeAxisDataBounds(const CArray<double,1>& data, const StdString& name, 
     76                                   bool collective, StdSize record, bool Isroot); 
    7577            /// Accesseur /// 
    7678            const CONetCDF4Path& getCurrentPath(void) const; 
  • XIOS/dev/branch_yushan_merged/src/io/onetcdf4_impl.hpp

    r1160 r1205  
    2525    CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); 
    2626 
     27    CTimer::get("Files : get data infos").resume(); 
    2728    this->getWriteDataInfos 
    2829    (name, record, array_size,  sstart, scount, start, count); 
     30    CTimer::get("Files : get data infos").suspend(); 
     31 
    2932    if (data.numElements() != array_size) 
    3033    { 
     
    5457    CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); 
    5558 
    56     this->getWriteDataInfos 
    57     (name, record, array_size,  sstart, scount, start, count); 
     59    CTimer::get("CONetCDF4::writeData getWriteDataInfos").resume(); 
     60    this->getWriteDataInfos(name, record, array_size,  sstart, scount, start, count); 
     61    CTimer::get("CONetCDF4::writeData getWriteDataInfos").suspend(); 
     62  
    5863    if (data.numElements()*stringArrayLen != array_size) 
    5964    { 
     
    7277      PtrArrayStr[it->size()]='\0' ; 
    7378    } 
     79    CTimer::get("CONetCDF4::writeData writeData_").resume(); 
    7480    this->writeData_(grpid, varid, sstart, scount, ArrayStr); 
     81    CTimer::get("CONetCDF4::writeData writeData_").suspend(); 
    7582    delete [] ArrayStr ; 
    7683  } 
Note: See TracChangeset for help on using the changeset viewer.