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.

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

Legend:

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

    r591 r611  
    1818  typedef xios::CDomain* domain_Ptr; 
    1919 
     20  void cxios_set_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2) 
     21  { 
     22    CTimer::get("XIOS").resume(); 
     23    CArray<double,2> tmp(area, shape(extent1, extent2), neverDeleteData); 
     24    domain_hdl->area.reference(tmp.copy()); 
     25     CTimer::get("XIOS").suspend(); 
     26  } 
     27 
     28  void cxios_get_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2) 
     29  { 
     30    CTimer::get("XIOS").resume(); 
     31    CArray<double,2> tmp(area, shape(extent1, extent2), neverDeleteData); 
     32    tmp=domain_hdl->area.getInheritedValue(); 
     33     CTimer::get("XIOS").suspend(); 
     34  } 
     35 
     36  bool cxios_is_defined_domain_area(domain_Ptr domain_hdl) 
     37  { 
     38     CTimer::get("XIOS").resume(); 
     39     bool isDefined = domain_hdl->area.hasInheritedValue(); 
     40     CTimer::get("XIOS").suspend(); 
     41     return isDefined; 
     42  } 
     43 
     44 
    2045  void cxios_set_domain_bounds_lat(domain_Ptr domain_hdl, double* bounds_lat, int extent1, int extent2) 
    2146  { 
  • XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp

    r591 r611  
    1818  typedef xios::CDomainGroup* domaingroup_Ptr; 
    1919 
     20  void cxios_set_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2) 
     21  { 
     22    CTimer::get("XIOS").resume(); 
     23    CArray<double,2> tmp(area, shape(extent1, extent2), neverDeleteData); 
     24    domaingroup_hdl->area.reference(tmp.copy()); 
     25     CTimer::get("XIOS").suspend(); 
     26  } 
     27 
     28  void cxios_get_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2) 
     29  { 
     30    CTimer::get("XIOS").resume(); 
     31    CArray<double,2> tmp(area, shape(extent1, extent2), neverDeleteData); 
     32    tmp=domaingroup_hdl->area.getInheritedValue(); 
     33     CTimer::get("XIOS").suspend(); 
     34  } 
     35 
     36  bool cxios_is_defined_domaingroup_area(domaingroup_Ptr domaingroup_hdl) 
     37  { 
     38     CTimer::get("XIOS").resume(); 
     39     bool isDefined = domaingroup_hdl->area.hasInheritedValue(); 
     40     CTimer::get("XIOS").suspend(); 
     41     return isDefined; 
     42  } 
     43 
     44 
    2045  void cxios_set_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl, double* bounds_lat, int extent1, int extent2) 
    2146  { 
  • XIOS/trunk/src/interface/fortran_attr/domain_interface_attr.F90

    r581 r611  
    1010    ! Do not call directly / interface FORTRAN 2003 <-> C99 
    1111 
     12    SUBROUTINE cxios_set_domain_area(domain_hdl, area, extent1, extent2) BIND(C) 
     13      USE ISO_C_BINDING 
     14      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     15      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area 
     16      INTEGER (kind = C_INT), VALUE  :: extent1 
     17      INTEGER (kind = C_INT), VALUE  :: extent2 
     18    END SUBROUTINE cxios_set_domain_area 
     19 
     20    SUBROUTINE cxios_get_domain_area(domain_hdl, area, extent1, extent2) BIND(C) 
     21      USE ISO_C_BINDING 
     22      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl 
     23      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area 
     24      INTEGER (kind = C_INT), VALUE  :: extent1 
     25      INTEGER (kind = C_INT), VALUE  :: extent2 
     26    END SUBROUTINE cxios_get_domain_area 
     27 
     28    FUNCTION cxios_is_defined_domain_area(domain_hdl) BIND(C) 
     29      USE ISO_C_BINDING 
     30      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_area 
     31      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 
     32    END FUNCTION cxios_is_defined_domain_area 
     33 
     34 
    1235    SUBROUTINE cxios_set_domain_bounds_lat(domain_hdl, bounds_lat, extent1, extent2) BIND(C) 
    1336      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/domaingroup_interface_attr.F90

    r581 r611  
    1010    ! Do not call directly / interface FORTRAN 2003 <-> C99 
    1111 
     12    SUBROUTINE cxios_set_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C) 
     13      USE ISO_C_BINDING 
     14      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     15      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area 
     16      INTEGER (kind = C_INT), VALUE  :: extent1 
     17      INTEGER (kind = C_INT), VALUE  :: extent2 
     18    END SUBROUTINE cxios_set_domaingroup_area 
     19 
     20    SUBROUTINE cxios_get_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C) 
     21      USE ISO_C_BINDING 
     22      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl 
     23      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area 
     24      INTEGER (kind = C_INT), VALUE  :: extent1 
     25      INTEGER (kind = C_INT), VALUE  :: extent2 
     26    END SUBROUTINE cxios_get_domaingroup_area 
     27 
     28    FUNCTION cxios_is_defined_domaingroup_area(domaingroup_hdl) BIND(C) 
     29      USE ISO_C_BINDING 
     30      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_area 
     31      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 
     32    END FUNCTION cxios_is_defined_domaingroup_area 
     33 
     34 
    1235    SUBROUTINE cxios_set_domaingroup_bounds_lat(domaingroup_hdl, bounds_lat, extent1, extent2) BIND(C) 
    1336      USE ISO_C_BINDING 
  • XIOS/trunk/src/interface/fortran_attr/idomain_attr.F90

    r581 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, domain_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  & 
    17     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    18     , zoom_nj_loc ) 
     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, domain_ref, i_index, ibegin  & 
     16    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     17    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     18    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    1919 
    2020    IMPLICIT NONE 
    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(:,:) 
     
    6364      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    6465      CALL xios(set_domain_attr_hdl_)   & 
    65       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    66       , data_n_index, data_ni, data_nj, domain_group_ref, domain_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  & 
    68       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    69       , zoom_nj_loc ) 
     66      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     67      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     68      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     69      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     70      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    7071 
    7172  END SUBROUTINE xios(set_domain_attr) 
    7273 
    7374  SUBROUTINE xios(set_domain_attr_hdl)  & 
    74     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    75     , data_n_index, data_ni, data_nj, domain_group_ref, domain_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  & 
    77     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    78     , zoom_nj_loc ) 
     75    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     76    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     77    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     78    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     79    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    7980 
    8081    IMPLICIT NONE 
    8182      TYPE(txios(domain)) , INTENT(IN) :: domain_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_domain_attr_hdl_)  & 
    123       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    124       , data_n_index, data_ni, data_nj, domain_group_ref, domain_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  & 
    126       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    127       , zoom_nj_loc ) 
     125      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     126      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     127      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     128      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     129      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    128130 
    129131  END SUBROUTINE xios(set_domain_attr_hdl) 
    130132 
    131133  SUBROUTINE xios(set_domain_attr_hdl_)   & 
    132     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     134    ( domain_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_, domain_ref_, i_index_  & 
    134136    , ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_  & 
     
    138140    IMPLICIT NONE 
    139141      TYPE(txios(domain)) , INTENT(IN) :: domain_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_domain_area(domain_hdl%daddr, area_, size(area_,1), size(area_,2)) 
     185      ENDIF 
     186 
    180187      IF (PRESENT(bounds_lat_)) THEN 
    181188        CALL cxios_set_domain_bounds_lat(domain_hdl%daddr, bounds_lat_, size(bounds_lat_,1), size(bounds_lat_,2)) 
     
    335342 
    336343  SUBROUTINE xios(get_domain_attr)  & 
    337     ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    338     , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    339     , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    340     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    341     , zoom_nj_loc ) 
     344    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     345    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     346    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     347    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     348    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    342349 
    343350    IMPLICIT NONE 
    344351      TYPE(txios(domain))  :: domain_hdl 
    345352      CHARACTER(LEN=*), INTENT(IN) ::domain_id 
     353      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    346354      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    347355      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    386394      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    387395      CALL xios(get_domain_attr_hdl_)   & 
    388       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    389       , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    390       , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    391       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    392       , zoom_nj_loc ) 
     396      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     397      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     398      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     399      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     400      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    393401 
    394402  END SUBROUTINE xios(get_domain_attr) 
    395403 
    396404  SUBROUTINE xios(get_domain_attr_hdl)  & 
    397     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    398     , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    399     , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    400     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    401     , zoom_nj_loc ) 
     405    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     406    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     407    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     408    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     409    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    402410 
    403411    IMPLICIT NONE 
    404412      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     413      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 
    405414      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 
    406415      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 
     
    444453 
    445454      CALL xios(get_domain_attr_hdl_)  & 
    446       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    447       , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    448       , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    449       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    450       , zoom_nj_loc ) 
     455      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     456      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     457      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     458      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     459      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    451460 
    452461  END SUBROUTINE xios(get_domain_attr_hdl) 
    453462 
    454463  SUBROUTINE xios(get_domain_attr_hdl_)   & 
    455     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     464    ( domain_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_, i_index_  & 
    457466    , ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_  & 
     
    461470    IMPLICIT NONE 
    462471      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     472      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 
    463473      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 
    464474      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 
     
    501511      INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 
    502512 
     513      IF (PRESENT(area_)) THEN 
     514        CALL cxios_get_domain_area(domain_hdl%daddr, area_, size(area_,1), size(area_,2)) 
     515      ENDIF 
     516 
    503517      IF (PRESENT(bounds_lat_)) THEN 
    504518        CALL cxios_get_domain_bounds_lat(domain_hdl%daddr, bounds_lat_, size(bounds_lat_,1), size(bounds_lat_,2)) 
     
    658672 
    659673  SUBROUTINE xios(is_defined_domain_attr)  & 
    660     ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    661     , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    662     , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    663     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    664     , zoom_nj_loc ) 
     674    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     675    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     676    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     677    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     678    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    665679 
    666680    IMPLICIT NONE 
    667681      TYPE(txios(domain))  :: domain_hdl 
    668682      CHARACTER(LEN=*), INTENT(IN) ::domain_id 
     683      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     684      LOGICAL(KIND=C_BOOL) :: area_tmp 
    669685      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    670686      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    746762      CALL xios(get_domain_handle)(domain_id,domain_hdl) 
    747763      CALL xios(is_defined_domain_attr_hdl_)   & 
    748       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    749       , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    750       , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    751       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    752       , zoom_nj_loc ) 
     764      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     765      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     766      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     767      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     768      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    753769 
    754770  END SUBROUTINE xios(is_defined_domain_attr) 
    755771 
    756772  SUBROUTINE xios(is_defined_domain_attr_hdl)  & 
    757     ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    758     , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    759     , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    760     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    761     , zoom_nj_loc ) 
     773    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     774    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     775    , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     776    , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     777    , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    762778 
    763779    IMPLICIT NONE 
    764780      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     781      LOGICAL, OPTIONAL, INTENT(OUT) :: area 
     782      LOGICAL(KIND=C_BOOL) :: area_tmp 
    765783      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 
    766784      LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 
     
    841859 
    842860      CALL xios(is_defined_domain_attr_hdl_)  & 
    843       ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  & 
    844       , data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin, iend, j_index  & 
    845       , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  & 
    846       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  & 
    847       , zoom_nj_loc ) 
     861      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  & 
     862      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, domain_ref, i_index, ibegin  & 
     863      , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  & 
     864      , nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni  & 
     865      , zoom_ni_loc, zoom_nj, zoom_nj_loc ) 
    848866 
    849867  END SUBROUTINE xios(is_defined_domain_attr_hdl) 
    850868 
    851869  SUBROUTINE xios(is_defined_domain_attr_hdl_)   & 
    852     ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
     870    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  & 
    853871    , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, domain_ref_, i_index_  & 
    854872    , ibegin_, iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_  & 
     
    858876    IMPLICIT NONE 
    859877      TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 
     878      LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 
     879      LOGICAL(KIND=C_BOOL) :: area__tmp 
    860880      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 
    861881      LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 
     
    935955      LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 
    936956 
     957      IF (PRESENT(area_)) THEN 
     958        area__tmp = cxios_is_defined_domain_area(domain_hdl%daddr) 
     959        area_ = area__tmp 
     960      ENDIF 
     961 
    937962      IF (PRESENT(bounds_lat_)) THEN 
    938963        bounds_lat__tmp = cxios_is_defined_domain_bounds_lat(domain_hdl%daddr) 
  • 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.