/[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.5 by dimitri, Fri Feb 3 14:08:28 2012 UTC revision 1.13 by dimitri, Wed Mar 14 05:32:10 2012 UTC
# Line 1  Line 1 
 #define CPL_DEBUG  
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 23  C     == Global variables == Line 22  C     == Global variables ==
22  #include "PARAMS.h"  #include "PARAMS.h"
23  #include "DYNVARS.h"  #include "DYNVARS.h"
24  #include "GRID.h"  #include "GRID.h"
25    #include "FFIELDS.h"
26  #ifdef ALLOW_EXF  #ifdef ALLOW_EXF
27  # include "EXF_OPTIONS.h"  # include "EXF_OPTIONS.h"
28  # include "EXF_FIELDS.h"  # include "EXF_FIELDS.h"
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 49  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
54        integer mpistatus(MPI_STATUS_SIZE), mpierr        integer mpistatus(MPI_STATUS_SIZE), mpierr
55    # 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 58  CEOP Line 61  CEOP
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    
64        COMMON /FFIELDS_tmp/        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp
      & fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp, saltFlux_tmp  
65        _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)
66        _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
67        _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
68        _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)
69        _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)
70    
 #ifdef CPL_DEBUG  
       _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1-OLy,sNy+OLy  
          DO i=1-OLx,sNx+OLx  
           ScatArray(i,j,bi,bj) = 0.0 _d 0  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #endif  
   
71        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
72    
73  C     Send deltatimestep  C     Send deltatimestep
74         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
75           xfer_scalar = deltat
76           buffsize = 1
77    # ifdef CPL_DEBUG
78           print*,'MITgcm send TimeInterval', xfer_scalar
79    # endif /* CPL_DEBUG */
80    # ifdef CPL_COUPLED
81         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_scalar = deltat  
         buffsize = 1  
82          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
83       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
         print*,'MITgcm send TimeInterval', xfer_scalar  
 #endif  
84         ENDIF         ENDIF
85    # endif /* CPL_COUPLED */
86         _END_MASTER( myThid )         _END_MASTER( myThid )
87    
88  C     Send grid dimensions (Nx,Ny)  C     Send grid dimensions (Nx,Ny)
89         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
90           xfer_gridsize(1)=Nx
91           xfer_gridsize(2)=Ny
92           buffsize = 2
93    # ifdef CPL_DEBUG
94           print*,'MITgcm send OceanGridsize', xfer_gridsize
95    # endif /* CPL_DEBUG */
96    # ifdef CPL_COUPLED
97         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_gridsize(1)=Nx  
         xfer_gridsize(2)=Ny  
         buffsize = 2  
98          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,
99       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
         print*,'MITgcm send OceanGridsize', xfer_gridsize  
 #endif  
100         ENDIF         ENDIF
101    # endif /* CPL_COUPLED */
102         _END_MASTER( myThid )         _END_MASTER( myThid )
103    
104  C     Send ice area  C     Send ice area
# Line 113  C     Send ice area Line 106  C     Send ice area
106          DO bi=1,nSx          DO bi=1,nSx
107           DO j=1,sNy           DO j=1,sNy
108            DO i=1,sNx            DO i=1,sNx
109             local(i,j,bi,bj) = AREA(i,j,1,bi,bj)             local(i,j,bi,bj) = AREA(i,j,bi,bj)
110            ENDDO            ENDDO
111           ENDDO           ENDDO
112          ENDDO          ENDDO
113         ENDDO         ENDDO
114         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
115    # ifdef CPL_DEBUG
116           CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
117    # endif /* CPL_DEBUG */
118    # ifdef CPL_COUPLED
119         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
120         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
121          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 126  C     Send ice area Line 123  C     Send ice area
123       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
124         ENDIF         ENDIF
125         _END_MASTER( myThid )         _END_MASTER( myThid )
126  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
        CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )  
 #endif  
127    
128  C     Send ice thickness  C     Send ice thickness
129         DO bj=1,nSy         DO bj=1,nSy
130          DO bi=1,nSx          DO bi=1,nSx
131           DO j=1,sNy           DO j=1,sNy
132            DO i=1,sNx            DO i=1,sNx
133             local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)             local(i,j,bi,bj) = HEFF(i,j,bi,bj)
134            ENDDO            ENDDO
135           ENDDO           ENDDO
136          ENDDO          ENDDO
137         ENDDO         ENDDO
138         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
139    # ifdef CPL_DEBUG
140           CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
141    # endif /* CPL_DEBUG */
142    # ifdef CPL_COUPLED
143         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
144         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
145          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 148  C     Send ice thickness Line 147  C     Send ice thickness
147       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
148         ENDIF         ENDIF
149         _END_MASTER( myThid )         _END_MASTER( myThid )
150  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )  
 #endif  
151    
152  C     Send ice salinity  C     Send ice salinity
153         DO bj=1,nSy         DO bj=1,nSy
# Line 163  C     Send ice salinity Line 160  C     Send ice salinity
160          ENDDO          ENDDO
161         ENDDO         ENDDO
162         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
163    # ifdef CPL_DEBUG
164           CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
165    # endif /* CPL_DEBUG */
166    # ifdef CPL_COUPLED
167         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
168         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
169          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 170  C     Send ice salinity Line 171  C     Send ice salinity
171       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
172         ENDIF         ENDIF
173         _END_MASTER( myThid )         _END_MASTER( myThid )
174  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )  
 #endif  
175    
176  C     Send snow thickness  C     Send snow thickness
177         DO bj=1,nSy         DO bj=1,nSy
# Line 185  C     Send snow thickness Line 184  C     Send snow thickness
184          ENDDO          ENDDO
185         ENDDO         ENDDO
186         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
187    # ifdef CPL_DEBUG
188           CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
189    # endif /* CPL_DEBUG */
190    # ifdef CPL_COUPLED
191         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
192         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
193          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 192  C     Send snow thickness Line 195  C     Send snow thickness
195       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
196         ENDIF         ENDIF
197         _END_MASTER( myThid )         _END_MASTER( myThid )
198  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )  
 #endif  
199    
200        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
201    
202  C     Send ocean model time  C     Send ocean model time
203        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
204          xfer_scalar = myTime
205          buffsize = 1
206    # ifdef CPL_DEBUG
207          print*,'MITgcm send OceanTime', xfer_scalar
208    # endif /* CPL_DEBUG */
209    # ifdef CPL_COUPLED
210        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        xfer_scalar = myTime  
        buffsize = 1  
211         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
212       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
        print*,'MITgcm send OceanTime', xfer_scalar  
 #endif  
213        ENDIF        ENDIF
214    # endif /* CPL_COUPLED */
215        _END_MASTER( myThid )        _END_MASTER( myThid )
216    
217  C     Send boundary ice area  C     Send boundary ice area
# Line 216  C     Send boundary ice area Line 219  C     Send boundary ice area
219         DO bi=1,nSx         DO bi=1,nSx
220          DO j=1,sNy          DO j=1,sNy
221           DO i=1,sNx           DO i=1,sNx
222            local(i,j,bi,bj) = AREA(i,j,1,bi,bj)            local(i,j,bi,bj) = AREA(i,j,bi,bj)
223           ENDDO           ENDDO
224          ENDDO          ENDDO
225         ENDDO         ENDDO
# Line 239  C     Send boundary ice area Line 242  C     Send boundary ice area
242         idx = idx + 1         idx = idx + 1
243         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
244        ENDDO        ENDDO
245    # ifdef CPL_DEBUG
246          CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
247    # endif /* CPL_DEBUG */
248    # ifdef CPL_COUPLED
249        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
250        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
251         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
252         print*,'MITgcm is about to send AreaBcTag',buffsize  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
253         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
254       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
255         print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
256        ENDIF        ENDIF
257        _END_MASTER( myThid )        _END_MASTER( myThid )
258    # endif /* CPL_COUPLED */
259    
260  C     Send boundary ice thickness  C     Send boundary ice thickness
261        DO bj=1,nSy        DO bj=1,nSy
262         DO bi=1,nSx         DO bi=1,nSx
263          DO j=1,sNy          DO j=1,sNy
264           DO i=1,sNx           DO i=1,sNx
265            local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)            local(i,j,bi,bj) = HEFF(i,j,bi,bj)
266           ENDDO           ENDDO
267          ENDDO          ENDDO
268         ENDDO         ENDDO
# Line 277  C     Send boundary ice thickness Line 285  C     Send boundary ice thickness
285         idx = idx + 1         idx = idx + 1
286         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
287        ENDDO        ENDDO
288    # ifdef CPL_DEBUG
289          CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
290    # endif /* CPL_DEBUG */
291    # ifdef CPL_COUPLED
292        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
293        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
294         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 284  C     Send boundary ice thickness Line 296  C     Send boundary ice thickness
296       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
297        ENDIF        ENDIF
298        _END_MASTER( myThid )        _END_MASTER( myThid )
299    # endif /* CPL_COUPLED */
300    
301  C     Send boundary ice salinity  C     Send boundary ice salinity
302        DO bj=1,nSy        DO bj=1,nSy
# Line 313  C     Send boundary ice salinity Line 326  C     Send boundary ice salinity
326         idx = idx + 1         idx = idx + 1
327         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
328        ENDDO        ENDDO
329    # ifdef CPL_DEBUG
330          CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
331    # endif /* CPL_DEBUG */
332    # ifdef CPL_COUPLED
333        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
334        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
335         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 320  C     Send boundary ice salinity Line 337  C     Send boundary ice salinity
337       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
338        ENDIF        ENDIF
339        _END_MASTER( myThid )        _END_MASTER( myThid )
340    # endif /* CPL_COUPLED */
341    
342  C     Send boundary snow thickness  C     Send boundary snow thickness
343        DO bj=1,nSy        DO bj=1,nSy
# Line 349  C     Send boundary snow thickness Line 367  C     Send boundary snow thickness
367         idx = idx + 1         idx = idx + 1
368         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
369        ENDDO        ENDDO
370    # ifdef CPL_DEBUG
371          CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
372    # endif /* CPL_DEBUG */
373    # ifdef CPL_COUPLED
374        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
375        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
376         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 356  C     Send boundary snow thickness Line 378  C     Send boundary snow thickness
378       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
379        ENDIF        ENDIF
380        _END_MASTER( myThid )        _END_MASTER( myThid )
381    # endif /* CPL_COUPLED */
382    
383  C     Send boundary u ice  C     Send boundary u ice
384        DO bj=1,nSy        DO bj=1,nSy
385         DO bi=1,nSx         DO bi=1,nSx
386          DO j=1,sNy          DO j=1,sNy
387           DO i=1,sNx           DO i=1,sNx
388            local(i,j,bi,bj) = UICE(i,j,1,bi,bj)            local(i,j,bi,bj) = UICE(i,j,bi,bj)
389           ENDDO           ENDDO
390          ENDDO          ENDDO
391         ENDDO         ENDDO
# Line 385  C     Send boundary u ice Line 408  C     Send boundary u ice
408         idx = idx + 1         idx = idx + 1
409         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
410        ENDDO        ENDDO
411    # ifdef CPL_DEBUG
412          CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
413    # endif /* CPL_DEBUG */
414    # ifdef CPL_COUPLED
415        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
416        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
417         buffsize = 2*(Nx+Ny)-6         buffsize = 2*(Nx+Ny)-6
# Line 392  C     Send boundary u ice Line 419  C     Send boundary u ice
419       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
420        ENDIF        ENDIF
421        _END_MASTER( myThid )        _END_MASTER( myThid )
422    # endif /* CPL_COUPLED */
423    
424  C     Send boundary v ice  C     Send boundary v ice
425        DO bj=1,nSy        DO bj=1,nSy
426         DO bi=1,nSx         DO bi=1,nSx
427          DO j=1,sNy          DO j=1,sNy
428           DO i=1,sNx           DO i=1,sNx
429            local(i,j,bi,bj) = VICE(i,j,1,bi,bj)            local(i,j,bi,bj) = VICE(i,j,bi,bj)
430           ENDDO           ENDDO
431          ENDDO          ENDDO
432         ENDDO         ENDDO
# Line 421  C     Send boundary v ice Line 449  C     Send boundary v ice
449         idx = idx + 1         idx = idx + 1
450         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
451        ENDDO        ENDDO
452    # ifdef CPL_DEBUG
453          CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
454    # endif /* CPL_DEBUG */
455    # ifdef CPL_COUPLED
456        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
457        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
458         buffsize = 2*(Nx+Ny)-6         buffsize = 2*(Nx+Ny)-6
# Line 428  C     Send boundary v ice Line 460  C     Send boundary v ice
460       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
461        ENDIF        ENDIF
462        _END_MASTER( myThid )        _END_MASTER( myThid )
463    # endif /* CPL_COUPLED */
464    
465  C     Send u-wind velocity  C     Send u-wind velocity
466        DO bj=1,nSy        DO bj=1,nSy
# Line 440  C     Send u-wind velocity Line 473  C     Send u-wind velocity
473         ENDDO         ENDDO
474        ENDDO        ENDDO
475        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
476    # ifdef CPL_DEBUG
477          CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
478    # endif /* CPL_DEBUG */
479    # ifdef CPL_COUPLED
480        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
481        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
482  #ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
483         DO j=1,Ny         DO j=1,Ny
484          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
485         ENDDO         ENDDO
486  #endif  #  endif /* FIX_FOR_EDGE_WINDS */
487         buffsize = Nx*Ny         buffsize = Nx*Ny
488         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
489       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
490        ENDIF        ENDIF
491        _END_MASTER( myThid )        _END_MASTER( myThid )
492    # endif /* CPL_COUPLED */
493    
494  C     Send v-wind velocity  C     Send v-wind velocity
495        DO bj=1,nSy        DO bj=1,nSy
# Line 464  C     Send v-wind velocity Line 502  C     Send v-wind velocity
502         ENDDO         ENDDO
503        ENDDO        ENDDO
504        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
505    # ifdef CPL_DEBUG
506          CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
507    # endif /* CPL_DEBUG */
508    # ifdef CPL_COUPLED
509        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
510        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
511  #ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
512         DO i=1,Nx         DO i=1,Nx
513          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
514         ENDDO         ENDDO
515  #endif  #  endif /* FIX_FOR_EDGE_WINDS */
516         buffsize = Nx*Ny         buffsize = Nx*Ny
517         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
518       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
519        ENDIF        ENDIF
520        _END_MASTER( myThid )        _END_MASTER( myThid )
521    # endif /* CPL_COUPLED */
522    
523  C     Send downward longwave radiation  C     Send downward longwave radiation
524        DO bj=1,nSy        DO bj=1,nSy
# Line 488  C     Send downward longwave radiation Line 531  C     Send downward longwave radiation
531         ENDDO         ENDDO
532        ENDDO        ENDDO
533        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
534    # ifdef CPL_DEBUG
535          CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
536    # endif /* CPL_DEBUG */
537    # ifdef CPL_COUPLED
538        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
539        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
540         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 495  C     Send downward longwave radiation Line 542  C     Send downward longwave radiation
542       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
543        ENDIF        ENDIF
544        _END_MASTER( myThid )        _END_MASTER( myThid )
545    # endif /* CPL_COUPLED */
546    
547  C     Send downward shortwave radiation  C     Send downward shortwave radiation
548        DO bj=1,nSy        DO bj=1,nSy
# Line 507  C     Send downward shortwave radiation Line 555  C     Send downward shortwave radiation
555         ENDDO         ENDDO
556        ENDDO        ENDDO
557        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
558    # ifdef CPL_DEBUG
559          CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
560    # endif /* CPL_DEBUG */
561    # ifdef CPL_COUPLED
562        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
563        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
564         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 514  C     Send downward shortwave radiation Line 566  C     Send downward shortwave radiation
566       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
567        ENDIF        ENDIF
568        _END_MASTER( myThid )        _END_MASTER( myThid )
569    # endif /* CPL_COUPLED */
570    
571  C     Send air temperature  C     Send air temperature
572        DO bj=1,nSy        DO bj=1,nSy
# Line 526  C     Send air temperature Line 579  C     Send air temperature
579         ENDDO         ENDDO
580        ENDDO        ENDDO
581        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
582    # ifdef CPL_DEBUG
583          CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
584    # endif /* CPL_DEBUG */
585    # ifdef CPL_COUPLED
586        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
587        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
588         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 533  C     Send air temperature Line 590  C     Send air temperature
590       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)
591        ENDIF        ENDIF
592        _END_MASTER( myThid )        _END_MASTER( myThid )
593    # endif /* CPL_COUPLED */
594    
595  C     Send humidity  C     Send humidity
596        DO bj=1,nSy        DO bj=1,nSy
# Line 545  C     Send humidity Line 603  C     Send humidity
603         ENDDO         ENDDO
604        ENDDO        ENDDO
605        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
606    # ifdef CPL_DEBUG
607          CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
608    # endif /* CPL_DEBUG */
609    # ifdef CPL_COUPLED
610        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
611        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
612         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 552  C     Send humidity Line 614  C     Send humidity
614       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
615        ENDIF        ENDIF
616        _END_MASTER( myThid )        _END_MASTER( myThid )
617    # endif /* CPL_COUPLED */
618    
619  C     Send precipitation  C     Send precipitation
620        DO bj=1,nSy        DO bj=1,nSy
# Line 564  C     Send precipitation Line 627  C     Send precipitation
627         ENDDO         ENDDO
628        ENDDO        ENDDO
629        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
630    # ifdef CPL_DEBUG
631          CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
632    # endif /* CPL_DEBUG */
633    # ifdef CPL_COUPLED
634        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
635        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
636         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 571  C     Send precipitation Line 638  C     Send precipitation
638       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
639        ENDIF        ENDIF
640        _END_MASTER( myThid )        _END_MASTER( myThid )
641    # endif /* CPL_COUPLED */
642    
643  C     Send ocean surface temperature  C     Send ocean surface temperature
644        DO bj=1,nSy        DO bj=1,nSy
# Line 583  C     Send ocean surface temperature Line 651  C     Send ocean surface temperature
651         ENDDO         ENDDO
652        ENDDO        ENDDO
653        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
654    # ifdef CPL_DEBUG
655          CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
656    # endif /* CPL_DEBUG */
657    # ifdef CPL_COUPLED
658        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
659        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
660         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 590  C     Send ocean surface temperature Line 662  C     Send ocean surface temperature
662       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
663        ENDIF        ENDIF
664        _END_MASTER( myThid )        _END_MASTER( myThid )
665    # endif /* CPL_COUPLED */
666    
667  C     Send ocean surface salinity  C     Send ocean surface salinity
668        DO bj=1,nSy        DO bj=1,nSy
# Line 602  C     Send ocean surface salinity Line 675  C     Send ocean surface salinity
675         ENDDO         ENDDO
676        ENDDO        ENDDO
677        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
678    # ifdef CPL_DEBUG
679          CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
680    # endif /* CPL_DEBUG */
681    # ifdef CPL_COUPLED
682        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
683        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
684         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 609  C     Send ocean surface salinity Line 686  C     Send ocean surface salinity
686       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
687        ENDIF        ENDIF
688        _END_MASTER( myThid )        _END_MASTER( myThid )
689    # endif /* CPL_COUPLED */
690    
691  C     Send surface u current  C     Send surface u current
692        DO bj=1,nSy        DO bj=1,nSy
# Line 621  C     Send surface u current Line 699  C     Send surface u current
699         ENDDO         ENDDO
700        ENDDO        ENDDO
701        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
702    # ifdef CPL_DEBUG
703          CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
704    # endif /* CPL_DEBUG */
705    # ifdef CPL_COUPLED
706        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
707        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
708         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 628  C     Send surface u current Line 710  C     Send surface u current
710       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
711        ENDIF        ENDIF
712        _END_MASTER( myThid )        _END_MASTER( myThid )
713    # endif /* CPL_COUPLED */
714    
715  C     Send surface v current  C     Send surface v current
716        DO bj=1,nSy        DO bj=1,nSy
# Line 640  C     Send surface v current Line 723  C     Send surface v current
723         ENDDO         ENDDO
724        ENDDO        ENDDO
725        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
726    # ifdef CPL_DEBUG
727          CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
728    # endif /* CPL_DEBUG */
729    # ifdef CPL_COUPLED
730        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
731        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
732         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 647  C     Send surface v current Line 734  C     Send surface v current
734       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
735        ENDIF        ENDIF
736        _END_MASTER( myThid )        _END_MASTER( myThid )
737  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )  
 #endif  
738    
739  C     Receive ice model time  C     Receive ice model time
740        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
741    # ifdef CPL_DEBUG
742           print*,'MITgcm receive IceTime'
743    # endif /* CPL_DEBUG */
744    # ifdef CPL_COUPLED
745        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
746         buffsize = 1         buffsize = 1
747         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
748       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)
 #ifdef CPL_DEBUG  
        print*,'MITgcm receive IceTime', xfer_scalar  
 #endif  
749        ENDIF        ENDIF
750    # endif /* CPL_COUPLED */
751        _END_MASTER( myThid )        _END_MASTER( myThid )
752    
753  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
754    # ifdef CPL_COUPLED
755        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
756        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
757         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 681  C     Receive ice area Line 769  C     Receive ice area
769          ENDDO          ENDDO
770         ENDDO         ENDDO
771        ENDDO        ENDDO
772        # endif /* CPL_COUPLED */
773  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
774        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
775         DO bi=1,nSx  # endif /* CPL_DEBUG */
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )  
 #endif  
776    
777  C     Receive ice thickness  C     Receive ice thickness
778    # ifdef CPL_COUPLED
779        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
780        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
781         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 713  C     Receive ice thickness Line 793  C     Receive ice thickness
793          ENDDO          ENDDO
794         ENDDO         ENDDO
795        ENDDO        ENDDO
796  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
797        DO bj=1,nSy  # ifdef CPL_DEBUG
798         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
799          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  
 #endif  
800    
801  C     Receive ice salinity  C     Receive ice salinity
802    # ifdef CPL_COUPLED
803        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
804        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
805         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 744  C     Receive ice salinity Line 817  C     Receive ice salinity
817          ENDDO          ENDDO
818         ENDDO         ENDDO
819        ENDDO        ENDDO
820  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
821        DO bj=1,nSy  # ifdef CPL_DEBUG
822         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
823          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )  
 #endif  
824    
825  C     Receive snow thickness  C     Receive snow thickness
826    # ifdef CPL_COUPLED
827        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
828        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
829         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 775  C     Receive snow thickness Line 841  C     Receive snow thickness
841          ENDDO          ENDDO
842         ENDDO         ENDDO
843        ENDDO        ENDDO
844  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
845        DO bj=1,nSy  # ifdef CPL_DEBUG
846         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
847          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  
 #endif  
848    
849  C     Receive u surface stress  C     Receive u surface stress
850    # ifdef CPL_COUPLED
851        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
852        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
853         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 801  C     Receive u surface stress Line 860  C     Receive u surface stress
860         DO bi=1,nSx         DO bi=1,nSx
861          DO j=1,sNy          DO j=1,sNy
862           DO i=1,sNx           DO i=1,sNx
863            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) +
864       &                (1.-AREA(i,j,bi,bj) * fu_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fu_tmp(i,j,bi,bj)
865           ENDDO           ENDDO
866          ENDDO          ENDDO
867         ENDDO         ENDDO
868        ENDDO        ENDDO
869  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
870        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
871         DO bi=1,nSx  #  endif /* CPL_DEBUG */
872          DO j=1,sNy  # endif /* CPL_COUPLED */
873           DO i=1,sNx  # ifdef CPL_DEBUG
874            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
875           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )  
 #endif  
876    
877  C     Receive v surface stress  C     Receive v surface stress
878    # ifdef CPL_COUPLED
879        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
880        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
881         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 833  C     Receive v surface stress Line 888  C     Receive v surface stress
888         DO bi=1,nSx         DO bi=1,nSx
889          DO j=1,sNy          DO j=1,sNy
890           DO i=1,sNx           DO i=1,sNx
891            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) +
892       &                (1.-AREA(i,j,bi,bj) * fv_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fv_tmp(i,j,bi,bj)
893           ENDDO           ENDDO
894          ENDDO          ENDDO
895         ENDDO         ENDDO
896        ENDDO        ENDDO
897  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
898        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
899         DO bi=1,nSx  #  endif /* CPL_DEBUG */
900          DO j=1,sNy  # endif /* CPL_COUPLED */
901           DO i=1,sNx  # ifdef CPL_DEBUG
902            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
903           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )  
 #endif  
904    
905  C     Receive residual shortwave  C     Receive residual shortwave
906    # ifdef CPL_COUPLED
907        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
908        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
909         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 866  C     Receive residual shortwave Line 917  C     Receive residual shortwave
917          DO j=1,sNy          DO j=1,sNy
918           DO i=1,sNx           DO i=1,sNx
919            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) +
920       &                  (1.-AREA(i,j,bi,bj) * Qsw_tmp(i,j,bi,bj)       &                  (1.-AREA(i,j,bi,bj)) * Qsw_tmp(i,j,bi,bj)
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #ifdef CPL_DEBUG  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
921           ENDDO           ENDDO
922          ENDDO          ENDDO
923         ENDDO         ENDDO
924        ENDDO        ENDDO
925        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )  #  ifdef CPL_DEBUG
926  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm shortwave', myIter, myThid )
927    #  endif /* CPL_DEBUG */
928    # endif /* CPL_COUPLED */
929    # ifdef CPL_DEBUG
930          CALL PLOT_FIELD_XYRL( Qsw, 'shortwave', myIter, myThid )
931    # endif /* CPL_DEBUG */
932    
933  C     Receive heat flux  C     Receive heat flux
934    # ifdef CPL_COUPLED
935        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
936        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
937         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 897  C     Receive heat flux Line 944  C     Receive heat flux
944         DO bi=1,nSx         DO bi=1,nSx
945          DO j=1,sNy          DO j=1,sNy
946           DO i=1,sNx           DO i=1,sNx
947            fv(i,j,bi,bj) = Qsw(i,j,bi,bj) -            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -
948       &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +
949       &               (1.-AREA(i,j,bi,bj) * Qnet_tmp(i,j,bi,bj)       &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(i,j,bi,bj)
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #ifdef CPL_DEBUG  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
950           ENDDO           ENDDO
951          ENDDO          ENDDO
952         ENDDO         ENDDO
953        ENDDO        ENDDO
954        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )  #  ifdef CPL_DEBUG
955  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
956    #  endif /* CPL_DEBUG */
957    # endif /* CPL_COUPLED */
958    # ifdef CPL_DEBUG
959          CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
960    # endif /* CPL_DEBUG */
961    
962  C     Receive freshwater flux  C     Receive freshwater flux
963    # ifdef CPL_COUPLED
964        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
965        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
966         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 930  C     Receive freshwater flux Line 973  C     Receive freshwater flux
973         DO bi=1,nSx         DO bi=1,nSx
974          DO j=1,sNy          DO j=1,sNy
975           DO i=1,sNx           DO i=1,sNx
976            EmPmR(i,j,bi,bj) = - rhoConstFresh *            EmPmR(i,j,bi,bj) = - AREA(i,j,bi,bj)  * local    (i,j,bi,bj) +
977       &                    AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR_tmp(i,j,bi,bj)
      &                (1.-AREA(i,j,bi,bj) * EmPmR_tmp(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #ifdef CPL_DEBUG  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
978           ENDDO           ENDDO
979          ENDDO          ENDDO
980         ENDDO         ENDDO
981        ENDDO        ENDDO
982        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )  #  ifdef CPL_DEBUG
983  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
984    #  endif /* CPL_DEBUG */
985    # endif /* CPL_COUPLED */
986    # ifdef CPL_DEBUG
987          CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
988    # endif /* CPL_DEBUG */
989    
990  C     Receive salt flux  C     Receive salt flux
991    # ifdef CPL_COUPLED
992        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
993        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
994         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 968  C     Receive salt flux Line 1006  C     Receive salt flux
1006          ENDDO          ENDDO
1007         ENDDO         ENDDO
1008        ENDDO        ENDDO
1009  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
1010        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1011         DO bi=1,nSx  #  endif /* CPL_DEBUG */
1012          DO j=1,sNy  # endif /* CPL_COUPLED */
1013           DO i=1,sNx  # ifdef CPL_DEBUG
1014            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1015           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )  
 #endif  
1016    
1017  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1018    

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

  ViewVC Help
Powered by ViewVC 1.1.22