/[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.4 by dimitri, Fri Dec 4 19:39:27 2009 UTC revision 1.12 by dimitri, Thu Mar 8 21:52:27 2012 UTC
# Line 1  Line 1 
1  #define CPL_DEBUG  #define CPL_MONITOR
2  #define FIX_FOR_EDGE_WINDS  #define FIX_FOR_EDGE_WINDS
3  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
# Line 23  C     == Global variables == Line 23  C     == Global variables ==
23  #include "PARAMS.h"  #include "PARAMS.h"
24  #include "DYNVARS.h"  #include "DYNVARS.h"
25  #include "GRID.h"  #include "GRID.h"
26    #include "FFIELDS.h"
27  #ifdef ALLOW_EXF  #ifdef ALLOW_EXF
28  # include "EXF_OPTIONS.h"  # include "EXF_OPTIONS.h"
29  # include "EXF_FIELDS.h"  # include "EXF_FIELDS.h"
# 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    #else /* CPL_DEBUG */
80         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_scalar = deltat  
         buffsize = 1  
81          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
82       &     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  
83         ENDIF         ENDIF
84    #endif /* CPL_DEBUG */
85         _END_MASTER( myThid )         _END_MASTER( myThid )
86    
87  C     Send grid dimensions (Nx,Ny)  C     Send grid dimensions (Nx,Ny)
88         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
89           xfer_gridsize(1)=Nx
90           xfer_gridsize(2)=Ny
91           buffsize = 2
92    #ifdef CPL_DEBUG
93           print*,'MITgcm send OceanGridsize', xfer_gridsize
94    #else /* CPL_DEBUG */
95         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_gridsize(1)=Nx  
         xfer_gridsize(2)=Ny  
         buffsize = 2  
96          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,
97       &     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  
98         ENDIF         ENDIF
99    #endif /* CPL_DEBUG */
100         _END_MASTER( myThid )         _END_MASTER( myThid )
101    
102  C     Send ice area  C     Send ice area
# Line 105  C     Send ice area Line 104  C     Send ice area
104          DO bi=1,nSx          DO bi=1,nSx
105           DO j=1,sNy           DO j=1,sNy
106            DO i=1,sNx            DO i=1,sNx
107             local(i,j,bi,bj) = AREA(i,j,1,bi,bj)             local(i,j,bi,bj) = AREA(i,j,bi,bj)
108            ENDDO            ENDDO
109           ENDDO           ENDDO
110          ENDDO          ENDDO
111         ENDDO         ENDDO
112         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
113    #ifdef CPL_DEBUG
114           CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
115    #else /* CPL_DEBUG */
116         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
117         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
118          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 118  C     Send ice area Line 120  C     Send ice area
120       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
121         ENDIF         ENDIF
122         _END_MASTER( myThid )         _END_MASTER( myThid )
123  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
        CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )  
 #endif  
124    
125  C     Send ice thickness  C     Send ice thickness
126         DO bj=1,nSy         DO bj=1,nSy
127          DO bi=1,nSx          DO bi=1,nSx
128           DO j=1,sNy           DO j=1,sNy
129            DO i=1,sNx            DO i=1,sNx
130             local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)             local(i,j,bi,bj) = HEFF(i,j,bi,bj)
131            ENDDO            ENDDO
132           ENDDO           ENDDO
133          ENDDO          ENDDO
134         ENDDO         ENDDO
135         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
136    #ifdef CPL_DEBUG
137           CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
138    #else /* CPL_DEBUG */
139         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
140         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
141          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 140  C     Send ice thickness Line 143  C     Send ice thickness
143       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
144         ENDIF         ENDIF
145         _END_MASTER( myThid )         _END_MASTER( myThid )
146  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
        CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )  
 #endif  
147    
148  C     Send ice salinity  C     Send ice salinity
149         DO bj=1,nSy         DO bj=1,nSy
# Line 155  C     Send ice salinity Line 156  C     Send ice salinity
156          ENDDO          ENDDO
157         ENDDO         ENDDO
158         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
159    #ifdef CPL_DEBUG
160           CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
161    #else /* CPL_DEBUG */
162         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
163         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
164          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 162  C     Send ice salinity Line 166  C     Send ice salinity
166       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
167         ENDIF         ENDIF
168         _END_MASTER( myThid )         _END_MASTER( myThid )
169  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )  
 #endif  
170    
171  C     Send snow thickness  C     Send snow thickness
172         DO bj=1,nSy         DO bj=1,nSy
# Line 177  C     Send snow thickness Line 179  C     Send snow thickness
179          ENDDO          ENDDO
180         ENDDO         ENDDO
181         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
182    #ifdef CPL_DEBUG
183           CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
184    #else /* CPL_DEBUG */
185         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
186         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
187          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 184  C     Send snow thickness Line 189  C     Send snow thickness
189       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
190         ENDIF         ENDIF
191         _END_MASTER( myThid )         _END_MASTER( myThid )
192  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )  
 #endif  
193    
194        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
195    
196  C     Send ocean model time  C     Send ocean model time
197        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
198          xfer_scalar = myTime
199          buffsize = 1
200    #ifdef CPL_DEBUG
201          print*,'MITgcm send OceanTime', xfer_scalar
202    #else /* CPL_DEBUG */
203        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        xfer_scalar = myTime  
        buffsize = 1  
204         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
205       &    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  
206        ENDIF        ENDIF
207    #endif /* CPL_DEBUG */
208        _END_MASTER( myThid )        _END_MASTER( myThid )
209    
210  C     Send boundary ice area  C     Send boundary ice area
# Line 208  C     Send boundary ice area Line 212  C     Send boundary ice area
212         DO bi=1,nSx         DO bi=1,nSx
213          DO j=1,sNy          DO j=1,sNy
214           DO i=1,sNx           DO i=1,sNx
215            local(i,j,bi,bj) = AREA(i,j,1,bi,bj)            local(i,j,bi,bj) = AREA(i,j,bi,bj)
216           ENDDO           ENDDO
217          ENDDO          ENDDO
218         ENDDO         ENDDO
# Line 231  C     Send boundary ice area Line 235  C     Send boundary ice area
235         idx = idx + 1         idx = idx + 1
236         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
237        ENDDO        ENDDO
238    #ifdef CPL_DEBUG
239          CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
240    #else /* CPL_DEBUG */
241        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
242        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
243         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
244         print*,'MITgcm is about to send AreaBcTag',buffsize  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
245         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
246       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
247         print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
248        ENDIF        ENDIF
249        _END_MASTER( myThid )        _END_MASTER( myThid )
250    #endif /* CPL_DEBUG */
251    
252  C     Send boundary ice thickness  C     Send boundary ice thickness
253        DO bj=1,nSy        DO bj=1,nSy
254         DO bi=1,nSx         DO bi=1,nSx
255          DO j=1,sNy          DO j=1,sNy
256           DO i=1,sNx           DO i=1,sNx
257            local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)            local(i,j,bi,bj) = HEFF(i,j,bi,bj)
258           ENDDO           ENDDO
259          ENDDO          ENDDO
260         ENDDO         ENDDO
# Line 269  C     Send boundary ice thickness Line 277  C     Send boundary ice thickness
277         idx = idx + 1         idx = idx + 1
278         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
279        ENDDO        ENDDO
280    #ifdef CPL_DEBUG
281          CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
282    #else /* CPL_DEBUG */
283        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
284        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
285         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 276  C     Send boundary ice thickness Line 287  C     Send boundary ice thickness
287       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
288        ENDIF        ENDIF
289        _END_MASTER( myThid )        _END_MASTER( myThid )
290    #endif /* CPL_DEBUG */
291    
292  C     Send boundary ice salinity  C     Send boundary ice salinity
293        DO bj=1,nSy        DO bj=1,nSy
# Line 305  C     Send boundary ice salinity Line 317  C     Send boundary ice salinity
317         idx = idx + 1         idx = idx + 1
318         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
319        ENDDO        ENDDO
320    #ifdef CPL_DEBUG
321          CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
322    #else /* CPL_DEBUG */
323        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
324        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
325         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 312  C     Send boundary ice salinity Line 327  C     Send boundary ice salinity
327       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
328        ENDIF        ENDIF
329        _END_MASTER( myThid )        _END_MASTER( myThid )
330    #endif /* CPL_DEBUG */
331    
332  C     Send boundary snow thickness  C     Send boundary snow thickness
333        DO bj=1,nSy        DO bj=1,nSy
# Line 341  C     Send boundary snow thickness Line 357  C     Send boundary snow thickness
357         idx = idx + 1         idx = idx + 1
358         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
359        ENDDO        ENDDO
360    #ifdef CPL_DEBUG
361          CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
362    #else /* CPL_DEBUG */
363        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
364        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
365         buffsize = 2*(Nx+Ny)-4         buffsize = 2*(Nx+Ny)-4
# Line 348  C     Send boundary snow thickness Line 367  C     Send boundary snow thickness
367       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
368        ENDIF        ENDIF
369        _END_MASTER( myThid )        _END_MASTER( myThid )
370    #endif /* CPL_DEBUG */
371    
372  C     Send boundary u ice  C     Send boundary u ice
373        DO bj=1,nSy        DO bj=1,nSy
374         DO bi=1,nSx         DO bi=1,nSx
375          DO j=1,sNy          DO j=1,sNy
376           DO i=1,sNx           DO i=1,sNx
377            local(i,j,bi,bj) = UICE(i,j,1,bi,bj)            local(i,j,bi,bj) = UICE(i,j,bi,bj)
378           ENDDO           ENDDO
379          ENDDO          ENDDO
380         ENDDO         ENDDO
# Line 377  C     Send boundary u ice Line 397  C     Send boundary u ice
397         idx = idx + 1         idx = idx + 1
398         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
399        ENDDO        ENDDO
400    #ifdef CPL_DEBUG
401          CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
402    #else /* CPL_DEBUG */
403        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
404        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
405         buffsize = 2*(Nx+Ny)-6         buffsize = 2*(Nx+Ny)-6
# Line 384  C     Send boundary u ice Line 407  C     Send boundary u ice
407       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
408        ENDIF        ENDIF
409        _END_MASTER( myThid )        _END_MASTER( myThid )
410    #endif /* CPL_DEBUG */
411    
412  C     Send boundary v ice  C     Send boundary v ice
413        DO bj=1,nSy        DO bj=1,nSy
414         DO bi=1,nSx         DO bi=1,nSx
415          DO j=1,sNy          DO j=1,sNy
416           DO i=1,sNx           DO i=1,sNx
417            local(i,j,bi,bj) = VICE(i,j,1,bi,bj)            local(i,j,bi,bj) = VICE(i,j,bi,bj)
418           ENDDO           ENDDO
419          ENDDO          ENDDO
420         ENDDO         ENDDO
# Line 413  C     Send boundary v ice Line 437  C     Send boundary v ice
437         idx = idx + 1         idx = idx + 1
438         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
439        ENDDO        ENDDO
440    #ifdef CPL_DEBUG
441          CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
442    #else /* CPL_DEBUG */
443        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
444        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
445         buffsize = 2*(Nx+Ny)-6         buffsize = 2*(Nx+Ny)-6
# Line 420  C     Send boundary v ice Line 447  C     Send boundary v ice
447       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
448        ENDIF        ENDIF
449        _END_MASTER( myThid )        _END_MASTER( myThid )
450    #endif /* CPL_DEBUG */
451    
452  C     Send u-wind velocity  C     Send u-wind velocity
453        DO bj=1,nSy        DO bj=1,nSy
# Line 432  C     Send u-wind velocity Line 460  C     Send u-wind velocity
460         ENDDO         ENDDO
461        ENDDO        ENDDO
462        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
463    #ifdef CPL_DEBUG
464          CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
465    #else /* CPL_DEBUG */
466        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
467        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
468  #ifdef FIX_FOR_EDGE_WINDS  # ifdef FIX_FOR_EDGE_WINDS
469         DO j=1,Ny         DO j=1,Ny
470          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
471         ENDDO         ENDDO
472  #endif  # endif /* FIX_FOR_EDGE_WINDS */
473         buffsize = Nx*Ny         buffsize = Nx*Ny
474         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
475       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
476        ENDIF        ENDIF
477        _END_MASTER( myThid )        _END_MASTER( myThid )
478    #endif /* CPL_DEBUG */
479    
480  C     Send v-wind velocity  C     Send v-wind velocity
481        DO bj=1,nSy        DO bj=1,nSy
# Line 456  C     Send v-wind velocity Line 488  C     Send v-wind velocity
488         ENDDO         ENDDO
489        ENDDO        ENDDO
490        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
491    #ifdef CPL_DEBUG
492          CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
493    #else /* CPL_DEBUG */
494        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
495        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
496  #ifdef FIX_FOR_EDGE_WINDS  # ifdef FIX_FOR_EDGE_WINDS
497         DO i=1,Nx         DO i=1,Nx
498          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
499         ENDDO         ENDDO
500  #endif  # endif /* FIX_FOR_EDGE_WINDS */
501         buffsize = Nx*Ny         buffsize = Nx*Ny
502         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
503       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
504        ENDIF        ENDIF
505        _END_MASTER( myThid )        _END_MASTER( myThid )
506    #endif /* CPL_DEBUG */
507    
508  C     Send downward longwave radiation  C     Send downward longwave radiation
509        DO bj=1,nSy        DO bj=1,nSy
# Line 480  C     Send downward longwave radiation Line 516  C     Send downward longwave radiation
516         ENDDO         ENDDO
517        ENDDO        ENDDO
518        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
519    #ifdef CPL_DEBUG
520          CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
521    #else /* CPL_DEBUG */
522        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
523        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
524         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 487  C     Send downward longwave radiation Line 526  C     Send downward longwave radiation
526       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
527        ENDIF        ENDIF
528        _END_MASTER( myThid )        _END_MASTER( myThid )
529    #endif /* CPL_DEBUG */
530    
531  C     Send downward shortwave radiation  C     Send downward shortwave radiation
532        DO bj=1,nSy        DO bj=1,nSy
# Line 499  C     Send downward shortwave radiation Line 539  C     Send downward shortwave radiation
539         ENDDO         ENDDO
540        ENDDO        ENDDO
541        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
542    #ifdef CPL_DEBUG
543          CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
544    #else /* CPL_DEBUG */
545        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
546        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
547         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 506  C     Send downward shortwave radiation Line 549  C     Send downward shortwave radiation
549       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
550        ENDIF        ENDIF
551        _END_MASTER( myThid )        _END_MASTER( myThid )
552    #endif /* CPL_DEBUG */
553    
554  C     Send air temperature  C     Send air temperature
555        DO bj=1,nSy        DO bj=1,nSy
# Line 518  C     Send air temperature Line 562  C     Send air temperature
562         ENDDO         ENDDO
563        ENDDO        ENDDO
564        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
565    #ifdef CPL_DEBUG
566          CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
567    #else /* CPL_DEBUG */
568        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
569        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
570         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 525  C     Send air temperature Line 572  C     Send air temperature
572       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)
573        ENDIF        ENDIF
574        _END_MASTER( myThid )        _END_MASTER( myThid )
575    #endif /* CPL_DEBUG */
576    
577  C     Send humidity  C     Send humidity
578        DO bj=1,nSy        DO bj=1,nSy
# Line 537  C     Send humidity Line 585  C     Send humidity
585         ENDDO         ENDDO
586        ENDDO        ENDDO
587        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
588    #ifdef CPL_DEBUG
589          CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
590    #else /* CPL_DEBUG */
591        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
592        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
593         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 544  C     Send humidity Line 595  C     Send humidity
595       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
596        ENDIF        ENDIF
597        _END_MASTER( myThid )        _END_MASTER( myThid )
598    #endif /* CPL_DEBUG */
599    
600  C     Send precipitation  C     Send precipitation
601        DO bj=1,nSy        DO bj=1,nSy
# Line 556  C     Send precipitation Line 608  C     Send precipitation
608         ENDDO         ENDDO
609        ENDDO        ENDDO
610        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
611    #ifdef CPL_DEBUG
612          CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
613    #else /* CPL_DEBUG */
614        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
615        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
616         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 563  C     Send precipitation Line 618  C     Send precipitation
618       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
619        ENDIF        ENDIF
620        _END_MASTER( myThid )        _END_MASTER( myThid )
621    #endif /* CPL_DEBUG */
622    
623  C     Send ocean surface temperature  C     Send ocean surface temperature
624        DO bj=1,nSy        DO bj=1,nSy
# Line 575  C     Send ocean surface temperature Line 631  C     Send ocean surface temperature
631         ENDDO         ENDDO
632        ENDDO        ENDDO
633        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
634    #ifdef CPL_DEBUG
635          CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
636    #else /* CPL_DEBUG */
637        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
638        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
639         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 582  C     Send ocean surface temperature Line 641  C     Send ocean surface temperature
641       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
642        ENDIF        ENDIF
643        _END_MASTER( myThid )        _END_MASTER( myThid )
644    #endif /* CPL_DEBUG */
645    
646    C     Send ocean surface salinity
647          DO bj=1,nSy
648           DO bi=1,nSx
649            DO j=1,sNy
650             DO i=1,sNx
651              local(i,j,bi,bj) = salt(i,j,1,bi,bj)
652             ENDDO
653            ENDDO
654           ENDDO
655          ENDDO
656          CALL GATHER_2D( xfer_array, local, myThid )
657    #ifdef CPL_DEBUG
658          CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
659    #else /* CPL_DEBUG */
660          _BEGIN_MASTER( myThid )
661          IF ( myworldid .EQ. local_ocean_leader ) THEN
662           buffsize = Nx*Ny
663           CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
664         &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
665          ENDIF
666          _END_MASTER( myThid )
667    #endif /* CPL_DEBUG */
668    
669  C     Send surface u current  C     Send surface u current
670        DO bj=1,nSy        DO bj=1,nSy
# Line 594  C     Send surface u current Line 677  C     Send surface u current
677         ENDDO         ENDDO
678        ENDDO        ENDDO
679        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
680    #ifdef CPL_DEBUG
681          CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
682    #else /* CPL_DEBUG */
683        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
684        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
685         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 601  C     Send surface u current Line 687  C     Send surface u current
687       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
688        ENDIF        ENDIF
689        _END_MASTER( myThid )        _END_MASTER( myThid )
690    #endif /* CPL_DEBUG */
691    
692  C     Send surface v current  C     Send surface v current
693        DO bj=1,nSy        DO bj=1,nSy
# Line 613  C     Send surface v current Line 700  C     Send surface v current
700         ENDDO         ENDDO
701        ENDDO        ENDDO
702        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
703    #ifdef CPL_DEBUG
704          CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
705    #else /* CPL_DEBUG */
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 620  C     Send surface v current Line 710  C     Send surface v current
710       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
711        ENDIF        ENDIF
712        _END_MASTER( myThid )        _END_MASTER( myThid )
713  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
         CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )  
 #endif  
714    
715  C     Receive ice model time  C     Receive ice model time
716        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
717    #ifdef CPL_DEBUG
718           print*,'MITgcm receive IceTime'
719    #else /* CPL_DEBUG */
720        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
721         buffsize = 1         buffsize = 1
722         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
723       &    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  
724        ENDIF        ENDIF
725    #endif /* CPL_DEBUG */
726        _END_MASTER( myThid )        _END_MASTER( myThid )
727    
728  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
729    #ifdef CPL_DEBUG
730          DO bj=1,nSy
731           DO bi=1,nSx
732            DO j=1,sNy
733             DO i=1,sNx
734              local(i,j,bi,bj) = AREA(i,j,bi,bj)
735             ENDDO
736            ENDDO
737           ENDDO
738          ENDDO
739    #else /* CPL_DEBUG */
740        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
741        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
742         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 645  C     Receive ice area Line 745  C     Receive ice area
745        ENDIF        ENDIF
746        _END_MASTER( myThid )        _END_MASTER( myThid )
747        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
748  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
749        DO bj=1,nSy        DO bj=1,nSy
750         DO bi=1,nSx         DO bi=1,nSx
751          DO j=1,sNy          DO j=1,sNy
752           DO i=1,sNx           DO i=1,sNx
753            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            AREA(i,j,bi,bj) = local(i,j,bi,bj)
754           ENDDO           ENDDO
755          ENDDO          ENDDO
756         ENDDO         ENDDO
757        ENDDO        ENDDO
758        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )  #ifdef CPL_MONITOR
759  #endif        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
760    #endif /* CPL_MONITOR */
761    
762  C     Receive ice thickness  C     Receive ice thickness
763    #ifdef CPL_DEBUG
764          DO bj=1,nSy
765           DO bi=1,nSx
766            DO j=1,sNy
767             DO i=1,sNx
768              local(i,j,bi,bj) = HEFF(i,j,bi,bj)
769             ENDDO
770            ENDDO
771           ENDDO
772          ENDDO
773    #else /* CPL_DEBUG */
774        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
775        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
776         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 667  C     Receive ice thickness Line 779  C     Receive ice thickness
779        ENDIF        ENDIF
780        _END_MASTER( myThid )        _END_MASTER( myThid )
781        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
782  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
783        DO bj=1,nSy        DO bj=1,nSy
784         DO bi=1,nSx         DO bi=1,nSx
785          DO j=1,sNy          DO j=1,sNy
786           DO i=1,sNx           DO i=1,sNx
787            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HEFF(i,j,bi,bj) = local(i,j,bi,bj)
788           ENDDO           ENDDO
789          ENDDO          ENDDO
790         ENDDO         ENDDO
791        ENDDO        ENDDO
792        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  #ifdef CPL_MONITOR
793  #endif        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
794    #endif /* CPL_MONITOR */
795    
796  C     Receive ice salinity  C     Receive ice salinity
797    #ifdef CPL_DEBUG
798          DO bj=1,nSy
799           DO bi=1,nSx
800            DO j=1,sNy
801             DO i=1,sNx
802              local(i,j,bi,bj) = HSALT(i,j,bi,bj)
803             ENDDO
804            ENDDO
805           ENDDO
806          ENDDO
807    #else /* CPL_DEBUG */
808        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
809        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
810         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 689  C     Receive ice salinity Line 813  C     Receive ice salinity
813        ENDIF        ENDIF
814        _END_MASTER( myThid )        _END_MASTER( myThid )
815        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
816  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
817        DO bj=1,nSy        DO bj=1,nSy
818         DO bi=1,nSx         DO bi=1,nSx
819          DO j=1,sNy          DO j=1,sNy
820           DO i=1,sNx           DO i=1,sNx
821            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSALT(i,j,bi,bj) = local(i,j,bi,bj)
822           ENDDO           ENDDO
823          ENDDO          ENDDO
824         ENDDO         ENDDO
825        ENDDO        ENDDO
826        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )  #ifdef CPL_MONITOR
827  #endif        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
828    #endif /* CPL_MONITOR */
829    
830  C     Receive snow thickness  C     Receive snow thickness
831    #ifdef CPL_DEBUG
832          DO bj=1,nSy
833           DO bi=1,nSx
834            DO j=1,sNy
835             DO i=1,sNx
836              local(i,j,bi,bj) = HSNOW(i,j,bi,bj)
837             ENDDO
838            ENDDO
839           ENDDO
840          ENDDO
841    #else /* CPL_DEBUG */
842        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
843        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
844         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 711  C     Receive snow thickness Line 847  C     Receive snow thickness
847        ENDIF        ENDIF
848        _END_MASTER( myThid )        _END_MASTER( myThid )
849        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
850  #ifdef CPL_DEBUG  #endif /* CPL_DEBUG */
851        DO bj=1,nSy        DO bj=1,nSy
852         DO bi=1,nSx         DO bi=1,nSx
853          DO j=1,sNy          DO j=1,sNy
854           DO i=1,sNx           DO i=1,sNx
855            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSNOW(i,j,bi,bj) = local(i,j,bi,bj)
856           ENDDO           ENDDO
857          ENDDO          ENDDO
858         ENDDO         ENDDO
859        ENDDO        ENDDO
860        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  #ifdef CPL_MONITOR
861  #endif        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
862    #endif /* CPL_MONITOR */
863    
864  C     Receive u surface stress  C     Receive u surface stress
865    #ifdef CPL_DEBUG
866          DO bj=1,nSy
867           DO bi=1,nSx
868            DO j=1,sNy
869             DO i=1,sNx
870              local(i,j,bi,bj) = fu(i,j,bi,bj)
871             ENDDO
872            ENDDO
873           ENDDO
874          ENDDO
875    #else /* CPL_DEBUG */
876        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
877        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
878         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 733  C     Receive u surface stress Line 881  C     Receive u surface stress
881        ENDIF        ENDIF
882        _END_MASTER( myThid )        _END_MASTER( myThid )
883        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
884        DO bj=1,nSy        DO bj=1,nSy
885         DO bi=1,nSx         DO bi=1,nSx
886          DO j=1,sNy          DO j=1,sNy
887           DO i=1,sNx           DO i=1,sNx
888            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) +
889         &                (1.-AREA(i,j,bi,bj)) * fu_tmp(i,j,bi,bj)
890           ENDDO           ENDDO
891          ENDDO          ENDDO
892         ENDDO         ENDDO
893        ENDDO        ENDDO
894        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )  #endif /* CPL_DEBUG */
895  #endif  #ifdef CPL_MONITOR
896          CALL PLOT_FIELD_XYRL( local, 'u stress', myIter, myThid )
897    #endif /* CPL_MONITOR */
898    
899  C     Receive v surface stress  C     Receive v surface stress
900    #ifdef CPL_DEBUG
901          DO bj=1,nSy
902           DO bi=1,nSx
903            DO j=1,sNy
904             DO i=1,sNx
905              local(i,j,bi,bj) = fv(i,j,bi,bj)
906             ENDDO
907            ENDDO
908           ENDDO
909          ENDDO
910    #else /* CPL_DEBUG */
911        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
912        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
913         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 755  C     Receive v surface stress Line 916  C     Receive v surface stress
916        ENDIF        ENDIF
917        _END_MASTER( myThid )        _END_MASTER( myThid )
918        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
919        DO bj=1,nSy        DO bj=1,nSy
920         DO bi=1,nSx         DO bi=1,nSx
921          DO j=1,sNy          DO j=1,sNy
922           DO i=1,sNx           DO i=1,sNx
923            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) +
924         &                (1.-AREA(i,j,bi,bj)) * fv_tmp(i,j,bi,bj)
925           ENDDO           ENDDO
926          ENDDO          ENDDO
927         ENDDO         ENDDO
928        ENDDO        ENDDO
929        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )  #endif /* CPL_DEBUG */
930  #endif  #ifdef CPL_MONITOR
931          CALL PLOT_FIELD_XYRL( local, 'v stress', myIter, myThid )
932    #endif /* CPL_MONITOR */
933    
934  C     Receive residual shortwave  C     Receive residual shortwave
935    #ifdef CPL_DEBUG
936          DO bj=1,nSy
937           DO bi=1,nSx
938            DO j=1,sNy
939             DO i=1,sNx
940              local(i,j,bi,bj) = Qsw(i,j,bi,bj)
941             ENDDO
942            ENDDO
943           ENDDO
944          ENDDO
945    #else /* CPL_DEBUG */
946        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
947        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
948         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 777  C     Receive residual shortwave Line 951  C     Receive residual shortwave
951        ENDIF        ENDIF
952        _END_MASTER( myThid )        _END_MASTER( myThid )
953        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
954        DO bj=1,nSy        DO bj=1,nSy
955         DO bi=1,nSx         DO bi=1,nSx
956          DO j=1,sNy          DO j=1,sNy
957           DO i=1,sNx           DO i=1,sNx
958            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) +
959         &                  (1.-AREA(i,j,bi,bj)) * Qsw_tmp(i,j,bi,bj)
960           ENDDO           ENDDO
961          ENDDO          ENDDO
962         ENDDO         ENDDO
963        ENDDO        ENDDO
964        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )  #endif /* CPL_DEBUG */
965  #endif  #ifdef CPL_MONITOR
966          CALL PLOT_FIELD_XYRL( local, 'shortwave', myIter, myThid )
967    #endif /* CPL_MONITOR */
968    
969  C     Receive heat flux  C     Receive heat flux
970    #ifdef CPL_DEBUG
971          DO bj=1,nSy
972           DO bi=1,nSx
973            DO j=1,sNy
974             DO i=1,sNx
975              local(i,j,bi,bj) = Qnet(i,j,bi,bj)
976             ENDDO
977            ENDDO
978           ENDDO
979          ENDDO
980    #else /* CPL_DEBUG */
981        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
982        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
983         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 799  C     Receive heat flux Line 986  C     Receive heat flux
986        ENDIF        ENDIF
987        _END_MASTER( myThid )        _END_MASTER( myThid )
988        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
989        DO bj=1,nSy        DO bj=1,nSy
990         DO bi=1,nSx         DO bi=1,nSx
991          DO j=1,sNy          DO j=1,sNy
992           DO i=1,sNx           DO i=1,sNx
993            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -
994         &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +
995         &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(i,j,bi,bj)
996           ENDDO           ENDDO
997          ENDDO          ENDDO
998         ENDDO         ENDDO
999        ENDDO        ENDDO
1000        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )  #endif /* CPL_DEBUG */
1001  #endif  #ifdef CPL_MONITOR
1002          CALL PLOT_FIELD_XYRL( local, 'heat flux', myIter, myThid )
1003    #endif /* CPL_MONITOR */
1004    
1005  C     Receive freshwater flux  C     Receive freshwater flux
1006    #ifdef CPL_DEBUG
1007          DO bj=1,nSy
1008           DO bi=1,nSx
1009            DO j=1,sNy
1010             DO i=1,sNx
1011              local(i,j,bi,bj) = EmPmR(i,j,bi,bj)
1012             ENDDO
1013            ENDDO
1014           ENDDO
1015          ENDDO
1016    #else /* CPL_DEBUG */
1017        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1018        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1019         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 821  C     Receive freshwater flux Line 1022  C     Receive freshwater flux
1022        ENDIF        ENDIF
1023        _END_MASTER( myThid )        _END_MASTER( myThid )
1024        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
1025        DO bj=1,nSy        DO bj=1,nSy
1026         DO bi=1,nSx         DO bi=1,nSx
1027          DO j=1,sNy          DO j=1,sNy
1028           DO i=1,sNx           DO i=1,sNx
1029            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) +
1030         &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR_tmp(i,j,bi,bj)
1031           ENDDO           ENDDO
1032          ENDDO          ENDDO
1033         ENDDO         ENDDO
1034        ENDDO        ENDDO
1035        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )  #endif /* CPL_DEBUG */
1036  #endif  #ifdef CPL_MONITOR
1037          CALL PLOT_FIELD_XYRL( local, 'freshwater', myIter, myThid )
1038    #endif /* CPL_MONITOR */
1039    
1040  C     Receive salt flux  C     Receive salt flux
1041    #ifdef CPL_DEBUG
1042          DO bj=1,nSy
1043           DO bi=1,nSx
1044            DO j=1,sNy
1045             DO i=1,sNx
1046              local(i,j,bi,bj) = fu(i,j,bi,bj)
1047             ENDDO
1048            ENDDO
1049           ENDDO
1050          ENDDO
1051    #else /* CPL_DEBUG */
1052        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1053        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1054         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 843  C     Receive salt flux Line 1057  C     Receive salt flux
1057        ENDIF        ENDIF
1058        _END_MASTER( myThid )        _END_MASTER( myThid )
1059        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
1060        DO bj=1,nSy        DO bj=1,nSy
1061         DO bi=1,nSx         DO bi=1,nSx
1062          DO j=1,sNy          DO j=1,sNy
1063           DO i=1,sNx           DO i=1,sNx
1064            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)
1065           ENDDO           ENDDO
1066          ENDDO          ENDDO
1067         ENDDO         ENDDO
1068        ENDDO        ENDDO
1069        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )  #endif /* CPL_DEBUG */
1070  #endif  #ifdef CPL_MONITOR
1071          CALL PLOT_FIELD_XYRL( local, 'salt flux', myIter, myThid )
1072    #endif /* CPL_MONITOR */
1073    
1074  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1075    

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

  ViewVC Help
Powered by ViewVC 1.1.22