/[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.3 by dimitri, Wed Dec 2 23:49:42 2009 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 57  CEOP Line 60  CEOP
60        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)
61        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)
62        _RL     local(1:sNx,1:sNy,nSx,nSy)        _RL     local(1:sNx,1:sNy,nSx,nSy)
63    
64  #ifdef CPL_DEBUG        COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp
65       _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
66        DO bj=1,nSy        _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
67         DO bi=1,nSx        _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
68          DO j=1-OLy,sNy+OLy        _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
69           DO i=1-OLx,sNx+OLx        _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
           ScatArray(i,j,bi,bj) = 0.0 _d 0  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #endif  
70    
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 105  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 118  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 140  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 155  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 162  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 177  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 184  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 208  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 231  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 269  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 276  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 305  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 312  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 341  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 348  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 377  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 384  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 413  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 420  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 432  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 456  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 480  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 487  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 499  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 506  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 518  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 525  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 537  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 544  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 556  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 563  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 575  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 582  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
668          DO bj=1,nSy
669           DO bi=1,nSx
670            DO j=1,sNy
671             DO i=1,sNx
672              local(i,j,bi,bj) = salt(i,j,1,bi,bj)
673             ENDDO
674            ENDDO
675           ENDDO
676          ENDDO
677          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 )
683          IF ( myworldid .EQ. local_ocean_leader ) THEN
684           buffsize = Nx*Ny
685           CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
686         &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
687          ENDIF
688          _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 594  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 601  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 613  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 620  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 645  C     Receive ice area Line 760  C     Receive ice area
760        ENDIF        ENDIF
761        _END_MASTER( myThid )        _END_MASTER( myThid )
762        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
763        DO bj=1,nSy        DO bj=1,nSy
764         DO bi=1,nSx         DO bi=1,nSx
765          DO j=1,sNy          DO j=1,sNy
766           DO i=1,sNx           DO i=1,sNx
767            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            AREA(i,j,bi,bj) = local(i,j,bi,bj)
768           ENDDO           ENDDO
769          ENDDO          ENDDO
770         ENDDO         ENDDO
771        ENDDO        ENDDO
772        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )  # endif /* CPL_COUPLED */
773  #endif  # ifdef CPL_DEBUG
774          CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
775    # endif /* CPL_DEBUG */
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 667  C     Receive ice thickness Line 784  C     Receive ice thickness
784        ENDIF        ENDIF
785        _END_MASTER( myThid )        _END_MASTER( myThid )
786        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
787        DO bj=1,nSy        DO bj=1,nSy
788         DO bi=1,nSx         DO bi=1,nSx
789          DO j=1,sNy          DO j=1,sNy
790           DO i=1,sNx           DO i=1,sNx
791            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HEFF(i,j,bi,bj) = local(i,j,bi,bj)
792           ENDDO           ENDDO
793          ENDDO          ENDDO
794         ENDDO         ENDDO
795        ENDDO        ENDDO
796        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  # endif /* CPL_COUPLED */
797  #endif  # ifdef CPL_DEBUG
798          CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
799    # endif /* CPL_DEBUG */
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 689  C     Receive ice salinity Line 808  C     Receive ice salinity
808        ENDIF        ENDIF
809        _END_MASTER( myThid )        _END_MASTER( myThid )
810        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
811        DO bj=1,nSy        DO bj=1,nSy
812         DO bi=1,nSx         DO bi=1,nSx
813          DO j=1,sNy          DO j=1,sNy
814           DO i=1,sNx           DO i=1,sNx
815            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSALT(i,j,bi,bj) = local(i,j,bi,bj)
816           ENDDO           ENDDO
817          ENDDO          ENDDO
818         ENDDO         ENDDO
819        ENDDO        ENDDO
820        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )  # endif /* CPL_COUPLED */
821  #endif  # ifdef CPL_DEBUG
822          CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
823    # endif /* CPL_DEBUG */
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 711  C     Receive snow thickness Line 832  C     Receive snow thickness
832        ENDIF        ENDIF
833        _END_MASTER( myThid )        _END_MASTER( myThid )
834        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
835        DO bj=1,nSy        DO bj=1,nSy
836         DO bi=1,nSx         DO bi=1,nSx
837          DO j=1,sNy          DO j=1,sNy
838           DO i=1,sNx           DO i=1,sNx
839            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSNOW(i,j,bi,bj) = local(i,j,bi,bj)
840           ENDDO           ENDDO
841          ENDDO          ENDDO
842         ENDDO         ENDDO
843        ENDDO        ENDDO
844        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  # endif /* CPL_COUPLED */
845  #endif  # ifdef CPL_DEBUG
846          CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
847    # endif /* CPL_DEBUG */
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 733  C     Receive u surface stress Line 856  C     Receive u surface stress
856        ENDIF        ENDIF
857        _END_MASTER( myThid )        _END_MASTER( myThid )
858        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
859        DO bj=1,nSy        DO bj=1,nSy
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            ScatArray(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)
865           ENDDO           ENDDO
866          ENDDO          ENDDO
867         ENDDO         ENDDO
868        ENDDO        ENDDO
869        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )  #  ifdef CPL_DEBUG
870  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
871    #  endif /* CPL_DEBUG */
872    # endif /* CPL_COUPLED */
873    # ifdef CPL_DEBUG
874          CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
875    # endif /* CPL_DEBUG */
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 755  C     Receive v surface stress Line 884  C     Receive v surface stress
884        ENDIF        ENDIF
885        _END_MASTER( myThid )        _END_MASTER( myThid )
886        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
887        DO bj=1,nSy        DO bj=1,nSy
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            ScatArray(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)
893           ENDDO           ENDDO
894          ENDDO          ENDDO
895         ENDDO         ENDDO
896        ENDDO        ENDDO
897        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )  #  ifdef CPL_DEBUG
898  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
899    #  endif /* CPL_DEBUG */
900    # endif /* CPL_COUPLED */
901    # ifdef CPL_DEBUG
902          CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
903    # endif /* CPL_DEBUG */
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 777  C     Receive residual shortwave Line 912  C     Receive residual shortwave
912        ENDIF        ENDIF
913        _END_MASTER( myThid )        _END_MASTER( myThid )
914        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
915   #ifdef CPL_DEBUG        DO bj=1,nSy
      DO bj=1,nSy  
916         DO bi=1,nSx         DO bi=1,nSx
917          DO j=1,sNy          DO j=1,sNy
918           DO i=1,sNx           DO i=1,sNx
919            ScatArray(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)
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 799  C     Receive heat flux Line 940  C     Receive heat flux
940        ENDIF        ENDIF
941        _END_MASTER( myThid )        _END_MASTER( myThid )
942        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
943        DO bj=1,nSy        DO bj=1,nSy
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            ScatArray(i,j,bi,bj) = local(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) +
949         &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(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 821  C     Receive freshwater flux Line 969  C     Receive freshwater flux
969        ENDIF        ENDIF
970        _END_MASTER( myThid )        _END_MASTER( myThid )
971        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
972        DO bj=1,nSy        DO bj=1,nSy
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            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            EmPmR(i,j,bi,bj) = - AREA(i,j,bi,bj)  * local    (i,j,bi,bj) +
977         &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR_tmp(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 843  C     Receive salt flux Line 997  C     Receive salt flux
997        ENDIF        ENDIF
998        _END_MASTER( myThid )        _END_MASTER( myThid )
999        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
1000        DO bj=1,nSy        DO bj=1,nSy
1001         DO bi=1,nSx         DO bi=1,nSx
1002          DO j=1,sNy          DO j=1,sNy
1003           DO i=1,sNx           DO i=1,sNx
1004            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            saltFlux(i,j,bi,bj) = - AREA(i,j,bi,bj) * local(i,j,bi,bj)
1005           ENDDO           ENDDO
1006          ENDDO          ENDDO
1007         ENDDO         ENDDO
1008        ENDDO        ENDDO
1009        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )  #  ifdef CPL_DEBUG
1010  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1011    #  endif /* CPL_DEBUG */
1012    # endif /* CPL_COUPLED */
1013    # ifdef CPL_DEBUG
1014          CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1015    # endif /* CPL_DEBUG */
1016    
1017  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1018    

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

  ViewVC Help
Powered by ViewVC 1.1.22