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/branchs/xios-1.0/src/interface/fortran_attr/idomaingroup_attr.F90

    r501 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, group_ref, i_index, ibegin  & 
    1616    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_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(:,:) 
     
    6364      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    6465      CALL xios(set_domaingroup_attr_hdl_)   & 
    65       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     66      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    6667      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    6768      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    7273   
    7374  SUBROUTINE xios(set_domaingroup_attr_hdl)  & 
    74     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     75    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    7576    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    7677    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    8081    IMPLICIT NONE 
    8182      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     83      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 
    8284      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 
    8385      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 
     
    121123       
    122124      CALL xios(set_domaingroup_attr_hdl_)  & 
    123       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     125      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    124126      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    125127      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    130132   
    131133  SUBROUTINE xios(set_domaingroup_attr_hdl_)   & 
    132     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     134    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    133135    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  & 
    134136    , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  & 
     
    138140    IMPLICIT NONE 
    139141      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     142      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:) 
    140143      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 
    141144      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) 
     
    178181      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 
    179182       
     183      IF (PRESENT(area_)) THEN 
     184        CALL cxios_set_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2)) 
     185      ENDIF 
     186       
    180187      IF (PRESENT(bounds_lat_)) THEN 
    181188        CALL cxios_set_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 
     
    337344   
    338345  SUBROUTINE xios(get_domaingroup_attr)  & 
    339     ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     346    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    340347    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    341348    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    346353      TYPE(txios(domaingroup))  :: domaingroup_hdl 
    347354      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 
     355      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    348356      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    349357      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    388396      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    389397      CALL xios(get_domaingroup_attr_hdl_)   & 
    390       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     398      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    391399      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    392400      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    397405   
    398406  SUBROUTINE xios(get_domaingroup_attr_hdl)  & 
    399     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     407    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    400408    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    401409    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    405413    IMPLICIT NONE 
    406414      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     415      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    407416      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    408417      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    446455       
    447456      CALL xios(get_domaingroup_attr_hdl_)  & 
    448       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     457      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    449458      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    450459      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    455464   
    456465  SUBROUTINE xios(get_domaingroup_attr_hdl_)   & 
    457     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     466    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    458467    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  & 
    459468    , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  & 
     
    463472    IMPLICIT NONE 
    464473      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     474      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 
    465475      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 
    466476      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 
     
    503513      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 
    504514       
     515      IF (PRESENT(area_)) THEN 
     516        CALL cxios_get_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2)) 
     517      ENDIF 
     518       
    505519      IF (PRESENT(bounds_lat_)) THEN 
    506520        CALL cxios_get_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 
     
    662676   
    663677  SUBROUTINE xios(is_defined_domaingroup_attr)  & 
    664     ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     678    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    665679    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    666680    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    671685      TYPE(txios(domaingroup))  :: domaingroup_hdl 
    672686      CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 
     687      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     688      LOGICAL(KIND=C_BOOL) :: area_tmp 
    673689      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    674690      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    750766      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 
    751767      CALL xios(is_defined_domaingroup_attr_hdl_)   & 
    752       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     768      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    753769      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    754770      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    759775   
    760776  SUBROUTINE xios(is_defined_domaingroup_attr_hdl)  & 
    761     ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     777    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    762778    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    763779    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    767783    IMPLICIT NONE 
    768784      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     785      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     786      LOGICAL(KIND=C_BOOL) :: area_tmp 
    769787      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    770788      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    845863       
    846864      CALL xios(is_defined_domaingroup_attr_hdl_)  & 
    847       ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     865      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
    848866      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  & 
    849867      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     
    854872   
    855873  SUBROUTINE xios(is_defined_domaingroup_attr_hdl_)   & 
    856     ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     874    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    857875    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  & 
    858876    , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  & 
     
    862880    IMPLICIT NONE 
    863881      TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 
     882      LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 
     883      LOGICAL(KIND=C_BOOL) :: area__tmp 
    864884      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 
    865885      LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 
     
    939959      LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 
    940960       
     961      IF (PRESENT(area_)) THEN 
     962        area__tmp=cxios_is_defined_domaingroup_area(domaingroup_hdl%daddr) 
     963        area_=area__tmp 
     964      ENDIF 
     965       
    941966      IF (PRESENT(bounds_lat_)) THEN 
    942967        bounds_lat__tmp=cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.