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/idomain_attr.F90

    r501 r611  
    1212   
    1313  SUBROUTINE xios(set_domain_attr)  & 
    14     ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    15     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    16     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     14    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     15    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     16    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    1717    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    1818    , zoom_nj_loc ) 
     
    2121      TYPE(txios(domain))  :: domain_hdl 
    2222      CHARACTER(LEN=*), INTENT(IN) ::domain_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(:,:) 
     
    6263      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    6364      CALL xios(set_domain_attr_hdl_)   & 
    64       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    65       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    66       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     65      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     66      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     67      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    6768      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    6869      , zoom_nj_loc ) 
     
    7172   
    7273  SUBROUTINE xios(set_domain_attr_hdl)  & 
    73     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    74     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    75     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     74    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     75    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     76    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    7677    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    7778    , zoom_nj_loc ) 
     
    7980    IMPLICIT NONE 
    8081      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     82      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 
    8183      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 
    8284      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 
     
    119121       
    120122      CALL xios(set_domain_attr_hdl_)  & 
    121       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    122       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    123       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     123      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     124      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     125      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    124126      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    125127      , zoom_nj_loc ) 
     
    128130   
    129131  SUBROUTINE xios(set_domain_attr_hdl_)   & 
    130     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     132    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    131133    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_  & 
    132134    , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  & 
     
    136138    IMPLICIT NONE 
    137139      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     140      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:) 
    138141      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 
    139142      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) 
     
    175178      INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 
    176179       
     180      IF (PRESENT(area_)) THEN 
     181        CALL cxios_set_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2)) 
     182      ENDIF 
     183       
    177184      IF (PRESENT(bounds_lat_)) THEN 
    178185        CALL cxios_set_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 
     
    330337   
    331338  SUBROUTINE xios(get_domain_attr)  & 
    332     ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    333     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    334     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     339    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     340    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     341    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    335342    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    336343    , zoom_nj_loc ) 
     
    339346      TYPE(txios(domain))  :: domain_hdl 
    340347      CHARACTER(LEN=*), INTENT(IN) ::domain_id 
     348      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    341349      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    342350      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    380388      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    381389      CALL xios(get_domain_attr_hdl_)   & 
    382       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    383       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    384       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     390      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     391      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     392      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    385393      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    386394      , zoom_nj_loc ) 
     
    389397   
    390398  SUBROUTINE xios(get_domain_attr_hdl)  & 
    391     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    392     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    393     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     399    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     400    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     401    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    394402    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    395403    , zoom_nj_loc ) 
     
    397405    IMPLICIT NONE 
    398406      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     407      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    399408      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    400409      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    437446       
    438447      CALL xios(get_domain_attr_hdl_)  & 
    439       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    440       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    441       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     448      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     449      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     450      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    442451      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    443452      , zoom_nj_loc ) 
     
    446455   
    447456  SUBROUTINE xios(get_domain_attr_hdl_)   & 
    448     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     457    ( domain_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_, i_index_, ibegin_, iend_  & 
    450459    , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  & 
     
    454463    IMPLICIT NONE 
    455464      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     465      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 
    456466      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 
    457467      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 
     
    493503      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 
    494504       
     505      IF (PRESENT(area_)) THEN 
     506        CALL cxios_get_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2)) 
     507      ENDIF 
     508       
    495509      IF (PRESENT(bounds_lat_)) THEN 
    496510        CALL cxios_get_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 
     
    648662   
    649663  SUBROUTINE xios(is_defined_domain_attr)  & 
    650     ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    651     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    652     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     664    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     665    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     666    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    653667    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    654668    , zoom_nj_loc ) 
     
    657671      TYPE(txios(domain))  :: domain_hdl 
    658672      CHARACTER(LEN=*), INTENT(IN) ::domain_id 
     673      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     674      LOGICAL(KIND=C_BOOL) :: area_tmp 
    659675      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    660676      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    734750      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    735751      CALL xios(is_defined_domain_attr_hdl_)   & 
    736       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    737       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    738       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     752      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     753      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     754      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    739755      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    740756      , zoom_nj_loc ) 
     
    743759   
    744760  SUBROUTINE xios(is_defined_domain_attr_hdl)  & 
    745     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    746     , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    747     , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     761    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     762    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     763    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    748764    , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    749765    , zoom_nj_loc ) 
     
    751767    IMPLICIT NONE 
    752768      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     769      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     770      LOGICAL(KIND=C_BOOL) :: area_tmp 
    753771      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    754772      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    827845       
    828846      CALL xios(is_defined_domain_attr_hdl_)  & 
    829       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    830       , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  & 
    831       , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
     847      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     848      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  & 
     849      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    832850      , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    833851      , zoom_nj_loc ) 
     
    836854   
    837855  SUBROUTINE xios(is_defined_domain_attr_hdl_)   & 
    838     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     856    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    839857    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_  & 
    840858    , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  & 
     
    844862    IMPLICIT NONE 
    845863      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     864      LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 
     865      LOGICAL(KIND=C_BOOL) :: area__tmp 
    846866      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 
    847867      LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 
     
    919939      LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 
    920940       
     941      IF (PRESENT(area_)) THEN 
     942        area__tmp=cxios_is_defined_domain_area(domain_hdl%daddr) 
     943        area_=area__tmp 
     944      ENDIF 
     945       
    921946      IF (PRESENT(bounds_lat_)) THEN 
    922947        bounds_lat__tmp=cxios_is_defined_domain_bounds_lat(domain_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.