Ignore:
Timestamp:
06/05/15 16:42:18 (9 years ago)
Author:
rlacroix
Message:

Improve CF compliance: add a new axis attribute "bounds".

Fixes ticket #67.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxisgroup_attr.F90

    r501 r609  
    1212   
    1313  SUBROUTINE xios(set_axisgroup_attr)  & 
    14     ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    15     , zoom_end, zoom_size ) 
     14    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     15    , zoom_begin, zoom_end, zoom_size ) 
    1616     
    1717    IMPLICIT NONE 
    1818      TYPE(txios(axisgroup))  :: axisgroup_hdl 
    1919      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 
     20      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    2021      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    2122      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name 
     
    3233      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    3334      CALL xios(set_axisgroup_attr_hdl_)   & 
    34       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    35       , zoom_end, zoom_size ) 
     35      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     36      , zoom_begin, zoom_end, zoom_size ) 
    3637     
    3738  END SUBROUTINE xios(set_axisgroup_attr) 
    3839   
    3940  SUBROUTINE xios(set_axisgroup_attr_hdl)  & 
    40     ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    41     , zoom_end, zoom_size ) 
    42      
    43     IMPLICIT NONE 
    44       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     41    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     42    , zoom_begin, zoom_end, zoom_size ) 
     43     
     44    IMPLICIT NONE 
     45      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     46      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    4547      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    4648      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name 
     
    5658       
    5759      CALL xios(set_axisgroup_attr_hdl_)  & 
    58       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    59       , zoom_end, zoom_size ) 
     60      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     61      , zoom_begin, zoom_end, zoom_size ) 
    6062     
    6163  END SUBROUTINE xios(set_axisgroup_attr_hdl) 
    6264   
    6365  SUBROUTINE xios(set_axisgroup_attr_hdl_)   & 
    64     ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  & 
    65     , zoom_begin_, zoom_end_, zoom_size_ ) 
    66      
    67     IMPLICIT NONE 
    68       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     66    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  & 
     67    , value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     68     
     69    IMPLICIT NONE 
     70      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     71      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 
    6972      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_ 
    7073      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_ 
     
    7982      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size_ 
    8083       
     84      IF (PRESENT(bounds_)) THEN 
     85        CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 
     86      ENDIF 
     87       
    8188      IF (PRESENT(group_ref_)) THEN 
    8289        CALL cxios_set_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_)) 
     
    128135   
    129136  SUBROUTINE xios(get_axisgroup_attr)  & 
    130     ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    131     , zoom_end, zoom_size ) 
     137    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     138    , zoom_begin, zoom_end, zoom_size ) 
    132139     
    133140    IMPLICIT NONE 
    134141      TYPE(txios(axisgroup))  :: axisgroup_hdl 
    135142      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 
     143      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    136144      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    137145      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name 
     
    148156      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    149157      CALL xios(get_axisgroup_attr_hdl_)   & 
    150       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    151       , zoom_end, zoom_size ) 
     158      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     159      , zoom_begin, zoom_end, zoom_size ) 
    152160     
    153161  END SUBROUTINE xios(get_axisgroup_attr) 
    154162   
    155163  SUBROUTINE xios(get_axisgroup_attr_hdl)  & 
    156     ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    157     , zoom_end, zoom_size ) 
    158      
    159     IMPLICIT NONE 
    160       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     164    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     165    , zoom_begin, zoom_end, zoom_size ) 
     166     
     167    IMPLICIT NONE 
     168      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     169      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    161170      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    162171      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name 
     
    172181       
    173182      CALL xios(get_axisgroup_attr_hdl_)  & 
    174       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    175       , zoom_end, zoom_size ) 
     183      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     184      , zoom_begin, zoom_end, zoom_size ) 
    176185     
    177186  END SUBROUTINE xios(get_axisgroup_attr_hdl) 
    178187   
    179188  SUBROUTINE xios(get_axisgroup_attr_hdl_)   & 
    180     ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  & 
    181     , zoom_begin_, zoom_end_, zoom_size_ ) 
    182      
    183     IMPLICIT NONE 
    184       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     189    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  & 
     190    , value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     191     
     192    IMPLICIT NONE 
     193      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     194      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 
    185195      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_ 
    186196      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_ 
     
    195205      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size_ 
    196206       
     207      IF (PRESENT(bounds_)) THEN 
     208        CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 
     209      ENDIF 
     210       
    197211      IF (PRESENT(group_ref_)) THEN 
    198212        CALL cxios_get_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_)) 
     
    244258   
    245259  SUBROUTINE xios(is_defined_axisgroup_attr)  & 
    246     ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    247     , zoom_end, zoom_size ) 
     260    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     261    , zoom_begin, zoom_end, zoom_size ) 
    248262     
    249263    IMPLICIT NONE 
    250264      TYPE(txios(axisgroup))  :: axisgroup_hdl 
    251265      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 
     266      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     267      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    252268      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    253269      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
     
    275291      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    276292      CALL xios(is_defined_axisgroup_attr_hdl_)   & 
    277       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    278       , zoom_end, zoom_size ) 
     293      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     294      , zoom_begin, zoom_end, zoom_size ) 
    279295     
    280296  END SUBROUTINE xios(is_defined_axisgroup_attr) 
    281297   
    282298  SUBROUTINE xios(is_defined_axisgroup_attr_hdl)  & 
    283     ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    284     , zoom_end, zoom_size ) 
    285      
    286     IMPLICIT NONE 
    287       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     299    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     300    , zoom_begin, zoom_end, zoom_size ) 
     301     
     302    IMPLICIT NONE 
     303      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     304      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     305      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    288306      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    289307      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
     
    310328       
    311329      CALL xios(is_defined_axisgroup_attr_hdl_)  & 
    312       ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  & 
    313       , zoom_end, zoom_size ) 
     330      ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  & 
     331      , zoom_begin, zoom_end, zoom_size ) 
    314332     
    315333  END SUBROUTINE xios(is_defined_axisgroup_attr_hdl) 
    316334   
    317335  SUBROUTINE xios(is_defined_axisgroup_attr_hdl_)   & 
    318     ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  & 
    319     , zoom_begin_, zoom_end_, zoom_size_ ) 
    320      
    321     IMPLICIT NONE 
    322       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     336    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  & 
     337    , value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     338     
     339    IMPLICIT NONE 
     340      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
     341      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 
     342      LOGICAL(KIND=C_BOOL) :: bounds__tmp 
    323343      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_ 
    324344      LOGICAL(KIND=C_BOOL) :: group_ref__tmp 
     
    344364      LOGICAL(KIND=C_BOOL) :: zoom_size__tmp 
    345365       
     366      IF (PRESENT(bounds_)) THEN 
     367        bounds__tmp=cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr) 
     368        bounds_=bounds__tmp 
     369      ENDIF 
     370       
    346371      IF (PRESENT(group_ref_)) THEN 
    347372        group_ref__tmp=cxios_is_defined_axisgroup_group_ref(axisgroup_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.