Ignore:
Timestamp:
10/25/12 10:12:20 (12 years ago)
Author:
ymipsl
Message:

Cartesian/Regular? grid are now working correctly.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/output/nc4_data_output.cpp

    r379 r384  
    8080                             : latid; 
    8181 
    82          bool isCurvilinear = true ; //for moment 
     82         bool isCurvilinear = domain->isCurvilinear ; 
    8383 
    8484         switch (SuperClass::type) 
     
    152152 
    153153               SuperClassWriter::definition_end(); 
    154                SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0); 
    155                SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0); 
     154               if (isCurvilinear) 
     155               { 
     156  
     157                 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0); 
     158                 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0); 
    156159// supress mask               if (server->intraCommSize > 1) SuperClassWriter::writeData(mask, maskid); 
     160               } 
     161               else 
     162               { 
     163                  CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ; 
     164                  SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 
     165                  CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ; 
     166                  SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 
     167               } 
    157168               SuperClassWriter::definition_start(); 
    158169 
     
    187198 
    188199               SuperClassWriter::definition_end(); 
    189                std::vector<StdSize> start(2) ;  
    190                std::vector<StdSize> count(2) ; 
    191                if (domain->isEmpty()) 
    192                { 
    193                  start[0]=0 ; start [1]=0 ;  
    194                  count[0]=0 ; count[1]=0 ;  
     200               if (isCurvilinear) 
     201               { 
     202                 std::vector<StdSize> start(2) ;  
     203                 std::vector<StdSize> count(2) ; 
     204                 if (domain->isEmpty()) 
     205                 { 
     206                   start[0]=0 ; start [1]=0 ;  
     207                   count[0]=0 ; count[1]=0 ;  
     208                 } 
     209                 else 
     210                 { 
     211                   start[1]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; start [0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ;  
     212                   count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ;  
     213                 } 
     214                  
     215                 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 
     216                 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); 
    195217               } 
    196218               else 
    197219               { 
    198                  start[1]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; start [0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ;  
    199                  count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ;  
    200                } 
    201                 
    202                SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 
    203                SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); 
     220                 std::vector<StdSize> start(1) ;  
     221                 std::vector<StdSize> count(1) ; 
     222                 if (domain->isEmpty()) 
     223                 { 
     224                   start[0]=0 ;   
     225                   count[0]=0 ;   
     226                   SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 
     227                   SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count);                 } 
     228                 else 
     229                 { 
     230                   start[0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ;  
     231                   count[0]=domain->zoom_nj_srv ;  
     232                   CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ; 
     233                   SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 
     234 
     235                   start[0]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ;  
     236                   count[0]=domain->zoom_ni_srv ;  
     237                   CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ; 
     238                   SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 
     239                 } 
     240               } 
    204241               SuperClassWriter::definition_start(); 
    205  
    206242               break; 
    207243            }            
     
    301337//         unsigned int ssize = domain->zoom_ni_loc.getValue() * domain->zoom_nj_loc.getValue(); 
    302338//         bool isCurvilinear = (domain->lonvalue.getValue()->size() == ssize); 
    303           bool isCurvilinear = true ; // for moment  
     339          bool isCurvilinear = domain->isCurvilinear ;  
    304340           
    305341         nc_type type = (!field->prec.isEmpty() && 
     
    492528            CAxis* axis = grid->axis ; 
    493529            CArray<double,3> field_data3D(domain->zoom_ni_srv,domain->zoom_nj_srv,axis->zoom_size) ; 
     530            if (!field->default_value.isEmpty()) field_data3D = field->default_value ; 
    494531            field->outputField(field_data3D); 
    495532            switch (SuperClass::type) 
     
    526563         { 
    527564            CArray<double,2> field_data2D(domain->zoom_ni_srv,domain->zoom_nj_srv) ; 
     565            if (!field->default_value.isEmpty()) field_data2D = field->default_value ; 
    528566            field->outputField(field_data2D); 
    529567            switch (SuperClass::type) 
Note: See TracChangeset for help on using the changeset viewer.