Ignore:
Timestamp:
03/10/15 10:49:02 (9 years ago)
Author:
mhnguyen
Message:

Implementing a grid formed by only one axis or group of axis

+) Add several new attributes to axis. From now on, each axis can be distributed on client side
+) Modify mask of grid to make it more flexible to different dimension
+) Fix some bugs relating to calculation of local data index on client
+) Clean some redundant codes

Test
+) On Curie, only test_new_features.f90
+) Test cases:

  • Grid composed of: 1 domain and 1 axis, 3 axis, 1 axis
  • Mode: Attached and connected
  • No of client-server: 6-2(Connected), 2 (Attached)

+) All tests passed and results are correct

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

Legend:

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

    r555 r567  
    6969   
    7070   
    71   void cxios_set_grid_mask(grid_Ptr grid_hdl, bool* mask, int extent1, int extent2, int extent3) 
     71  void cxios_set_grid_mask1(grid_Ptr grid_hdl, bool* mask1, int extent1) 
    7272  { 
    7373    CTimer::get("XIOS").resume(); 
    74     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ; 
    75     grid_hdl->mask.reference(tmp.copy()); 
     74    CArray<bool,1> tmp(mask1,shape(extent1),neverDeleteData) ; 
     75    grid_hdl->mask1.reference(tmp.copy()); 
    7676     CTimer::get("XIOS").suspend(); 
    7777  } 
    7878   
    79   void cxios_get_grid_mask(grid_Ptr grid_hdl, bool* mask, int extent1, int extent2, int extent3) 
     79  void cxios_get_grid_mask1(grid_Ptr grid_hdl, bool* mask1, int extent1) 
    8080  { 
    8181    CTimer::get("XIOS").resume(); 
    82     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ; 
    83     tmp=grid_hdl->mask.getInheritedValue() ; 
     82    CArray<bool,1> tmp(mask1,shape(extent1),neverDeleteData) ; 
     83    tmp=grid_hdl->mask1.getInheritedValue() ; 
    8484     CTimer::get("XIOS").suspend(); 
    8585  } 
    8686   
    87   bool cxios_is_defined_grid_mask(grid_Ptr grid_hdl ) 
     87  bool cxios_is_defined_grid_mask1(grid_Ptr grid_hdl ) 
    8888  { 
    8989     CTimer::get("XIOS").resume(); 
    90     return grid_hdl->mask.hasInheritedValue(); 
     90    return grid_hdl->mask1.hasInheritedValue(); 
     91     CTimer::get("XIOS").suspend(); 
     92  } 
     93   
     94   
     95   
     96  void cxios_set_grid_mask2(grid_Ptr grid_hdl, bool* mask2, int extent1, int extent2) 
     97  { 
     98    CTimer::get("XIOS").resume(); 
     99    CArray<bool,2> tmp(mask2,shape(extent1,extent2),neverDeleteData) ; 
     100    grid_hdl->mask2.reference(tmp.copy()); 
     101     CTimer::get("XIOS").suspend(); 
     102  } 
     103   
     104  void cxios_get_grid_mask2(grid_Ptr grid_hdl, bool* mask2, int extent1, int extent2) 
     105  { 
     106    CTimer::get("XIOS").resume(); 
     107    CArray<bool,2> tmp(mask2,shape(extent1,extent2),neverDeleteData) ; 
     108    tmp=grid_hdl->mask2.getInheritedValue() ; 
     109     CTimer::get("XIOS").suspend(); 
     110  } 
     111   
     112  bool cxios_is_defined_grid_mask2(grid_Ptr grid_hdl ) 
     113  { 
     114     CTimer::get("XIOS").resume(); 
     115    return grid_hdl->mask2.hasInheritedValue(); 
     116     CTimer::get("XIOS").suspend(); 
     117  } 
     118   
     119   
     120   
     121  void cxios_set_grid_mask3(grid_Ptr grid_hdl, bool* mask3, int extent1, int extent2, int extent3) 
     122  { 
     123    CTimer::get("XIOS").resume(); 
     124    CArray<bool,3> tmp(mask3,shape(extent1,extent2,extent3),neverDeleteData) ; 
     125    grid_hdl->mask3.reference(tmp.copy()); 
     126     CTimer::get("XIOS").suspend(); 
     127  } 
     128   
     129  void cxios_get_grid_mask3(grid_Ptr grid_hdl, bool* mask3, int extent1, int extent2, int extent3) 
     130  { 
     131    CTimer::get("XIOS").resume(); 
     132    CArray<bool,3> tmp(mask3,shape(extent1,extent2,extent3),neverDeleteData) ; 
     133    tmp=grid_hdl->mask3.getInheritedValue() ; 
     134     CTimer::get("XIOS").suspend(); 
     135  } 
     136   
     137  bool cxios_is_defined_grid_mask3(grid_Ptr grid_hdl ) 
     138  { 
     139     CTimer::get("XIOS").resume(); 
     140    return grid_hdl->mask3.hasInheritedValue(); 
    91141     CTimer::get("XIOS").suspend(); 
    92142  } 
  • XIOS/trunk/src/interface/c_attr/icgridgroup_attr.cpp

    r555 r567  
    9595   
    9696   
    97   void cxios_set_gridgroup_mask(gridgroup_Ptr gridgroup_hdl, bool* mask, int extent1, int extent2, int extent3) 
     97  void cxios_set_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl, bool* mask1, int extent1) 
    9898  { 
    9999    CTimer::get("XIOS").resume(); 
    100     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ; 
    101     gridgroup_hdl->mask.reference(tmp.copy()); 
     100    CArray<bool,1> tmp(mask1,shape(extent1),neverDeleteData) ; 
     101    gridgroup_hdl->mask1.reference(tmp.copy()); 
    102102     CTimer::get("XIOS").suspend(); 
    103103  } 
    104104   
    105   void cxios_get_gridgroup_mask(gridgroup_Ptr gridgroup_hdl, bool* mask, int extent1, int extent2, int extent3) 
     105  void cxios_get_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl, bool* mask1, int extent1) 
    106106  { 
    107107    CTimer::get("XIOS").resume(); 
    108     CArray<bool,3> tmp(mask,shape(extent1,extent2,extent3),neverDeleteData) ; 
    109     tmp=gridgroup_hdl->mask.getInheritedValue() ; 
     108    CArray<bool,1> tmp(mask1,shape(extent1),neverDeleteData) ; 
     109    tmp=gridgroup_hdl->mask1.getInheritedValue() ; 
    110110     CTimer::get("XIOS").suspend(); 
    111111  } 
    112112   
    113   bool cxios_is_defined_gridgroup_mask(gridgroup_Ptr gridgroup_hdl ) 
     113  bool cxios_is_defined_gridgroup_mask1(gridgroup_Ptr gridgroup_hdl ) 
    114114  { 
    115115     CTimer::get("XIOS").resume(); 
    116     return gridgroup_hdl->mask.hasInheritedValue(); 
     116    return gridgroup_hdl->mask1.hasInheritedValue(); 
     117     CTimer::get("XIOS").suspend(); 
     118  } 
     119   
     120   
     121   
     122  void cxios_set_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl, bool* mask2, int extent1, int extent2) 
     123  { 
     124    CTimer::get("XIOS").resume(); 
     125    CArray<bool,2> tmp(mask2,shape(extent1,extent2),neverDeleteData) ; 
     126    gridgroup_hdl->mask2.reference(tmp.copy()); 
     127     CTimer::get("XIOS").suspend(); 
     128  } 
     129   
     130  void cxios_get_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl, bool* mask2, int extent1, int extent2) 
     131  { 
     132    CTimer::get("XIOS").resume(); 
     133    CArray<bool,2> tmp(mask2,shape(extent1,extent2),neverDeleteData) ; 
     134    tmp=gridgroup_hdl->mask2.getInheritedValue() ; 
     135     CTimer::get("XIOS").suspend(); 
     136  } 
     137   
     138  bool cxios_is_defined_gridgroup_mask2(gridgroup_Ptr gridgroup_hdl ) 
     139  { 
     140     CTimer::get("XIOS").resume(); 
     141    return gridgroup_hdl->mask2.hasInheritedValue(); 
     142     CTimer::get("XIOS").suspend(); 
     143  } 
     144   
     145   
     146   
     147  void cxios_set_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl, bool* mask3, int extent1, int extent2, int extent3) 
     148  { 
     149    CTimer::get("XIOS").resume(); 
     150    CArray<bool,3> tmp(mask3,shape(extent1,extent2,extent3),neverDeleteData) ; 
     151    gridgroup_hdl->mask3.reference(tmp.copy()); 
     152     CTimer::get("XIOS").suspend(); 
     153  } 
     154   
     155  void cxios_get_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl, bool* mask3, int extent1, int extent2, int extent3) 
     156  { 
     157    CTimer::get("XIOS").resume(); 
     158    CArray<bool,3> tmp(mask3,shape(extent1,extent2,extent3),neverDeleteData) ; 
     159    tmp=gridgroup_hdl->mask3.getInheritedValue() ; 
     160     CTimer::get("XIOS").suspend(); 
     161  } 
     162   
     163  bool cxios_is_defined_gridgroup_mask3(gridgroup_Ptr gridgroup_hdl ) 
     164  { 
     165     CTimer::get("XIOS").resume(); 
     166    return gridgroup_hdl->mask3.hasInheritedValue(); 
    117167     CTimer::get("XIOS").suspend(); 
    118168  } 
  • XIOS/trunk/src/interface/fortran_attr/grid_interface_attr.F90

    r555 r567  
    5252     
    5353     
    54     SUBROUTINE cxios_set_grid_mask(grid_hdl, mask, extent1, extent2, extent3) BIND(C) 
     54    SUBROUTINE cxios_set_grid_mask1(grid_hdl, mask1, extent1) BIND(C) 
    5555      USE ISO_C_BINDING 
    5656      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
    57       LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask 
     57      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1 
     58      INTEGER (kind = C_INT), VALUE  :: extent1 
     59    END SUBROUTINE cxios_set_grid_mask1 
     60     
     61    SUBROUTINE cxios_get_grid_mask1(grid_hdl, mask1, extent1) BIND(C) 
     62      USE ISO_C_BINDING 
     63      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
     64      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1 
     65      INTEGER (kind = C_INT), VALUE  :: extent1 
     66    END SUBROUTINE cxios_get_grid_mask1 
     67     
     68    FUNCTION cxios_is_defined_grid_mask1(grid_hdl ) BIND(C) 
     69      USE ISO_C_BINDING 
     70      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask1 
     71      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl 
     72    END FUNCTION cxios_is_defined_grid_mask1 
     73     
     74     
     75    SUBROUTINE cxios_set_grid_mask2(grid_hdl, mask2, extent1, extent2) BIND(C) 
     76      USE ISO_C_BINDING 
     77      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
     78      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2 
     79      INTEGER (kind = C_INT), VALUE  :: extent1 
     80      INTEGER (kind = C_INT), VALUE  :: extent2 
     81    END SUBROUTINE cxios_set_grid_mask2 
     82     
     83    SUBROUTINE cxios_get_grid_mask2(grid_hdl, mask2, extent1, extent2) BIND(C) 
     84      USE ISO_C_BINDING 
     85      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
     86      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2 
     87      INTEGER (kind = C_INT), VALUE  :: extent1 
     88      INTEGER (kind = C_INT), VALUE  :: extent2 
     89    END SUBROUTINE cxios_get_grid_mask2 
     90     
     91    FUNCTION cxios_is_defined_grid_mask2(grid_hdl ) BIND(C) 
     92      USE ISO_C_BINDING 
     93      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask2 
     94      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl 
     95    END FUNCTION cxios_is_defined_grid_mask2 
     96     
     97     
     98    SUBROUTINE cxios_set_grid_mask3(grid_hdl, mask3, extent1, extent2, extent3) BIND(C) 
     99      USE ISO_C_BINDING 
     100      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
     101      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3 
    58102      INTEGER (kind = C_INT), VALUE  :: extent1 
    59103      INTEGER (kind = C_INT), VALUE  :: extent2 
    60104      INTEGER (kind = C_INT), VALUE  :: extent3 
    61     END SUBROUTINE cxios_set_grid_mask 
     105    END SUBROUTINE cxios_set_grid_mask3 
    62106     
    63     SUBROUTINE cxios_get_grid_mask(grid_hdl, mask, extent1, extent2, extent3) BIND(C) 
     107    SUBROUTINE cxios_get_grid_mask3(grid_hdl, mask3, extent1, extent2, extent3) BIND(C) 
    64108      USE ISO_C_BINDING 
    65109      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl 
    66       LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask 
     110      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3 
    67111      INTEGER (kind = C_INT), VALUE  :: extent1 
    68112      INTEGER (kind = C_INT), VALUE  :: extent2 
    69113      INTEGER (kind = C_INT), VALUE  :: extent3 
    70     END SUBROUTINE cxios_get_grid_mask 
     114    END SUBROUTINE cxios_get_grid_mask3 
    71115     
    72     FUNCTION cxios_is_defined_grid_mask(grid_hdl ) BIND(C) 
     116    FUNCTION cxios_is_defined_grid_mask3(grid_hdl ) BIND(C) 
    73117      USE ISO_C_BINDING 
    74       LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask 
     118      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask3 
    75119      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl 
    76     END FUNCTION cxios_is_defined_grid_mask 
     120    END FUNCTION cxios_is_defined_grid_mask3 
    77121     
    78122     
  • XIOS/trunk/src/interface/fortran_attr/gridgroup_interface_attr.F90

    r555 r567  
    7373     
    7474     
    75     SUBROUTINE cxios_set_gridgroup_mask(gridgroup_hdl, mask, extent1, extent2, extent3) BIND(C) 
     75    SUBROUTINE cxios_set_gridgroup_mask1(gridgroup_hdl, mask1, extent1) BIND(C) 
    7676      USE ISO_C_BINDING 
    7777      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
    78       LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask 
     78      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1 
     79      INTEGER (kind = C_INT), VALUE  :: extent1 
     80    END SUBROUTINE cxios_set_gridgroup_mask1 
     81     
     82    SUBROUTINE cxios_get_gridgroup_mask1(gridgroup_hdl, mask1, extent1) BIND(C) 
     83      USE ISO_C_BINDING 
     84      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
     85      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask1 
     86      INTEGER (kind = C_INT), VALUE  :: extent1 
     87    END SUBROUTINE cxios_get_gridgroup_mask1 
     88     
     89    FUNCTION cxios_is_defined_gridgroup_mask1(gridgroup_hdl ) BIND(C) 
     90      USE ISO_C_BINDING 
     91      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask1 
     92      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl 
     93    END FUNCTION cxios_is_defined_gridgroup_mask1 
     94     
     95     
     96    SUBROUTINE cxios_set_gridgroup_mask2(gridgroup_hdl, mask2, extent1, extent2) BIND(C) 
     97      USE ISO_C_BINDING 
     98      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
     99      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2 
     100      INTEGER (kind = C_INT), VALUE  :: extent1 
     101      INTEGER (kind = C_INT), VALUE  :: extent2 
     102    END SUBROUTINE cxios_set_gridgroup_mask2 
     103     
     104    SUBROUTINE cxios_get_gridgroup_mask2(gridgroup_hdl, mask2, extent1, extent2) BIND(C) 
     105      USE ISO_C_BINDING 
     106      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
     107      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask2 
     108      INTEGER (kind = C_INT), VALUE  :: extent1 
     109      INTEGER (kind = C_INT), VALUE  :: extent2 
     110    END SUBROUTINE cxios_get_gridgroup_mask2 
     111     
     112    FUNCTION cxios_is_defined_gridgroup_mask2(gridgroup_hdl ) BIND(C) 
     113      USE ISO_C_BINDING 
     114      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask2 
     115      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl 
     116    END FUNCTION cxios_is_defined_gridgroup_mask2 
     117     
     118     
     119    SUBROUTINE cxios_set_gridgroup_mask3(gridgroup_hdl, mask3, extent1, extent2, extent3) BIND(C) 
     120      USE ISO_C_BINDING 
     121      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
     122      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3 
    79123      INTEGER (kind = C_INT), VALUE  :: extent1 
    80124      INTEGER (kind = C_INT), VALUE  :: extent2 
    81125      INTEGER (kind = C_INT), VALUE  :: extent3 
    82     END SUBROUTINE cxios_set_gridgroup_mask 
     126    END SUBROUTINE cxios_set_gridgroup_mask3 
    83127     
    84     SUBROUTINE cxios_get_gridgroup_mask(gridgroup_hdl, mask, extent1, extent2, extent3) BIND(C) 
     128    SUBROUTINE cxios_get_gridgroup_mask3(gridgroup_hdl, mask3, extent1, extent2, extent3) BIND(C) 
    85129      USE ISO_C_BINDING 
    86130      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl 
    87       LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask 
     131      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask3 
    88132      INTEGER (kind = C_INT), VALUE  :: extent1 
    89133      INTEGER (kind = C_INT), VALUE  :: extent2 
    90134      INTEGER (kind = C_INT), VALUE  :: extent3 
    91     END SUBROUTINE cxios_get_gridgroup_mask 
     135    END SUBROUTINE cxios_get_gridgroup_mask3 
    92136     
    93     FUNCTION cxios_is_defined_gridgroup_mask(gridgroup_hdl ) BIND(C) 
     137    FUNCTION cxios_is_defined_gridgroup_mask3(gridgroup_hdl ) BIND(C) 
    94138      USE ISO_C_BINDING 
    95       LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask 
     139      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask3 
    96140      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl 
    97     END FUNCTION cxios_is_defined_gridgroup_mask 
     141    END FUNCTION cxios_is_defined_gridgroup_mask3 
    98142     
    99143     
  • XIOS/trunk/src/interface/fortran_attr/igrid_attr.F90

    r556 r567  
    1212   
    1313  SUBROUTINE xios(set_grid_attr)  & 
    14     ( grid_id, axisDomainOrder, description, mask, name ) 
     14    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    1515     
    1616    IMPLICIT NONE 
     
    2020      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:) 
    2121      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    22       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
    23       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     22      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:) 
     23      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     24      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:) 
     25      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     26      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:) 
     27      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    2428      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    2529       
    2630      CALL xios(get_grid_handle)(grid_id,grid_hdl) 
    2731      CALL xios(set_grid_attr_hdl_)   & 
    28       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     32      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    2933     
    3034  END SUBROUTINE xios(set_grid_attr) 
    3135   
    3236  SUBROUTINE xios(set_grid_attr_hdl)  & 
    33     ( grid_hdl, axisDomainOrder, description, mask, name ) 
     37    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    3438     
    3539    IMPLICIT NONE 
     
    3842      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:) 
    3943      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    40       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
    41       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     44      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:) 
     45      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     46      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:) 
     47      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     48      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:) 
     49      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    4250      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    4351       
    4452      CALL xios(set_grid_attr_hdl_)  & 
    45       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     53      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    4654     
    4755  END SUBROUTINE xios(set_grid_attr_hdl) 
    4856   
    4957  SUBROUTINE xios(set_grid_attr_hdl_)   & 
    50     ( grid_hdl, axisDomainOrder_, description_, mask_, name_ ) 
     58    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ ) 
    5159     
    5260    IMPLICIT NONE 
     
    5563      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:) 
    5664      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_ 
    57       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:,:,:) 
    58       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
     65      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:) 
     66      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:) 
     67      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:) 
     68      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:) 
     69      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:) 
     70      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:) 
    5971      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 
    6072       
     
    6981      ENDIF 
    7082       
    71       IF (PRESENT(mask_)) THEN 
    72         ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
    73         mask__tmp=mask_ 
    74         CALL cxios_set_grid_mask(grid_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
     83      IF (PRESENT(mask1_)) THEN 
     84        ALLOCATE(mask1__tmp(size(mask1_,1))) 
     85        mask1__tmp=mask1_ 
     86        CALL cxios_set_grid_mask1(grid_hdl%daddr, mask1__tmp,size(mask1_,1)) 
     87      ENDIF 
     88       
     89      IF (PRESENT(mask2_)) THEN 
     90        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2))) 
     91        mask2__tmp=mask2_ 
     92        CALL cxios_set_grid_mask2(grid_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2)) 
     93      ENDIF 
     94       
     95      IF (PRESENT(mask3_)) THEN 
     96        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3))) 
     97        mask3__tmp=mask3_ 
     98        CALL cxios_set_grid_mask3(grid_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3)) 
    7599      ENDIF 
    76100       
     
    84108   
    85109  SUBROUTINE xios(get_grid_attr)  & 
    86     ( grid_id, axisDomainOrder, description, mask, name ) 
     110    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    87111     
    88112    IMPLICIT NONE 
     
    92116      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:) 
    93117      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    94       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
    95       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     118      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:) 
     119      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     120      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:) 
     121      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     122      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:) 
     123      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    96124      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    97125       
    98126      CALL xios(get_grid_handle)(grid_id,grid_hdl) 
    99127      CALL xios(get_grid_attr_hdl_)   & 
    100       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     128      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    101129     
    102130  END SUBROUTINE xios(get_grid_attr) 
    103131   
    104132  SUBROUTINE xios(get_grid_attr_hdl)  & 
    105     ( grid_hdl, axisDomainOrder, description, mask, name ) 
     133    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    106134     
    107135    IMPLICIT NONE 
     
    110138      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:) 
    111139      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    112       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
    113       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     140      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:) 
     141      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     142      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:) 
     143      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     144      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:) 
     145      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    114146      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    115147       
    116148      CALL xios(get_grid_attr_hdl_)  & 
    117       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     149      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    118150     
    119151  END SUBROUTINE xios(get_grid_attr_hdl) 
    120152   
    121153  SUBROUTINE xios(get_grid_attr_hdl_)   & 
    122     ( grid_hdl, axisDomainOrder_, description_, mask_, name_ ) 
     154    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ ) 
    123155     
    124156    IMPLICIT NONE 
     
    127159      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:) 
    128160      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_ 
    129       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:,:,:) 
    130       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
     161      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:) 
     162      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:) 
     163      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:) 
     164      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:) 
     165      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:) 
     166      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:) 
    131167      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ 
    132168       
     
    141177      ENDIF 
    142178       
    143       IF (PRESENT(mask_)) THEN 
    144         ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
    145         CALL cxios_get_grid_mask(grid_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
    146         mask_=mask__tmp 
     179      IF (PRESENT(mask1_)) THEN 
     180        ALLOCATE(mask1__tmp(size(mask1_,1))) 
     181        CALL cxios_get_grid_mask1(grid_hdl%daddr, mask1__tmp,size(mask1_,1)) 
     182        mask1_=mask1__tmp 
     183      ENDIF 
     184       
     185      IF (PRESENT(mask2_)) THEN 
     186        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2))) 
     187        CALL cxios_get_grid_mask2(grid_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2)) 
     188        mask2_=mask2__tmp 
     189      ENDIF 
     190       
     191      IF (PRESENT(mask3_)) THEN 
     192        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3))) 
     193        CALL cxios_get_grid_mask3(grid_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3)) 
     194        mask3_=mask3__tmp 
    147195      ENDIF 
    148196       
     
    156204   
    157205  SUBROUTINE xios(is_defined_grid_attr)  & 
    158     ( grid_id, axisDomainOrder, description, mask, name ) 
     206    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    159207     
    160208    IMPLICIT NONE 
     
    165213      LOGICAL, OPTIONAL, INTENT(OUT) :: description 
    166214      LOGICAL(KIND=C_BOOL) :: description_tmp 
    167       LOGICAL, OPTIONAL, INTENT(OUT) :: mask 
    168       LOGICAL(KIND=C_BOOL) :: mask_tmp 
     215      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1 
     216      LOGICAL(KIND=C_BOOL) :: mask1_tmp 
     217      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2 
     218      LOGICAL(KIND=C_BOOL) :: mask2_tmp 
     219      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3 
     220      LOGICAL(KIND=C_BOOL) :: mask3_tmp 
    169221      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    170222      LOGICAL(KIND=C_BOOL) :: name_tmp 
     
    172224      CALL xios(get_grid_handle)(grid_id,grid_hdl) 
    173225      CALL xios(is_defined_grid_attr_hdl_)   & 
    174       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     226      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    175227     
    176228  END SUBROUTINE xios(is_defined_grid_attr) 
    177229   
    178230  SUBROUTINE xios(is_defined_grid_attr_hdl)  & 
    179     ( grid_hdl, axisDomainOrder, description, mask, name ) 
     231    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    180232     
    181233    IMPLICIT NONE 
     
    185237      LOGICAL, OPTIONAL, INTENT(OUT) :: description 
    186238      LOGICAL(KIND=C_BOOL) :: description_tmp 
    187       LOGICAL, OPTIONAL, INTENT(OUT) :: mask 
    188       LOGICAL(KIND=C_BOOL) :: mask_tmp 
     239      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1 
     240      LOGICAL(KIND=C_BOOL) :: mask1_tmp 
     241      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2 
     242      LOGICAL(KIND=C_BOOL) :: mask2_tmp 
     243      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3 
     244      LOGICAL(KIND=C_BOOL) :: mask3_tmp 
    189245      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    190246      LOGICAL(KIND=C_BOOL) :: name_tmp 
    191247       
    192248      CALL xios(is_defined_grid_attr_hdl_)  & 
    193       ( grid_hdl, axisDomainOrder, description, mask, name ) 
     249      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name ) 
    194250     
    195251  END SUBROUTINE xios(is_defined_grid_attr_hdl) 
    196252   
    197253  SUBROUTINE xios(is_defined_grid_attr_hdl_)   & 
    198     ( grid_hdl, axisDomainOrder_, description_, mask_, name_ ) 
     254    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ ) 
    199255     
    200256    IMPLICIT NONE 
     
    204260      LOGICAL, OPTIONAL, INTENT(OUT) :: description_ 
    205261      LOGICAL(KIND=C_BOOL) :: description__tmp 
    206       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_ 
    207       LOGICAL(KIND=C_BOOL) :: mask__tmp 
     262      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_ 
     263      LOGICAL(KIND=C_BOOL) :: mask1__tmp 
     264      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_ 
     265      LOGICAL(KIND=C_BOOL) :: mask2__tmp 
     266      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_ 
     267      LOGICAL(KIND=C_BOOL) :: mask3__tmp 
    208268      LOGICAL, OPTIONAL, INTENT(OUT) :: name_ 
    209269      LOGICAL(KIND=C_BOOL) :: name__tmp 
     
    219279      ENDIF 
    220280       
    221       IF (PRESENT(mask_)) THEN 
    222         mask__tmp=cxios_is_defined_grid_mask(grid_hdl%daddr) 
    223         mask_=mask__tmp 
     281      IF (PRESENT(mask1_)) THEN 
     282        mask1__tmp=cxios_is_defined_grid_mask1(grid_hdl%daddr) 
     283        mask1_=mask1__tmp 
     284      ENDIF 
     285       
     286      IF (PRESENT(mask2_)) THEN 
     287        mask2__tmp=cxios_is_defined_grid_mask2(grid_hdl%daddr) 
     288        mask2_=mask2__tmp 
     289      ENDIF 
     290       
     291      IF (PRESENT(mask3_)) THEN 
     292        mask3__tmp=cxios_is_defined_grid_mask3(grid_hdl%daddr) 
     293        mask3_=mask3__tmp 
    224294      ENDIF 
    225295       
  • XIOS/trunk/src/interface/fortran_attr/igridgroup_attr.F90

    r556 r567  
    1212   
    1313  SUBROUTINE xios(set_gridgroup_attr)  & 
    14     ( gridgroup_id, axisDomainOrder, description, group_ref, mask, name ) 
     14    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    1515     
    1616    IMPLICIT NONE 
     
    2121      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    2222      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    23       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
    24       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     23      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:) 
     24      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     25      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:) 
     26      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     27      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:) 
     28      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    2529      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    2630       
    2731      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl) 
    2832      CALL xios(set_gridgroup_attr_hdl_)   & 
    29       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     33      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    3034     
    3135  END SUBROUTINE xios(set_gridgroup_attr) 
    3236   
    3337  SUBROUTINE xios(set_gridgroup_attr_hdl)  & 
    34     ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     38    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    3539     
    3640    IMPLICIT NONE 
     
    4044      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    4145      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    42       LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
    43       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     46      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:) 
     47      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     48      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:) 
     49      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     50      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:) 
     51      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    4452      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    4553       
    4654      CALL xios(set_gridgroup_attr_hdl_)  & 
    47       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     55      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    4856     
    4957  END SUBROUTINE xios(set_gridgroup_attr_hdl) 
    5058   
    5159  SUBROUTINE xios(set_gridgroup_attr_hdl_)   & 
    52     ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask_, name_ ) 
     60    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ ) 
    5361     
    5462    IMPLICIT NONE 
     
    5866      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_ 
    5967      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_ 
    60       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:,:,:) 
    61       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
     68      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:) 
     69      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:) 
     70      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:) 
     71      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:) 
     72      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:) 
     73      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:) 
    6274      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 
    6375       
     
    7688      ENDIF 
    7789       
    78       IF (PRESENT(mask_)) THEN 
    79         ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
    80         mask__tmp=mask_ 
    81         CALL cxios_set_gridgroup_mask(gridgroup_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
     90      IF (PRESENT(mask1_)) THEN 
     91        ALLOCATE(mask1__tmp(size(mask1_,1))) 
     92        mask1__tmp=mask1_ 
     93        CALL cxios_set_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp,size(mask1_,1)) 
     94      ENDIF 
     95       
     96      IF (PRESENT(mask2_)) THEN 
     97        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2))) 
     98        mask2__tmp=mask2_ 
     99        CALL cxios_set_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2)) 
     100      ENDIF 
     101       
     102      IF (PRESENT(mask3_)) THEN 
     103        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3))) 
     104        mask3__tmp=mask3_ 
     105        CALL cxios_set_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3)) 
    82106      ENDIF 
    83107       
     
    91115   
    92116  SUBROUTINE xios(get_gridgroup_attr)  & 
    93     ( gridgroup_id, axisDomainOrder, description, group_ref, mask, name ) 
     117    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    94118     
    95119    IMPLICIT NONE 
     
    100124      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    101125      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    102       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
    103       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     126      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:) 
     127      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     128      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:) 
     129      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     130      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:) 
     131      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    104132      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    105133       
    106134      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl) 
    107135      CALL xios(get_gridgroup_attr_hdl_)   & 
    108       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     136      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    109137     
    110138  END SUBROUTINE xios(get_gridgroup_attr) 
    111139   
    112140  SUBROUTINE xios(get_gridgroup_attr_hdl)  & 
    113     ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     141    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    114142     
    115143    IMPLICIT NONE 
     
    119147      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    120148      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    121       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
    122       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
     149      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:) 
     150      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:) 
     151      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:) 
     152      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:) 
     153      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:) 
     154      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:) 
    123155      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    124156       
    125157      CALL xios(get_gridgroup_attr_hdl_)  & 
    126       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     158      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    127159     
    128160  END SUBROUTINE xios(get_gridgroup_attr_hdl) 
    129161   
    130162  SUBROUTINE xios(get_gridgroup_attr_hdl_)   & 
    131     ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask_, name_ ) 
     163    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ ) 
    132164     
    133165    IMPLICIT NONE 
     
    137169      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_ 
    138170      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_ 
    139       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:,:,:) 
    140       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
     171      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:) 
     172      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:) 
     173      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:) 
     174      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:) 
     175      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:) 
     176      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:) 
    141177      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ 
    142178       
     
    155191      ENDIF 
    156192       
    157       IF (PRESENT(mask_)) THEN 
    158         ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
    159         CALL cxios_get_gridgroup_mask(gridgroup_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
    160         mask_=mask__tmp 
     193      IF (PRESENT(mask1_)) THEN 
     194        ALLOCATE(mask1__tmp(size(mask1_,1))) 
     195        CALL cxios_get_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp,size(mask1_,1)) 
     196        mask1_=mask1__tmp 
     197      ENDIF 
     198       
     199      IF (PRESENT(mask2_)) THEN 
     200        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2))) 
     201        CALL cxios_get_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2)) 
     202        mask2_=mask2__tmp 
     203      ENDIF 
     204       
     205      IF (PRESENT(mask3_)) THEN 
     206        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3))) 
     207        CALL cxios_get_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3)) 
     208        mask3_=mask3__tmp 
    161209      ENDIF 
    162210       
     
    170218   
    171219  SUBROUTINE xios(is_defined_gridgroup_attr)  & 
    172     ( gridgroup_id, axisDomainOrder, description, group_ref, mask, name ) 
     220    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    173221     
    174222    IMPLICIT NONE 
     
    181229      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    182230      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
    183       LOGICAL, OPTIONAL, INTENT(OUT) :: mask 
    184       LOGICAL(KIND=C_BOOL) :: mask_tmp 
     231      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1 
     232      LOGICAL(KIND=C_BOOL) :: mask1_tmp 
     233      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2 
     234      LOGICAL(KIND=C_BOOL) :: mask2_tmp 
     235      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3 
     236      LOGICAL(KIND=C_BOOL) :: mask3_tmp 
    185237      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    186238      LOGICAL(KIND=C_BOOL) :: name_tmp 
     
    188240      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl) 
    189241      CALL xios(is_defined_gridgroup_attr_hdl_)   & 
    190       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     242      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    191243     
    192244  END SUBROUTINE xios(is_defined_gridgroup_attr) 
    193245   
    194246  SUBROUTINE xios(is_defined_gridgroup_attr_hdl)  & 
    195     ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     247    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    196248     
    197249    IMPLICIT NONE 
     
    203255      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    204256      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
    205       LOGICAL, OPTIONAL, INTENT(OUT) :: mask 
    206       LOGICAL(KIND=C_BOOL) :: mask_tmp 
     257      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1 
     258      LOGICAL(KIND=C_BOOL) :: mask1_tmp 
     259      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2 
     260      LOGICAL(KIND=C_BOOL) :: mask2_tmp 
     261      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3 
     262      LOGICAL(KIND=C_BOOL) :: mask3_tmp 
    207263      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
    208264      LOGICAL(KIND=C_BOOL) :: name_tmp 
    209265       
    210266      CALL xios(is_defined_gridgroup_attr_hdl_)  & 
    211       ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask, name ) 
     267      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name ) 
    212268     
    213269  END SUBROUTINE xios(is_defined_gridgroup_attr_hdl) 
    214270   
    215271  SUBROUTINE xios(is_defined_gridgroup_attr_hdl_)   & 
    216     ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask_, name_ ) 
     272    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ ) 
    217273     
    218274    IMPLICIT NONE 
     
    224280      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_ 
    225281      LOGICAL(KIND=C_BOOL) :: group_ref__tmp 
    226       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_ 
    227       LOGICAL(KIND=C_BOOL) :: mask__tmp 
     282      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_ 
     283      LOGICAL(KIND=C_BOOL) :: mask1__tmp 
     284      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_ 
     285      LOGICAL(KIND=C_BOOL) :: mask2__tmp 
     286      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_ 
     287      LOGICAL(KIND=C_BOOL) :: mask3__tmp 
    228288      LOGICAL, OPTIONAL, INTENT(OUT) :: name_ 
    229289      LOGICAL(KIND=C_BOOL) :: name__tmp 
     
    244304      ENDIF 
    245305       
    246       IF (PRESENT(mask_)) THEN 
    247         mask__tmp=cxios_is_defined_gridgroup_mask(gridgroup_hdl%daddr) 
    248         mask_=mask__tmp 
     306      IF (PRESENT(mask1_)) THEN 
     307        mask1__tmp=cxios_is_defined_gridgroup_mask1(gridgroup_hdl%daddr) 
     308        mask1_=mask1__tmp 
     309      ENDIF 
     310       
     311      IF (PRESENT(mask2_)) THEN 
     312        mask2__tmp=cxios_is_defined_gridgroup_mask2(gridgroup_hdl%daddr) 
     313        mask2_=mask2__tmp 
     314      ENDIF 
     315       
     316      IF (PRESENT(mask3_)) THEN 
     317        mask3__tmp=cxios_is_defined_gridgroup_mask3(gridgroup_hdl%daddr) 
     318        mask3_=mask3__tmp 
    249319      ENDIF 
    250320       
Note: See TracChangeset for help on using the changeset viewer.