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

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

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

revision 1.4 by dimitri, Fri Dec 4 19:39:27 2009 UTC revision 1.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  #ifdef CPL_DEBUG  
63        _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)  # ifdef CPL_DEBUG
64        DO bj=1,nSy        write(itername,'(i10.10)') myIter
65         DO bi=1,nSx  # endif /* CPL_DEBUG */
         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 105  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 118  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 140  C     Send ice thickness Line 143  C     Send ice thickness
143       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)       &     local_ice_leader,HeffTag,MPI_COMM_WORLD,mpierr)
144         ENDIF         ENDIF
145         _END_MASTER( myThid )         _END_MASTER( myThid )
146  #ifdef CPL_DEBUG  # endif /* CPL_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 155  C     Send ice salinity Line 156  C     Send ice salinity
156          ENDDO          ENDDO
157         ENDDO         ENDDO
158         CALL GATHER_2D( xfer_array, local, myThid )         CALL GATHER_2D( xfer_array, local, myThid )
159    # ifdef CPL_DEBUG
160           CALL PLOT_FIELD_XYRL( HSALT, 'HSALT', myIter, myThid )
161    # 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 162  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 177  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 184  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 208  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 231  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 269  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 305  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 341  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 377  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 413  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 432  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 456  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 480  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 487  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 499  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 506  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 518  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 525  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 537  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 544  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 556  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 563  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 575  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 582  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
684          DO bj=1,nSy
685           DO bi=1,nSx
686            DO j=1,sNy
687             DO i=1,sNx
688              local(i,j,bi,bj) = salt(i,j,1,bi,bj)
689             ENDDO
690            ENDDO
691           ENDDO
692          ENDDO
693          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 )
699          IF ( myworldid .EQ. local_ocean_leader ) THEN
700           buffsize = Nx*Ny
701           CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
702         &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
703          ENDIF
704          _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 594  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 601  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 613  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 620  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 645  C     Receive ice area Line 776  C     Receive ice area
776        ENDIF        ENDIF
777        _END_MASTER( myThid )        _END_MASTER( myThid )
778        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
779        DO bj=1,nSy        DO bj=1,nSy
780         DO bi=1,nSx         DO bi=1,nSx
781          DO j=1,sNy          DO j=1,sNy
782           DO i=1,sNx           DO i=1,sNx
783            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            AREA(i,j,bi,bj) = local(i,j,bi,bj)
784           ENDDO           ENDDO
785          ENDDO          ENDDO
786         ENDDO         ENDDO
787        ENDDO        ENDDO
788        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )  # endif /* CPL_COUPLED */
789  #endif  # ifdef CPL_DEBUG
790          CALL PLOT_FIELD_XYRL( AREA, 'ice area', myIter, myThid )
791    # endif /* CPL_DEBUG */
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 667  C     Receive ice thickness Line 800  C     Receive ice thickness
800        ENDIF        ENDIF
801        _END_MASTER( myThid )        _END_MASTER( myThid )
802        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
803        DO bj=1,nSy        DO bj=1,nSy
804         DO bi=1,nSx         DO bi=1,nSx
805          DO j=1,sNy          DO j=1,sNy
806           DO i=1,sNx           DO i=1,sNx
807            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HEFF(i,j,bi,bj) = local(i,j,bi,bj)
808           ENDDO           ENDDO
809          ENDDO          ENDDO
810         ENDDO         ENDDO
811        ENDDO        ENDDO
812        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  # endif /* CPL_COUPLED */
813  #endif  # ifdef CPL_DEBUG
814          CALL PLOT_FIELD_XYRL( HEFF, 'ice thickness', myIter, myThid )
815    # endif /* CPL_DEBUG */
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 689  C     Receive ice salinity Line 824  C     Receive ice salinity
824        ENDIF        ENDIF
825        _END_MASTER( myThid )        _END_MASTER( myThid )
826        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
827        DO bj=1,nSy        DO bj=1,nSy
828         DO bi=1,nSx         DO bi=1,nSx
829          DO j=1,sNy          DO j=1,sNy
830           DO i=1,sNx           DO i=1,sNx
831            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSALT(i,j,bi,bj) = local(i,j,bi,bj)
832           ENDDO           ENDDO
833          ENDDO          ENDDO
834         ENDDO         ENDDO
835        ENDDO        ENDDO
836        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )  # endif /* CPL_COUPLED */
837  #endif  # ifdef CPL_DEBUG
838          CALL PLOT_FIELD_XYRL( HSALT, 'ice salinity', myIter, myThid )
839    # endif /* CPL_DEBUG */
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 711  C     Receive snow thickness Line 848  C     Receive snow thickness
848        ENDIF        ENDIF
849        _END_MASTER( myThid )        _END_MASTER( myThid )
850        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
851        DO bj=1,nSy        DO bj=1,nSy
852         DO bi=1,nSx         DO bi=1,nSx
853          DO j=1,sNy          DO j=1,sNy
854           DO i=1,sNx           DO i=1,sNx
855            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSNOW(i,j,bi,bj) = local(i,j,bi,bj)
856           ENDDO           ENDDO
857          ENDDO          ENDDO
858         ENDDO         ENDDO
859        ENDDO        ENDDO
860        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )  # endif /* CPL_COUPLED */
861  #endif  # ifdef CPL_DEBUG
862          CALL PLOT_FIELD_XYRL( HSNOW, 'snow thickness', myIter, myThid )
863    # endif /* CPL_DEBUG */
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 733  C     Receive u surface stress Line 872  C     Receive u surface stress
872        ENDIF        ENDIF
873        _END_MASTER( myThid )        _END_MASTER( myThid )
874        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
875        DO bj=1,nSy        DO bj=1,nSy
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            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) +
880         &                (1.-AREA(i,j,bi,bj)) * fu   (i,j,bi,bj)
881           ENDDO           ENDDO
882          ENDDO          ENDDO
883         ENDDO         ENDDO
884        ENDDO        ENDDO
885        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )  #  ifdef CPL_DEBUG
886  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm u stress', myIter, myThid )
887    #  endif /* CPL_DEBUG */
888    # endif /* CPL_COUPLED */
889    # ifdef CPL_DEBUG
890          CALL PLOT_FIELD_XYRL( fu, 'u stress', myIter, myThid )
891    # endif /* CPL_DEBUG */
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 755  C     Receive v surface stress Line 900  C     Receive v surface stress
900        ENDIF        ENDIF
901        _END_MASTER( myThid )        _END_MASTER( myThid )
902        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
903        DO bj=1,nSy        DO bj=1,nSy
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            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) +
908         &                (1.-AREA(i,j,bi,bj)) * fv   (i,j,bi,bj)
909           ENDDO           ENDDO
910          ENDDO          ENDDO
911         ENDDO         ENDDO
912        ENDDO        ENDDO
913        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )  #  ifdef CPL_DEBUG
914  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm v stress', myIter, myThid )
915    #  endif /* CPL_DEBUG */
916    # endif /* CPL_COUPLED */
917    # ifdef CPL_DEBUG
918          CALL PLOT_FIELD_XYRL( fv, 'v stress', myIter, myThid )
919    # endif /* CPL_DEBUG */
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 777  C     Receive residual shortwave Line 928  C     Receive residual shortwave
928        ENDIF        ENDIF
929        _END_MASTER( myThid )        _END_MASTER( myThid )
930        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
931        DO bj=1,nSy        DO bj=1,nSy
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            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) +
936         &                  (1.-AREA(i,j,bi,bj)) *   Qsw(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 799  C     Receive heat flux Line 956  C     Receive heat flux
956        ENDIF        ENDIF
957        _END_MASTER( myThid )        _END_MASTER( myThid )
958        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
959        DO bj=1,nSy        DO bj=1,nSy
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            ScatArray(i,j,bi,bj) = local(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) +
965         &               (1.-AREA(i,j,bi,bj)) *  Qnet(i,j,bi,bj)
966           ENDDO           ENDDO
967          ENDDO          ENDDO
968         ENDDO         ENDDO
969        ENDDO        ENDDO
970        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )  #  ifdef CPL_DEBUG
971  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm heat flux', myIter, myThid )
972    #  endif /* CPL_DEBUG */
973    # endif /* CPL_COUPLED */
974    # ifdef CPL_DEBUG
975          CALL PLOT_FIELD_XYRL( Qnet, 'heat flux', myIter, myThid )
976    # endif /* CPL_DEBUG */
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 821  C     Receive freshwater flux Line 985  C     Receive freshwater flux
985        ENDIF        ENDIF
986        _END_MASTER( myThid )        _END_MASTER( myThid )
987        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
988        DO bj=1,nSy        DO bj=1,nSy
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            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) +
993         &                  ( 1. - AREA(i,j,bi,bj)) * EmPmR(i,j,bi,bj)
994           ENDDO           ENDDO
995          ENDDO          ENDDO
996         ENDDO         ENDDO
997        ENDDO        ENDDO
998        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )  #  ifdef CPL_DEBUG
999  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm freshwater', myIter, myThid )
1000    #  endif /* CPL_DEBUG */
1001    # endif /* CPL_COUPLED */
1002    # ifdef CPL_DEBUG
1003          CALL PLOT_FIELD_XYRL( EmPmR, 'freshwater', myIter, myThid )
1004    # endif /* CPL_DEBUG */
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 843  C     Receive salt flux Line 1013  C     Receive salt flux
1013        ENDIF        ENDIF
1014        _END_MASTER( myThid )        _END_MASTER( myThid )
1015        CALL SCATTER_2D( xfer_array, local, myThid )        CALL SCATTER_2D( xfer_array, local, myThid )
 #ifdef CPL_DEBUG  
1016        DO bj=1,nSy        DO bj=1,nSy
1017         DO bi=1,nSx         DO bi=1,nSx
1018          DO j=1,sNy          DO j=1,sNy
1019           DO i=1,sNx           DO i=1,sNx
1020            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)
1021           ENDDO           ENDDO
1022          ENDDO          ENDDO
1023         ENDDO         ENDDO
1024        ENDDO        ENDDO
1025        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )  #  ifdef CPL_DEBUG
1026  #endif        CALL PLOT_FIELD_XYRL( local, 'mpm salt flux', myIter, myThid )
1027    #  endif /* CPL_DEBUG */
1028    # endif /* CPL_COUPLED */
1029    # ifdef CPL_DEBUG
1030          CALL PLOT_FIELD_XYRL( saltFlux, 'salt flux', myIter, myThid )
1031    # endif /* CPL_DEBUG */
1032    
1033  #endif /* ALLOW_CPL_MPMICE */  #endif /* ALLOW_CPL_MPMICE */
1034    

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

  ViewVC Help
Powered by ViewVC 1.1.22