Changeset 276
- Timestamp:
- 09/18/11 23:56:48 (13 years ago)
- Location:
- XMLIO_V2/dev/dev_rv
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/Makefile.wk
r269 r276 13 13 MCOLOR = no 14 14 SHOWCMD = yes 15 VTK = yes15 VTK = no 16 16 GUI = no 17 NPROC = 117 NPROC = 2 18 18 #VERSION = 4 19 19 CSUITE = gnu -
XMLIO_V2/dev/dev_rv/src/xmlio/client.cpp
r214 r276 16 16 CClient::~CClient(void) 17 17 { 18 this->finalize();18 //this->finalize(); 19 19 } 20 20 … … 27 27 boost::shared_ptr<CClient> CClient::CreateClient(MPIComm comm_client_server) 28 28 { 29 if (CClient::Client.get() != NULL)29 if (CClient::Client.get() == NULL) 30 30 CClient::Client = boost::shared_ptr<CClient>(new CClient(comm_client_server)); 31 31 return (CClient::GetClient()); -
XMLIO_V2/dev/dev_rv/src/xmlio/client.hpp
r214 r276 24 24 ~CClient(void); 25 25 26 p rotected:26 public : 27 27 28 28 /// Accesseur /// -
XMLIO_V2/dev/dev_rv/src/xmlio/config/context_attribute.conf
r271 r276 1 1 DECLARE_ATTRIBUTE(StdString, calendar_type) 2 2 DECLARE_ATTRIBUTE(StdString, start_date) 3 3 DECLARE_ATTRIBUTE(StdString, timestep) 4 4 DECLARE_ATTRIBUTE(StdString, output_dir) 5 5 -
XMLIO_V2/dev/dev_rv/src/xmlio/data_treatment.cpp
r265 r276 50 50 // Mise à jour cÃŽté client 51 51 this->currentContext->getCalendar()->setTimeStep(duration); 52 this->currentContext->timestep.setValue(duration.toString()); 52 53 std::cout << "timestep :" << duration << std::endl; 53 54 if (CXIOSManager::GetStatus() == CXIOSManager::LOC_CLIENT) … … 79 80 { 80 81 if (field->updateDataServer(currDate, data)) 82 { 81 83 file->getDataOutput()->writeFieldData(field); 84 } 82 85 return; 83 86 } -
XMLIO_V2/dev/dev_rv/src/xmlio/data_treatment.hpp
r271 r276 47 47 48 48 /// Création des sorties /// 49 template <class T> void createDataOutput( void);49 template <class T> void createDataOutput(comm::MPIComm comm_server = CXIOSManager::Comm_Server); 50 50 51 51 /// Destructeur /// … … 72 72 73 73 template <class T> 74 void CDataTreatment::createDataOutput( void)74 void CDataTreatment::createDataOutput(comm::MPIComm comm_server ) 75 75 { 76 76 std::vector<boost::shared_ptr<CFile> >::const_iterator … … 79 79 for (; it != end; it++) 80 80 { 81 CXIOSManager::Comm_Server = comm_server; 81 82 boost::shared_ptr<CFile> file = *it; 82 83 StdString filename = (!file->name.isEmpty()) … … 89 90 if (!file->name_suffix.isEmpty()) 90 91 oss << file->name_suffix.getValue(); 91 if (comm::CMPIManager::GetCommSize( ) > 1)92 oss << "_node" << comm::CMPIManager::GetCommRank();93 oss << ".nc";92 if (comm::CMPIManager::GetCommSize(comm_server) > 1) 93 oss << "." << comm::CMPIManager::GetCommRank(comm_server); 94 oss << ".nc"; 94 95 boost::shared_ptr<io::CDataOutput> dout(new T(oss.str(), false)); 95 96 file->initializeDataOutput(dout); -
XMLIO_V2/dev/dev_rv/src/xmlio/exception.cpp
r152 r276 23 23 24 24 CException::~CException(void) 25 { if (desc_rethrow) throw (*this); } 25 { 26 if (desc_rethrow) 27 #ifdef __XIOS_NOABORT 28 throw (*this); 29 #else 30 std::cerr << this->getMessage() << std::endl; 31 abort(); 32 #endif 33 } 26 34 27 35 //--------------------------------------------------------------- -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/fieldgroup_interface.f90
r270 r276 98 98 END SUBROUTINE xios_set_fieldgroup_default_value 99 99 100 SUBROUTINE xios_ domaingroup_handle_create(ret, idt, idt_size) BIND(C)100 SUBROUTINE xios_fieldgroup_handle_create(ret, idt, idt_size) BIND(C) 101 101 import C_CHAR, C_INTPTR_T, C_INT 102 102 INTEGER (kind = C_INTPTR_T) :: ret 103 103 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: idt 104 104 INTEGER (kind = C_INT) , VALUE :: idt_size 105 END SUBROUTINE xios_ domaingroup_handle_create105 END SUBROUTINE xios_fieldgroup_handle_create 106 106 107 107 END INTERFACE -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/file_interface.f90
r270 r276 17 17 INTEGER (kind = C_INT) , VALUE :: description_size 18 18 END SUBROUTINE xios_set_file_description 19 20 SUBROUTINE xios_set_file_name_suffix(file_hdl, name_suffix, name_suffix_size) BIND(C) 21 USE ISO_C_BINDING 22 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 23 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: name_suffix 24 INTEGER (kind = C_INT) , VALUE :: name_suffix_size 25 END SUBROUTINE xios_set_file_name_suffix 19 26 20 27 SUBROUTINE xios_set_file_output_freq(file_hdl, output_freq, output_freq_size) BIND(C) -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/filegroup_interface.f90
r270 r276 17 17 INTEGER (kind = C_INT) , VALUE :: description_size 18 18 END SUBROUTINE xios_set_filegroup_description 19 20 SUBROUTINE xios_set_filegroup_name_suffix(filegroup_hdl, name_suffix ,name_suffix_size) BIND(C) 21 USE ISO_C_BINDING 22 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 23 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: name_suffix 24 INTEGER (kind = C_INT) , VALUE :: name_suffix_size 25 END SUBROUTINE xios_set_filegroup_name_suffix 19 26 20 27 SUBROUTINE xios_set_filegroup_output_freq(filegroup_hdl, output_freq ,output_freq_size) BIND(C) -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icdata.cpp
r271 r276 39 39 CTreeManager::PrintTreeToFile(oss.str()); 40 40 oss.str(""); 41 42 41 boost::shared_ptr<CDataTreatment> dt(new CDataTreatment (context)); 43 42 context->setDataTreatment(dt); … … 67 66 CMPIManager::Wait(request); // Pas encore en mode RPC 68 67 } 68 CXIOSManager::RunClient(false, CMPIManager::GetCommWorld()); 69 CClient::CreateClient(comm_client_server); 69 70 } 70 71 else 71 72 { 72 dt->createDataOutput<CNc4DataOutput>( );73 dt->createDataOutput<CNc4DataOutput>(CMPIManager::GetCommWorld()); 73 74 } 74 75 } -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icdate.cpp
r270 r276 30 30 (CObjectFactory::GetCurrentContextId()); 31 31 boost::shared_ptr<xmlioserver::data::CDataTreatment> dtreat = context->getDataTreatment(); 32 dtreat->set_timestep(dur); 32 if (dtreat.get() != 0) 33 { 34 dtreat->set_timestep(dur); 35 } 36 else 37 { 38 context->solveCalendar(); 39 context->timestep.setValue(dur.toString()); 40 context->getCalendar()->setTimeStep(dur); 41 } 33 42 } 34 43 catch (xmlioserver::CException & exc) -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icfile.cpp
r271 r276 41 41 } 42 42 43 void xios_set_file_name_suffix(XFilePtr file_hdl, const char * name_suffix, int name_suffix_size) 44 { 45 std::string name_suffix_str; 46 if (!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return; 47 48 file_hdl->name_suffix.setValue(name_suffix_str); 49 } 50 43 51 void xios_set_file_output_freq(XFilePtr file_hdl, const char * output_freq, int output_freq_size) 44 52 { … … 76 84 77 85 filegroup_hdl->description.setValue(description_str); 86 } 87 88 void xios_set_filegroup_name_suffix(XFileGroupPtr filegroup_hdl, const char * name_suffix, int name_suffix_size) 89 { 90 std::string name_suffix_str; 91 if (!cstr2string(name_suffix, name_suffix_size, name_suffix_str)) return; 92 93 filegroup_hdl->name_suffix.setValue(name_suffix_str); 78 94 } 79 95 -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/idata.f90
r271 r276 70 70 END INTERFACE 71 71 72 INTERFACE write_data 73 MODULE PROCEDURE write_data_k81,write_data_k82,write_data_k83,write_data_k41,write_data_k42,write_data_k43 74 END INTERFACE 75 72 76 CONTAINS ! Fonctions disponibles pour les utilisateurs. 73 77 … … 78 82 79 83 SUBROUTINE dtreatment_start(context_hdl, filetype, comm_client_server, comm_server) 80 TYPE(XContextHandle), INTENT(IN) , VALUE:: context_hdl84 TYPE(XContextHandle), INTENT(IN) :: context_hdl 81 85 INTEGER , INTENT(IN), OPTIONAL :: filetype , comm_client_server , comm_server 82 86 INTEGER :: filetype_, comm_client_server_, comm_server_ … … 101 105 102 106 SUBROUTINE dtreatment_end(context_hdl) 103 TYPE(XContextHandle), INTENT(IN), VALUE:: context_hdl107 TYPE(XContextHandle), INTENT(IN), OPTIONAL :: context_hdl 104 108 CALL context_set_current(context_hdl) 105 109 CALL xios_dtreatment_end() -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/idomain.f90
r270 r276 25 25 26 26 SUBROUTINE set_domaingroup_attributes_id & 27 ( domaingroup_id, name_, standard_name_, long_name_, domain group_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,&27 ( domaingroup_id, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_, & 28 28 ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_, & 29 29 zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_, & 30 30 zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_) 31 31 IMPLICIT NONE 32 TYPE(XDomainGroupHandle) 32 TYPE(XDomainGroupHandle) :: domaingroup_hdl 33 33 CHARACTER(len = *) , INTENT(IN) :: domaingroup_id 34 34 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 35 35 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 36 36 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_ 37 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain group_group_ref_37 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref_ 38 38 INTEGER , OPTIONAL, INTENT(IN) :: ni_glo_ 39 39 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo_ … … 66 66 CALL domaingroup_handle_create(domaingroup_hdl, domaingroup_id) 67 67 CALL set_domaingroup_attributes_hdl & 68 ( domaingroup_hdl, name_, standard_name_, long_name_, domain group_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,&68 ( domaingroup_hdl, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_, & 69 69 ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_, & 70 70 zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_, & … … 74 74 75 75 SUBROUTINE set_domaingroup_attributes_hdl & 76 ( domaingroup_hdl,name_, standard_name_, long_name_, domain group_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,&76 ( domaingroup_hdl,name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_, & 77 77 ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_, & 78 78 zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_, & … … 83 83 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 84 84 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_ 85 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain group_group_ref_85 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_group_ref_ 86 86 INTEGER , OPTIONAL, INTENT(IN) :: ni_glo_ 87 87 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo_ … … 122 122 CALL xios_set_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_)) 123 123 END IF 124 IF (PRESENT(domain group_group_ref_)) THEN125 CALL xios_set_domaingroup_domain group_group_ref(domaingroup_hdl%daddr, domaingroup_group_ref_, len(domaingroup_group_ref_))124 IF (PRESENT(domain_group_ref_)) THEN 125 CALL xios_set_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_)) 126 126 END IF 127 127 IF (PRESENT(ni_glo_)) THEN -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ifield.f90
r270 r276 26 26 SUBROUTINE set_fieldgroup_attributes_id & 27 27 (fieldgroup_id, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, & 28 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field group_ref_, default_value_)28 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_) 29 29 30 30 IMPLICIT NONE … … 43 43 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 44 44 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref_ 45 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field group_ref_45 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_ 46 46 REAL(kind=8) , OPTIONAL, INTENT(IN) :: default_value_ 47 47 … … 49 49 CALL set_fieldgroup_attributes_hdl & 50 50 (fieldgroup_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, & 51 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field group_ref_, default_value_)51 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_) 52 52 53 53 END SUBROUTINE set_fieldgroup_attributes_id … … 55 55 SUBROUTINE set_fieldgroup_attributes_hdl & 56 56 (fieldgroup_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, & 57 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field group_ref_, default_value_)57 prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_) 58 58 IMPLICIT NONE 59 59 TYPE(XFieldgroupHandle) , INTENT(IN) :: fieldgroup_hdl … … 71 71 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 72 72 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: grid_ref_ 73 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field group_ref_73 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_ 74 74 REAL(kind=8) , OPTIONAL, INTENT(IN) :: default_value_ 75 75 … … 111 111 CALL xios_set_fieldgroup_grid_ref(fieldgroup_hdl%daddr, grid_ref_, len(grid_ref_)) 112 112 END IF 113 IF (PRESENT(field group_ref_)) THEN114 CALL xios_set_fieldgroup_field group_ref(fieldgroup_hdl%daddr, fieldgroup_ref_, len(fieldgroup_ref_))113 IF (PRESENT(field_ref_)) THEN 114 CALL xios_set_fieldgroup_field_ref(fieldgroup_hdl%daddr, field_ref_, len(field_ref_)) 115 115 END IF 116 116 IF (PRESENT(default_value_)) THEN -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ifile.f90
r270 r276 24 24 CONTAINS ! Fonctions disponibles pour les utilisateurs. 25 25 26 SUBROUTINE set_file_attributes_id(file_id, name_ , description_, output_freq_, output_level_, enabled_)26 SUBROUTINE set_file_attributes_id(file_id, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 27 27 IMPLICIT NONE 28 28 TYPE(XFileHandle) :: file_hdl … … 30 30 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_ 31 31 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_ 32 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_ 32 33 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_ 33 34 INTEGER , OPTIONAL, INTENT(IN) :: output_level_ … … 35 36 36 37 CALL file_handle_create(file_hdl, file_id) 37 CALL set_file_attributes_hdl(file_hdl, name_ , description_, output_freq_, output_level_, enabled_)38 CALL set_file_attributes_hdl(file_hdl, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 38 39 39 40 END SUBROUTINE set_file_attributes_id 40 41 41 SUBROUTINE set_file_attributes_hdl(file_hdl, name_ , description_, output_freq_, output_level_, enabled_)42 SUBROUTINE set_file_attributes_hdl(file_hdl, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 42 43 TYPE(XFileHandle) , INTENT(IN) :: file_hdl 43 44 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_ 44 45 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_ 46 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_ 45 47 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_ 46 48 INTEGER , OPTIONAL, INTENT(IN) :: output_level_ … … 54 56 IF (PRESENT(description_)) THEN 55 57 CALL xios_set_file_description(file_hdl%daddr, description_, len(description_)) 58 END IF 59 IF (PRESENT(name_suffix_)) THEN 60 CALL xios_set_file_name_suffix(file_hdl%daddr, name_suffix_, len(name_suffix_)) 56 61 END IF 57 62 IF (PRESENT(output_freq_)) THEN … … 67 72 END SUBROUTINE set_file_attributes_hdl 68 73 69 SUBROUTINE set_filegroup_attributes_id(filegroup_id, name_ , description_, output_freq_, output_level_, enabled_)74 SUBROUTINE set_filegroup_attributes_id(filegroup_id, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 70 75 IMPLICIT NONE 71 76 TYPE(XFileGroupHandle) :: filegroup_hdl … … 73 78 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_ 74 79 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_ 80 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_ 75 81 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_ 76 82 INTEGER , OPTIONAL, INTENT(IN) :: output_level_ … … 78 84 79 85 CALL filegroup_handle_create(filegroup_hdl, filegroup_id) 80 CALL set_filegroup_attributes_hdl(filegroup_hdl, name_ , description_, output_freq_, output_level_, enabled_)86 CALL set_filegroup_attributes_hdl(filegroup_hdl, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 81 87 82 88 END SUBROUTINE set_filegroup_attributes_id 83 89 84 SUBROUTINE set_filegroup_attributes_hdl(filegroup_hdl, name_ , description_, output_freq_, output_level_, enabled_)90 SUBROUTINE set_filegroup_attributes_hdl(filegroup_hdl, name_ , description_, name_suffix_, output_freq_, output_level_, enabled_) 85 91 IMPLICIT NONE 86 92 TYPE(XFileGroupHandle) , INTENT(IN) :: filegroup_hdl 87 93 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_ 88 94 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description_ 95 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix_ 89 96 CHARACTER(len = *), OPTIONAL, INTENT(IN) :: output_freq_ 90 97 INTEGER , OPTIONAL, INTENT(IN) :: output_level_ … … 98 105 IF (PRESENT(description_)) THEN 99 106 CALL xios_set_filegroup_description(filegroup_hdl%daddr, description_, len(description_)) 107 END IF 108 IF (PRESENT(name_suffix_)) THEN 109 CALL xios_set_filegroup_name_suffix(filegroup_hdl%daddr, name_suffix_, len(name_suffix_)) 100 110 END IF 101 111 IF (PRESENT(output_freq_)) THEN -
XMLIO_V2/dev/dev_rv/src/xmlio/main_server.cpp
r271 r276 7 7 #include "client.hpp" 8 8 #include "server.hpp" 9 9 extern "C" 10 { 11 void xios_dtreatment_start(tree::CContext * context_hdl, int filetype, int comm_client_server, int comm_server); 12 void xios_set_timestep(double ts_year, double ts_month, double ts_day, 13 double ts_hour, double ts_minute, double ts_second); 14 void xios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize); 15 void xios_update_calendar(int step); 16 } 10 17 // Point d'entrée du programme principal 11 18 … … 15 22 { 16 23 MPIComm comm_client, comm_client_server, comm_server; 17 comm::CMPIManager::Initialise(&argc, &argv); // < seulement en mode connecté 18 19 CTreeManager::ParseFile ("test/iodef_simple_test.xml"); 20 CTreeManager::PrintTreeToFile("wk/def/test.xml"); 21 22 comm::CMPIManager::Finalize(); // < seulement en mode connecté 23 24 //CXIOSManager::Initialise (CXIOSManager::CLIENT_SERVER, &argc, &argv); 25 //CMPIManager::DispatchClient(true, comm_client, comm_client_server, comm_server); 26 //CXIOSManager::RunServer("Nemo", comm_client_server, comm_server); 27 //CXIOSManager::Finalize (); 24 CXIOSManager::Initialise (CXIOSManager::CLIENT_SERVER, &argc, &argv); 25 if (CMPIManager::GetCommRank() == 0) 26 { 27 CMPIManager ::DispatchClient(true, comm_client, comm_client_server, comm_server); 28 CXIOSManager::RunServer("Nemo", comm_client_server, comm_server); 29 CServer::CreateServer(comm_client_server)->run(); 30 } 31 else 32 { 33 ARRAY_CREATE(data, double, 3, [20][30][20]); 34 35 CMPIManager ::DispatchClient(false, comm_client, comm_client_server, comm_server); 36 CTreeManager::ParseFile("iodef.xml"); 37 boost::shared_ptr<CContext> context = 38 CObjectFactory::GetObject<CContext>("context1"); 39 xios_set_timestep(0, 0, 0, 1, 0, 0); 40 xios_dtreatment_start(context.get(), 0, comm_client_server, -1); 41 for (int i = 0; i < 200; i++) 42 { 43 xios_update_calendar(i); 44 for (int i = 0, l=0; i < 20; i++) 45 for (int j = 0; j < 30; j++) 46 for (int k = 0; k < 20; k++, l++) 47 (*data)[i][j][k] = l*10+i; 48 xios_write_data_k83("champ1", 6, data->data(), 20, 30, 20); 49 } 50 CClient::GetClient()->finalize(); 51 } 52 CXIOSManager::Finalize (); 53 28 54 } 29 55 catch (CException & exc) -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.cpp
r271 r276 27 27 { 28 28 if (CXIOSManager::Type != CLIENT) 29 29 30 { 30 31 // Finalisation de la biliothÚque MPI si nécessaire … … 53 54 { 54 55 using namespace comm; 56 CXIOSManager::Comm_Client_Server = comm_client_server; 57 CXIOSManager::Comm_Server = comm_server; 58 CXIOSManager::Status = LOC_SERVER; 55 59 56 60 // Reconstruction de l'arborescence d'objet à l'aide des données envoyées par chacun des … … 67 71 StdString main_data_tree = clientBuffer[0]->getString(0); 68 72 tree::CTreeManager::FromBinary(main_data_tree); 69 std::cout << "main_data_tree" << main_data_tree.size() << std::endl;70 73 71 74 // Obtention des sous-domaines clients. … … 156 159 using namespace comm; 157 160 typedef std::pair<StdString, XIOSClient> StdPairStrClient; 161 CXIOSManager::Comm_Client_Server = comm_client_server; 162 CXIOSManager::Comm_Server = comm_client_server; 158 163 159 164 CXIOSManager::ShowInformation_CS(comm_client_server); … … 244 249 if (launch) 245 250 { 246 CXIOSManager::Status = LOC_CLIENT_SERVER; 251 CXIOSManager::Status = LOC_CLIENT_SERVER; 252 CXIOSManager::Comm_Server = comm_client; 247 253 (CXIOSManager::Clients.begin()->second.entry) 248 254 (comm_client, comm_client, comm_client); -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.hpp
r271 r276 55 55 static StdString GetClientName(void); 56 56 57 p rotected:57 public : 58 58 59 59 static StdSize GetNbClient(void); … … 63 63 static StdSize GetNbLocServer(const StdString & clientName = CXIOSManager::ClientName); 64 64 65 p rivate:65 public : 66 66 67 67 /// Information /// -
XMLIO_V2/dev/dev_rv/src/xmlio/node/context.cpp
r271 r276 8 8 9 9 #include "calendar_type.hpp" 10 #include "duration.hpp" 10 11 11 12 #include "data_treatment.hpp" … … 82 83 << "Impossible de définir un calendrier (un attribut est manquant)."); 83 84 84 #define DECLARE_CALENDAR(MType , mtype) \ 85 if (calendar_type.getValue().compare(#mtype) == 0) \ 86 { \ 87 this->calendar = boost::shared_ptr<date::CCalendar> \ 88 (new date::C##MType##Calendar(start_date.getValue())); \ 89 return; \ 85 #define DECLARE_CALENDAR(MType , mtype) \ 86 if (calendar_type.getValue().compare(#mtype) == 0) \ 87 { \ 88 this->calendar = boost::shared_ptr<date::CCalendar> \ 89 (new date::C##MType##Calendar(start_date.getValue())); \ 90 if (!this->timestep.isEmpty()) \ 91 this->calendar->setTimeStep \ 92 (date::CDuration::FromString(this->timestep.getValue())); \ 93 return; \ 90 94 } 91 95 #include "calendar_type.conf" -
XMLIO_V2/dev/dev_rv/src/xmlio/node/domain.cpp
r271 r276 20 20 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[0][0])), relFiles() 21 21 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub() 22 , ibegin_zoom_sub(), jbegin_zoom_sub() 22 , ibegin_zoom_sub(), jbegin_zoom_sub(), ni_zoom_sub(), nj_zoom_sub() 23 23 , lonvalue_sub(), latvalue_sub() 24 24 { /* Ne rien faire de plus */ } … … 28 28 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[0][0])), relFiles() 29 29 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub() 30 , ibegin_zoom_sub(), jbegin_zoom_sub() 30 , ibegin_zoom_sub(), jbegin_zoom_sub(),ni_zoom_sub(), nj_zoom_sub() 31 31 , lonvalue_sub(), latvalue_sub() 32 32 { /* Ne rien faire de plus */ } … … 100 100 this->ibegin_zoom_sub.push_back(this->zoom_ibegin_loc.getValue()); 101 101 this->jbegin_zoom_sub.push_back(this->zoom_jbegin_loc.getValue()); 102 this->ni_zoom_sub.push_back(this->zoom_ni_loc.getValue()); 103 this->nj_zoom_sub.push_back(this->zoom_nj_loc.getValue()); 102 104 103 105 this->latvalue_sub.push_back(this->latvalue.getValue()); … … 151 153 (nj_glo.isEmpty() || nj_glo.getValue() <= 0 )) 152 154 { 153 abort();154 155 ERROR("CDomain::checkAttributes(void)", 155 156 << "[ Id = " << this->getId() << " ] " … … 454 455 for (int j = 0; j < zoom_nj_client; j++) 455 456 { 456 (*lonvalue_temp)[i + j * zoom_ni_client] = (*lonvalue_)[(i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni.getValue()]; 457 (*latvalue_temp)[i + j * zoom_ni_client] = (*latvalue_)[(i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni.getValue()]; 457 (*lonvalue_temp)[i + j * zoom_ni_client] = 458 (*lonvalue_)[(i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni.getValue()]; 459 (*latvalue_temp)[i + j * zoom_ni_client] = 460 (*latvalue_)[(i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni.getValue()]; 458 461 } 459 462 } … … 488 491 ARRAY_CREATE(latvalue_temp, double, 1, [0]); 489 492 490 const int ibegin_serv = ibegin.getValue(), 491 jbegin_serv = jbegin.getValue(), 492 zoom_ni_serv = zoom_ni_loc.getValue(), 493 zoom_nj_serv = zoom_nj_loc.getValue(); 493 const int ibegin_serv = ibegin.getValue(), 494 jbegin_serv = jbegin.getValue(), 495 zoom_ni_serv = zoom_ni_loc.getValue(), 496 zoom_nj_serv = zoom_nj_loc.getValue(), 497 ibegin_zoom_srv = zoom_ibegin_loc.getValue(), 498 jbegin_zoom_srv = zoom_jbegin_loc.getValue(); 494 499 495 500 /*std::cout << "Rang du serveur :" << comm::CMPIManager::GetCommRank() << std::endl … … 498 503 << "Zoom_loc begin : " << zoom_ibegin_loc << ", " << zoom_jbegin_loc << std::endl 499 504 << "Zoom_loc size : " << zoom_ni_loc << ", " << zoom_nj_loc << std::endl;*/ 500 501 502 ARRAY(double, 1) lonvalue_ = this->lonvalue.getValue(),503 latvalue_ = this->latvalue.getValue();504 505 505 506 if (this->data_dim.getValue() == 2) 506 507 { 507 StdSize dm = zoom_ni_serv * zoom_nj_serv; 508 StdSize dn = this->ni.getValue() * this->nj.getValue(); 509 510 lonvalue_->resize(boost::extents[dn]); 511 latvalue_->resize(boost::extents[dn]); 508 StdSize dm = zoom_ni_serv * zoom_nj_serv; 509 512 510 lonvalue_temp->resize(boost::extents[dm]); 513 511 latvalue_temp->resize(boost::extents[dm]); … … 515 513 for (StdSize k = 0; k < lonvalue_sub.size(); k++) 516 514 { 517 int l = 0;518 515 ARRAY(double, 1) lonvalue_loc = this->lonvalue_sub[k], 519 516 latvalue_loc = this->latvalue_sub[k]; 520 const int ibegin_loc = ibegin_sub[k], iend_loc = iend_sub[k], 521 jbegin_loc = jbegin_sub[k], jend_loc = jend_sub[k]; 517 const int zoom_ibegin_cl = ibegin_zoom_sub[k], zoom_ni_cl = ni_zoom_sub[k], 518 zoom_jbegin_cl = jbegin_zoom_sub[k], zoom_nj_cl = nj_zoom_sub[k], 519 ni_cl = iend_sub[k] - ibegin_sub[k] + 1; 522 520 523 for (int i = ibegin_loc - ibegin_serv; i < (iend_loc - ibegin_serv + 1); i++)521 for (int i = zoom_ibegin_cl - 1; i < zoom_ibegin_cl + zoom_ni_cl - 1; i++) 524 522 { 525 for (int j = jbegin_loc - jbegin_serv; j < (jend_loc - jbegin_serv + 1); j++)523 for (int j = zoom_jbegin_cl-1; j < zoom_jbegin_cl + zoom_nj_cl - 1; j++) 526 524 { 527 (*lonvalue_)[i + j * this->ni.getValue()] = (*lonvalue_loc)[l]; // erreur 528 (*latvalue_)[i + j * this->ni.getValue()] = (*latvalue_loc)[l++]; // erreur 525 int ii = i - (ibegin_serv - 1) + (zoom_ibegin_cl - 1) - (ibegin_zoom_srv - 1); 526 int jj = j - (jbegin_serv - 1) + (zoom_jbegin_cl - 1) - (jbegin_zoom_srv - 1); 527 (*lonvalue_temp)[ii + jj * zoom_ni_serv] = 528 (*lonvalue_loc)[i + j * ni_cl]; 529 (*latvalue_temp)[ii + jj * zoom_ni_serv] = 530 (*latvalue_loc)[i + j * ni_cl]; 529 531 } 530 532 } … … 535 537 else 536 538 { 537 lonvalue_->resize(boost::extents[this->ni.getValue()]);538 latvalue_->resize(boost::extents[this->nj.getValue()]);539 539 lonvalue_temp->resize(boost::extents[zoom_ni_serv]); 540 540 latvalue_temp->resize(boost::extents[zoom_nj_serv]); … … 542 542 for (StdSize k = 0; k < lonvalue_sub.size(); k++) 543 543 { 544 int l = 0;545 544 ARRAY(double, 1) lonvalue_loc = this->lonvalue_sub[k], 546 545 latvalue_loc = this->latvalue_sub[k]; 547 const int ibegin_loc = ibegin_sub[k], iend_loc = iend_sub[k],548 jbegin_loc = jbegin_sub[k], jend_loc = jend_sub[k];546 const int zoom_ibegin_cl = ibegin_zoom_sub[k], zoom_ni_cl = ni_zoom_sub[k], 547 zoom_jbegin_cl = jbegin_zoom_sub[k], zoom_nj_cl = nj_zoom_sub[k]; 549 548 550 for (int i = ibegin_loc - ibegin_serv; i < (iend_loc - ibegin_loc + 1); i++) 551 (*lonvalue_)[i] = (*lonvalue_loc)[l++]; 549 for (int i = zoom_ibegin_cl - 1; i < zoom_ibegin_cl + zoom_ni_cl - 1; i++) 550 (*lonvalue_temp)[i - (ibegin_serv - 1) + (zoom_ibegin_cl - 1) - (ibegin_zoom_srv - 1)] = 551 (*lonvalue_loc)[i]; 552 552 553 for (int j = jbegin_loc - jbegin_serv; j < (jend_loc - jbegin_loc + 1); j++) 554 (*latvalue_)[j] = (*latvalue_loc)[l++]; 553 for (int j = zoom_jbegin_cl-1; j < zoom_jbegin_cl + zoom_nj_cl - 1; j++) 554 (*latvalue_temp)[j - (jbegin_serv - 1) + (zoom_jbegin_cl - 1) - (jbegin_zoom_srv - 1)] = 555 (*latvalue_loc)[j]; 555 556 } 556 557 this->lonvalue.setValue(lonvalue_temp); -
XMLIO_V2/dev/dev_rv/src/xmlio/node/domain.hpp
r271 r276 113 113 114 114 std::vector<int> ibegin_sub, iend_sub, jbegin_sub, jend_sub; 115 std::vector<int> ibegin_zoom_sub, jbegin_zoom_sub ;115 std::vector<int> ibegin_zoom_sub, jbegin_zoom_sub, ni_zoom_sub, nj_zoom_sub; 116 116 std::vector<ARRAY(double, 1)> lonvalue_sub, latvalue_sub; 117 117 -
XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp
r265 r276 47 47 48 48 bool CField::updateDataServer 49 (const date::CDate & currDate, const std::deque<ARRAY(double, 1)> storedClient) 50 { 51 if ((*last_operation + freq_operation) >= currDate) 52 { 53 ARRAY_CREATE(input, double, 1, [0]); 54 this->grid->inputFieldServer(storedClient, input); 49 (const date::CDate & currDate, 50 const std::deque<ARRAY(double, 1)> storedClient) 51 { 52 const date::CDate opeDate = *last_operation + freq_operation; 53 const date::CDate writeDate = *last_Write + freq_write; 54 55 if (opeDate <= currDate) 56 { 57 if (this->data->num_elements() != this->grid->storeIndex[0]->num_elements()) 58 { 59 this->data->resize(boost::extents[this->grid->storeIndex[0] ->num_elements()]); 60 } 61 ARRAY_CREATE(input, double, 1, [this->data->num_elements()]); 62 this->grid->inputFieldServer(storedClient, input); 55 63 (*this->foperation)(input); 56 64 *last_operation = currDate; 57 65 } 58 59 if ((*last_Write + freq_write) >= currDate) 60 { 61 *last_Write = currDate; 62 return (true); 66 if (writeDate < (currDate + freq_operation)) 67 { 68 this->foperation->final(); 69 this->incrementNStep(); 70 *last_Write = writeDate; 71 return (true); 63 72 } 64 73 return (false); … … 232 241 << "Impossible de définir une opération pour le champ !"); 233 242 } 243 244 CDuration freq_offset_ = NoneDu; 245 if (!freq_offset.isEmpty()) 246 { 247 freq_offset_ = CDuration::FromString(freq_offset.getValue()); 248 } 249 else 250 { 251 freq_offset.setValue(NoneDu.toString()); 252 } 234 253 235 254 if (CXIOSManager::GetStatus() == CXIOSManager::LOC_SERVER) … … 245 264 this->foperation = 246 265 boost::shared_ptr<func::CFunctor>(new CInstant(this->data)); 266 267 const CDuration toffset = this->freq_operation - freq_offset_ - _context->getCalendar()->getTimeStep(); 268 *this->last_operation = *this->last_operation - toffset; 247 269 } 248 270 else 249 { 250 CDuration freq_offset_ = NoneDu; 251 if (!freq_offset.isEmpty()) 252 { 253 freq_offset_ = CDuration::FromString(freq_offset.getValue()); 254 } 255 else 256 { 257 freq_offset.setValue(NoneDu.toString()); 258 } 259 271 { 260 272 this->freq_operation = CDuration::FromString(freq_op.getValue()); 261 273 this->freq_write = CDuration::FromString(this->file->output_freq.getValue()); … … 264 276 this->last_operation = boost::shared_ptr<xmlioserver::date::CDate> 265 277 (new date::CDate(_context->getCalendar()->getInitDate())); 278 266 279 const CDuration toffset = this->freq_operation - freq_offset_ - _context->getCalendar()->getTimeStep(); 267 *this->last_operation = *this->last_operation - toffset;280 *this->last_operation = *this->last_operation - toffset; 268 281 269 282 #define DECLARE_FUNCTOR(MType, mtype) \ -
XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp
r267 r276 170 170 { 171 171 //std::cout << "> " << currDate << ": Operation du champs" << this->getBaseFieldId() << std::endl; 172 173 172 if (this->data->num_elements() != this->grid->storeIndex[0]->num_elements()) 174 173 { -
XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp
r271 r276 463 463 ARRAY(int, 1) out_j_index_cl = this->out_j_index[i + 1]; 464 464 ARRAY(int, 1) out_l_index_cl = this->out_l_index[i + 1]; 465 466 const int ibegin_cl = ibegin[i]; 467 const int jbegin_cl = jbegin[i]; 468 465 469 466 int ibegin_zoom_cl = ibegin[i]; //ibegin_zoom[i]; 470 467 int jbegin_zoom_cl = jbegin[i]; //jbegin_zoom[i]; … … 532 529 this->out_i_index[0] = out_i_index_srv; 533 530 this->out_j_index[0] = out_j_index_srv; 534 this->out_l_index[0] = out_l_index_srv; 535 536 this->storeIndex.resize(1); 537 this->out_i_index.resize(1); 538 this->out_j_index.resize(1); 539 this->out_l_index.resize(1); 540 531 this->out_l_index[0] = out_l_index_srv; 541 532 } 542 533 … … 552 543 << "Les données d'un client sont manquantes !") ; 553 544 if (storedServer.get() != NULL) 554 storedServer->resize(boost::extents[this->storeIndex .size()-1]);545 storedServer->resize(boost::extents[this->storeIndex[0]->num_elements()]); 555 546 else 556 ARRAY_ASSIGN(storedServer, double, 1, [this->storeIndex .size()-1]);547 ARRAY_ASSIGN(storedServer, double, 1, [this->storeIndex[0]->num_elements()]); 557 548 558 549 for (StdSize i = 0, n = 0; i < storedClient.size(); i++) -
XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp
r272 r276 8 8 #include "file.hpp" 9 9 #include "calendar.hpp" 10 #include "xios_manager.hpp" 11 #include "context.hpp" 10 12 11 13 namespace xmlioserver … … 104 106 SuperClassWriter::addDimension(lonid_loc, domain->zoom_ni_loc.getValue()); 105 107 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); 108 if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 109 { 110 this->writeLocalAttributes(domain->zoom_ibegin_loc.getValue(), 111 domain->zoom_ni_loc.getValue(), 112 domain->zoom_jbegin_loc.getValue(), 113 domain->zoom_nj_loc.getValue(), 114 domid); 115 } 116 111 117 if (isCurvilinear) 112 118 { … … 128 134 dim0.push_back(lonid_loc); 129 135 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()*/); 136 if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 137 { 138 SuperClassWriter::addVariable(maskid, NC_INT, dim0); 139 140 this->writeMaskAttributes(maskid, 141 domain->data_dim.getValue()/*, 142 domain->data_ni.getValue(), 143 domain->data_nj.getValue(), 144 domain->data_ibegin.getValue(), 145 domain->data_jbegin.getValue()*/); 146 } 138 147 139 148 //SuperClassWriter::setDefaultValue(maskid, &dvm); … … 142 151 SuperClassWriter::writeData(domain->latvalue.getValue(), latid, true, 0); 143 152 SuperClassWriter::writeData(domain->lonvalue.getValue(), lonid, true, 0); 144 SuperClassWriter::writeData(mask, maskid); 153 if (comm::CMPIManager::GetCommSize(CXIOSManager::Comm_Server) > 1) 154 SuperClassWriter::writeData(mask, maskid); 145 155 SuperClassWriter::definition_start(); 146 156 … … 169 179 switch (SuperClass::type) 170 180 { 181 case (ONE_FILE) : 171 182 case (MULTI_FILE) : 172 183 { … … 376 387 ? field->name.getValue() 377 388 : field->getBaseFieldReference()->getId(); 389 boost::shared_ptr<xmlioserver::tree::CContext> context = 390 CObjectFactory::GetObject<xmlioserver::tree::CContext> 391 (CObjectFactory::GetCurrentContextId()); 392 393 StdOStringStream oss; 394 oss << "time_" << field->operation.getValue() 395 << "_" << field->getRelFile()->output_freq.getValue(); 396 378 397 ARRAY(double, 1) field_data = field->getData(); 398 ARRAY_CREATE(time_data, double, 1, [1]); 399 (*time_data)[0] = date::Time(*field->getLastWriteDate()); 379 400 380 401 if (grid->hasAxis()) // 3D … … 383 404 grid->outputField(field_data, field_data3D); 384 405 SuperClassWriter::writeData(field_data3D, fieldid, true, field->getNStep()-1); 406 SuperClassWriter::writeData(time_data, oss.str(), true, field->getNStep()-1); 385 407 386 408 } … … 390 412 grid->outputField(field_data, field_data2D); 391 413 SuperClassWriter::writeData(field_data2D, fieldid, true, field->getNStep()-1); 414 SuperClassWriter::writeData(time_data, oss.str(), true, field->getNStep()-1); 392 415 } 393 416 } -
XMLIO_V2/dev/dev_rv/src/xmlio/server.cpp
r272 r276 33 33 boost::shared_ptr<CServer> CServer::CreateServer(MPIComm comm_client_server) 34 34 { 35 if (CServer::Server.get() != NULL)35 if (CServer::Server.get() == NULL) 36 36 CServer::Server = boost::shared_ptr<CServer>(new CServer(comm_client_server)); 37 37 return (CServer::GetServer()); … … 140 140 void CServer::initialize(void) // manager 0, method 0 141 141 { 142 // Ne rien faire de plus142 std::cout << "initialize" << std::endl; 143 143 } 144 144 … … 147 147 void CServer::finalize(void) // manager 0, method 1 148 148 { 149 std::cout << "finalize" << std::endl; 149 150 comm::CMPIManager::Barrier(); 150 151 }
Note: See TracChangeset
for help on using the changeset viewer.