Ignore:
Timestamp:
03/17/17 16:02:40 (7 years ago)
Author:
mhnguyen
Message:

Adding rectilinear and curvilinear domain for expand_domain transformation
-) Rectilinear/curvilinear is expanded not only locally but also globally, its global size ni_glo, nj_glo become ni_glo+2 and nj_glo+2
-) Two attributes i_periodic, j_periodic are only used for rectilinear/curvilinear to process priodic condition

+) Do some minor modification

Test
+) Add test_connectivity_expand
+) On Curie
+) Work (but need more real tests)

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

Legend:

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

    r981 r1078  
    1717{ 
    1818  typedef xios::CExpandDomain* expand_domain_Ptr; 
     19 
     20  void cxios_set_expand_domain_i_periodic(expand_domain_Ptr expand_domain_hdl, bool i_periodic) 
     21  { 
     22    CTimer::get("XIOS").resume(); 
     23    expand_domain_hdl->i_periodic.setValue(i_periodic); 
     24    CTimer::get("XIOS").suspend(); 
     25  } 
     26 
     27  void cxios_get_expand_domain_i_periodic(expand_domain_Ptr expand_domain_hdl, bool* i_periodic) 
     28  { 
     29    CTimer::get("XIOS").resume(); 
     30    *i_periodic = expand_domain_hdl->i_periodic.getInheritedValue(); 
     31    CTimer::get("XIOS").suspend(); 
     32  } 
     33 
     34  bool cxios_is_defined_expand_domain_i_periodic(expand_domain_Ptr expand_domain_hdl) 
     35  { 
     36     CTimer::get("XIOS").resume(); 
     37     bool isDefined = expand_domain_hdl->i_periodic.hasInheritedValue(); 
     38     CTimer::get("XIOS").suspend(); 
     39     return isDefined; 
     40  } 
     41 
     42 
     43  void cxios_set_expand_domain_j_periodic(expand_domain_Ptr expand_domain_hdl, bool j_periodic) 
     44  { 
     45    CTimer::get("XIOS").resume(); 
     46    expand_domain_hdl->j_periodic.setValue(j_periodic); 
     47    CTimer::get("XIOS").suspend(); 
     48  } 
     49 
     50  void cxios_get_expand_domain_j_periodic(expand_domain_Ptr expand_domain_hdl, bool* j_periodic) 
     51  { 
     52    CTimer::get("XIOS").resume(); 
     53    *j_periodic = expand_domain_hdl->j_periodic.getInheritedValue(); 
     54    CTimer::get("XIOS").suspend(); 
     55  } 
     56 
     57  bool cxios_is_defined_expand_domain_j_periodic(expand_domain_Ptr expand_domain_hdl) 
     58  { 
     59     CTimer::get("XIOS").resume(); 
     60     bool isDefined = expand_domain_hdl->j_periodic.hasInheritedValue(); 
     61     CTimer::get("XIOS").suspend(); 
     62     return isDefined; 
     63  } 
     64 
    1965 
    2066  void cxios_set_expand_domain_order(expand_domain_Ptr expand_domain_hdl, int order) 
  • XIOS/trunk/src/interface/fortran_attr/expand_domain_interface_attr.F90

    r981 r1078  
    99  INTERFACE 
    1010    ! Do not call directly / interface FORTRAN 2003 <-> C99 
     11 
     12    SUBROUTINE cxios_set_expand_domain_i_periodic(expand_domain_hdl, i_periodic) BIND(C) 
     13      USE ISO_C_BINDING 
     14      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     15      LOGICAL (KIND=C_BOOL)      , VALUE :: i_periodic 
     16    END SUBROUTINE cxios_set_expand_domain_i_periodic 
     17 
     18    SUBROUTINE cxios_get_expand_domain_i_periodic(expand_domain_hdl, i_periodic) BIND(C) 
     19      USE ISO_C_BINDING 
     20      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     21      LOGICAL (KIND=C_BOOL)             :: i_periodic 
     22    END SUBROUTINE cxios_get_expand_domain_i_periodic 
     23 
     24    FUNCTION cxios_is_defined_expand_domain_i_periodic(expand_domain_hdl) BIND(C) 
     25      USE ISO_C_BINDING 
     26      LOGICAL(kind=C_BOOL) :: cxios_is_defined_expand_domain_i_periodic 
     27      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     28    END FUNCTION cxios_is_defined_expand_domain_i_periodic 
     29 
     30 
     31    SUBROUTINE cxios_set_expand_domain_j_periodic(expand_domain_hdl, j_periodic) BIND(C) 
     32      USE ISO_C_BINDING 
     33      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     34      LOGICAL (KIND=C_BOOL)      , VALUE :: j_periodic 
     35    END SUBROUTINE cxios_set_expand_domain_j_periodic 
     36 
     37    SUBROUTINE cxios_get_expand_domain_j_periodic(expand_domain_hdl, j_periodic) BIND(C) 
     38      USE ISO_C_BINDING 
     39      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     40      LOGICAL (KIND=C_BOOL)             :: j_periodic 
     41    END SUBROUTINE cxios_get_expand_domain_j_periodic 
     42 
     43    FUNCTION cxios_is_defined_expand_domain_j_periodic(expand_domain_hdl) BIND(C) 
     44      USE ISO_C_BINDING 
     45      LOGICAL(kind=C_BOOL) :: cxios_is_defined_expand_domain_j_periodic 
     46      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl 
     47    END FUNCTION cxios_is_defined_expand_domain_j_periodic 
     48 
    1149 
    1250    SUBROUTINE cxios_set_expand_domain_order(expand_domain_hdl, order) BIND(C) 
  • XIOS/trunk/src/interface/fortran_attr/iexpand_domain_attr.F90

    r981 r1078  
    1212 
    1313  SUBROUTINE xios(set_expand_domain_attr)  & 
    14     ( expand_domain_id, order, type ) 
     14    ( expand_domain_id, i_periodic, j_periodic, order, type ) 
    1515 
    1616    IMPLICIT NONE 
    1717      TYPE(txios(expand_domain))  :: expand_domain_hdl 
    1818      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id 
     19      LOGICAL  , OPTIONAL, INTENT(IN) :: i_periodic 
     20      LOGICAL (KIND=C_BOOL) :: i_periodic_tmp 
     21      LOGICAL  , OPTIONAL, INTENT(IN) :: j_periodic 
     22      LOGICAL (KIND=C_BOOL) :: j_periodic_tmp 
    1923      INTEGER  , OPTIONAL, INTENT(IN) :: order 
    2024      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
     
    2327      (expand_domain_id,expand_domain_hdl) 
    2428      CALL xios(set_expand_domain_attr_hdl_)   & 
    25       ( expand_domain_hdl, order, type ) 
     29      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    2630 
    2731  END SUBROUTINE xios(set_expand_domain_attr) 
    2832 
    2933  SUBROUTINE xios(set_expand_domain_attr_hdl)  & 
    30     ( expand_domain_hdl, order, type ) 
    31  
    32     IMPLICIT NONE 
    33       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     34    ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
     35 
     36    IMPLICIT NONE 
     37      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     38      LOGICAL  , OPTIONAL, INTENT(IN) :: i_periodic 
     39      LOGICAL (KIND=C_BOOL) :: i_periodic_tmp 
     40      LOGICAL  , OPTIONAL, INTENT(IN) :: j_periodic 
     41      LOGICAL (KIND=C_BOOL) :: j_periodic_tmp 
    3442      INTEGER  , OPTIONAL, INTENT(IN) :: order 
    3543      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
    3644 
    3745      CALL xios(set_expand_domain_attr_hdl_)  & 
    38       ( expand_domain_hdl, order, type ) 
     46      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    3947 
    4048  END SUBROUTINE xios(set_expand_domain_attr_hdl) 
    4149 
    4250  SUBROUTINE xios(set_expand_domain_attr_hdl_)   & 
    43     ( expand_domain_hdl, order_, type_ ) 
    44  
    45     IMPLICIT NONE 
    46       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     51    ( expand_domain_hdl, i_periodic_, j_periodic_, order_, type_ ) 
     52 
     53    IMPLICIT NONE 
     54      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     55      LOGICAL  , OPTIONAL, INTENT(IN) :: i_periodic_ 
     56      LOGICAL (KIND=C_BOOL) :: i_periodic__tmp 
     57      LOGICAL  , OPTIONAL, INTENT(IN) :: j_periodic_ 
     58      LOGICAL (KIND=C_BOOL) :: j_periodic__tmp 
    4759      INTEGER  , OPTIONAL, INTENT(IN) :: order_ 
    4860      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
     61 
     62      IF (PRESENT(i_periodic_)) THEN 
     63        i_periodic__tmp = i_periodic_ 
     64        CALL cxios_set_expand_domain_i_periodic & 
     65      (expand_domain_hdl%daddr, i_periodic__tmp) 
     66      ENDIF 
     67 
     68      IF (PRESENT(j_periodic_)) THEN 
     69        j_periodic__tmp = j_periodic_ 
     70        CALL cxios_set_expand_domain_j_periodic & 
     71      (expand_domain_hdl%daddr, j_periodic__tmp) 
     72      ENDIF 
    4973 
    5074      IF (PRESENT(order_)) THEN 
     
    6185 
    6286  SUBROUTINE xios(get_expand_domain_attr)  & 
    63     ( expand_domain_id, order, type ) 
     87    ( expand_domain_id, i_periodic, j_periodic, order, type ) 
    6488 
    6589    IMPLICIT NONE 
    6690      TYPE(txios(expand_domain))  :: expand_domain_hdl 
    6791      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id 
     92      LOGICAL  , OPTIONAL, INTENT(OUT) :: i_periodic 
     93      LOGICAL (KIND=C_BOOL) :: i_periodic_tmp 
     94      LOGICAL  , OPTIONAL, INTENT(OUT) :: j_periodic 
     95      LOGICAL (KIND=C_BOOL) :: j_periodic_tmp 
    6896      INTEGER  , OPTIONAL, INTENT(OUT) :: order 
    6997      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
     
    72100      (expand_domain_id,expand_domain_hdl) 
    73101      CALL xios(get_expand_domain_attr_hdl_)   & 
    74       ( expand_domain_hdl, order, type ) 
     102      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    75103 
    76104  END SUBROUTINE xios(get_expand_domain_attr) 
    77105 
    78106  SUBROUTINE xios(get_expand_domain_attr_hdl)  & 
    79     ( expand_domain_hdl, order, type ) 
    80  
    81     IMPLICIT NONE 
    82       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     107    ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
     108 
     109    IMPLICIT NONE 
     110      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     111      LOGICAL  , OPTIONAL, INTENT(OUT) :: i_periodic 
     112      LOGICAL (KIND=C_BOOL) :: i_periodic_tmp 
     113      LOGICAL  , OPTIONAL, INTENT(OUT) :: j_periodic 
     114      LOGICAL (KIND=C_BOOL) :: j_periodic_tmp 
    83115      INTEGER  , OPTIONAL, INTENT(OUT) :: order 
    84116      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
    85117 
    86118      CALL xios(get_expand_domain_attr_hdl_)  & 
    87       ( expand_domain_hdl, order, type ) 
     119      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    88120 
    89121  END SUBROUTINE xios(get_expand_domain_attr_hdl) 
    90122 
    91123  SUBROUTINE xios(get_expand_domain_attr_hdl_)   & 
    92     ( expand_domain_hdl, order_, type_ ) 
    93  
    94     IMPLICIT NONE 
    95       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     124    ( expand_domain_hdl, i_periodic_, j_periodic_, order_, type_ ) 
     125 
     126    IMPLICIT NONE 
     127      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     128      LOGICAL  , OPTIONAL, INTENT(OUT) :: i_periodic_ 
     129      LOGICAL (KIND=C_BOOL) :: i_periodic__tmp 
     130      LOGICAL  , OPTIONAL, INTENT(OUT) :: j_periodic_ 
     131      LOGICAL (KIND=C_BOOL) :: j_periodic__tmp 
    96132      INTEGER  , OPTIONAL, INTENT(OUT) :: order_ 
    97133      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
     134 
     135      IF (PRESENT(i_periodic_)) THEN 
     136        CALL cxios_get_expand_domain_i_periodic & 
     137      (expand_domain_hdl%daddr, i_periodic__tmp) 
     138        i_periodic_ = i_periodic__tmp 
     139      ENDIF 
     140 
     141      IF (PRESENT(j_periodic_)) THEN 
     142        CALL cxios_get_expand_domain_j_periodic & 
     143      (expand_domain_hdl%daddr, j_periodic__tmp) 
     144        j_periodic_ = j_periodic__tmp 
     145      ENDIF 
    98146 
    99147      IF (PRESENT(order_)) THEN 
     
    110158 
    111159  SUBROUTINE xios(is_defined_expand_domain_attr)  & 
    112     ( expand_domain_id, order, type ) 
     160    ( expand_domain_id, i_periodic, j_periodic, order, type ) 
    113161 
    114162    IMPLICIT NONE 
    115163      TYPE(txios(expand_domain))  :: expand_domain_hdl 
    116164      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id 
     165      LOGICAL, OPTIONAL, INTENT(OUT) :: i_periodic 
     166      LOGICAL(KIND=C_BOOL) :: i_periodic_tmp 
     167      LOGICAL, OPTIONAL, INTENT(OUT) :: j_periodic 
     168      LOGICAL(KIND=C_BOOL) :: j_periodic_tmp 
    117169      LOGICAL, OPTIONAL, INTENT(OUT) :: order 
    118170      LOGICAL(KIND=C_BOOL) :: order_tmp 
     
    123175      (expand_domain_id,expand_domain_hdl) 
    124176      CALL xios(is_defined_expand_domain_attr_hdl_)   & 
    125       ( expand_domain_hdl, order, type ) 
     177      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    126178 
    127179  END SUBROUTINE xios(is_defined_expand_domain_attr) 
    128180 
    129181  SUBROUTINE xios(is_defined_expand_domain_attr_hdl)  & 
    130     ( expand_domain_hdl, order, type ) 
    131  
    132     IMPLICIT NONE 
    133       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     182    ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
     183 
     184    IMPLICIT NONE 
     185      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     186      LOGICAL, OPTIONAL, INTENT(OUT) :: i_periodic 
     187      LOGICAL(KIND=C_BOOL) :: i_periodic_tmp 
     188      LOGICAL, OPTIONAL, INTENT(OUT) :: j_periodic 
     189      LOGICAL(KIND=C_BOOL) :: j_periodic_tmp 
    134190      LOGICAL, OPTIONAL, INTENT(OUT) :: order 
    135191      LOGICAL(KIND=C_BOOL) :: order_tmp 
     
    138194 
    139195      CALL xios(is_defined_expand_domain_attr_hdl_)  & 
    140       ( expand_domain_hdl, order, type ) 
     196      ( expand_domain_hdl, i_periodic, j_periodic, order, type ) 
    141197 
    142198  END SUBROUTINE xios(is_defined_expand_domain_attr_hdl) 
    143199 
    144200  SUBROUTINE xios(is_defined_expand_domain_attr_hdl_)   & 
    145     ( expand_domain_hdl, order_, type_ ) 
    146  
    147     IMPLICIT NONE 
    148       TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     201    ( expand_domain_hdl, i_periodic_, j_periodic_, order_, type_ ) 
     202 
     203    IMPLICIT NONE 
     204      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl 
     205      LOGICAL, OPTIONAL, INTENT(OUT) :: i_periodic_ 
     206      LOGICAL(KIND=C_BOOL) :: i_periodic__tmp 
     207      LOGICAL, OPTIONAL, INTENT(OUT) :: j_periodic_ 
     208      LOGICAL(KIND=C_BOOL) :: j_periodic__tmp 
    149209      LOGICAL, OPTIONAL, INTENT(OUT) :: order_ 
    150210      LOGICAL(KIND=C_BOOL) :: order__tmp 
     
    152212      LOGICAL(KIND=C_BOOL) :: type__tmp 
    153213 
     214      IF (PRESENT(i_periodic_)) THEN 
     215        i_periodic__tmp = cxios_is_defined_expand_domain_i_periodic & 
     216      (expand_domain_hdl%daddr) 
     217        i_periodic_ = i_periodic__tmp 
     218      ENDIF 
     219 
     220      IF (PRESENT(j_periodic_)) THEN 
     221        j_periodic__tmp = cxios_is_defined_expand_domain_j_periodic & 
     222      (expand_domain_hdl%daddr) 
     223        j_periodic_ = j_periodic__tmp 
     224      ENDIF 
     225 
    154226      IF (PRESENT(order_)) THEN 
    155227        order__tmp = cxios_is_defined_expand_domain_order & 
Note: See TracChangeset for help on using the changeset viewer.