/[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.15 by dimitri, Sun Mar 18 01:14:52 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 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 60  CEOP Line 58  CEOP
58        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)
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          character*(10) itername
62    
63        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp  # ifdef CPL_DEBUG
64        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        write(itername,'(i10.10)') myIter
65        _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  # endif /* CPL_DEBUG */
       _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       _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 )         _END_MASTER( myThid )
99    
100  C     Send ice area  C     Send ice area
# Line 110  C     Send ice area Line 108  C     Send ice area
108          ENDDO          ENDDO
109         ENDDO         ENDDO
110         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
111  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
112         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )         CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
113  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
114    # ifdef CPL_COUPLED
115         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
116         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
117          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 120  C     Send ice area Line 119  C     Send ice area
119       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
120         ENDIF         ENDIF
121         _END_MASTER( myThid )         _END_MASTER( myThid )
122  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
123    
124  C     Send ice thickness  C     Send ice thickness
125         DO bj=1,nSy         DO bj=1,nSy
# Line 133  C     Send ice thickness Line 132  C     Send ice thickness
132          ENDDO          ENDDO
133         ENDDO         ENDDO
134         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
135  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
136         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )         CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
137  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
138    # ifdef CPL_COUPLED
139         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
140         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
141          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 143  C     Send ice thickness Line 143  C     Send ice thickness
143       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
144         ENDIF         ENDIF
145         _END_MASTER( myThid )         _END_MASTER( myThid )
146  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
147    
148  C     Send ice salinity  C     Send ice salinity
149         DO bj=1,nSy         DO bj=1,nSy
# Line 156  C     Send ice salinity Line 156  C     Send ice salinity
156          ENDDO          ENDDO
157         ENDDO         ENDDO
158         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
159  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
160         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
161  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
162    # ifdef CPL_COUPLED
163         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
164         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
165          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 166  C     Send ice salinity Line 167  C     Send ice salinity
167       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
168         ENDIF         ENDIF
169         _END_MASTER( myThid )         _END_MASTER( myThid )
170  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
171    
172  C     Send snow thickness  C     Send snow thickness
173         DO bj=1,nSy         DO bj=1,nSy
# Line 179  C     Send snow thickness Line 180  C     Send snow thickness
180          ENDDO          ENDDO
181         ENDDO         ENDDO
182         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
183  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
184         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
185  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
186    # ifdef CPL_COUPLED
187         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
188         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
189          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 189  C     Send snow thickness Line 191  C     Send snow thickness
191       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
192         ENDIF         ENDIF
193         _END_MASTER( myThid )         _END_MASTER( myThid )
194  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
195    
196        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
197    
198    C--   Apply ice open boundary conditions
199    #ifdef ALLOW_OBCS
200          IF ( useOBCS ) THEN
201           CALL OBCS_APPLY_SEAICE( myThid )
202           CALL OBCS_APPLY_UVICE( uice, vice, myThid )
203          ENDIF
204    #endif /* ALLOW_OBCS */
205    
206  C     Send ocean model time  C     Send ocean model time
207        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
208        xfer_scalar = myTime        xfer_scalar = myTime
209        buffsize = 1        buffsize = 1
210  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
211        print*,'MITgcm send OceanTime', xfer_scalar        print*,'MITgcm send OceanTime', xfer_scalar
212  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
213    # ifdef CPL_COUPLED
214        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
215         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
216       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)
217        ENDIF        ENDIF
218  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
219        _END_MASTER( myThid )        _END_MASTER( myThid )
220    
221  C     Send boundary ice area  C     Send boundary ice area
# Line 235  C     Send boundary ice area Line 246  C     Send boundary ice area
246         idx = idx + 1         idx = idx + 1
247         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
248        ENDDO        ENDDO
249  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
250    # ifdef CPL_DEBUG
251        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
252  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'AREAobcs.', itername,
253         &     xfer_bc_tracer, buffsize, myIter, myThid )
254    # endif /* CPL_DEBUG */
255    # ifdef CPL_COUPLED
256        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
257        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
258  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
259         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
260       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
261  cdb    print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
262        ENDIF        ENDIF
263        _END_MASTER( myThid )        _END_MASTER( myThid )
264  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
265    
266  C     Send boundary ice thickness  C     Send boundary ice thickness
267        DO bj=1,nSy        DO bj=1,nSy
# Line 277  C     Send boundary ice thickness Line 291  C     Send boundary ice thickness
291         idx = idx + 1         idx = idx + 1
292         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
293        ENDDO        ENDDO
294  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
295    # ifdef CPL_DEBUG
296        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
297  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HEFFobcs.', itername,
298         &     xfer_bc_tracer, buffsize, myIter, myThid )
299    # endif /* CPL_DEBUG */
300    # ifdef CPL_COUPLED
301        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
302        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
303         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
304       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
305        ENDIF        ENDIF
306        _END_MASTER( myThid )        _END_MASTER( myThid )
307  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
308    
309  C     Send boundary ice salinity  C     Send boundary ice salinity
310        DO bj=1,nSy        DO bj=1,nSy
# Line 317  C     Send boundary ice salinity Line 334  C     Send boundary ice salinity
334         idx = idx + 1         idx = idx + 1
335         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
336        ENDDO        ENDDO
337  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
338    # ifdef CPL_DEBUG
339        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
340  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSALTobcs.', itername,
341         &     xfer_bc_tracer, buffsize, myIter, myThid )
342    # endif /* CPL_DEBUG */
343    # ifdef CPL_COUPLED
344        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
345        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
346         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
347       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
348        ENDIF        ENDIF
349        _END_MASTER( myThid )        _END_MASTER( myThid )
350  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
351    
352  C     Send boundary snow thickness  C     Send boundary snow thickness
353        DO bj=1,nSy        DO bj=1,nSy
# Line 357  C     Send boundary snow thickness Line 377  C     Send boundary snow thickness
377         idx = idx + 1         idx = idx + 1
378         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
379        ENDDO        ENDDO
380  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-4
381    # ifdef CPL_DEBUG
382        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
383  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'HSNOWobcs.', itername,
384         &     xfer_bc_tracer, buffsize, myIter, myThid )
385    # endif /* CPL_DEBUG */
386    # ifdef CPL_COUPLED
387        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
388        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
389         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
390       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
391        ENDIF        ENDIF
392        _END_MASTER( myThid )        _END_MASTER( myThid )
393  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
394    
395  C     Send boundary u ice  C     Send boundary u ice
396        DO bj=1,nSy        DO bj=1,nSy
# Line 397  C     Send boundary u ice Line 420  C     Send boundary u ice
420         idx = idx + 1         idx = idx + 1
421         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
422        ENDDO        ENDDO
423  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
424    # ifdef CPL_DEBUG
425        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
426  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'UICEobcs.', itername,
427         &     xfer_bc_veloc, buffsize, myIter, myThid )
428    # endif /* CPL_DEBUG */
429    # ifdef CPL_COUPLED
430        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
431        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
432         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
433       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
434        ENDIF        ENDIF
435        _END_MASTER( myThid )        _END_MASTER( myThid )
436  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
437    
438  C     Send boundary v ice  C     Send boundary v ice
439        DO bj=1,nSy        DO bj=1,nSy
# Line 437  C     Send boundary v ice Line 463  C     Send boundary v ice
463         idx = idx + 1         idx = idx + 1
464         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
465        ENDDO        ENDDO
466  #ifdef CPL_DEBUG        buffsize = 2*(Nx+Ny)-6
467    # ifdef CPL_DEBUG
468        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )        CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
469  #else /* CPL_DEBUG */        CALL WRITE_GLVEC_RS ( 'VICEobcs.', itername,
470         &     xfer_bc_veloc, buffsize, myIter, myThid )
471    # endif /* CPL_DEBUG */
472    # ifdef CPL_COUPLED
473        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
474        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
475         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
476       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
477        ENDIF        ENDIF
478        _END_MASTER( myThid )        _END_MASTER( myThid )
479  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
480    
481  C     Send u-wind velocity  C     Send u-wind velocity
482        DO bj=1,nSy        DO bj=1,nSy
# Line 460  C     Send u-wind velocity Line 489  C     Send u-wind velocity
489         ENDDO         ENDDO
490        ENDDO        ENDDO
491        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
492  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
493        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
494  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
495    # ifdef CPL_COUPLED
496        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
497        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
498  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
499         DO j=1,Ny         DO j=1,Ny
500          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
501         ENDDO         ENDDO
502  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
503         buffsize = Nx*Ny         buffsize = Nx*Ny
504         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
505       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
506        ENDIF        ENDIF
507        _END_MASTER( myThid )        _END_MASTER( myThid )
508  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
509    
510  C     Send v-wind velocity  C     Send v-wind velocity
511        DO bj=1,nSy        DO bj=1,nSy
# Line 488  C     Send v-wind velocity Line 518  C     Send v-wind velocity
518         ENDDO         ENDDO
519        ENDDO        ENDDO
520        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
521  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
522        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )        CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
523  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
524    # ifdef CPL_COUPLED
525        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
526        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
527  # ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
528         DO i=1,Nx         DO i=1,Nx
529          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
530         ENDDO         ENDDO
531  # endif /* FIX_FOR_EDGE_WINDS */  #  endif /* FIX_FOR_EDGE_WINDS */
532         buffsize = Nx*Ny         buffsize = Nx*Ny
533         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
534       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
535        ENDIF        ENDIF
536        _END_MASTER( myThid )        _END_MASTER( myThid )
537  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
538    
539  C     Send downward longwave radiation  C     Send downward longwave radiation
540        DO bj=1,nSy        DO bj=1,nSy
# Line 516  C     Send downward longwave radiation Line 547  C     Send downward longwave radiation
547         ENDDO         ENDDO
548        ENDDO        ENDDO
549        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
550  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
551        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
552  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
553    # ifdef CPL_COUPLED
554        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
555        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
556         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 526  C     Send downward longwave radiation Line 558  C     Send downward longwave radiation
558       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
559        ENDIF        ENDIF
560        _END_MASTER( myThid )        _END_MASTER( myThid )
561  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
562    
563  C     Send downward shortwave radiation  C     Send downward shortwave radiation
564        DO bj=1,nSy        DO bj=1,nSy
# Line 539  C     Send downward shortwave radiation Line 571  C     Send downward shortwave radiation
571         ENDDO         ENDDO
572        ENDDO        ENDDO
573        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
574  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
575        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )        CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
576  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
577    # ifdef CPL_COUPLED
578        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
579        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
580         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 549  C     Send downward shortwave radiation Line 582  C     Send downward shortwave radiation
582       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
583        ENDIF        ENDIF
584        _END_MASTER( myThid )        _END_MASTER( myThid )
585  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
586    
587  C     Send air temperature  C     Send air temperature
588        DO bj=1,nSy        DO bj=1,nSy
# Line 562  C     Send air temperature Line 595  C     Send air temperature
595         ENDDO         ENDDO
596        ENDDO        ENDDO
597        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
598  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
599        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )        CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
600  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
601    # ifdef CPL_COUPLED
602        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
603        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
604         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 572  C     Send air temperature Line 606  C     Send air temperature
606       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,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 humidity  C     Send humidity
612        DO bj=1,nSy        DO bj=1,nSy
# Line 585  C     Send humidity Line 619  C     Send humidity
619         ENDDO         ENDDO
620        ENDDO        ENDDO
621        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
622  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
623        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )        CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
624  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
625    # ifdef CPL_COUPLED
626        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
627        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
628         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 595  C     Send humidity Line 630  C     Send humidity
630       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
631        ENDIF        ENDIF
632        _END_MASTER( myThid )        _END_MASTER( myThid )
633  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
634    
635  C     Send precipitation  C     Send precipitation
636        DO bj=1,nSy        DO bj=1,nSy
# Line 608  C     Send precipitation Line 643  C     Send precipitation
643         ENDDO         ENDDO
644        ENDDO        ENDDO
645        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
646  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
647        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )        CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
648  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
649    # ifdef CPL_COUPLED
650        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
651        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
652         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 618  C     Send precipitation Line 654  C     Send precipitation
654       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
655        ENDIF        ENDIF
656        _END_MASTER( myThid )        _END_MASTER( myThid )
657  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
658    
659  C     Send ocean surface temperature  C     Send ocean surface temperature
660        DO bj=1,nSy        DO bj=1,nSy
# Line 631  C     Send ocean surface temperature Line 667  C     Send ocean surface temperature
667         ENDDO         ENDDO
668        ENDDO        ENDDO
669        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
670  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
671        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
672  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
673    # ifdef CPL_COUPLED
674        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
675        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
676         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 641  C     Send ocean surface temperature Line 678  C     Send ocean surface temperature
678       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
679        ENDIF        ENDIF
680        _END_MASTER( myThid )        _END_MASTER( myThid )
681  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
682    
683  C     Send ocean surface salinity  C     Send ocean surface salinity
684        DO bj=1,nSy        DO bj=1,nSy
# Line 654  C     Send ocean surface salinity Line 691  C     Send ocean surface salinity
691         ENDDO         ENDDO
692        ENDDO        ENDDO
693        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
694  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
695        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
696  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
697    # ifdef CPL_COUPLED
698        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
699        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
700         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 664  C     Send ocean surface salinity Line 702  C     Send ocean surface salinity
702       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
703        ENDIF        ENDIF
704        _END_MASTER( myThid )        _END_MASTER( myThid )
705  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
706    
707  C     Send surface u current  C     Send surface u current
708        DO bj=1,nSy        DO bj=1,nSy
# Line 677  C     Send surface u current Line 715  C     Send surface u current
715         ENDDO         ENDDO
716        ENDDO        ENDDO
717        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
718  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
719        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
720  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
721    # ifdef CPL_COUPLED
722        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
723        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
724         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 687  C     Send surface u current Line 726  C     Send surface u current
726       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
727        ENDIF        ENDIF
728        _END_MASTER( myThid )        _END_MASTER( myThid )
729  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
730    
731  C     Send surface v current  C     Send surface v current
732        DO bj=1,nSy        DO bj=1,nSy
# Line 700  C     Send surface v current Line 739  C     Send surface v current
739         ENDDO         ENDDO
740        ENDDO        ENDDO
741        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
742  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
743        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )        CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
744  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
745    # ifdef CPL_COUPLED
746        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
747        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
748         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 710  C     Send surface v current Line 750  C     Send surface v current
750       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
751        ENDIF        ENDIF
752        _END_MASTER( myThid )        _END_MASTER( myThid )
753  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
754    
755  C     Receive ice model time  C     Receive ice model time
756        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
757  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
758         print*,'MITgcm receive IceTime'         print*,'MITgcm receive IceTime'
759  #else /* CPL_DEBUG */  # endif /* CPL_DEBUG */
760    # ifdef CPL_COUPLED
761        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
762         buffsize = 1         buffsize = 1
763         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
764       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)
765        ENDIF        ENDIF
766  #endif /* CPL_DEBUG */  # endif /* CPL_COUPLED */
767        _END_MASTER( myThid )        _END_MASTER( myThid )
768    
769  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
770  #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 */  
771        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
772        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
773         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 745  C     Receive ice area Line 776  C     Receive ice area
776        ENDIF        ENDIF
777        _END_MASTER( myThid )        _END_MASTER( myThid )
778        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
779        DO bj=1,nSy        DO bj=1,nSy
780         DO bi=1,nSx         DO bi=1,nSx
781          DO j=1,sNy          DO j=1,sNy
# Line 755  C     Receive ice area Line 785  C     Receive ice area
785          ENDDO          ENDDO
786         ENDDO         ENDDO
787        ENDDO        ENDDO
788  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
789    # ifdef CPL_DEBUG
790        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
791  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
792    
793  C     Receive ice thickness  C     Receive ice thickness
794  #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 */  
795        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
796        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
797         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 779  C     Receive ice thickness Line 800  C     Receive ice thickness
800        ENDIF        ENDIF
801        _END_MASTER( myThid )        _END_MASTER( myThid )
802        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
803        DO bj=1,nSy        DO bj=1,nSy
804         DO bi=1,nSx         DO bi=1,nSx
805          DO j=1,sNy          DO j=1,sNy
# Line 789  C     Receive ice thickness Line 809  C     Receive ice thickness
809          ENDDO          ENDDO
810         ENDDO         ENDDO
811        ENDDO        ENDDO
812  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
813    # ifdef CPL_DEBUG
814        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
815  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
816    
817  C     Receive ice salinity  C     Receive ice salinity
818  #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 */  
819        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
820        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
821         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 813  C     Receive ice salinity Line 824  C     Receive ice salinity
824        ENDIF        ENDIF
825        _END_MASTER( myThid )        _END_MASTER( myThid )
826        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
827        DO bj=1,nSy        DO bj=1,nSy
828         DO bi=1,nSx         DO bi=1,nSx
829          DO j=1,sNy          DO j=1,sNy
# Line 823  C     Receive ice salinity Line 833  C     Receive ice salinity
833          ENDDO          ENDDO
834         ENDDO         ENDDO
835        ENDDO        ENDDO
836  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
837    # ifdef CPL_DEBUG
838        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
839  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
840    
841  C     Receive snow thickness  C     Receive snow thickness
842  #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 */  
843        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
844        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
845         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 847  C     Receive snow thickness Line 848  C     Receive snow thickness
848        ENDIF        ENDIF
849        _END_MASTER( myThid )        _END_MASTER( myThid )
850        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #endif /* CPL_DEBUG */  
851        DO bj=1,nSy        DO bj=1,nSy
852         DO bi=1,nSx         DO bi=1,nSx
853          DO j=1,sNy          DO j=1,sNy
# Line 857  C     Receive snow thickness Line 857  C     Receive snow thickness
857          ENDDO          ENDDO
858         ENDDO         ENDDO
859        ENDDO        ENDDO
860  #ifdef CPL_MONITOR  # endif /* CPL_COUPLED */
861    # ifdef CPL_DEBUG
862        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
863  #endif /* CPL_MONITOR */  # endif /* CPL_DEBUG */
864    
865  C     Receive u surface stress  C     Receive u surface stress
866  #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 */  
867        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
868        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
869         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 885  C     Receive u surface stress Line 876  C     Receive u surface stress
876         DO bi=1,nSx         DO bi=1,nSx
877          DO j=1,sNy          DO j=1,sNy
878           DO i=1,sNx           DO i=1,sNx
879            fu(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj) +            fu(i,j,bi,bj) = AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
880       &                (1.-AREA(i,j,bi,bj)) * fu_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fu   (i,j,bi,bj)
881           ENDDO           ENDDO
882          ENDDO          ENDDO
883         ENDDO         ENDDO
884        ENDDO        ENDDO
885  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
886  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
887        CALL PLOT_FIELD_XYRL( local, 'u stress', myIter, myThid )  #  endif /* CPL_DEBUG */
888  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
889    # ifdef CPL_DEBUG
890          CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
891    # endif /* CPL_DEBUG */
892    
893  C     Receive v surface stress  C     Receive v surface stress
894  #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 */  
895        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
896        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
897         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 920  C     Receive v surface stress Line 904  C     Receive v surface stress
904         DO bi=1,nSx         DO bi=1,nSx
905          DO j=1,sNy          DO j=1,sNy
906           DO i=1,sNx           DO i=1,sNx
907            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) +
908       &                (1.-AREA(i,j,bi,bj)) * fv_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fv   (i,j,bi,bj)
909           ENDDO           ENDDO
910          ENDDO          ENDDO
911         ENDDO         ENDDO
912        ENDDO        ENDDO
913  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
914  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
915        CALL PLOT_FIELD_XYRL( local, 'v stress', myIter, myThid )  #  endif /* CPL_DEBUG */
916  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
917    # ifdef CPL_DEBUG
918          CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
919    # endif /* CPL_DEBUG */
920    
921  C     Receive residual shortwave  C     Receive residual shortwave
922  #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 */  
923        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
924        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
925         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 955  C     Receive residual shortwave Line 932  C     Receive residual shortwave
932         DO bi=1,nSx         DO bi=1,nSx
933          DO j=1,sNy          DO j=1,sNy
934           DO i=1,sNx           DO i=1,sNx
935            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) +
936       &                  (1.-AREA(i,j,bi,bj)) * Qsw_tmp(i,j,bi,bj)       &                  (1.-AREA(i,j,bi,bj)) *   Qsw(i,j,bi,bj)
937           ENDDO           ENDDO
938          ENDDO          ENDDO
939         ENDDO         ENDDO
940        ENDDO        ENDDO
941  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
942  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm shortwave', myIter, myThid )
943        CALL PLOT_FIELD_XYRL( local, 'shortwave', myIter, myThid )  #  endif /* CPL_DEBUG */
944  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
945    # ifdef CPL_DEBUG
946          CALL PLOT_FIELD_XYRL( Qsw, 'shortwave', myIter, myThid )
947    # endif /* CPL_DEBUG */
948    
949  C     Receive heat flux  C     Receive heat flux
950  #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 */  
951        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
952        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
953         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 991  C     Receive heat flux Line 961  C     Receive heat flux
961          DO j=1,sNy          DO j=1,sNy
962           DO i=1,sNx           DO i=1,sNx
963            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -
964       &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                   AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
965       &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(i,j,bi,bj)       &               (1.-AREA(i,j,bi,bj)) *  Qnet(i,j,bi,bj)
966           ENDDO           ENDDO
967          ENDDO          ENDDO
968         ENDDO         ENDDO
969        ENDDO        ENDDO
970  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
971  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
972        CALL PLOT_FIELD_XYRL( local, 'heat flux', myIter, myThid )  #  endif /* CPL_DEBUG */
973  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
974    # ifdef CPL_DEBUG
975          CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
976    # endif /* CPL_DEBUG */
977    
978  C     Receive freshwater flux  C     Receive freshwater flux
979  #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 */  
980        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
981        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
982         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1026  C     Receive freshwater flux Line 989  C     Receive freshwater flux
989         DO bi=1,nSx         DO bi=1,nSx
990          DO j=1,sNy          DO j=1,sNy
991           DO i=1,sNx           DO i=1,sNx
992            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) +
993       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR_tmp(i,j,bi,bj)       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR(i,j,bi,bj)
994           ENDDO           ENDDO
995          ENDDO          ENDDO
996         ENDDO         ENDDO
997        ENDDO        ENDDO
998  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
999  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
1000        CALL PLOT_FIELD_XYRL( local, 'freshwater', myIter, myThid )  #  endif /* CPL_DEBUG */
1001  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1002    # ifdef CPL_DEBUG
1003          CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
1004    # endif /* CPL_DEBUG */
1005    
1006  C     Receive salt flux  C     Receive salt flux
1007  #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 */  
1008        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1009        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1010         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 1066  C     Receive salt flux Line 1022  C     Receive salt flux
1022          ENDDO          ENDDO
1023         ENDDO         ENDDO
1024        ENDDO        ENDDO
1025  #endif /* CPL_DEBUG */  #  ifdef CPL_DEBUG
1026  #ifdef CPL_MONITOR        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1027        CALL PLOT_FIELD_XYRL( local, 'salt flux', myIter, myThid )  #  endif /* CPL_DEBUG */
1028  #endif /* CPL_MONITOR */  # endif /* CPL_COUPLED */
1029    # ifdef CPL_DEBUG
1030          CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1031    # endif /* CPL_DEBUG */
1032    
1033  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1034    

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

  ViewVC Help
Powered by ViewVC 1.1.22