Ignore:
Timestamp:
06/10/15 10:39:11 (9 years ago)
Author:
rlacroix
Message:

Improve CF compliance: Add a new domain attribute "area".

Fixes ticket #68.

File:
1 edited

Legend:

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

    r581 r611  
    1212 
    1313  SUBROUTINE xios(set_domaingroup_attr)  & 
    14     ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     14    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    1515    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    1616    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    2121      TYPE(txios(domaingroup))  :: domaingroup_hdl 
    2222      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 
     23      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 
    2324      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 
    2425      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 
     
    6465      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    6566      CALL xios(set_domaingroup_attr_hdl_)   & 
    66       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     67      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    6768      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    6869      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    7374 
    7475  SUBROUTINE xios(set_domaingroup_attr_hdl)  & 
    75     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     76    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    7677    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    7778    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    8182    IMPLICIT NONE 
    8283      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     84      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 
    8385      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 
    8486      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 
     
    123125 
    124126      CALL xios(set_domaingroup_attr_hdl_)  & 
    125       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     127      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    126128      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    127129      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    132134 
    133135  SUBROUTINE xios(set_domaingroup_attr_hdl_)   & 
    134     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     136    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    135137    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, domain_ref_, group_ref_  & 
    136138    , i_index_, ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_  & 
     
    140142    IMPLICIT NONE 
    141143      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     144      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:) 
    142145      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 
    143146      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) 
     
    181184      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 
    182185 
     186      IF (PRESENT(area_)) THEN 
     187        CALL cxios_set_domaingroup_area(domaingroup_hdl%daddr, area_, size(area_,1), size(area_,2)) 
     188      ENDIF 
     189 
    183190      IF (PRESENT(bounds_lat_)) THEN 
    184191        CALL cxios_set_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_, size(bounds_lat_,1), size(bounds_lat_,2)) 
     
    342349 
    343350  SUBROUTINE xios(get_domaingroup_attr)  & 
    344     ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     351    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    345352    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    346353    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    351358      TYPE(txios(domaingroup))  :: domaingroup_hdl 
    352359      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 
     360      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    353361      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    354362      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    394402      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    395403      CALL xios(get_domaingroup_attr_hdl_)   & 
    396       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     404      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    397405      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    398406      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    403411 
    404412  SUBROUTINE xios(get_domaingroup_attr_hdl)  & 
    405     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     413    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    406414    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    407415    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    411419    IMPLICIT NONE 
    412420      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     421      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    413422      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    414423      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    453462 
    454463      CALL xios(get_domaingroup_attr_hdl_)  & 
    455       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     464      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    456465      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    457466      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    462471 
    463472  SUBROUTINE xios(get_domaingroup_attr_hdl_)   & 
    464     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     473    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    465474    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, domain_ref_, group_ref_  & 
    466475    , i_index_, ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_  & 
     
    470479    IMPLICIT NONE 
    471480      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     481      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 
    472482      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 
    473483      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 
     
    511521      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 
    512522 
     523      IF (PRESENT(area_)) THEN 
     524        CALL cxios_get_domaingroup_area(domaingroup_hdl%daddr, area_, size(area_,1), size(area_,2)) 
     525      ENDIF 
     526 
    513527      IF (PRESENT(bounds_lat_)) THEN 
    514528        CALL cxios_get_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_, size(bounds_lat_,1), size(bounds_lat_,2)) 
     
    672686 
    673687  SUBROUTINE xios(is_defined_domaingroup_attr)  & 
    674     ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     688    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    675689    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    676690    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    681695      TYPE(txios(domaingroup))  :: domaingroup_hdl 
    682696      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 
     697      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     698      LOGICAL(KIND=C_BOOL) :: area_tmp 
    683699      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    684700      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    762778      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    763779      CALL xios(is_defined_domaingroup_attr_hdl_)   & 
    764       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     780      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    765781      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    766782      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    771787 
    772788  SUBROUTINE xios(is_defined_domaingroup_attr_hdl)  & 
    773     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     789    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    774790    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    775791    , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    779795    IMPLICIT NONE 
    780796      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     797      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     798      LOGICAL(KIND=C_BOOL) :: area_tmp 
    781799      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    782800      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    859877 
    860878      CALL xios(is_defined_domaingroup_attr_hdl_)  & 
    861       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     879      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    862880      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, group_ref, i_index  & 
    863881      , ibegin, iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo  & 
     
    868886 
    869887  SUBROUTINE xios(is_defined_domaingroup_attr_hdl_)   & 
    870     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     888    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    871889    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, domain_ref_, group_ref_  & 
    872890    , i_index_, ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_  & 
     
    876894    IMPLICIT NONE 
    877895      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     896      LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 
     897      LOGICAL(KIND=C_BOOL) :: area__tmp 
    878898      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 
    879899      LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 
     
    955975      LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 
    956976 
     977      IF (PRESENT(area_)) THEN 
     978        area__tmp = cxios_is_defined_domaingroup_area(domaingroup_hdl%daddr) 
     979        area_ = area__tmp 
     980      ENDIF 
     981 
    957982      IF (PRESENT(bounds_lat_)) THEN 
    958983        bounds_lat__tmp = cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.