ESMF_Stubs.F90

References to this file elsewhere.
1 ! Various dummy type definitions and routines for the sole purpose of 
2 ! mimicking newer ESMF interface features without necessarily implementing 
3 ! them.  
4 
5 MODULE ESMF_Stubs
6 
7    IMPLICIT NONE
8 
9    PRIVATE
10 
11 ! Bogus typedefs
12    TYPE ESMF_Grid
13       INTEGER :: dummy
14    END TYPE
15 
16    TYPE ESMF_GridComp
17       INTEGER :: dummy
18    END TYPE
19 
20    TYPE ESMF_State
21       INTEGER :: dummy
22    END TYPE
23 
24    TYPE ESMF_VM
25       INTEGER :: dummy
26    END TYPE
27 
28    TYPE ESMF_MsgType
29       INTEGER :: mtype
30    END TYPE
31    TYPE(ESMF_MsgType), PARAMETER  ::      &
32       ESMF_LOG_INFO  =   ESMF_MsgType(1), &
33       ESMF_LOG_WARNING = ESMF_MsgType(2), &
34       ESMF_LOG_ERROR =   ESMF_MsgType(3)
35 
36    TYPE ESMF_LOG
37       INTEGER :: dummy
38    END TYPE
39 
40    LOGICAL, private, save :: initialized = .false.
41 
42    PUBLIC ESMF_Grid, ESMF_GridComp, ESMF_State, ESMF_VM
43    PUBLIC ESMF_Initialize, ESMF_Finalize, ESMF_IsInitialized
44    PUBLIC ESMF_LogWrite, ESMF_LOG, ESMF_MsgType
45    PUBLIC ESMF_LOG_INFO, ESMF_LOG_WARNING, ESMF_LOG_ERROR
46 
47 CONTAINS
48 
49 
50 ! NOOP
51    SUBROUTINE ESMF_Initialize( vm, defaultCalendar, rc )
52       USE esmf_basemod
53       USE esmf_calendarmod
54       TYPE(ESMF_VM),           INTENT(IN   ), OPTIONAL :: vm
55       TYPE(ESMF_CalendarType), INTENT(IN   ), OPTIONAL :: defaultCalendar
56       INTEGER,                 INTENT(  OUT), OPTIONAL :: rc
57 
58       TYPE(ESMF_CalendarType) :: defaultCalType
59       INTEGER :: status
60 
61       IF ( PRESENT( rc ) ) rc = ESMF_FAILURE
62       ! Initialize the default time manager calendar
63       IF ( PRESENT(defaultCalendar) )THEN
64          defaultCalType = defaultCalendar
65       ELSE
66          defaultCalType = ESMF_CAL_NOLEAP
67       END IF
68       allocate( defaultCal )
69       defaultCal = ESMF_CalendarCreate( calendarType=defaultCalType, &
70                         rc=status)
71 
72       ! initialize tables in time manager
73       CALL initdaym
74 
75       IF (status .ne. ESMF_SUCCESS) THEN
76           PRINT *, "Error initializing the default time manager calendar"
77           RETURN
78       END IF
79       initialized = .true.
80 
81       IF ( PRESENT( rc ) ) rc = ESMF_SUCCESS
82    END SUBROUTINE ESMF_Initialize
83 
84 
85    FUNCTION ESMF_IsInitialized()
86       LOGICAL ESMF_IsInitialized
87       ESMF_IsInitialized = initialized
88    END FUNCTION ESMF_IsInitialized
89 
90 
91 ! NOOP
92    SUBROUTINE ESMF_Finalize( rc )
93       USE esmf_basemod
94       INTEGER, INTENT(  OUT), OPTIONAL :: rc
95 #if (defined SPMD) || (defined COUP_CSM)
96 #include <mpif.h>
97 #endif
98       INTEGER :: ier
99 
100       IF ( PRESENT( rc ) ) rc = ESMF_SUCCESS
101 #if (defined SPMD) || (defined COUP_CSM)
102       CALL MPI_Finalize( ier ) 
103       IF ( ier .ne. mpi_success )THEN
104         IF ( PRESENT( rc ) ) rc = ESMF_FAILURE
105       END IF
106 #endif
107    END SUBROUTINE ESMF_Finalize
108 
109 ! NOOP
110    SUBROUTINE ESMF_LogWrite( msg, MsgType, line, file, method, log, rc )
111       USE esmf_basemod
112       CHARACTER(LEN=*), INTENT(IN) :: msg
113       TYPE(ESMF_MsgType), INTENT(IN) :: msgtype
114       INTEGER, INTENT(IN), OPTIONAL :: line
115       CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: file
116       CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: method
117       TYPE(ESMF_LOG),TARGET,OPTIONAL :: log
118       INTEGER, INTENT(OUT),OPTIONAL :: rc
119       IF ( PRESENT( rc ) ) rc = ESMF_SUCCESS
120    END SUBROUTINE ESMF_LogWrite
121 
122 
123 END MODULE ESMF_Stubs
124 
125