Changeset 391


Ignore:
Timestamp:
11/09/12 17:23:42 (11 years ago)
Author:
ymipsl
Message:

-Add min_digits attribute
-Add global attribute to be compatible with IOIPSL rebuild

YM

Location:
XIOS/trunk/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/config/file_attribute.conf

    r369 r391  
    33 
    44DECLARE_ATTRIBUTE(StdString, name_suffix) 
     5DECLARE_ATTRIBUTE(int, min_digits ) 
    56 
    67DECLARE_ATTRIBUTE(StdString, output_freq) 
  • XIOS/trunk/src/data_output.cpp

    r352 r391  
    6363      } 
    6464 
     65      void CDataOutput::writeTimeDimension(void) 
     66      { 
     67         this->writeTimeDimension_(); 
     68      } 
     69 
    6570      //---------------------------------------------------------------- 
    6671 
     
    8792         CGrid* grid = CGrid::get(field->grid_ref.getValue()); 
    8893         CDomain* domain = CDomain::get(grid->domain_ref.getValue()); 
    89              
    90 //         if (domain->isEmpty()) return; 
    9194         this->writeFieldData_(field); 
    9295      } 
  • XIOS/trunk/src/data_output.hpp

    r379 r391  
    2525            void writeField    (CField* field); 
    2626            void writeFieldGrid(CField* field); 
     27            void writeTimeDimension(void); 
    2728            void writeFieldData(CField* field); 
    2829 
     
    4647            virtual void writeFieldData_  (CField*    field)  = 0; 
    4748            virtual void writeDomain_     (CDomain*   domain) = 0; 
     49            virtual void writeTimeDimension_ (void) = 0; 
    4850            virtual void writeAxis_       (CAxis*     axis)   = 0; 
    4951            virtual void writeTimeAxis_   (CField*    field, 
  • XIOS/trunk/src/node/file.cpp

    r382 r391  
    257257              int width=0 ; int n=commSize-1 ; 
    258258              while(n != 0) { n=n/10 ; width++ ;} 
     259              if (!min_digits.isEmpty())  
     260                if (width<min_digits) width=min_digits ; 
    259261              oss.width(width) ; 
    260262              oss.fill('0') ; 
     
    287289            this->data_out->writeFieldGrid(field); 
    288290         } 
     291         this->data_out->writeTimeDimension(); 
    289292          
    290293         for (it = this->enabledFields.begin() ;it != end; it++) 
  • XIOS/trunk/src/output/nc4_data_output.cpp

    r384 r391  
    2222         StdString timeid = StdString("time_counter"); 
    2323         SuperClass::type = MULTI_FILE; 
    24          if (!exist) 
    25             SuperClassWriter::addDimension(timeid); 
     24//         if (!exist) 
     25//            SuperClassWriter::addDimension(timeid); 
    2626      } 
    2727 
     
    3838         SuperClass::type = (multifile) ? MULTI_FILE : ONE_FILE; 
    3939          
    40          if (!exist) 
    41             SuperClassWriter::addDimension(timeid); 
     40 //        if (!exist) 
     41//            SuperClassWriter::addDimension(timeid); 
    4242      } 
    4343 
     
    7171         StdString appendDomid  = (singleDomain) ? "" : "_"+domid ; 
    7272 
    73          StdString lonid     = StdString("lon").append(appendDomid); 
    74          StdString latid     = StdString("lat").append(appendDomid); 
     73         StdString dimXid     = StdString("x").append(appendDomid); 
     74         StdString dimYid     = StdString("y").append(appendDomid); 
     75          
     76         string lonid,latid ; 
     77/* 
    7578         StdString lonid_loc = (server->intraCommSize > 1) 
    7679                             ? StdString("lon").append(appendDomid).append("_local") 
     
    7982                             ? StdString("lat").append(appendDomid).append("_local") 
    8083                             : latid; 
    81  
     84*/ 
    8285         bool isCurvilinear = domain->isCurvilinear ; 
    8386 
     
    9093               if (server->intraCommSize > 1) 
    9194               { 
    92                  SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 
    93                  SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 
     95//                 SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 
     96//                 SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 
    9497               } 
    9598 
    9699               if (isCurvilinear) 
    97100               { 
    98                  dim0.push_back(latid_loc); dim0.push_back(lonid_loc); 
     101                 dim0.push_back(dimYid); dim0.push_back(dimXid); 
    99102                 lonid = StdString("nav_lon").append(appendDomid); 
    100103                 latid = StdString("nav_lat").append(appendDomid); 
     
    102105               else 
    103106               { 
    104                  dim0.push_back(latid_loc); 
    105                  dim1.push_back(lonid_loc); 
    106                } 
    107  
    108                SuperClassWriter::addDimension(lonid_loc, domain->zoom_ni_srv); 
    109                SuperClassWriter::addDimension(latid_loc, domain->zoom_nj_srv); 
     107                 lonid = StdString("lon").append(appendDomid); 
     108                 latid = StdString("lat").append(appendDomid); 
     109                 dim0.push_back(dimYid); 
     110                 dim1.push_back(dimXid); 
     111               } 
     112 
     113               SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv); 
     114               SuperClassWriter::addDimension(dimYid, domain->zoom_nj_srv); 
    110115               if (server->intraCommSize > 1) 
    111116               { 
     
    115120                                             domain->zoom_nj_srv, 
    116121                                             appendDomid); 
     122                   
     123                  if (singleDomain) this->writeLocalAttributes_IOIPSL(domain->zoom_ibegin_srv, 
     124                                             domain->zoom_ni_srv, 
     125                                             domain->zoom_jbegin_srv, 
     126                                             domain->zoom_nj_srv, 
     127                                             domain->ni_glo,domain->nj_glo, 
     128                                             server->intraCommRank,server->intraCommSize); 
    117129               } 
    118130                
     
    133145 
    134146               dim0.clear(); 
    135                dim0.push_back(latid_loc); 
    136                dim0.push_back(lonid_loc); 
     147               dim0.push_back(dimYid); 
     148               dim0.push_back(dimXid); 
    137149 
    138150 
     
    172184            case (ONE_FILE) : 
    173185            { 
    174                SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 
    175                SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 
     186               SuperClassWriter::addDimension(dimXid, domain->zoom_ni.getValue()); 
     187               SuperClassWriter::addDimension(dimYid, domain->zoom_nj.getValue()); 
    176188 
    177189                
    178190               if (isCurvilinear) 
    179191               { 
    180                   dim0.push_back(latid); dim0.push_back(lonid); 
     192                  dim0.push_back(dimYid); dim0.push_back(dimXid); 
    181193                  lonid = StdString("nav_lon").append(appendDomid); 
    182194                  latid = StdString("nav_lat").append(appendDomid); 
     
    186198               else 
    187199               { 
    188                   dim0.push_back(latid); 
    189                   dim1.push_back(lonid); 
     200                  dim0.push_back(dimYid); 
     201                  dim1.push_back(dimXid); 
     202                  lonid = StdString("lon").append(appendDomid); 
     203                  latid = StdString("lat").append(appendDomid); 
    190204                  SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 
    191205                  SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); 
     
    303317         } 
    304318         axis->addRelFile(this->filename); 
    305       } 
    306  
     319     } 
     320      
     321     void CNc4DataOutput::writeTimeDimension_(void) 
     322     { 
     323       SuperClassWriter::addDimension(string("time_counter")); 
     324     } 
    307325      //-------------------------------------------------------------- 
    308326 
     
    324342         StdString appendDomid  = (singleDomain) ? "" : "_"+domid ; 
    325343 
    326          StdString lonid     = StdString("lon").append(appendDomid); 
    327          StdString latid     = StdString("lat").append(appendDomid); 
     344         StdString dimXid     = StdString("x").append(appendDomid); 
     345         StdString dimYid     = StdString("y").append(appendDomid); 
     346/* 
    328347         StdString lonid_loc = (server->intraCommSize > 1) 
    329348                             ? StdString("lon").append(appendDomid).append("_local") 
     
    332351                             ? StdString("lat").append(appendDomid).append("_local") 
    333352                             : latid; 
     353*/ 
    334354         StdString fieldid   = (!field->name.isEmpty()) 
    335355                             ? field->name.getValue() : field->getBaseFieldReference()->getId(); 
     
    370390         else 
    371391         { 
    372             coodinates.push_back(latid); 
    373             coodinates.push_back(lonid); 
     392            coodinates.push_back(StdString("lat").append(appendDomid)); 
     393            coodinates.push_back(StdString("lon").append(appendDomid)); 
    374394         } 
    375395 
     
    378398            case (MULTI_FILE) : 
    379399            { 
    380                dims.push_back(latid_loc); 
    381                dims.push_back(lonid_loc); 
     400               dims.push_back(dimYid); 
     401               dims.push_back(dimXid); 
    382402               break ; 
    383403            } 
    384404            case (ONE_FILE) : 
    385405            { 
    386                dims.push_back(latid); 
    387                dims.push_back(lonid); 
     406               dims.push_back(dimYid); 
     407               dims.push_back(dimXid); 
    388408               break; 
    389409            } 
     
    674694      } 
    675695 
     696     void CNc4DataOutput::writeLocalAttributes_IOIPSL 
     697         (int ibegin, int ni, int jbegin, int nj, int ni_glo, int nj_glo, int rank, int size) 
     698      { 
     699         CArray<int,1> array(2) ; 
     700 
     701         SuperClassWriter::addAttribute("DOMAIN_number_total",size ) ; 
     702         SuperClassWriter::addAttribute("DOMAIN_number", rank) ; 
     703         array=1,2 ; 
     704         SuperClassWriter::addAttribute("DOMAIN_dimensions_ids",array) ; 
     705         array=ni_glo,nj_glo ; 
     706         SuperClassWriter::addAttribute("DOMAIN_size_global", array) ; 
     707         array=ni,nj ; 
     708         SuperClassWriter::addAttribute("DOMAIN_size_local", array) ; 
     709         array=ibegin,jbegin ; 
     710         SuperClassWriter::addAttribute("DOMAIN_position_first", array) ; 
     711         array=ibegin+ni-1,jbegin+nj-1 ; 
     712         SuperClassWriter::addAttribute("DOMAIN_position_last",array) ; 
     713         array=0,0 ; 
     714         SuperClassWriter::addAttribute("DOMAIN_halo_size_start", array) ; 
     715         SuperClassWriter::addAttribute("DOMAIN_halo_size_end", array); 
     716         SuperClassWriter::addAttribute("DOMAIN_type",string("box")) ; 
     717/* 
     718         SuperClassWriter::addAttribute("DOMAIN_DIM_N001",string("x")) ; 
     719         SuperClassWriter::addAttribute("DOMAIN_DIM_N002",string("y")) ; 
     720         SuperClassWriter::addAttribute("DOMAIN_DIM_N003",string("axis_A")) ; 
     721         SuperClassWriter::addAttribute("DOMAIN_DIM_N004",string("time_counter")) ; 
     722*/ 
     723 
     724      } 
    676725      //--------------------------------------------------------------- 
    677726 
  • XIOS/trunk/src/output/nc4_data_output.hpp

    r379 r391  
    4242            virtual void writeDomain_    (CDomain* domain); 
    4343            virtual void writeAxis_      (CAxis* axis); 
     44            virtual void writeTimeDimension_(void); 
    4445            virtual void writeField_     (CField* field); 
    4546            virtual void writeFieldData_ (CField* field); 
     
    5354          
    5455            void writeLocalAttributes(int ibegin, int ni, int jbegin, int nj, StdString domid); 
    55  
     56            void writeLocalAttributes_IOIPSL(int ibegin, int ni, int jbegin, int nj, int ni_glo, int nj_glo, int rank, int size) ; 
    5657            void writeTimeAxisAttributes(const StdString & axis_name, 
    5758                                         const StdString & calendar, 
  • XIOS/trunk/src/output/onetcdf4.cpp

    r382 r391  
    275275         int grpid = this->getCurrentGroup(); 
    276276         int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 
    277          CheckError(nc_put_att(grpid, varid, name.c_str(), NC_CHAR, value.size()+1, value.c_str())); 
     277         CheckError(nc_put_att(grpid, varid, name.c_str(), NC_CHAR, value.size(), value.c_str())); 
    278278         //CheckError(nc_put_att_string(grpid, varid, name.c_str(), 1, &str)); 
    279279      } 
     
    289289         CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,1, &value)); 
    290290      } 
    291        
     291 
     292       template <> 
     293         void CONetCDF4::addAttribute 
     294            (const StdString & name, const CArray<double,1>& value, const StdString * varname ) 
     295      { 
     296         int grpid = this->getCurrentGroup(); 
     297         int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 
     298         CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,value.numElements(), value.dataFirst())); 
     299      }      
    292300      //--------------------------------------------------------------- 
    293301       
     
    300308         CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT, 1, &value)); 
    301309      } 
     310 
     311       template <> 
     312         void CONetCDF4::addAttribute 
     313            (const StdString & name, const CArray<float,1>& value, const StdString * varname ) 
     314      { 
     315         int grpid = this->getCurrentGroup(); 
     316         int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 
     317         CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT,value.numElements(), value.dataFirst())); 
     318      }      
    302319       
    303320      //--------------------------------------------------------------- 
     
    312329      } 
    313330 
     331       template <> 
     332         void CONetCDF4::addAttribute 
     333            (const StdString & name, const CArray<int,1>& value, const StdString * varname ) 
     334      { 
     335         int grpid = this->getCurrentGroup(); 
     336         int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 
     337         CheckError(nc_put_att_int(grpid, varid, name.c_str(), NC_INT,value.numElements(), value.dataFirst())); 
     338      }      
    314339      //--------------------------------------------------------------- 
    315340 
Note: See TracChangeset for help on using the changeset viewer.