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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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     
Note: See TracChangeset for help on using the changeset viewer.