233 |
enddo |
enddo |
234 |
#endif |
#endif |
235 |
|
|
236 |
|
#ifdef ALLOW_AUTODIFF |
237 |
#ifdef ALLOW_DIFFKR_CONTROL |
#ifdef ALLOW_DIFFKR_CONTROL |
238 |
c-- diffkr. |
c-- diffkr. |
239 |
il=ilnblnk( xx_diffkr_file ) |
il=ilnblnk( xx_diffkr_file ) |
247 |
do k = 1,nr |
do k = 1,nr |
248 |
do j = jmin,jmax |
do j = jmin,jmax |
249 |
do i = imin,imax |
do i = imin,imax |
250 |
|
#ifdef ALLOW_AUTODIFF_OPENAD |
251 |
diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) + |
diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) + |
252 |
|
& xx_diffkr(i,j,k,bi,bj) + |
253 |
& tmpfld3d(i,j,k,bi,bj) |
& tmpfld3d(i,j,k,bi,bj) |
254 |
|
#else |
255 |
|
diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) + |
256 |
|
& tmpfld3d(i,j,k,bi,bj) |
257 |
|
#endif |
258 |
enddo |
enddo |
259 |
enddo |
enddo |
260 |
enddo |
enddo |
261 |
enddo |
enddo |
262 |
enddo |
enddo |
263 |
#endif |
#endif |
264 |
|
#endif |
265 |
|
|
266 |
|
#ifdef ALLOW_AUTODIFF |
267 |
#ifdef ALLOW_KAPGM_CONTROL |
#ifdef ALLOW_KAPGM_CONTROL |
268 |
c-- kapgm. |
c-- kapgm. |
269 |
il=ilnblnk( xx_kapgm_file ) |
il=ilnblnk( xx_kapgm_file ) |
277 |
do k = 1,nr |
do k = 1,nr |
278 |
do j = jmin,jmax |
do j = jmin,jmax |
279 |
do i = imin,imax |
do i = imin,imax |
280 |
|
#ifdef ALLOW_AUTODIFF_OPENAD |
281 |
|
kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) + |
282 |
|
& xx_kapgm(i,j,k,bi,bj) + |
283 |
|
& tmpfld3d(i,j,k,bi,bj) |
284 |
|
#else |
285 |
kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) + |
kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) + |
286 |
& tmpfld3d(i,j,k,bi,bj) |
& tmpfld3d(i,j,k,bi,bj) |
287 |
|
#endif |
288 |
|
enddo |
289 |
|
enddo |
290 |
|
enddo |
291 |
|
enddo |
292 |
|
enddo |
293 |
|
#endif |
294 |
|
#endif |
295 |
|
|
296 |
|
#ifdef ALLOW_AUTODIFF |
297 |
|
#ifdef ALLOW_KAPREDI_CONTROL |
298 |
|
c-- kapredi. |
299 |
|
il=ilnblnk( xx_kapredi_file ) |
300 |
|
write(fnamegeneric(1:80),'(2a,i10.10)') |
301 |
|
& xx_kapredi_file(1:il),'.',optimcycle |
302 |
|
call active_read_xyz( fnamegeneric, tmpfld3d, 1, |
303 |
|
& doglobalread, ladinit, optimcycle, |
304 |
|
& mythid, xx_kapredi_dummy ) |
305 |
|
do bj = jtlo,jthi |
306 |
|
do bi = itlo,ithi |
307 |
|
do k = 1,nr |
308 |
|
do j = jmin,jmax |
309 |
|
do i = imin,imax |
310 |
|
kapredi(i,j,k,bi,bj) = kapredi(i,j,k,bi,bj) + |
311 |
|
& tmpfld3d(i,j,k,bi,bj) |
312 |
enddo |
enddo |
313 |
enddo |
enddo |
314 |
enddo |
enddo |
315 |
enddo |
enddo |
316 |
enddo |
enddo |
317 |
#endif |
#endif |
318 |
|
#endif |
319 |
|
|
320 |
#ifdef ALLOW_EFLUXY0_CONTROL |
#ifdef ALLOW_EFLUXY0_CONTROL |
321 |
c-- y-component EP-flux field. |
c-- y-component EP-flux field. |
393 |
enddo |
enddo |
394 |
#endif |
#endif |
395 |
|
|
396 |
#ifdef ALLOW_EDTAUX_CONTROL |
#ifdef ALLOW_EDDYPSI_CONTROL |
397 |
c-- zonal eddy stress : edtaux |
c-- zonal eddy streamfunction : eddyPsiX |
398 |
il=ilnblnk( xx_edtaux_file ) |
il=ilnblnk( xx_edtaux_file ) |
399 |
write(fnamegeneric(1:80),'(2a,i10.10)') |
write(fnamegeneric(1:80),'(2a,i10.10)') |
400 |
& xx_edtaux_file(1:il),'.',optimcycle |
& xx_edtaux_file(1:il),'.',optimcycle |
406 |
do k = 1,nr |
do k = 1,nr |
407 |
do j = jmin,jmax |
do j = jmin,jmax |
408 |
do i = imin,imax |
do i = imin,imax |
409 |
eddyTauX(i,j,k,bi,bj) = eddyTauX(i,j,k,bi,bj) + |
eddyPsiX(i,j,k,bi,bj) = eddyPsiX(i,j,k,bi,bj) + |
410 |
& fCori(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj) |
& tmpfld3d(i,j,k,bi,bj) |
411 |
enddo |
enddo |
412 |
enddo |
enddo |
413 |
enddo |
enddo |
414 |
enddo |
enddo |
415 |
enddo |
enddo |
416 |
#endif |
c-- meridional eddy streamfunction : eddyPsiY |
|
|
|
|
#ifdef ALLOW_EDTAUY_CONTROL |
|
|
c-- meridional eddy stress : edtauy |
|
417 |
il=ilnblnk( xx_edtauy_file ) |
il=ilnblnk( xx_edtauy_file ) |
418 |
write(fnamegeneric(1:80),'(2a,i10.10)') |
write(fnamegeneric(1:80),'(2a,i10.10)') |
419 |
& xx_edtauy_file(1:il),'.',optimcycle |
& xx_edtauy_file(1:il),'.',optimcycle |
425 |
do k = 1,nr |
do k = 1,nr |
426 |
do j = jmin,jmax |
do j = jmin,jmax |
427 |
do i = imin,imax |
do i = imin,imax |
428 |
eddyTauY(i,j,k,bi,bj) = eddyTauY(i,j,k,bi,bj) + |
eddyPsiY(i,j,k,bi,bj) = eddyPsiY(i,j,k,bi,bj) + |
429 |
& fCoriG(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj) |
& tmpfld3d(i,j,k,bi,bj) |
430 |
enddo |
enddo |
431 |
enddo |
enddo |
432 |
enddo |
enddo |
562 |
c-- Update the tile edges. |
c-- Update the tile edges. |
563 |
|
|
564 |
#if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL)) |
#if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL)) |
565 |
_EXCH_XYZ_R8( theta, mythid ) |
_EXCH_XYZ_RL( theta, mythid ) |
566 |
#endif |
#endif |
567 |
#if (defined (ALLOW_SALT0_CONTROL) || defined (ALLOW_SSS0_CONTROL)) |
#if (defined (ALLOW_SALT0_CONTROL) || defined (ALLOW_SSS0_CONTROL)) |
568 |
_EXCH_XYZ_R8( salt, mythid ) |
_EXCH_XYZ_RL( salt, mythid ) |
569 |
#endif |
#endif |
570 |
#ifdef ALLOW_TR10_CONTROL |
#ifdef ALLOW_TR10_CONTROL |
571 |
#ifdef ALLOW_PTRACERS |
#ifdef ALLOW_PTRACERS |
572 |
_EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,1),myThid) |
_EXCH_XYZ_RL(pTracer(1-Olx,1-Oly,1,1,1,1),myThid) |
573 |
#endif |
#endif |
574 |
#endif |
#endif |
575 |
#ifdef ALLOW_DIFFKR_CONTROL |
|
576 |
_EXCH_XYZ_R8( diffkr, mythid) |
#ifdef ALLOW_AUTODIFF |
577 |
#endif |
# ifdef ALLOW_DIFFKR_CONTROL |
578 |
#ifdef ALLOW_KAPGM_CONTROL |
_EXCH_XYZ_RL( diffkr, mythid) |
579 |
_EXCH_XYZ_R8( kapgm, mythid) |
# endif |
580 |
|
# ifdef ALLOW_KAPGM_CONTROL |
581 |
|
_EXCH_XYZ_RL( kapgm, mythid) |
582 |
|
# endif |
583 |
|
# ifdef ALLOW_KAPREDI_CONTROL |
584 |
|
_EXCH_XYZ_RL( kapredi, mythid) |
585 |
|
# endif |
586 |
#endif |
#endif |
587 |
|
|
588 |
#ifdef ALLOW_EFLUXY0_CONTROL |
#ifdef ALLOW_EFLUXY0_CONTROL |
589 |
_EXCH_XYZ_R8( EfluxY, mythid ) |
_EXCH_XYZ_RL( EfluxY, mythid ) |
590 |
#endif |
#endif |
591 |
#ifdef ALLOW_EFLUXP0_CONTROL |
#ifdef ALLOW_EFLUXP0_CONTROL |
592 |
_EXCH_XYZ_R8( EfluxP, mythid ) |
_EXCH_XYZ_RL( EfluxP, mythid ) |
593 |
#endif |
#endif |
594 |
#ifdef ALLOW_BOTTOMDRAG_CONTROL |
#ifdef ALLOW_BOTTOMDRAG_CONTROL |
595 |
_EXCH_XY_R8( bottomdragfld, mythid ) |
_EXCH_XY_RL( bottomdragfld, mythid ) |
596 |
#endif |
#endif |
597 |
|
|
598 |
#if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL)) |
#ifdef ALLOW_EDDYPSI_CONTROL |
599 |
CALL EXCH_UV_XYZ_RS(eddyTauX,eddyTauY,.TRUE.,myThid) |
CALL EXCH_UV_XYZ_RS(eddyPsiX,eddyPsiY,.TRUE.,myThid) |
|
#elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL)) |
|
|
STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL' |
|
600 |
#endif |
#endif |
601 |
|
|
602 |
#ifdef ALLOW_UVEL0_CONTROL |
#ifdef ALLOW_UVEL0_CONTROL |
603 |
_EXCH_XYZ_R8( uVel, mythid) |
_EXCH_XYZ_RL( uVel, mythid) |
604 |
#endif |
#endif |
605 |
|
|
606 |
#ifdef ALLOW_VVEL0_CONTROL |
#ifdef ALLOW_VVEL0_CONTROL |
607 |
_EXCH_XYZ_R8( vVel, mythid) |
_EXCH_XYZ_RL( vVel, mythid) |
608 |
#endif |
#endif |
609 |
|
|
610 |
#ifdef ALLOW_ETAN0_CONTROL |
#ifdef ALLOW_ETAN0_CONTROL |
611 |
_EXCH_XY_R8( etaN, mythid ) |
_EXCH_XY_RL( etaN, mythid ) |
612 |
#endif |
#endif |
613 |
|
|
614 |
#ifdef ALLOW_RELAXSST_CONTROL |
#ifdef ALLOW_RELAXSST_CONTROL |
615 |
_EXCH_XY_R4( lambdaThetaClimRelax, mythid ) |
_EXCH_XY_RS( lambdaThetaClimRelax, mythid ) |
616 |
#endif |
#endif |
617 |
|
|
618 |
#ifdef ALLOW_RELAXSSS_CONTROL |
#ifdef ALLOW_RELAXSSS_CONTROL |
619 |
_EXCH_XY_R4( lambdaThetaClimRelax, mythid ) |
_EXCH_XY_RS( lambdaThetaClimRelax, mythid ) |
620 |
#endif |
#endif |
621 |
|
|
622 |
return |
return |