source: XIOS3/trunk/src/interface/fortran/itimer.F90 @ 2620

Last change on this file since 2620 was 2620, checked in by jderouillat, 4 months ago

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

File size: 1.8 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE ITIMER
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE TIMER_INTERFACE
6   USE LOGICAL_BOOL_CONVERSION
7
8   CONTAINS ! Fonctions disponibles pour les utilisateurs.
9
10   SUBROUTINE xios(timer_resume)(timer_id, trace)
11      IMPLICIT NONE
12      CHARACTER(len = *) , INTENT(IN) :: timer_id
13      LOGICAL, OPTIONAL,INTENT(IN)    :: trace
14      LOGICAL (KIND=C_BOOL)           :: trace_           
15
16      trace_=.TRUE.
17      IF (PRESENT(trace)) trace_ = trace
18      CALL xios_logical_to_bool_0d(trace_)
19      CALL cxios_timer_resume(timer_id, len(timer_id),trace_)           
20
21   END SUBROUTINE xios(timer_resume)
22
23   SUBROUTINE xios(timer_suspend)(timer_id, trace)
24      IMPLICIT NONE
25      CHARACTER(len = *) , INTENT(IN) :: timer_id
26      LOGICAL, OPTIONAL,INTENT(IN)    :: trace
27      LOGICAL (KIND=C_BOOL)           :: trace_               
28
29      trace_=.TRUE.
30      IF (PRESENT(trace)) trace_ = trace
31      CALL xios_logical_to_bool_0d(trace_)
32      CALL cxios_timer_suspend(timer_id, len(timer_id),trace_)           
33
34   END SUBROUTINE xios(timer_suspend)
35
36   SUBROUTINE xios(timer_reset)(timer_id)
37      IMPLICIT NONE
38      CHARACTER(len = *) , INTENT(IN) :: timer_id
39
40      CALL cxios_timer_reset(timer_id, len(timer_id))           
41
42   END SUBROUTINE xios(timer_reset)
43
44   FUNCTION xios(timer_get_time)(timer_id) RESULT(time)
45      IMPLICIT NONE
46      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: timer_id
47      REAL                                      :: time
48      REAL(KIND=C_DOUBLE)                         :: time_
49     
50      IF (PRESENT(timer_id)) THEN
51         CALL cxios_timer_get_cumulated_time(timer_id, len(timer_id),time_) 
52      ELSE
53         CALL cxios_timer_get_time(time_)
54      ENDIF     
55      time=time_
56   END FUNCTION xios(timer_get_time)
57 
58END MODULE ITIMER
Note: See TracBrowser for help on using the repository browser.