Ignore:
Timestamp:
03/20/24 14:48:11 (4 months ago)
Author:
jderouillat
Message:

Modify fortran-C interfaces to manage logical-bool conversion, the optimizations of OneAPI could produce bugs regarding the logical-bool encodings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/interface/fortran_attr/igridgroup_attr.F90

    r1492 r2620  
    88  USE igrid 
    99  USE gridgroup_interface_attr 
     10  USE LOGICAL_BOOL_CONVERSION 
    1011 
    1112CONTAINS 
     
    125126        ALLOCATE(mask_0d__tmp(SIZE(mask_0d_,1))) 
    126127        mask_0d__tmp = mask_0d_ 
     128        CALL xios_logical_to_bool_1d(mask_0d__tmp, SHAPE(mask_0d__tmp)) 
    127129        CALL cxios_set_gridgroup_mask_0d & 
    128130      (gridgroup_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_)) 
     
    132134        ALLOCATE(mask_1d__tmp(SIZE(mask_1d_,1))) 
    133135        mask_1d__tmp = mask_1d_ 
     136        CALL xios_logical_to_bool_1d(mask_1d__tmp, SHAPE(mask_1d__tmp)) 
    134137        CALL cxios_set_gridgroup_mask_1d & 
    135138      (gridgroup_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_)) 
     
    139142        ALLOCATE(mask_2d__tmp(SIZE(mask_2d_,1), SIZE(mask_2d_,2))) 
    140143        mask_2d__tmp = mask_2d_ 
     144        CALL xios_logical_to_bool_2d(mask_2d__tmp, SHAPE(mask_2d__tmp)) 
    141145        CALL cxios_set_gridgroup_mask_2d & 
    142146      (gridgroup_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_)) 
     
    146150        ALLOCATE(mask_3d__tmp(SIZE(mask_3d_,1), SIZE(mask_3d_,2), SIZE(mask_3d_,3))) 
    147151        mask_3d__tmp = mask_3d_ 
     152        CALL xios_logical_to_bool_3d(mask_3d__tmp, SHAPE(mask_3d__tmp)) 
    148153        CALL cxios_set_gridgroup_mask_3d & 
    149154      (gridgroup_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_)) 
     
    154159       SIZE(mask_4d_,4))) 
    155160        mask_4d__tmp = mask_4d_ 
     161        CALL xios_logical_to_bool_4d(mask_4d__tmp, SHAPE(mask_4d__tmp)) 
    156162        CALL cxios_set_gridgroup_mask_4d & 
    157163      (gridgroup_hdl%daddr, mask_4d__tmp, SHAPE(mask_4d_)) 
     
    162168       SIZE(mask_5d_,4), SIZE(mask_5d_,5))) 
    163169        mask_5d__tmp = mask_5d_ 
     170        CALL xios_logical_to_bool_5d(mask_5d__tmp, SHAPE(mask_5d__tmp)) 
    164171        CALL cxios_set_gridgroup_mask_5d & 
    165172      (gridgroup_hdl%daddr, mask_5d__tmp, SHAPE(mask_5d_)) 
     
    170177       SIZE(mask_6d_,4), SIZE(mask_6d_,5), SIZE(mask_6d_,6))) 
    171178        mask_6d__tmp = mask_6d_ 
     179        CALL xios_logical_to_bool_6d(mask_6d__tmp, SHAPE(mask_6d__tmp)) 
    172180        CALL cxios_set_gridgroup_mask_6d & 
    173181      (gridgroup_hdl%daddr, mask_6d__tmp, SHAPE(mask_6d_)) 
     
    179187       SIZE(mask_7d_,7))) 
    180188        mask_7d__tmp = mask_7d_ 
     189        CALL xios_logical_to_bool_7d(mask_7d__tmp, SHAPE(mask_7d__tmp)) 
    181190        CALL cxios_set_gridgroup_mask_7d & 
    182191      (gridgroup_hdl%daddr, mask_7d__tmp, SHAPE(mask_7d_)) 
     
    305314        CALL cxios_get_gridgroup_mask_0d & 
    306315      (gridgroup_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_)) 
     316        CALL xios_bool_to_logical_1d(mask_0d__tmp, SHAPE(mask_0d__tmp)) 
    307317        mask_0d_ = mask_0d__tmp 
    308318      ENDIF 
     
    312322        CALL cxios_get_gridgroup_mask_1d & 
    313323      (gridgroup_hdl%daddr, mask_1d__tmp, SHAPE(mask_1d_)) 
     324        CALL xios_bool_to_logical_1d(mask_1d__tmp, SHAPE(mask_1d__tmp)) 
    314325        mask_1d_ = mask_1d__tmp 
    315326      ENDIF 
     
    319330        CALL cxios_get_gridgroup_mask_2d & 
    320331      (gridgroup_hdl%daddr, mask_2d__tmp, SHAPE(mask_2d_)) 
     332        CALL xios_bool_to_logical_2d(mask_2d__tmp, SHAPE(mask_2d__tmp)) 
    321333        mask_2d_ = mask_2d__tmp 
    322334      ENDIF 
     
    326338        CALL cxios_get_gridgroup_mask_3d & 
    327339      (gridgroup_hdl%daddr, mask_3d__tmp, SHAPE(mask_3d_)) 
     340        CALL xios_bool_to_logical_3d(mask_3d__tmp, SHAPE(mask_3d__tmp)) 
    328341        mask_3d_ = mask_3d__tmp 
    329342      ENDIF 
     
    334347        CALL cxios_get_gridgroup_mask_4d & 
    335348      (gridgroup_hdl%daddr, mask_4d__tmp, SHAPE(mask_4d_)) 
     349        CALL xios_bool_to_logical_4d(mask_4d__tmp, SHAPE(mask_4d__tmp)) 
    336350        mask_4d_ = mask_4d__tmp 
    337351      ENDIF 
     
    342356        CALL cxios_get_gridgroup_mask_5d & 
    343357      (gridgroup_hdl%daddr, mask_5d__tmp, SHAPE(mask_5d_)) 
     358        CALL xios_bool_to_logical_5d(mask_5d__tmp, SHAPE(mask_5d__tmp)) 
    344359        mask_5d_ = mask_5d__tmp 
    345360      ENDIF 
     
    350365        CALL cxios_get_gridgroup_mask_6d & 
    351366      (gridgroup_hdl%daddr, mask_6d__tmp, SHAPE(mask_6d_)) 
     367        CALL xios_bool_to_logical_6d(mask_6d__tmp, SHAPE(mask_6d__tmp)) 
    352368        mask_6d_ = mask_6d__tmp 
    353369      ENDIF 
     
    359375        CALL cxios_get_gridgroup_mask_7d & 
    360376      (gridgroup_hdl%daddr, mask_7d__tmp, SHAPE(mask_7d_)) 
     377        CALL xios_bool_to_logical_7d(mask_7d__tmp, SHAPE(mask_7d__tmp)) 
    361378        mask_7d_ = mask_7d__tmp 
    362379      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.