Ignore:
Timestamp:
09/29/15 14:17:42 (9 years ago)
Author:
rlacroix
Message:

Support creating the timeseries automatically.

Fields which should be outputted as timeseries must have the ts_enabled attribute set to true.

Files have a new attribute timeseries which must be one of:

  • none: no timeseries are outputted, only the regular file (default behavior when the attribute is ommited).
  • only: only the timeseries are outputted, the regular file is not created.
  • both: both the timeseries and the regular files are outputted.
  • exclusive: the timeseries are outputted and a regular file is created with only the fields which were not marked for output as a timeserie (if any).

The name of the files created for the timeseries is composed of a prefix followed by the name of the variable. The file attribute ts_prefix can be used to control the prefix used (by default, the name of the regular file is used).

All the attributes of the regular file are inherited by the files created for the timeseries. The field attribute ts_split_freq can be used to configure the splitting for each timeseries (by default, the splitting frequency of the regular file is used).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran_attr/ifield_attr.F90

    r676 r711  
    1414    ( field_id, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    1515    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    16     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     16    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     17    , valid_max, valid_min ) 
    1718 
    1819    IMPLICIT NONE 
     
    4344      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: scale_factor 
    4445      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     46      LOGICAL  , OPTIONAL, INTENT(IN) :: ts_enabled 
     47      LOGICAL (KIND=C_BOOL) :: ts_enabled_tmp 
     48      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: ts_split_freq 
    4549      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit 
    4650      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max 
     
    5155      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    5256      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    53       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     57      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     58      , valid_max, valid_min ) 
    5459 
    5560  END SUBROUTINE xios(set_field_attr) 
     
    5863    ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    5964    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    60     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     65    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     66    , valid_max, valid_min ) 
    6167 
    6268    IMPLICIT NONE 
     
    8692      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: scale_factor 
    8793      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
     94      LOGICAL  , OPTIONAL, INTENT(IN) :: ts_enabled 
     95      LOGICAL (KIND=C_BOOL) :: ts_enabled_tmp 
     96      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: ts_split_freq 
    8897      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit 
    8998      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max 
     
    93102      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    94103      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    95       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     104      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     105      , valid_max, valid_min ) 
    96106 
    97107  END SUBROUTINE xios(set_field_attr_hdl) 
     
    100110    ( field_hdl, add_offset_, axis_ref_, compression_level_, default_value_, detect_missing_value_  & 
    101111    , domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_ref_, indexed_output_, level_  & 
    102     , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, unit_, valid_max_  & 
    103     , valid_min_ ) 
     112    , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, ts_enabled_  & 
     113    , ts_split_freq_, unit_, valid_max_, valid_min_ ) 
    104114 
    105115    IMPLICIT NONE 
     
    129139      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: scale_factor_ 
    130140      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 
     141      LOGICAL  , OPTIONAL, INTENT(IN) :: ts_enabled_ 
     142      LOGICAL (KIND=C_BOOL) :: ts_enabled__tmp 
     143      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: ts_split_freq_ 
    131144      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_ 
    132145      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max_ 
     
    217230      ENDIF 
    218231 
     232      IF (PRESENT(ts_enabled_)) THEN 
     233        ts_enabled__tmp = ts_enabled_ 
     234        CALL cxios_set_field_ts_enabled(field_hdl%daddr, ts_enabled__tmp) 
     235      ENDIF 
     236 
     237      IF (PRESENT(ts_split_freq_)) THEN 
     238        CALL cxios_set_field_ts_split_freq(field_hdl%daddr, ts_split_freq_) 
     239      ENDIF 
     240 
    219241      IF (PRESENT(unit_)) THEN 
    220242        CALL cxios_set_field_unit(field_hdl%daddr, unit_, len(unit_)) 
     
    234256    ( field_id, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    235257    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    236     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     258    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     259    , valid_max, valid_min ) 
    237260 
    238261    IMPLICIT NONE 
     
    263286      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: scale_factor 
    264287      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     288      LOGICAL  , OPTIONAL, INTENT(OUT) :: ts_enabled 
     289      LOGICAL (KIND=C_BOOL) :: ts_enabled_tmp 
     290      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: ts_split_freq 
    265291      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit 
    266292      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max 
     
    271297      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    272298      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    273       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     299      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     300      , valid_max, valid_min ) 
    274301 
    275302  END SUBROUTINE xios(get_field_attr) 
     
    278305    ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    279306    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    280     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     307    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     308    , valid_max, valid_min ) 
    281309 
    282310    IMPLICIT NONE 
     
    306334      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: scale_factor 
    307335      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
     336      LOGICAL  , OPTIONAL, INTENT(OUT) :: ts_enabled 
     337      LOGICAL (KIND=C_BOOL) :: ts_enabled_tmp 
     338      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: ts_split_freq 
    308339      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit 
    309340      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max 
     
    313344      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    314345      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    315       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     346      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     347      , valid_max, valid_min ) 
    316348 
    317349  END SUBROUTINE xios(get_field_attr_hdl) 
     
    320352    ( field_hdl, add_offset_, axis_ref_, compression_level_, default_value_, detect_missing_value_  & 
    321353    , domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_ref_, indexed_output_, level_  & 
    322     , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, unit_, valid_max_  & 
    323     , valid_min_ ) 
     354    , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, ts_enabled_  & 
     355    , ts_split_freq_, unit_, valid_max_, valid_min_ ) 
    324356 
    325357    IMPLICIT NONE 
     
    349381      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: scale_factor_ 
    350382      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 
     383      LOGICAL  , OPTIONAL, INTENT(OUT) :: ts_enabled_ 
     384      LOGICAL (KIND=C_BOOL) :: ts_enabled__tmp 
     385      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: ts_split_freq_ 
    351386      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_ 
    352387      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max_ 
     
    437472      ENDIF 
    438473 
     474      IF (PRESENT(ts_enabled_)) THEN 
     475        CALL cxios_get_field_ts_enabled(field_hdl%daddr, ts_enabled__tmp) 
     476        ts_enabled_ = ts_enabled__tmp 
     477      ENDIF 
     478 
     479      IF (PRESENT(ts_split_freq_)) THEN 
     480        CALL cxios_get_field_ts_split_freq(field_hdl%daddr, ts_split_freq_) 
     481      ENDIF 
     482 
    439483      IF (PRESENT(unit_)) THEN 
    440484        CALL cxios_get_field_unit(field_hdl%daddr, unit_, len(unit_)) 
     
    454498    ( field_id, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    455499    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    456     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     500    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     501    , valid_max, valid_min ) 
    457502 
    458503    IMPLICIT NONE 
     
    499544      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    500545      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     546      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_enabled 
     547      LOGICAL(KIND=C_BOOL) :: ts_enabled_tmp 
     548      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_split_freq 
     549      LOGICAL(KIND=C_BOOL) :: ts_split_freq_tmp 
    501550      LOGICAL, OPTIONAL, INTENT(OUT) :: unit 
    502551      LOGICAL(KIND=C_BOOL) :: unit_tmp 
     
    510559      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    511560      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    512       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     561      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     562      , valid_max, valid_min ) 
    513563 
    514564  END SUBROUTINE xios(is_defined_field_attr) 
     
    517567    ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    518568    , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    519     , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     569    , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     570    , valid_max, valid_min ) 
    520571 
    521572    IMPLICIT NONE 
     
    561612      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 
    562613      LOGICAL(KIND=C_BOOL) :: standard_name_tmp 
     614      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_enabled 
     615      LOGICAL(KIND=C_BOOL) :: ts_enabled_tmp 
     616      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_split_freq 
     617      LOGICAL(KIND=C_BOOL) :: ts_split_freq_tmp 
    563618      LOGICAL, OPTIONAL, INTENT(OUT) :: unit 
    564619      LOGICAL(KIND=C_BOOL) :: unit_tmp 
     
    571626      ( field_hdl, add_offset, axis_ref, compression_level, default_value, detect_missing_value, domain_ref  & 
    572627      , enabled, field_ref, freq_offset, freq_op, grid_ref, indexed_output, level, long_name, name  & 
    573       , operation, prec, read_access, scale_factor, standard_name, unit, valid_max, valid_min ) 
     628      , operation, prec, read_access, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  & 
     629      , valid_max, valid_min ) 
    574630 
    575631  END SUBROUTINE xios(is_defined_field_attr_hdl) 
     
    578634    ( field_hdl, add_offset_, axis_ref_, compression_level_, default_value_, detect_missing_value_  & 
    579635    , domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_ref_, indexed_output_, level_  & 
    580     , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, unit_, valid_max_  & 
    581     , valid_min_ ) 
     636    , long_name_, name_, operation_, prec_, read_access_, scale_factor_, standard_name_, ts_enabled_  & 
     637    , ts_split_freq_, unit_, valid_max_, valid_min_ ) 
    582638 
    583639    IMPLICIT NONE 
     
    623679      LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name_ 
    624680      LOGICAL(KIND=C_BOOL) :: standard_name__tmp 
     681      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_enabled_ 
     682      LOGICAL(KIND=C_BOOL) :: ts_enabled__tmp 
     683      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_split_freq_ 
     684      LOGICAL(KIND=C_BOOL) :: ts_split_freq__tmp 
    625685      LOGICAL, OPTIONAL, INTENT(OUT) :: unit_ 
    626686      LOGICAL(KIND=C_BOOL) :: unit__tmp 
     
    730790      ENDIF 
    731791 
     792      IF (PRESENT(ts_enabled_)) THEN 
     793        ts_enabled__tmp = cxios_is_defined_field_ts_enabled(field_hdl%daddr) 
     794        ts_enabled_ = ts_enabled__tmp 
     795      ENDIF 
     796 
     797      IF (PRESENT(ts_split_freq_)) THEN 
     798        ts_split_freq__tmp = cxios_is_defined_field_ts_split_freq(field_hdl%daddr) 
     799        ts_split_freq_ = ts_split_freq__tmp 
     800      ENDIF 
     801 
    732802      IF (PRESENT(unit_)) THEN 
    733803        unit__tmp = cxios_is_defined_field_unit(field_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.