/[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.66 by heimbach, Sun Mar 25 22:33:52 2001 UTC revision 1.67 by heimbach, Mon May 14 21:46:17 2001 UTC
# Line 33  C     == Global variables === Line 33  C     == Global variables ===
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  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
46  #include "TIMEAVE_STATV.h"  #include "TIMEAVE_STATV.h"
47  #endif  #endif
# Line 265  C This is currently also used by IVDC an Line 268  C This is currently also used by IVDC an
268  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
269  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
270  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
271  CADJ STORE uvel(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
272  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
273  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
274    
# Line 278  C? Do we still need this? Line 281  C? Do we still need this?
281  cph kkey formula corrected.  cph kkey formula corrected.
282  cph Needed for rhok, rhokm1, in the case useGMREDI.  cph Needed for rhok, rhokm1, in the case useGMREDI.
283           kkey = (ikey-1)*Nr + k           kkey = (ikey-1)*Nr + k
284  CADJ STORE rhokm1(:,:) = comlev1_bibj_k , key = kkey, byte = isbyte  CADJ STORE rhokm1(:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte
285  CADJ STORE rhok  (:,:) = comlev1_bibj_k , key = kkey, byte = isbyte  CADJ STORE rhok  (:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte
286  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
287    
288  C--       Integrate continuity vertically for vertical velocity  C--       Integrate continuity vertically for vertical velocity
# Line 301  C--       Calculate gradients of potenti Line 304  C--       Calculate gradients of potenti
304  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
305  c         IF ( k.GT.1 .AND. (useGMRedi.OR.ivdc_kappa.NE.0.) ) THEN  c         IF ( k.GT.1 .AND. (useGMRedi.OR.ivdc_kappa.NE.0.) ) THEN
306            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) ) THEN            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) ) THEN
307    #ifdef ALLOW_AUTODIFF_TAMC
308    CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
309    CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
310    #endif /* ALLOW_AUTODIFF_TAMC */
311              CALL FIND_RHO(              CALL FIND_RHO(
312       I        bi, bj, iMin, iMax, jMin, jMax, k, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k, k, eosType,
313       I        theta, salt,       I        theta, salt,
314       O        rhoK,       O        rhoK,
315       I        myThid )       I        myThid )
316              IF (k.GT.1) CALL FIND_RHO(              IF (k.GT.1) THEN
317    #ifdef ALLOW_AUTODIFF_TAMC
318    CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
319    CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
320    #endif /* ALLOW_AUTODIFF_TAMC */
321                 CALL FIND_RHO(
322       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k, eosType,
323       I        theta, salt,       I        theta, salt,
324       O        rhoKm1,       O        rhoKm1,
325       I        myThid )       I        myThid )
326                ENDIF
327              CALL GRAD_SIGMA(              CALL GRAD_SIGMA(
328       I             bi, bj, iMin, iMax, jMin, jMax, k,       I             bi, bj, iMin, iMax, jMin, jMax, k,
329       I             rhoK, rhoKm1, rhoK,       I             rhoK, rhoKm1, rhoK,
# Line 331  c ==> should use sigmaR !!! Line 344  c ==> should use sigmaR !!!
344  C--     end of diagnostic k loop (Nr:1)  C--     end of diagnostic k loop (Nr:1)
345          ENDDO          ENDDO
346    
347    #ifdef ALLOW_AUTODIFF_TAMC
348    cph avoids recomputation of integrate_for_w
349    CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte
350    #endif /* ALLOW_AUTODIFF_TAMC */
351    
352  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
353  C--     Calculate future values on open boundaries  C--     Calculate future values on open boundaries
354          IF (useOBCS) THEN          IF (useOBCS) THEN
# Line 345  C       relaxation terms, etc. Line 363  C       relaxation terms, etc.
363          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
364       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
365       I             myThid )       I             myThid )
366    #ifdef ALLOW_AUTODIFF_TAMC
367    cph needed for KPP
368    CADJ STORE surfacetendencyU(:,:,bi,bj)
369    CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
370    CADJ STORE surfacetendencyV(:,:,bi,bj)
371    CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
372    CADJ STORE surfacetendencyS(:,:,bi,bj)
373    CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
374    CADJ STORE surfacetendencyT(:,:,bi,bj)
375    CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
376    #endif /* ALLOW_AUTODIFF_TAMC */
377    
378  #ifdef  ALLOW_GMREDI  #ifdef  ALLOW_GMREDI
379    
380    #ifdef ALLOW_AUTODIFF_TAMC
381    CADJ STORE sigmaX(:,:,:) = comlev1, key=ikey, byte=isbyte
382    CADJ STORE sigmaY(:,:,:) = comlev1, key=ikey, byte=isbyte
383    CADJ STORE sigmaR(:,:,:) = comlev1, key=ikey, byte=isbyte
384    #endif /* ALLOW_AUTODIFF_TAMC */
385  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
386          IF (useGMRedi) THEN          IF (useGMRedi) THEN
387            DO k=1,Nr            DO k=1,Nr
# Line 365  C--     Calculate iso-neutral slopes for Line 400  C--     Calculate iso-neutral slopes for
400            ENDDO            ENDDO
401  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
402          ENDIF          ENDIF
403    
404    #ifdef ALLOW_AUTODIFF_TAMC
405    CADJ STORE Kwx(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte
406    CADJ STORE Kwy(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte
407    CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte
408    #endif /* ALLOW_AUTODIFF_TAMC */
409    
410  #endif  /* ALLOW_GMREDI */  #endif  /* ALLOW_GMREDI */
411    
412  #ifdef  ALLOW_KPP  #ifdef  ALLOW_KPP
# Line 374  C--     Compute KPP mixing coefficients Line 416  C--     Compute KPP mixing coefficients
416       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
417  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
418          ELSE          ELSE
419            DO j=1-OLy,sNy+OLy            CALL KPP_CALC_DUMMY(
420              DO i=1-OLx,sNx+OLx       I                  bi, bj, myTime, myThid )
               KPPhbl (i,j,bi,bj) = 1.0  
               KPPfrac(i,j,bi,bj) = 0.0  
               DO k = 1,Nr  
                  KPPghat   (i,j,k,bi,bj) = 0.0  
                  KPPviscAz (i,j,k,bi,bj) = viscAz  
                  KPPdiffKzT(i,j,k,bi,bj) = diffKzT  
                  KPPdiffKzS(i,j,k,bi,bj) = diffKzS  
               ENDDO  
             ENDDO  
           ENDDO  
421  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
422          ENDIF          ENDIF
423    
# Line 422  C note(jmc) : phiHyd=0 at this point but Line 454  C note(jmc) : phiHyd=0 at this point but
454    
455  C--     Start of thermodynamics loop  C--     Start of thermodynamics loop
456          DO k=Nr,1,-1          DO k=Nr,1,-1
457    #ifdef ALLOW_AUTODIFF_TAMC
458    C? Patrick Is this formula correct?
459    cph Yes, but I rewrote it.
460    cph Also, the KappaR? need the index and subscript k!
461             kkey = (ikey-1)*Nr + k
462    #endif /* ALLOW_AUTODIFF_TAMC */
463    
464  C--       km1    Points to level above k (=k-1)  C--       km1    Points to level above k (=k-1)
465  C--       kup    Cycles through 1,2 to point to layer above  C--       kup    Cycles through 1,2 to point to layer above
# Line 436  C--       kDown  Cycles through 2,1 to p Line 474  C--       kDown  Cycles through 2,1 to p
474            jMin = 1-OLy+2            jMin = 1-OLy+2
475            jMax = sNy+OLy-1            jMax = sNy+OLy-1
476    
 #ifdef ALLOW_AUTODIFF_TAMC  
 C? Patrick Is this formula correct?  
 cph Yes, but I rewrote it.  
 cph Also, the KappaR? need the index k!  
          kkey = (ikey-1)*Nr + k  
 CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key = kkey, byte = isbyte  
 CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key = kkey, byte = isbyte  
 #endif /* ALLOW_AUTODIFF_TAMC */  
   
477  C--      Get temporary terms used by tendency routines  C--      Get temporary terms used by tendency routines
478           CALL CALC_COMMON_FACTORS (           CALL CALC_COMMON_FACTORS (
479       I        bi,bj,iMin,iMax,jMin,jMax,k,km1,kup,kDown,       I        bi,bj,iMin,iMax,jMin,jMax,k,km1,kup,kDown,
480       O        xA,yA,uTrans,vTrans,rTrans,maskC,maskUp,       O        xA,yA,uTrans,vTrans,rTrans,maskC,maskUp,
481       I        myThid)       I        myThid)
482    
483    #ifdef ALLOW_AUTODIFF_TAMC
484    CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
485    CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
486    #endif /* ALLOW_AUTODIFF_TAMC */
487    
488  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL
489  C--      Calculate the total vertical diffusivity  C--      Calculate the total vertical diffusivity
490           CALL CALC_DIFFUSIVITY(           CALL CALC_DIFFUSIVITY(

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

  ViewVC Help
Powered by ViewVC 1.1.22