Ignore:
Timestamp:
09/06/11 11:57:45 (13 years ago)
Author:
hozdoba
Message:

Corrections après tests sur titane

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in

    r237 r265  
    9797void xios_handle_create (XPtr * const _ret, XDType _dtype, const XString _id, XSize _id_len) 
    9898{ 
    99    MAKE_STRING(__id, _id, _id_len); 
    100    switch(_dtype) 
    101    { 
    102       case (ECONTEXT): 
    103          // Si le context n'existe pas, on retourne un handle vide/nul. 
    104          *_ret = (!CObjectFactory::HasObject<CContext>(__id)) 
    105                ? 0 : CObjectFactory::GetObject<CContext>(__id).get(); 
    106          return ; 
    107       CASE_ELEM(AXIS   , Axis) 
    108       CASE_ELEM(DOMAIN , Domain) 
    109       CASE_ELEM(FIELD  , Field) 
    110       CASE_ELEM(FILE   , File) 
    111       CASE_ELEM(GRID   , Grid) 
    112       default : 
    113          *_ret = 0; 
    114          return; 
     99   try 
     100   { 
     101      MAKE_STRING(__id, _id, _id_len); 
     102      switch(_dtype) 
     103      { 
     104         case (ECONTEXT): 
     105        { 
     106             *_ret = 0; 
     107            // Si le context n'existe pas, on retourne un handle vide/nul. 
     108            //*_ret = (!CObjectFactory::HasObject<CContext>(__id)) 
     109            //      ? 0 : CObjectFactory::GetObject<CContext>(__id).get(); 
     110            std::vector<boost::shared_ptr<CContext> > def_vector =  
     111                CContext::GetContextGroup()->getChildList(); 
     112           for (StdSize i = 0; i < def_vector.size(); i++) 
     113           { 
     114              //std::cout << "_ " << def_vector[i]->getId() << std::endl;   
     115              if (def_vector[i]->getId().compare(__id) == 0) 
     116                 *_ret = def_vector[i].get(); 
     117           } 
     118           //std::cout << __id << "=" << *_ret << std::endl;     
     119            return ; 
     120         } 
     121         CASE_ELEM(AXIS   , Axis) 
     122         CASE_ELEM(DOMAIN , Domain) 
     123         CASE_ELEM(FIELD  , Field) 
     124         CASE_ELEM(FILE   , File) 
     125         CASE_ELEM(GRID   , Grid) 
     126         default : 
     127            *_ret = 0; 
     128            return; 
     129      } 
     130   } 
     131   catch (CException & exc) 
     132   { 
     133      std::cerr << exc.getMessage() << std::endl; 
     134      exit (EXIT_FAILURE); 
    115135   } 
    116136} 
     
    127147      CTreeManager::ParseFile(__filename); 
    128148      //~ StdOStringStream oss; 
    129       //~ oss << StdString("data/def/def_client_pre.") 
     149      //~ oss << StdString("def_client_pre.") 
    130150      //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    131151      //~ CTreeManager::PrintTreeToFile(oss.str()); 
     
    147167      CTreeManager::ParseString(__xmlcontent); 
    148168      //~ StdOStringStream oss; 
    149       //~ oss << StdString("data/def/def_client_pre.") 
     169      //~ oss << StdString("def_client_pre.") 
    150170      //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    151171      //~ CTreeManager::PrintTreeToFile(oss.str()); 
     
    162182void xios_context_set_current (XPtr const _ctx, bool _wswap) 
    163183{ 
    164    boost::shared_ptr<CContext> context = CObjectFactory::GetObject<CContext> ((CContext*)_ctx); 
    165    CTreeManager::SetCurrentContextId(context->getId()); 
     184   try 
     185   { 
     186      //boost::shared_ptr<CContext> context = CObjectFactory::GetObject<CContext> ((CContext*)_ctx); 
     187       CTreeManager::SetCurrentContextId(((CContext*)_ctx)->getId()); 
     188   } 
     189   catch (CException & exc) 
     190   { 
     191      std::cerr << exc.getMessage() << std::endl; 
     192      exit (EXIT_FAILURE); 
     193   } 
    166194} 
    167195 
     
    284312{ 
    285313   MAKE_STRING(__filename, _filename, _filename_len); 
    286    if (_filename_len != -1) 
    287       CTreeManager::PrintTreeToFile(__filename); 
    288    else 
    289       CTreeManager::PrintTreeToStream(std::clog); 
    290 } 
     314   try 
     315   { 
     316      if (_filename_len != -1) 
     317         CTreeManager::PrintTreeToFile(__filename); 
     318      else 
     319         CTreeManager::PrintTreeToStream(std::clog); 
     320   } 
     321   catch (CException & exc) 
     322   { 
     323      std::cerr << exc.getMessage() << std::endl; 
     324      exit (EXIT_FAILURE); 
     325   } 
     326} 
     327 
     328//------------------------------------------------------------------- 
     329 
     330void xios_init_ioserver(MPIComm * comm_client) 
     331{ 
     332   try 
     333   { 
     334      MPIComm comm_client_server, comm_server; 
     335      CMPIManager::Initialise(NULL, NULL); 
     336      CMPIManager::DispatchClient(false, *comm_client, comm_client_server, comm_server); 
     337   } 
     338   catch (CException & exc) 
     339   { 
     340      std::cerr << exc.getMessage() << std::endl; 
     341      exit (EXIT_FAILURE); 
     342   } 
     343} 
     344 
    291345 
    292346//------------------------------------------------------------------- 
     
    301355             CObjectFactory::GetObject<CContext>(__context); 
    302356      StdOStringStream oss; 
    303       //~ oss << StdString("data/def/def_client_next.") 
    304       //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    305       //~ CTreeManager::PrintTreeToFile(oss.str()); 
    306       //~ oss.str(""); 
     357      oss << StdString("def_client_next.") 
     358          << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
     359      CTreeManager::PrintTreeToFile(oss.str()); 
     360      oss.str(""); 
    307361 
    308362      boost::shared_ptr<CDataTreatment> dt(new CDataTreatment (context)); 
    309363      context->setDataTreatment(dt); 
    310364 
    311       oss << StdString("data/def/def_client_end.") 
     365      oss << StdString("def_client_end.") 
    312366          << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    313367      CTreeManager::PrintTreeToFile(oss.str()); 
     
    350404void xios_dtreatment_end(void) 
    351405{ 
    352  
     406   try 
     407   { 
     408           CMPIManager::Finalize(); 
     409   } 
     410   catch (CException & exc) 
     411   { 
     412      std::cerr << exc.getMessage() << std::endl; 
     413      exit (EXIT_FAILURE); 
     414   } 
    353415} 
    354416 
     
    358420                     XSize data_Xsize, XSize data_Ysize, XSize data_Zsize) 
    359421{ 
    360  
    361 } 
     422   MAKE_STRING(__field_id, _field_id, _field_id_len); 
     423   try 
     424   { 
     425      boost::shared_ptr<CContext> context = 
     426      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     427      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     428      if (data_Ysize==-1 && data_Zsize==-1) 
     429      { 
     430         ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize])); 
     431         std::copy(data_k8, data_k8+data->num_elements(), data->data()); 
     432         dtreat->write_data(__field_id, data); 
     433         return; 
     434      } 
     435      else if (data_Zsize==-1) 
     436      { 
     437         ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize])); 
     438         std::copy(data_k8, data_k8+data->num_elements(), data->data()); 
     439         dtreat->write_data(__field_id, data); 
     440         return; 
     441      } 
     442      else 
     443      { 
     444         ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
     445         std::copy(data_k8, data_k8+data->num_elements(), data->data()); 
     446         dtreat->write_data(__field_id, data); 
     447         return; 
     448      } 
     449   } 
     450   catch (CException & exc) 
     451   { 
     452      std::cerr << exc.getMessage() << std::endl; 
     453      exit (EXIT_FAILURE); 
     454   } 
     455} 
     456 
     457//------------------------------------------------------------------- 
     458 
     459void xios_write_data_f(const XString _field_id, XSize _field_id_len, float * data_k4, 
     460                       XSize data_Xsize, XSize data_Ysize, XSize data_Zsize) 
     461{ 
     462   MAKE_STRING(__field_id, _field_id, _field_id_len); 
     463   try 
     464   { 
     465      boost::shared_ptr<CContext> context = 
     466      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     467      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     468      if (data_Ysize==-1 && data_Zsize==-1) 
     469      { 
     470         ARRAY(float, 1) data(new CArray<float, 1>(boost::extents [data_Xsize])); 
     471         std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     472         dtreat->write_data(__field_id, data); 
     473         return; 
     474      } 
     475      else if (data_Zsize==-1) 
     476      { 
     477         ARRAY(float, 2) data(new CArray<float, 2>(boost::extents [data_Xsize][data_Ysize])); 
     478         std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     479         dtreat->write_data(__field_id, data); 
     480         return; 
     481      } 
     482      else 
     483      { 
     484         ARRAY(float, 3) data(new CArray<float, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
     485         std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     486         dtreat->write_data(__field_id, data); 
     487         return; 
     488      } 
     489   } 
     490   catch (CException & exc) 
     491   { 
     492      std::cerr << exc.getMessage() << std::endl; 
     493      exit (EXIT_FAILURE); 
     494   } 
     495} 
     496 
    362497 
    363498//------------------------------------------------------------------- 
     
    367502   try 
    368503   { 
     504      boost::shared_ptr<CContext> context = 
     505      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     506      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     507      dtreat->update_calendar(step); 
    369508   } 
    370509   catch (CException & exc) 
     
    382521   try 
    383522   { 
     523      date::CDuration dur = {ts_year, ts_month, ts_day, ts_hour, ts_minute, ts_second}; 
     524      boost::shared_ptr<CContext> context = 
     525      CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     526      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     527      dtreat->set_timestep(dur); 
    384528   } 
    385529   catch (CException & exc) 
Note: See TracChangeset for help on using the changeset viewer.