ESMF_AlarmClock.F90

References to this file elsewhere.
1 !
2 ! Earth System Modeling Framework
3 ! Copyright 2002-2003, University Corporation for Atmospheric Research,
4 ! Massachusetts Institute of Technology, Geophysical Fluid Dynamics
5 ! Laboratory, University of Michigan, National Centers for Environmental
6 ! Prediction, Los Alamos National Laboratory, Argonne National Laboratory,
7 ! NASA Goddard Space Flight Center.
8 ! Licensed under the University of Illinois-NCSA license.
9 !
10 !==============================================================================
11 !
12 !     ESMF Alarm-Clock Module
13       module ESMF_AlarmClockMod
14 !
15 !==============================================================================
16 !
17 ! This file contains the AlarmCreate method.
18 !
19 !------------------------------------------------------------------------------
20 ! INCLUDES
21 #include <ESMF_TimeMgr.inc>
22 
23 !===============================================================================
24 !BOPI
25 !
26 ! !MODULE: ESMF_AlarmClockMod
27 !
28 ! !DESCRIPTION:
29 ! Separate module that uses both ESMF_AlarmMod and ESMF_ClockMod.  
30 ! Separation is needed to avoid cyclic dependence.  
31 !
32 ! Defines F90 wrapper entry points for corresponding
33 ! C++ class {\tt ESMC\_Alarm}
34 !
35 ! See {\tt ../include/ESMC\_Alarm.h} for complete description
36 !
37 !------------------------------------------------------------------------------
38 ! !USES:
39       ! inherit ESMF_Alarm and ESMF_Clock
40       use ESMF_AlarmMod, only : ESMF_Alarm, ESMF_AlarmSet
41       use ESMF_ClockMod, only : ESMF_Clock, ESMF_ClockAddAlarm
42 
43       ! associated derived types
44       use ESMF_TimeIntervalMod, only : ESMF_TimeInterval
45       use ESMF_TimeMod,         only : ESMF_Time
46 
47       implicit none
48 
49 !------------------------------------------------------------------------------
50 ! !PRIVATE TYPES:
51      private
52 !------------------------------------------------------------------------------
53 
54 ! !PUBLIC MEMBER FUNCTIONS:
55       public ESMF_AlarmCreate
56 
57 !==============================================================================
58 
59       contains
60 
61 !==============================================================================
62 
63 
64 ! Create ESMF_Alarm using ESMF 2.1.0+ semantics
65       FUNCTION ESMF_AlarmCreate( clock, RingTime, RingInterval, &
66                                  StopTime, Enabled, rc )
67 
68         ! return value
69         type(ESMF_Alarm) :: ESMF_AlarmCreate
70         ! !ARGUMENTS:
71         type(ESMF_Clock), intent(inout), optional :: clock
72         type(ESMF_Time), intent(in), optional :: RingTime
73         type(ESMF_TimeInterval), intent(in), optional :: RingInterval
74         type(ESMF_Time), intent(in), optional :: StopTime
75         logical, intent(in), optional :: Enabled
76         integer, intent(out), optional :: rc
77         ! locals
78         type(ESMF_Alarm) :: alarmtmp
79          ! TBH:  ignore allocate errors, for now
80         ALLOCATE( alarmtmp%alarmint )
81         CALL ESMF_AlarmSet( alarmtmp,                  &
82                             RingTime=RingTime,         &
83                             RingInterval=RingInterval, &
84                             StopTime=StopTime,         &
85                             Enabled=Enabled,           &
86                             rc=rc )
87         IF ( PRESENT ( clock ) ) THEN
88           CALL ESMF_ClockAddAlarm( clock, alarmtmp, rc )
89         ENDIF
90         ESMF_AlarmCreate = alarmtmp
91       END FUNCTION ESMF_AlarmCreate
92 
93 
94 !------------------------------------------------------------------------------
95 
96       end module ESMF_AlarmClockMod