/[MITgcm]/MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F
ViewVC logotype

Diff of /MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5 by dimitri, Fri Feb 3 14:08:28 2012 UTC revision 1.15 by dimitri, Sun Mar 18 01:14:52 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    #include "SEAICE_OPTIONS.h"
27    #include "SEAICE_SIZE.h"
28    #include "SEAICE.h"
29  #ifdef ALLOW_EXF  #ifdef ALLOW_EXF
30  # include "EXF_OPTIONS.h"  # include "EXF_OPTIONS.h"
31  # include "EXF_FIELDS.h"  # include "EXF_FIELDS.h"
32  #endif  #endif
 #ifdef ALLOW_SEAICE  
 # include "SEAICE_OPTIONS.h"  
 # include "SEAICE.h"  
 #endif  
33    
34        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
35        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
# Line 49  CEOP Line 48  CEOP
48        COMMON /CPL_MPI_ID/        COMMON /CPL_MPI_ID/
49       &        myworldid, local_ocean_leader, local_ice_leader       &        myworldid, local_ocean_leader, local_ice_leader
50        integer myworldid, local_ocean_leader, local_ice_leader        integer myworldid, local_ocean_leader, local_ice_leader
51    # ifdef ALLOW_USE_MPI
52        integer mpistatus(MPI_STATUS_SIZE), mpierr        integer mpistatus(MPI_STATUS_SIZE), mpierr
53    # endif /* ALLOW_USE_MPI */
54        integer xfer_gridsize(2)        integer xfer_gridsize(2)
55        integer i, j, bi, bj, buffsize, idx        integer i, j, bi, bj, buffsize, idx
56        Real*8  xfer_scalar        Real*8  xfer_scalar
# Line 57  CEOP Line 58  CEOP
58        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)
59        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)
60        _RL     local(1:sNx,1:sNy,nSx,nSy)        _RL     local(1:sNx,1:sNy,nSx,nSy)
61          character*(10) itername
62    
63        COMMON /FFIELDS_tmp/  # ifdef CPL_DEBUG
64       & fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp, saltFlux_tmp        write(itername,'(i10.10)') myIter
65        _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  # endif /* CPL_DEBUG */
       _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
   
 #ifdef CPL_DEBUG  
       _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1-OLy,sNy+OLy  
          DO i=1-OLx,sNx+OLx  
           ScatArray(i,j,bi,bj) = 0.0 _d 0  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #endif  
66    
67        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
68    
69  C     Send deltatimestep  C     Send deltatimestep
70         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
71           xfer_scalar = deltat
72           buffsize = 1
73    # ifdef CPL_DEBUG
74           print*,'MITgcm send TimeInterval', xfer_scalar
75    # endif /* CPL_DEBUG */
76    # ifdef CPL_COUPLED
77         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_scalar = deltat  
         buffsize = 1  
78          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,          CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
79       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,TimeIntervalTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
         print*,'MITgcm send TimeInterval', xfer_scalar  
 #endif  
80         ENDIF         ENDIF
81    # endif /* CPL_COUPLED */
82         _END_MASTER( myThid )         _END_MASTER( myThid )
83    
84  C     Send grid dimensions (Nx,Ny)  C     Send grid dimensions (Nx,Ny)
85         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
86           xfer_gridsize(1)=Nx
87           xfer_gridsize(2)=Ny
88           buffsize = 2
89    # ifdef CPL_DEBUG
90           print*,'MITgcm send OceanGridsize', xfer_gridsize
91    # endif /* CPL_DEBUG */
92    # ifdef CPL_COUPLED
93         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
         xfer_gridsize(1)=Nx  
         xfer_gridsize(2)=Ny  
         buffsize = 2  
94          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,          CALL MPI_SEND(xfer_gridsize,buffsize,MPI_INTEGER,
95       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,OceanGridsizeTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
         print*,'MITgcm send OceanGridsize', xfer_gridsize  
 #endif  
96         ENDIF         ENDIF
97    # endif /* CPL_COUPLED */
98         _END_MASTER( myThid )         _END_MASTER( myThid )
99    
100  C     Send ice area  C     Send ice area
# Line 113  C     Send ice area Line 102  C     Send ice area
102          DO bi=1,nSx          DO bi=1,nSx
103           DO j=1,sNy           DO j=1,sNy
104            DO i=1,sNx            DO i=1,sNx
105             local(i,j,bi,bj) = AREA(i,j,1,bi,bj)             local(i,j,bi,bj) = AREA(i,j,bi,bj)
106            ENDDO            ENDDO
107           ENDDO           ENDDO
108          ENDDO          ENDDO
109         ENDDO         ENDDO
110         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
111    # ifdef CPL_DEBUG
112           CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )
113    # endif /* CPL_DEBUG */
114    # ifdef CPL_COUPLED
115         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
116         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
117          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 126  C     Send ice area Line 119  C     Send ice area
119       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,AreaTag,MPI_COMM_WORLD,mpierr)
120         ENDIF         ENDIF
121         _END_MASTER( myThid )         _END_MASTER( myThid )
122  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
        CALL PLOT_FIELD_XYRL( AREA, 'AREA', myIter, myThid )  
 #endif  
123    
124  C     Send ice thickness  C     Send ice thickness
125         DO bj=1,nSy         DO bj=1,nSy
126          DO bi=1,nSx          DO bi=1,nSx
127           DO j=1,sNy           DO j=1,sNy
128            DO i=1,sNx            DO i=1,sNx
129             local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)             local(i,j,bi,bj) = HEFF(i,j,bi,bj)
130            ENDDO            ENDDO
131           ENDDO           ENDDO
132          ENDDO          ENDDO
133         ENDDO         ENDDO
134         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
135    # ifdef CPL_DEBUG
136           CALL PLOT_FIELD_XYRL( HEFF, 'HEFF', myIter, myThid )
137    # endif /* CPL_DEBUG */
138    # ifdef CPL_COUPLED
139         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
140         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
141          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 148  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_COUPLED */
        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 163  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    # endif /* CPL_DEBUG */
162    # ifdef CPL_COUPLED
163         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
164         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
165          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 170  C     Send ice salinity Line 167  C     Send ice salinity
167       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsaltTag,MPI_COMM_WORLD,mpierr)
168         ENDIF         ENDIF
169         _END_MASTER( myThid )         _END_MASTER( myThid )
170  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )  
 #endif  
171    
172  C     Send snow thickness  C     Send snow thickness
173         DO bj=1,nSy         DO bj=1,nSy
# Line 185  C     Send snow thickness Line 180  C     Send snow thickness
180          ENDDO          ENDDO
181         ENDDO         ENDDO
182         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
183    # ifdef CPL_DEBUG
184           CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )
185    # endif /* CPL_DEBUG */
186    # ifdef CPL_COUPLED
187         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
188         IF ( myworldid .EQ. local_ocean_leader ) THEN         IF ( myworldid .EQ. local_ocean_leader ) THEN
189          buffsize = Nx*Ny          buffsize = Nx*Ny
# Line 192  C     Send snow thickness Line 191  C     Send snow thickness
191       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HsnowTag,MPI_COMM_WORLD,mpierr)
192         ENDIF         ENDIF
193         _END_MASTER( myThid )         _END_MASTER( myThid )
194  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW', myIter, myThid )  
 #endif  
195    
196        ENDIF ! ( myTime .EQ. startTime )        ENDIF ! ( myTime .EQ. startTime )
197    
198    C--   Apply ice open boundary conditions
199    #ifdef ALLOW_OBCS
200          IF ( useOBCS ) THEN
201           CALL OBCS_APPLY_SEAICE( myThid )
202           CALL OBCS_APPLY_UVICE( uice, vice, myThid )
203          ENDIF
204    #endif /* ALLOW_OBCS */
205    
206  C     Send ocean model time  C     Send ocean model time
207        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
208          xfer_scalar = myTime
209          buffsize = 1
210    # ifdef CPL_DEBUG
211          print*,'MITgcm send OceanTime', xfer_scalar
212    # endif /* CPL_DEBUG */
213    # ifdef CPL_COUPLED
214        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        xfer_scalar = myTime  
        buffsize = 1  
215         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_scalar,buffsize,MPI_DOUBLE_PRECISION,
216       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,OceanTimeTag,MPI_COMM_WORLD,mpierr)
 #ifdef CPL_DEBUG  
        print*,'MITgcm send OceanTime', xfer_scalar  
 #endif  
217        ENDIF        ENDIF
218    # endif /* CPL_COUPLED */
219        _END_MASTER( myThid )        _END_MASTER( myThid )
220    
221  C     Send boundary ice area  C     Send boundary ice area
# Line 216  C     Send boundary ice area Line 223  C     Send boundary ice area
223         DO bi=1,nSx         DO bi=1,nSx
224          DO j=1,sNy          DO j=1,sNy
225           DO i=1,sNx           DO i=1,sNx
226            local(i,j,bi,bj) = AREA(i,j,1,bi,bj)            local(i,j,bi,bj) = AREA(i,j,bi,bj)
227           ENDDO           ENDDO
228          ENDDO          ENDDO
229         ENDDO         ENDDO
# Line 239  C     Send boundary ice area Line 246  C     Send boundary ice area
246         idx = idx + 1         idx = idx + 1
247         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
248        ENDDO        ENDDO
249          buffsize = 2*(Nx+Ny)-4
250    # ifdef CPL_DEBUG
251          CALL PLOT_FIELD_XYRL( AREA, 'AREA obcs', myIter, myThid )
252          CALL WRITE_GLVEC_RS ( 'AREAobcs.', itername,
253         &     xfer_bc_tracer, buffsize, myIter, myThid )
254    # endif /* CPL_DEBUG */
255    # ifdef CPL_COUPLED
256        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
257        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
258         buffsize = 2*(Nx+Ny)-4  cdb    print*,'MITgcm is about to send AreaBcTag',buffsize
        print*,'MITgcm is about to send AreaBcTag',buffsize  
259         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
260       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AreaBcTag,MPI_COMM_WORLD,mpierr)
261         print*,'MITgcm has sent AreaBcTag',buffsize  cdb    print*,'MITgcm has sent AreaBcTag',buffsize
262        ENDIF        ENDIF
263        _END_MASTER( myThid )        _END_MASTER( myThid )
264    # endif /* CPL_COUPLED */
265    
266  C     Send boundary ice thickness  C     Send boundary ice thickness
267        DO bj=1,nSy        DO bj=1,nSy
268         DO bi=1,nSx         DO bi=1,nSx
269          DO j=1,sNy          DO j=1,sNy
270           DO i=1,sNx           DO i=1,sNx
271            local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)            local(i,j,bi,bj) = HEFF(i,j,bi,bj)
272           ENDDO           ENDDO
273          ENDDO          ENDDO
274         ENDDO         ENDDO
# Line 277  C     Send boundary ice thickness Line 291  C     Send boundary ice thickness
291         idx = idx + 1         idx = idx + 1
292         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
293        ENDDO        ENDDO
294          buffsize = 2*(Nx+Ny)-4
295    # ifdef CPL_DEBUG
296          CALL PLOT_FIELD_XYRL( HEFF, 'HEFF obcs', myIter, myThid )
297          CALL WRITE_GLVEC_RS ( 'HEFFobcs.', itername,
298         &     xfer_bc_tracer, buffsize, myIter, myThid )
299    # endif /* CPL_DEBUG */
300    # ifdef CPL_COUPLED
301        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
302        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
303         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
304       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HeffBcTag,MPI_COMM_WORLD,mpierr)
305        ENDIF        ENDIF
306        _END_MASTER( myThid )        _END_MASTER( myThid )
307    # endif /* CPL_COUPLED */
308    
309  C     Send boundary ice salinity  C     Send boundary ice salinity
310        DO bj=1,nSy        DO bj=1,nSy
# Line 313  C     Send boundary ice salinity Line 334  C     Send boundary ice salinity
334         idx = idx + 1         idx = idx + 1
335         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
336        ENDDO        ENDDO
337          buffsize = 2*(Nx+Ny)-4
338    # ifdef CPL_DEBUG
339          CALL PLOT_FIELD_XYRL( HSALT, 'HSALT obcs', myIter, myThid )
340          CALL WRITE_GLVEC_RS ( 'HSALTobcs.', itername,
341         &     xfer_bc_tracer, buffsize, myIter, myThid )
342    # endif /* CPL_DEBUG */
343    # ifdef CPL_COUPLED
344        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
345        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
346         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
347       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsaltBcTag,MPI_COMM_WORLD,mpierr)
348        ENDIF        ENDIF
349        _END_MASTER( myThid )        _END_MASTER( myThid )
350    # endif /* CPL_COUPLED */
351    
352  C     Send boundary snow thickness  C     Send boundary snow thickness
353        DO bj=1,nSy        DO bj=1,nSy
# Line 349  C     Send boundary snow thickness Line 377  C     Send boundary snow thickness
377         idx = idx + 1         idx = idx + 1
378         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
379        ENDDO        ENDDO
380          buffsize = 2*(Nx+Ny)-4
381    # ifdef CPL_DEBUG
382          CALL PLOT_FIELD_XYRL( HSNOW, 'HSNOW obcs', myIter, myThid )
383          CALL WRITE_GLVEC_RS ( 'HSNOWobcs.', itername,
384         &     xfer_bc_tracer, buffsize, myIter, myThid )
385    # endif /* CPL_DEBUG */
386    # ifdef CPL_COUPLED
387        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
388        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-4  
389         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_tracer,buffsize,MPI_DOUBLE_PRECISION,
390       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,HsnowBcTag,MPI_COMM_WORLD,mpierr)
391        ENDIF        ENDIF
392        _END_MASTER( myThid )        _END_MASTER( myThid )
393    # endif /* CPL_COUPLED */
394    
395  C     Send boundary u ice  C     Send boundary u ice
396        DO bj=1,nSy        DO bj=1,nSy
397         DO bi=1,nSx         DO bi=1,nSx
398          DO j=1,sNy          DO j=1,sNy
399           DO i=1,sNx           DO i=1,sNx
400            local(i,j,bi,bj) = UICE(i,j,1,bi,bj)            local(i,j,bi,bj) = UICE(i,j,bi,bj)
401           ENDDO           ENDDO
402          ENDDO          ENDDO
403         ENDDO         ENDDO
# Line 385  C     Send boundary u ice Line 420  C     Send boundary u ice
420         idx = idx + 1         idx = idx + 1
421         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
422        ENDDO        ENDDO
423          buffsize = 2*(Nx+Ny)-6
424    # ifdef CPL_DEBUG
425          CALL PLOT_FIELD_XYRL( UICE, 'UICE obcs', myIter, myThid )
426          CALL WRITE_GLVEC_RS ( 'UICEobcs.', itername,
427         &     xfer_bc_veloc, buffsize, myIter, myThid )
428    # endif /* CPL_DEBUG */
429    # ifdef CPL_COUPLED
430        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
431        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
432         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
433       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UiceBcTag,MPI_COMM_WORLD,mpierr)
434        ENDIF        ENDIF
435        _END_MASTER( myThid )        _END_MASTER( myThid )
436    # endif /* CPL_COUPLED */
437    
438  C     Send boundary v ice  C     Send boundary v ice
439        DO bj=1,nSy        DO bj=1,nSy
440         DO bi=1,nSx         DO bi=1,nSx
441          DO j=1,sNy          DO j=1,sNy
442           DO i=1,sNx           DO i=1,sNx
443            local(i,j,bi,bj) = VICE(i,j,1,bi,bj)            local(i,j,bi,bj) = VICE(i,j,bi,bj)
444           ENDDO           ENDDO
445          ENDDO          ENDDO
446         ENDDO         ENDDO
# Line 421  C     Send boundary v ice Line 463  C     Send boundary v ice
463         idx = idx + 1         idx = idx + 1
464         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
465        ENDDO        ENDDO
466          buffsize = 2*(Nx+Ny)-6
467    # ifdef CPL_DEBUG
468          CALL PLOT_FIELD_XYRL( VICE, 'VICE obcs', myIter, myThid )
469          CALL WRITE_GLVEC_RS ( 'VICEobcs.', itername,
470         &     xfer_bc_veloc, buffsize, myIter, myThid )
471    # endif /* CPL_DEBUG */
472    # ifdef CPL_COUPLED
473        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
474        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
        buffsize = 2*(Nx+Ny)-6  
475         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_bc_veloc,buffsize,MPI_DOUBLE_PRECISION,
476       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,ViceBcTag,MPI_COMM_WORLD,mpierr)
477        ENDIF        ENDIF
478        _END_MASTER( myThid )        _END_MASTER( myThid )
479    # endif /* CPL_COUPLED */
480    
481  C     Send u-wind velocity  C     Send u-wind velocity
482        DO bj=1,nSy        DO bj=1,nSy
# Line 440  C     Send u-wind velocity Line 489  C     Send u-wind velocity
489         ENDDO         ENDDO
490        ENDDO        ENDDO
491        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
492    # ifdef CPL_DEBUG
493          CALL PLOT_FIELD_XYRL( UWIND, 'UWIND', myIter, myThid )
494    # endif /* CPL_DEBUG */
495    # ifdef CPL_COUPLED
496        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
497        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
498  #ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
499         DO j=1,Ny         DO j=1,Ny
500          xfer_array(Nx,j)=xfer_array(Nx-1,j)          xfer_array(Nx,j)=xfer_array(Nx-1,j)
501         ENDDO         ENDDO
502  #endif  #  endif /* FIX_FOR_EDGE_WINDS */
503         buffsize = Nx*Ny         buffsize = Nx*Ny
504         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
505       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UwindTag,MPI_COMM_WORLD,mpierr)
506        ENDIF        ENDIF
507        _END_MASTER( myThid )        _END_MASTER( myThid )
508    # endif /* CPL_COUPLED */
509    
510  C     Send v-wind velocity  C     Send v-wind velocity
511        DO bj=1,nSy        DO bj=1,nSy
# Line 464  C     Send v-wind velocity Line 518  C     Send v-wind velocity
518         ENDDO         ENDDO
519        ENDDO        ENDDO
520        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
521    # ifdef CPL_DEBUG
522          CALL PLOT_FIELD_XYRL( VWIND, 'VWIND', myIter, myThid )
523    # endif /* CPL_DEBUG */
524    # ifdef CPL_COUPLED
525        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
526        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
527  #ifdef FIX_FOR_EDGE_WINDS  #  ifdef FIX_FOR_EDGE_WINDS
528         DO i=1,Nx         DO i=1,Nx
529          xfer_array(i,Ny)=xfer_array(i,Ny-1)          xfer_array(i,Ny)=xfer_array(i,Ny-1)
530         ENDDO         ENDDO
531  #endif  #  endif /* FIX_FOR_EDGE_WINDS */
532         buffsize = Nx*Ny         buffsize = Nx*Ny
533         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,         CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
534       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VwindTag,MPI_COMM_WORLD,mpierr)
535        ENDIF        ENDIF
536        _END_MASTER( myThid )        _END_MASTER( myThid )
537    # endif /* CPL_COUPLED */
538    
539  C     Send downward longwave radiation  C     Send downward longwave radiation
540        DO bj=1,nSy        DO bj=1,nSy
# Line 488  C     Send downward longwave radiation Line 547  C     Send downward longwave radiation
547         ENDDO         ENDDO
548        ENDDO        ENDDO
549        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
550    # ifdef CPL_DEBUG
551          CALL PLOT_FIELD_XYRL( LWDOWN, 'LWDOWN', myIter, myThid )
552    # endif /* CPL_DEBUG */
553    # ifdef CPL_COUPLED
554        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
555        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
556         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 495  C     Send downward longwave radiation Line 558  C     Send downward longwave radiation
558       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,LwDownTag,MPI_COMM_WORLD,mpierr)
559        ENDIF        ENDIF
560        _END_MASTER( myThid )        _END_MASTER( myThid )
561    # endif /* CPL_COUPLED */
562    
563  C     Send downward shortwave radiation  C     Send downward shortwave radiation
564        DO bj=1,nSy        DO bj=1,nSy
# Line 507  C     Send downward shortwave radiation Line 571  C     Send downward shortwave radiation
571         ENDDO         ENDDO
572        ENDDO        ENDDO
573        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
574    # ifdef CPL_DEBUG
575          CALL PLOT_FIELD_XYRL( SWDOWN, 'SWDOWN', myIter, myThid )
576    # endif /* CPL_DEBUG */
577    # ifdef CPL_COUPLED
578        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
579        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
580         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 514  C     Send downward shortwave radiation Line 582  C     Send downward shortwave radiation
582       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SwDownTag,MPI_COMM_WORLD,mpierr)
583        ENDIF        ENDIF
584        _END_MASTER( myThid )        _END_MASTER( myThid )
585    # endif /* CPL_COUPLED */
586    
587  C     Send air temperature  C     Send air temperature
588        DO bj=1,nSy        DO bj=1,nSy
# Line 526  C     Send air temperature Line 595  C     Send air temperature
595         ENDDO         ENDDO
596        ENDDO        ENDDO
597        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
598    # ifdef CPL_DEBUG
599          CALL PLOT_FIELD_XYRL( ATEMP, 'ATEMP', myIter, myThid )
600    # endif /* CPL_DEBUG */
601    # ifdef CPL_COUPLED
602        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
603        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
604         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 533  C     Send air temperature Line 606  C     Send air temperature
606       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AtempTag,MPI_COMM_WORLD,mpierr)
607        ENDIF        ENDIF
608        _END_MASTER( myThid )        _END_MASTER( myThid )
609    # endif /* CPL_COUPLED */
610    
611  C     Send humidity  C     Send humidity
612        DO bj=1,nSy        DO bj=1,nSy
# Line 545  C     Send humidity Line 619  C     Send humidity
619         ENDDO         ENDDO
620        ENDDO        ENDDO
621        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
622    # ifdef CPL_DEBUG
623          CALL PLOT_FIELD_XYRL( AQH, 'AQH', myIter, myThid )
624    # endif /* CPL_DEBUG */
625    # ifdef CPL_COUPLED
626        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
627        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
628         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 552  C     Send humidity Line 630  C     Send humidity
630       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,AqhTag,MPI_COMM_WORLD,mpierr)
631        ENDIF        ENDIF
632        _END_MASTER( myThid )        _END_MASTER( myThid )
633    # endif /* CPL_COUPLED */
634    
635  C     Send precipitation  C     Send precipitation
636        DO bj=1,nSy        DO bj=1,nSy
# Line 564  C     Send precipitation Line 643  C     Send precipitation
643         ENDDO         ENDDO
644        ENDDO        ENDDO
645        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
646    # ifdef CPL_DEBUG
647          CALL PLOT_FIELD_XYRL( PRECIP, 'PRECIP', myIter, myThid )
648    # endif /* CPL_DEBUG */
649    # ifdef CPL_COUPLED
650        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
651        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
652         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 571  C     Send precipitation Line 654  C     Send precipitation
654       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,PrecipTag,MPI_COMM_WORLD,mpierr)
655        ENDIF        ENDIF
656        _END_MASTER( myThid )        _END_MASTER( myThid )
657    # endif /* CPL_COUPLED */
658    
659  C     Send ocean surface temperature  C     Send ocean surface temperature
660        DO bj=1,nSy        DO bj=1,nSy
# Line 583  C     Send ocean surface temperature Line 667  C     Send ocean surface temperature
667         ENDDO         ENDDO
668        ENDDO        ENDDO
669        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
670    # ifdef CPL_DEBUG
671          CALL PLOT_FIELD_XYZRL( THETA, 'SST', 1, myIter, myThid )
672    # endif /* CPL_DEBUG */
673    # ifdef CPL_COUPLED
674        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
675        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
676         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 590  C     Send ocean surface temperature Line 678  C     Send ocean surface temperature
678       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SstTag,MPI_COMM_WORLD,mpierr)
679        ENDIF        ENDIF
680        _END_MASTER( myThid )        _END_MASTER( myThid )
681    # endif /* CPL_COUPLED */
682    
683  C     Send ocean surface salinity  C     Send ocean surface salinity
684        DO bj=1,nSy        DO bj=1,nSy
# Line 602  C     Send ocean surface salinity Line 691  C     Send ocean surface salinity
691         ENDDO         ENDDO
692        ENDDO        ENDDO
693        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
694    # ifdef CPL_DEBUG
695          CALL PLOT_FIELD_XYZRL( SALT, 'SSS', 1, myIter, myThid )
696    # endif /* CPL_DEBUG */
697    # ifdef CPL_COUPLED
698        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
699        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
700         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 609  C     Send ocean surface salinity Line 702  C     Send ocean surface salinity
702       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
703        ENDIF        ENDIF
704        _END_MASTER( myThid )        _END_MASTER( myThid )
705    # endif /* CPL_COUPLED */
706    
707  C     Send surface u current  C     Send surface u current
708        DO bj=1,nSy        DO bj=1,nSy
# Line 621  C     Send surface u current Line 715  C     Send surface u current
715         ENDDO         ENDDO
716        ENDDO        ENDDO
717        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
718    # ifdef CPL_DEBUG
719          CALL PLOT_FIELD_XYZRL( uVel, 'uVel(k=1)', 1, myIter, myThid )
720    # endif /* CPL_DEBUG */
721    # ifdef CPL_COUPLED
722        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
723        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
724         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 628  C     Send surface u current Line 726  C     Send surface u current
726       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,UvelTag,MPI_COMM_WORLD,mpierr)
727        ENDIF        ENDIF
728        _END_MASTER( myThid )        _END_MASTER( myThid )
729    # endif /* CPL_COUPLED */
730    
731  C     Send surface v current  C     Send surface v current
732        DO bj=1,nSy        DO bj=1,nSy
# Line 640  C     Send surface v current Line 739  C     Send surface v current
739         ENDDO         ENDDO
740        ENDDO        ENDDO
741        CALL GATHER_2D( xfer_array, local, myThid )        CALL GATHER_2D( xfer_array, local, myThid )
742    # ifdef CPL_DEBUG
743          CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )
744    # endif /* CPL_DEBUG */
745    # ifdef CPL_COUPLED
746        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
747        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
748         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 647  C     Send surface v current Line 750  C     Send surface v current
750       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)       &    local_ice_leader,VvelTag,MPI_COMM_WORLD,mpierr)
751        ENDIF        ENDIF
752        _END_MASTER( myThid )        _END_MASTER( myThid )
753  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
         CALL PLOT_FIELD_XYZRL( vVel, 'vVel(k=1)', 1, myIter, myThid )  
 #endif  
754    
755  C     Receive ice model time  C     Receive ice model time
756        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
757    # ifdef CPL_DEBUG
758           print*,'MITgcm receive IceTime'
759    # endif /* CPL_DEBUG */
760    # ifdef CPL_COUPLED
761        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
762         buffsize = 1         buffsize = 1
763         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,         CALL MPI_RECV(xfer_scalar,1,MPI_DOUBLE_PRECISION,
764       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)       &    local_ice_leader,IceTimeTag,MPI_COMM_WORLD,mpistatus,mpierr)
 #ifdef CPL_DEBUG  
        print*,'MITgcm receive IceTime', xfer_scalar  
 #endif  
765        ENDIF        ENDIF
766    # endif /* CPL_COUPLED */
767        _END_MASTER( myThid )        _END_MASTER( myThid )
768    
769  C     Receive ice area                     Nx*Ny       Real*8    C     Receive ice area                     Nx*Ny       Real*8  
770    # ifdef CPL_COUPLED
771        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
772        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
773         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 681  C     Receive ice area Line 785  C     Receive ice area
785          ENDDO          ENDDO
786         ENDDO         ENDDO
787        ENDDO        ENDDO
788        # endif /* CPL_COUPLED */
789  #ifdef CPL_DEBUG  # ifdef CPL_DEBUG
790        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
791         DO bi=1,nSx  # endif /* CPL_DEBUG */
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )  
 #endif  
792    
793  C     Receive ice thickness  C     Receive ice thickness
794    # ifdef CPL_COUPLED
795        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
796        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
797         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 713  C     Receive ice thickness Line 809  C     Receive ice thickness
809          ENDDO          ENDDO
810         ENDDO         ENDDO
811        ENDDO        ENDDO
812  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
813        DO bj=1,nSy  # ifdef CPL_DEBUG
814         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
815          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  
 #endif  
816    
817  C     Receive ice salinity  C     Receive ice salinity
818    # ifdef CPL_COUPLED
819        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
820        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
821         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 744  C     Receive ice salinity Line 833  C     Receive ice salinity
833          ENDDO          ENDDO
834         ENDDO         ENDDO
835        ENDDO        ENDDO
836  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
837        DO bj=1,nSy  # ifdef CPL_DEBUG
838         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
839          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )  
 #endif  
840    
841  C     Receive snow thickness  C     Receive snow thickness
842    # ifdef CPL_COUPLED
843        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
844        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
845         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 775  C     Receive snow thickness Line 857  C     Receive snow thickness
857          ENDDO          ENDDO
858         ENDDO         ENDDO
859        ENDDO        ENDDO
860  #ifdef CPL_DEBUG  # endif /* CPL_COUPLED */
861        DO bj=1,nSy  # ifdef CPL_DEBUG
862         DO bi=1,nSx        CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
863          DO j=1,sNy  # endif /* CPL_DEBUG */
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  
 #endif  
864    
865  C     Receive u surface stress  C     Receive u surface stress
866    # ifdef CPL_COUPLED
867        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
868        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
869         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 801  C     Receive u surface stress Line 876  C     Receive u surface stress
876         DO bi=1,nSx         DO bi=1,nSx
877          DO j=1,sNy          DO j=1,sNy
878           DO i=1,sNx           DO i=1,sNx
879            fu(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj)            fu(i,j,bi,bj) = AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
880       &                (1.-AREA(i,j,bi,bj) * fu_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fu   (i,j,bi,bj)
881           ENDDO           ENDDO
882          ENDDO          ENDDO
883         ENDDO         ENDDO
884        ENDDO        ENDDO
885  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
886        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
887         DO bi=1,nSx  #  endif /* CPL_DEBUG */
888          DO j=1,sNy  # endif /* CPL_COUPLED */
889           DO i=1,sNx  # ifdef CPL_DEBUG
890            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
891           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )  
 #endif  
892    
893  C     Receive v surface stress  C     Receive v surface stress
894    # ifdef CPL_COUPLED
895        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
896        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
897         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 833  C     Receive v surface stress Line 904  C     Receive v surface stress
904         DO bi=1,nSx         DO bi=1,nSx
905          DO j=1,sNy          DO j=1,sNy
906           DO i=1,sNx           DO i=1,sNx
907            fv(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj)            fv(i,j,bi,bj) = AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
908       &                (1.-AREA(i,j,bi,bj) * fv_tmp(i,j,bi,bj)       &                (1.-AREA(i,j,bi,bj)) * fv   (i,j,bi,bj)
909           ENDDO           ENDDO
910          ENDDO          ENDDO
911         ENDDO         ENDDO
912        ENDDO        ENDDO
913  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
914        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
915         DO bi=1,nSx  #  endif /* CPL_DEBUG */
916          DO j=1,sNy  # endif /* CPL_COUPLED */
917           DO i=1,sNx  # ifdef CPL_DEBUG
918            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
919           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )  
 #endif  
920    
921  C     Receive residual shortwave  C     Receive residual shortwave
922    # ifdef CPL_COUPLED
923        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
924        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
925         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 865  C     Receive residual shortwave Line 932  C     Receive residual shortwave
932         DO bi=1,nSx         DO bi=1,nSx
933          DO j=1,sNy          DO j=1,sNy
934           DO i=1,sNx           DO i=1,sNx
935            Qsw(i,j,bi,bj) = -AREA(i,j,bi,bj) * local(i,j,bi,bj) +            Qsw(i,j,bi,bj) = -AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
936       &                  (1.-AREA(i,j,bi,bj) * Qsw_tmp(i,j,bi,bj)       &                  (1.-AREA(i,j,bi,bj)) *   Qsw(i,j,bi,bj)
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
 #ifdef CPL_DEBUG  
       DO bj=1,nSy  
        DO bi=1,nSx  
         DO j=1,sNy  
          DO i=1,sNx  
           ScatArray(i,j,bi,bj) = local(i,j,bi,bj)  
937           ENDDO           ENDDO
938          ENDDO          ENDDO
939         ENDDO         ENDDO
940        ENDDO        ENDDO
941        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )  #  ifdef CPL_DEBUG
942  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm shortwave', myIter, myThid )
943    #  endif /* CPL_DEBUG */
944    # endif /* CPL_COUPLED */
945    # ifdef CPL_DEBUG
946          CALL PLOT_FIELD_XYRL( Qsw, 'shortwave', myIter, myThid )
947    # endif /* CPL_DEBUG */
948    
949  C     Receive heat flux  C     Receive heat flux
950    # ifdef CPL_COUPLED
951        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
952        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
953         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 897  C     Receive heat flux Line 960  C     Receive heat flux
960         DO bi=1,nSx         DO bi=1,nSx
961          DO j=1,sNy          DO j=1,sNy
962           DO i=1,sNx           DO i=1,sNx
963            fv(i,j,bi,bj) = Qsw(i,j,bi,bj) -            Qnet(i,j,bi,bj) = Qsw(i,j,bi,bj) -
964       &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                   AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
965       &               (1.-AREA(i,j,bi,bj) * Qnet_tmp(i,j,bi,bj)       &               (1.-AREA(i,j,bi,bj)) *  Qnet(i,j,bi,bj)
966           ENDDO           ENDDO
967          ENDDO          ENDDO
968         ENDDO         ENDDO
969        ENDDO        ENDDO
970  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
971        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
972         DO bi=1,nSx  #  endif /* CPL_DEBUG */
973          DO j=1,sNy  # endif /* CPL_COUPLED */
974           DO i=1,sNx  # ifdef CPL_DEBUG
975            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
976           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )  
 #endif  
977    
978  C     Receive freshwater flux  C     Receive freshwater flux
979    # ifdef CPL_COUPLED
980        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
981        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
982         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 930  C     Receive freshwater flux Line 989  C     Receive freshwater flux
989         DO bi=1,nSx         DO bi=1,nSx
990          DO j=1,sNy          DO j=1,sNy
991           DO i=1,sNx           DO i=1,sNx
992            EmPmR(i,j,bi,bj) = - rhoConstFresh *            EmPmR(i,j,bi,bj) = - AREA(i,j,bi,bj)  * local(i,j,bi,bj) +
993       &                    AREA(i,j,bi,bj) * local(i,j,bi,bj) +       &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR(i,j,bi,bj)
      &                (1.-AREA(i,j,bi,bj) * EmPmR_tmp(i,j,bi,bj)  
994           ENDDO           ENDDO
995          ENDDO          ENDDO
996         ENDDO         ENDDO
997        ENDDO        ENDDO
998  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
999        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
1000         DO bi=1,nSx  #  endif /* CPL_DEBUG */
1001          DO j=1,sNy  # endif /* CPL_COUPLED */
1002           DO i=1,sNx  # ifdef CPL_DEBUG
1003            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
1004           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )  
 #endif  
1005    
1006  C     Receive salt flux  C     Receive salt flux
1007    # ifdef CPL_COUPLED
1008        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
1009        IF ( myworldid .EQ. local_ocean_leader ) THEN        IF ( myworldid .EQ. local_ocean_leader ) THEN
1010         buffsize = Nx*Ny         buffsize = Nx*Ny
# Line 968  C     Receive salt flux Line 1022  C     Receive salt flux
1022          ENDDO          ENDDO
1023         ENDDO         ENDDO
1024        ENDDO        ENDDO
1025  #ifdef CPL_DEBUG  #  ifdef CPL_DEBUG
1026        DO bj=1,nSy        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1027         DO bi=1,nSx  #  endif /* CPL_DEBUG */
1028          DO j=1,sNy  # endif /* CPL_COUPLED */
1029           DO i=1,sNx  # ifdef CPL_DEBUG
1030            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)        CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1031           ENDDO  # endif /* CPL_DEBUG */
         ENDDO  
        ENDDO  
       ENDDO  
       CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )  
 #endif  
1032    
1033  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1034    

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

  ViewVC Help
Powered by ViewVC 1.1.22