SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modi_gltools_timers.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !GLT_LIC The GELATO model is a seaice model used in stand-alone or embedded mode.
6 !GLT_LIC It has been developed by Meteo-France. The holder of GELATO is Meteo-France.
7 !GLT_LIC
8 !GLT_LIC This software is governed by the CeCILL-C license under French law and biding
9 !GLT_LIC by the rules of distribution of free software. See the CeCILL-C_V1-en.txt
10 !GLT_LIC (English) and CeCILL-C_V1-fr.txt (French) for details. The CeCILL is a free
11 !GLT_LIC software license, explicitly compatible with the GNU GPL
12 !GLT_LIC (see http://www.gnu.org/licenses/license-list.en.html#CeCILL)
13 !GLT_LIC
14 !GLT_LIC The CeCILL-C licence agreement grants users the right to modify and re-use the
15 !GLT_LIC software governed by this free software license. The exercising of this right
16 !GLT_LIC is conditional upon the obligation to make available to the community the
17 !GLT_LIC modifications made to the source code of the software so as to contribute to
18 !GLT_LIC its evolution.
19 !GLT_LIC
20 !GLT_LIC In consideration of access to the source code and the rights to copy, modify
21 !GLT_LIC and redistribute granted by the license, users are provided only with a limited
22 !GLT_LIC warranty and the software's author, the holder of the economic rights, and the
23 !GLT_LIC successive licensors only have limited liability. In this respect, the risks
24 !GLT_LIC associated with loading, using, modifying and/or developing or reproducing the
25 !GLT_LIC software by the user are brought to the user's attention, given its Free
26 !GLT_LIC Software status, which may make it complicated to use, with the result that its
27 !GLT_LIC use is reserved for developers and experienced professionals having in-depth
28 !GLT_LIC computer knowledge. Users are therefore encouraged to load and test the
29 !GLT_LIC suitability of the software as regards their requirements in conditions enabling
30 !GLT_LIC the security of their systems and/or data to be ensured and, more generally, to
31 !GLT_LIC use and operate it in the same conditions of security.
32 !GLT_LIC
33 !GLT_LIC The GELATO sofware is cureently distibuted with the SURFEX software, available at
34 !GLT_LIC http://www.cnrm.meteo.fr/surfex. The fact that you download the software deemed that
35 !GLT_LIC you had knowledge of the CeCILL-C license and that you accept its terms.
36 !GLT_LIC Attempts to use this software in a way not complying with CeCILL-C license
37 !GLT_LIC may lead to prosecution.
38 !GLT_LIC
39 ! =======================================================================
40 ! ====================== MODULE modi_gltools_timers =======================
41 ! =======================================================================
42 !
43 ! Goal:
44 ! -----
45 ! This module contains a subroutine that allows to compute the
46 ! elapsed time between a CALL to 'timers' routine and the previous
47 ! CALL.
48 !
49 ! Method:
50 ! --------
51 ! This routine is based on the use of CPU_TIME fortran function.
52 !
53 ! Input:
54 ! ------
55 ! A character string (optional) to help you locating between which
56 ! points the time has been evaluated.
57 !
58 ! Created : 2012/05 (D. Salas y Melia)
59 !
60 ! ------------------- BEGIN MODULE modi_gltools_timers --------------------
61 !
62 !THXS_SFX!MODULE modi_gltools_timers
63 !THXS_SFX!INTERFACE
64 !THXS_SFX!!
65 !THXS_SFX!SUBROUTINE gltools_timers( hlabel )
66 !THXS_SFX! USE modd_glt_param
67 !THXS_SFX! CHARACTER(LEN=*), OPTIONAL, INTENT(in) :: &
68 !THXS_SFX! hlabel
69 !THXS_SFX!END SUBROUTINE gltools_timers
70 !THXS_SFX!!
71 !THXS_SFX!END INTERFACE
72 !THXS_SFX!END MODULE modi_gltools_timers
73 !
74 ! -------------------- END MODULE modi_gltools_timers ---------------------
75 !
76 !
77 ! -----------------------------------------------------------------------
78 ! -------------------------- SUBROUTINE gltools_timers --------------------------
79 !
80 SUBROUTINE gltools_timers( hlabel )
81 !
82  USE modd_glt_param
83 !
84  IMPLICIT NONE
85 !
86  CHARACTER(LEN=*), OPTIONAL, INTENT(in) :: &
87  hlabel
88 !
89 ! .. Local variables
90 !
91  REAL :: &
92  ztime
93  CHARACTER(LEN=80) :: &
94  ylabel
95 !
96 !
97  IF ( ntimers==1 ) THEN
98 !
99 ! .. CALL number
100  ntimnum = ntimnum + 1
101 !
102 ! .. Get input label
103  IF ( present(hlabel) ) THEN
104  IF (len(hlabel)>80) THEN
105  ylabel = hlabel(1:80)
106  ELSE
107  WRITE( ylabel,'(A80)' ) hlabel
108  ENDIF
109  ELSE
110  ylabel = ''
111  ENDIF
112 !
113 ! .. Get current time
114  CALL cpu_time(ztime)
115 !
116 ! .. Print message
117  IF(lwg) WRITE(ntimlu,'("BETWEEN ",A," (CALL # ",I6,") AND ",A, &
118  & " (CALL # ",I6,")")') &
119  & trim(adjustl(clabel)),ntimnum-1,trim(adjustl(ylabel)), &
120  & ntimnum
121  IF(lwg) WRITE(ntimlu,'(" --> exec time = ",F9.3," s", &
122  & " / total time = ",F9.3," s")') &
123  & ztime-xtime,ztime
124 ! CALL flush(ntimlu)
125 !
126 ! .. Save current label and time, for next CALL
127  clabel = ylabel
128  xtime = ztime
129  ENDIF
130 !
131 END SUBROUTINE gltools_timers
132 !
133 ! ----------------------- END SUBROUTINE gltools_timers -------------------------
134 ! -----------------------------------------------------------------------
subroutine gltools_timers(hlabel)