Ignore:
Timestamp:
02/13/12 19:35:25 (12 years ago)
Author:
ymipsl
Message:

nouvelle version de developpement de xios

  • nouvelle interface fortran
  • recodage complet de la couche de communication
  • et bien d'autres choses...

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/common/src/fortran/icdata.cpp

    r286 r300  
    1919#include "mpi_manager.hpp" 
    2020#include "buffer.hpp" 
     21#include "cxios.hpp" 
     22#include "client_ym.hpp" 
     23#include "field.hpp" 
    2124 
    2225extern "C" 
     
    3134 
    3235   // -------------------- Traitement des données ------------------------------ 
     36   void cxios_init_server(void) 
     37   { 
     38     CXios::initServerSide();       
     39   } 
     40 
     41   void cxios_init_client(const char * client_id , int len_client_id, MPI_Fint* f_local_comm, MPI_Fint* f_return_comm ) 
     42   { 
     43      std::string str;  
     44      MPI_Comm local_comm ; 
     45      MPI_Comm return_comm ; 
     46       
     47      if (!cstr2string(client_id, len_client_id, str)) return; 
     48       
     49      int initialized ; 
     50      MPI_Initialized(&initialized) ; 
     51      if (initialized) local_comm=MPI_Comm_f2c(*f_local_comm) ; 
     52      else local_comm=MPI_COMM_NULL ; 
     53      CXios::initClientSide(str,local_comm,return_comm); 
     54      *f_return_comm=MPI_Comm_c2f(return_comm) ; 
     55   } 
     56 
     57   void cxios_context_initialize(const char * context_id , int len_context_id, MPI_Fint* f_comm) 
     58   { 
     59     std::string str;  
     60     MPI_Comm comm ; 
     61      
     62     if (!cstr2string(context_id, len_context_id, str)) return; 
     63     comm=MPI_Comm_f2c(*f_comm) ; 
     64     ym::CClient::registerContext(context_id,comm) ; 
     65   } 
     66  
     67    void cxios_context_close_definition() 
     68   { 
     69     boost::shared_ptr<CContext> context = 
     70            CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     71     context->closeDefinition() ; 
     72   }   
     73 
     74   void cxios_context_finalize() 
     75   { 
     76     boost::shared_ptr<CContext> context = 
     77            CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     78     context->finalize() ; 
     79   } 
     80    
     81   void cxios_finalize() 
     82   { 
     83     CXios::clientFinalize() ; 
     84   } 
     85 
    3386    
    3487   void cxios_dtreatment_start() 
     
    60113            MPI_Request request = 0; 
    61114            StdOStringStream ostrs; 
    62 /* 
    63             if (CMPIManager::GetCommRank(comm_client_server) == 1) 
    64             { 
    65                CTreeManager::ToBinary(ostrs); 
    66                CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 
    67                std::cout<<"lbuffer size "<<ostrs.str().size()<<std::endl ; 
    68                lbuffer.appendString(ostrs.str()); 
    69                CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 
    70                CMPIManager::Wait(request);  // Pas encore en mode RPC 
    71             } 
    72             else 
    73             { 
    74                CTreeManager::DomainsToBinary(ostrs); 
    75                CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize());  
    76                std::cout<<"lbuffer size "<<ostrs.str().size()<<std::endl ; 
    77                lbuffer.appendString(ostrs.str()); 
    78                CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 
    79                CMPIManager::Wait(request);  // Pas encore en mode RPC 
    80             } 
    81 */ 
     115 
    82116            CTreeManager::ToBinary(ostrs); 
    83117            CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 
     
    172206      ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize])); 
    173207      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    174       dtreat->write_data(fieldid_str, data); 
     208       
     209//      dtreat->write_data(fieldid_str, data); 
     210      CField::get(fieldid)->setData(data) ; 
    175211   } 
    176212    
     
    188224      ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize])); 
    189225      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    190       dtreat->write_data(fieldid_str, data); 
     226//      dtreat->write_data(fieldid_str, data); 
     227      CField::get(fieldid)->setData(data) ; 
    191228   } 
    192229    
     
    204241      ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
    205242      std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    206       dtreat->write_data(fieldid_str, data); 
     243//      dtreat->write_data(fieldid_str, data); 
     244      CField::get(fieldid)->setData(data) ; 
     245 
    207246   } 
    208247    
     
    218257//          boost::extents [data_Xsize], 
    219258//          boost::fortran_storage_order()); 
    220       ARRAY(float, 1) data(new CArray<float, 1>(boost::extents [data_Xsize])); 
    221       std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    222       dtreat->write_data(fieldid_str, data); 
     259//      ARRAY(float, 1) data(new CArray<float, 1>(boost::extents [data_Xsize])); 
     260//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     261//      dtreat->write_data(fieldid_str, data); 
     262      ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize])); 
     263      double* ptr_data=data->data() ;  
     264      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     265      CField::get(fieldid)->setData(data) ; 
    223266   } 
    224267    
     
    234277//          boost::extents [data_Xsize][data_Ysize], 
    235278//          boost::fortran_storage_order()); 
    236       ARRAY(float, 2) data(new CArray<float, 2>(boost::extents [data_Xsize][data_Ysize])); 
    237       std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    238       dtreat->write_data(fieldid_str, data); 
     279//      ARRAY(float, 2) data(new CArray<float, 2>(boost::extents [data_Xsize][data_Ysize])); 
     280//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     281//      dtreat->write_data(fieldid_str, data); 
     282      ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize])); 
     283      double* ptr_data=data->data() ;  
     284      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     285      CField::get(fieldid)->setData(data) ; 
    239286   } 
    240287    
     
    250297//          boost::extents [data_Xsize][data_Ysize][data_Zsize], 
    251298//          boost::fortran_storage_order()); 
    252       ARRAY(float, 3) data(new CArray<float, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
    253       std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    254       dtreat->write_data(fieldid_str, data); 
    255    }  
     299//      ARRAY(float, 3) data(new CArray<float, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
     300//      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
     301//      dtreat->write_data(fieldid_str, data); 
     302      ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
     303      double* ptr_data=data->data() ;  
     304      for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     305      CField::get(fieldid)->setData(data) ; 
     306    }  
    256307 
    257308} // extern "C" 
Note: See TracChangeset for help on using the changeset viewer.