146 |
INTEGER myIter |
INTEGER myIter |
147 |
INTEGER myThid |
INTEGER myThid |
148 |
|
|
149 |
|
C !FUNCTIONS: |
150 |
|
#ifdef ALLOW_DIAGNOSTICS |
151 |
|
LOGICAL DIAGNOSTICS_IS_ON |
152 |
|
EXTERNAL DIAGNOSTICS_IS_ON |
153 |
|
#endif |
154 |
|
|
155 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
156 |
C == Local variables |
C == Local variables |
157 |
C fVer[UV] o fVer: Vertical flux term - note fVer |
C fVer[UV] o fVer: Vertical flux term - note fVer |
196 |
INTEGER k, km1, kp1, kup, kDown |
INTEGER k, km1, kp1, kup, kDown |
197 |
|
|
198 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
199 |
|
LOGICAL dPhiHydDiagIsOn |
200 |
_RL tmpFac |
_RL tmpFac |
201 |
#endif /* ALLOW_DIAGNOSTICS */ |
#endif /* ALLOW_DIAGNOSTICS */ |
202 |
|
|
251 |
& CALL DEBUG_ENTER( 'DYNAMICS', myThid ) |
& CALL DEBUG_ENTER( 'DYNAMICS', myThid ) |
252 |
#endif |
#endif |
253 |
|
|
254 |
|
#ifdef ALLOW_DIAGNOSTICS |
255 |
|
dPhiHydDiagIsOn = .FALSE. |
256 |
|
IF ( useDiagnostics ) |
257 |
|
& dPhiHydDiagIsOn = DIAGNOSTICS_IS_ON( 'Um_dPHdx', myThid ) |
258 |
|
& .OR. DIAGNOSTICS_IS_ON( 'Vm_dPHdy', myThid ) |
259 |
|
#endif |
260 |
|
|
261 |
C-- Call to routine for calculation of |
C-- Call to routine for calculation of |
262 |
C Eliassen-Palm-flux-forced U-tendency, |
C Eliassen-Palm-flux-forced U-tendency, |
263 |
C if desired: |
C if desired: |
324 |
fVerV (i,j,2) = 0. _d 0 |
fVerV (i,j,2) = 0. _d 0 |
325 |
phiHydF (i,j) = 0. _d 0 |
phiHydF (i,j) = 0. _d 0 |
326 |
phiHydC (i,j) = 0. _d 0 |
phiHydC (i,j) = 0. _d 0 |
327 |
|
#ifndef INCLUDE_PHIHYD_CALCULATION_CODE |
328 |
dPhiHydX(i,j) = 0. _d 0 |
dPhiHydX(i,j) = 0. _d 0 |
329 |
dPhiHydY(i,j) = 0. _d 0 |
dPhiHydY(i,j) = 0. _d 0 |
330 |
|
#endif |
331 |
phiSurfX(i,j) = 0. _d 0 |
phiSurfX(i,j) = 0. _d 0 |
332 |
phiSurfY(i,j) = 0. _d 0 |
phiSurfY(i,j) = 0. _d 0 |
333 |
guDissip(i,j) = 0. _d 0 |
guDissip(i,j) = 0. _d 0 |
334 |
gvDissip(i,j) = 0. _d 0 |
gvDissip(i,j) = 0. _d 0 |
335 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
336 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
337 |
# ifdef NONLIN_FRSURF |
# if (defined NONLIN_FRSURF) && (defined ALLOW_MOM_FLUXFORM) |
338 |
# ifndef DISABLE_RSTAR_CODE |
# ifndef DISABLE_RSTAR_CODE |
339 |
dWtransC(i,j,bi,bj) = 0. _d 0 |
dWtransC(i,j,bi,bj) = 0. _d 0 |
340 |
dWtransU(i,j,bi,bj) = 0. _d 0 |
dWtransU(i,j,bi,bj) = 0. _d 0 |
352 |
jMax = sNy+1 |
jMax = sNy+1 |
353 |
|
|
354 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
355 |
CADJ STORE wvel (:,:,:,bi,bj) = |
CADJ STORE wvel (:,:,:,bi,bj) = |
356 |
CADJ & comlev1_bibj, key=idynkey, byte=isbyte |
CADJ & comlev1_bibj, key=idynkey, byte=isbyte |
357 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
358 |
|
|
370 |
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte |
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte |
371 |
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte |
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte |
372 |
#ifdef ALLOW_KPP |
#ifdef ALLOW_KPP |
373 |
CADJ STORE KPPviscAz (:,:,:,bi,bj) |
CADJ STORE KPPviscAz (:,:,:,bi,bj) |
374 |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
375 |
#endif /* ALLOW_KPP */ |
#endif /* ALLOW_KPP */ |
376 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
393 |
#endif |
#endif |
394 |
|
|
395 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
396 |
CADJ STORE KappaRU(:,:,:) |
CADJ STORE KappaRU(:,:,:) |
397 |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
398 |
CADJ STORE KappaRV(:,:,:) |
CADJ STORE KappaRV(:,:,:) |
399 |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte |
400 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
401 |
|
|
414 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
415 |
kkey = (idynkey-1)*Nr + k |
kkey = (idynkey-1)*Nr + k |
416 |
c |
c |
417 |
CADJ STORE totphihyd (:,:,k,bi,bj) |
CADJ STORE totphihyd (:,:,k,bi,bj) |
418 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
419 |
CADJ STORE phihydlow (:,:,bi,bj) |
CADJ STORE phihydlow (:,:,bi,bj) |
420 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
421 |
CADJ STORE theta (:,:,k,bi,bj) |
CADJ STORE theta (:,:,k,bi,bj) |
422 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
423 |
CADJ STORE salt (:,:,k,bi,bj) |
CADJ STORE salt (:,:,k,bi,bj) |
424 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
425 |
CADJ STORE gt(:,:,k,bi,bj) |
CADJ STORE gt(:,:,k,bi,bj) |
426 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
427 |
CADJ STORE gs(:,:,k,bi,bj) |
CADJ STORE gs(:,:,k,bi,bj) |
428 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
429 |
# ifdef NONLIN_FRSURF |
# ifdef NONLIN_FRSURF |
430 |
cph-test |
cph-test |
431 |
CADJ STORE phiHydC (:,:) |
CADJ STORE phiHydC (:,:) |
432 |
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
433 |
|
CADJ STORE phiHydF (:,:) |
434 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
435 |
CADJ STORE phiHydF (:,:) |
CADJ STORE gudissip (:,:) |
436 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
437 |
CADJ STORE gudissip (:,:) |
CADJ STORE gvdissip (:,:) |
438 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
439 |
CADJ STORE gvdissip (:,:) |
CADJ STORE fVerU (:,:,:) |
440 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
441 |
CADJ STORE fVerU (:,:,:) |
CADJ STORE fVerV (:,:,:) |
442 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
443 |
CADJ STORE fVerV (:,:,:) |
CADJ STORE gu(:,:,k,bi,bj) |
444 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
445 |
CADJ STORE gu(:,:,k,bi,bj) |
CADJ STORE gv(:,:,k,bi,bj) |
446 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
447 |
CADJ STORE gv(:,:,k,bi,bj) |
# ifndef ALLOW_ADAMSBASHFORTH_3 |
448 |
|
CADJ STORE gunm1(:,:,k,bi,bj) |
449 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
450 |
CADJ STORE gunm1(:,:,k,bi,bj) |
CADJ STORE gvnm1(:,:,k,bi,bj) |
451 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
452 |
CADJ STORE gvnm1(:,:,k,bi,bj) |
# else |
453 |
|
CADJ STORE gunm(:,:,k,bi,bj,1) |
454 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
455 |
|
CADJ STORE gunm(:,:,k,bi,bj,2) |
456 |
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
457 |
|
CADJ STORE gvnm(:,:,k,bi,bj,1) |
458 |
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
459 |
|
CADJ STORE gvnm(:,:,k,bi,bj,2) |
460 |
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
461 |
|
# endif |
462 |
# ifdef ALLOW_CD_CODE |
# ifdef ALLOW_CD_CODE |
463 |
CADJ STORE unm1(:,:,k,bi,bj) |
CADJ STORE unm1(:,:,k,bi,bj) |
464 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
465 |
CADJ STORE vnm1(:,:,k,bi,bj) |
CADJ STORE vnm1(:,:,k,bi,bj) |
466 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
467 |
CADJ STORE uVelD(:,:,k,bi,bj) |
CADJ STORE uVelD(:,:,k,bi,bj) |
468 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
469 |
CADJ STORE vVelD(:,:,k,bi,bj) |
CADJ STORE vVelD(:,:,k,bi,bj) |
470 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
471 |
# endif |
# endif |
472 |
# endif |
# endif |
473 |
# ifdef ALLOW_DEPTH_CONTROL |
# ifdef ALLOW_DEPTH_CONTROL |
474 |
CADJ STORE fVerU (:,:,:) |
CADJ STORE fVerU (:,:,:) |
475 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
476 |
CADJ STORE fVerV (:,:,:) |
CADJ STORE fVerV (:,:,:) |
477 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
478 |
# endif |
# endif |
479 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
495 |
O phiHydC, dPhiHydX, dPhiHydY, |
O phiHydC, dPhiHydX, dPhiHydY, |
496 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
497 |
ENDIF |
ENDIF |
498 |
|
#ifdef ALLOW_DIAGNOSTICS |
499 |
|
IF ( dPhiHydDiagIsOn ) THEN |
500 |
|
tmpFac = -1. _d 0 |
501 |
|
CALL DIAGNOSTICS_SCALE_FILL( dPhiHydX, tmpFac, 1, |
502 |
|
& 'Um_dPHdx', k, 1, 2, bi, bj, myThid ) |
503 |
|
CALL DIAGNOSTICS_SCALE_FILL( dPhiHydY, tmpFac, 1, |
504 |
|
& 'Vm_dPHdy', k, 1, 2, bi, bj, myThid ) |
505 |
|
ENDIF |
506 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
507 |
|
|
508 |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
509 |
C and step forward storing the result in gU, gV, etc... |
C and step forward storing the result in gU, gV, etc... |
510 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
511 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
512 |
# ifdef NONLIN_FRSURF |
# if (defined NONLIN_FRSURF) && (defined ALLOW_MOM_FLUXFORM) |
513 |
# ifndef DISABLE_RSTAR_CODE |
# ifndef DISABLE_RSTAR_CODE |
514 |
CADJ STORE dWtransC(:,:,bi,bj) |
CADJ STORE dWtransC(:,:,bi,bj) |
515 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
516 |
CADJ STORE dWtransU(:,:,bi,bj) |
CADJ STORE dWtransU(:,:,bi,bj) |
517 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
518 |
CADJ STORE dWtransV(:,:,bi,bj) |
CADJ STORE dWtransV(:,:,bi,bj) |
519 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
520 |
# endif |
# endif |
521 |
# endif |
# endif |
535 |
C |
C |
536 |
# ifdef ALLOW_AUTODIFF_TAMC |
# ifdef ALLOW_AUTODIFF_TAMC |
537 |
# ifdef NONLIN_FRSURF |
# ifdef NONLIN_FRSURF |
538 |
CADJ STORE fVerU(:,:,:) |
CADJ STORE fVerU(:,:,:) |
539 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
540 |
CADJ STORE fVerV(:,:,:) |
CADJ STORE fVerV(:,:,:) |
541 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
542 |
# endif |
# endif |
543 |
# endif /* ALLOW_AUTODIFF_TAMC */ |
# endif /* ALLOW_AUTODIFF_TAMC */ |
571 |
ENDDO |
ENDDO |
572 |
|
|
573 |
C-- Implicit Vertical advection & viscosity |
C-- Implicit Vertical advection & viscosity |
574 |
#if (defined (INCLUDE_IMPLVERTADV_CODE) && defined (ALLOW_MOM_COMMON)) |
#if (defined (INCLUDE_IMPLVERTADV_CODE) && \ |
575 |
|
defined (ALLOW_MOM_COMMON) && !(defined ALLOW_AUTODIFF_TAMC)) |
576 |
IF ( momImplVertAdv ) THEN |
IF ( momImplVertAdv ) THEN |
577 |
CALL MOM_U_IMPLICIT_R( kappaRU, |
CALL MOM_U_IMPLICIT_R( kappaRU, |
578 |
I bi, bj, myTime, myIter, myThid ) |
I bi, bj, myTime, myIter, myThid ) |