346 |
C point numbers. This prevents spurious hardware signals due to |
C point numbers. This prevents spurious hardware signals due to |
347 |
C uninitialised but inert locations. |
C uninitialised but inert locations. |
348 |
|
|
349 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF |
350 |
DO k=1,Nr |
DO k=1,Nr |
351 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
352 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
|
cph( |
|
353 |
c-- need some re-initialisation here to break dependencies |
c-- need some re-initialisation here to break dependencies |
|
cph) |
|
354 |
gU(i,j,k,bi,bj) = 0. _d 0 |
gU(i,j,k,bi,bj) = 0. _d 0 |
355 |
gV(i,j,k,bi,bj) = 0. _d 0 |
gV(i,j,k,bi,bj) = 0. _d 0 |
356 |
ENDDO |
ENDDO |
357 |
ENDDO |
ENDDO |
358 |
ENDDO |
ENDDO |
359 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF */ |
360 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
361 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
362 |
fVerU (i,j,1) = 0. _d 0 |
fVerU (i,j,1) = 0. _d 0 |
373 |
phiSurfY(i,j) = 0. _d 0 |
phiSurfY(i,j) = 0. _d 0 |
374 |
guDissip(i,j) = 0. _d 0 |
guDissip(i,j) = 0. _d 0 |
375 |
gvDissip(i,j) = 0. _d 0 |
gvDissip(i,j) = 0. _d 0 |
376 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF |
377 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
378 |
# if (defined NONLIN_FRSURF) && (defined ALLOW_MOM_FLUXFORM) |
# if (defined NONLIN_FRSURF) && (defined ALLOW_MOM_FLUXFORM) |
379 |
# ifndef DISABLE_RSTAR_CODE |
# ifndef DISABLE_RSTAR_CODE |
|
# ifndef ALLOW_AUTODIFF_OPENAD |
|
380 |
dWtransC(i,j,bi,bj) = 0. _d 0 |
dWtransC(i,j,bi,bj) = 0. _d 0 |
381 |
dWtransU(i,j,bi,bj) = 0. _d 0 |
dWtransU(i,j,bi,bj) = 0. _d 0 |
382 |
dWtransV(i,j,bi,bj) = 0. _d 0 |
dWtransV(i,j,bi,bj) = 0. _d 0 |
|
# endif |
|
383 |
# endif |
# endif |
384 |
# endif |
# endif |
385 |
#endif |
#endif /* ALLOW_AUTODIFF */ |
386 |
ENDDO |
ENDDO |
387 |
ENDDO |
ENDDO |
388 |
|
|
412 |
#endif /* ALLOW_KPP */ |
#endif /* ALLOW_KPP */ |
413 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
414 |
|
|
415 |
#if (defined INCLUDE_CALC_DIFFUSIVITY_CALL) && !(defined ALLOW_AUTODIFF) |
#ifndef ALLOW_AUTODIFF |
416 |
IF ( .NOT.momViscosity ) THEN |
IF ( .NOT.momViscosity ) THEN |
417 |
#endif /* INCLUDE_CALC_DIFFUSIVITY_CALL and not ALLOW_AUTODIFF */ |
#endif |
418 |
DO k=1,Nr |
DO k=1,Nr |
419 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
420 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
423 |
ENDDO |
ENDDO |
424 |
ENDDO |
ENDDO |
425 |
ENDDO |
ENDDO |
426 |
|
#ifndef ALLOW_AUTODIFF |
427 |
|
ENDIF |
428 |
|
#endif |
429 |
#ifdef INCLUDE_CALC_DIFFUSIVITY_CALL |
#ifdef INCLUDE_CALC_DIFFUSIVITY_CALL |
430 |
C-- Calculate the total vertical viscosity |
C-- Calculate the total vertical viscosity |
|
#ifdef ALLOW_AUTODIFF |
|
431 |
IF ( momViscosity ) THEN |
IF ( momViscosity ) THEN |
|
#else |
|
|
ELSE |
|
|
#endif |
|
432 |
CALL CALC_VISCOSITY( |
CALL CALC_VISCOSITY( |
433 |
I bi,bj, iMin,iMax,jMin,jMax, |
I bi,bj, iMin,iMax,jMin,jMax, |
434 |
O KappaRU, KappaRV, |
O KappaRU, KappaRV, |
480 |
|
|
481 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
482 |
kkey = (idynkey-1)*Nr + k |
kkey = (idynkey-1)*Nr + k |
|
c |
|
483 |
CADJ STORE totPhiHyd (:,:,k,bi,bj) |
CADJ STORE totPhiHyd (:,:,k,bi,bj) |
484 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
CADJ STORE phiHydLow (:,:,bi,bj) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
485 |
CADJ STORE theta (:,:,k,bi,bj) |
CADJ STORE theta (:,:,k,bi,bj) |
486 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
487 |
CADJ STORE salt (:,:,k,bi,bj) |
CADJ STORE salt (:,:,k,bi,bj) |
496 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
497 |
CADJ STORE phiHydF (:,:) |
CADJ STORE phiHydF (:,:) |
498 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
CADJ STORE guDissip (:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
|
CADJ STORE gvDissip (:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
|
CADJ STORE fVerU (:,:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
|
CADJ STORE fVerV (:,:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
499 |
CADJ STORE gU(:,:,k,bi,bj) |
CADJ STORE gU(:,:,k,bi,bj) |
500 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
501 |
CADJ STORE gV(:,:,k,bi,bj) |
CADJ STORE gV(:,:,k,bi,bj) |
525 |
CADJ STORE vVelD(:,:,k,bi,bj) |
CADJ STORE vVelD(:,:,k,bi,bj) |
526 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
527 |
# endif |
# endif |
528 |
# endif |
# endif /* NONLIN_FRSURF */ |
|
# ifdef ALLOW_DEPTH_CONTROL |
|
|
CADJ STORE fVerU (:,:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
|
CADJ STORE fVerV (:,:,:) |
|
|
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
|
|
# endif |
|
529 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
530 |
|
|
531 |
C-- Integrate hydrostatic balance for phiHyd with BC of phiHyd(z=0)=0 |
C-- Integrate hydrostatic balance for phiHyd with BC of phiHyd(z=0)=0 |
557 |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
558 |
C and step forward storing the result in gU, gV, etc... |
C and step forward storing the result in gU, gV, etc... |
559 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
560 |
|
#ifdef ALLOW_AUTODIFF |
561 |
|
DO j=1-OLy,sNy+OLy |
562 |
|
DO i=1-OLx,sNx+OLx |
563 |
|
guDissip(i,j) = 0. _d 0 |
564 |
|
gvDissip(i,j) = 0. _d 0 |
565 |
|
ENDDO |
566 |
|
ENDDO |
567 |
|
#endif /* ALLOW_AUTODIFF */ |
568 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
569 |
# ifdef NONLIN_FRSURF |
# if (defined NONLIN_FRSURF) && (defined ALLOW_MOM_FLUXFORM) |
570 |
# if (defined ALLOW_MOM_FLUXFORM) && !(defined DISABLE_RSTAR_CODE) |
# ifndef DISABLE_RSTAR_CODE |
571 |
CADJ STORE dWtransC(:,:,bi,bj) |
CADJ STORE dWtransC(:,:,bi,bj) |
572 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
573 |
CADJ STORE dWtransU(:,:,bi,bj) |
CADJ STORE dWtransU(:,:,bi,bj) |
575 |
CADJ STORE dWtransV(:,:,bi,bj) |
CADJ STORE dWtransV(:,:,bi,bj) |
576 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
577 |
# endif |
# endif |
578 |
CADJ STORE fVerU(:,:,:) |
# endif /* NONLIN_FRSURF and ALLOW_MOM_FLUXFORM */ |
579 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
# if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL) |
580 |
CADJ STORE fVerV(:,:,:) |
CADJ STORE fVerU(:,:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
581 |
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE fVerV(:,:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
582 |
# endif /* NONLIN_FRSURF */ |
# endif |
583 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
584 |
IF (.NOT. vectorInvariantMomentum) THEN |
IF (.NOT. vectorInvariantMomentum) THEN |
585 |
#ifdef ALLOW_MOM_FLUXFORM |
#ifdef ALLOW_MOM_FLUXFORM |
648 |
IF ( implicitViscosity ) THEN |
IF ( implicitViscosity ) THEN |
649 |
#endif /* INCLUDE_IMPLVERTADV_CODE */ |
#endif /* INCLUDE_IMPLVERTADV_CODE */ |
650 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
CADJ STORE KappaRU(:,:,:) = comlev1_bibj , key=idynkey, byte=isbyte |
|
651 |
CADJ STORE gU(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte |
CADJ STORE gU(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte |
652 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
653 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
656 |
U gU, |
U gU, |
657 |
I myThid ) |
I myThid ) |
658 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
CADJ STORE KappaRV(:,:,:) = comlev1_bibj , key=idynkey, byte=isbyte |
|
659 |
CADJ STORE gV(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte |
CADJ STORE gV(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte |
660 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
661 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |