/[MITgcm]/MITgcm/model/src/dynamics.F
ViewVC logotype

Diff of /MITgcm/model/src/dynamics.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.65 by jmc, Thu Mar 8 20:25:01 2001 UTC revision 1.66 by heimbach, Sun Mar 25 22:33:52 2001 UTC
# Line 119  c     LOGICAL  DIFFERENT_MULTIPLE Line 119  c     LOGICAL  DIFFERENT_MULTIPLE
119  c     EXTERNAL DIFFERENT_MULTIPLE  c     EXTERNAL DIFFERENT_MULTIPLE
120  Cjmc(end)  Cjmc(end)
121    
 #ifdef ALLOW_AUTODIFF_TAMC  
       INTEGER    isbyte  
       PARAMETER( isbyte = 4 )  
   
       INTEGER act1, act2, act3, act4  
       INTEGER max1, max2, max3  
       INTEGER iikey, kkey  
       INTEGER maximpl  
 #endif /* ALLOW_AUTODIFF_TAMC */  
   
122  C---    The algorithm...  C---    The algorithm...
123  C  C
124  C       "Correction Step"  C       "Correction Step"
# Line 272  C This is currently also used by IVDC an Line 262  C This is currently also used by IVDC an
262          jMax = sNy+OLy          jMax = sNy+OLy
263    
264    
265    #ifdef ALLOW_AUTODIFF_TAMC
266    CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
267    CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
268    CADJ STORE uvel(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
269    CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
270    #endif /* ALLOW_AUTODIFF_TAMC */
271    
272  C--     Start of diagnostic loop  C--     Start of diagnostic loop
273          DO k=Nr,1,-1          DO k=Nr,1,-1
274    
275  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
276  C? Patrick, is this formula correct now that we change the loop range?  C? Patrick, is this formula correct now that we change the loop range?
277  C? Do we still need this?  C? Do we still need this?
278           kkey = (ikey-1)*(Nr-2+1) + (k-2) + 1  cph kkey formula corrected.
279    cph Needed for rhok, rhokm1, in the case useGMREDI.
280             kkey = (ikey-1)*Nr + k
281    CADJ STORE rhokm1(:,:) = comlev1_bibj_k , key = kkey, byte = isbyte
282    CADJ STORE rhok  (:,:) = comlev1_bibj_k , key = kkey, byte = isbyte
283  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
284    
285  C--       Integrate continuity vertically for vertical velocity  C--       Integrate continuity vertically for vertical velocity
# Line 371  C--     Compute KPP mixing coefficients Line 372  C--     Compute KPP mixing coefficients
372          IF (useKPP) THEN          IF (useKPP) THEN
373            CALL KPP_CALC(            CALL KPP_CALC(
374       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
375    #ifdef ALLOW_AUTODIFF_TAMC
376            ELSE
377              DO j=1-OLy,sNy+OLy
378                DO i=1-OLx,sNx+OLx
379                  KPPhbl (i,j,bi,bj) = 1.0
380                  KPPfrac(i,j,bi,bj) = 0.0
381                  DO k = 1,Nr
382                     KPPghat   (i,j,k,bi,bj) = 0.0
383                     KPPviscAz (i,j,k,bi,bj) = viscAz
384                     KPPdiffKzT(i,j,k,bi,bj) = diffKzT
385                     KPPdiffKzS(i,j,k,bi,bj) = diffKzS
386                  ENDDO
387                ENDDO
388              ENDDO
389    #endif /* ALLOW_AUTODIFF_TAMC */
390          ENDIF          ENDIF
391    
392    #ifdef ALLOW_AUTODIFF_TAMC
393    CADJ STORE KPPghat   (:,:,:,bi,bj)
394    CADJ &   , KPPviscAz (:,:,:,bi,bj)
395    CADJ &   , KPPdiffKzT(:,:,:,bi,bj)
396    CADJ &   , KPPdiffKzS(:,:,:,bi,bj)
397    CADJ &   , KPPfrac   (:,:  ,bi,bj)
398    CADJ &                 = comlev1_bibj, key=ikey, byte=isbyte
399    #endif /* ALLOW_AUTODIFF_TAMC */
400    
401  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
402    
403  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 411  C--       kDown  Cycles through 2,1 to p Line 437  C--       kDown  Cycles through 2,1 to p
437            jMax = sNy+OLy-1            jMax = sNy+OLy-1
438    
439  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
440  CPatrick Is this formula correct?  C? Patrick Is this formula correct?
441           kkey = (ikey-1)*(Nr-1+1) + (k-1) + 1  cph Yes, but I rewrote it.
442  CADJ STORE rTrans(:,:)       = comlev1_bibj_k, key = kkey, byte = isbyte  cph Also, the KappaR? need the index k!
443  CADJ STORE KappaRT(:,:,:)    = comlev1_bibj_k, key = kkey, byte = isbyte           kkey = (ikey-1)*Nr + k
444  CADJ STORE KappaRS(:,:,:)    = comlev1_bibj_k, key = kkey, byte = isbyte  CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key = kkey, byte = isbyte
445    CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key = kkey, byte = isbyte
446  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
447    
448  C--      Get temporary terms used by tendency routines  C--      Get temporary terms used by tendency routines
# Line 483  C--     end of thermodynamic k loop (Nr: Line 510  C--     end of thermodynamic k loop (Nr:
510    
511    
512  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
513  CPatrick? What about this one?  C? Patrick? What about this one?
514             maximpl = 6  cph Keys iikey and idkey don't seem to be needed
515             iikey = (ikey-1)*maximpl  cph since storing occurs on different tape for each
516    cph impldiff call anyways.
517    cph Thus, common block comlev1_impl isn't needed either.
518    cph Storing below needed in the case useGMREDI.
519            iikey = (ikey-1)*maximpl
520  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
521    
522  C--     Implicit diffusion  C--     Implicit diffusion
# Line 494  C--     Implicit diffusion Line 525  C--     Implicit diffusion
525           IF (tempStepping) THEN           IF (tempStepping) THEN
526  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
527              idkey = iikey + 1              idkey = iikey + 1
528    CADJ STORE gTNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
529  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
530              CALL IMPLDIFF(              CALL IMPLDIFF(
531       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 505  C--     Implicit diffusion Line 537  C--     Implicit diffusion
537           IF (saltStepping) THEN           IF (saltStepping) THEN
538  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
539           idkey = iikey + 2           idkey = iikey + 2
540    CADJ STORE gSNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
541  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
542              CALL IMPLDIFF(              CALL IMPLDIFF(
543       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 612  C--     Implicit viscosity Line 645  C--     Implicit viscosity
645          IF (implicitViscosity.AND.momStepping) THEN          IF (implicitViscosity.AND.momStepping) THEN
646  #ifdef    ALLOW_AUTODIFF_TAMC  #ifdef    ALLOW_AUTODIFF_TAMC
647            idkey = iikey + 3            idkey = iikey + 3
648    CADJ STORE gUNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
649  #endif    /* ALLOW_AUTODIFF_TAMC */  #endif    /* ALLOW_AUTODIFF_TAMC */
650            CALL IMPLDIFF(            CALL IMPLDIFF(
651       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 620  C--     Implicit viscosity Line 654  C--     Implicit viscosity
654       I         myThid )       I         myThid )
655  #ifdef    ALLOW_AUTODIFF_TAMC  #ifdef    ALLOW_AUTODIFF_TAMC
656            idkey = iikey + 4            idkey = iikey + 4
657    CADJ STORE gVNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
658  #endif    /* ALLOW_AUTODIFF_TAMC */  #endif    /* ALLOW_AUTODIFF_TAMC */
659            CALL IMPLDIFF(            CALL IMPLDIFF(
660       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 639  C--      Apply open boundary conditions Line 674  C--      Apply open boundary conditions
674  #ifdef    INCLUDE_CD_CODE  #ifdef    INCLUDE_CD_CODE
675  #ifdef    ALLOW_AUTODIFF_TAMC  #ifdef    ALLOW_AUTODIFF_TAMC
676            idkey = iikey + 5            idkey = iikey + 5
677    CADJ STORE vVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
678  #endif    /* ALLOW_AUTODIFF_TAMC */  #endif    /* ALLOW_AUTODIFF_TAMC */
679            CALL IMPLDIFF(            CALL IMPLDIFF(
680       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 647  C--      Apply open boundary conditions Line 683  C--      Apply open boundary conditions
683       I         myThid )       I         myThid )
684  #ifdef    ALLOW_AUTODIFF_TAMC  #ifdef    ALLOW_AUTODIFF_TAMC
685            idkey = iikey + 6            idkey = iikey + 6
686    CADJ STORE uVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
687  #endif    /* ALLOW_AUTODIFF_TAMC */  #endif    /* ALLOW_AUTODIFF_TAMC */
688            CALL IMPLDIFF(            CALL IMPLDIFF(
689       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,

Legend:
Removed from v.1.65  
changed lines
  Added in v.1.66

  ViewVC Help
Powered by ViewVC 1.1.22