Changeset 1041


Ignore:
Timestamp:
02/01/17 10:10:40 (4 years ago)
Author:
rlacroix
Message:

Add a new attribute "ts_target" for variables.

It allows choosing the target of the variable when using timeseries. Possible values are:

  • field
  • file
  • both
  • none.

If no value is set then the default behavior is used, that is "field" for field variables and "file" for file variables.

Location:
XIOS/trunk/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/config/var_attribute.conf

    r527 r1041  
    11DECLARE_TYPE(type) 
    22DECLARE_ATTRIBUTE(StdString, name) 
     3DECLARE_ENUM4(ts_target, file, field, both, none) 
  • XIOS/trunk/src/interface/c_attr/icvariable_attr.cpp

    r591 r1041  
    4444 
    4545 
     46  void cxios_set_variable_ts_target(variable_Ptr variable_hdl, const char * ts_target, int ts_target_size) 
     47  { 
     48    std::string ts_target_str; 
     49    if (!cstr2string(ts_target, ts_target_size, ts_target_str)) return; 
     50    CTimer::get("XIOS").resume(); 
     51    variable_hdl->ts_target.fromString(ts_target_str); 
     52    CTimer::get("XIOS").suspend(); 
     53  } 
     54 
     55  void cxios_get_variable_ts_target(variable_Ptr variable_hdl, char * ts_target, int ts_target_size) 
     56  { 
     57    CTimer::get("XIOS").resume(); 
     58    if (!string_copy(variable_hdl->ts_target.getInheritedStringValue(), ts_target, ts_target_size)) 
     59      ERROR("void cxios_get_variable_ts_target(variable_Ptr variable_hdl, char * ts_target, int ts_target_size)", << "Input string is too short"); 
     60    CTimer::get("XIOS").suspend(); 
     61  } 
     62 
     63  bool cxios_is_defined_variable_ts_target(variable_Ptr variable_hdl) 
     64  { 
     65     CTimer::get("XIOS").resume(); 
     66     bool isDefined = variable_hdl->ts_target.hasInheritedValue(); 
     67     CTimer::get("XIOS").suspend(); 
     68     return isDefined; 
     69  } 
     70 
     71 
    4672  void cxios_set_variable_type(variable_Ptr variable_hdl, const char * type, int type_size) 
    4773  { 
  • XIOS/trunk/src/interface/c_attr/icvariablegroup_attr.cpp

    r591 r1041  
    7070 
    7171 
     72  void cxios_set_variablegroup_ts_target(variablegroup_Ptr variablegroup_hdl, const char * ts_target, int ts_target_size) 
     73  { 
     74    std::string ts_target_str; 
     75    if (!cstr2string(ts_target, ts_target_size, ts_target_str)) return; 
     76    CTimer::get("XIOS").resume(); 
     77    variablegroup_hdl->ts_target.fromString(ts_target_str); 
     78    CTimer::get("XIOS").suspend(); 
     79  } 
     80 
     81  void cxios_get_variablegroup_ts_target(variablegroup_Ptr variablegroup_hdl, char * ts_target, int ts_target_size) 
     82  { 
     83    CTimer::get("XIOS").resume(); 
     84    if (!string_copy(variablegroup_hdl->ts_target.getInheritedStringValue(), ts_target, ts_target_size)) 
     85      ERROR("void cxios_get_variablegroup_ts_target(variablegroup_Ptr variablegroup_hdl, char * ts_target, int ts_target_size)", << "Input string is too short"); 
     86    CTimer::get("XIOS").suspend(); 
     87  } 
     88 
     89  bool cxios_is_defined_variablegroup_ts_target(variablegroup_Ptr variablegroup_hdl) 
     90  { 
     91     CTimer::get("XIOS").resume(); 
     92     bool isDefined = variablegroup_hdl->ts_target.hasInheritedValue(); 
     93     CTimer::get("XIOS").suspend(); 
     94     return isDefined; 
     95  } 
     96 
     97 
    7298  void cxios_set_variablegroup_type(variablegroup_Ptr variablegroup_hdl, const char * type, int type_size) 
    7399  { 
  • XIOS/trunk/src/interface/fortran_attr/ivariable_attr.F90

    r966 r1041  
    1212 
    1313  SUBROUTINE xios(set_variable_attr)  & 
    14     ( variable_id, name, type ) 
     14    ( variable_id, name, ts_target, type ) 
    1515 
    1616    IMPLICIT NONE 
     
    1818      CHARACTER(LEN=*), INTENT(IN) ::variable_id 
    1919      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
     20      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target 
    2021      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    2122 
     
    2324      (variable_id,variable_hdl) 
    2425      CALL xios(set_variable_attr_hdl_)   & 
    25       ( variable_hdl, name, type ) 
     26      ( variable_hdl, name, ts_target, type ) 
    2627 
    2728  END SUBROUTINE xios(set_variable_attr) 
    2829 
    2930  SUBROUTINE xios(set_variable_attr_hdl)  & 
    30     ( variable_hdl, name, type ) 
     31    ( variable_hdl, name, ts_target, type ) 
    3132 
    3233    IMPLICIT NONE 
    3334      TYPE(txios(variable)) , INTENT(IN) :: variable_hdl 
    3435      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
     36      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target 
    3537      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    3638 
    3739      CALL xios(set_variable_attr_hdl_)  & 
    38       ( variable_hdl, name, type ) 
     40      ( variable_hdl, name, ts_target, type ) 
    3941 
    4042  END SUBROUTINE xios(set_variable_attr_hdl) 
    4143 
    4244  SUBROUTINE xios(set_variable_attr_hdl_)   & 
    43     ( variable_hdl, name_, type_ ) 
     45    ( variable_hdl, name_, ts_target_, type_ ) 
    4446 
    4547    IMPLICIT NONE 
    4648      TYPE(txios(variable)) , INTENT(IN) :: variable_hdl 
    4749      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 
     50      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target_ 
    4851      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
    4952 
     
    5154        CALL cxios_set_variable_name & 
    5255      (variable_hdl%daddr, name_, len(name_)) 
     56      ENDIF 
     57 
     58      IF (PRESENT(ts_target_)) THEN 
     59        CALL cxios_set_variable_ts_target & 
     60      (variable_hdl%daddr, ts_target_, len(ts_target_)) 
    5361      ENDIF 
    5462 
     
    6169 
    6270  SUBROUTINE xios(get_variable_attr)  & 
    63     ( variable_id, name, type ) 
     71    ( variable_id, name, ts_target, type ) 
    6472 
    6573    IMPLICIT NONE 
     
    6775      CHARACTER(LEN=*), INTENT(IN) ::variable_id 
    6876      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
     77      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target 
    6978      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    7079 
     
    7281      (variable_id,variable_hdl) 
    7382      CALL xios(get_variable_attr_hdl_)   & 
    74       ( variable_hdl, name, type ) 
     83      ( variable_hdl, name, ts_target, type ) 
    7584 
    7685  END SUBROUTINE xios(get_variable_attr) 
    7786 
    7887  SUBROUTINE xios(get_variable_attr_hdl)  & 
    79     ( variable_hdl, name, type ) 
     88    ( variable_hdl, name, ts_target, type ) 
    8089 
    8190    IMPLICIT NONE 
    8291      TYPE(txios(variable)) , INTENT(IN) :: variable_hdl 
    8392      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
     93      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target 
    8494      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    8595 
    8696      CALL xios(get_variable_attr_hdl_)  & 
    87       ( variable_hdl, name, type ) 
     97      ( variable_hdl, name, ts_target, type ) 
    8898 
    8999  END SUBROUTINE xios(get_variable_attr_hdl) 
    90100 
    91101  SUBROUTINE xios(get_variable_attr_hdl_)   & 
    92     ( variable_hdl, name_, type_ ) 
     102    ( variable_hdl, name_, ts_target_, type_ ) 
    93103 
    94104    IMPLICIT NONE 
    95105      TYPE(txios(variable)) , INTENT(IN) :: variable_hdl 
    96106      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ 
     107      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target_ 
    97108      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
    98109 
     
    100111        CALL cxios_get_variable_name & 
    101112      (variable_hdl%daddr, name_, len(name_)) 
     113      ENDIF 
     114 
     115      IF (PRESENT(ts_target_)) THEN 
     116        CALL cxios_get_variable_ts_target & 
     117      (variable_hdl%daddr, ts_target_, len(ts_target_)) 
    102118      ENDIF 
    103119 
     
    110126 
    111127  SUBROUTINE xios(is_defined_variable_attr)  & 
    112     ( variable_id, name, type ) 
     128    ( variable_id, name, ts_target, type ) 
    113129 
    114130    IMPLICIT NONE 
     
    117133      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    118134      LOGICAL(KIND=C_BOOL) :: name_tmp 
     135      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target 
     136      LOGICAL(KIND=C_BOOL) :: ts_target_tmp 
    119137      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    120138      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    123141      (variable_id,variable_hdl) 
    124142      CALL xios(is_defined_variable_attr_hdl_)   & 
    125       ( variable_hdl, name, type ) 
     143      ( variable_hdl, name, ts_target, type ) 
    126144 
    127145  END SUBROUTINE xios(is_defined_variable_attr) 
    128146 
    129147  SUBROUTINE xios(is_defined_variable_attr_hdl)  & 
    130     ( variable_hdl, name, type ) 
     148    ( variable_hdl, name, ts_target, type ) 
    131149 
    132150    IMPLICIT NONE 
     
    134152      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    135153      LOGICAL(KIND=C_BOOL) :: name_tmp 
     154      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target 
     155      LOGICAL(KIND=C_BOOL) :: ts_target_tmp 
    136156      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    137157      LOGICAL(KIND=C_BOOL) :: type_tmp 
    138158 
    139159      CALL xios(is_defined_variable_attr_hdl_)  & 
    140       ( variable_hdl, name, type ) 
     160      ( variable_hdl, name, ts_target, type ) 
    141161 
    142162  END SUBROUTINE xios(is_defined_variable_attr_hdl) 
    143163 
    144164  SUBROUTINE xios(is_defined_variable_attr_hdl_)   & 
    145     ( variable_hdl, name_, type_ ) 
     165    ( variable_hdl, name_, ts_target_, type_ ) 
    146166 
    147167    IMPLICIT NONE 
     
    149169      LOGICAL, OPTIONAL, INTENT(OUT) :: name_ 
    150170      LOGICAL(KIND=C_BOOL) :: name__tmp 
     171      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target_ 
     172      LOGICAL(KIND=C_BOOL) :: ts_target__tmp 
    151173      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
    152174      LOGICAL(KIND=C_BOOL) :: type__tmp 
     
    156178      (variable_hdl%daddr) 
    157179        name_ = name__tmp 
     180      ENDIF 
     181 
     182      IF (PRESENT(ts_target_)) THEN 
     183        ts_target__tmp = cxios_is_defined_variable_ts_target & 
     184      (variable_hdl%daddr) 
     185        ts_target_ = ts_target__tmp 
    158186      ENDIF 
    159187 
  • XIOS/trunk/src/interface/fortran_attr/ivariablegroup_attr.F90

    r966 r1041  
    1212 
    1313  SUBROUTINE xios(set_variablegroup_attr)  & 
    14     ( variablegroup_id, group_ref, name, type ) 
     14    ( variablegroup_id, group_ref, name, ts_target, type ) 
    1515 
    1616    IMPLICIT NONE 
     
    1919      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    2020      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
     21      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target 
    2122      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    2223 
     
    2425      (variablegroup_id,variablegroup_hdl) 
    2526      CALL xios(set_variablegroup_attr_hdl_)   & 
    26       ( variablegroup_hdl, group_ref, name, type ) 
     27      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    2728 
    2829  END SUBROUTINE xios(set_variablegroup_attr) 
    2930 
    3031  SUBROUTINE xios(set_variablegroup_attr_hdl)  & 
    31     ( variablegroup_hdl, group_ref, name, type ) 
     32    ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    3233 
    3334    IMPLICIT NONE 
     
    3536      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    3637      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
     38      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target 
    3739      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    3840 
    3941      CALL xios(set_variablegroup_attr_hdl_)  & 
    40       ( variablegroup_hdl, group_ref, name, type ) 
     42      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    4143 
    4244  END SUBROUTINE xios(set_variablegroup_attr_hdl) 
    4345 
    4446  SUBROUTINE xios(set_variablegroup_attr_hdl_)   & 
    45     ( variablegroup_hdl, group_ref_, name_, type_ ) 
     47    ( variablegroup_hdl, group_ref_, name_, ts_target_, type_ ) 
    4648 
    4749    IMPLICIT NONE 
     
    4951      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_ 
    5052      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 
     53      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: ts_target_ 
    5154      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
    5255 
     
    6164      ENDIF 
    6265 
     66      IF (PRESENT(ts_target_)) THEN 
     67        CALL cxios_set_variablegroup_ts_target & 
     68      (variablegroup_hdl%daddr, ts_target_, len(ts_target_)) 
     69      ENDIF 
     70 
    6371      IF (PRESENT(type_)) THEN 
    6472        CALL cxios_set_variablegroup_type & 
     
    6977 
    7078  SUBROUTINE xios(get_variablegroup_attr)  & 
    71     ( variablegroup_id, group_ref, name, type ) 
     79    ( variablegroup_id, group_ref, name, ts_target, type ) 
    7280 
    7381    IMPLICIT NONE 
     
    7684      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    7785      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
     86      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target 
    7887      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    7988 
     
    8190      (variablegroup_id,variablegroup_hdl) 
    8291      CALL xios(get_variablegroup_attr_hdl_)   & 
    83       ( variablegroup_hdl, group_ref, name, type ) 
     92      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    8493 
    8594  END SUBROUTINE xios(get_variablegroup_attr) 
    8695 
    8796  SUBROUTINE xios(get_variablegroup_attr_hdl)  & 
    88     ( variablegroup_hdl, group_ref, name, type ) 
     97    ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    8998 
    9099    IMPLICIT NONE 
     
    92101      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    93102      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
     103      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target 
    94104      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    95105 
    96106      CALL xios(get_variablegroup_attr_hdl_)  & 
    97       ( variablegroup_hdl, group_ref, name, type ) 
     107      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    98108 
    99109  END SUBROUTINE xios(get_variablegroup_attr_hdl) 
    100110 
    101111  SUBROUTINE xios(get_variablegroup_attr_hdl_)   & 
    102     ( variablegroup_hdl, group_ref_, name_, type_ ) 
     112    ( variablegroup_hdl, group_ref_, name_, ts_target_, type_ ) 
    103113 
    104114    IMPLICIT NONE 
     
    106116      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_ 
    107117      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ 
     118      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: ts_target_ 
    108119      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
    109120 
     
    118129      ENDIF 
    119130 
     131      IF (PRESENT(ts_target_)) THEN 
     132        CALL cxios_get_variablegroup_ts_target & 
     133      (variablegroup_hdl%daddr, ts_target_, len(ts_target_)) 
     134      ENDIF 
     135 
    120136      IF (PRESENT(type_)) THEN 
    121137        CALL cxios_get_variablegroup_type & 
     
    126142 
    127143  SUBROUTINE xios(is_defined_variablegroup_attr)  & 
    128     ( variablegroup_id, group_ref, name, type ) 
     144    ( variablegroup_id, group_ref, name, ts_target, type ) 
    129145 
    130146    IMPLICIT NONE 
     
    135151      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    136152      LOGICAL(KIND=C_BOOL) :: name_tmp 
     153      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target 
     154      LOGICAL(KIND=C_BOOL) :: ts_target_tmp 
    137155      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    138156      LOGICAL(KIND=C_BOOL) :: type_tmp 
     
    141159      (variablegroup_id,variablegroup_hdl) 
    142160      CALL xios(is_defined_variablegroup_attr_hdl_)   & 
    143       ( variablegroup_hdl, group_ref, name, type ) 
     161      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    144162 
    145163  END SUBROUTINE xios(is_defined_variablegroup_attr) 
    146164 
    147165  SUBROUTINE xios(is_defined_variablegroup_attr_hdl)  & 
    148     ( variablegroup_hdl, group_ref, name, type ) 
     166    ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    149167 
    150168    IMPLICIT NONE 
     
    154172      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    155173      LOGICAL(KIND=C_BOOL) :: name_tmp 
     174      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target 
     175      LOGICAL(KIND=C_BOOL) :: ts_target_tmp 
    156176      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    157177      LOGICAL(KIND=C_BOOL) :: type_tmp 
    158178 
    159179      CALL xios(is_defined_variablegroup_attr_hdl_)  & 
    160       ( variablegroup_hdl, group_ref, name, type ) 
     180      ( variablegroup_hdl, group_ref, name, ts_target, type ) 
    161181 
    162182  END SUBROUTINE xios(is_defined_variablegroup_attr_hdl) 
    163183 
    164184  SUBROUTINE xios(is_defined_variablegroup_attr_hdl_)   & 
    165     ( variablegroup_hdl, group_ref_, name_, type_ ) 
     185    ( variablegroup_hdl, group_ref_, name_, ts_target_, type_ ) 
    166186 
    167187    IMPLICIT NONE 
     
    171191      LOGICAL, OPTIONAL, INTENT(OUT) :: name_ 
    172192      LOGICAL(KIND=C_BOOL) :: name__tmp 
     193      LOGICAL, OPTIONAL, INTENT(OUT) :: ts_target_ 
     194      LOGICAL(KIND=C_BOOL) :: ts_target__tmp 
    173195      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
    174196      LOGICAL(KIND=C_BOOL) :: type__tmp 
     
    186208      ENDIF 
    187209 
     210      IF (PRESENT(ts_target_)) THEN 
     211        ts_target__tmp = cxios_is_defined_variablegroup_ts_target & 
     212      (variablegroup_hdl%daddr) 
     213        ts_target_ = ts_target__tmp 
     214      ENDIF 
     215 
    188216      IF (PRESENT(type_)) THEN 
    189217        type__tmp = cxios_is_defined_variablegroup_type & 
  • XIOS/trunk/src/interface/fortran_attr/variable_interface_attr.F90

    r581 r1041  
    3131 
    3232 
     33    SUBROUTINE cxios_set_variable_ts_target(variable_hdl, ts_target, ts_target_size) BIND(C) 
     34      USE ISO_C_BINDING 
     35      INTEGER (kind = C_INTPTR_T), VALUE :: variable_hdl 
     36      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: ts_target 
     37      INTEGER  (kind = C_INT)     , VALUE        :: ts_target_size 
     38    END SUBROUTINE cxios_set_variable_ts_target 
     39 
     40    SUBROUTINE cxios_get_variable_ts_target(variable_hdl, ts_target, ts_target_size) BIND(C) 
     41      USE ISO_C_BINDING 
     42      INTEGER (kind = C_INTPTR_T), VALUE :: variable_hdl 
     43      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: ts_target 
     44      INTEGER  (kind = C_INT)     , VALUE        :: ts_target_size 
     45    END SUBROUTINE cxios_get_variable_ts_target 
     46 
     47    FUNCTION cxios_is_defined_variable_ts_target(variable_hdl) BIND(C) 
     48      USE ISO_C_BINDING 
     49      LOGICAL(kind=C_BOOL) :: cxios_is_defined_variable_ts_target 
     50      INTEGER (kind = C_INTPTR_T), VALUE :: variable_hdl 
     51    END FUNCTION cxios_is_defined_variable_ts_target 
     52 
     53 
    3354    SUBROUTINE cxios_set_variable_type(variable_hdl, type, type_size) BIND(C) 
    3455      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/variablegroup_interface_attr.F90

    r581 r1041  
    5252 
    5353 
     54    SUBROUTINE cxios_set_variablegroup_ts_target(variablegroup_hdl, ts_target, ts_target_size) BIND(C) 
     55      USE ISO_C_BINDING 
     56      INTEGER (kind = C_INTPTR_T), VALUE :: variablegroup_hdl 
     57      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: ts_target 
     58      INTEGER  (kind = C_INT)     , VALUE        :: ts_target_size 
     59    END SUBROUTINE cxios_set_variablegroup_ts_target 
     60 
     61    SUBROUTINE cxios_get_variablegroup_ts_target(variablegroup_hdl, ts_target, ts_target_size) BIND(C) 
     62      USE ISO_C_BINDING 
     63      INTEGER (kind = C_INTPTR_T), VALUE :: variablegroup_hdl 
     64      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: ts_target 
     65      INTEGER  (kind = C_INT)     , VALUE        :: ts_target_size 
     66    END SUBROUTINE cxios_get_variablegroup_ts_target 
     67 
     68    FUNCTION cxios_is_defined_variablegroup_ts_target(variablegroup_hdl) BIND(C) 
     69      USE ISO_C_BINDING 
     70      LOGICAL(kind=C_BOOL) :: cxios_is_defined_variablegroup_ts_target 
     71      INTEGER (kind = C_INTPTR_T), VALUE :: variablegroup_hdl 
     72    END FUNCTION cxios_is_defined_variablegroup_ts_target 
     73 
     74 
    5475    SUBROUTINE cxios_set_variablegroup_type(variablegroup_hdl, type, type_size) BIND(C) 
    5576      USE ISO_C_BINDING 
  • XIOS/trunk/src/node/context.cpp

    r1033 r1041  
    10021002       CFile* file = allFiles[i]; 
    10031003 
     1004       std::vector<CVariable*> fileVars, fieldVars, vars = file->getAllVariables(); 
     1005       for (size_t k = 0; k < vars.size(); k++) 
     1006       { 
     1007         CVariable* var = vars[k]; 
     1008 
     1009         if (var->ts_target.isEmpty() 
     1010              || var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both) 
     1011           fileVars.push_back(var); 
     1012 
     1013         if (!var->ts_target.isEmpty() 
     1014              && (var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both)) 
     1015           fieldVars.push_back(var); 
     1016       } 
     1017 
    10041018       if (!file->timeseries.isEmpty() && file->timeseries != CFile::timeseries_attr::none) 
    10051019       { 
     
    10151029             CFile* tsFile = CFile::create(); 
    10161030             tsFile->duplicateAttributes(file); 
    1017              tsFile->setVirtualVariableGroup(file->getVirtualVariableGroup()); 
     1031 
     1032             // Add variables originating from file and targeted to timeserie file 
     1033             for (size_t k = 0; k < fileVars.size(); k++) 
     1034               tsFile->getVirtualVariableGroup()->addChild(fileVars[k]); 
    10181035 
    10191036             tsFile->name = tsPrefix + "_"; 
     
    10301047             CField* tsField = tsFile->addField(); 
    10311048             tsField->field_ref = field->getId(); 
    1032              tsField->setVirtualVariableGroup(field->getVirtualVariableGroup()); 
     1049 
     1050             // Add variables originating from file and targeted to timeserie field 
     1051             for (size_t k = 0; k < fieldVars.size(); k++) 
     1052               tsField->getVirtualVariableGroup()->addChild(fieldVars[k]); 
     1053 
     1054             vars = field->getAllVariables(); 
     1055             for (size_t k = 0; k < vars.size(); k++) 
     1056             { 
     1057               CVariable* var = vars[k]; 
     1058 
     1059               // Add variables originating from field and targeted to timeserie field 
     1060               if (var->ts_target.isEmpty() 
     1061                    || var->ts_target == CVariable::ts_target_attr::field || var->ts_target == CVariable::ts_target_attr::both) 
     1062                 tsField->getVirtualVariableGroup()->addChild(var); 
     1063 
     1064               // Add variables originating from field and targeted to timeserie file 
     1065               if (!var->ts_target.isEmpty() 
     1066                    && (var->ts_target == CVariable::ts_target_attr::file || var->ts_target == CVariable::ts_target_attr::both)) 
     1067                 tsFile->getVirtualVariableGroup()->addChild(var); 
     1068             } 
    10331069 
    10341070             tsFile->solveFieldRefInheritance(true); 
  • XIOS/trunk/src/node/variable.hpp

    r773 r1041  
    99#include "attribute_enum.hpp" 
    1010#include "attribute_enum_impl.hpp" 
     11#include "declare_attribute.hpp" 
    1112 
    1213namespace xios 
Note: See TracChangeset for help on using the changeset viewer.