/[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.14 by dimitri, Thu Mar 15 20:02:56 2012 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 30  C     == Global variables == Line 29  C     == Global variables ==
29  #endif  #endif
30  #ifdef ALLOW_SEAICE  #ifdef ALLOW_SEAICE
31  # include "SEAICE_OPTIONS.h"  # include "SEAICE_OPTIONS.h"
32    # include "SEAICE_SIZE.h"
33  # include "SEAICE.h"  # include "SEAICE.h"
34  #endif  #endif
35    
# Line 50  CEOP Line 50  CEOP
50        COMMON /CPL_MPI_ID/        COMMON /CPL_MPI_ID/
51       &        myworldid, local_ocean_leader, local_ice_leader       &        myworldid, local_ocean_leader, local_ice_leader
52        integer myworldid, local_ocean_leader, local_ice_leader        integer myworldid, local_ocean_leader, local_ice_leader
53  #ifdef ALLOW_USE_MPI  # ifdef ALLOW_USE_MPI
54        integer mpistatus(MPI_STATUS_SIZE), mpierr        integer mpistatus(MPI_STATUS_SIZE), mpierr
55  #endif /* ALLOW_USE_MPI */  # endif /* ALLOW_USE_MPI */
56        integer xfer_gridsize(2)        integer xfer_gridsize(2)
57        integer i, j, bi, bj, buffsize, idx        integer i, j, bi, bj, buffsize, idx
58        Real*8  xfer_scalar        Real*8  xfer_scalar
# Line 60  CEOP Line 60  CEOP
60        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)
61        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)
62        _RL     local(1:sNx,1:sNy,nSx,nSy)        _RL     local(1:sNx,1:sNy,nSx,nSy)
63          character*(10) itername
64    
65        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp
66        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
# Line 68  CEOP Line 69  CEOP
69        _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
70        _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
71    
72    # ifdef CPL_DEBUG
73          write(itername,'(i10.10)') myIter
74    # endif /* CPL_DEBUG */
75    
76        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
77    
78  C     Send deltatimestep  C     Send deltatimestep
79         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
80         xfer_scalar = deltat         xfer_scalar = deltat
81         buffsize = 1         buffsize = 1
82  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
83         print*,'MITgcm send TimeInterval', xfer_scalar         print*,'MITgcm send TimeInterval', xfer_scalar
84  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
85    # ifdef CPL_COUPLED
86         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
87          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
88       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)
89         ENDIF         ENDIF
90  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
91         _END_MASTER( myThid )         _END_MASTER( myThid )
92    
93  C     Send grid dimensions (Nx,Ny)  C     Send grid dimensions (Nx,Ny)
# Line 89  C     Send grid dimensions (Nx,Ny) Line 95  C     Send grid dimensions (Nx,Ny)
95         xfer_gridsize(1)=Nx         xfer_gridsize(1)=Nx
96         xfer_gridsize(2)=Ny         xfer_gridsize(2)=Ny
97         buffsize = 2         buffsize = 2
98  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
99         print*,'MITgcm send OceanGridsize', xfer_gridsize         print*,'MITgcm send OceanGridsize', xfer_gridsize
100  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
101    # ifdef CPL_COUPLED
102         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
103          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,
104       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)
105         ENDIF         ENDIF
106  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
107         _END_MASTER( myThid )         _END_MASTER( myThid )
108    
109  C     Send ice area  C     Send ice area
# Line 110  C     Send ice area Line 117  C     Send ice area
117          ENDDO          ENDDO
118         ENDDO         ENDDO
119         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
120  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
121         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
122  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
123    # ifdef CPL_COUPLED
124         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
125         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
126          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 120  C     Send ice area Line 128  C     Send ice area
128       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
129         ENDIF         ENDIF
130         _END_MASTER( myThid )         _END_MASTER( myThid )
131  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
132    
133  C     Send ice thickness  C     Send ice thickness
134         DO bj=1,nSy         DO bj=1,nSy
# Line 133  C     Send ice thickness Line 141  C     Send ice thickness
141          ENDDO          ENDDO
142         ENDDO         ENDDO
143         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
144  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
145         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
146  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
147    # ifdef CPL_COUPLED
148         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
149         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
150          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 143  C     Send ice thickness Line 152  C     Send ice thickness
152       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
153         ENDIF         ENDIF
154         _END_MASTER( myThid )         _END_MASTER( myThid )
155  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
156    
157  C     Send ice salinity  C     Send ice salinity
158         DO bj=1,nSy         DO bj=1,nSy
# Line 156  C     Send ice salinity Line 165  C     Send ice salinity
165          ENDDO          ENDDO
166         ENDDO         ENDDO
167         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
168  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
169         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
170  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
171    # ifdef CPL_COUPLED
172         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
173         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
174          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 166  C     Send ice salinity Line 176  C     Send ice salinity
176       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
177         ENDIF         ENDIF
178         _END_MASTER( myThid )         _END_MASTER( myThid )
179  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
180    
181  C     Send snow thickness  C     Send snow thickness
182         DO bj=1,nSy         DO bj=1,nSy
# Line 179  C     Send snow thickness Line 189  C     Send snow thickness
189          ENDDO          ENDDO
190         ENDDO         ENDDO
191         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
192  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
193         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
194  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
195    # ifdef CPL_COUPLED
196         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
197         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
198          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 189  C     Send snow thickness Line 200  C     Send snow thickness
200       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
201         ENDIF         ENDIF
202         _END_MASTER( myThid )         _END_MASTER( myThid )
203  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
204    
205        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
206    
# Line 197  C     Send ocean model time Line 208  C     Send ocean model time
208        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
209        xfer_scalar = myTime        xfer_scalar = myTime
210        buffsize = 1        buffsize = 1
211  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
212        print*,'MITgcm send OceanTime', xfer_scalar        print*,'MITgcm send OceanTime', xfer_scalar
213  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
214    # ifdef CPL_COUPLED
215        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
216         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
217       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)
218        ENDIF        ENDIF
219  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
220        _END_MASTER( myThid )        _END_MASTER( myThid )
221    
222  C     Send boundary ice area  C     Send boundary ice area
# Line 235  C     Send boundary ice area Line 247  C     Send boundary ice area
247         idx = idx + 1         idx = idx + 1
248         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
249        ENDDO        ENDDO
250  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
251    # ifdef CPL_DEBUG
252        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
253  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'AREAobcs.', itername,
254         &     xfer_bc_tracer, buffsize, myIter, myThid )
255    # endif /* CPL_DEBUG */
256    # ifdef CPL_COUPLED
257        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
258        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
259  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
260         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
261       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
262  cdb    print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
263        ENDIF        ENDIF
264        _END_MASTER( myThid )        _END_MASTER( myThid )
265  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
266    
267  C     Send boundary ice thickness  C     Send boundary ice thickness
268        DO bj=1,nSy        DO bj=1,nSy
# Line 277  C     Send boundary ice thickness Line 292  C     Send boundary ice thickness
292         idx = idx + 1         idx = idx + 1
293         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
294        ENDDO        ENDDO
295  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
296    # ifdef CPL_DEBUG
297        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
298  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HEFFobcs.', itername,
299         &     xfer_bc_tracer, buffsize, myIter, myThid )
300    # endif /* CPL_DEBUG */
301    # ifdef CPL_COUPLED
302        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
303        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
304         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
305       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
306        ENDIF        ENDIF
307        _END_MASTER( myThid )        _END_MASTER( myThid )
308  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
309    
310  C     Send boundary ice salinity  C     Send boundary ice salinity
311        DO bj=1,nSy        DO bj=1,nSy
# Line 317  C     Send boundary ice salinity Line 335  C     Send boundary ice salinity
335         idx = idx + 1         idx = idx + 1
336         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
337        ENDDO        ENDDO
338  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
339    # ifdef CPL_DEBUG
340        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
341  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSALTobcs.', itername,
342         &     xfer_bc_tracer, buffsize, myIter, myThid )
343    # endif /* CPL_DEBUG */
344    # ifdef CPL_COUPLED
345        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
346        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
347         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
348       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
349        ENDIF        ENDIF
350        _END_MASTER( myThid )        _END_MASTER( myThid )
351  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
352    
353  C     Send boundary snow thickness  C     Send boundary snow thickness
354        DO bj=1,nSy        DO bj=1,nSy
# Line 357  C     Send boundary snow thickness Line 378  C     Send boundary snow thickness
378         idx = idx + 1         idx = idx + 1
379         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
380        ENDDO        ENDDO
381  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
382    # ifdef CPL_DEBUG
383        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
384  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSNOWobcs.', itername,
385         &     xfer_bc_tracer, buffsize, myIter, myThid )
386    # endif /* CPL_DEBUG */
387    # ifdef CPL_COUPLED
388        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
389        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
390         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
391       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
392        ENDIF        ENDIF
393        _END_MASTER( myThid )        _END_MASTER( myThid )
394  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
395    
396  C     Send boundary u ice  C     Send boundary u ice
397        DO bj=1,nSy        DO bj=1,nSy
# Line 397  C     Send boundary u ice Line 421  C     Send boundary u ice
421         idx = idx + 1         idx = idx + 1
422         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
423        ENDDO        ENDDO
424  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
425    # ifdef CPL_DEBUG
426        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
427  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'UICEobcs.', itername,
428         &     xfer_bc_veloc, buffsize, myIter, myThid )
429    # endif /* CPL_DEBUG */
430    # ifdef CPL_COUPLED
431        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
432        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
433         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
434       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
435        ENDIF        ENDIF
436        _END_MASTER( myThid )        _END_MASTER( myThid )
437  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
438    
439  C     Send boundary v ice  C     Send boundary v ice
440        DO bj=1,nSy        DO bj=1,nSy
# Line 437  C     Send boundary v ice Line 464  C     Send boundary v ice
464         idx = idx + 1         idx = idx + 1
465         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
466        ENDDO        ENDDO
467  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
468    # ifdef CPL_DEBUG
469        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
470  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'VICEobcs.', itername,
471         &     xfer_bc_veloc, buffsize, myIter, myThid )
472    # endif /* CPL_DEBUG */
473    # ifdef CPL_COUPLED
474        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
475        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
476         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
477       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
478        ENDIF        ENDIF
479        _END_MASTER( myThid )        _END_MASTER( myThid )
480  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
481    
482  C     Send u-wind velocity  C     Send u-wind velocity
483        DO bj=1,nSy        DO bj=1,nSy
# Line 460  C     Send u-wind velocity Line 490  C     Send u-wind velocity
490         ENDDO         ENDDO
491        ENDDO        ENDDO
492        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
493  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
494        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
495  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
496    # ifdef CPL_COUPLED
497        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
498        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
499  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
500         DO j=1,Ny         DO j=1,Ny
501          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
502         ENDDO         ENDDO
503  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
504         buffsize = Nx*Ny         buffsize = Nx*Ny
505         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
506       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
507        ENDIF        ENDIF
508        _END_MASTER( myThid )        _END_MASTER( myThid )
509  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
510    
511  C     Send v-wind velocity  C     Send v-wind velocity
512        DO bj=1,nSy        DO bj=1,nSy
# Line 488  C     Send v-wind velocity Line 519  C     Send v-wind velocity
519         ENDDO         ENDDO
520        ENDDO        ENDDO
521        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
522  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
523        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
524  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
525    # ifdef CPL_COUPLED
526        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
527        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
528  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
529         DO i=1,Nx         DO i=1,Nx
530          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
531         ENDDO         ENDDO
532  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
533         buffsize = Nx*Ny         buffsize = Nx*Ny
534         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
535       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
536        ENDIF        ENDIF
537        _END_MASTER( myThid )        _END_MASTER( myThid )
538  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
539    
540  C     Send downward longwave radiation  C     Send downward longwave radiation
541        DO bj=1,nSy        DO bj=1,nSy
# Line 516  C     Send downward longwave radiation Line 548  C     Send downward longwave radiation
548         ENDDO         ENDDO
549        ENDDO        ENDDO
550        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
551  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
552        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
553  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
554    # ifdef CPL_COUPLED
555        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
556        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
557         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 526  C     Send downward longwave radiation Line 559  C     Send downward longwave radiation
559       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
560        ENDIF        ENDIF
561        _END_MASTER( myThid )        _END_MASTER( myThid )
562  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
563    
564  C     Send downward shortwave radiation  C     Send downward shortwave radiation
565        DO bj=1,nSy        DO bj=1,nSy
# Line 539  C     Send downward shortwave radiation Line 572  C     Send downward shortwave radiation
572         ENDDO         ENDDO
573        ENDDO        ENDDO
574        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
575  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
576        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
577  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
578    # ifdef CPL_COUPLED
579        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
580        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
581         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 549  C     Send downward shortwave radiation Line 583  C     Send downward shortwave radiation
583       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
584        ENDIF        ENDIF
585        _END_MASTER( myThid )        _END_MASTER( myThid )
586  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
587    
588  C     Send air temperature  C     Send air temperature
589        DO bj=1,nSy        DO bj=1,nSy
# Line 562  C     Send air temperature Line 596  C     Send air temperature
596         ENDDO         ENDDO
597        ENDDO        ENDDO
598        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
599  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
600        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
601  #else /* CPL_DEBUG */  # 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
605         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 572  C     Send air temperature Line 607  C     Send air temperature
607       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)
608        ENDIF        ENDIF
609        _END_MASTER( myThid )        _END_MASTER( myThid )
610  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
611    
612  C     Send humidity  C     Send humidity
613        DO bj=1,nSy        DO bj=1,nSy
# Line 585  C     Send humidity Line 620  C     Send humidity
620         ENDDO         ENDDO
621        ENDDO        ENDDO
622        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
623  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
624        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
625  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
626    # ifdef CPL_COUPLED
627        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
628        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
629         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 595  C     Send humidity Line 631  C     Send humidity
631       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
632        ENDIF        ENDIF
633        _END_MASTER( myThid )        _END_MASTER( myThid )
634  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
635    
636  C     Send precipitation  C     Send precipitation
637        DO bj=1,nSy        DO bj=1,nSy
# Line 608  C     Send precipitation Line 644  C     Send precipitation
644         ENDDO         ENDDO
645        ENDDO        ENDDO
646        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
647  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
648        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
649  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
650    # ifdef CPL_COUPLED
651        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
652        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
653         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 618  C     Send precipitation Line 655  C     Send precipitation
655       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
656        ENDIF        ENDIF
657        _END_MASTER( myThid )        _END_MASTER( myThid )
658  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
659    
660  C     Send ocean surface temperature  C     Send ocean surface temperature
661        DO bj=1,nSy        DO bj=1,nSy
# Line 631  C     Send ocean surface temperature Line 668  C     Send ocean surface temperature
668         ENDDO         ENDDO
669        ENDDO        ENDDO
670        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
671  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
672        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
673  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
674    # ifdef CPL_COUPLED
675        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
676        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
677         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 641  C     Send ocean surface temperature Line 679  C     Send ocean surface temperature
679       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
680        ENDIF        ENDIF
681        _END_MASTER( myThid )        _END_MASTER( myThid )
682  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
683    
684  C     Send ocean surface salinity  C     Send ocean surface salinity
685        DO bj=1,nSy        DO bj=1,nSy
# Line 654  C     Send ocean surface salinity Line 692  C     Send ocean surface salinity
692         ENDDO         ENDDO
693        ENDDO        ENDDO
694        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
695  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
696        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
697  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
698    # ifdef CPL_COUPLED
699        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
700        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
701         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 664  C     Send ocean surface salinity Line 703  C     Send ocean surface salinity
703       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
704        ENDIF        ENDIF
705        _END_MASTER( myThid )        _END_MASTER( myThid )
706  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
707    
708  C     Send surface u current  C     Send surface u current
709        DO bj=1,nSy        DO bj=1,nSy
# Line 677  C     Send surface u current Line 716  C     Send surface u current
716         ENDDO         ENDDO
717        ENDDO        ENDDO
718        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
719  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
720        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
721  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
722    # ifdef CPL_COUPLED
723        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
724        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
725         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 687  C     Send surface u current Line 727  C     Send surface u current
727       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
728        ENDIF        ENDIF
729        _END_MASTER( myThid )        _END_MASTER( myThid )
730  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
731    
732  C     Send surface v current  C     Send surface v current
733        DO bj=1,nSy        DO bj=1,nSy
# Line 700  C     Send surface v current Line 740  C     Send surface v current
740         ENDDO         ENDDO
741        ENDDO        ENDDO
742        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
743  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
744        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
745  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
746    # ifdef CPL_COUPLED
747        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
748        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
749         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 710  C     Send surface v current Line 751  C     Send surface v current
751       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
752        ENDIF        ENDIF
753        _END_MASTER( myThid )        _END_MASTER( myThid )
754  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
755    
756  C     Receive ice model time  C     Receive ice model time
757        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
758  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
759         print*,'MITgcm receive IceTime'         print*,'MITgcm receive IceTime'
760  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
761    # ifdef CPL_COUPLED
762        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
763         buffsize = 1         buffsize = 1
764         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
765       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)
766        ENDIF        ENDIF
767  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
768        _END_MASTER( myThid )        _END_MASTER( myThid )
769    
770  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
771  #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 */  
772        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
773        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
774         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 745  C     Receive ice area Line 777  C     Receive ice area
777        ENDIF        ENDIF
778        _END_MASTER( myThid )        _END_MASTER( myThid )
779        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
780        DO bj=1,nSy        DO bj=1,nSy
781         DO bi=1,nSx         DO bi=1,nSx
782          DO j=1,sNy          DO j=1,sNy
# Line 755  C     Receive ice area Line 786  C     Receive ice area
786          ENDDO          ENDDO
787         ENDDO         ENDDO
788        ENDDO        ENDDO
789  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
790    # ifdef CPL_DEBUG
791        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
792  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
793    
794  C     Receive ice thickness  C     Receive ice thickness
795  #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 */  
796        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
797        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
798         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 779  C     Receive ice thickness Line 801  C     Receive ice thickness
801        ENDIF        ENDIF
802        _END_MASTER( myThid )        _END_MASTER( myThid )
803        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
804        DO bj=1,nSy        DO bj=1,nSy
805         DO bi=1,nSx         DO bi=1,nSx
806          DO j=1,sNy          DO j=1,sNy
# Line 789  C     Receive ice thickness Line 810  C     Receive ice thickness
810          ENDDO          ENDDO
811         ENDDO         ENDDO
812        ENDDO        ENDDO
813  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
814    # ifdef CPL_DEBUG
815        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
816  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
817    
818  C     Receive ice salinity  C     Receive ice salinity
819  #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 */  
820        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
821        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
822         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 813  C     Receive ice salinity Line 825  C     Receive ice salinity
825        ENDIF        ENDIF
826        _END_MASTER( myThid )        _END_MASTER( myThid )
827        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
828        DO bj=1,nSy        DO bj=1,nSy
829         DO bi=1,nSx         DO bi=1,nSx
830          DO j=1,sNy          DO j=1,sNy
# Line 823  C     Receive ice salinity Line 834  C     Receive ice salinity
834          ENDDO          ENDDO
835         ENDDO         ENDDO
836        ENDDO        ENDDO
837  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
838    # ifdef CPL_DEBUG
839        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
840  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
841    
842  C     Receive snow thickness  C     Receive snow thickness
843  #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 */  
844        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
845        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
846         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 847  C     Receive snow thickness Line 849  C     Receive snow thickness
849        ENDIF        ENDIF
850        _END_MASTER( myThid )        _END_MASTER( myThid )
851        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
852        DO bj=1,nSy        DO bj=1,nSy
853         DO bi=1,nSx         DO bi=1,nSx
854          DO j=1,sNy          DO j=1,sNy
# Line 857  C     Receive snow thickness Line 858  C     Receive snow thickness
858          ENDDO          ENDDO
859         ENDDO         ENDDO
860        ENDDO        ENDDO
861  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
862    # ifdef CPL_DEBUG
863        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
864  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
865    
866  C     Receive u surface stress  C     Receive u surface stress
867  #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 */  
868        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
869        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
870         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 891  C     Receive u surface stress Line 883  C     Receive u surface stress
883          ENDDO          ENDDO
884         ENDDO         ENDDO
885        ENDDO        ENDDO
886  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
887  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
888        CALL PLOT_FIELD_XYRL( local, 'u stress', myIter, myThid )  #  endif /* CPL_DEBUG */
889  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
890    # ifdef CPL_DEBUG
891          CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
892    # endif /* CPL_DEBUG */
893    
894  C     Receive v surface stress  C     Receive v surface stress
895  #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) = fv(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #else /* CPL_DEBUG */  
896        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
897        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
898         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 926  C     Receive v surface stress Line 911  C     Receive v surface stress
911          ENDDO          ENDDO
912         ENDDO         ENDDO
913        ENDDO        ENDDO
914  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
915  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
916        CALL PLOT_FIELD_XYRL( local, 'v stress', myIter, myThid )  #  endif /* CPL_DEBUG */
917  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
918    # ifdef CPL_DEBUG
919          CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
920    # endif /* CPL_DEBUG */
921    
922  C     Receive residual shortwave  C     Receive residual shortwave
923  #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 */  
924        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
925        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
926         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 961  C     Receive residual shortwave Line 939  C     Receive residual shortwave
939          ENDDO          ENDDO
940         ENDDO         ENDDO
941        ENDDO        ENDDO
942  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
943  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm shortwave', myIter, myThid )
944        CALL PLOT_FIELD_XYRL( local, 'shortwave', myIter, myThid )  #  endif /* CPL_DEBUG */
945  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
946    # ifdef CPL_DEBUG
947          CALL PLOT_FIELD_XYRL( Qsw, 'shortwave', myIter, myThid )
948    # endif /* CPL_DEBUG */
949    
950  C     Receive heat flux  C     Receive heat flux
951  #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 */  
952        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
953        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
954         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 997  C     Receive heat flux Line 968  C     Receive heat flux
968          ENDDO          ENDDO
969         ENDDO         ENDDO
970        ENDDO        ENDDO
971  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
972  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
973        CALL PLOT_FIELD_XYRL( local, 'heat flux', myIter, myThid )  #  endif /* CPL_DEBUG */
974  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
975    # ifdef CPL_DEBUG
976          CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
977    # endif /* CPL_DEBUG */
978    
979  C     Receive freshwater flux  C     Receive freshwater flux
980  #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 */  
981        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
982        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
983         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1032  C     Receive freshwater flux Line 996  C     Receive freshwater flux
996          ENDDO          ENDDO
997         ENDDO         ENDDO
998        ENDDO        ENDDO
999  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1000  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
1001        CALL PLOT_FIELD_XYRL( local, 'freshwater', myIter, myThid )  #  endif /* CPL_DEBUG */
1002  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1003    # ifdef CPL_DEBUG
1004          CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
1005    # endif /* CPL_DEBUG */
1006    
1007  C     Receive salt flux  C     Receive salt flux
1008  #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 */  
1009        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1010        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1011         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1066  C     Receive salt flux Line 1023  C     Receive salt flux
1023          ENDDO          ENDDO
1024         ENDDO         ENDDO
1025        ENDDO        ENDDO
1026  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1027  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1028        CALL PLOT_FIELD_XYRL( local, 'salt flux', myIter, myThid )  #  endif /* CPL_DEBUG */
1029  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1030    # ifdef CPL_DEBUG
1031          CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1032    # endif /* CPL_DEBUG */
1033    
1034  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1035    

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

  ViewVC Help
Powered by ViewVC 1.1.22