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