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

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

  ViewVC Help
Powered by ViewVC 1.1.22