Changeset 798
- Timestamp:
- 11/27/15 09:55:05 (9 years ago)
- Location:
- XIOS/branchs/xios-1.0/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/branchs/xios-1.0/src/config/file_attribute.conf
r692 r798 14 14 DECLARE_ATTRIBUTE(StdString, par_access) 15 15 DECLARE_ENUM4(time_counter, centered, instant, record, none) 16 DECLARE_ATTRIBUTE(bool, append) 16 17 17 18 DECLARE_ATTRIBUTE(int, compression_level) -
XIOS/branchs/xios-1.0/src/data_output.hpp
r501 r798 32 32 virtual void definition_end(void) = 0; 33 33 34 //!< Test if the file was opened in append mode 35 virtual bool IsInAppendMode() const { return appendMode; }; 36 34 37 virtual ~CDataOutput(void); 35 38 … … 56 59 /// Propriétés protégées /// 57 60 EDataOutputType type; 61 bool appendMode; //!< If true, we are appending data to an existing file 58 62 59 63 }; // class CDataOutput -
XIOS/branchs/xios-1.0/src/interface/c_attr/icfile_attr.cpp
r703 r798 17 17 typedef xios::CFile* file_Ptr; 18 18 19 void cxios_set_file_append(file_Ptr file_hdl, bool append) 20 { 21 CTimer::get("XIOS").resume(); 22 file_hdl->append.setValue(append); 23 file_hdl->sendAttributToServer(file_hdl->append); 24 CTimer::get("XIOS").suspend(); 25 } 26 27 void cxios_get_file_append(file_Ptr file_hdl, bool* append) 28 { 29 *append = file_hdl->append.getInheritedValue(); 30 } 31 32 bool cxios_is_defined_file_append(file_Ptr file_hdl ) 33 { 34 CTimer::get("XIOS").resume(); 35 bool isDefined = file_hdl->append.hasInheritedValue(); 36 CTimer::get("XIOS").suspend(); 37 return isDefined; 38 } 39 40 41 19 42 void cxios_set_file_compression_level(file_Ptr file_hdl, int compression_level) 20 43 { -
XIOS/branchs/xios-1.0/src/interface/c_attr/icfilegroup_attr.cpp
r703 r798 17 17 typedef xios::CFileGroup* filegroup_Ptr; 18 18 19 void cxios_set_filegroup_append(filegroup_Ptr filegroup_hdl, bool append) 20 { 21 CTimer::get("XIOS").resume(); 22 filegroup_hdl->append.setValue(append); 23 filegroup_hdl->sendAttributToServer(filegroup_hdl->append); 24 CTimer::get("XIOS").suspend(); 25 } 26 27 void cxios_get_filegroup_append(filegroup_Ptr filegroup_hdl, bool* append) 28 { 29 *append = filegroup_hdl->append.getInheritedValue(); 30 } 31 32 bool cxios_is_defined_filegroup_append(filegroup_Ptr filegroup_hdl ) 33 { 34 CTimer::get("XIOS").resume(); 35 bool isDefined = filegroup_hdl->append.hasInheritedValue(); 36 CTimer::get("XIOS").suspend(); 37 return isDefined; 38 } 39 40 41 19 42 void cxios_set_filegroup_compression_level(filegroup_Ptr filegroup_hdl, int compression_level) 20 43 { -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/file_interface_attr.f90
r703 r798 9 9 10 10 11 SUBROUTINE cxios_set_file_append(file_hdl, append) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 14 LOGICAL (KIND=C_BOOL) , VALUE :: append 15 END SUBROUTINE cxios_set_file_append 16 17 SUBROUTINE cxios_get_file_append(file_hdl, append) BIND(C) 18 USE ISO_C_BINDING 19 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 20 LOGICAL (KIND=C_BOOL) :: append 21 END SUBROUTINE cxios_get_file_append 22 23 FUNCTION cxios_is_defined_file_append(file_hdl ) BIND(C) 24 USE ISO_C_BINDING 25 LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_append 26 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 27 END FUNCTION cxios_is_defined_file_append 28 29 11 30 SUBROUTINE cxios_set_file_compression_level(file_hdl, compression_level) BIND(C) 12 31 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/filegroup_interface_attr.f90
r703 r798 9 9 10 10 11 SUBROUTINE cxios_set_filegroup_append(filegroup_hdl, append) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 14 LOGICAL (KIND=C_BOOL) , VALUE :: append 15 END SUBROUTINE cxios_set_filegroup_append 16 17 SUBROUTINE cxios_get_filegroup_append(filegroup_hdl, append) BIND(C) 18 USE ISO_C_BINDING 19 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 20 LOGICAL (KIND=C_BOOL) :: append 21 END SUBROUTINE cxios_get_filegroup_append 22 23 FUNCTION cxios_is_defined_filegroup_append(filegroup_hdl ) BIND(C) 24 USE ISO_C_BINDING 25 LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_append 26 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 27 END FUNCTION cxios_is_defined_filegroup_append 28 29 11 30 SUBROUTINE cxios_set_filegroup_compression_level(filegroup_hdl, compression_level) BIND(C) 12 31 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifile_attr.F90
r703 r798 12 12 13 13 SUBROUTINE xios(set_file_attr) & 14 ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &14 ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 15 15 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 16 16 … … 18 18 TYPE(txios(file)) :: file_hdl 19 19 CHARACTER(LEN=*), INTENT(IN) ::file_id 20 LOGICAL , OPTIONAL, INTENT(IN) :: append 21 LOGICAL (KIND=C_BOOL) :: append_tmp 20 22 INTEGER , OPTIONAL, INTENT(IN) :: compression_level 21 23 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description … … 36 38 CALL xios(get_file_handle)(file_id,file_hdl) 37 39 CALL xios(set_file_attr_hdl_) & 38 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &40 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 39 41 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 40 42 … … 42 44 43 45 SUBROUTINE xios(set_file_attr_hdl) & 44 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &46 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 45 47 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 46 48 47 49 IMPLICIT NONE 48 50 TYPE(txios(file)) , INTENT(IN) :: file_hdl 51 LOGICAL , OPTIONAL, INTENT(IN) :: append 52 LOGICAL (KIND=C_BOOL) :: append_tmp 49 53 INTEGER , OPTIONAL, INTENT(IN) :: compression_level 50 54 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description … … 64 68 65 69 CALL xios(set_file_attr_hdl_) & 66 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &70 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 67 71 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 68 72 … … 70 74 71 75 SUBROUTINE xios(set_file_attr_hdl_) & 72 ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_ &73 , output_ level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_ &74 )76 ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_ & 77 , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_ & 78 , type_ ) 75 79 76 80 IMPLICIT NONE 77 81 TYPE(txios(file)) , INTENT(IN) :: file_hdl 82 LOGICAL , OPTIONAL, INTENT(IN) :: append_ 83 LOGICAL (KIND=C_BOOL) :: append__tmp 78 84 INTEGER , OPTIONAL, INTENT(IN) :: compression_level_ 79 85 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_ … … 92 98 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 93 99 100 IF (PRESENT(append_)) THEN 101 append__tmp=append_ 102 CALL cxios_set_file_append(file_hdl%daddr, append__tmp) 103 ENDIF 104 94 105 IF (PRESENT(compression_level_)) THEN 95 106 CALL cxios_set_file_compression_level(file_hdl%daddr, compression_level_) … … 154 165 155 166 SUBROUTINE xios(get_file_attr) & 156 ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &167 ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 157 168 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 158 169 … … 160 171 TYPE(txios(file)) :: file_hdl 161 172 CHARACTER(LEN=*), INTENT(IN) ::file_id 173 LOGICAL , OPTIONAL, INTENT(OUT) :: append 174 LOGICAL (KIND=C_BOOL) :: append_tmp 162 175 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level 163 176 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description … … 178 191 CALL xios(get_file_handle)(file_id,file_hdl) 179 192 CALL xios(get_file_attr_hdl_) & 180 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &193 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 181 194 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 182 195 … … 184 197 185 198 SUBROUTINE xios(get_file_attr_hdl) & 186 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &199 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 187 200 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 188 201 189 202 IMPLICIT NONE 190 203 TYPE(txios(file)) , INTENT(IN) :: file_hdl 204 LOGICAL , OPTIONAL, INTENT(OUT) :: append 205 LOGICAL (KIND=C_BOOL) :: append_tmp 191 206 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level 192 207 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description … … 206 221 207 222 CALL xios(get_file_attr_hdl_) & 208 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &223 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 209 224 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 210 225 … … 212 227 213 228 SUBROUTINE xios(get_file_attr_hdl_) & 214 ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_ &215 , output_ level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_ &216 )229 ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_ & 230 , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_ & 231 , type_ ) 217 232 218 233 IMPLICIT NONE 219 234 TYPE(txios(file)) , INTENT(IN) :: file_hdl 235 LOGICAL , OPTIONAL, INTENT(OUT) :: append_ 236 LOGICAL (KIND=C_BOOL) :: append__tmp 220 237 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level_ 221 238 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_ … … 234 251 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 235 252 253 IF (PRESENT(append_)) THEN 254 CALL cxios_get_file_append(file_hdl%daddr, append__tmp) 255 append_=append__tmp 256 ENDIF 257 236 258 IF (PRESENT(compression_level_)) THEN 237 259 CALL cxios_get_file_compression_level(file_hdl%daddr, compression_level_) … … 296 318 297 319 SUBROUTINE xios(is_defined_file_attr) & 298 ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &320 ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 299 321 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 300 322 … … 302 324 TYPE(txios(file)) :: file_hdl 303 325 CHARACTER(LEN=*), INTENT(IN) ::file_id 326 LOGICAL, OPTIONAL, INTENT(OUT) :: append 327 LOGICAL(KIND=C_BOOL) :: append_tmp 304 328 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level 305 329 LOGICAL(KIND=C_BOOL) :: compression_level_tmp … … 333 357 CALL xios(get_file_handle)(file_id,file_hdl) 334 358 CALL xios(is_defined_file_attr_hdl_) & 335 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &359 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 336 360 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 337 361 … … 339 363 340 364 SUBROUTINE xios(is_defined_file_attr_hdl) & 341 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &365 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 342 366 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 343 367 344 368 IMPLICIT NONE 345 369 TYPE(txios(file)) , INTENT(IN) :: file_hdl 370 LOGICAL, OPTIONAL, INTENT(OUT) :: append 371 LOGICAL(KIND=C_BOOL) :: append_tmp 346 372 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level 347 373 LOGICAL(KIND=C_BOOL) :: compression_level_tmp … … 374 400 375 401 CALL xios(is_defined_file_attr_hdl_) & 376 ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq &402 ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq & 377 403 , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type ) 378 404 … … 380 406 381 407 SUBROUTINE xios(is_defined_file_attr_hdl_) & 382 ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_ &383 , output_ level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_ &384 )408 ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_ & 409 , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_ & 410 , type_ ) 385 411 386 412 IMPLICIT NONE 387 413 TYPE(txios(file)) , INTENT(IN) :: file_hdl 414 LOGICAL, OPTIONAL, INTENT(OUT) :: append_ 415 LOGICAL(KIND=C_BOOL) :: append__tmp 388 416 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_ 389 417 LOGICAL(KIND=C_BOOL) :: compression_level__tmp … … 415 443 LOGICAL(KIND=C_BOOL) :: type__tmp 416 444 445 IF (PRESENT(append_)) THEN 446 append__tmp=cxios_is_defined_file_append(file_hdl%daddr) 447 append_=append__tmp 448 ENDIF 449 417 450 IF (PRESENT(compression_level_)) THEN 418 451 compression_level__tmp=cxios_is_defined_file_compression_level(file_hdl%daddr) -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifilegroup_attr.F90
r703 r798 12 12 13 13 SUBROUTINE xios(set_filegroup_attr) & 14 ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&15 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&16 , t ype )14 ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name & 15 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 16 , time_counter, type ) 17 17 18 18 IMPLICIT NONE 19 19 TYPE(txios(filegroup)) :: filegroup_hdl 20 20 CHARACTER(LEN=*), INTENT(IN) ::filegroup_id 21 LOGICAL , OPTIONAL, INTENT(IN) :: append 22 LOGICAL (KIND=C_BOOL) :: append_tmp 21 23 INTEGER , OPTIONAL, INTENT(IN) :: compression_level 22 24 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description … … 38 40 CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 39 41 CALL xios(set_filegroup_attr_hdl_) & 40 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&41 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&42 , t ype )42 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 43 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 44 , time_counter, type ) 43 45 44 46 END SUBROUTINE xios(set_filegroup_attr) 45 47 46 48 SUBROUTINE xios(set_filegroup_attr_hdl) & 47 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&48 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&49 , t ype )49 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 50 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 51 , time_counter, type ) 50 52 51 53 IMPLICIT NONE 52 54 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 55 LOGICAL , OPTIONAL, INTENT(IN) :: append 56 LOGICAL (KIND=C_BOOL) :: append_tmp 53 57 INTEGER , OPTIONAL, INTENT(IN) :: compression_level 54 58 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description … … 69 73 70 74 CALL xios(set_filegroup_attr_hdl_) & 71 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&72 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&73 , t ype )75 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 76 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 77 , time_counter, type ) 74 78 75 79 END SUBROUTINE xios(set_filegroup_attr_hdl) 76 80 77 81 SUBROUTINE xios(set_filegroup_attr_hdl_) & 78 ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_ &79 , name_ suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_ &80 , time_counter_, type_ )82 ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_ & 83 , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_ & 84 , sync_freq_, time_counter_, type_ ) 81 85 82 86 IMPLICIT NONE 83 87 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 88 LOGICAL , OPTIONAL, INTENT(IN) :: append_ 89 LOGICAL (KIND=C_BOOL) :: append__tmp 84 90 INTEGER , OPTIONAL, INTENT(IN) :: compression_level_ 85 91 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_ … … 99 105 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 100 106 107 IF (PRESENT(append_)) THEN 108 append__tmp=append_ 109 CALL cxios_set_filegroup_append(filegroup_hdl%daddr, append__tmp) 110 ENDIF 111 101 112 IF (PRESENT(compression_level_)) THEN 102 113 CALL cxios_set_filegroup_compression_level(filegroup_hdl%daddr, compression_level_) … … 165 176 166 177 SUBROUTINE xios(get_filegroup_attr) & 167 ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&168 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&169 , t ype )178 ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name & 179 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 180 , time_counter, type ) 170 181 171 182 IMPLICIT NONE 172 183 TYPE(txios(filegroup)) :: filegroup_hdl 173 184 CHARACTER(LEN=*), INTENT(IN) ::filegroup_id 185 LOGICAL , OPTIONAL, INTENT(OUT) :: append 186 LOGICAL (KIND=C_BOOL) :: append_tmp 174 187 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level 175 188 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description … … 191 204 CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 192 205 CALL xios(get_filegroup_attr_hdl_) & 193 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&194 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&195 , t ype )206 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 207 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 208 , time_counter, type ) 196 209 197 210 END SUBROUTINE xios(get_filegroup_attr) 198 211 199 212 SUBROUTINE xios(get_filegroup_attr_hdl) & 200 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&201 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&202 , t ype )213 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 214 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 215 , time_counter, type ) 203 216 204 217 IMPLICIT NONE 205 218 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 219 LOGICAL , OPTIONAL, INTENT(OUT) :: append 220 LOGICAL (KIND=C_BOOL) :: append_tmp 206 221 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level 207 222 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description … … 222 237 223 238 CALL xios(get_filegroup_attr_hdl_) & 224 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&225 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&226 , t ype )239 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 240 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 241 , time_counter, type ) 227 242 228 243 END SUBROUTINE xios(get_filegroup_attr_hdl) 229 244 230 245 SUBROUTINE xios(get_filegroup_attr_hdl_) & 231 ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_ &232 , name_ suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_ &233 , time_counter_, type_ )246 ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_ & 247 , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_ & 248 , sync_freq_, time_counter_, type_ ) 234 249 235 250 IMPLICIT NONE 236 251 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 252 LOGICAL , OPTIONAL, INTENT(OUT) :: append_ 253 LOGICAL (KIND=C_BOOL) :: append__tmp 237 254 INTEGER , OPTIONAL, INTENT(OUT) :: compression_level_ 238 255 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_ … … 252 269 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 253 270 271 IF (PRESENT(append_)) THEN 272 CALL cxios_get_filegroup_append(filegroup_hdl%daddr, append__tmp) 273 append_=append__tmp 274 ENDIF 275 254 276 IF (PRESENT(compression_level_)) THEN 255 277 CALL cxios_get_filegroup_compression_level(filegroup_hdl%daddr, compression_level_) … … 318 340 319 341 SUBROUTINE xios(is_defined_filegroup_attr) & 320 ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&321 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&322 , t ype )342 ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name & 343 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 344 , time_counter, type ) 323 345 324 346 IMPLICIT NONE 325 347 TYPE(txios(filegroup)) :: filegroup_hdl 326 348 CHARACTER(LEN=*), INTENT(IN) ::filegroup_id 349 LOGICAL, OPTIONAL, INTENT(OUT) :: append 350 LOGICAL(KIND=C_BOOL) :: append_tmp 327 351 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level 328 352 LOGICAL(KIND=C_BOOL) :: compression_level_tmp … … 358 382 CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 359 383 CALL xios(is_defined_filegroup_attr_hdl_) & 360 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&361 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&362 , t ype )384 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 385 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 386 , time_counter, type ) 363 387 364 388 END SUBROUTINE xios(is_defined_filegroup_attr) 365 389 366 390 SUBROUTINE xios(is_defined_filegroup_attr_hdl) & 367 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&368 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&369 , t ype )391 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 392 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 393 , time_counter, type ) 370 394 371 395 IMPLICIT NONE 372 396 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 397 LOGICAL, OPTIONAL, INTENT(OUT) :: append 398 LOGICAL(KIND=C_BOOL) :: append_tmp 373 399 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level 374 400 LOGICAL(KIND=C_BOOL) :: compression_level_tmp … … 403 429 404 430 CALL xios(is_defined_filegroup_attr_hdl_) & 405 ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix&406 , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter&407 , t ype )431 ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name & 432 , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq & 433 , time_counter, type ) 408 434 409 435 END SUBROUTINE xios(is_defined_filegroup_attr_hdl) 410 436 411 437 SUBROUTINE xios(is_defined_filegroup_attr_hdl_) & 412 ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_ &413 , name_ suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_ &414 , time_counter_, type_ )438 ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_ & 439 , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_ & 440 , sync_freq_, time_counter_, type_ ) 415 441 416 442 IMPLICIT NONE 417 443 TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl 444 LOGICAL, OPTIONAL, INTENT(OUT) :: append_ 445 LOGICAL(KIND=C_BOOL) :: append__tmp 418 446 LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_ 419 447 LOGICAL(KIND=C_BOOL) :: compression_level__tmp … … 447 475 LOGICAL(KIND=C_BOOL) :: type__tmp 448 476 477 IF (PRESENT(append_)) THEN 478 append__tmp=cxios_is_defined_filegroup_append(filegroup_hdl%daddr) 479 append_=append__tmp 480 ENDIF 481 449 482 IF (PRESENT(compression_level_)) THEN 450 483 compression_level__tmp=cxios_is_defined_filegroup_compression_level(filegroup_hdl%daddr) -
XIOS/branchs/xios-1.0/src/node/file.cpp
r692 r798 311 311 oss << ".nc"; 312 312 313 bool append = !this->append.isEmpty() && this->append.getValue(); 314 313 315 if (isOpen) data_out->closeFile() ; 314 316 bool isCollective=true ; … … 324 326 } 325 327 } 326 data_out=shared_ptr<CDataOutput>(new CNc4DataOutput(oss.str(), false, fileComm, multifile, isCollective)); 327 isOpen=true ; 328 329 data_out->writeFile(CFile::get(this)); 330 std::vector<CField*>::iterator it, end = this->enabledFields.end(); 331 for (it = this->enabledFields.begin() ;it != end; it++) 332 { 328 data_out = shared_ptr<CDataOutput>(new CNc4DataOutput(oss.str(), append, fileComm, multifile, isCollective)); 329 isOpen = true; 330 331 data_out->writeFile(CFile::get(this)); 332 333 // Do not recreate the file structure if opening an existing file 334 if (!data_out->IsInAppendMode()) 335 { 336 std::vector<CField*>::iterator it, end = this->enabledFields.end(); 337 for (it = this->enabledFields.begin(); it != end; it++) 338 { 333 339 CField* field = *it; 334 340 this->data_out->writeFieldGrid(field); 335 }336 this->data_out->writeTimeDimension();337 338 for (it = this->enabledFields.begin() ;it != end; it++)339 {341 } 342 this->data_out->writeTimeDimension(); 343 344 for (it = this->enabledFields.begin(); it != end; it++) 345 { 340 346 CField* field = *it; 341 347 this->data_out->writeField(field); 342 } 343 344 vector<CVariable*> listVars = getAllVariables() ; 345 for (vector<CVariable*>::iterator it = listVars.begin() ;it != listVars.end(); it++) this-> data_out-> writeAttribute(*it) ; 346 347 this->data_out->definition_end(); 348 } 349 350 vector<CVariable*> listVars = getAllVariables() ; 351 for (vector<CVariable*>::iterator it = listVars.begin(); it != listVars.end(); it++) 352 this->data_out->writeAttribute(*it); 353 354 this->data_out->definition_end(); 355 } 348 356 } 349 357 } -
XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
r713 r798 937 937 this->getTimeStamp()); 938 938 939 SuperClassWriter::addDimension("axis_nbounds", 2); 939 if (!appendMode) 940 SuperClassWriter::addDimension("axis_nbounds", 2); 940 941 } 941 942 catch (CNetCdfException& e) -
XIOS/branchs/xios-1.0/src/output/onetcdf4.cpp
r607 r798 11 11 12 12 CONetCDF4::CONetCDF4 13 (const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile)13 (const StdString & filename, bool append, const MPI_Comm * comm, bool multifile) 14 14 : path() 15 15 , wmpi(false) 16 16 { 17 this->initialize(filename, exist, comm,multifile);17 this->initialize(filename, append, comm,multifile); 18 18 } 19 19 … … 29 29 30 30 void CONetCDF4::initialize 31 (const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile)31 (const StdString & filename, bool append, const MPI_Comm * comm, bool multifile) 32 32 { 33 33 // Don't use parallel mode if there is only one process … … 41 41 wmpi = comm && !multifile; 42 42 43 if (!exist) 43 // If the file does not exist, we always create it 44 if (!append || !std::ifstream(filename.c_str())) 44 45 { 45 46 if (wmpi) … … 47 48 else 48 49 CNetCdfInterface::create(filename, NC_NETCDF4, this->ncidp); 50 51 this->appendMode = false; 52 this->recordOffset = 0; 49 53 } 50 54 else 51 55 { 52 56 if (wmpi) 53 CNetCdfInterface::openPar(filename, NC_NETCDF4|NC_MPIIO , *comm, MPI_INFO_NULL, this->ncidp);57 CNetCdfInterface::openPar(filename, NC_NETCDF4|NC_MPIIO|NC_WRITE, *comm, MPI_INFO_NULL, this->ncidp); 54 58 else 55 CNetCdfInterface::open(filename, NC_NETCDF4, this->ncidp); 59 CNetCdfInterface::open(filename, NC_NETCDF4|NC_WRITE, this->ncidp); 60 61 this->appendMode = true; 62 // Find out how many temporal records have been written already to the file we are opening 63 int ncUnlimitedDimId; 64 CNetCdfInterface::inqUnLimDim(this->ncidp, ncUnlimitedDimId); 65 if (ncUnlimitedDimId != -1) 66 CNetCdfInterface::inqDimLen(this->ncidp, ncUnlimitedDimId, this->recordOffset); 67 else 68 this->recordOffset = 0; 56 69 } 57 70 } … … 429 442 if (iddims.begin()->compare(this->getUnlimitedDimensionName()) == 0) 430 443 { 431 sstart.push_back(record );444 sstart.push_back(record + recordOffset); 432 445 scount.push_back(1); 433 446 if ((start == NULL) && -
XIOS/branchs/xios-1.0/src/output/onetcdf4.hpp
r606 r798 26 26 27 27 /// Constructeurs /// 28 CONetCDF4(const StdString & filename, bool exist, const MPI_Comm * comm = NULL, bool multifile=true);28 CONetCDF4(const StdString & filename, bool append, const MPI_Comm * comm = NULL, bool multifile=true); 29 29 30 30 CONetCDF4(const CONetCDF4 & onetcdf4); // Not implemented. … … 33 33 34 34 /// Initialisation /// 35 void initialize(const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile);35 void initialize(const StdString & filename, bool append, const MPI_Comm * comm, bool multifile); 36 36 void close(void) ; 37 37 void sync(void) ; … … 116 116 int ncidp; 117 117 bool wmpi; 118 /*! Number of records already written when opening an existing file. 119 * always 0 when creating a new file */ 120 size_t recordOffset; 118 121 map<int,size_t> timeAxis ; 119 122 }; // class CONetCDF4
Note: See TracChangeset
for help on using the changeset viewer.