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

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

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

revision 1.10 by adcroft, Thu Sep 27 18:06:43 2001 UTC revision 1.11 by heimbach, Thu Sep 27 20:12:10 2001 UTC
# Line 208  CHPF$&                  ) Line 208  CHPF$&                  )
208  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
209            act1 = bi - myBxLo(myThid)            act1 = bi - myBxLo(myThid)
210            max1 = myBxHi(myThid) - myBxLo(myThid) + 1            max1 = myBxHi(myThid) - myBxLo(myThid) + 1
   
211            act2 = bj - myByLo(myThid)            act2 = bj - myByLo(myThid)
212            max2 = myByHi(myThid) - myByLo(myThid) + 1            max2 = myByHi(myThid) - myByLo(myThid) + 1
   
213            act3 = myThid - 1            act3 = myThid - 1
214            max3 = nTx*nTy            max3 = nTx*nTy
   
215            act4 = ikey_dynamics - 1            act4 = ikey_dynamics - 1
   
216            ikey = (act1 + 1) + act2*max1            ikey = (act1 + 1) + act2*max1
217       &                      + act3*max1*max2       &                      + act3*max1*max2
218       &                      + act4*max1*max2*max3       &                      + act4*max1*max2*max3
# Line 260  C This is currently also used by IVDC an Line 256  C This is currently also used by IVDC an
256    
257    
258  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
259  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
260  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
261    #ifdef ALLOW_KPP
262    CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
263    CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
264    #endif
265  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
266    
267  C--     Start of diagnostic loop  C--     Start of diagnostic loop
# Line 338  C--     end of diagnostic k loop (Nr:1) Line 338  C--     end of diagnostic k loop (Nr:1)
338    
339  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
340  cph avoids recomputation of integrate_for_w  cph avoids recomputation of integrate_for_w
341  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
342  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
343    
344  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
# Line 415  C--     Compute KPP mixing coefficients Line 415  C--     Compute KPP mixing coefficients
415    
416  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
417  CADJ STORE KPPghat   (:,:,:,bi,bj)  CADJ STORE KPPghat   (:,:,:,bi,bj)
 CADJ &   , KPPviscAz (:,:,:,bi,bj)  
418  CADJ &   , KPPdiffKzT(:,:,:,bi,bj)  CADJ &   , KPPdiffKzT(:,:,:,bi,bj)
419  CADJ &   , KPPdiffKzS(:,:,:,bi,bj)  CADJ &   , KPPdiffKzS(:,:,:,bi,bj)
420  CADJ &   , KPPfrac   (:,:  ,bi,bj)  CADJ &   , KPPfrac   (:,:  ,bi,bj)
# Line 425  CADJ &                 = comlev1_bibj, k Line 424  CADJ &                 = comlev1_bibj, k
424  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
425    
426  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
427  CADJ STORE KappaRT(:,:,:)     = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE KappaRT(:,:,:)     = comlev1_bibj, key=ikey, byte=isbyte
428  CADJ STORE KappaRS(:,:,:)     = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE KappaRS(:,:,:)     = comlev1_bibj, key=ikey, byte=isbyte
429  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
430  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
431  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
432  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
433  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
434  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key = ikey, byte = isbyte  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte
435  #endif  #endif
436  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
437    
# Line 448  C note(jmc) : phiHyd=0 at this point but Line 447  C note(jmc) : phiHyd=0 at this point but
447    
448  C--     Some advection schemes are better calculated using a multi-dimensional  C--     Some advection schemes are better calculated using a multi-dimensional
449  C       method in the absence of any other terms and, if used, is done here.  C       method in the absence of any other terms and, if used, is done here.
450    
451    #ifdef ALLOW_MULTIDIM_ADVECTION
452          IF (multiDimAdvection) THEN          IF (multiDimAdvection) THEN
453           IF (tempStepping .AND.           IF (tempStepping .AND.
454       &       tempAdvScheme.NE.ENUM_CENTERED_2ND .AND.       &       tempAdvScheme.NE.ENUM_CENTERED_2ND .AND.
455       &       tempAdvScheme.NE.ENUM_UPWIND_3RD .AND.       &       tempAdvScheme.NE.ENUM_UPWIND_3RD .AND.
456       &       tempAdvScheme.NE.ENUM_CENTERED_4TH )       &       tempAdvScheme.NE.ENUM_CENTERED_4TH ) THEN
457       &   CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,theta,            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,
458       U                      gT,       U                      theta,gT,
459       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
460             ENDIF
461           IF (saltStepping .AND.           IF (saltStepping .AND.
462       &       saltAdvScheme.NE.ENUM_CENTERED_2ND .AND.       &       saltAdvScheme.NE.ENUM_CENTERED_2ND .AND.
463       &       saltAdvScheme.NE.ENUM_UPWIND_3RD .AND.       &       saltAdvScheme.NE.ENUM_UPWIND_3RD .AND.
464       &       saltAdvScheme.NE.ENUM_CENTERED_4TH )       &       saltAdvScheme.NE.ENUM_CENTERED_4TH ) THEN
465       &   CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,salt,            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,
466       U                      gS,       U                      salt,gS,
467       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
468             ENDIF
469          ENDIF          ENDIF
470    #endif /* ALLOW_MULTIDIM_ADVECTION */
471    
472  C--     Start of thermodynamics loop  C--     Start of thermodynamics loop
473          DO k=Nr,1,-1          DO k=Nr,1,-1
# Line 525  C        and step forward storing result Line 528  C        and step forward storing result
528             CALL TIMESTEP_TRACER(             CALL TIMESTEP_TRACER(
529       I         bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme,       I         bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme,
530       I         theta, gT,       I         theta, gT,
      U         gTnm1,  
531       I         myIter, myThid)       I         myIter, myThid)
532           ENDIF           ENDIF
533           IF ( saltStepping ) THEN           IF ( saltStepping ) THEN
# Line 538  C        and step forward storing result Line 540  C        and step forward storing result
540             CALL TIMESTEP_TRACER(             CALL TIMESTEP_TRACER(
541       I         bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme,       I         bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme,
542       I         salt, gS,       I         salt, gS,
      U         gSnm1,  
543       I         myIter, myThid)       I         myIter, myThid)
544           ENDIF           ENDIF
545  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
# Line 552  C        and step forward storing result Line 553  C        and step forward storing result
553             CALL TIMESTEP_TRACER(             CALL TIMESTEP_TRACER(
554       I         bi,bj,iMin,iMax,jMin,jMax,k,tracerAdvScheme,       I         bi,bj,iMin,iMax,jMin,jMax,k,tracerAdvScheme,
555       I         Tr1, gTr1,       I         Tr1, gTr1,
      U         gTr1NM1,  
556       I         myIter,myThid)       I         myIter,myThid)
557           ENDIF           ENDIF
558  #endif  #endif
# Line 567  C--      Apply open boundary conditions Line 567  C--      Apply open boundary conditions
567  C--      Freeze water  C--      Freeze water
568           IF (allowFreezing) THEN           IF (allowFreezing) THEN
569  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
570  CADJ STORE gTNm1(:,:,k,bi,bj) = comlev1_bibj_k  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
571  CADJ &   , key = kkey, byte = isbyte  CADJ &   , key = kkey, byte = isbyte
572  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
573              CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )              CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )
# Line 593  C--     Implicit diffusion Line 593  C--     Implicit diffusion
593           IF (tempStepping) THEN           IF (tempStepping) THEN
594  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
595              idkey = iikey + 1              idkey = iikey + 1
596  CADJ STORE gTNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
597  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
598              CALL IMPLDIFF(              CALL IMPLDIFF(
599       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 605  CADJ STORE gTNm1(:,:,:,bi,bj) = comlev1_ Line 605  CADJ STORE gTNm1(:,:,:,bi,bj) = comlev1_
605           IF (saltStepping) THEN           IF (saltStepping) THEN
606  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
607           idkey = iikey + 2           idkey = iikey + 2
608  CADJ STORE gSNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
609  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
610              CALL IMPLDIFF(              CALL IMPLDIFF(
611       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 617  CADJ STORE gSNm1(:,:,:,bi,bj) = comlev1_ Line 617  CADJ STORE gSNm1(:,:,:,bi,bj) = comlev1_
617  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
618           IF (tr1Stepping) THEN           IF (tr1Stepping) THEN
619  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
620  CADJ STORE gTr1Nm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gTr1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
621  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
622            CALL IMPLDIFF(            CALL IMPLDIFF(
623       I      bi, bj, iMin, iMax, jMin, jMax,       I      bi, bj, iMin, iMax, jMin, jMax,

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22