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.

Location:
XIOS/trunk/src/interface
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp

    r591 r609  
    4444 
    4545 
     46  void cxios_set_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 
     47  { 
     48    CTimer::get("XIOS").resume(); 
     49    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 
     50    axis_hdl->bounds.reference(tmp.copy()); 
     51     CTimer::get("XIOS").suspend(); 
     52  } 
     53 
     54  void cxios_get_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 
     55  { 
     56    CTimer::get("XIOS").resume(); 
     57    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 
     58    tmp=axis_hdl->bounds.getInheritedValue(); 
     59     CTimer::get("XIOS").suspend(); 
     60  } 
     61 
     62  bool cxios_is_defined_axis_bounds(axis_Ptr axis_hdl) 
     63  { 
     64     CTimer::get("XIOS").resume(); 
     65     bool isDefined = axis_hdl->bounds.hasInheritedValue(); 
     66     CTimer::get("XIOS").suspend(); 
     67     return isDefined; 
     68  } 
     69 
     70 
    4671  void cxios_set_axis_data_begin(axis_Ptr axis_hdl, int data_begin) 
    4772  { 
  • XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp

    r591 r609  
    4444 
    4545 
     46  void cxios_set_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 
     47  { 
     48    CTimer::get("XIOS").resume(); 
     49    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 
     50    axisgroup_hdl->bounds.reference(tmp.copy()); 
     51     CTimer::get("XIOS").suspend(); 
     52  } 
     53 
     54  void cxios_get_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 
     55  { 
     56    CTimer::get("XIOS").resume(); 
     57    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 
     58    tmp=axisgroup_hdl->bounds.getInheritedValue(); 
     59     CTimer::get("XIOS").suspend(); 
     60  } 
     61 
     62  bool cxios_is_defined_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl) 
     63  { 
     64     CTimer::get("XIOS").resume(); 
     65     bool isDefined = axisgroup_hdl->bounds.hasInheritedValue(); 
     66     CTimer::get("XIOS").suspend(); 
     67     return isDefined; 
     68  } 
     69 
     70 
    4671  void cxios_set_axisgroup_data_begin(axisgroup_Ptr axisgroup_hdl, int data_begin) 
    4772  { 
  • XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90

    r581 r609  
    3131 
    3232 
     33    SUBROUTINE cxios_set_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 
     34      USE ISO_C_BINDING 
     35      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl 
     36      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds 
     37      INTEGER (kind = C_INT), VALUE  :: extent1 
     38      INTEGER (kind = C_INT), VALUE  :: extent2 
     39    END SUBROUTINE cxios_set_axis_bounds 
     40 
     41    SUBROUTINE cxios_get_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 
     42      USE ISO_C_BINDING 
     43      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl 
     44      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds 
     45      INTEGER (kind = C_INT), VALUE  :: extent1 
     46      INTEGER (kind = C_INT), VALUE  :: extent2 
     47    END SUBROUTINE cxios_get_axis_bounds 
     48 
     49    FUNCTION cxios_is_defined_axis_bounds(axis_hdl) BIND(C) 
     50      USE ISO_C_BINDING 
     51      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_bounds 
     52      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 
     53    END FUNCTION cxios_is_defined_axis_bounds 
     54 
     55 
    3356    SUBROUTINE cxios_set_axis_data_begin(axis_hdl, data_begin) BIND(C) 
    3457      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90

    r581 r609  
    3131 
    3232 
     33    SUBROUTINE cxios_set_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 
     34      USE ISO_C_BINDING 
     35      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl 
     36      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds 
     37      INTEGER (kind = C_INT), VALUE  :: extent1 
     38      INTEGER (kind = C_INT), VALUE  :: extent2 
     39    END SUBROUTINE cxios_set_axisgroup_bounds 
     40 
     41    SUBROUTINE cxios_get_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 
     42      USE ISO_C_BINDING 
     43      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl 
     44      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds 
     45      INTEGER (kind = C_INT), VALUE  :: extent1 
     46      INTEGER (kind = C_INT), VALUE  :: extent2 
     47    END SUBROUTINE cxios_get_axisgroup_bounds 
     48 
     49    FUNCTION cxios_is_defined_axisgroup_bounds(axisgroup_hdl) BIND(C) 
     50      USE ISO_C_BINDING 
     51      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_bounds 
     52      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 
     53    END FUNCTION cxios_is_defined_axisgroup_bounds 
     54 
     55 
    3356    SUBROUTINE cxios_set_axisgroup_data_begin(axisgroup_hdl, data_begin) BIND(C) 
    3457      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90

    r581 r609  
    1212 
    1313  SUBROUTINE xios(set_axis_attr)  & 
    14     ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    15     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     14    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  & 
     15    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    1616 
    1717    IMPLICIT NONE 
     
    1919      CHARACTER(LEN=*), INTENT(IN) ::axis_id 
    2020      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 
     21      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    2122      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin 
    2223      INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:) 
     
    3940      CALL xios(get_axis_handle)(axis_id,axis_hdl) 
    4041      CALL xios(set_axis_attr_hdl_)   & 
    41       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    42       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     42      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     43      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    4344 
    4445  END SUBROUTINE xios(set_axis_attr) 
    4546 
    4647  SUBROUTINE xios(set_axis_attr_hdl)  & 
    47     ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    48     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     48    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     49    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    4950 
    5051    IMPLICIT NONE 
    5152      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 
    5253      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 
     54      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    5355      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin 
    5456      INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:) 
     
    7072 
    7173      CALL xios(set_axis_attr_hdl_)  & 
    72       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    73       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     74      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     75      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    7476 
    7577  END SUBROUTINE xios(set_axis_attr_hdl) 
    7678 
    7779  SUBROUTINE xios(set_axis_attr_hdl_)   & 
    78     ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  & 
    79     , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     80    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  & 
     81    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  & 
     82     ) 
    8083 
    8184    IMPLICIT NONE 
    8285      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 
    8386      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 
     87      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 
    8488      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_ 
    8589      INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:) 
     
    104108      ENDIF 
    105109 
     110      IF (PRESENT(bounds_)) THEN 
     111        CALL cxios_set_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 
     112      ENDIF 
     113 
    106114      IF (PRESENT(data_begin_)) THEN 
    107115        CALL cxios_set_axis_data_begin(axis_hdl%daddr, data_begin_) 
     
    173181 
    174182  SUBROUTINE xios(get_axis_attr)  & 
    175     ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    176     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     183    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  & 
     184    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    177185 
    178186    IMPLICIT NONE 
     
    180188      CHARACTER(LEN=*), INTENT(IN) ::axis_id 
    181189      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 
     190      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    182191      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin 
    183192      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:) 
     
    200209      CALL xios(get_axis_handle)(axis_id,axis_hdl) 
    201210      CALL xios(get_axis_attr_hdl_)   & 
    202       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    203       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     211      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     212      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    204213 
    205214  END SUBROUTINE xios(get_axis_attr) 
    206215 
    207216  SUBROUTINE xios(get_axis_attr_hdl)  & 
    208     ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    209     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     217    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     218    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    210219 
    211220    IMPLICIT NONE 
    212221      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 
    213222      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 
     223      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    214224      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin 
    215225      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:) 
     
    231241 
    232242      CALL xios(get_axis_attr_hdl_)  & 
    233       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    234       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     243      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     244      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    235245 
    236246  END SUBROUTINE xios(get_axis_attr_hdl) 
    237247 
    238248  SUBROUTINE xios(get_axis_attr_hdl_)   & 
    239     ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  & 
    240     , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     249    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  & 
     250    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  & 
     251     ) 
    241252 
    242253    IMPLICIT NONE 
    243254      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 
    244255      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_ 
     256      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 
    245257      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_ 
    246258      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:) 
     
    265277      ENDIF 
    266278 
     279      IF (PRESENT(bounds_)) THEN 
     280        CALL cxios_get_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 
     281      ENDIF 
     282 
    267283      IF (PRESENT(data_begin_)) THEN 
    268284        CALL cxios_get_axis_data_begin(axis_hdl%daddr, data_begin_) 
     
    334350 
    335351  SUBROUTINE xios(is_defined_axis_attr)  & 
    336     ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    337     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     352    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  & 
     353    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    338354 
    339355    IMPLICIT NONE 
     
    342358      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 
    343359      LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 
     360      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     361      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    344362      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 
    345363      LOGICAL(KIND=C_BOOL) :: data_begin_tmp 
     
    377395      CALL xios(get_axis_handle)(axis_id,axis_hdl) 
    378396      CALL xios(is_defined_axis_attr_hdl_)   & 
    379       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    380       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     397      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     398      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    381399 
    382400  END SUBROUTINE xios(is_defined_axis_attr) 
    383401 
    384402  SUBROUTINE xios(is_defined_axis_attr_hdl)  & 
    385     ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    386     , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     403    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     404    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    387405 
    388406    IMPLICIT NONE 
     
    390408      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 
    391409      LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 
     410      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     411      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    392412      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 
    393413      LOGICAL(KIND=C_BOOL) :: data_begin_tmp 
     
    424444 
    425445      CALL xios(is_defined_axis_attr_hdl_)  & 
    426       ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  & 
    427       , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     446      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  & 
     447      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
    428448 
    429449  END SUBROUTINE xios(is_defined_axis_attr_hdl) 
    430450 
    431451  SUBROUTINE xios(is_defined_axis_attr_hdl_)   & 
    432     ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  & 
    433     , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 
     452    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  & 
     453    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  & 
     454     ) 
    434455 
    435456    IMPLICIT NONE 
     
    437458      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_ 
    438459      LOGICAL(KIND=C_BOOL) :: axis_ref__tmp 
     460      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 
     461      LOGICAL(KIND=C_BOOL) :: bounds__tmp 
    439462      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_ 
    440463      LOGICAL(KIND=C_BOOL) :: data_begin__tmp 
     
    475498      ENDIF 
    476499 
     500      IF (PRESENT(bounds_)) THEN 
     501        bounds__tmp = cxios_is_defined_axis_bounds(axis_hdl%daddr) 
     502        bounds_ = bounds__tmp 
     503      ENDIF 
     504 
    477505      IF (PRESENT(data_begin_)) THEN 
    478506        data_begin__tmp = cxios_is_defined_axis_data_begin(axis_hdl%daddr) 
  • XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90

    r581 r609  
    1212 
    1313  SUBROUTINE xios(set_axisgroup_attr)  & 
    14     ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    15     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     14    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     15    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     16     ) 
    1617 
    1718    IMPLICIT NONE 
     
    1920      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 
    2021      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 
     22      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    2123      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin 
    2224      INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:) 
     
    4042      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    4143      CALL xios(set_axisgroup_attr_hdl_)   & 
    42       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    43       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     44      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     45      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     46       ) 
    4447 
    4548  END SUBROUTINE xios(set_axisgroup_attr) 
    4649 
    4750  SUBROUTINE xios(set_axisgroup_attr_hdl)  & 
    48     ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    49     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     51    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     52    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     53     ) 
    5054 
    5155    IMPLICIT NONE 
    5256      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
    5357      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 
     58      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 
    5459      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin 
    5560      INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:) 
     
    7277 
    7378      CALL xios(set_axisgroup_attr_hdl_)  & 
    74       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    75       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     79      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     80      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     81       ) 
    7682 
    7783  END SUBROUTINE xios(set_axisgroup_attr_hdl) 
    7884 
    7985  SUBROUTINE xios(set_axisgroup_attr_hdl_)   & 
    80     ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  & 
    81     , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  & 
    82     , zoom_size_ ) 
     86    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  & 
     87    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  & 
     88    , zoom_end_, zoom_size_ ) 
    8389 
    8490    IMPLICIT NONE 
    8591      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
    8692      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 
     93      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 
    8794      INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_ 
    8895      INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:) 
     
    108115      ENDIF 
    109116 
     117      IF (PRESENT(bounds_)) THEN 
     118        CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 
     119      ENDIF 
     120 
    110121      IF (PRESENT(data_begin_)) THEN 
    111122        CALL cxios_set_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_) 
     
    181192 
    182193  SUBROUTINE xios(get_axisgroup_attr)  & 
    183     ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    184     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     194    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     195    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     196     ) 
    185197 
    186198    IMPLICIT NONE 
     
    188200      CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 
    189201      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 
     202      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    190203      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin 
    191204      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:) 
     
    209222      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    210223      CALL xios(get_axisgroup_attr_hdl_)   & 
    211       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    212       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     224      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     225      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     226       ) 
    213227 
    214228  END SUBROUTINE xios(get_axisgroup_attr) 
    215229 
    216230  SUBROUTINE xios(get_axisgroup_attr_hdl)  & 
    217     ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    218     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     231    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     232    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     233     ) 
    219234 
    220235    IMPLICIT NONE 
    221236      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
    222237      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 
     238      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 
    223239      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin 
    224240      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:) 
     
    241257 
    242258      CALL xios(get_axisgroup_attr_hdl_)  & 
    243       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    244       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     259      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     260      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     261       ) 
    245262 
    246263  END SUBROUTINE xios(get_axisgroup_attr_hdl) 
    247264 
    248265  SUBROUTINE xios(get_axisgroup_attr_hdl_)   & 
    249     ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  & 
    250     , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  & 
    251     , zoom_size_ ) 
     266    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  & 
     267    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  & 
     268    , zoom_end_, zoom_size_ ) 
    252269 
    253270    IMPLICIT NONE 
    254271      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 
    255272      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_ 
     273      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 
    256274      INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_ 
    257275      INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:) 
     
    277295      ENDIF 
    278296 
     297      IF (PRESENT(bounds_)) THEN 
     298        CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 
     299      ENDIF 
     300 
    279301      IF (PRESENT(data_begin_)) THEN 
    280302        CALL cxios_get_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_) 
     
    350372 
    351373  SUBROUTINE xios(is_defined_axisgroup_attr)  & 
    352     ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    353     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     374    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     375    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     376     ) 
    354377 
    355378    IMPLICIT NONE 
     
    358381      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 
    359382      LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 
     383      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     384      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    360385      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 
    361386      LOGICAL(KIND=C_BOOL) :: data_begin_tmp 
     
    395420      CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 
    396421      CALL xios(is_defined_axisgroup_attr_hdl_)   & 
    397       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    398       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     422      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     423      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     424       ) 
    399425 
    400426  END SUBROUTINE xios(is_defined_axisgroup_attr) 
    401427 
    402428  SUBROUTINE xios(is_defined_axisgroup_attr_hdl)  & 
    403     ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    404     , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     429    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     430    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     431     ) 
    405432 
    406433    IMPLICIT NONE 
     
    408435      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 
    409436      LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 
     437      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 
     438      LOGICAL(KIND=C_BOOL) :: bounds_tmp 
    410439      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 
    411440      LOGICAL(KIND=C_BOOL) :: data_begin_tmp 
     
    444473 
    445474      CALL xios(is_defined_axisgroup_attr_hdl_)  & 
    446       ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  & 
    447       , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 
     475      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  & 
     476      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  & 
     477       ) 
    448478 
    449479  END SUBROUTINE xios(is_defined_axisgroup_attr_hdl) 
    450480 
    451481  SUBROUTINE xios(is_defined_axisgroup_attr_hdl_)   & 
    452     ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  & 
    453     , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  & 
    454     , zoom_size_ ) 
     482    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  & 
     483    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  & 
     484    , zoom_end_, zoom_size_ ) 
    455485 
    456486    IMPLICIT NONE 
     
    458488      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_ 
    459489      LOGICAL(KIND=C_BOOL) :: axis_ref__tmp 
     490      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 
     491      LOGICAL(KIND=C_BOOL) :: bounds__tmp 
    460492      LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_ 
    461493      LOGICAL(KIND=C_BOOL) :: data_begin__tmp 
     
    498530      ENDIF 
    499531 
     532      IF (PRESENT(bounds_)) THEN 
     533        bounds__tmp = cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr) 
     534        bounds_ = bounds__tmp 
     535      ENDIF 
     536 
    500537      IF (PRESENT(data_begin_)) THEN 
    501538        data_begin__tmp = cxios_is_defined_axisgroup_data_begin(axisgroup_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.