File: N:\mfix\model\machine_mod.f

1           MODULE machine
2     
3     !              record length used in open statement for unformatted,
4     !              direct access file, with 512 bytes per record
5           INTEGER  OPEN_N1
6     !
7     !              number of DOUBLE PRECISION words in 512 bytes
8           INTEGER  NWORDS_DP
9     !
10     !              number of REAL words in 512 bytes
11           INTEGER  NWORDS_R
12     !
13     !              number of INTEGER words in 512 bytes
14           INTEGER  NWORDS_I
15     !
16           LOGICAL :: JUST_FLUSH = .TRUE.
17     
18     ! computer node name/id
19           CHARACTER(LEN=64) :: ID_NODE
20     
21     ! RUN ID info
22           INTEGER :: ID_MONTH
23           INTEGER :: ID_DAY
24           INTEGER :: ID_YEAR
25           INTEGER :: ID_HOUR
26           INTEGER :: ID_MINUTE
27           INTEGER :: ID_SECOND
28     
29         CONTAINS
30     
31     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
32     !                                                                      C
33     !  Module name: MACHINE_CONS                                           C
34     !  Purpose: set the machine constants    ( SGI ONLY )                  C
35     !                                                                      C
36     !  Author: P. Nicoletti                               Date: 28-JAN-92  C
37     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date:            C
38     !                                                                      C
39     !  Revision Number:                                                    C
40     !  Purpose:                                                            C
41     !  Author:                                            Date: dd-mmm-yy  C
42     !  Reviewer:                                          Date: dd-mmm-yy  C
43     !                                                                      C
44     !  Literature/Document References:                                     C
45     !                                                                      C
46     !  Variables referenced: None                                          C
47     !  Variables modified: OPEN_N1, NWORDS_DP, NWORDS_R, N_WORDS_I         C
48     !                                                                      C
49     !  Local variables: None                                               C
50     !                                                                      C
51     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
52     !
53           SUBROUTINE MACHINE_CONS
54     
55           IMPLICIT NONE
56     
57           OPEN_N1   = 512
58           NWORDS_DP =  64
59           NWORDS_R  = 128
60           NWORDS_I  = 128
61           JUST_FLUSH = .TRUE.
62     
63           RETURN
64           END SUBROUTINE MACHINE_CONS
65     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
66     !                                                                      C
67     !  Module name: GET_RUN_ID                                             C
68     !  Purpose: get the run id for this run                                C
69     !                                                                      C
70     !  Author: P. Nicoletti                               Date: 16-DEC-91  C
71     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date:            C
72     !                                                                      C
73     !  Revision Number: 1                                                  C
74     !  Purpose: add ndoe name                                              C
75     !  Author: P.Nicoletti                                Date: 07-FEB-92  C
76     !  Reviewer:                                          Date: dd-mmm-yy  C
77     !                                                                      C
78     !  Literature/Document References:                                     C
79     !                                                                      C
80     !  Variables referenced: None                                          C
81     !  Variables modified: ID_MONTH, ID_DAY, ID_YEAR, ID_HOUR, ID_MINUTE   C
82     !                      ID_SECOND, ID_NODE                              C
83     !                                                                      C
84     !  Local variables: TIME_ARRAY                                         C
85     !                                                                      C
86     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
87     !
88           SUBROUTINE GET_RUN_ID
89     !
90           USE param
91           IMPLICIT NONE
92     !
93     !             temporary array to hold time data
94           INTEGER DAT(8)
95           CHARACTER(LEN=10) DATE, TIM, ZONE
96     
97           CALL DATE_AND_TIME(DATE, TIM, ZONE, DAT)
98           ID_YEAR   = DAT(1)
99           ID_MONTH  = DAT(2)
100           ID_DAY    = DAT(3)
101           ID_HOUR   = DAT(5)
102           ID_MINUTE = DAT(6)
103           ID_SECOND = DAT(7)
104     
105     !     For SGI only
106     !      CALL GETHOSTNAME(ID_NODE,64)
107     !     For Linux with Portland Group compilers
108           CALL GET_ENVIRONMENT_VARIABLE('HOSTNAME',ID_NODE)
109     !
110           RETURN
111           END SUBROUTINE GET_RUN_ID
112     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
113     !                                                                      C
114     !  Function name: WALL_TIME (CPU)                                      C
115     !  Purpose: returns wall time since start of the run                   C
116     !                                                                      C
117     !  Author: P. Nicoletti                               Date: 10-JAN-92  C
118     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date:            C
119     !                                                                      C
120     !  Revision Number:                                                    C
121     !  Purpose:                                                            C
122     !  Author:                                            Date: dd-mmm-yy  C
123     !  Reviewer:                                          Date: dd-mmm-yy  C
124     !                                                                      C
125     !  Literature/Document References:                                     C
126     !                                                                      C
127     !  Variables referenced: None                                          C
128     !  Variables modified: None                                            C
129     !                                                                      C
130     !  Local variables: TA, XT                                             C
131     !                                                                      C
132     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
133     !
134           DOUBLE PRECISION FUNCTION WALL_TIME()
135     !
136           IMPLICIT NONE
137     
138           INTEGER, SAVE :: COUNT_OLD=0, WRAP=0
139     !
140     ! local variables
141     !                       clock cycle
142           INTEGER           COUNT
143     
144     !                       number of cycles per second
145           INTEGER           COUNT_RATE
146     
147     !                       max number of cycles, after which count is reset to 0
148           INTEGER           COUNT_MAX
149     
150           CALL SYSTEM_CLOCK(COUNT, COUNT_RATE, COUNT_MAX)
151           IF(COUNT_OLD .GT. COUNT) THEN
152             WRAP = WRAP + 1
153           ENDIF
154           COUNT_OLD = COUNT
155     
156           WALL_TIME      = DBLE(COUNT)/DBLE(COUNT_RATE) &
157                          + DBLE(WRAP) * DBLE(COUNT_MAX)/DBLE(COUNT_RATE)
158           END FUNCTION WALL_TIME
159     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
160     !                                                                      C
161     !  Module name: START_LOG                                              C
162     !  Purpose: does nothing ... for VAX/VMS compatibility (SGI ONLY)      C
163     !                                                                      C
164     !  Author: P. Nicoletti                               Date: 28-JAN-92  C
165     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date:            C
166     !                                                                      C
167     !  Revision Number:                                                    C
168     !  Purpose:                                                            C
169     !  Author:                                            Date: dd-mmm-yy  C
170     !  Reviewer:                                          Date: dd-mmm-yy  C
171     !                                                                      C
172     !  Literature/Document References:                                     C
173     !                                                                      C
174     !  Variables referenced: None                                          C
175     !  Variables modified: None                                            C
176     !                                                                      C
177     !  Local variables: None                                               C
178     !                                                                      C
179     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
180     !
181           SUBROUTINE START_LOG
182           IMPLICIT NONE
183           RETURN
184           END SUBROUTINE START_LOG
185     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
186     !                                                                      C
187     !  Module name: END_LOG                                                C
188     !  Purpose: flushes the log file                                       C
189     !                                                                      C
190     !  Author: P. Nicoletti                               Date: 28-JAN-92  C
191     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date:            C
192     !                                                                      C
193     !  Revision Number:                                                    C
194     !  Purpose:                                                            C
195     !  Author:                                            Date: dd-mmm-yy  C
196     !  Reviewer:                                          Date: dd-mmm-yy  C
197     !                                                                      C
198     !  Literature/Document References:                                     C
199     !                                                                      C
200     !  Variables referenced: None                                          C
201     !  Variables modified: None                                            C
202     !                                                                      C
203     !  Local variables: None                                               C
204     !                                                                      C
205     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
206     !
207           SUBROUTINE END_LOG
208           USE funits
209           IMPLICIT NONE
210           IF(DMP_LOG) FLUSH(UNIT_LOG)
211           RETURN
212           END SUBROUTINE END_LOG
213     
214           subroutine slumber
215           return
216           end subroutine slumber
217     
218           subroutine pc_quickwin
219           return
220           end subroutine pc_quickwin
221     
222           subroutine ran
223           return
224           end subroutine ran
225     
226           subroutine flush_bin(iunit)
227           implicit none
228           integer :: iunit
229     
230           flush(iunit)
231           return
232           end subroutine flush_bin
233     
234           subroutine flush_res(iunit)
235           implicit none
236           integer :: iunit
237           flush(iunit)
238           return
239           end subroutine flush_res
240     
241           END MODULE machine
242