Changeset 802
- Timestamp:
- 11/30/15 16:21:33 (7 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/config/file_attribute.conf
r757 r802 17 17 DECLARE_ENUM2(mode, read, write) 18 18 DECLARE_ENUM4(time_counter, centered, instant, record, none) 19 DECLARE_ATTRIBUTE(StdString, time_counter_name) 19 20 DECLARE_ATTRIBUTE(int, record_offset) 20 21 -
XIOS/trunk/src/interface/c_attr/icfile_attr.cpp
r779 r802 478 478 479 479 480 void cxios_set_file_time_counter_name(file_Ptr file_hdl, const char * time_counter_name, int time_counter_name_size) 481 { 482 std::string time_counter_name_str; 483 if (!cstr2string(time_counter_name, time_counter_name_size, time_counter_name_str)) return; 484 CTimer::get("XIOS").resume(); 485 file_hdl->time_counter_name.setValue(time_counter_name_str); 486 CTimer::get("XIOS").suspend(); 487 } 488 489 void cxios_get_file_time_counter_name(file_Ptr file_hdl, char * time_counter_name, int time_counter_name_size) 490 { 491 CTimer::get("XIOS").resume(); 492 if (!string_copy(file_hdl->time_counter_name.getInheritedValue(), time_counter_name, time_counter_name_size)) 493 ERROR("void cxios_get_file_time_counter_name(file_Ptr file_hdl, char * time_counter_name, int time_counter_name_size)", << "Input string is too short"); 494 CTimer::get("XIOS").suspend(); 495 } 496 497 bool cxios_is_defined_file_time_counter_name(file_Ptr file_hdl) 498 { 499 CTimer::get("XIOS").resume(); 500 bool isDefined = file_hdl->time_counter_name.hasInheritedValue(); 501 CTimer::get("XIOS").suspend(); 502 return isDefined; 503 } 504 505 480 506 void cxios_set_file_timeseries(file_Ptr file_hdl, const char * timeseries, int timeseries_size) 481 507 { -
XIOS/trunk/src/interface/c_attr/icfilegroup_attr.cpp
r779 r802 504 504 505 505 506 void cxios_set_filegroup_time_counter_name(filegroup_Ptr filegroup_hdl, const char * time_counter_name, int time_counter_name_size) 507 { 508 std::string time_counter_name_str; 509 if (!cstr2string(time_counter_name, time_counter_name_size, time_counter_name_str)) return; 510 CTimer::get("XIOS").resume(); 511 filegroup_hdl->time_counter_name.setValue(time_counter_name_str); 512 CTimer::get("XIOS").suspend(); 513 } 514 515 void cxios_get_filegroup_time_counter_name(filegroup_Ptr filegroup_hdl, char * time_counter_name, int time_counter_name_size) 516 { 517 CTimer::get("XIOS").resume(); 518 if (!string_copy(filegroup_hdl->time_counter_name.getInheritedValue(), time_counter_name, time_counter_name_size)) 519 ERROR("void cxios_get_filegroup_time_counter_name(filegroup_Ptr filegroup_hdl, char * time_counter_name, int time_counter_name_size)", << "Input string is too short"); 520 CTimer::get("XIOS").suspend(); 521 } 522 523 bool cxios_is_defined_filegroup_time_counter_name(filegroup_Ptr filegroup_hdl) 524 { 525 CTimer::get("XIOS").resume(); 526 bool isDefined = filegroup_hdl->time_counter_name.hasInheritedValue(); 527 CTimer::get("XIOS").suspend(); 528 return isDefined; 529 } 530 531 506 532 void cxios_set_filegroup_timeseries(filegroup_Ptr filegroup_hdl, const char * timeseries, int timeseries_size) 507 533 { -
XIOS/trunk/src/interface/fortran_attr/file_interface_attr.F90
r779 r802 355 355 356 356 357 SUBROUTINE cxios_set_file_time_counter_name(file_hdl, time_counter_name, time_counter_name_size) BIND(C) 358 USE ISO_C_BINDING 359 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 360 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: time_counter_name 361 INTEGER (kind = C_INT) , VALUE :: time_counter_name_size 362 END SUBROUTINE cxios_set_file_time_counter_name 363 364 SUBROUTINE cxios_get_file_time_counter_name(file_hdl, time_counter_name, time_counter_name_size) BIND(C) 365 USE ISO_C_BINDING 366 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 367 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: time_counter_name 368 INTEGER (kind = C_INT) , VALUE :: time_counter_name_size 369 END SUBROUTINE cxios_get_file_time_counter_name 370 371 FUNCTION cxios_is_defined_file_time_counter_name(file_hdl) BIND(C) 372 USE ISO_C_BINDING 373 LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_time_counter_name 374 INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl 375 END FUNCTION cxios_is_defined_file_time_counter_name 376 377 357 378 SUBROUTINE cxios_set_file_timeseries(file_hdl, timeseries, timeseries_size) BIND(C) 358 379 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/filegroup_interface_attr.F90
r779 r802 376 376 377 377 378 SUBROUTINE cxios_set_filegroup_time_counter_name(filegroup_hdl, time_counter_name, time_counter_name_size) BIND(C) 379 USE ISO_C_BINDING 380 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 381 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: time_counter_name 382 INTEGER (kind = C_INT) , VALUE :: time_counter_name_size 383 END SUBROUTINE cxios_set_filegroup_time_counter_name 384 385 SUBROUTINE cxios_get_filegroup_time_counter_name(filegroup_hdl, time_counter_name, time_counter_name_size) BIND(C) 386 USE ISO_C_BINDING 387 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 388 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: time_counter_name 389 INTEGER (kind = C_INT) , VALUE :: time_counter_name_size 390 END SUBROUTINE cxios_get_filegroup_time_counter_name 391 392 FUNCTION cxios_is_defined_filegroup_time_counter_name(filegroup_hdl) BIND(C) 393 USE ISO_C_BINDING 394 LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_time_counter_name 395 INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl 396 END FUNCTION cxios_is_defined_filegroup_time_counter_name 397 398 378 399 SUBROUTINE cxios_set_filegroup_timeseries(filegroup_hdl, timeseries, timeseries_size) BIND(C) 379 400 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/ifile_attr.F90
r779 r802 14 14 ( file_id, append, compression_level, description, enabled, format, min_digits, mode, name, name_suffix & 15 15 , output_freq, output_level, par_access, record_offset, split_freq, split_freq_format, sync_freq & 16 , time_counter, time series, ts_prefix, type )16 , time_counter, time_counter_name, timeseries, ts_prefix, type ) 17 17 18 18 IMPLICIT NONE … … 38 38 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq 39 39 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter 40 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name 40 41 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries 41 42 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix … … 46 47 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 47 48 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 48 , sync_freq, time_counter, time series, ts_prefix, type )49 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 49 50 50 51 END SUBROUTINE xios(set_file_attr) … … 53 54 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 54 55 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 55 , sync_freq, time_counter, time series, ts_prefix, type )56 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 56 57 57 58 IMPLICIT NONE … … 76 77 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq 77 78 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter 79 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name 78 80 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries 79 81 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix … … 83 85 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 84 86 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 85 , sync_freq, time_counter, time series, ts_prefix, type )87 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 86 88 87 89 END SUBROUTINE xios(set_file_attr_hdl) … … 90 92 ( file_hdl, append_, compression_level_, description_, enabled_, format_, min_digits_, mode_ & 91 93 , name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 92 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 94 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 95 , type_ ) 93 96 94 97 IMPLICIT NONE … … 113 116 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq_ 114 117 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_ 118 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name_ 115 119 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries_ 116 120 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix_ … … 187 191 ENDIF 188 192 193 IF (PRESENT(time_counter_name_)) THEN 194 CALL cxios_set_file_time_counter_name(file_hdl%daddr, time_counter_name_, len(time_counter_name_)) 195 ENDIF 196 189 197 IF (PRESENT(timeseries_)) THEN 190 198 CALL cxios_set_file_timeseries(file_hdl%daddr, timeseries_, len(timeseries_)) … … 204 212 ( file_id, append, compression_level, description, enabled, format, min_digits, mode, name, name_suffix & 205 213 , output_freq, output_level, par_access, record_offset, split_freq, split_freq_format, sync_freq & 206 , time_counter, time series, ts_prefix, type )214 , time_counter, time_counter_name, timeseries, ts_prefix, type ) 207 215 208 216 IMPLICIT NONE … … 228 236 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq 229 237 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter 238 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name 230 239 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries 231 240 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix … … 236 245 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 237 246 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 238 , sync_freq, time_counter, time series, ts_prefix, type )247 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 239 248 240 249 END SUBROUTINE xios(get_file_attr) … … 243 252 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 244 253 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 245 , sync_freq, time_counter, time series, ts_prefix, type )254 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 246 255 247 256 IMPLICIT NONE … … 266 275 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq 267 276 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter 277 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name 268 278 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries 269 279 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix … … 273 283 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 274 284 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 275 , sync_freq, time_counter, time series, ts_prefix, type )285 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 276 286 277 287 END SUBROUTINE xios(get_file_attr_hdl) … … 280 290 ( file_hdl, append_, compression_level_, description_, enabled_, format_, min_digits_, mode_ & 281 291 , name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 282 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 292 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 293 , type_ ) 283 294 284 295 IMPLICIT NONE … … 303 314 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq_ 304 315 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_ 316 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name_ 305 317 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries_ 306 318 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix_ … … 377 389 ENDIF 378 390 391 IF (PRESENT(time_counter_name_)) THEN 392 CALL cxios_get_file_time_counter_name(file_hdl%daddr, time_counter_name_, len(time_counter_name_)) 393 ENDIF 394 379 395 IF (PRESENT(timeseries_)) THEN 380 396 CALL cxios_get_file_timeseries(file_hdl%daddr, timeseries_, len(timeseries_)) … … 394 410 ( file_id, append, compression_level, description, enabled, format, min_digits, mode, name, name_suffix & 395 411 , output_freq, output_level, par_access, record_offset, split_freq, split_freq_format, sync_freq & 396 , time_counter, time series, ts_prefix, type )412 , time_counter, time_counter_name, timeseries, ts_prefix, type ) 397 413 398 414 IMPLICIT NONE … … 433 449 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter 434 450 LOGICAL(KIND=C_BOOL) :: time_counter_tmp 451 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name 452 LOGICAL(KIND=C_BOOL) :: time_counter_name_tmp 435 453 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries 436 454 LOGICAL(KIND=C_BOOL) :: timeseries_tmp … … 444 462 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 445 463 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 446 , sync_freq, time_counter, time series, ts_prefix, type )464 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 447 465 448 466 END SUBROUTINE xios(is_defined_file_attr) … … 451 469 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 452 470 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 453 , sync_freq, time_counter, time series, ts_prefix, type )471 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 454 472 455 473 IMPLICIT NONE … … 489 507 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter 490 508 LOGICAL(KIND=C_BOOL) :: time_counter_tmp 509 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name 510 LOGICAL(KIND=C_BOOL) :: time_counter_name_tmp 491 511 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries 492 512 LOGICAL(KIND=C_BOOL) :: timeseries_tmp … … 499 519 ( file_hdl, append, compression_level, description, enabled, format, min_digits, mode, name & 500 520 , name_suffix, output_freq, output_level, par_access, record_offset, split_freq, split_freq_format & 501 , sync_freq, time_counter, time series, ts_prefix, type )521 , sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type ) 502 522 503 523 END SUBROUTINE xios(is_defined_file_attr_hdl) … … 506 526 ( file_hdl, append_, compression_level_, description_, enabled_, format_, min_digits_, mode_ & 507 527 , name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 508 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 528 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 529 , type_ ) 509 530 510 531 IMPLICIT NONE … … 544 565 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_ 545 566 LOGICAL(KIND=C_BOOL) :: time_counter__tmp 567 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name_ 568 LOGICAL(KIND=C_BOOL) :: time_counter_name__tmp 546 569 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries_ 547 570 LOGICAL(KIND=C_BOOL) :: timeseries__tmp … … 636 659 ENDIF 637 660 661 IF (PRESENT(time_counter_name_)) THEN 662 time_counter_name__tmp = cxios_is_defined_file_time_counter_name(file_hdl%daddr) 663 time_counter_name_ = time_counter_name__tmp 664 ENDIF 665 638 666 IF (PRESENT(timeseries_)) THEN 639 667 timeseries__tmp = cxios_is_defined_file_timeseries(file_hdl%daddr) -
XIOS/trunk/src/interface/fortran_attr/ifilegroup_attr.F90
r779 r802 14 14 ( filegroup_id, append, compression_level, description, enabled, format, group_ref, min_digits & 15 15 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 16 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 16 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 17 ) 17 18 18 19 IMPLICIT NONE … … 39 40 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq 40 41 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter 42 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name 41 43 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries 42 44 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix … … 47 49 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 48 50 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 49 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 51 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 52 ) 50 53 51 54 END SUBROUTINE xios(set_filegroup_attr) … … 54 57 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 55 58 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 56 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 59 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 60 ) 57 61 58 62 IMPLICIT NONE … … 78 82 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq 79 83 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter 84 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name 80 85 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries 81 86 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix … … 85 90 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 86 91 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 87 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 92 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 93 ) 88 94 89 95 END SUBROUTINE xios(set_filegroup_attr_hdl) … … 92 98 ( filegroup_hdl, append_, compression_level_, description_, enabled_, format_, group_ref_, min_digits_ & 93 99 , mode_, name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 94 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 100 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 101 , type_ ) 95 102 96 103 IMPLICIT NONE … … 116 123 TYPE(txios(duration)) , OPTIONAL, INTENT(IN) :: sync_freq_ 117 124 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_ 125 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_name_ 118 126 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timeseries_ 119 127 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_prefix_ … … 194 202 ENDIF 195 203 204 IF (PRESENT(time_counter_name_)) THEN 205 CALL cxios_set_filegroup_time_counter_name(filegroup_hdl%daddr, time_counter_name_, len(time_counter_name_)) 206 ENDIF 207 196 208 IF (PRESENT(timeseries_)) THEN 197 209 CALL cxios_set_filegroup_timeseries(filegroup_hdl%daddr, timeseries_, len(timeseries_)) … … 211 223 ( filegroup_id, append, compression_level, description, enabled, format, group_ref, min_digits & 212 224 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 213 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 225 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 226 ) 214 227 215 228 IMPLICIT NONE … … 236 249 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq 237 250 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter 251 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name 238 252 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries 239 253 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix … … 244 258 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 245 259 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 246 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 260 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 261 ) 247 262 248 263 END SUBROUTINE xios(get_filegroup_attr) … … 251 266 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 252 267 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 253 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 268 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 269 ) 254 270 255 271 IMPLICIT NONE … … 275 291 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq 276 292 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter 293 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name 277 294 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries 278 295 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix … … 282 299 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 283 300 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 284 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 301 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 302 ) 285 303 286 304 END SUBROUTINE xios(get_filegroup_attr_hdl) … … 289 307 ( filegroup_hdl, append_, compression_level_, description_, enabled_, format_, group_ref_, min_digits_ & 290 308 , mode_, name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 291 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 309 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 310 , type_ ) 292 311 293 312 IMPLICIT NONE … … 313 332 TYPE(txios(duration)) , OPTIONAL, INTENT(OUT) :: sync_freq_ 314 333 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_ 334 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_name_ 315 335 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: timeseries_ 316 336 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_prefix_ … … 391 411 ENDIF 392 412 413 IF (PRESENT(time_counter_name_)) THEN 414 CALL cxios_get_filegroup_time_counter_name(filegroup_hdl%daddr, time_counter_name_, len(time_counter_name_)) 415 ENDIF 416 393 417 IF (PRESENT(timeseries_)) THEN 394 418 CALL cxios_get_filegroup_timeseries(filegroup_hdl%daddr, timeseries_, len(timeseries_)) … … 408 432 ( filegroup_id, append, compression_level, description, enabled, format, group_ref, min_digits & 409 433 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 410 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 434 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 435 ) 411 436 412 437 IMPLICIT NONE … … 449 474 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter 450 475 LOGICAL(KIND=C_BOOL) :: time_counter_tmp 476 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name 477 LOGICAL(KIND=C_BOOL) :: time_counter_name_tmp 451 478 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries 452 479 LOGICAL(KIND=C_BOOL) :: timeseries_tmp … … 460 487 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 461 488 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 462 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 489 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 490 ) 463 491 464 492 END SUBROUTINE xios(is_defined_filegroup_attr) … … 467 495 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 468 496 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 469 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 497 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 498 ) 470 499 471 500 IMPLICIT NONE … … 507 536 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter 508 537 LOGICAL(KIND=C_BOOL) :: time_counter_tmp 538 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name 539 LOGICAL(KIND=C_BOOL) :: time_counter_name_tmp 509 540 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries 510 541 LOGICAL(KIND=C_BOOL) :: timeseries_tmp … … 517 548 ( filegroup_hdl, append, compression_level, description, enabled, format, group_ref, min_digits & 518 549 , mode, name, name_suffix, output_freq, output_level, par_access, record_offset, split_freq & 519 , split_freq_format, sync_freq, time_counter, timeseries, ts_prefix, type ) 550 , split_freq_format, sync_freq, time_counter, time_counter_name, timeseries, ts_prefix, type & 551 ) 520 552 521 553 END SUBROUTINE xios(is_defined_filegroup_attr_hdl) … … 524 556 ( filegroup_hdl, append_, compression_level_, description_, enabled_, format_, group_ref_, min_digits_ & 525 557 , mode_, name_, name_suffix_, output_freq_, output_level_, par_access_, record_offset_, split_freq_ & 526 , split_freq_format_, sync_freq_, time_counter_, timeseries_, ts_prefix_, type_ ) 558 , split_freq_format_, sync_freq_, time_counter_, time_counter_name_, timeseries_, ts_prefix_ & 559 , type_ ) 527 560 528 561 IMPLICIT NONE … … 564 597 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_ 565 598 LOGICAL(KIND=C_BOOL) :: time_counter__tmp 599 LOGICAL, OPTIONAL, INTENT(OUT) :: time_counter_name_ 600 LOGICAL(KIND=C_BOOL) :: time_counter_name__tmp 566 601 LOGICAL, OPTIONAL, INTENT(OUT) :: timeseries_ 567 602 LOGICAL(KIND=C_BOOL) :: timeseries__tmp … … 661 696 ENDIF 662 697 698 IF (PRESENT(time_counter_name_)) THEN 699 time_counter_name__tmp = cxios_is_defined_filegroup_time_counter_name(filegroup_hdl%daddr) 700 time_counter_name_ = time_counter_name__tmp 701 ENDIF 702 663 703 IF (PRESENT(timeseries_)) THEN 664 704 timeseries__tmp = cxios_is_defined_filegroup_timeseries(filegroup_hdl%daddr) -
XIOS/trunk/src/io/inetcdf4.cpp
r783 r802 7 7 namespace xios 8 8 { 9 CINetCDF4::CINetCDF4(const StdString& filename, const MPI_Comm* comm /*= NULL*/, bool multifile /*= true*/ )9 CINetCDF4::CINetCDF4(const StdString& filename, const MPI_Comm* comm /*= NULL*/, bool multifile /*= true*/, const StdString& timeCounterName /*= "time_counter"*/) 10 10 { 11 11 // Don't use parallel mode if there is only one process … … 25 25 else 26 26 CNetCdfInterface::open(filename, NC_NOWRITE, this->ncidp); 27 28 this->timeCounterName = timeCounterName; 27 29 } 28 30 … … 359 361 bool CINetCDF4::hasTemporalDim(const CVarPath* const path) 360 362 { 361 return (this->getUnlimitedDimension(path) != -1); 363 std::list<StdString> dims = this->getDimensionsList(NULL, path); 364 return (std::find(dims.begin(), dims.end(), timeCounterName) != dims.end()); 362 365 } 363 366 … … 563 566 bool CINetCDF4::isTemporal(const StdString& name, const CVarPath* const path) 564 567 { 565 if (!this->hasTemporalDim(path)) return false; 566 std::map<StdString, StdSize> dims = this->getDimensions(&name, path); 567 return (dims.find(this->getUnlimitedDimensionName(path)) != dims.end()); 568 std::list<StdString> dims = this->getDimensionsList(&name, path); 569 return (std::find(dims.begin(), dims.end(), timeCounterName) != dims.end()); 568 570 } 569 571 -
XIOS/trunk/src/io/inetcdf4.hpp
r782 r802 22 22 public: 23 23 /// Constructors /// 24 CINetCDF4(const StdString& filename, const MPI_Comm* comm = NULL, bool multifile = true); 24 CINetCDF4(const StdString& filename, const MPI_Comm* comm = NULL, bool multifile = true, 25 const StdString& timeCounterName = "time_counter"); 25 26 CINetCDF4(const CINetCDF4& inetcdf4); // Not implemented. 26 27 CINetCDF4(const CINetCDF4* const inetcdf4); // Not implemented. … … 41 42 42 43 StdString getUnlimitedDimensionName(const CVarPath* const path = NULL); 44 45 const StdString& getTimeCounterName(void) const { return timeCounterName; }; 43 46 44 47 StdString getCoordinatesId(const StdString& name, const CVarPath* const path = NULL); … … 155 158 int ncidp; //< Id of the NetCDF file 156 159 bool mpi; //< Whether parallel file access is used 160 StdString timeCounterName; 157 161 }; // class CINetCDF4 158 162 } // namespace xios -
XIOS/trunk/src/io/nc4_data_input.cpp
r785 r802 9 9 namespace xios 10 10 { 11 CNc4DataInput::CNc4DataInput(const StdString& filename, MPI_Comm comm_file, bool multifile, bool isCollective /*= true*/ )11 CNc4DataInput::CNc4DataInput(const StdString& filename, MPI_Comm comm_file, bool multifile, bool isCollective /*= true*/, const StdString& timeCounterName /*= "time_counter"*/) 12 12 : SuperClass() 13 , SuperClassWriter(filename, &comm_file, multifile )13 , SuperClassWriter(filename, &comm_file, multifile, timeCounterName) 14 14 , comm_file(comm_file) 15 15 , filename(filename) -
XIOS/trunk/src/io/nc4_data_input.hpp
r783 r802 22 22 23 23 /// Constructors /// 24 CNc4DataInput(const StdString& filename, MPI_Comm comm_file, bool multifile, bool isCollective = true); 24 CNc4DataInput(const StdString& filename, MPI_Comm comm_file, bool multifile, bool isCollective = true, 25 const StdString& timeCounterName = "time_counter"); 25 26 CNc4DataInput(const CNc4DataInput& dataInput); // Not implemented. 26 27 CNc4DataInput(const CNc4DataInput* const dataInput); // Not implemented. -
XIOS/trunk/src/io/nc4_data_output.cpp
r796 r802 22 22 , filename(filename) 23 23 { 24 StdString timeid = StdString("time_counter");25 24 SuperClass::type = MULTI_FILE; 26 25 } … … 28 27 CNc4DataOutput::CNc4DataOutput 29 28 (const StdString & filename, bool exist, bool useClassicFormat, 30 MPI_Comm comm_file,bool multifile, bool isCollective )29 MPI_Comm comm_file,bool multifile, bool isCollective, const StdString& timeCounterName) 31 30 : SuperClass() 32 , SuperClassWriter(filename, exist, useClassicFormat, &comm_file, multifile )31 , SuperClassWriter(filename, exist, useClassicFormat, &comm_file, multifile, timeCounterName) 33 32 , comm_file(comm_file) 34 33 , filename(filename) 35 34 , isCollective(isCollective) 36 35 { 37 StdString timeid = StdString("time_counter");38 39 36 SuperClass::type = (multifile) ? MULTI_FILE : ONE_FILE; 40 37 } … … 952 949 try 953 950 { 954 SuperClassWriter::addDimension( "time_counter");951 SuperClassWriter::addDimension(getTimeCounterName()); 955 952 } 956 953 catch (CNetCdfException& e) … … 982 979 std::vector<StdString> axisList = grid->getAxisList(); 983 980 984 StdString timeid = StdString("time_counter");981 StdString timeid = getTimeCounterName(); 985 982 StdString dimXid,dimYid; 986 983 std::deque<StdString> dimIdList, dimCoordList; … … 1391 1388 else if (field->getOperationTimeType() == func::CFunctor::centered) timeAxisId = "time_centered"; 1392 1389 1393 StdString timeBoundId ("time_counter_bounds");1390 StdString timeBoundId = getTimeCounterName() + "_bounds"; 1394 1391 1395 1392 StdString timeAxisBoundId; … … 1492 1489 if (field->file->time_counter != CFile::time_counter_attr::none) 1493 1490 { 1494 SuperClassWriter::writeData(time_counter, string("time_counter"), isCollective, field->getNStep() - 1);1491 SuperClassWriter::writeData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1); 1495 1492 if (field->file->time_counter != CFile::time_counter_attr::record) 1496 1493 SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); … … 1619 1616 if (field->file->time_counter != CFile::time_counter_attr::none) 1620 1617 { 1621 SuperClassWriter::writeTimeAxisData(time_counter, string("time_counter"), isCollective, field->getNStep() - 1, isRoot);1618 SuperClassWriter::writeTimeAxisData(time_counter, getTimeCounterName(), isCollective, field->getNStep() - 1, isRoot); 1622 1619 if (field->file->time_counter != CFile::time_counter_attr::record) 1623 1620 SuperClassWriter::writeTimeAxisData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); … … 1659 1656 StdString axisid("time_centered") ; 1660 1657 StdString axisBoundId("time_centered_bounds"); 1661 StdString timeid( "time_counter");1658 StdString timeid(getTimeCounterName()); 1662 1659 StdString timeBoundId("axis_nbounds"); 1663 1660 … … 1701 1698 { 1702 1699 // Adding time_counter 1703 axisid = "time_counter";1704 axisBoundId = "time_counter_bounds";1700 axisid = getTimeCounterName(); 1701 axisBoundId = getTimeCounterName() + "_bounds"; 1705 1702 dims.clear(); 1706 1703 dims.push_back(timeid); … … 1955 1952 if (it == timeToRecordCache.end()) 1956 1953 { 1957 StdString timeAxisBoundsId( "time_counter_bounds");1954 StdString timeAxisBoundsId(getTimeCounterName() + "_bounds"); 1958 1955 if (!SuperClassWriter::varExist(timeAxisBoundsId)) 1959 1956 timeAxisBoundsId = "time_instant_bounds"; -
XIOS/trunk/src/io/nc4_data_output.hpp
r774 r802 26 26 CNc4DataOutput 27 27 (const StdString & filename, bool exist, bool useClassicFormat, 28 MPI_Comm comm_file, bool multifile, bool isCollective=true); 28 MPI_Comm comm_file, bool multifile, bool isCollective = true, 29 const StdString& timeCounterName = "time_counter"); 29 30 30 31 CNc4DataOutput(const CNc4DataOutput & dataoutput); // Not implemented. -
XIOS/trunk/src/io/onetcdf4.cpp
r707 r802 13 13 14 14 CONetCDF4::CONetCDF4(const StdString& filename, bool append, bool useClassicFormat, 15 const MPI_Comm* comm, bool multifile )15 const MPI_Comm* comm, bool multifile, const StdString& timeCounterName) 16 16 : path() 17 17 , wmpi(false) 18 18 , useClassicFormat(useClassicFormat) 19 19 { 20 this->initialize(filename, append, useClassicFormat, comm, multifile);20 this->initialize(filename, append, useClassicFormat, comm, multifile, timeCounterName); 21 21 } 22 22 … … 30 30 31 31 void CONetCDF4::initialize(const StdString& filename, bool append, bool useClassicFormat, 32 const MPI_Comm* comm, bool multifile )32 const MPI_Comm* comm, bool multifile, const StdString& timeCounterName) 33 33 { 34 34 this->useClassicFormat = useClassicFormat; … … 74 74 if (useClassicFormat) 75 75 CNetCdfInterface::setFill(this->ncidp, false); 76 77 this->timeCounterName = timeCounterName; 76 78 } 77 79 … … 444 446 int i = 0; 445 447 446 if (iddims.begin()->compare(t his->getUnlimitedDimensionName()) == 0)448 if (iddims.begin()->compare(timeCounterName) == 0) 447 449 { 448 450 sstart.push_back(record); -
XIOS/trunk/src/io/onetcdf4.hpp
r707 r802 27 27 /// Constructeurs /// 28 28 CONetCDF4(const StdString& filename, bool append, bool useClassicFormat = false, 29 const MPI_Comm* comm = NULL, bool multifile = true); 29 const MPI_Comm* comm = NULL, bool multifile = true, 30 const StdString& timeCounterName = "time_counter"); 30 31 31 32 CONetCDF4(const CONetCDF4& onetcdf4); // Not implemented. … … 35 36 /// Initialisation /// 36 37 void initialize(const StdString& filename, bool append, bool useClassicFormat, 37 const MPI_Comm* comm, bool multifile );38 const MPI_Comm* comm, bool multifile, const StdString& timeCounterName); 38 39 void close(void); 39 40 void sync(void); … … 93 94 int getUnlimitedDimension(void); 94 95 StdString getUnlimitedDimensionName(void); 96 const StdString& getTimeCounterName(void) const { return timeCounterName; }; 95 97 96 98 void getTimeAxisBounds(CArray<double,2>& timeAxisBounds, const StdString& name, bool collective); … … 119 121 bool wmpi; 120 122 map<int,size_t> timeAxis; 123 StdString timeCounterName; 121 124 }; // class CONetCDF4 122 125 -
XIOS/trunk/src/node/file.cpp
r775 r802 274 274 275 275 if (time_counter.isEmpty()) time_counter.setValue(time_counter_attr::centered); 276 if (time_counter_name.isEmpty()) time_counter_name = "time_counter"; 276 277 } 277 278 … … 425 426 426 427 data_out = shared_ptr<CDataOutput>(new CNc4DataOutput(oss.str(), append, useClassicFormat, 427 fileComm, multifile, isCollective ));428 fileComm, multifile, isCollective, time_counter_name)); 428 429 isOpen = true; 429 430 … … 525 526 if (isOpen) data_out->closeFile(); 526 527 527 data_in = shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective ));528 data_in = shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective, time_counter_name)); 528 529 isOpen = true; 529 530 }
Note: See TracChangeset
for help on using the changeset viewer.