/[MITgcm]/MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F
ViewVC logotype

Diff of /MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F

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

revision 1.12 by dimitri, Thu Mar 8 21:52:27 2012 UTC revision 1.19 by dimitri, Thu Oct 2 22:02:55 2014 UTC
# Line 1  Line 1 
 #define CPL_MONITOR  
1  #define FIX_FOR_EDGE_WINDS  #define FIX_FOR_EDGE_WINDS
2  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
3  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
# Line 24  C     == Global variables == Line 23  C     == Global variables ==
23  #include "DYNVARS.h"  #include "DYNVARS.h"
24  #include "GRID.h"  #include "GRID.h"
25  #include "FFIELDS.h"  #include "FFIELDS.h"
26    #include "SEAICE_OPTIONS.h"
27    #include "SEAICE_SIZE.h"
28    #include "SEAICE.h"
29  #ifdef ALLOW_EXF  #ifdef ALLOW_EXF
30  # include "EXF_OPTIONS.h"  # include "EXF_OPTIONS.h"
31  # include "EXF_FIELDS.h"  # include "EXF_FIELDS.h"
32  #endif  #endif
 #ifdef ALLOW_SEAICE  
 # include "SEAICE_OPTIONS.h"  
 # include "SEAICE.h"  
 #endif  
33    
34        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
35        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
# Line 50  CEOP Line 48  CEOP
48        COMMON /CPL_MPI_ID/        COMMON /CPL_MPI_ID/
49       &        myworldid, local_ocean_leader, local_ice_leader       &        myworldid, local_ocean_leader, local_ice_leader
50        integer myworldid, local_ocean_leader, local_ice_leader        integer myworldid, local_ocean_leader, local_ice_leader
51  #ifdef ALLOW_USE_MPI  # ifdef ALLOW_USE_MPI
52        integer mpistatus(MPI_STATUS_SIZE), mpierr        integer mpistatus(MPI_STATUS_SIZE), mpierr
53  #endif /* ALLOW_USE_MPI */  # endif /* ALLOW_USE_MPI */
54        integer xfer_gridsize(2)        integer xfer_gridsize(2)
55        integer i, j, bi, bj, buffsize, idx        integer i, j, bi, bj, buffsize, idx
56        Real*8  xfer_scalar        Real*8  xfer_scalar
# Line 61  CEOP Line 59  CEOP
59        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)
60        _RL     local(1:sNx,1:sNy,nSx,nSy)        _RL     local(1:sNx,1:sNy,nSx,nSy)
61    
62        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp  # ifdef CPL_DEBUG
63        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        character*(10) itername
64        _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        write(itername,'(i10.10)') myIter
65        _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  # endif /* CPL_DEBUG */
       _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
66    
67        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
68    
# Line 74  C     Send deltatimestep Line 70  C     Send deltatimestep
70         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
71         xfer_scalar = deltat         xfer_scalar = deltat
72         buffsize = 1         buffsize = 1
73  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
74         print*,'MITgcm send TimeInterval', xfer_scalar         print*,'MITgcm send TimeInterval', xfer_scalar
75  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
76    # ifdef CPL_COUPLED
77         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
78          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
79       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)
80         ENDIF         ENDIF
81  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
82         _END_MASTER( myThid )         _END_MASTER( myThid )
83    
84  C     Send grid dimensions (Nx,Ny)  C     Send grid dimensions (Nx,Ny)
# Line 89  C     Send grid dimensions (Nx,Ny) Line 86  C     Send grid dimensions (Nx,Ny)
86         xfer_gridsize(1)=Nx         xfer_gridsize(1)=Nx
87         xfer_gridsize(2)=Ny         xfer_gridsize(2)=Ny
88         buffsize = 2         buffsize = 2
89  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
90         print*,'MITgcm send OceanGridsize', xfer_gridsize         print*,'MITgcm send OceanGridsize', xfer_gridsize
91  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
92    # ifdef CPL_COUPLED
93         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
94          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,
95       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)
96         ENDIF         ENDIF
97  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
98           _END_MASTER( myThid )
99    
100    C     Send longitude East of center of grid cell
101           DO bj=1,nSy
102            DO bi=1,nSx
103             DO j=1,sNy
104              DO i=1,sNx
105               local(i,j,bi,bj) = xC(i,j,bi,bj)
106              ENDDO
107             ENDDO
108            ENDDO
109           ENDDO
110           CALL GATHER_2D( xfer_array, local, myThid )
111    # ifdef CPL_DEBUG
112           CALL PLOT_FIELD_XYRL( xC, 'xC', myIter, myThid )
113    # endif /* CPL_DEBUG */
114    # ifdef CPL_COUPLED
115           _BEGIN_MASTER( myThid )
116           IF ( myworldid .EQ. local_ocean_leader ) THEN
117            buffsize = Nx*Ny
118            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
119         &     local_ice_leader,xCTag,MPI_COMM_WORLD,mpierr)
120           ENDIF
121           _END_MASTER( myThid )
122    # endif /* CPL_COUPLED */
123    
124    C     Send latitude North of center of grid cell
125           DO bj=1,nSy
126            DO bi=1,nSx
127             DO j=1,sNy
128              DO i=1,sNx
129               local(i,j,bi,bj) = yC(i,j,bi,bj)
130              ENDDO
131             ENDDO
132            ENDDO
133           ENDDO
134           CALL GATHER_2D( xfer_array, local, myThid )
135    # ifdef CPL_DEBUG
136           CALL PLOT_FIELD_XYRL( yC, 'yC', myIter, myThid )
137    # endif /* CPL_DEBUG */
138    # ifdef CPL_COUPLED
139           _BEGIN_MASTER( myThid )
140           IF ( myworldid .EQ. local_ocean_leader ) THEN
141            buffsize = Nx*Ny
142            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
143         &     local_ice_leader,yCTag,MPI_COMM_WORLD,mpierr)
144           ENDIF
145           _END_MASTER( myThid )
146    # endif /* CPL_COUPLED */
147    
148    C     Send longitude East of SouthWest corner
149           DO bj=1,nSy
150            DO bi=1,nSx
151             DO j=1,sNy
152              DO i=1,sNx
153               local(i,j,bi,bj) = xG(i,j,bi,bj)
154              ENDDO
155             ENDDO
156            ENDDO
157           ENDDO
158           CALL GATHER_2D( xfer_array, local, myThid )
159    # ifdef CPL_DEBUG
160           CALL PLOT_FIELD_XYRL( xG, 'xG', myIter, myThid )
161    # endif /* CPL_DEBUG */
162    # ifdef CPL_COUPLED
163           _BEGIN_MASTER( myThid )
164           IF ( myworldid .EQ. local_ocean_leader ) THEN
165            buffsize = Nx*Ny
166            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
167         &     local_ice_leader,xGTag,MPI_COMM_WORLD,mpierr)
168           ENDIF
169         _END_MASTER( myThid )         _END_MASTER( myThid )
170    # endif /* CPL_COUPLED */
171    
172    C     Send latitude North of SouthWest corner
173           DO bj=1,nSy
174            DO bi=1,nSx
175             DO j=1,sNy
176              DO i=1,sNx
177               local(i,j,bi,bj) = yG(i,j,bi,bj)
178              ENDDO
179             ENDDO
180            ENDDO
181           ENDDO
182           CALL GATHER_2D( xfer_array, local, myThid )
183    # ifdef CPL_DEBUG
184           CALL PLOT_FIELD_XYRL( yG, 'yG', myIter, myThid )
185    # endif /* CPL_DEBUG */
186    # ifdef CPL_COUPLED
187           _BEGIN_MASTER( myThid )
188           IF ( myworldid .EQ. local_ocean_leader ) THEN
189            buffsize = Nx*Ny
190            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
191         &     local_ice_leader,yGTag,MPI_COMM_WORLD,mpierr)
192           ENDIF
193           _END_MASTER( myThid )
194    # endif /* CPL_COUPLED */
195    
196    C     Send distance in m between SouthWest and SouthEast corner
197           DO bj=1,nSy
198            DO bi=1,nSx
199             DO j=1,sNy
200              DO i=1,sNx
201               local(i,j,bi,bj) = dxG(i,j,bi,bj)
202              ENDDO
203             ENDDO
204            ENDDO
205           ENDDO
206           CALL GATHER_2D( xfer_array, local, myThid )
207    # ifdef CPL_DEBUG
208           CALL PLOT_FIELD_XYRL( dxG, 'dxG', myIter, myThid )
209    # endif /* CPL_DEBUG */
210    # ifdef CPL_COUPLED
211           _BEGIN_MASTER( myThid )
212           IF ( myworldid .EQ. local_ocean_leader ) THEN
213            buffsize = Nx*Ny
214            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
215         &     local_ice_leader,dxGTag,MPI_COMM_WORLD,mpierr)
216           ENDIF
217           _END_MASTER( myThid )
218    # endif /* CPL_COUPLED */
219    
220    C     Send distance in m between SouthWest and NorthEast corner
221           DO bj=1,nSy
222            DO bi=1,nSx
223             DO j=1,sNy
224              DO i=1,sNx
225               local(i,j,bi,bj) = dyG(i,j,bi,bj)
226              ENDDO
227             ENDDO
228            ENDDO
229           ENDDO
230           CALL GATHER_2D( xfer_array, local, myThid )
231    # ifdef CPL_DEBUG
232           CALL PLOT_FIELD_XYRL( dyG, 'dyG', myIter, myThid )
233    # endif /* CPL_DEBUG */
234    # ifdef CPL_COUPLED
235           _BEGIN_MASTER( myThid )
236           IF ( myworldid .EQ. local_ocean_leader ) THEN
237            buffsize = Nx*Ny
238            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
239         &     local_ice_leader,dyGTag,MPI_COMM_WORLD,mpierr)
240           ENDIF
241           _END_MASTER( myThid )
242    # endif /* CPL_COUPLED */
243    
244    C     Send cosine(alpha) relative to geographic direction at grid cell center
245           DO bj=1,nSy
246            DO bi=1,nSx
247             DO j=1,sNy
248              DO i=1,sNx
249               local(i,j,bi,bj) = angleCosC(i,j,bi,bj)
250              ENDDO
251             ENDDO
252            ENDDO
253           ENDDO
254           CALL GATHER_2D( xfer_array, local, myThid )
255    # ifdef CPL_DEBUG
256           CALL PLOT_FIELD_XYRL( angleCosC, 'aCS', myIter, myThid )
257    # endif /* CPL_DEBUG */
258    # ifdef CPL_COUPLED
259           _BEGIN_MASTER( myThid )
260           IF ( myworldid .EQ. local_ocean_leader ) THEN
261            buffsize = Nx*Ny
262            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
263         &     local_ice_leader,aCStag,MPI_COMM_WORLD,mpierr)
264           ENDIF
265           _END_MASTER( myThid )
266    # endif /* CPL_COUPLED */
267    
268    C     Send sine(alpha) relative to geographic direction at grid cell center
269           DO bj=1,nSy
270            DO bi=1,nSx
271             DO j=1,sNy
272              DO i=1,sNx
273               local(i,j,bi,bj) = angleSinC(i,j,bi,bj)
274              ENDDO
275             ENDDO
276            ENDDO
277           ENDDO
278           CALL GATHER_2D( xfer_array, local, myThid )
279    # ifdef CPL_DEBUG
280           CALL PLOT_FIELD_XYRL( angleSinC, 'aSN', myIter, myThid )
281    # endif /* CPL_DEBUG */
282    # ifdef CPL_COUPLED
283           _BEGIN_MASTER( myThid )
284           IF ( myworldid .EQ. local_ocean_leader ) THEN
285            buffsize = Nx*Ny
286            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
287         &     local_ice_leader,aSNtag,MPI_COMM_WORLD,mpierr)
288           ENDIF
289           _END_MASTER( myThid )
290    # endif /* CPL_COUPLED */
291    
292    C     Send landmask of center of grid cell, 0 is land, >0 is ocean
293           DO bj=1,nSy
294            DO bi=1,nSx
295             DO j=1,sNy
296              DO i=1,sNx
297               local(i,j,bi,bj) = hFacC(i,j,1,bi,bj)
298              ENDDO
299             ENDDO
300            ENDDO
301           ENDDO
302           CALL GATHER_2D( xfer_array, local, myThid )
303    # ifdef CPL_DEBUG
304           CALL PLOT_FIELD_XYRL( hFacC, 'hFacC', myIter, myThid )
305    # endif /* CPL_DEBUG */
306    # ifdef CPL_COUPLED
307           _BEGIN_MASTER( myThid )
308           IF ( myworldid .EQ. local_ocean_leader ) THEN
309            buffsize = Nx*Ny
310            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
311         &     local_ice_leader,hFacCtag,MPI_COMM_WORLD,mpierr)
312           ENDIF
313           _END_MASTER( myThid )
314    # endif /* CPL_COUPLED */
315    
316  C     Send ice area  C     Send ice area
317         DO bj=1,nSy         DO bj=1,nSy
# Line 110  C     Send ice area Line 324  C     Send ice area
324          ENDDO          ENDDO
325         ENDDO         ENDDO
326         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
327  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
328         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
329  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
330    # ifdef CPL_COUPLED
331         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
332         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
333          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 120  C     Send ice area Line 335  C     Send ice area
335       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
336         ENDIF         ENDIF
337         _END_MASTER( myThid )         _END_MASTER( myThid )
338  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
339    
340  C     Send ice thickness  C     Send ice thickness
341         DO bj=1,nSy         DO bj=1,nSy
# Line 133  C     Send ice thickness Line 348  C     Send ice thickness
348          ENDDO          ENDDO
349         ENDDO         ENDDO
350         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
351  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
352         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
353  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
354    # ifdef CPL_COUPLED
355         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
356         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
357          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 143  C     Send ice thickness Line 359  C     Send ice thickness
359       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
360         ENDIF         ENDIF
361         _END_MASTER( myThid )         _END_MASTER( myThid )
362  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
363    
364  C     Send ice salinity  C     Send ice salinity
365         DO bj=1,nSy         DO bj=1,nSy
# Line 156  C     Send ice salinity Line 372  C     Send ice salinity
372          ENDDO          ENDDO
373         ENDDO         ENDDO
374         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
375  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
376         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
377  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
378    # ifdef CPL_COUPLED
379         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
380         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
381          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 166  C     Send ice salinity Line 383  C     Send ice salinity
383       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
384         ENDIF         ENDIF
385         _END_MASTER( myThid )         _END_MASTER( myThid )
386  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
387    
388  C     Send snow thickness  C     Send snow thickness
389         DO bj=1,nSy         DO bj=1,nSy
# Line 179  C     Send snow thickness Line 396  C     Send snow thickness
396          ENDDO          ENDDO
397         ENDDO         ENDDO
398         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
399  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
400         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
401  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
402    # ifdef CPL_COUPLED
403         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
404         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
405          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 189  C     Send snow thickness Line 407  C     Send snow thickness
407       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
408         ENDIF         ENDIF
409         _END_MASTER( myThid )         _END_MASTER( myThid )
410  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
411    
412        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
413    
414    C--   Apply ice open boundary conditions
415    #ifdef ALLOW_OBCS
416          IF ( useOBCS ) THEN
417           CALL OBCS_APPLY_SEAICE( myThid )
418           CALL OBCS_APPLY_UVICE( uice, vice, myThid )
419          ENDIF
420    #endif /* ALLOW_OBCS */
421    
422  C     Send ocean model time  C     Send ocean model time
423        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
424        xfer_scalar = myTime        xfer_scalar = myTime
425        buffsize = 1        buffsize = 1
426  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
427        print*,'MITgcm send OceanTime', xfer_scalar        print*,'MITgcm send OceanTime', xfer_scalar
428  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
429    # ifdef CPL_COUPLED
430        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
431         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
432       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)
433        ENDIF        ENDIF
434  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
435        _END_MASTER( myThid )        _END_MASTER( myThid )
436    
437  C     Send boundary ice area  C     Send boundary ice area
# Line 235  C     Send boundary ice area Line 462  C     Send boundary ice area
462         idx = idx + 1         idx = idx + 1
463         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
464        ENDDO        ENDDO
465  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
466    # ifdef CPL_DEBUG
467        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
468  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'AREAobcs.', itername,
469         &     xfer_bc_tracer, buffsize, myIter, myThid )
470    # endif /* CPL_DEBUG */
471    # ifdef CPL_COUPLED
472        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
473        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
474  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
475         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
476       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
477  cdb    print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
478        ENDIF        ENDIF
479        _END_MASTER( myThid )        _END_MASTER( myThid )
480  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
481    
482  C     Send boundary ice thickness  C     Send boundary ice thickness
483        DO bj=1,nSy        DO bj=1,nSy
# Line 277  C     Send boundary ice thickness Line 507  C     Send boundary ice thickness
507         idx = idx + 1         idx = idx + 1
508         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
509        ENDDO        ENDDO
510  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
511    # ifdef CPL_DEBUG
512        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
513  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HEFFobcs.', itername,
514         &     xfer_bc_tracer, buffsize, myIter, myThid )
515    # endif /* CPL_DEBUG */
516    # ifdef CPL_COUPLED
517        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
518        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
519         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
520       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
521        ENDIF        ENDIF
522        _END_MASTER( myThid )        _END_MASTER( myThid )
523  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
524    
525  C     Send boundary ice salinity  C     Send boundary ice salinity
526        DO bj=1,nSy        DO bj=1,nSy
# Line 317  C     Send boundary ice salinity Line 550  C     Send boundary ice salinity
550         idx = idx + 1         idx = idx + 1
551         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
552        ENDDO        ENDDO
553  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
554    # ifdef CPL_DEBUG
555        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
556  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSALTobcs.', itername,
557         &     xfer_bc_tracer, buffsize, myIter, myThid )
558    # endif /* CPL_DEBUG */
559    # ifdef CPL_COUPLED
560        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
561        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
562         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
563       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
564        ENDIF        ENDIF
565        _END_MASTER( myThid )        _END_MASTER( myThid )
566  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
567    
568  C     Send boundary snow thickness  C     Send boundary snow thickness
569        DO bj=1,nSy        DO bj=1,nSy
# Line 357  C     Send boundary snow thickness Line 593  C     Send boundary snow thickness
593         idx = idx + 1         idx = idx + 1
594         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
595        ENDDO        ENDDO
596  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
597    # ifdef CPL_DEBUG
598        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
599  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSNOWobcs.', itername,
600         &     xfer_bc_tracer, buffsize, myIter, myThid )
601    # endif /* CPL_DEBUG */
602    # ifdef CPL_COUPLED
603        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
604        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
605         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
606       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
607        ENDIF        ENDIF
608        _END_MASTER( myThid )        _END_MASTER( myThid )
609  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
610    
611  C     Send boundary u ice  C     Send boundary u ice
612        DO bj=1,nSy        DO bj=1,nSy
# Line 397  C     Send boundary u ice Line 636  C     Send boundary u ice
636         idx = idx + 1         idx = idx + 1
637         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
638        ENDDO        ENDDO
639  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
640    # ifdef CPL_DEBUG
641        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
642  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'UICEobcs.', itername,
643         &     xfer_bc_veloc, buffsize, myIter, myThid )
644    # endif /* CPL_DEBUG */
645    # ifdef CPL_COUPLED
646        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
647        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
648         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
649       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
650        ENDIF        ENDIF
651        _END_MASTER( myThid )        _END_MASTER( myThid )
652  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
653    
654  C     Send boundary v ice  C     Send boundary v ice
655        DO bj=1,nSy        DO bj=1,nSy
# Line 437  C     Send boundary v ice Line 679  C     Send boundary v ice
679         idx = idx + 1         idx = idx + 1
680         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
681        ENDDO        ENDDO
682  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
683    # ifdef CPL_DEBUG
684        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
685  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'VICEobcs.', itername,
686         &     xfer_bc_veloc, buffsize, myIter, myThid )
687    # endif /* CPL_DEBUG */
688    # ifdef CPL_COUPLED
689        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
690        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
691         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
692       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
693        ENDIF        ENDIF
694        _END_MASTER( myThid )        _END_MASTER( myThid )
695  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
696    
697  C     Send u-wind velocity  C     Send u-wind velocity
698        DO bj=1,nSy        DO bj=1,nSy
# Line 460  C     Send u-wind velocity Line 705  C     Send u-wind velocity
705         ENDDO         ENDDO
706        ENDDO        ENDDO
707        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
708  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
709        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
710  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
711    # ifdef CPL_COUPLED
712        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
713        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
714  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
715         DO j=1,Ny         DO j=1,Ny
716          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
717         ENDDO         ENDDO
718  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
719         buffsize = Nx*Ny         buffsize = Nx*Ny
720         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
721       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
722        ENDIF        ENDIF
723        _END_MASTER( myThid )        _END_MASTER( myThid )
724  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
725    
726  C     Send v-wind velocity  C     Send v-wind velocity
727        DO bj=1,nSy        DO bj=1,nSy
# Line 488  C     Send v-wind velocity Line 734  C     Send v-wind velocity
734         ENDDO         ENDDO
735        ENDDO        ENDDO
736        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
737  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
738        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
739  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
740    # ifdef CPL_COUPLED
741        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
742        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
743  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
744         DO i=1,Nx         DO i=1,Nx
745          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
746         ENDDO         ENDDO
747  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
748         buffsize = Nx*Ny         buffsize = Nx*Ny
749         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
750       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
751        ENDIF        ENDIF
752        _END_MASTER( myThid )        _END_MASTER( myThid )
753  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
754    
755  C     Send downward longwave radiation  C     Send downward longwave radiation
756        DO bj=1,nSy        DO bj=1,nSy
# Line 516  C     Send downward longwave radiation Line 763  C     Send downward longwave radiation
763         ENDDO         ENDDO
764        ENDDO        ENDDO
765        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
766  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
767        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
768  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
769    # ifdef CPL_COUPLED
770        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
771        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
772         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 526  C     Send downward longwave radiation Line 774  C     Send downward longwave radiation
774       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
775        ENDIF        ENDIF
776        _END_MASTER( myThid )        _END_MASTER( myThid )
777  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
778    
779  C     Send downward shortwave radiation  C     Send downward shortwave radiation
780        DO bj=1,nSy        DO bj=1,nSy
# Line 539  C     Send downward shortwave radiation Line 787  C     Send downward shortwave radiation
787         ENDDO         ENDDO
788        ENDDO        ENDDO
789        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
790  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
791        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
792  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
793    # ifdef CPL_COUPLED
794        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
795        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
796         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 549  C     Send downward shortwave radiation Line 798  C     Send downward shortwave radiation
798       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
799        ENDIF        ENDIF
800        _END_MASTER( myThid )        _END_MASTER( myThid )
801  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
802    
803  C     Send air temperature  C     Send air temperature
804        DO bj=1,nSy        DO bj=1,nSy
# Line 562  C     Send air temperature Line 811  C     Send air temperature
811         ENDDO         ENDDO
812        ENDDO        ENDDO
813        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
814  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
815        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
816  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
817    # ifdef CPL_COUPLED
818        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
819        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
820         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 572  C     Send air temperature Line 822  C     Send air temperature
822       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)
823        ENDIF        ENDIF
824        _END_MASTER( myThid )        _END_MASTER( myThid )
825  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
826    
827  C     Send humidity  C     Send humidity
828        DO bj=1,nSy        DO bj=1,nSy
# Line 585  C     Send humidity Line 835  C     Send humidity
835         ENDDO         ENDDO
836        ENDDO        ENDDO
837        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
838  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
839        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
840  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
841    # ifdef CPL_COUPLED
842        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
843        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
844         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 595  C     Send humidity Line 846  C     Send humidity
846       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
847        ENDIF        ENDIF
848        _END_MASTER( myThid )        _END_MASTER( myThid )
849  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
850    
851  C     Send precipitation  C     Send precipitation
852        DO bj=1,nSy        DO bj=1,nSy
# Line 608  C     Send precipitation Line 859  C     Send precipitation
859         ENDDO         ENDDO
860        ENDDO        ENDDO
861        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
862  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
863        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
864  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
865    # ifdef CPL_COUPLED
866        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
867        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
868         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 618  C     Send precipitation Line 870  C     Send precipitation
870       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
871        ENDIF        ENDIF
872        _END_MASTER( myThid )        _END_MASTER( myThid )
873  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
874    
875  C     Send ocean surface temperature  C     Send ocean surface temperature
876        DO bj=1,nSy        DO bj=1,nSy
# Line 631  C     Send ocean surface temperature Line 883  C     Send ocean surface temperature
883         ENDDO         ENDDO
884        ENDDO        ENDDO
885        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
886  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
887        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
888  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
889    # ifdef CPL_COUPLED
890        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
891        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
892         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 641  C     Send ocean surface temperature Line 894  C     Send ocean surface temperature
894       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
895        ENDIF        ENDIF
896        _END_MASTER( myThid )        _END_MASTER( myThid )
897  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
898    
899  C     Send ocean surface salinity  C     Send ocean surface salinity
900        DO bj=1,nSy        DO bj=1,nSy
# Line 654  C     Send ocean surface salinity Line 907  C     Send ocean surface salinity
907         ENDDO         ENDDO
908        ENDDO        ENDDO
909        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
910  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
911        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
912  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
913    # ifdef CPL_COUPLED
914        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
915        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
916         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 664  C     Send ocean surface salinity Line 918  C     Send ocean surface salinity
918       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
919        ENDIF        ENDIF
920        _END_MASTER( myThid )        _END_MASTER( myThid )
921  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
922    
923  C     Send surface u current  C     Send surface u current
924        DO bj=1,nSy        DO bj=1,nSy
# Line 677  C     Send surface u current Line 931  C     Send surface u current
931         ENDDO         ENDDO
932        ENDDO        ENDDO
933        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
934  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
935        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
936  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
937    # ifdef CPL_COUPLED
938        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
939        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
940         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 687  C     Send surface u current Line 942  C     Send surface u current
942       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
943        ENDIF        ENDIF
944        _END_MASTER( myThid )        _END_MASTER( myThid )
945  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
946    
947  C     Send surface v current  C     Send surface v current
948        DO bj=1,nSy        DO bj=1,nSy
# Line 700  C     Send surface v current Line 955  C     Send surface v current
955         ENDDO         ENDDO
956        ENDDO        ENDDO
957        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
958  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
959        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
960  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
961    # ifdef CPL_COUPLED
962        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
963        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
964         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 710  C     Send surface v current Line 966  C     Send surface v current
966       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
967        ENDIF        ENDIF
968        _END_MASTER( myThid )        _END_MASTER( myThid )
969  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
970    
971  C     Receive ice model time  C     Receive ice model time
972        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
973  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
974         print*,'MITgcm receive IceTime'         print*,'MITgcm receive IceTime'
975  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
976    # ifdef CPL_COUPLED
977        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
978         buffsize = 1         buffsize = 1
979         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
980       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)
981        ENDIF        ENDIF
982  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
983        _END_MASTER( myThid )        _END_MASTER( myThid )
984    
985  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
986  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = AREA(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
987        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
988        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
989         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 745  C     Receive ice area Line 992  C     Receive ice area
992        ENDIF        ENDIF
993        _END_MASTER( myThid )        _END_MASTER( myThid )
994        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
995        DO bj=1,nSy        DO bj=1,nSy
996         DO bi=1,nSx         DO bi=1,nSx
997          DO j=1,sNy          DO j=1,sNy
# Line 755  C     Receive ice area Line 1001  C     Receive ice area
1001          ENDDO          ENDDO
1002         ENDDO         ENDDO
1003        ENDDO        ENDDO
1004  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
1005    # ifdef CPL_DEBUG
1006        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
1007  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
1008    
1009  C     Receive ice thickness  C     Receive ice thickness
1010  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = HEFF(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1011        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1012        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1013         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 779  C     Receive ice thickness Line 1016  C     Receive ice thickness
1016        ENDIF        ENDIF
1017        _END_MASTER( myThid )        _END_MASTER( myThid )
1018        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
1019        DO bj=1,nSy        DO bj=1,nSy
1020         DO bi=1,nSx         DO bi=1,nSx
1021          DO j=1,sNy          DO j=1,sNy
# Line 789  C     Receive ice thickness Line 1025  C     Receive ice thickness
1025          ENDDO          ENDDO
1026         ENDDO         ENDDO
1027        ENDDO        ENDDO
1028  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
1029    # ifdef CPL_DEBUG
1030        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
1031  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
1032    
1033  C     Receive ice salinity  C     Receive ice salinity
1034  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = HSALT(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1035        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1036        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1037         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 813  C     Receive ice salinity Line 1040  C     Receive ice salinity
1040        ENDIF        ENDIF
1041        _END_MASTER( myThid )        _END_MASTER( myThid )
1042        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
1043        DO bj=1,nSy        DO bj=1,nSy
1044         DO bi=1,nSx         DO bi=1,nSx
1045          DO j=1,sNy          DO j=1,sNy
# Line 823  C     Receive ice salinity Line 1049  C     Receive ice salinity
1049          ENDDO          ENDDO
1050         ENDDO         ENDDO
1051        ENDDO        ENDDO
1052  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
1053    # ifdef CPL_DEBUG
1054        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
1055  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
1056    
1057  C     Receive snow thickness  C     Receive snow thickness
1058  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = HSNOW(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1059        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1060        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1061         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 847  C     Receive snow thickness Line 1064  C     Receive snow thickness
1064        ENDIF        ENDIF
1065        _END_MASTER( myThid )        _END_MASTER( myThid )
1066        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
1067        DO bj=1,nSy        DO bj=1,nSy
1068         DO bi=1,nSx         DO bi=1,nSx
1069          DO j=1,sNy          DO j=1,sNy
# Line 857  C     Receive snow thickness Line 1073  C     Receive snow thickness
1073          ENDDO          ENDDO
1074         ENDDO         ENDDO
1075        ENDDO        ENDDO
1076  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
1077    # ifdef CPL_DEBUG
1078        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
1079  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
1080    
1081  C     Receive u surface stress  C     Receive u ice velocity
1082  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
1083          _BEGIN_MASTER( myThid )
1084          IF ( myworldid .EQ. local_ocean_leader ) THEN
1085           buffsize = Nx*Ny
1086           CALL MPI_RECV(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
1087         &    local_ice_leader,UiceTag,MPI_COMM_WORLD,mpistatus,mpierr)
1088          ENDIF
1089          _END_MASTER( myThid )
1090          CALL SCATTER_2D( xfer_array, local, myThid )
1091        DO bj=1,nSy        DO bj=1,nSy
1092         DO bi=1,nSx         DO bi=1,nSx
1093          DO j=1,sNy          DO j=1,sNy
1094           DO i=1,sNx           DO i=1,sNx
1095            local(i,j,bi,bj) = fu(i,j,bi,bj)            UICE(i,j,bi,bj) = local(i,j,bi,bj)
1096           ENDDO           ENDDO
1097          ENDDO          ENDDO
1098         ENDDO         ENDDO
1099        ENDDO        ENDDO
1100  #else /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1101          CALL PLOT_FIELD_XYRL( local, 'uice', myIter, myThid )
1102    #  endif /* CPL_DEBUG */
1103    # endif /* CPL_COUPLED */
1104    # ifdef CPL_DEBUG
1105          CALL PLOT_FIELD_XYRL( UICE, 'uice', myIter, myThid )
1106    # endif /* CPL_DEBUG */
1107    
1108    C     Receive v ice velocity
1109    # ifdef CPL_COUPLED
1110        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1111        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1112         buffsize = Nx*Ny         buffsize = Nx*Ny
1113         CALL MPI_RECV(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
1114       &    local_ice_leader,UstressTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,ViceTag,MPI_COMM_WORLD,mpistatus,mpierr)
1115        ENDIF        ENDIF
1116        _END_MASTER( myThid )        _END_MASTER( myThid )
1117        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
# Line 885  C     Receive u surface stress Line 1119  C     Receive u surface stress
1119         DO bi=1,nSx         DO bi=1,nSx
1120          DO j=1,sNy          DO j=1,sNy
1121           DO i=1,sNx           DO i=1,sNx
1122            fu(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj) +            VICE(i,j,bi,bj) = local(i,j,bi,bj)
      &                (1.-AREA(i,j,bi,bj)) * fu_tmp(i,j,bi,bj)  
1123           ENDDO           ENDDO
1124          ENDDO          ENDDO
1125         ENDDO         ENDDO
1126        ENDDO        ENDDO
1127  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1128  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'vice', myIter, myThid )
1129        CALL PLOT_FIELD_XYRL( local, 'u stress', myIter, myThid )  #  endif /* CPL_DEBUG */
1130  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1131    # ifdef CPL_DEBUG
1132          CALL PLOT_FIELD_XYRL( VICE, 'vice', myIter, myThid )
1133    # endif /* CPL_DEBUG */
1134    
1135  C     Receive v surface stress  C     Receive u surface stress
1136  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
1137          _BEGIN_MASTER( myThid )
1138          IF ( myworldid .EQ. local_ocean_leader ) THEN
1139           buffsize = Nx*Ny
1140           CALL MPI_RECV(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
1141         &    local_ice_leader,UstressTag,MPI_COMM_WORLD,mpistatus,mpierr)
1142          ENDIF
1143          _END_MASTER( myThid )
1144          CALL SCATTER_2D( xfer_array, local, myThid )
1145        DO bj=1,nSy        DO bj=1,nSy
1146         DO bi=1,nSx         DO bi=1,nSx
1147          DO j=1,sNy          DO j=1,sNy
1148           DO i=1,sNx           DO i=1,sNx
1149            local(i,j,bi,bj) = fv(i,j,bi,bj)            fu(i,j,bi,bj) = AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
1150         &                (1.-AREA(i,j,bi,bj)) * fu   (i,j,bi,bj)
1151           ENDDO           ENDDO
1152          ENDDO          ENDDO
1153         ENDDO         ENDDO
1154        ENDDO        ENDDO
1155  #else /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1156          CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
1157    #  endif /* CPL_DEBUG */
1158    # endif /* CPL_COUPLED */
1159    # ifdef CPL_DEBUG
1160          CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
1161    # endif /* CPL_DEBUG */
1162    
1163    C     Receive v surface stress
1164    # ifdef CPL_COUPLED
1165        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1166        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1167         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 920  C     Receive v surface stress Line 1174  C     Receive v surface stress
1174         DO bi=1,nSx         DO bi=1,nSx
1175          DO j=1,sNy          DO j=1,sNy
1176           DO i=1,sNx           DO i=1,sNx
1177            fv(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj) +            fv(i,j,bi,bj) = AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
1178       &                (1.-AREA(i,j,bi,bj)) * fv_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fv   (i,j,bi,bj)
1179           ENDDO           ENDDO
1180          ENDDO          ENDDO
1181         ENDDO         ENDDO
1182        ENDDO        ENDDO
1183  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1184  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
1185        CALL PLOT_FIELD_XYRL( local, 'v stress', myIter, myThid )  #  endif /* CPL_DEBUG */
1186  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1187    # ifdef CPL_DEBUG
1188          CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
1189    # endif /* CPL_DEBUG */
1190    
1191  C     Receive residual shortwave  C     Receive residual shortwave
1192  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = Qsw(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1193        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1194        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1195         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 955  C     Receive residual shortwave Line 1202  C     Receive residual shortwave
1202         DO bi=1,nSx         DO bi=1,nSx
1203          DO j=1,sNy          DO j=1,sNy
1204           DO i=1,sNx           DO i=1,sNx
1205            Qsw(i,j,bi,bj) = -AREA(i,j,bi,bj) * local(i,j,bi,bj) +            Qsw(i,j,bi,bj) = -AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
1206       &                  (1.-AREA(i,j,bi,bj)) * Qsw_tmp(i,j,bi,bj)       &                  (1.-AREA(i,j,bi,bj)) *   Qsw(i,j,bi,bj)
1207           ENDDO           ENDDO
1208          ENDDO          ENDDO
1209         ENDDO         ENDDO
1210        ENDDO        ENDDO
1211  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1212  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm shortwave', myIter, myThid )
1213        CALL PLOT_FIELD_XYRL( local, 'shortwave', myIter, myThid )  #  endif /* CPL_DEBUG */
1214  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1215    # ifdef CPL_DEBUG
1216          CALL PLOT_FIELD_XYRL( Qsw, 'shortwave', myIter, myThid )
1217    # endif /* CPL_DEBUG */
1218    
1219  C     Receive heat flux  C     Receive heat flux
1220  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = Qnet(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1221        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1222        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1223         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 991  C     Receive heat flux Line 1231  C     Receive heat flux
1231          DO j=1,sNy          DO j=1,sNy
1232           DO i=1,sNx           DO i=1,sNx
1233            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -
1234       &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                   AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
1235       &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(i,j,bi,bj)       &               (1.-AREA(i,j,bi,bj)) *  Qnet(i,j,bi,bj)
1236           ENDDO           ENDDO
1237          ENDDO          ENDDO
1238         ENDDO         ENDDO
1239        ENDDO        ENDDO
1240  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1241  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
1242        CALL PLOT_FIELD_XYRL( local, 'heat flux', myIter, myThid )  #  endif /* CPL_DEBUG */
1243  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1244    # ifdef CPL_DEBUG
1245          CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
1246    # endif /* CPL_DEBUG */
1247    
1248  C     Receive freshwater flux  C     Receive freshwater flux
1249  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = EmPmR(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1250        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1251        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1252         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1026  C     Receive freshwater flux Line 1259  C     Receive freshwater flux
1259         DO bi=1,nSx         DO bi=1,nSx
1260          DO j=1,sNy          DO j=1,sNy
1261           DO i=1,sNx           DO i=1,sNx
1262            EmPmR(i,j,bi,bj) = - AREA(i,j,bi,bj)  * local    (i,j,bi,bj) +            EmPmR(i,j,bi,bj) = - AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
1263       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR_tmp(i,j,bi,bj)       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR(i,j,bi,bj)
1264           ENDDO           ENDDO
1265          ENDDO          ENDDO
1266         ENDDO         ENDDO
1267        ENDDO        ENDDO
1268  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1269  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
1270        CALL PLOT_FIELD_XYRL( local, 'freshwater', myIter, myThid )  #  endif /* CPL_DEBUG */
1271  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1272    # ifdef CPL_DEBUG
1273          CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
1274    # endif /* CPL_DEBUG */
1275    
1276  C     Receive salt flux  C     Receive salt flux
1277  #ifdef CPL_DEBUG  # ifdef CPL_COUPLED
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           local(i,j,bi,bj) = fu(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
1278        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1279        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1280         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1066  C     Receive salt flux Line 1292  C     Receive salt flux
1292          ENDDO          ENDDO
1293         ENDDO         ENDDO
1294        ENDDO        ENDDO
1295  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1296  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1297        CALL PLOT_FIELD_XYRL( local, 'salt flux', myIter, myThid )  #  endif /* CPL_DEBUG */
1298  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1299    # ifdef CPL_DEBUG
1300          CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1301    # endif /* CPL_DEBUG */
1302    
1303  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1304    

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

  ViewVC Help
Powered by ViewVC 1.1.22