33 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
34 |
# include "tamc.h" |
# include "tamc.h" |
35 |
# include "tamc_keys.h" |
# include "tamc_keys.h" |
36 |
|
# include "FFIELDS.h" |
37 |
|
# ifdef ALLOW_KPP |
38 |
|
# include "KPP.h" |
39 |
|
# endif |
40 |
|
# ifdef ALLOW_GMREDI |
41 |
|
# include "GMREDI.h" |
42 |
|
# endif |
43 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
44 |
|
|
|
#ifdef ALLOW_KPP |
|
|
# include "KPP.h" |
|
|
#endif |
|
|
|
|
45 |
C == Routine arguments == |
C == Routine arguments == |
46 |
C myTime - Current time in simulation |
C myTime - Current time in simulation |
47 |
C myIter - Current iteration number in simulation |
C myIter - Current iteration number in simulation |
441 |
I rhoKm1, rhoKm1, rhoKm1, |
I rhoKm1, rhoKm1, rhoKm1, |
442 |
O sigmaX, sigmaY, sigmaR, |
O sigmaX, sigmaY, sigmaR, |
443 |
I myThid ) |
I myThid ) |
444 |
|
ELSE |
445 |
|
DO j=1-OLy,sNy+OLy |
446 |
|
DO i=1-OLx,sNx+OLx |
447 |
|
sigmaX(i,j,k) = 0. _d 0 |
448 |
|
sigmaY(i,j,k) = 0. _d 0 |
449 |
|
sigmaR(i,j,k) = 0. _d 0 |
450 |
|
ENDDO |
451 |
|
ENDDO |
452 |
ENDIF |
ENDIF |
453 |
#endif |
#endif |
454 |
|
|
598 |
I rhoK, rhotmp, rhoK, |
I rhoK, rhotmp, rhoK, |
599 |
O sigmaX, sigmaY, sigmaR, |
O sigmaX, sigmaY, sigmaR, |
600 |
I myThid ) |
I myThid ) |
601 |
|
ELSE |
602 |
|
DO j=1-OLy,sNy+OLy |
603 |
|
DO i=1-OLx,sNx+OLx |
604 |
|
sigmaX(i,j,k) = 0. _d 0 |
605 |
|
sigmaY(i,j,k) = 0. _d 0 |
606 |
|
sigmaR(i,j,k) = 0. _d 0 |
607 |
|
ENDDO |
608 |
|
ENDDO |
609 |
ENDIF |
ENDIF |
610 |
#endif |
#endif |
611 |
|
|
627 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
628 |
I myThid ) |
I myThid ) |
629 |
|
|
630 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
631 |
|
|
632 |
|
CADJ STORE surfacetendencyu(:,:,bi,bj) |
633 |
|
CADJ & , surfacetendencyv(:,:,bi,bj) |
634 |
|
CADJ & , surfacetendencys(:,:,bi,bj) |
635 |
|
CADJ & , surfacetendencyt(:,:,bi,bj) |
636 |
|
CADJ & = comlev1_bibj, key=ikey, byte=isbyte |
637 |
|
|
638 |
|
# ifdef ALLOW_GMREDI |
639 |
|
CADJ STORE sigmaX(:,:,:) = comlev1, key=ikey, byte=isbyte |
640 |
|
CADJ STORE sigmaY(:,:,:) = comlev1, key=ikey, byte=isbyte |
641 |
|
CADJ STORE sigmaR(:,:,:) = comlev1, key=ikey, byte=isbyte |
642 |
|
# endif /* ALLOW_GMREDI */ |
643 |
|
|
644 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
645 |
|
|
646 |
#ifdef ALLOW_GMREDI |
#ifdef ALLOW_GMREDI |
647 |
IF (useGMRedi) THEN |
IF (useGMRedi) THEN |
648 |
DO k=1, Nr |
DO k=1, Nr |
651 |
I sigmaX, sigmaY, sigmaR, |
I sigmaX, sigmaY, sigmaR, |
652 |
I myThid ) |
I myThid ) |
653 |
ENDDO |
ENDDO |
654 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
655 |
|
ELSE |
656 |
|
DO k=1, Nr |
657 |
|
CALL GMREDI_CALC_TENSOR_DUMMY( |
658 |
|
I bi, bj, iMin, iMax, jMin, jMax, k, |
659 |
|
I sigmaX, sigmaY, sigmaR, |
660 |
|
I myThid ) |
661 |
|
ENDDO |
662 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
663 |
ENDIF |
ENDIF |
664 |
#endif |
#endif |
665 |
|
|
666 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
667 |
CADJ STORE KappaRT(:,:,:) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE KappaRT(:,:,:) = comlev1_bibj, key=ikey, byte=isbyte |
668 |
CADJ STORE KappaRS(:,:,:) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE KappaRS(:,:,:) = comlev1_bibj, key=ikey, byte=isbyte |
669 |
|
|
670 |
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte |
#ifdef ALLOW_GMREDI |
671 |
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte |
C-- R.G. We need to define a new tape since Kw use mythid instead of bi,bj |
672 |
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE Kwx(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
673 |
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE Kwy(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
674 |
|
CADJ STORE Kwz(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
675 |
|
#endif |
676 |
|
|
677 |
|
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
678 |
|
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
679 |
|
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
680 |
|
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
681 |
|
======= |
682 |
|
C-- R.G. We need to define a new tape since Kw use mythid instead of bi,bj |
683 |
|
CADJ STORE Kwx(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
684 |
|
CADJ STORE Kwy(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
685 |
|
CADJ STORE Kwz(:,:,:,myThid) = comlev1_bibj, key=ikey, byte=isbyte |
686 |
|
|
687 |
|
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
688 |
|
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
689 |
|
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
690 |
|
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte |
691 |
|
|
692 |
C-- dummy initialization to break data flow because |
C-- dummy initialization to break data flow because |
693 |
C-- calc_div_ghat has a condition for initialization |
C-- calc_div_ghat has a condition for initialization |
730 |
CADJ & , KPPdiffKzT(:,:,:,bi,bj) |
CADJ & , KPPdiffKzT(:,:,:,bi,bj) |
731 |
CADJ & , KPPdiffKzS(:,:,:,bi,bj) |
CADJ & , KPPdiffKzS(:,:,:,bi,bj) |
732 |
CADJ & , KPPfrac (:,: ,bi,bj) |
CADJ & , KPPfrac (:,: ,bi,bj) |
733 |
CADJ & = comlev1_bibj, key = ikey, byte = isbyte |
CADJ & = comlev1_bibj, key=ikey, byte=isbyte |
734 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
735 |
|
|
736 |
#endif /* ALLOW_KPP */ |
#endif /* ALLOW_KPP */ |
753 |
|
|
754 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
755 |
kkey = (ikey-1)*(Nr-1+1) + (k-1) + 1 |
kkey = (ikey-1)*(Nr-1+1) + (k-1) + 1 |
756 |
|
CADJ STORE rvel (:,:,kdown) = comlev1_bibj_k, key=kkey, byte=isbyte |
757 |
CADJ STORE rvel (:,:,kDown) = comlev1_bibj_k, key = kkey, byte = isbyte |
CADJ STORE rTrans(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
758 |
CADJ STORE rTrans(:,:) = comlev1_bibj_k, key = kkey, byte = isbyte |
CADJ STORE KappaRT(:,:,k) = comlev1_bibj_k, key=kkey, byte=isbyte |
759 |
CADJ STORE KappaRT(:,:,:) = comlev1_bibj_k, key = kkey, byte = isbyte |
CADJ STORE KappaRS(:,:,k) = comlev1_bibj_k, key=kkey, byte=isbyte |
|
CADJ STORE KappaRS(:,:,:) = comlev1_bibj_k, key = kkey, byte = isbyte |
|
760 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
761 |
|
|
762 |
C-- Get temporary terms used by tendency routines |
C-- Get temporary terms used by tendency routines |
832 |
C-- Apply open boundary conditions |
C-- Apply open boundary conditions |
833 |
IF (openBoundaries) THEN |
IF (openBoundaries) THEN |
834 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
835 |
CADJ STORE gunm1(:,:,k,bi,bj) = comlev1_bibj_k |
CADJ STORE gunm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
836 |
CADJ & , key = kkey, byte = isbyte |
CADJ STORE gvnm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
837 |
CADJ STORE gvnm1(:,:,k,bi,bj) = comlev1_bibj_k |
CADJ STORE gwnm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
|
CADJ & , key = kkey, byte = isbyte |
|
|
CADJ STORE gwnm1(:,:,k,bi,bj) = comlev1_bibj_k |
|
|
CADJ & , key = kkey, byte = isbyte |
|
838 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
839 |
|
|
840 |
CALL APPLY_OBCS2( bi, bj, k, myThid ) |
CALL APPLY_OBCS2( bi, bj, k, myThid ) |
843 |
C-- Freeze water |
C-- Freeze water |
844 |
IF (allowFreezing) THEN |
IF (allowFreezing) THEN |
845 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
846 |
CADJ STORE gTNm1(:,:,k,bi,bj) = comlev1_bibj_k |
CADJ STORE gTNm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
|
CADJ & , key = kkey, byte = isbyte |
|
847 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
848 |
CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid ) |
CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid ) |
849 |
END IF |
END IF |
881 |
IF (tempStepping) THEN |
IF (tempStepping) THEN |
882 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
883 |
idkey = iikey + 1 |
idkey = iikey + 1 |
884 |
|
CADJ STORE gTNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
885 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
886 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
887 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
893 |
IF (saltStepping) THEN |
IF (saltStepping) THEN |
894 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
895 |
idkey = iikey + 2 |
idkey = iikey + 2 |
896 |
|
CADJ STORE gSNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
897 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
898 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
899 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
911 |
IF (momStepping) THEN |
IF (momStepping) THEN |
912 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
913 |
idkey = iikey + 3 |
idkey = iikey + 3 |
914 |
|
CADJ STORE gUNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
915 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
916 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
917 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
920 |
I myThid ) |
I myThid ) |
921 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
922 |
idkey = iikey + 4 |
idkey = iikey + 4 |
923 |
|
CADJ STORE gVNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
924 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
925 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
926 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
932 |
|
|
933 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
934 |
idkey = iikey + 5 |
idkey = iikey + 5 |
935 |
|
CADJ STORE vVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
936 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
937 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
938 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
941 |
I myThid ) |
I myThid ) |
942 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
943 |
idkey = iikey + 6 |
idkey = iikey + 6 |
944 |
|
CADJ STORE uVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
945 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
946 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
947 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |