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/idata.F90

    r2121 r2620  
    55   USE ICONTEXT 
    66   USE IFIELD 
     7   USE LOGICAL_BOOL_CONVERSION 
    78 
    89   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
     
    780781 
    781782      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init) 
     783      CALL xios_bool_to_logical_0d(is_init) 
    782784      xios(context_is_initialized) = is_init 
    783785 
     
    13471349      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val) 
    13481350 
     1351      CALL xios_bool_to_logical_0d(val) 
    13491352      xios(getVar_k8) = val 
    13501353   END FUNCTION xios(getVar_k8) 
     
    13591362      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val) 
    13601363 
     1364      CALL xios_bool_to_logical_0d(val) 
    13611365      xios(getVar_k4) = val 
    13621366   END FUNCTION xios(getVar_k4) 
     
    13711375      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val) 
    13721376 
     1377      CALL xios_bool_to_logical_0d(val) 
    13731378      xios(getVar_int) = val 
    13741379   END FUNCTION xios(getVar_int) 
     
    13831388 
    13841389      CALL cxios_get_variable_data_logic(varId, len(varId), data_tmp, val) 
     1390      CALL xios_bool_to_logical_0d(val) 
    13851391      xios(getVar_logic) = val 
    1386       IF (val) data_logic = data_tmp 
     1392      IF (val) THEN 
     1393         CALL xios_bool_to_logical_0d(data_tmp) 
     1394         data_logic = data_tmp 
     1395      ENDIF 
    13871396   END FUNCTION xios(getVar_logic) 
    13881397 
     
    13961405      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val) 
    13971406 
     1407      CALL xios_bool_to_logical_0d(val) 
    13981408      xios(getVar_char) = val 
    13991409   END FUNCTION xios(getVar_char) 
     
    14091419      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val) 
    14101420 
     1421      CALL xios_bool_to_logical_0d(val) 
    14111422      xios(setVar_k8) = val 
    14121423   END FUNCTION xios(setVar_k8) 
     
    14211432      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val) 
    14221433 
     1434      CALL xios_bool_to_logical_0d(val) 
    14231435      xios(setVar_k4) = val 
    14241436   END FUNCTION xios(setVar_k4) 
     
    14331445      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val) 
    14341446 
     1447      CALL xios_bool_to_logical_0d(val) 
    14351448      xios(setVar_int) = val 
    14361449   END FUNCTION xios(setVar_int) 
     
    14451458 
    14461459      data_tmp = data_logic 
     1460      CALL xios_logical_to_bool_0d(data_tmp) 
    14471461      CALL cxios_set_variable_data_logic(varId, len(varId), data_tmp, val) 
    14481462 
     1463      CALL xios_bool_to_logical_0d(val) 
    14491464      xios(setVar_logic) = val 
    14501465   END FUNCTION xios(setVar_logic) 
     
    14591474      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val) 
    14601475 
     1476      CALL xios_bool_to_logical_0d(val) 
    14611477      xios(setVar_char) = val 
    14621478   END FUNCTION xios(setVar_char) 
Note: See TracChangeset for help on using the changeset viewer.