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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.