Ignore:
Timestamp:
09/21/11 09:42:30 (13 years ago)
Author:
hozdoba
Message:

Corrections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/common/src/xmlio/output/nc4_data_output.cpp

    r274 r278  
    88#include "file.hpp" 
    99#include "calendar.hpp" 
     10#include "xios_manager.hpp" 
     11#include "context.hpp" 
    1012 
    1113namespace xmlioserver 
     
    7577         StdString lonid     = StdString("lon_").append(domid); 
    7678         StdString latid     = StdString("lat_").append(domid); 
    77          StdString lonid_loc = StdString("lon_").append(domid).append("_local"); 
    78          StdString latid_loc = StdString("lat_").append(domid).append("_local"); 
     79         StdString lonid_loc = (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     80                             ? StdString("lon_").append(domid).append("_local") 
     81                             : lonid; 
     82         StdString latid_loc = (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     83                             ? StdString("lat_").append(domid).append("_local") 
     84                             : latid; 
    7985         StdString maskid    = StdString("mask_").append(domid).append("_local"); 
    8086 
     
    8490         bool isCurvilinear = (domain->lonvalue.getValue()->size() == ssize); 
    8591 
    86          SuperClassWriter::addDimension(lonid, domain->ni_glo.getValue()); 
    87          SuperClassWriter::addDimension(latid, domain->nj_glo.getValue()); 
     92         if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     93         { 
     94            SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 
     95            SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 
     96         } 
    8897 
    8998         if (isCurvilinear) 
     
    104113               SuperClassWriter::addDimension(lonid_loc, domain->zoom_ni_loc.getValue()); 
    105114               SuperClassWriter::addDimension(latid_loc, domain->zoom_nj_loc.getValue()); 
    106                this->writeLocalAttributes(domain->zoom_ibegin_loc.getValue(), 
    107                                           domain->zoom_ni_loc.getValue(), 
    108                                           domain->zoom_jbegin_loc.getValue(), 
    109                                           domain->zoom_nj_loc.getValue(), 
    110                                           domid); 
     115               if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     116               { 
     117                  this->writeLocalAttributes(domain->zoom_ibegin_loc.getValue(), 
     118                                             domain->zoom_ni_loc.getValue(), 
     119                                             domain->zoom_jbegin_loc.getValue(), 
     120                                             domain->zoom_nj_loc.getValue(), 
     121                                             domid); 
     122               } 
     123                
    111124               if (isCurvilinear) 
    112125               { 
     
    128141               dim0.push_back(lonid_loc); 
    129142 
    130                SuperClassWriter::addVariable(maskid, NC_INT, dim0); 
    131  
    132                this->writeMaskAttributes(maskid, 
    133                   domain->data_dim.getValue()/*, 
    134                   domain->data_ni.getValue(), 
    135                   domain->data_nj.getValue(), 
    136                   domain->data_ibegin.getValue(), 
    137                   domain->data_jbegin.getValue()*/); 
     143               if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     144               { 
     145                  SuperClassWriter::addVariable(maskid, NC_INT, dim0); 
     146 
     147                  this->writeMaskAttributes(maskid, 
     148                     domain->data_dim.getValue()/*, 
     149                     domain->data_ni.getValue(), 
     150                     domain->data_nj.getValue(), 
     151                     domain->data_ibegin.getValue(), 
     152                     domain->data_jbegin.getValue()*/); 
     153               } 
    138154                   
    139155               //SuperClassWriter::setDefaultValue(maskid, &dvm); 
     
    142158               SuperClassWriter::writeData(domain->latvalue.getValue(), latid, true, 0); 
    143159               SuperClassWriter::writeData(domain->lonvalue.getValue(), lonid, true, 0); 
    144                SuperClassWriter::writeData(mask, maskid); 
     160               if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     161                  SuperClassWriter::writeData(mask, maskid); 
    145162               SuperClassWriter::definition_start(); 
    146163 
     
    169186         switch (SuperClass::type) 
    170187         { 
     188            case (ONE_FILE) : 
    171189            case (MULTI_FILE) : 
    172190            { 
     
    218236         StdString lonid     = StdString("lon_").append(domid); 
    219237         StdString latid     = StdString("lat_").append(domid); 
    220          StdString lonid_loc = StdString("lon_").append(domid).append("_local"); 
    221          StdString latid_loc = StdString("lat_").append(domid).append("_local"); 
     238         StdString lonid_loc = (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     239                             ? StdString("lon_").append(domid).append("_local") 
     240                             : lonid; 
     241         StdString latid_loc = (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 
     242                             ? StdString("lat_").append(domid).append("_local") 
     243                             : latid; 
    222244         StdString fieldid   = (!field->name.isEmpty()) 
    223245                             ? field->name.getValue() : field->getBaseFieldReference()->getId(); 
     
    376398                             ? field->name.getValue()  
    377399                             : field->getBaseFieldReference()->getId(); 
     400         boost::shared_ptr<xmlioserver::tree::CContext> context = 
     401            CObjectFactory::GetObject<xmlioserver::tree::CContext> 
     402               (CObjectFactory::GetCurrentContextId()); 
     403                              
     404         StdOStringStream oss; 
     405         oss << "time_" << field->operation.getValue() 
     406             << "_" << field->getRelFile()->output_freq.getValue(); 
     407              
    378408         ARRAY(double, 1) field_data = field->getData(); 
     409         ARRAY_CREATE(time_data, double, 1, [1]); 
     410         (*time_data)[0] = date::Time(*field->getLastWriteDate()); 
    379411          
    380412         if (grid->hasAxis()) // 3D 
     
    383415            grid->outputField(field_data, field_data3D); 
    384416            SuperClassWriter::writeData(field_data3D, fieldid, true, field->getNStep()-1); 
     417            SuperClassWriter::writeData(time_data, oss.str(), true, field->getNStep()-1); 
    385418             
    386419         } 
     
    390423            grid->outputField(field_data,  field_data2D); 
    391424            SuperClassWriter::writeData(field_data2D, fieldid, true, field->getNStep()-1); 
     425            SuperClassWriter::writeData(time_data, oss.str(), true, field->getNStep()-1); 
    392426         } 
    393427      } 
Note: See TracChangeset for help on using the changeset viewer.