/[MITgcm]/MITgcm/pkg/flt/flt_main.F
ViewVC logotype

Diff of /MITgcm/pkg/flt/flt_main.F

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

revision 1.5 by jmc, Sun Feb 1 20:48:50 2009 UTC revision 1.9 by jmc, Wed Aug 31 21:33:50 2011 UTC
# Line 50  C     changed: Arne Biastoch abiastoch@u Line 50  C     changed: Arne Biastoch abiastoch@u
50  C  C
51  C     ==================================================================  C     ==================================================================
52    
53    CBOP 0
54    C !ROUTINE: FLT_MAIN
55    
56    C !INTERFACE:
57        SUBROUTINE FLT_MAIN (        SUBROUTINE FLT_MAIN (
58       I                      myTime, myIter, myThid )       I                      myTime, myIter, myThid )
59    
60    C     !DESCRIPTION:
61  C     ==================================================================  C     ==================================================================
62  C     SUBROUTINE FLT_MAIN  C     SUBROUTINE FLT_MAIN
63  C     ==================================================================  C     ==================================================================
# Line 74  C     ================================== Line 78  C     ==================================
78    
79  C     !USES:  C     !USES:
80        IMPLICIT NONE        IMPLICIT NONE
81    C     == global variables ==
 #include "EEPARAMS.h"  
82  #include "SIZE.h"  #include "SIZE.h"
83    #include "EEPARAMS.h"
84    #include "PARAMS.h"
85    #include "FLT_SIZE.h"
86  #include "FLT.h"  #include "FLT.h"
87    
88  C     == routine arguments ==  C     !INPUT PARAMETERS:
89  C     myThid - thread number for this instance of the routine.  C     myTime :: current time in simulation
90    C     myIter :: current iteration number
91    C     myThid :: my Thread Id number
92        _RL myTime        _RL myTime
93        INTEGER myIter, myThid        INTEGER myIter, myThid
94    
95  C     integration of the float trajectories  C     !FUNCTIONS:
96          LOGICAL  DIFFERENT_MULTIPLE
97          EXTERNAL DIFFERENT_MULTIPLE
98    
99    C     !LOCAL VARIABLES:
100    CEOP
101    
102    #ifdef ALLOW_DEBUG
103          IF (debugMode) CALL DEBUG_ENTER( 'FLT_MAIN', myThid )
104    #endif
105    
106    C--   integration of the float trajectories
107    #ifdef ALLOW_DEBUG
108             IF (debugMode) CALL DEBUG_CALL('FLT_RUNGA*', myThid )
109    #endif
110    #ifdef FLT_SECOND_ORDER_RUNGE_KUTTA
111  c         WRITE(0,*) ' bf call flt_runga2', myIter  c         WRITE(0,*) ' bf call flt_runga2', myIter
112           CALL TIMER_START('FLOATS RUNGA2      [FLT  LOOP]',myThid)           CALL TIMER_START('FLOATS RUNGA2      [FLT  LOOP]',myThid)
113           CALL FLT_RUNGA2( myTime, myIter, myThid )           CALL FLT_RUNGA2( myTime, myIter, myThid )
114           CALL TIMER_STOP ('FLOATS RUNGA2      [FLT  LOOP]',myThid)           CALL TIMER_STOP ('FLOATS RUNGA2      [FLT  LOOP]',myThid)
115  c         WRITE(0,*) ' af call flt_runga2', myIter  c         WRITE(0,*) ' af call flt_runga2', myIter
116    #else
117  C     check if exchanges between tiles are necessary  c         WRITE(0,*) ' bf call flt_runga4', myIter
118             CALL TIMER_START('FLOATS RUNGA4      [FLT  LOOP]',myThid)
119  c        IF (Nx .NE. sNx .OR. Ny .NE. sNy) THEN           CALL FLT_RUNGA4( myTime, myIter, myThid )
120             CALL TIMER_STOP ('FLOATS RUNGA4      [FLT  LOOP]',myThid)
121    c         WRITE(0,*) ' af call flt_runga4', myIter
122    #endif
123    
124    C--   do exchanges between tiles if necessary
125    
126    #ifdef ALLOW_DEBUG
127             IF (debugMode) CALL DEBUG_CALL('FLT_EXCH*', myThid )
128    #endif
129           CALL TIMER_START('FLOATS EXCHG       [FLT  LOOP]',myThid)           CALL TIMER_START('FLOATS EXCHG       [FLT  LOOP]',myThid)
130    #ifdef ALLOW_EXCH2
131             CALL FLT_EXCH2( myTime, myIter, myThid )
132    #else
133           CALL FLT_EXCHG( myTime, myIter, myThid )           CALL FLT_EXCHG( myTime, myIter, myThid )
134    #endif
135           CALL TIMER_STOP ('FLOATS EXCHG       [FLT  LOOP]',myThid)           CALL TIMER_STOP ('FLOATS EXCHG       [FLT  LOOP]',myThid)
 c        ENDIF  
136    
137  C     store profiles every flt_int_prof time steps:  C--   store profiles every flt_int_prof time steps and move floats up and down
 C     and move floats up and down  
138    
139           IF ( MOD(myTime,flt_int_prof).EQ.0. ) THEN           IF (  DIFFERENT_MULTIPLE( flt_int_prof, myTime, deltaTClock )
140         &      ) THEN
141    #ifdef ALLOW_DEBUG
142               IF (debugMode) CALL DEBUG_CALL('FLT_UP', myThid )
143    #endif
144             CALL TIMER_START('FLOATS UP          [FLT  LOOP]',myThid)             CALL TIMER_START('FLOATS UP          [FLT  LOOP]',myThid)
145             CALL FLT_UP( myTime, myIter, myThid )             CALL FLT_UP( myTime, myIter, myThid )
146             CALL TIMER_STOP ('FLOATS UP          [FLT  LOOP]',myThid)             CALL TIMER_STOP ('FLOATS UP          [FLT  LOOP]',myThid)
147           ENDIF           ENDIF
148    
149    #ifdef ALLOW_DEBUG
150             IF (debugMode) CALL DEBUG_CALL('FLT_DOWN', myThid )
151    #endif
152  c         WRITE(0,*) ' bf call flt_down', myIter  c         WRITE(0,*) ' bf call flt_down', myIter
153             CALL TIMER_START('FLOATS DOWN        [FLT  LOOP]',myThid)             CALL TIMER_START('FLOATS DOWN        [FLT  LOOP]',myThid)
154             CALL FLT_DOWN( myTime, myIter, myThid )             CALL FLT_DOWN( myTime, myIter, myThid )
155             CALL TIMER_STOP ('FLOATS DOWN        [FLT  LOOP]',myThid)             CALL TIMER_STOP ('FLOATS DOWN        [FLT  LOOP]',myThid)
156  c         WRITE(0,*) ' af call flt_down', myIter  c         WRITE(0,*) ' af call flt_down', myIter
157    
158  C     store particles every flt_int_traj timesteps:  C--   store particles every flt_int_traj timesteps:
159    
160           IF ( MOD(myTime,flt_int_traj).EQ.0. ) THEN           IF (  DIFFERENT_MULTIPLE( flt_int_traj, myTime, deltaTClock )
161         &      ) THEN
162    #ifdef ALLOW_DEBUG
163               IF (debugMode) CALL DEBUG_CALL('FLT_TRAJ', myThid )
164    #endif
165  c         WRITE(0,*) ' bf call flt_traj', myIter  c         WRITE(0,*) ' bf call flt_traj', myIter
166             CALL TIMER_START('FLOATS TRAJ        [FLT  LOOP]',myThid)             CALL TIMER_START('FLOATS TRAJ        [FLT  LOOP]',myThid)
167             CALL FLT_TRAJ( myTime, myIter, myThid )             CALL FLT_TRAJ( myTime, myIter, myThid )
# Line 125  c         WRITE(0,*) ' bf call flt_traj' Line 169  c         WRITE(0,*) ' bf call flt_traj'
169  c         WRITE(0,*) ' af call flt_traj', myIter  c         WRITE(0,*) ' af call flt_traj', myIter
170           ENDIF           ENDIF
171    
172    #ifdef ALLOW_DEBUG
173          IF (debugMode) CALL DEBUG_LEAVE( 'FLT_MAIN', myThid )
174    #endif
175    
176        RETURN        RETURN
177        END        END

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22