/[MITgcm]/MITgcm/model/src/the_model_main.F
ViewVC logotype

Diff of /MITgcm/model/src/the_model_main.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.18 by adcroft, Wed Jul 1 19:57:22 1998 UTC revision 1.19 by adcroft, Wed Jul 15 22:11:33 1998 UTC
# Line 104  C     I             - Loop counter Line 104  C     I             - Loop counter
104        INTEGER I, myCurrentIter        INTEGER I, myCurrentIter
105        REAL    myCurrentTime        REAL    myCurrentTime
106    
107    C--   This timer encompasses the whole code
108          CALL TIMER_START('ALL',myThid)
109    
110          CALL TIMER_START('SPIN-UP',myThid)
111    
112  C--   Set model initial conditions  C--   Set model initial conditions
113          CALL TIMER_START('INITIALISE          [SPIN-UP]',myThid)
114        CALL INITIALISE( myThid )        CALL INITIALISE( myThid )
115        myCurrentTime = startTime        myCurrentTime = startTime
116        myCurrentIter = nIter0        myCurrentIter = nIter0
117          CALL TIMER_STOP ('INITIALISE          [SPIN-UP]',myThid)
118    
119  C--   Dump for start state  C--   Dump for start state
120          CALL TIMER_START('I/O (WRITE)         [SPIN-UP]',myThid)
121        CALL WRITE_STATE( .TRUE., myCurrentTime, myCurrentIter, myThid )        CALL WRITE_STATE( .TRUE., myCurrentTime, myCurrentIter, myThid )
122          CALL TIMER_STOP ('I/O (WRITE)         [SPIN-UP]',myThid)
123    
124          CALL TIMER_STOP ('SPIN-UP',myThid)
125    
126  C--   Begin time stepping loop  C--   Begin time stepping loop
127          CALL TIMER_START('MAIN LOOP',myThid)
128        DO I=1, nTimeSteps        DO I=1, nTimeSteps
129    
130  C--    Load forcing/external data fields  C--    Load forcing/external data fields
131           CALL TIMER_START('I/O (READ)         [MAIN LOOP]',myThid)
132         CALL LOAD_EXTERNAL_FIELDS( myCurrentTime, myCurrentIter, myThid )         CALL LOAD_EXTERNAL_FIELDS( myCurrentTime, myCurrentIter, myThid )
133           CALL TIMER_STOP ('I/O (READ)         [MAIN LOOP]',myThid)
134    
135  C--    Step forward fields and calculate time tendency terms  C--    Step forward fields and calculate time tendency terms
136           CALL TIMER_START('DYNAMICS           [MAIN LOOP]',myThid)
137         CALL DYNAMICS( myCurrentTime, myCurrentIter, myThid )         CALL DYNAMICS( myCurrentTime, myCurrentIter, myThid )
138           CALL TIMER_STOP ('DYNAMICS           [MAIN LOOP]',myThid)
139    
140  C--    Do time averages  C--    Do time averages
141  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
142           CALL TIMER_START('I/O (WRITE)        [MAIN LOOP]',myThid)
143         IF (taveFreq.GT.0.) THEN         IF (taveFreq.GT.0.) THEN
144          CALL WRITE_TIME_AVERAGES( myCurrentTime, myCurrentIter, myThid )          CALL WRITE_TIME_AVERAGES( myCurrentTime, myCurrentIter, myThid )
145         ENDIF         ENDIF
146           CALL TIMER_STOP ('I/O (WRITE)        [MAIN LOOP]',myThid)
147  #endif  #endif
148    
149  C--    Do IO if needed.  C--    Do IO if needed.
# Line 134  C      ===== Line 152  C      =====
152  C      At this point model arrays hold U,V,T,S  at "time-level" N  C      At this point model arrays hold U,V,T,S  at "time-level" N
153  C      and cg2d_x at "time-level" N-1/2 where N = I+timeLevBase-1.  C      and cg2d_x at "time-level" N-1/2 where N = I+timeLevBase-1.
154  C      By convention this is taken to be the model "state".  C      By convention this is taken to be the model "state".
155           CALL TIMER_START('I/O (WRITE)        [MAIN LOOP]',myThid)
156         CALL DO_THE_MODEL_IO( myCurrentTime, myCurrentIter, myThid )         CALL DO_THE_MODEL_IO( myCurrentTime, myCurrentIter, myThid )
157           CALL TIMER_STOP ('I/O (WRITE)        [MAIN LOOP]',myThid)
158    
159  C--    Solve elliptic equation(s).  C--    Solve elliptic equation(s).
160  C      Two-dimensional only for conventional hydrostatic or  C      Two-dimensional only for conventional hydrostatic or
161  C      three-dimensional for non-hydrostatic and/or IGW scheme.  C      three-dimensional for non-hydrostatic and/or IGW scheme.
162           CALL TIMER_START('SOLVE_FOR_PRESSURE [MAIN LOOP]',myThid)
163         CALL SOLVE_FOR_PRESSURE( myThid )         CALL SOLVE_FOR_PRESSURE( myThid )
164           CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [MAIN LOOP]',myThid)
165    
166  C--    Do "blocking" sends and receives for tendency "overlap" terms  C--    Do "blocking" sends and receives for tendency "overlap" terms
167           CALL TIMER_START('BLOCKING_EXCHANGES [MAIN LOOP]',myThid)
168         CALL DO_GTERM_BLOCKING_EXCHANGES( myThid )         CALL DO_GTERM_BLOCKING_EXCHANGES( myThid )
169           CALL TIMER_STOP ('BLOCKING_EXCHANGES [MAIN LOOP]',myThid)
170    
171         myCurrentIter = myCurrentIter + 1         myCurrentIter = myCurrentIter + 1
172         myCurrentTime = myCurrentTime + deltaTClock         myCurrentTime = myCurrentTime + deltaTClock
# Line 160  C      Thus a checkpoint contains U.0000 Line 184  C      Thus a checkpoint contains U.0000
184  C      cg2d_x.0000000001 in the indexing scheme used for the model  C      cg2d_x.0000000001 in the indexing scheme used for the model
185  C      "state" files. This example is referred to as a checkpoint  C      "state" files. This example is referred to as a checkpoint
186  C      at time level 1  C      at time level 1
187           CALL TIMER_START('I/O (WRITE)        [MAIN LOOP]',myThid)
188         CALL WRITE_CHECKPOINT( .FALSE., myCurrentTime, myCurrentIter, myThid )         CALL WRITE_CHECKPOINT( .FALSE., myCurrentTime, myCurrentIter, myThid )
189           CALL TIMER_STOP ('I/O (WRITE)        [MAIN LOOP]',myThid)
190    
191        ENDDO        ENDDO
192          CALL TIMER_STOP ('MAIN LOOP',myThid)
193          CALL TIMER_START('SPIN-DOWN',myThid)
194    
195  C--   Final checkpoint (incase the in-loop checkpoint was missed)  C--   Final checkpoint (incase the in-loop checkpoint was missed)
196          CALL TIMER_START('I/O (WRITE)         [SPIN-DOWN]',myThid)
197        CALL WRITE_CHECKPOINT( .TRUE., myCurrentTime, myCurrentIter, myThid )        CALL WRITE_CHECKPOINT( .TRUE., myCurrentTime, myCurrentIter, myThid )
198          CALL TIMER_STOP ('I/O (WRITE)         [SPIN-DOWN]',myThid)
199    
200  C--   Step-forward U/V/Theta/Salt for purposes of final I/O dump  C--   Step-forward U/V/Theta/Salt for purposes of final I/O dump
201          CALL TIMER_START('DYNAMICS            [SPIN-DOWN]',myThid)
202        CALL DYNAMICS( myCurrentTime, myCurrentIter, myThid )        CALL DYNAMICS( myCurrentTime, myCurrentIter, myThid )
203          CALL TIMER_STOP ('DYNAMICS            [SPIN-DOWN]',myThid)
204    
205  C--   Do time averages  C--   Do time averages
206  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
207        IF (taveFreq.GT.0.) THEN        IF (taveFreq.GT.0.) THEN
208          CALL WRITE_TIME_AVERAGES( myCurrentTime, myCurrentIter, myThid )         CALL TIMER_START('I/O (WRITE)        [SPIN-DOWN]',myThid)
209           CALL WRITE_TIME_AVERAGES( myCurrentTime, myCurrentIter, myThid )
210           CALL TIMER_STOP ('I/O (WRITE)        [SPIN-DOWN]',myThid)
211        ENDIF        ENDIF
212  #endif  #endif
213    
214  C--   Dump for end state  C--   Dump for end state
215          CALL TIMER_START('I/O (WRITE)         [SPIN-DOWN]',myThid)
216        CALL WRITE_STATE( .FALSE., myCurrentTime, myCurrentIter, myThid )        CALL WRITE_STATE( .FALSE., myCurrentTime, myCurrentIter, myThid )
217          CALL TIMER_STOP ('I/O (WRITE)         [SPIN-DOWN]',myThid)
218    
219          CALL TIMER_STOP ('SPIN-DOWN',myThid)
220          CALL TIMER_STOP ('ALL',myThid)
221    
222    C--   Write timer statistics
223          IF ( myThid .EQ. 1 ) CALL TIMER_PRINTALL( myThid )
224    
225        RETURN        RETURN
226        END        END

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

  ViewVC Help
Powered by ViewVC 1.1.22